Trailing-Edge
-
PDP-10 Archives
-
BB-H311B-RM
-
rsx20f-swskit/listings/driver.l91
There are 2 other files named driver.l91 in the archive. Click here to see a list.
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59
TABLE OF CONTENTS
19- 2075 TITLE PAGE
20- 2110 COMMON PARAMETERS AND MACROS
21- 2197 LP-20 DEVICE REGISTER DEFINITIONS
22- 2267 COMMON DEVICE PARAMETER MODULE
23- 2300 DEVICE STATUS BIT DEFINITIONS
24- 2355 LP-20 COMMON DATA MODULE
25- 2389 COMMON VARIABLES
26- 2397 LP-20 DEVICE TABLES
27- 2433 LP-20 DRIVER TASK MODULE
28- 2473 LPINI (INITIALIZE LP-20 TASK)
29- 2531 LPLOOP (LP-20 DRIVER TASK LOOP)
30- 2558 LPIOD (LP TASK I/O DONE)
31- 2768 LPNIR (LP TASK QUEUE I/O REQUEST)
32- 2899 LPMKT (LP TASK MARK-TIME REQUEST)
33- 2971 SSTSLP (SEND LP-20 STATUS TO -10)
34- 3206 TESTLP (START LP-20 GOING ON THREADED LIST)
35- 3278 INITLP (INITALIZE ALL LP'S)
36- 3316 LP-20 INTERRUPT SERVICE MODULE
37- 3348 $LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
38- 3467 LP-20 COMMON SUBROUTINES MODULE
38- 3506 ..STLP (START LP-20 OUTPUT)
39- 3628 ..SPLP (STOP LP-20 OUTPUT)
40- 3694 ..AKLP (ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)
41- 3731 ..PTLP (PUT BLOCK IN THREADED OUTPUT LIST)
42- 3794 ..DOLP (INITIATE LP-20 TRANSFER)
43- 3889 TITLE PAGE
44- 3924 COMMON PARAMETERS AND MACROS
45- 3952 CD-11 DEVICE REGISTER BIT DEFINITIONS
46- 3980 CD-11 DRIVER COMMON DATA MODULE
47- 4012 COMMON DATABASE DEFINITIONS
48- 4044 CD-11 DRIVER TASK MODULE
49- 4076 TASK INITIALIZATION
50- 4110 CRLOOP (MAIN PROCESSING LOOP)
51- 4229 SSTSCR (SEND CD-11 STATUS TO -10)
52- 4374 INITCR (INITIALIZE CD-11)
53- 4388 CD-11 DRIVER COMMON SUBROUTINES MODULE
54- 4426 $CDINT (CD-11 INTERRUPT SERVICE)
55- 4455 ..STCR (START CD-11)
56- 4484 ..SPCR (STOP CD-11)
57- 4507 ..AKCR (READ CARD)
58- 4537 TITLE PAGE
59- 4579 MACROS AND PARAMETERS
60- 4668 TASK DATA
61- 4718 FIND THE TASK FILE
62- 4883 INITIALIZE TASK FILE
63- 4935 SETUP STD ENTRY
64- 5043 SETUP LOGICAL UNIT TABLE FOR TASK
65- 5161 RE-REQUEST TASK
66- 5186 TASK FILE I/O ROUTINES
67- 5275 ERROR PROCESSING
68- 5365 END STATEMENT
RSXFC -- RSX20F PARAMETER FIL MACRO M1110 15-OCT-79 13:59 PAGE 1
1 .TITLE RSXFC -- RSX20F PARAMETER FILE (TOPS-10/1091 SYSTEM DEFINITION)
2 .IDENT /013100/
3 ;
4 ; COPYRIGHT (C) 1977, 1978 BY
5 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
6 ;
7 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
8 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
9 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
10 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
11 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
12 ;
13 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
14 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
15 ; CORPORATION.
16 ;
17 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
18 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
19
20
21 ;
22 ; VERSION 13-10
23 ;
24 ; ALAN D. PECKHAM 19-APR-77
25 ;
26 ; MODIFIED BY:
27 ;
28 ; R. BELANGER -- ELIMINATE 1090T "ARPA" CONFIGURATTION
29 ; R. BELANGER -- ADD 1091 CONFIGURATION
30 ;
31 ; FUNCTION: THIS MODULE PROVIDES THE PARAMETERS FOR ASSEMBLY OF RSX20F FOR
32 ; THE TOPS-10 (1091) SYSTEM.
33 ;
34 ; EQUATED SYMBOLS
35 ;
36 000001 $T1091 =1 ; DEFINE TOPS-10/1091 OPTION
37
38 000001 $LP20 =1 ; INCLUDE LP20 DRIVER
39 000002 L$$P20 =2 ; INCLUDE 2 LP-20'S
40 000001 $CD11 =1 ; INCLUDE CD11 CARD READER DRIVER
41 000001 $RP04 =1 ; INCLUDE RP04 DISK DRIVER
42 000001 $FE =1 ; INCLUDE FE PSEUDO-DEVICE DRIVER
43 000001 $F11 =1 ; INCLUDE FILES-11 ACP
44 000001 $DH11 =1 ; INCLUDE DH11 DRIVER
45 000010 D$$H11 =8. ; INCLUDE 8 DH-11'S
46 000001 $DBDTE =1 ; INCLUDE DTE20 DEBUGGING CODE
47 000001 $DTE =1 ; INCLUDE DTE20 DTE DRIVER
48 000001 R$$11D =1 ; RSX-11D BASE
49
50 .IF DF $T1091
51 000001 $TOP10 =1 ; DEFINE TOPS-10 BASE FOR 1091
52 .ENDC ; $T1091
53
54 .IF DF $TOP10
55 .IF NDF $T1091
56 $DTA =1 ; INCLUDE DECTAPE DRIVER FOR TOPS-10
57 .IFF
RSXFC -- RSX20F PARAMETER FIL MACRO M1110 15-OCT-79 13:59 PAGE 1-1
58 000001 $RX11 =1 ; INCLUDE FLOPPY DRIVER FOR TOPS-10/1091
59 .ENDC ; $T1091
60 .ENDC ; $TOP10
61
62 .IF DF $TOP20
63 $RX11 =1 ; INCLUDE FLOPPY DRIVER
64 .ENDC ; $TOP20
RSX20F -- RESIDENT EXECUTIVE ( MACRO M1110 15-OCT-79 13:59 PAGE 2
66 .TITLE RSX20F -- RESIDENT EXECUTIVE (SYSTEM DEFINITION)
67 .IDENT /013410/
68 .ENABL AMA
69 .LIST MEB
70 .NLIST CND
71 ;
72 ; COPYRIGHT (C) 1975, 1978 BY
73 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
74 ;
75 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
76 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
77 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
78 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
79 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
80 ;
81 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
82 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
83 ; CORPORATION.
84 ;
85 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
86 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
87 ;
88 ; R. MCLEAN 19-MAR-75
89 ;
90 ; VERSION 13-41
91 ;
92 ; MODIFIED BY:
93 ;
94 ; FUNCTION: THIS MODULE PROVIDES THE PARAMETERS FOR ASSEMBLY OF THE RSX20F EXEC.
RSX20F -- RESIDENT EXECUTIVE ( MACRO M1110 15-OCT-79 13:59 PAGE 3
96 ;
97 ; SET VERSION OF RSX20F EXEC HERE
98 ;
99 000013 RSX$$V = 13 ; VERSION 13
100 000041 RSX$$E = 41 ; EDIT 41
101 ;
102 ; RELEASE VERSION
103 ;
104 000126 RSX$$K = 'V ; KEY FOR RELEASE-TYPE
105 ; "V" -- RELEASE
106 ; "X" -- EXPERIMENTAL
107 ; "Y" -- FIELD/LOAD TEST
108 000000 RSX$$F = 0 ; DEFINE FORM AS NULL
113 000105 RSX$$F = 'E ; TOPS-10 / 1091
122 ;
123 ; DTE-20 REGISTER OFFSETS
124 ;
125 000036 DAG3 =36
126 000034 STATD =34
127 000032 DAG2 =32
128 000030 DAG1 =30
129 000022 T11AD =22
130 000020 T10AD =20
131 000016 T11BC =16
132 000010 TNAD1 =10
133 000012 TNAD2 =12
134 000006 DXWD1 =6
135 000004 DXWD2 =4
136 000002 DXWD3 =2
RSX20F -- RESIDENT EXECUTIVE ( MACRO M1110 15-OCT-79 13:59 PAGE 4
138 ;+
139 ; MACRO TO SET IDENT FOR EXEC MODULES.
140 ; FORMAT OF CALL IS:
141 ; IDENT$ VERSION,EDIT
142 ; OR
143 ; IDENT$ VERSION,EDIT,RSX$$F
144 ; IF MODULE CODING CHANGES WITH DIFFERENT FORMS
145 ;-
146
147 .MACRO IDENT$ VER,EDT,FRM,NUM
148 .IF B,NUM
149 .IF B,FRM
150 IDENT$ \VER,\EDT,0,0
151 .IFF
152 .IF EQ,<FRM-'A>
153 IDENT$ \VER,\EDT,A,0
154 .IFF
155 .IF EQ,<FRM-'B>
156 IDENT$ \VER,\EDT,B,0
157 .IFF
158 IDENT$ \VER,\EDT,E,0
159 .ENDC
160 .ENDC
161 .ENDC
162 .MEXIT
163 .IFF
164 .IF GE,VER-10
165 .IF GE,EDT-10
166 .LIST
167 .IDENT /'FRM'VER'EDT'0/
168 .NLIST
169 .IFF
170 .LIST
171 .IDENT /'FRM'VER'0'EDT'0/
172 .NLIST
173 .ENDC
174 .IFF
175 .IF GE,EDT-10
176 .LIST
177 .IDENT /'FRM'0'VER'EDT'0/
178 .NLIST
179 .IFF
180 .LIST
181 .IDENT /'FRM'0'VER'0'EDT'0/
182 .NLIST
183 .ENDC
184 .ENDC
185 .ENDC
186 .ENDM IDENT$
187 .TITLE ARITH
188 .IDENT /001000/
189
190 ;
191 ; COPYRIGHT (C) 1972, 1978 BY
192 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
193 ;
194 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
ARITH MACRO M1110 15-OCT-79 13:59 PAGE 4-1
195 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
196 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
197 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
198 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
199 ;
200 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
201 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
202 ; CORPORATION.
203 ;
204 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
205 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
206 ;
207 ; VERSION 01-00
208 ;
209 ; D. N. CUTLER 10-FEB-72
210
211
212 .MCALL RETURN
213
214
215 ;+
216 ; **-$MUL-INTEGER MULTIPLY MAGNITUDE NUMBERS
217 ;
218 ; INPUTS:
219 ;
220 ; R0=MULTIPLIER.
221 ; R1=MULTIPLICAND.
222 ;
223 ; OUTPUTS:
224 ;
225 ; DOUBLE WORD RESULT IS RETURNED WITH THE
226 ; HIGH PART IN R0 AND THE LOW PART IN R1.
227 ;
228 ; REGISTERS R2, R3, R4, AND R5 ARE PRESERVED ACROSS CALL.
229 ;-
230
231 .ENABL LSB
232 000000 010046 $MUL:: MOV R0,-(SP) ;SAVE R0 FOR ADDS
233 000002 012746 000021 MOV #21,-(SP) ;SET REPEAT COUNT
234 000006 005000 CLR R0 ;CLEAR HIGH PART
235 000010 006000 10$: ROR R0 ;DOUBLE RIGHT SHIFT
236 000012 006001 ROR R1 ;
237 000014 103003 BCC 20$ ;IF CC DO NOT ADD
238 000016 066600 000002 ADD 2(SP),R0 ;
239 000022 000241 CLC ;CLEAR CARRY INDICATOR
240 000024 005316 20$: DEC (SP) ;DECREMENT REPEAT COUNT
241 000026 003370 BGT 10$ ;IF GT MORE TO GO
242 000030 000415 BR 50$ ;EXIT TO CALLER
243
244 ;+
245 ; **-$DIV-INTEGER DIVIDE MAGNITUDE NUMBERS
246 ;
247 ; INPUTS:
248 ;
249 ; R0=DIVIDEND.
250 ; R1=DIVISOR.
251 ;
ARITH MACRO M1110 15-OCT-79 13:59 PAGE 4-2
252 ; OUTPUTS:
253 ;
254 ; QUOTIENT IS RETURNED IN R0 AND REMAINDER IN R1.
255 ;
256 ; REGISTERS R2, R3, R4, AND R5 ARE PRESERVED ACROSS CALL.
257 ;-
258
259 000032 012746 000020 $DIV:: MOV #20,-(SP) ;SET LOOP COUNT
260 000036 010146 MOV R1,-(SP) ;SAVE DIVISOR FOR SUBTRACTS
261 000040 005001 CLR R1 ;CLEAR REMAINDER
262 000042 006300 30$: ASL R0 ;DOUBLE LEFT SHIFT
263 000044 006101 ROL R1 ;
264 000046 020116 CMP R1,(SP) ;SUBTRACT OUT DIVISOR?
265 000050 103402 BLO 40$ ;IF LO NO
266 000052 161601 SUB (SP),R1 ;SUBTRACT OUT DIVISOR
267 000054 005200 INC R0 ;ADD IN LOW BIT
268 000056 005366 000002 40$: DEC 2(SP) ;DECREMENT REPEAT COUNT
269 000062 003367 BGT 30$ ;IF GT MORE TO GO
270 000064 022626 50$: CMP (SP)+,(SP)+ ;CLEAN STACK
271 000066 RETURN ;
000066 000207 RTS PC
272 .DSABL LSB
DBDRV -- RP04/RP06 DRIVER MACRO M1110 15-OCT-79 13:59 PAGE 5
274 .TITLE DBDRV -- RP04/RP06 DRIVER
275 .IDENT /010040/
276 .LIST MEB
277 ;
278 ;
279 ;
280 ; COPYRIGHT (C) 1974, 1978 BY
281 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
282 ;
283 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
284 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
285 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
286 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
287 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
288 ;
289 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
290 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
291 ; CORPORATION.
292 ;
293 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
294 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
295 ;
296 ;
297 ;
298 ;
299 ; AUTHOR: D. N. CUTLER
300 ; DATE: 2-JUL-74
301 ; VERSION: 10-04
302 ;
303 ;
304 ;
305 ; MODIFICATIONS:
306 ;
307 ; NO. DATE PROGRAMMER
308 ; --- ---- ----------
309 ; 001 17-JUN-75 R. MCLEAN
310 ; 002 19-JUL-76 J. MASSE
311 ; 003 28-MAR-77 A. PECKHAM FIX POWER FAIL RECOVERY
312 ; 004 27-JUL-77 R. BELANGER ADD 18-BIT ECC CORRECTION
DBDRV -- RP04/RP06 DRIVER MACRO M1110 15-OCT-79 13:59 PAGE 6
314 ;
315 ; CONDITIONAL ASSEMBLY SWITCH DEFINITIONS
316 ;
317
318 000001 $DIRAC =1
319
320 ;R$$JPO =1 ;IF DEFINED, INCLUDE TRACK OFFSETTING
321
322 000001 R$$E18 =1 ; +++004 IF DEFINED, INCLUDE 18-BIT ECC CORRECTION
323
324 ;R$$E16 =1 ; +++004 IF DEFINED, INCLUDE 16-BIT ECC CORRECTION
325
326 ;
327 ; MACRO LIBRARY CALLS
328 ;
329
330 .MCALL WTSE$,CLEF$,MRKT$,QIOW$,DIR$,CALL,RETURN,.STKM,QIOSY$,WSIG$S
331
332 000070 QIOSY$
333
334
335
336 ; DEVICE REGISTER AND STATUS BIT DEFINITIONS
337
338
339 176700 RPEXP=176700 ;RPCS1 EXTERNAL PAGE ADDRESS
340
341
342
343 000000 RPCS1=0 ;CONTROL STATUS REGISTER 1
344
345 040000 TRE=40000 ;TRANSFER ERROR
346 020000 MCPE=20000 ;MASSBUS CONTROL PARITY ERROR
347 004000 DVA=4000 ;DRIVE AVAILABLE
348
349
350
351 000002 RPWC=2 ;WORD COUNT REGISTER
352
353 000004 RPBA=4 ;BUFFER ADDRESS REGISTER
354
355 000006 RPDA=6 ;DESIRED TRACK/SECTOR REGISTER
356
357
358
359 000010 RPCS2=10 ;CONTROL STATUS REGISTER 2
360
361 100000 DLT=100000 ;DATA LATE ERROR
362 040000 WCE=40000 ;WRITE CHECK ERROR
363 020000 UPE=20000 ;UNIBUS PARITY ERROR
364 010000 NED=10000 ;NONEXISTENT DISK ERROR
365 004000 NEM=4000 ;NONEXISTENT MEMORY ERROR
366 002000 PGE=2000 ;PROGRAMMING ERROR
367 001000 MXF=1000 ;MISSED TRANSFER ERROR
368 000400 MDPE=400 ;MASSBUS DATA PARITY ERROR
369
370
DBDRV -- RP04/RP06 DRIVER MACRO M1110 15-OCT-79 13:59 PAGE 6-1
371
372 000012 RPDS=12 ;DRIVE STATUS REGISTER
373
374 040000 ERR=40000 ;ERROR SUMMARY BIT
375 010000 MOL=10000 ;MEDIUM ONLINE
376 004000 WRL=4000 ;WRITE LOCKED DRIVE
377 001000 PGM=1000 ;PROGRAM MODE
378 000200 DRY=200 ;DRIVE READY
379 000100 VV=100 ;VOLUME VALID
380
381
382
383 000014 RPER1=14 ;ERROR SUMMARY REGISTER
384
385 100000 DCK=100000 ;DATA CHECK ERROR
386 040000 UNS=40000 ;DRIVE UNSAFE
387 020000 OPI=20000 ;OPERATION INCOMPLETE
388 010000 DTE=10000 ;DRIVE TIMING ERROR
389 004000 WLE=4000 ;WRITE LOCK ERROR
390 002000 IAE=2000 ;INVALID DISK ADDRESS
391 001000 AOE=1000 ;ADDRESS OVERFLOW
392 000400 HCRC=400 ;HEADER CRC ERROR
393 000200 HCE=200 ;HEADER COMPARE ERROR
394 000100 ECH=100 ;ECC HARD ERROR
395 000040 WCF=40 ;WRITE CLOCK FAILURE
396 000020 FER=20 ;FORMAT ERROR
397 000010 CPE=10 ;CONTROL BUS PARITY ERROR
398 000004 RMR=4 ;REGISTER MODIFY REFUSED
399 000002 ILR=2 ;ILLEGAL REGISTER
400 000001 ILF=1 ;ILLEGAL FUNCTION
401
402
403
404 000016 RPAS=16 ;ATTENTION SUMMARY REGISTER
405
406 000020 RPLA=20 ;LOOKAHEAD REGISTER
407
408 000022 RPDBR=22 ;DATA BUFFER REGISTER
409
410 000024 RPMR=24 ;MAINTENENCE REGISTER
411
412 000026 RPDT=26 ;DRIVE TYPE REGISTER
413
414 000030 RPSN=30 ;DRIVE SERIAL NUMBER
415
416
417 000032 RPOF=32 ;DRIVE OFFSET REGISTER
418
419 010000 FMT22=10000 ;FORMAT (1=16 BIT)
420 004000 ECI=4000 ;ECC INHIBIT
421 002000 HCI=2000 ;HEADER COMPARE INHIBIT
422
423
424 000034 RPDC=34 ;DESIRED CYLINDER NUMBER
425
426 000044 RPEC1=44 ;ECC POSITION REGISTER
427
DBDRV -- RP04/RP06 DRIVER MACRO M1110 15-OCT-79 13:59 PAGE 6-2
428 000046 RPEC2=46 ;ECC PATTERN REGISTER
429
430 ;
431 ; ERROR RETRY COUNT
432 ;
433
434 000010 RETRY=8. ;CONTROLLER ERROR RETRY COUNT
435
436
437 ; LOCAL DATA
438 ;
439 ;
440
441 000070 RPHD:: .STKM 0,0,0,0,0,0,0,DBINI,174000,RPSTK
000136 000000 000000 000000 .WORD 0,0,0,0
000144 000000
000164 174000 000512' 000350' .WORD 174000,DBINI,RPSTK
000220 000005 .WORD 5
000222 000000G .WORD TTPEN
000224 000000 .WORD 0
000226 000000 .WORD 0
000230 000000 .WORD 0
000232 000000 .WORD 0
000234 000000 .WORD 0
000236 000000 .WORD 0
000240 000000 .WORD 0
000242 000000 .WORD 0
000244 000000 .WORD 0
000246 000000 .WORD 0
000350 000000 .WORD 0
000352 000000 .WORD 0
000354 000000 .WORD 0
000356 000000 .WORD 0
000360 000000 .WORD 0
000362 000000 .WORD 0
000364 000512' .WORD DBINI
000366 174000 .WORD 174000
442
443 000370 DBIOD: WTSE$ E.IOD
000370 051 002 .BYTE 41.,2
000372 000000G .WORD E.IOD
444
445 000374 CLIOD: CLEF$ E.IOD ;CLEAR I/O DONE FLAG
000374 037 002 .BYTE 31.,2
000376 000000G .WORD E.IOD
446
447 000400 RPWLO: WTSE$ E.NIR ;WAIT FOR QIO
000400 051 002 .BYTE 41.,2
000402 000000G .WORD E.NIR
448
449 000404 MKDNR:: MRKT$ 1,74.*10,0,0 ;WAIT FOR FIX
000404 027 005 .BYTE 23.,5
000406 000001 .WORD 1
000410 001120 .WORD 74.*10
000412 000000 .WORD 0
000414 000000 .WORD 0
450
DBDRV -- RP04/RP06 DRIVER MACRO M1110 15-OCT-79 13:59 PAGE 6-3
451 000416 WFDNR:: WTSE$ 1 ;WAIT
000416 051 002 .BYTE 41.,2
000420 000001 .WORD 1
452
453 000422 MSGDPB: QIOW$ IO.WVB,1,1,1,0,0,<,MSGSIZ>
000422 003 010 .BYTE 3,$$$ARG
000424 011000 .WORD IO.WVB
000426 000001 .WORD 1
000430 001 001 .BYTE 1,1
000432 000000 .WORD 0
000434 000000 .WORD 0
000436 000000 .WORD
000440 000016 .WORD MSGSIZ
454
455 000442 015 012 104 DNMSG: .ASCII <15><12>"DB NOT RDY"<15><12>
000445 102 040 116
000450 117 124 040
000453 122 104 131
000456 015 012
456
457 000460 015 012 104 DUNS: .ASCII <15><12>"DB UNSAFE "<15><12>
000463 102 040 125
000466 116 123 101
000471 106 105 040
000474 015 012
458 .EVEN
459
460 000016 MSGSIZ =14. ;MESSAGE SIZE
461
480
482
483 000476 ECCWRD:
484 000476 000000 000000 000000 .WORD 0,0,0
485 000504 ECCMSK:
486 000504 000000 000000 000000 .WORD 0,0,0
487
DBDRV -- RP04/RP06 DRIVER MACRO M1110 15-OCT-79 13:59 PAGE 7
490 ;
491 ;+
492 ; **-DBINI-RH11-RP04 DISK PACK CONTROLLER INITIATOR
493 ;
494 ; THIS ROUTINE IS ENTERED FROM THE QUEUE I/O DIRECTIVE WHEN AN I/O REQUEST
495 ; IS QUEUED AND AT THE END OF A PREVIOUS I/O OPERATION TO PROPAGATE THE EXECU-
496 ; TION OF THE DRIVER. IF THE SPECIFIED CONTROLLER IS NOT BUSY, THEN AN ATTEMPT
497 ; IS MADE TO DEQUEUE THE NEXT I/O REQUEST. ELSE A RETURN TO THE CALLER IS
498 ; EXECUTED. IF THE DEQUEUE ATTEMPT IS SUCCESSFUL, THEN THE NEXT I/O OPER-
499 ; ATION IS INITIATED. A RETURN TO THE CALLER IS THEN EXECUTED.
500 ;
501 ; INPUTS:
502 ;
503 ;
504 ; OUTPUTS:
505 ;
506 ; IF THE SPECIFIED CONTROLLER IS NOT BUSY AND AN I/O REQUEST IS WAIT-
507 ; ING TO BE PROCESSED, THEN THE REQUEST IS DEQUEUED AND THE I/O OPER-
508 ; ATION IS INITIATED.
509 ;-
510
511 .ENABL LSB
512
513 000512 DBINI: DIR$ #RPWLO ;WAIT FOR SOMETHING TO DO
000512 012746 000400' MOV #RPWLO,-(SP)
000516 104375 EMT 375
514 000520 012700 041104 MOV #"DB,R0 ;DQ THE REQUEST
515 000524 CALL ..DQRN
000524 004737 000000G JSR PC,..DQRN
516 000530 103770 BCS DBINI ;NOTHING GO BACK TO SLEEP
517
532
533 000532 010137 000000G 4$: MOV R1,RPRNA ;SAVE THE REQUST NODE ADDRESS
534 000536 010337 000000G MOV R3,RPCNT ;SAVE THE TRANSFER SIZE
535 000542 010237 000000G MOV R2,RPUNIT ;SAVE UNIT NUMBER
536 000546 010537 000002G MOV R5,RPBUF+2 ;SAVE THE XFER ADDRESS
537 000552 006304 ASL R4 ;SHIF TO CORRECT POSITION
538 000554 006304 ASL R4
539 000556 006304 ASL R4
540 000560 006304 ASL R4
541 000562 010437 000000G MOV R4,RPBUF ;SAVE ADDRESS (HIGH ORDER)
542 000566 052737 000171 000000G BIS #171,RPBUF ;ASSUME READ LOGICAL FUNCTION
543 000574 122761 000002 000001G CMPB #IO.RLB/256.,R.FC+1(R1) ;READ LOGICAL FUNCTION?
544 000602 001412 BEQ 10$ ;IF EQ YES
545 000604 122761 000001 000001G CMPB #IO.WLB/256.,R.FC+1(R1)
546 000612 001403 BEQ 5$
547 000614 012703 177776 MOV #IE.IFC,R3
548 000620 000553 BR 46$
549 000622 5$:
550 000622 162737 000010 000000G SUB #10,RPBUF ;CONVERT TO WRITE LOGICAL FUNCTION
551 000630 012737 000010 000000G 10$: MOV #RETRY,RPRTC ;SET RETRY COUNT
552
559
560 000636 005002 CLR R2
561 000640 156102 000006G BISB R.PB+6(R1),R2
562 000644 016100 000010G MOV R.PB+10(R1),R0
563 000650 010103 MOV R1,R3 ;SAVE NODE ADDRESS
DBDRV -- RP04/RP06 DRIVER MACRO M1110 15-OCT-79 13:59 PAGE 7-1
564 000652 012701 000020 MOV #16.,R1
565
566 000656 006300 20$: ASL R0
567 000660 006102 ROL R2 ;
568 000662 020227 000574 CMP R2,#19.*20. ;PARTIAL REMAINDER LARGER THAN DIVISOR?
569 000666 103403 BLO 30$ ;IF LO NO
570 000670 162702 000574 SUB #19.*20.,R2
571 000674 005200 INC R0
572 000676 005301 30$: DEC R1
573 000700 003366 BGT 20$ ;IF GT YES
574 000702 010063 000006G MOV R0,R.PB+6(R3)
575 000706 010200 MOV R2,R0 ;SET DIVIDEND TO TRACK/SECTOR REMAINDER
576 000710 012701 000024 MOV #20.,R1 ;SET DIVISOR TO NUMBER OF SECTORS/TRACK
577 000714 CALL $DIV ;CALCULATE TRACK AND SECTOR
000714 004737 000032' JSR PC,$DIV
578 000720 000300 SWAB R0 ;SWAP TRACK TO HIGH BYTE
579 000722 050100 BIS R1,R0 ;MERGE TRACK
580 000724 010063 000010G MOV R0,R.PB+10(R3)
581
582 ;
583 ; INITIATE I/O OPERATION
584 ;
585
586 000730 012703 176710 40$: MOV #RPEXP+RPCS2,R3 ;GET ADDRESS OF CSR
587 000734 012713 000040 MOV #40,@R3 ;CLEAR RH11+CONTROLLER
588 000740 113713 000000G MOVB RPUNIT,@R3
589 000744 012703 176700 MOV #RPEXP,R3
590 000750 012713 000021 41$: MOV #21,@R3 ; +++003 EXECUTE PACK ACK FUNCTION TO SET VV
591 000754 032737 000340 177776 BIT #340,@#PS ;IN INTERRUPT SERVICE?
592 000762 001007 BNE 42$ ;LEAVE IT ALONE -- MUST HAVE PORT HERE
593 000764 032713 004000 BIT #DVA,@R3 ;DRIVE AVAILABLE?
594 000770 001004 BNE 42$ ;YES -- USE IT
595 000772 WSIG$S ;NO -- BETTER WAIT FOR IT
000772 012746 MOV (PC)+,-(SP)
000774 061 001 .BYTE 49.,1
000776 104375 EMT 375
596 001000 000763 BR 41$ ;MAKE ANOTHER TRY
597
598 001002 42$:
599 001002 012713 000023 MOV #23,@R3 ;PACK ACK AGAIN
600 001006 032713 004000 BIT #DVA,@R3 ;WATCH FOR TIMING AND MISSING DRIVE
601 001012 001756 BEQ 41$ ; MISSED IT -- TRY AGAIN
602 001014 013702 000000G 43$: MOV RPRNA,R2 ;GET ADDRESS OF I/O PACKET
603 001020 012703 176710 MOV #RPEXP+RPCS2,R3 ;POINT TO SECOND CSR
604 001024 113713 000000G MOVB RPUNIT,@R3 ;SELECT PROPER DRIVE
605 001030 016243 000010G MOV R.PB+10(R2),-(R3) ;INSERT TRACK/SECTOR ADDRESS
606 001034 013743 000002G MOV RPBUF+2,-(R3) ;INSERT BUFFER ADDRESS
607 001040 013743 000000G MOV RPCNT,-(R3) ;INSERT NUMBER OF BYTES TO TRANSFER
608 001044 006013 ROR @R3 ;CONVERT TO WORD COUNT
609 001046 005413 NEG @R3 ;MAKE NEGATIVE WORD COUNT
610 001050 005743 TST -(R3) ;POINT TO BEGINNING
611
621
622 001052 012700 000375 MOV #IE.DNR&377,R0 ;ASSUME DRIVE NOT READY
623 001056 016301 000012 MOV RPDS(R3),R1 ;GET CURRENT DRIVE STATUS
624 001062 005101 COM R1 ;COMPLEMENT STATUS
625 001064 032701 010300 BIT #MOL!DRY!VV,R1 ;DRIVE READY?
DBDRV -- RP04/RP06 DRIVER MACRO M1110 15-OCT-79 13:59 PAGE 7-2
626 001070 001035 BNE 47$ ;IF NE NO
627 001072 032763 040000 000014 BIT #UNS,RPER1(R3) ;DRIVE UNSAFE?
628 001100 001052 BNE 49$ ;IF NE YES
629 001102 016263 000006G 000034 MOV R.PB+6(R2),RPDC(R3) ;SET DESIRED CYLINDER ADDRESS
630 001110 013713 000000G MOV RPBUF,@R3 ;START FUNCTION
631 001114 032737 000340 177776 BIT #340,@#PS ;CHECK FOR RESTART FROM INTERRUPT SERVICE LEVEL
632 001122 001131 BNE 85$ ;YES -- RETURN FROM INTERRUPT
633 001124 DIR$ #DBIOD ;WAIT FOR I/O DONE
001124 012746 000370' MOV #DBIOD,-(SP)
001130 104375 EMT 375
634 001132 DIR$ #CLIOD ;CLEAR I/O DONE FLAG
001132 012746 000374' MOV #CLIOD,-(SP)
001136 104375 EMT 375
635 001140 013701 000000G MOV RPRNA,R1 ;FIND THE REQUEST NODE
636 001144 013703 000000G MOV RPBUF,R3 ;FIND THE I/O STATUS
637 001150 013704 000002G 46$: MOV RPBUF+2,R4 ;BOTH HALVES
638 001154 CALL ..IODN ;FINISH I/O
001154 004737 000000G JSR PC,..IODN
639 001160 000137 000512' JMP DBINI ;WAIT FOR NEXT
640
641 001164 012737 000442' 000436' 47$: MOV #DNMSG,MSGDPB+Q.IOPL ;SET FOR NOT READY MESSAGE
642
643 001172 032737 000340 177776 48$: BIT #340,@#PS ;CHECK FOR ENTRY FROM PRI
644 001200 001060 BNE 60$ ;YES -- GO RE-TRY
645 001202 DIR$ #MSGDPB ;COMPLAIN
001202 012746 000422' MOV #MSGDPB,-(SP)
001206 104375 EMT 375
646 001210 DIR$ #MKDNR ;WAIT FOR FIX
001210 012746 000404' MOV #MKDNR,-(SP)
001214 104375 EMT 375
647 001216 DIR$ #WFDNR ;WAIT
001216 012746 000416' MOV #WFDNR,-(SP)
001222 104375 EMT 375
648 001224 000641 BR 40$ ;AND TRY AGAIN
649
650 001226 012737 000460' 000436' 49$: MOV #DUNS,MSGDPB+Q.IOPL ;SET FOR UNSAFE MESSAGE
651 001234 000756 BR 48$ ;TYPE MESSAGE
DBDRV -- RP04/RP06 DRIVER MACRO M1110 15-OCT-79 13:59 PAGE 8
653 ;
654 ;+
655 ; **-.DBINT-RH11-RP04 DISK PACK CONTROLLER INTERRUPTS
656 ;-
657 ;
658
659 001236 010046 .DBINT::MOV R0,-(SP) ;SAVE REGISTERS
660 001240 010146 MOV R1,-(SP)
661 001242 010246 MOV R2,-(SP)
662 001244 010346 MOV R3,-(SP)
663 001246 012702 176700 MOV #RPEXP,R2 ;GET ADDRESS OF CSR
664
671
672 001252 012700 000001 MOV #IS.SUC&377,R0 ;ASSUME SUCCESSFUL TRANSFER
673 001256 032712 060000 BIT #TRE!MCPE,@R2 ;ANY ERRORS?
674 001262 001432 BEQ 70$ ;IF EQ NO
675 001264 012700 000374 MOV #IE.VER&377,R0 ;ASSUME UNRECOVERABLE ERROR
676 001270 016201 000014 MOV RPER1(R2),R1 ;GET CONTENTS OF ERROR REGISTER
677 001274 032701 047007 BIT #UNS!WLE!IAE!AOE!RMR!ILR!ILF,R1 ;HARD ERROR?
678 001300 001004 BNE 50$ ;IF NE YES
679 001302 032762 014000 000010 BIT #NED!NEM,RPCS2(R2) ;HARD ERROR?
680 001310 001446 BEQ 100$ ;IF EQ NO
681 001312 032701 004000 50$: BIT #WLE,R1 ;WRITE LOCK ERROR?
682 001316 001403 BEQ 52$ ;IF EQ NO
683 001320 012700 000364 MOV #IE.WLK&377,R0 ;SET WRITE LOCK ERROR
684 001324 000415 BR 80$ ;
685
686 001326 032701 003000 52$: BIT #IAE!AOE,R1 ;CHECK FOR ILLEGAL CYL
687 001332 001412 BEQ 80$ ;NO -- UNRECOVERABLE ERROR
688 001334 012700 000354 MOV #IE.BLK&377,R0 ;SET ILLEGAL BLOCK
689 001340 000407 BR 80$ ;AND RETURN
690
701
702 ;
703 ; DEVICE TIMEOUT RESULTS IN THE CURRENT OPERATION BEING REPEATED. TIMEOUTS ARE
704 ; USUALLY CAUSED BY POWERFAILURE BUT MAY ALSO BE THE RESULT OF A HARDWARE FAILURE
705 ;
706
707 001342 105337 000000G 60$: DECB RPRTC ;RETRY FUNCTION?
708
714
715 001346 003025 BGT 82$ ;IF GT YES
716
718
719 001350 013701 000000G 70$: MOV RPRNA,R1 ;GET ADDRESS OF I/O PACKET
720 001354 016101 000002G MOV R.PB+2(R1),R1 ;SET FINAL VALUE OF SECOND STATUS WORD
721 001360 80$: ;REF LABEL
722 001360 012712 000013 MOV #13,@R2 ;RELEASE DUAL PORT
723 001364 010037 000000G MOV R0,RPBUF ;SAVE THE STATUS
724 001370 010137 000002G MOV R1,RPBUF+2
725 001374 052737 000000G 000020G BIS #EF.IOD,RPTSK+A.EF ;SET I/O DONE
726 001402 CALL ..DSEV ;DECLARE SIG EVENT
001402 004737 000000G JSR PC,..DSEV
727 001406 012603 85$: MOV (SP)+,R3 ;RESTORE REGISTERS
728 001410 012602 MOV (SP)+,R2
729 001412 012601 MOV (SP)+,R1
730 001414 012600 MOV (SP)+,R0
DBDRV -- RP04/RP06 DRIVER MACRO M1110 15-OCT-79 13:59 PAGE 8-1
731 001416 000137 000000G JMP @#..INTX ;RETURN FROM INTERRUPTS
732
733
734 001422 000137 000730' 82$: JMP 40$
735
741
742 001426 032762 163400 000010 100$: BIT #DLT!WCE!UPE!PGE!MXF!MDPE,RPCS2(R2) ;CONTROLLER ERROR?
743 001434 001342 BNE 60$ ;IF NE YES
744
751
752 001436 005701 TST R1 ;DATA CHECK ERROR?
753 001440 100340 BPL 60$ ;IF PL NO
754
756
757 001442 032701 000100 BIT #ECH,R1 ;ECC HARD ERROR?
758 001446 001335 BNE 60$ ;IF NE YES
759
761
762 ;
763 ; START ECC CORRECTION PROCEDURE
764 ;
765 ; FIRST CALCULATE THE BYTE OFFSET TO THE START OF BLOCK TRANSFERED
766 ;
767
768 001450 016200 000002 105$: MOV RPWC(R2),R0 ;GET NEGATIVE NUMBER OF WORDS REMAINING
769 001454 006300 ASL R0 ;CONVERT TO NEGATIVE BYTES REMAINING
770 001456 063700 000000G ADD RPCNT,R0 ;CALCULATE NUMBER OF BYTES TRANSFERED
771
780
781 001462 005300 DEC R0 ;CALCULATE OFFSET TO START OF BLOCK
782 001464 042700 000777 107$: BIC #777,R0 ;CLEAR RESIDUE
783
791
793
794 ;
795 ; 18-BIT ECC CORRECTION ROUTINES
796 ;
797 ; THE WORD IN ERROR AND THE WORD FOLLOWING IT ARE SET UP AS A TRIPLET
798 ; (TWO 18-BIT WORDS) AS IS THE ECC CORRECTION MASK FROM THE CONTROLLER.
799 ; THE MASK TRIPLET IS POSITIONED OVER THE DATA TRIPLET, CORRECTION IS
800 ; APPLIED, AND THE TWO DATA WORDS RETUNED TO THE BUFFER. THE CURRENT
801 ; OPERATION THEN PROCEEDS NORMALLY.
802 ;
803 001470 016203 000044 MOV RPEC1(R2),R3 ; LOOK AT POSITION REGISTER
804 001474 001731 BEQ 80$ ; INCORRIGIBLE IF .EQ. 0
805 001476 010300 MOV R3,R0 ; POSITION REGISTER TO R0
806 001500 005300 DEC R0 ; MINUS 1
807 001502 012701 000022 MOV #^D18,R1 ; DIVIDE BY 18.
808 001506 CALL $DIV ; SO
001506 004737 000032' JSR PC,$DIV
809 ;
810 ; COMPUTE THE ADDRESS OF THE WORD IN ERROR
811 ;
812 ; R0 -- WORD OFFSET IN TRANSFER
813 ; R1 -- SHIFT COUNT FOR ECC MASK
814 ; R2 -- BASE OF CONTROLLER REGISTERS
815 ; R3 -- OFFSET INTO TRANSFER BUFFER
DBDRV -- RP04/RP06 DRIVER MACRO M1110 15-OCT-79 13:59 PAGE 8-2
816 ;
817 001512 006300 ASL R0 ; CONVERT TO BYTE OFFSET
818 001514 013703 000002G MOV RPBUF+2,R3 ; BUFFER ADDRESS TO R3
819 001520 060003 ADD R0,R3 ; POINT TO WORD IN ERROR
820 ;
821 ; CONSTRUCT THE CORRECTION MASK TRIPLET
822 ;
823 001522 012700 000512' MOV #ECCMSK+6,R0 ; POINT TO THE MASK BUFFER
824 001526 005040 CLR -(R0) ; CLEAR IT OUT
825 001530 005040 CLR -(R0) ; SO
826 001532 016240 000046 MOV RPEC2(R2),-(R0) ; SET THE MASK WORD IN THE BUFFER
827 001536 CALL 141$ ; SHIFT IT INTO CORRECT POSITION
001536 004737 001666' JSR PC,141$
828 ;
829 ; CONSTRUCT THE ERROR DATA TRIPLET
830 ;
831 001542 005723 TST (R3)+ ; POINT TO THE SECOND ERROR WORD
832 001544 012700 000504' MOV #ECCWRD+6,R0 ; POINT TO THE ECC WORD BUFFER
833 001550 005040 CLR -(R0) ; CLEAR IT OUT
834 001552 005040 CLR -(R0) ; SO
835 001554 011340 MOV (R3),-(R0) ; SET SECOND ERROR WORD IN BUFFER
836 001556 012701 000022 MOV #^D18,R1 ; SHIFT IT INTO THE HIGH 18. BITS
837 001562 CALL 141$ ; SO
001562 004737 001666' JSR PC,141$
838 001566 014310 MOV -(R3),(R0) ; SET THE FIRST ERROR WORD IN THE BUFFER
839 001570 012701 000504' MOV #ECCMSK,R1 ; POINT TO THE SHIFTED MASK
840 ;
841 ; APPLY CORRECTION TO EACH WORD IN THE DATA TRIPLET
842 ;
843 001574 CALL 130$ ; CORRECT BITS 00 THRU 16
001574 004737 001654' JSR PC,130$
844 001600 CALL 130$ ; CORRECT BITS 17 THRU 32
001600 004737 001654' JSR PC,130$
845 001604 CALL 130$ ; CORRECT BITS 33 THRU 36
001604 004737 001654' JSR PC,130$
846 ;
847 ; REPLACE THE ERROR WORDS WITH THOSE JUST CORRECTED
848 ;
849 001610 162700 000006 SUB #6,R0 ; BACK THE POINTER UP
850 001614 011023 MOV (R0),(R3)+ ; SET FIRST CORRECTED WORD IN BUFFER
851 001616 012701 177756 MOV #-^D18,R1 ; SHIFT COUNT TO R1
852 001622 CALL 141$ ; SHIFT SECOND CORRECTED WORD DOWN
001622 004737 001666' JSR PC,141$
853 001626 011013 MOV (R0),(R3) ; SET SECOND CORRECTED WORD IN BUFFER
854 ;
855 ; CONTINUE OR TERMINATE PREVIOUS OPERATION
856 ;
857
859
905
906 ;
907 ; SIXTH FINISH OR CONTINUE PREVIOUS FUNCTION
908 ;
909
910 001630 012700 000001 MOV #IS.SUC&377,R0 ;ASSUME SUCCESSFUL TRANSFER
911 001634 112712 000011 MOVB #11,@R2 ;CLEAR DRIVE ERRORS
912
DBDRV -- RP04/RP06 DRIVER MACRO M1110 15-OCT-79 13:59 PAGE 8-3
918
919 001640 005762 000002 TST RPWC(R2) ;ANY MORE WORDS TO TRANSFER?
920
922
923 001644 001641 BEQ 70$ ;IF EQ NO
924
933
934 001646 113712 000000G MOVB RPBUF,@R2 ;RESTART PREVIOUS OPERATION
935 001652 000655 BR 85$
936
938
939 ;
940 ; APPLY CORRECTION TO ONE WORD IN THE ERROR TRIPLET
941 ;
942 ; INPUTS:
943 ;
944 ; R0 POINTS TO WORD IN DATA TRIPLET TO BE CORRECTED
945 ; R1 POINTS TO WORD IN MASK TRIPLET TO BE APPLIED TO DATA
946 ;
947 ; OUTPUTS:
948 ;
949 ; R0 POINTS TO THE NEXT WORD IN THE DATA TRIPLET
950 ; R1 POINTS TO THE NEXT WORD IN THE MASK TRIPLET
951 ;
952 001654 130$:
953 001654 011146 MOV (R1),-(SP) ; CURRENT MASK TO STACK
954 001656 041016 BIC (R0),(SP) ; .NOT. MASK .AND. DATA
955 001660 042110 BIC (R1)+,(R0) ; .NOT. DATA .AND. MASK
956 001662 052620 BIS (SP)+,(R0)+ ; DATA .OR. MASK
957 001664 140$:
958 001664 RETURN ; FOR MORE
001664 000207 RTS PC
959 ;
960 ; SHIFT A TRIPLET EITHER RIGHT OR LEFT
961 ;
962 ; INPUTS:
963 ;
964 ; R0 POINTS TO TRIPLET TO BE SHIFTED
965 ; R1 HAS SHIFT COUNT -
966 ; .GT. 0 => SHIFT LEFT
967 ; .EQ. 0 => NO SHIFT
968 ; .LT. 0 => SHIFT RIGHT
969 ;
970 ; NO REGISTERS ALTERED
971 ;
972 001666 141$:
973 001666 010146 MOV R1,-(SP) ; SAVE SHIFT COUNT
974 001670 100407 BMI 143$ ; SHIFT RIGHT IF NEGATIVE
975 001672 001414 BEQ 145$ ; GO AWAY IF .EQ. 0
976 001674 142$:
977 001674 006320 ASL (R0)+ ; SHIFT AWAY TO THE LEFT
978 001676 006120 ROL (R0)+ ; PROPAGATE CARRY
979 001700 006110 ROL (R0) ; FOR ALL THREE WORDS
980 001702 024040 CMP -(R0),-(R0) ; BACK THE POINTER UP
981 001704 077105 SOB R1,142$ ; LOOP TILL DONE
982 001706 000406 BR 145$ ; EXIT
983 ;
DBDRV -- RP04/RP06 DRIVER MACRO M1110 15-OCT-79 13:59 PAGE 8-4
984 001710 143$:
985 001710 005401 NEG R1 ; SO "SOB" WORKS
986 001712 144$:
987 001712 006220 ASR (R0)+ ; SHIFT THE TRIPLE WORD RIGHT
988 001714 006020 ROR (R0)+ ; PROPAGATE CARRY
989 001716 006010 ROR (R0) ; ALL THE WAY
990 001720 024040 CMP -(R0),-(R0) ; BACK THE POINTER UP
991 001722 077105 SOB R1,144$ ; TRY FOR MORE
992 001724 145$:
993 001724 012601 MOV (SP)+,R1 ; RESTORE SHIFT COUNT
994 001726 RETURN ; TO CALLER
001726 000207 RTS PC
995
997
1015
1016 ;
1017 ; OFFSET RECOVERY
1018 ;
1019
1086
1087
1088 .DSABL LSB
DXDRV MACRO M1110 15-OCT-79 13:59 PAGE 10
1350 .TITLE DXDRV
1351 .IDENT /007000/
1352 ;
1353 ; COPYRIGHT (C) 1975, 1978 BY
1354 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
1355 ;
1356 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
1357 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
1358 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
1359 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
1360 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
1361 ;
1362 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
1363 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
1364 ; CORPORATION.
1365 ;
1366 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
1367 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
1368 ;
1369 ;
1370 ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
1371 ; OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
1372 ;
1373 ;
1374 ; VERSION: 07-00
1375 ; BY: H. LEV
1376 ; RSX20F -- R. MCLEAN
1377 ; DATE: 16-JUN-75
1378 ;
1379 ;
1380 ; RX01 - RX11 FLOPPY DISK DRIVER
1381 ;
1382 ; FUNCTIONS RECOGNIZED:
1383 ; IO.RPB - READ PHYSICAL BLOCK (MAY READ ANY SECTOR ON DISK)
1384 ; IO.WPB - WRITE PHYSICAL BLOCK (MAY WRITE ANY SECTOR ON DISK)
1385 ; IO.WDD - WRITE DELETED DATA - WRITE ANY SECTOR ON DISK
1386 ; SETTING THE DELETED DATA MARK IN SECTOR HEADER
1387 ; THE FOLLOWING TWO FUNCTION CODES OPERATE ON 256 WORD BLOCKS
1388 ; OF DATA (4 SECTORS) THE DRIVER AUTOMATICALLY INTERLEAVES
1389 ; AND SKEWS SECTORS TO OPTIMIZE THE TRANSFER OF DATA
1390 ; SO THAT A LONG READ/WRITE MAY BE DONE WITHOUT LOOSING
1391 ; A REVOLUTION OF THE DISK. THE INTERLEAVE FACTOR IS 2
1392 ; AND THE SKEW FACTOR IS 6.
1393 ; IO.RLB - READ LOGICAL BLOCKS OF 256. WORDS
1394 ; IO.WLB - WRITE LOGICAL BLOCKS OF 256. WORDS.
1395 ;
1396 ; IF DELETED DATA IS READ, THE STATUS CODE RETURNED WILL
1397 ; BE IS.RDD, OTHERWISE IT IS IS.SUC
1398 ;
1399 ;
1400 ; MODIFICATIONS:
1401 ;
1402 ; NO. DATE PROGRAMMER PURPOSE
1403 ; --- ---- ---------- -------
1404 ; 001 15-MAR-77 R. BELANGER CONDITIONALLY ASSEMBLE
1405 ; FLOPPY DRIVER
1406 ; 002 22-OCT-77 R. BELANGER REMOVE CONDITIONALS
DXDRV MACRO M1110 15-OCT-79 13:59 PAGE 11
1408 .MCALL QIOSY$,$DEF
1409 001730 QIOSY$
1410 .MCALL .STKM,WTSE$,DIR$,CALL,RETURN
1411 001730 $DEF
1412 ;
1413 ;
1414 ; EQUATED SYMBOLS
1415 ;
1416 000020 A.EF=20 ;LOCAL DEFINITION BECAUSE OF NO COMPLEX GLOBLS
1417 177170 DXEXP=177170 ;EXTERNAL PAGE ADDRESS
1418 ;
1419 000010 RETRY = 8. ; ERROR RETRY COUNT
1420 000040 PHYBLK = 40 ; PHYSICAL BLOCK SUBFUNCTION CODE
1421 ;
1422 ;
1423 ; RX11 DEVICE REGISTER OFFSETS AND BIT DEFINITIONS
1424 ;
1425 ;
1426 000000 RXCS = 0 ; CONTROL STATUS REGISTER
1427 000002 RXDB = 2 ; DATA BUFFER
1428 000020 UNIT = 20 ; UNIT SELECT BIT
1429 000040 DONE = 40 ; RX11 DONE
1430 000100 INTEBL = 100 ; INTERRUPT ENABLE
1431 000200 TR = 200 ; RX11 TRANSFER READY BIT (CPU-SILO)
1432 040000 INIT = 40000 ; INITIALIZE RX11
1433 ;
1434 ;
1435 ; FUNCTION CODES
1436 ;
1437 000001 GO = 1 ; GO BIT
1438 000001 FILL = 0!GO ; FILL SILO
1439 000003 EMPTY = 2!GO ; EMPTY SILO
1440 000005 WRITE = 4!GO ; WRITE A SECTOR
1441 000007 READ = 6!GO ; READ A SECTOR
1442 000015 WRTDD = 14!GO ; WRITE DELETED DATA
1443 ;
1444 001730 DXHD:: .STKM 0,0,0,0,0,0,0,DXINI,174000,DXSTK
001776 000000 000000 000000 .WORD 0,0,0,0
002004 000000
002024 174000 002240' 002210' .WORD 174000,DXINI,DXSTK
002060 000005 .WORD 5
002062 000000G .WORD TTPEN
002064 000000 .WORD 0
002066 000000 .WORD 0
002070 000000 .WORD 0
002072 000000 .WORD 0
002074 000000 .WORD 0
002076 000000 .WORD 0
002100 000000 .WORD 0
002102 000000 .WORD 0
002104 000000 .WORD 0
002106 000000 .WORD 0
002210 000000 .WORD 0
002212 000000 .WORD 0
002214 000000 .WORD 0
002216 000000 .WORD 0
002220 000000 .WORD 0
DXDRV MACRO M1110 15-OCT-79 13:59 PAGE 11-1
002222 000000 .WORD 0
002224 002240' .WORD DXINI
002226 174000 .WORD 174000
1445 ;
1446 002230 WFPKT: WTSE$ E.NIR
002230 051 002 .BYTE 41.,2
002232 000000G .WORD E.NIR
1447 ;
1448 002234 DXIOD: WTSE$ E.IOD
002234 051 002 .BYTE 41.,2
002236 000000G .WORD E.IOD
1449 ;
1450 ;
DXDRV MACRO M1110 15-OCT-79 13:59 PAGE 12
1452 ;+
1453 ; *** - DXINI FLOPPY DISK CONTROLLER INITIATOR
1454 ;
1455 ; THIS ROUTINE IS ENTERED FROM THE QIO DIRECTIVE WHEN AN I/O REQUEST
1456 ; IS QUEUED AND AT THE END OF A PREVIOUS I/O OPERATION TO PROPOGATE THE
1457 ; EXECUTION OF THE DRIVER. IF THE SPECIFIED CONTROLLER IS NOT BUSY,
1458 ; THEN AN ATTEMPT IS MADE TO DEQUEUE THE NEXT I/O REQUEST. OTHERWISE
1459 ; A RETURN TO THE CALLER IS EXECUTED. IF THE DEQUEUE ATTEMPT IS SUCCESSFUL
1460 ; THE NEXT I/O OPERATION IS INITIATED. A RETURN TO THE CALLER IS THEN
1461 ; EXECUTED.
1462 ;
1463 ; INPUTS:
1464 ; R5 - ADDRESS OF UCB WHICH IS ASSOCIATED WITH CONTROLLER TO BE INITIATED
1465 ;
1466 ; OUTPUTS:
1467 ; IF THE CONTROLLER ASSOCIATED WITH THE SPECIFIED UCB IS NOT
1468 ; BUSY AND AN I/O REQUEST IS WAITING TO BE PROCESSED, THE REQUEST
1469 ; IS DEQUEUED AND THE DRIVER INITIATES THE REQUESTED FUNCTION.
1470 ;
1471 ;-
1472 .ENABL LSB
1473 002240 DXINI: DIR$ #WFPKT ;WAIT FOR PACKET TO DO SOME WORK
002240 012746 002230' MOV #WFPKT,-(SP)
002244 104375 EMT 375
1474 002246 012700 054104 5$: MOV #"DX,R0 ;TRY TO DQ
1475 002252 CALL ..DQRN ;DQ A PACKET
002252 004737 000000G JSR PC,..DQRN
1476 002256 103770 BCS DXINI
1477 002260 005702 TST R2
1478 002262 001402 BEQ 7$
1479 002264 012702 000020 MOV #UNIT,R2
1480 002270 010237 000000G 7$: MOV R2,DXUNIT ;SAVE UNIT NUMBER
1481 002274 010537 000000G MOV R5,DXBUF ;SAVE ADDRESS OF BUFFER
1482 002300 010337 000000G MOV R3,DXCNT ;SAVE BYTE COUNT
1483 002304 010137 000000G MOV R1,DXPKT ;SAVE THE PACKET
1484 002310 122761 000002 000001G CMPB #IO.RLB/256.,R.FC+1(R1) ;CHECK FOR VALID FUNCTION
1485 002316 001404 BEQ 6$
1486 002320 122761 000001 000001G CMPB #IO.WLB/256.,R.FC+1(R1)
1487 002326 001062 BNE ILFCD
1488 002330 6$:
1489 ;
1490 ; USAGE OF WORDS IN DXVCB
1491 ; DXVCB+2 - LOGICAL OR PHYSICAL SECTOR NUMBER
1492 ; DXVCB+4 - BYTES TO TRANSFER ON CURRENT SECTOR
1493 ; DXVCB+6 - CURRENT FUNCTION CODE
1494 ; DXVCB+10 - PHYSICAL SECTOR NUMBER(1-26.)
1495 ; DXVCB+11 - PHYSICAL TRACK NUMBER (0-77.)
1496 ; DXVCB+12 - STATUS REGISTER AFTER INTERRUPT
1497 ;
1498 ;
1499 ;
1500 ; INITIALIZE DRIVER
1501 ;
1502 002330 012737 000010 000000G 10$: MOV #RETRY,DXRTC ; SET RETRY COUNT
1503 002336 105761 000006G TSTB R.PB+6(R1) ; HIGH BLOCK SPECIFIED?
1504 002342 001161 BNE 180$ ;NO
1505 ;
DXDRV MACRO M1110 15-OCT-79 13:59 PAGE 12-1
1506 ; SET UP FIRST BLOCK OR SECTOR NUMBER
1507 ;
1508 002344 016100 000010G 20$: MOV R.PB+10(R1),R0 ; GET PHYSICAL OR LOGICAL BLOCK NUMBER
1509 002350 132761 000040 000000G BITB #PHYBLK,R.FC(R1) ; IS IT READ/WRITE PHYSICAL
1510 002356 001002 BNE 30$ ; YES
1511 002360 006300 ASL R0 ; CONVERT TO LOGICAL SECTOR NUMBER
1512 002362 006300 ASL R0 ; WHICH IS LBN*4
1513 002364 010037 000002G 30$: MOV R0,DXVCB+2 ; STORE IT
1514 002370 016137 000000G 000006G MOV R.FC(R1),DXVCB+6 ; SAVE FUNCTION CODE
1515 002376 012703 177170 35$: MOV #DXEXP,R3 ; GET CSR ADDRESS
1516 002402 CALL TRKSEC ; CONVERT BLOCK NUMBER TO TRACK/SECTOR
002402 004737 003144' JSR PC,TRKSEC
1517 002406 103537 BCS 180$ ; BAD BLOCK NUMBER
1518 002410 012702 000007 MOV #READ,R2 ; ASSUME READ FUNCTION
1519 002414 122737 000001 000007G CMPB #IO.WLB/256.,DXVCB+7 ; WRITE?
1520 002422 001064 BNE 95$ ; NO
1521 ;
1522 ; FILL SILO BEFORE WRITE
1523 ;
1524 002424 CALL SETBUF ; SET UP BUFFER POINTER AND MAPPING REGISTER
002424 004737 003314' JSR PC,SETBUF
1525 002430 010304 MOV R3,R4 ; COPY CSR ADDRESS
1526 002432 012724 000001 MOV #FILL,(R4)+ ; SET FILL BUFFER FUNCTION
1527 002436 005002 70$: CLR R2 ; ASSUME NO DATA TO TRANSFER
1528 002440 005301 DEC R1 ; MORE DATA TO TRANSFER?
1529 002442 002401 BLT 74$ ; NO
1530 002444 112002 MOVB (R0)+,R2 ; YES, GET NEXT BYTE
1531 002446 132713 000240 74$: BITB #TR!DONE,@R3 ; IS CONTROLLER READY FOR NEXT BYTE
1532 002452 100402 BMI 76$ ; YES
1533 002454 001774 BEQ 74$ ; NO, WAIT UNTIL IT IS
1534 002456 000402 BR 90$ ; YES, SILO FULL
1535 002460 110214 76$: MOVB R2,@R4 ; NO, PUT NEXT BYTE IN SILO
1536 002462 000765 BR 70$ ; AND WAIT TILL IT'S ACCEPTED
1537 ;
1538 002464 005701 90$: TST R1 ; TRANSFERED ALL REQUESTED BYTES
1539 002466 100432 BMI 140$ ; YES
1540 002470 000137 003122' JMP DXRTY ;NO, ERROR
1541 ;
1542 002474 012703 000376 ILFCD: MOV #IE.IFC&377,R3 ;NO -- ILLEGAL FUNCTION
1543 002500 000467 BR 157$
1544 ;
1545 ;
1546 ; EMPTY SILO AFTER READ
1547 ;
1548 002502 010304 100$: MOV R3,R4 ; GET CSR ADDRESS
1549 002504 012724 000003 MOV #EMPTY,(R4)+ ; SET EMPTY BUFFER FUNCTION
1550 002510 CALL SETBUF ; SET BUFFER POINTER AND MAPPING REGISTER
002510 004737 003314' JSR PC,SETBUF
1551 002514 132713 000240 110$: BITB #TR!DONE,@R3 ; NEXT BYTE READY FOR US?
1552 002520 100402 BMI 114$ ; YES
1553 002522 001774 BEQ 110$ ; NO, WAIT TILL IT IS
1554 002524 000405 BR 120$ ; NO, SILO IS EMPTY
1555 ;
1556 002526 111402 114$: MOVB @R4,R2 ; GET NEXT BYTE
1557 002530 005301 DEC R1 ; DO WE WANT IT?
1558 002532 002770 BLT 110$ ; NO
1559 002534 110220 MOVB R2,(R0)+ ; YES, PUT IT IN BUFFER
DXDRV MACRO M1110 15-OCT-79 13:59 PAGE 12-2
1560 002536 000766 BR 110$ ; GET NEXT BYTE
1561 ;
1562 002540 005701 120$: TST R1 ; ALL BYTES TRANSFERED?
1563 002542 003167 BGT DXRTY ; NO, ERROR
1564 002544 CALL NXTSEC ; UPDATE TO NEXT SECTOR
002544 004737 003272' JSR PC,NXTSEC
1565 002550 001523 BEQ 193$ ; ALL DONE
1566 002552 000711 BR 35$ ; CONTINUE
1567 ;
1568 ; INITIATE TRANSFER BETWEEN SILO AND DISK
1569 ;
1570 002554 012702 000005 140$: MOV #WRITE,R2 ; DEFAULT WRITE FUNCTION
1571 002560 032737 000004 000006G BIT #4,DXVCB+6 ; WRITE DELETED DATA?
1572 002566 001402 BEQ 150$ ; NO
1573 002570 012702 000015 MOV #WRTDD,R2 ; YES, SET WRITE DELETED DATA
1574 002574 95$:
1575 002574 053702 000000G 150$: BIS DXUNIT,R2 ; YES, SET TO SELECT UNIT
1576 002600 010213 152$: MOV R2,@R3 ; INITIATE FUNCTION
1577 002602 CALL TRWAIT ; WAIT FOR REQUEST FOR SECTOR
002602 004737 003344' JSR PC,TRWAIT
1578 002606 103545 BCS DXRTY ; ERROR
1579 002610 113763 000010G 000002 MOVB DXVCB+10,RXDB(R3) ; GIVE SECTOR NUMBER TO CONTROLLER
1580 002616 CALL TRWAIT ; WAIT
002616 004737 003344' JSR PC,TRWAIT
1581 002622 103537 BCS DXRTY ; ERROR
1582 002624 113763 000011G 000002 MOVB DXVCB+11,RXDB(R3) ; GIVE TRACK NUMBER TO CONTROLLER
1583 002632 155$:
1584 002632 052713 000100 BIS #INTEBL,@R3 ; ENABLE INTERRUPT
1585 ;
1586 002636 032737 000340 177776 BIT #340,@#PS ;AT A PRIORITY?
1587 002644 001116 BNE 220$ ;YES -- THEN EXIT INTERRUPT SERVICE
1588 002646 DIR$ #DXIOD ;WAIT FOR I/O DONE
002646 012746 002234' MOV #DXIOD,-(SP)
002652 104375 EMT 375
1589 002654 013703 000000G MOV DXVCB,R3 ;FIND THE I/O STATUS
1590 002660 013704 000002G 157$: MOV DXVCB+2,R4
1591 002664 013701 000000G MOV DXPKT,R1
1592 002670 CALL ..IODN ;FINISH I/O
002670 004737 000000G JSR PC,..IODN
1593 002674 042737 000000G 000020G BIC #EF.IOD,DXTSK+A.EF ;CLEAR EVENT FLAG
1594 002702 000137 002240' JMP DXINI ;AND TRY AGAIN
1595 ;
1596 002706 012703 000354 180$: MOV #IE.BLK&377,R3 ;SET ILLEGAL BLOCK
1597 002712 032737 000340 177776 185$: BIT #340,@#PS ;FROM INT SERV?
1598 002720 001757 BEQ 157$ ;NO -- RETURN TO CALLER
1599 002722 000456 BR 210$ ;AND REPORT ERROR
1600 ;
1601 002724 012703 000374 190$: MOV #IE.VER&377,R3 ;RETURN UNRECOVERABLE ERROR
1602 002730 000770 BR 185$
1603 ;
DXDRV MACRO M1110 15-OCT-79 13:59 PAGE 13
1605 ;+
1606 ; *** - $DXINT - RX11 FLOPPY DISK INTERRUPT ENTRY POINT
1607 ;
1608 ;-
1609 002732 $DXINT:: ;;;
1610 002732 010046 MOV R0,-(SP) ;;;SAVE REGISTERS
1611 002734 010146 MOV R1,-(SP)
1612 002736 010246 MOV R2,-(SP)
1613 002740 010346 MOV R3,-(SP)
1614 002742 010446 MOV R4,-(SP)
1615 002744 010546 MOV R5,-(SP)
1616 ;
1617 ;
1618 002746 012703 177170 MOV #DXEXP,R3 ;;; GET CSR ADDRESS
1619 002752 016337 000002 000012G MOV 2(R3),DXVCB+12 ;;; SAVE STATUS
1620 002760 042713 000100 BIC #INTEBL,@R3 ;;; DISABLE INTERRUPTS
1621 002764 005713 TST @R3 ; ANY ERRORS?
1622 002766 100455 BMI DXRTY ; YES
1623 002770 106237 000001G ASRB DXRTC+1 ; INITIALIZE IN PROGRESS
1624 002774 103407 BCS 166$ ;YES
1625 002776 122737 000002 000007G 160$: CMPB #IO.RLB/256.,DXVCB+7 ; READ?
1626 003004 001636 BEQ 100$ ; YES, GO EMPTY SILO
1627 003006 CALL NXTSEC ; NO, UPDATE TO NEXT SECTOR
003006 004737 003272' JSR PC,NXTSEC
1628 003012 001414 BEQ 195$ ; ALL DONE
1629 003014 000137 002376' 166$: JMP 35$ ; WRITE MORE DATA
1630 ;
1631 ;
1632 003020 032737 000040 000006G 193$: BIT #PHYBLK,DXVCB+6 ; IS THIS A READ PHYSICAL?
1633 003026 001406 BEQ 195$ ; NO, THEN IGNORE DELETED DATA MARK
1634 003030 012703 000002 MOV #IS.RDD&377,R3 ; YES, DEFAULT ON READ TO DELETED DATA
1635 003034 032737 000100 000012G BIT #100,DXVCB+12 ; WAS DELETED DATA READ?
1636 003042 001002 BNE 200$ ; YES
1637 003044 012703 000001 195$: MOV #IS.SUC&377,R3 ; NO, SET NORMAL SUCCESS
1638 003050 013700 000000G 200$: MOV DXPKT,R0 ; GET I/O PACKET ADDRESS
1639 003054 016000 000002G MOV R.PB+2(R0),R0 ; SET BYTES TRANSFERED
1640 003060 010037 000002G 210$: MOV R0,DXVCB+2 ;SAVE DEVICE STATUS
1641 003064 010337 000000G MOV R3,DXVCB
1642 003070 052737 000000G 000020G BIS #EF.IOD,DXTSK+A.EF ;START TASK
1643 003076 CALL ..DSEV ;DECLARE SIG EVENT
003076 004737 000000G JSR PC,..DSEV
1644 003102 012605 220$: MOV (SP)+,R5
1645 003104 012604 MOV (SP)+,R4
1646 003106 012603 MOV (SP)+,R3 ;RESTORE REGISTERS
1647 003110 012602 MOV (SP)+,R2
1648 003112 012601 MOV (SP)+,R1
1649 003114 012600 MOV (SP)+,R0
1650 003116 000137 000000G JMP @#..INTX
1651 ;
1652 ;
1653 ;
1654 ;
1655 ;
1656 ;
1657 ;
1658 ; RETRY LAST FUNCTION
1659 ;
DXDRV MACRO M1110 15-OCT-79 13:59 PAGE 13-1
1660 003122 105337 000000G DXRTY: DECB DXRTC ; ANY RETRIES LEFT?
1661 003126 001676 BEQ 190$ ; NO, ERROR
1662 003130 112737 000001 000001G MOVB #1,DXRTC+1 ; YES, SET INITIALIZE IN PROGRESS
1663 003136 012713 040000 MOV #INIT,@R3 ; INITIALIZE RX01 DRIVES
1664 003142 000633 BR 155$ ; AND DO IT
1665 .DSABL LSB
DXDRV MACRO M1110 15-OCT-79 13:59 PAGE 14
1667 ;+
1668 ; *** - TRKSEC - CONVERT LOGICAL OR PHYSICAL BLOCK NUMBER TO
1669 ; TRACK-SECTOR PAIR
1670 ; FROM ALGORITHM BY J GILBERT MODIFIED BY H. JACOBS
1671 ;
1672 ; INPUT:
1673 ; DXVCB+2 - LOGICAL SECTOR OR PHYSICAL SECTOR
1674 ;
1675 ; OUTPUT:
1676 ; DXVCB+10 - SECTOR (1-26.)
1677 ; DXVCB+11 - TRACK (0-77.)
1678 ; C CLEAR - VALID BLOCK
1679 ; C SET - BAD BLOCK NUMBER (PHYSICAL OR LOGICAL)
1680 ;
1681 ;-
1682 003144 013701 000002G TRKSEC: MOV DXVCB+2,R1 ; GET LOGICAL BLOCK OR PHYSICAL BLOCK
1683 003150 012700 000010 MOV #8.,R0 ; SET LOOP COUNT
1684 003154 012702 006400 MOV #6400,R2 ; SET DIVISOR
1685 003160 020201 1$: CMP R2,R1 ; DOES 26 GO INTO DIVIDEND?
1686 003162 101002 BHI 2$ ; BRANCH IF NOT, C CLEAR
1687 003164 160201 SUB R2,R1 ; SUBTRACT 26 FROM DIVIDEND
1688 003166 000261 SEC ; SET CARRY
1689 003170 006101 2$: ROL R1 ; SHIFT DIVIDEND AND QUOTIENT
1690 003172 005300 DEC R0 ; DONE?
1691 003174 003371 BGT 1$ ; NO, LOOP
1692 003176 110100 MOVB R1,R0 ; GET TRACK NUMBER
1693 003200 105001 CLRB R1 ; CLEAR TRACK NUMBER
1694 003202 000301 SWAB R1 ; SHIFT DONE SECTOR NUMBER
1695 003204 032737 000040 000006G BIT #PHYBLK,DXVCB+6 ; IS IT PHYSICAL BLOCK NUMBER?
1696 003212 001016 BNE 10$ ; YES
1697 003214 022701 000014 CMP #12.,R1 ; NO, C=1 IF 13<=R1<=25
1698 003220 006101 ROL R1 ; DOUBLE FOR INTERLEAVE FACTOR
1699 003222 006300 ASL R0 ; ADD TRACK -TRACK SKEW
1700 003224 060001 ADD R0,R1 ; SKEW BY 2*TRACK
1701 003226 060001 ADD R0,R1 ; SKEW BY 4*TRACK
1702 003230 060001 ADD R0,R1 ; SKEW BY 6*TRACK
1703 003232 006200 ASR R0 ; RESTORE TRACK NUMBER
1704 003234 012702 000032 MOV #26.,R2 ; SET MODULUS
1705 003240 160201 5$: SUB R2,R1 ; MODULO SECTOR INTO RANGE -26. TO -1.
1706 003242 002376 BGE 5$ ; LOOP TILL REMAINDER GOES NEG
1707 003244 060201 ADD R2,R1 ; CONVERT TO RANGE 0-25.
1708 003246 005200 INC R0 ; LBN0 STARTS ON TRACK 1
1709 003250 005201 10$: INC R1 ; CONVERT TO RANGE 1-26.
1710 003252 010137 000010G MOV R1,DXVCB+10 ; SAVE SECTOR NUMBER
1711 003256 110037 000011G MOVB R0,DXVCB+11 ; SAVE TRACK NUMBER
1712 003262 022737 046400 000010G CMP #77.*256.,DXVCB+10 ; IS IT VALID TRACK/SECTOR?
1713 003270 RETURN ;
003270 000207 RTS PC
DXDRV MACRO M1110 15-OCT-79 13:59 PAGE 15
1715 ;
1716 ;+
1717 ; *** - NXTSEC - UPDATE BLOCK NUMBER , BUFFER ADDRESS
1718 ; AND BUFFER POINTER
1719 ;
1720 ; INPUT:
1721 ; DXVCB+2 - CURRENT BLOCK NUMBER
1722 ; DXVCB+4 - BYTES TRANSFERRED DURING LAST FUNCTION
1723 ; DXCNT - BYTES LEFT TO TRANSFER
1724 ; DXBUF - BUFFER ADDRESS
1725 ;
1726 ; OUTPUT:
1727 ; DXVCB+2 - UPDATED BLOCK NUMBER
1728 ; DXBUF - UPDATED BY 128. BYTES
1729 ; DXCNT - UPDATED BY NUMBER OF WORDS TRANSFERED
1730 ; Z SET - ALL BYTES TRANSFERED
1731 ; Z CLEAR - MORE BYTES TO TRANSFER
1732 ; C CLEAR - VALID TRACK/SECTOR
1733 ; C SET - BAD BLOCK NUMBER
1734 ;
1735 ;+
1736 003272 005237 000002G NXTSEC: INC DXVCB+2 ; UPDATE BLOCK NUMBER
1737 ;
1738 003276 062737 000200 000000G ADD #128.,DXBUF ; UPDATE BUFFER POINTER
1739 ;
1740 003304 163737 000004G 000000G SUB DXVCB+4,DXCNT ; UPDATE BYTES LEFT TO TRANSFER
1741 003312 RETURN ;
003312 000207 RTS PC
1742 ;
1743 ;+
1744 ; *** - SETBUF - SET UP BUFFER POINTER FOR CPU - SILO TRANSFERS
1745 ;
1746 ; INPUT:
1747 ;
1748 ; OUTPUT:
1749 ; R0 - BUFFER ADDRESS
1750 ; R1 - BYTES TO TRANSFER
1751 ; IF MAPPED SYSTEM KISAR6 IS MAPPED TO BUFFER AND R1 IS BASE 140000
1752 ;
1753 ;-
1754 003314 013700 000000G SETBUF: MOV DXBUF,R0 ; GET BUFFER ADDRESS
1755 003320 012701 000200 MOV #128.,R1 ; DEFAULT TO 128. BYTE TRANSFER
1756 003324 023701 000000G CMP DXCNT,R1 ; 128. BYTES LEFT TO TRANSFER?
1757 003330 103002 BHIS 10$ ; YES
1758 003332 013701 000000G MOV DXCNT,R1 ; NO, GET RESIDUAL COUNT
1759 003336 010137 000004G 10$: MOV R1,DXVCB+4 ; STORE COUNT OF BYTES TO TRANSFER
1760 ;
1761 003342 RETURN ;
003342 000207 RTS PC
1762 ;+
1763 ; *** - WAIT FOR TRANSFER REQUEST AND DONE
1764 ;
1765 ; INPUT:
1766 ;
1767 ; OUTPUT:
1768 ; CC - TRANSFER REQUESTED
1769 ; CS - NO TRANSFER REQUESTED
DXDRV MACRO M1110 15-OCT-79 13:59 PAGE 15-1
1770 ;
1771 ;-
1772 003344 000241 TRWAIT: CLC ; DEFAULT TO TRANSFER REQUESTED
1773 003346 132713 000240 10$: BITB #TR!DONE,@R3 ; CONTROLLER DONE?
1774 003352 100402 BMI 20$ ; YES, AND TRANSFER REQUEST IS UP
1775 003354 001774 BEQ 10$ ; NO, WAIT
1776 003356 000261 SEC ; SET NO TRANSFER REQUEST
1777 003360 20$: RETURN ;
003360 000207 RTS PC
1778
FEDRV MACRO M1110 15-OCT-79 13:59 PAGE 16
1781 .TITLE FEDRV
1782 .IDENT /005000/
1783 000001 $DIRAC=1
1784 ;
1785 ; COPYRIGHT (C) 1975, 1978 BY
1786 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
1787 ;
1788 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
1789 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
1790 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
1791 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
1792 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
1793 ;
1794 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
1795 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
1796 ; CORPORATION.
1797 ;
1798 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
1799 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
1800 ;
1801 ; VERSION 05-00
1802 ;
1803 ; R. MCLEAN 25-JUN-75
1804 ; A. PECKHAM 30-NOV-76
1805 ;
1806 ; FE PSEUDO DRIVER
1807 ;
1808 ; MACRO LIBRARY CALLS
1809 ;
1810 ;
1811 .MCALL .STKM,WTLO$,DIR$,.INH0,.ENB0,.ENB6,.INH6,.ENB,.INH
1812 .MCALL CALL,CALLR,RETURN
1813 ;
1814 ; EQUATED SYMBOLS
1815 ;
1816 100000 EF.SEP=100000 ;SECONDARY PROTOCOL FLAG
1817 000400 EF.TEF=400 ;DONE EVENT FLAG
1818 ;
1819 ; DIRECTIVES
1820 ;
1821 003362 WFEF1: WTLO$ 1,EF.SEP!EF.NIR!EF.TEF ;WAIT FOR SOMETHING TO DO
003362 053 003 .BYTE 43.,3
003364 000001 .WORD 1
003366 000000C .WORD EF.SEP!EF.NIR!EF.TEF
1822 ;
1823 ; DATA AREAS
1824 ;
1825 ; FETBL SWITCHES
1826 ;
1827 040000 FE.DET=040000 ;MORE DATA -11 TO -10 TO BE SENT
1828 020000 FE.DTE=020000 ;MORE DATA -10 TO -11 EXPECTED
1829 004000 FE.SER=004000 ;SERVICING -11 TRANSFER REQUEST
1830 002000 FE.STR=002000 ;SERVICING -10 TRANSFER REQUEST
1831
1832 003370 FEHD:: .STKM 0,0,0,0,0,0,0,FEDRV,174000,FESTK
003436 000000 000000 000000 .WORD 0,0,0,0
003444 000000
FEDRV MACRO M1110 15-OCT-79 13:59 PAGE 16-1
003464 174000 003670' 003650' .WORD 174000,FEDRV,FESTK
003520 000005 .WORD 5
003522 000000G .WORD TTPEN
003524 000000 .WORD 0
003526 000000 .WORD 0
003530 000000 .WORD 0
003532 000000 .WORD 0
003534 000000 .WORD 0
003536 000000 .WORD 0
003540 000000 .WORD 0
003542 000000 .WORD 0
003544 000000 .WORD 0
003546 000000 .WORD 0
003650 000000 .WORD 0
003652 000000 .WORD 0
003654 000000 .WORD 0
003656 000000 .WORD 0
003660 000000 .WORD 0
003662 000000 .WORD 0
003664 003670' .WORD FEDRV
003666 174000 .WORD 174000
FEDRV MACRO M1110 15-OCT-79 13:59 PAGE 17
1834 003670 FEDRV: DIR$ #WFEF1 ;WAIT TO GET STARTED
003670 012746 003362' MOV #WFEF1,-(SP)
003674 104375 EMT 375
1835 003676 .INH0 ;LOCK OUT DTE INTERRUPTS
003676 013746 177776 MOV @#PS,-(SP)
003702 112737 000140 177776 MOVB #140,@#PS
1836 003710 013700 000020G 1$: MOV FETSK+A.EF,R0 ;;;PICK UP THE EVENT FLAGS
1837 003714 001435 BEQ 5$ ;;;EXIT IF NOTHING
1838 003716 005037 000020G CLR FETSK+A.EF ;;;CLEAR EVENT FLAGS
1839 003722 032737 000000G 000002G BIT #EF.PR1,.COMEF+2 ;;;PRIMARY PROTOCOL IN USE?
1840 003730 001402 BEQ 2$ ;;;NO -- BETTER DUMP REQUEST'S
1841 003732 005700 TST R0 ;;;SECONDARY PROTOCOL CHANGE?
1842 003734 100025 BPL 5$ ;;;NO -- CONTINUE
1843 ;
1844 ; PRIMARY PROTOCOL HAS DIED - CLEAR OUT THE REQUEST QUEUE
1845 ;
1846 003736 013701 000000G 2$: MOV NODADR,R1 ;;;GET CURRENT NODE
1847 003742 005037 000000G CLR NODADR ;;;DON'T BLOCK FE DRIVER
1848 003746 005037 000000G CLR STSWD ;;;CLEAR STATUS WORD BLOCK
1849 003752 042737 064000 000000G BIC #FE.SER!FE.DET!FE.DTE,FETBL+0 ;;;NO ACTION ON FE0
1850 003760 005701 TST R1 ;;;WERE WE PROCESSING A NODE ?
1851 003762 001005 BNE 4$ ;;;YES -- DO IT FIRST
1852 003764 012700 042506 3$: MOV #"FE,R0 ;;;PICK A NODE FROM THE QUEUE
1853 003770 CALL ..DQRN ;;;DQ
003770 004737 000000G JSR PC,..DQRN
1854 003774 103745 BCS 1$
1863 003776 4$:
1865 ;
1866 ;
1867 003776 012703 177761 7$: MOV #IE.ABO,R3 ;;;RETURN ABORTED
1868 004002 CALL ..IODN ;;;FINISH I/O
004002 004737 000000G JSR PC,..IODN
1869 004006 000766 BR 3$ ;;;AND TRY NEXT REQUEST
1870 ;
1871 ; CHECK FOR EVENTS
1872 ;
1873 004010 5$: .ENB0 ;;;ENABLE INTERRUPTS
004010 004737 000000G JSR PC,..ENB0
1874 004014 032700 000400 BIT #EF.TEF,R0 ;CHECK TO SEE IF DONE
1875 004020 001104 BNE IODN
1876 ;
1877 ; MUST BE I/O REQUEST
1878 ;
1879 004022 005737 000000G TST NODADR ;BLOCKED?
1880 004026 001320 BNE FEDRV ;YES -- DON'T DO ANYTHING ON QIO NOW
1881 004030 012700 042506 MOV #"FE,R0 ;DQ FROM FE DRIVER
1882 004034 CALL ..DQRN ;DQ
004034 004737 000000G JSR PC,..DQRN
1883 004040 103713 BCS FEDRV ;NOTHING -- WAIT
1884 004042 052737 004000 000000G BIS #FE.SER,FETBL+0 ;FE0 BEING USED FOR -11 REQUEST
1885 004050 010137 000000G MOV R1,NODADR ;SAVE THE ADDRESS OF THE NODE
1886 004054 010537 000000G MOV R5,ADRSAV ;SAVE THE ADDRESS
1887 004060 010337 000000G MOV R3,BYTESA ;SAVE THE BYTE COUNT
1888 004064 012702 000000G MOV #TO10PK,R2 ;SET UP PACKET ADDRESS
1889 004070 010200 MOV R2,R0 ;SAVE THE ADDRESS OF THE BUFFER
1890 004072 012722 000014 MOV #14,(R2)+ ;STORE SIZE
1891 004076 016122 000000G MOV R.FC(R1),(R2)+ ;SET UP THE FUNCTION CODE
FEDRV MACRO M1110 15-OCT-79 13:59 PAGE 17-1
1892 004102 005003 CLR R3 ;FIND THE LUN
1893 004104 156103 000000G BISB R.LU(R1),R3 ;SET UP THE LUT NUMBER
1894 004110 001005 BNE 10$ ;EXEC REQUEST?
1895 004112 012722 041104 MOV #"DB,(R2)+ ;DECLARE DB
1896 004116 013722 000000G MOV .RPUNT,(R2)+ ;SET UNIT NUMBER
1897 004122 000424 BR 77$ ;AND FINISH
1898 004124 016104 000000G 10$: MOV R.AT(R1),R4 ;FIND THE ATL
1899 004130 016404 000000G MOV A.HA(R4),R4 ;FIND THE HEADER ADDRESS
1900 004134 006303 ASL R3 ;MULTIPLY THE LUN BY 2
1901 004136 006303 ASL R3
1902 004140 060304 ADD R3,R4 ;POINT TO CORRECT ENTRY
1903 004142 016404 177776G MOV H.LUT-2(R4),R4 ;FIND THE LUT (FINALLY)
1904 004146 016404 000000G MOV U.RP(R4),R4 ;DO REDIRECT
1905 004152 012422 MOV (R4)+,(R2)+ ;STORE THE DEVICE (ASCII CHARACTER)
1906 004154 011422 MOV (R4),(R2)+ ;STORE THE UNIT
1907 004156 116104 000000G MOVB R.DP(R1),R4 ;FIND THE DPB SIZE
1908 004162 162704 000007 SUB #7,R4 ;SUB PERMINENT ONES
1909 004166 001002 BNE 77$ ;GOT A GOOD BYTE COUNT
1910 004170 005037 000000G CLR BYTESA ;NO CLEAR OUT BYTE COUNT
1911 004174 016122 000006G 77$: MOV R.PB+6(R1),(R2)+ ;STORE THE BLOCK NUMBER
1912 004200 016122 000010G MOV R.PB+10(R1),(R2)+
1913 004204 013722 000000G MOV BYTESA,(R2)+ ;SET BYTE COUNT
1914 004210 001403 BEQ 78$ ;IF MORE DATA MUST GO OUT
1915 004212 052737 040000 000000G BIS #FE.DET,FETBL+0 ;THEN SO INDICATE
1916 004220 78$: CALL SNSTR ;START INDIRECT FUNCTION
004220 004737 004274' JSR PC,SNSTR
1917 004224 005037 000000G CLR STSWD
1918 004230 000617 BR FEDRV ;AND WAIT
1919
1920 004232 013703 000000G IODN: MOV STSWD,R3 ;SET I/O DONE
1921 004236 013704 000002G MOV STSWD+2,R4
1922 004242 013701 000000G MOV NODADR,R1 ;SET NODE ADDRESS
1923 004246 005037 000000G CLR NODADR ;CLEAR INCASE OF ABORT
1924 004252 005037 000000G CLR STSWD ;CLEAR STATUS WORD
1925 004256 CALL ..IODN ;SET I/O DONE
004256 004737 000000G JSR PC,..IODN
1926 004262 042737 064000 000000G BIC #FE.SER!FE.DET!FE.DTE,FETBL+0 ;WE ARE FINISHED WITH -11 REQUEST
1927 004270 000137 003670' JMP FEDRV ;AND RETURN
1928
1929 004274 012701 100000G SNSTR: MOV #BC.STR+100000,R1 ;SET UP STRING DATA
1930 004300 005002 CLR R2 ;NO EVENT FLAG
1931 004302 012703 000000G MOV #D.FEPD,R3 ;FE DEVICE
1932 004306 CALLR ..STIN ;START INDIRECT
004306 000137 000000G JMP ..STIN
FEDRV MACRO M1110 15-OCT-79 13:59 PAGE 18
1934 ;
1935 ; THE -10 HAS SENT AN ACK TO US - CONTINUE THE OPERATION
1936 ; IF IT WAS A WRITE.
1937 ;
1938 004312 032712 040000 .FEACK::BIT #FE.DET,(R2) ;IS THERE DATA TO SEND ?
1939 004316 001436 BEQ 30$ ;NO, IGNORE THE ACK.
1940 004320 010046 MOV R0,-(SP) ;SAVE R0
1941 004322 013700 000000G MOV ADRSAV,R0 ;PICK UP THE ADDRESS
1942 004326 012701 000100 MOV #64.,R1 ;SET THE COUNT
1943 004332 020137 000000G CMP R1,BYTESA ;TOO BIG ??
1944 004336 101402 BLOS 10$ ;NO - USE THIS COUNT
1945 004340 013701 000000G MOV BYTESA,R1 ;YES - SEND WHAT'S LEFT
1946 004344 060137 000000G 10$: ADD R1,ADRSAV ;SET NEW ADDRESS
1947 004350 160137 000000G SUB R1,BYTESA ;AND BYTES LEFT
1948 004354 001002 BNE 20$ ;IF NO MORE AFTER THIS
1949 004356 042712 040000 BIC #FE.DET,(R2) ;THEN SO INDICATE
1950 004362 20$: .INH6 ;LOCK OUT INTERRUPTS
004362 013746 177776 MOV @#PS,-(SP)
004366 112737 000300 177776 MOVB #300,@#PS
1951 004374 014046 MOV -(R0),-(SP) ;;;SAVE MEMORY HERE
1952 004376 010110 MOV R1,@R0 ;;;STORE FIRST WORD TO10
1953 004400 CALL SNSTR ;;;START FUNCTION
004400 004737 004274' JSR PC,SNSTR
1954 004404 012610 MOV (SP)+,@R0 ;;;RESTORE FIRST WORD
1955 004406 .ENB6 ;;;ENABLE INTERRUPTS
004406 012637 177776 MOV (SP)+,@#PS
1956 004412 012600 MOV (SP)+,R0 ;RESTORE
1957 004414 30$: RETURN ;RETURN TO CALLER
004414 000207 RTS PC
FEDRV MACRO M1110 15-OCT-79 13:59 PAGE 19
1959 ;
1960 ; START FE DEVICE QUEUE ENTRY
1961 ;
1962 ; R0 -> THREAD BLOCK ENTRY
1963 ; R2 -> FETBL ENTRY
1964 ;
1965 004416 122760 000000G 000007 .FEST:: CMPB #BC.STR,7(R0) ;FUNCTION STRING?
1966 004424 001077 BNE IOABT ;NO -- ABORT I/O IN PROGRESS
1967 004426 005005 CLR R5 ;FIND THE BYTE SIZE
1968 004430 156005 000006 BISB 6(R0),R5
1969 004434 016004 000004 MOV 4(R0),R4 ;SET UP THE NODE ADDRESS
1970 004440 032712 020000 BIT #FE.DTE,(R2) ;ARE WE EXPECTING DATA ?
1971 004444 001040 BNE 70$ ;YES, INSERT IN BUFFER.
1972 004446 012401 MOV (R4)+,R1 ;CHECK TO SEE WHICH DIRECTION THIS FUNCTION IS
1973 004450 100102 BPL FCN ;REQUEST TO DO A FUNCTION -- SPECIAL
1974 004452 013703 000000G MOV NODADR,R3 ;A RETURN FUNCTION -
1975 004456 066301 000000G ADD R.FC(R3),R1 ;IS IT THE LAST ONE WE SENT ?
1976 004462 001100 BNE FCNBD ;NO -- ILLEGAL REQUEST -- QUIT
1977 004464 122763 000003 000001G CMPB #IO.ATT/400,R.FC+1(R3) ;ACP FUNCTION CODE?
1978 004472 001006 BNE 40$ ;NO -- LEAVE ADDRESSES ALONE
1979 004474 016337 000012G 000000G MOV R.PB+12(R3),BYTESA ;SET UP TO BYTE COUNT
1980 004502 016337 000004G 000000G MOV R.PB+4(R3),ADRSAV ;ALSO ADDRESS
1981 004510 022424 40$: CMP (R4)+,(R4)+ ;MOVE OVER DEVICE/UNIT
1982 004512 012437 000000G MOV (R4)+,STSWD ;SAVE THE I/O STATUS
1983 004516 012437 000002G MOV (R4)+,STSWD+2 ;BOTH HALVES
1984 004522 052712 020000 BIS #FE.DTE,(R2) ;INDICATE WE ARE EXPECTING DATA
1985 004526 021437 000000G CMP @R4,BYTESA ;BYTESIZE CORRECT?
1986 004532 103002 BHIS 50$ ;YES -- CONTINUE
1987 004534 011437 000000G MOV @R4,BYTESA ;NO -- SET NEW ONE
1988 004540 162705 000014 50$: SUB #14,R5 ;SUBTRACT FIXED HEADER SIZE
1989 004544 001410 BEQ 60$ ;AND QUIT IF NOTHING TO DO
1990 004546 112477 000000G 70$: MOVB (R4)+,@ADRSAV ;MOVE A BYTE
1991 004552 005237 000000G INC ADRSAV ;UPDATE BYTE POINTER
1992 004556 005337 000000G DEC BYTESA ;UPDATE BYTE COUNT
1993 004562 001404 BEQ 65$ ;(IN CASE OF MISCOUNT)
1994 004564 077510 SOB R5,70$ ;AND DO UNTIL DONE
1995 004566 005737 000000G 60$: TST BYTESA ;ANYTHING TO DO?
1996 004572 001005 BNE DONSTR ;YES -- DON'T SET I/O DONE FLAG
1997 004574 042712 020000 65$: BIC #FE.DTE,(R2) ;NO MORE DATA EXPECTED
1998 004600 052737 000400 000020G BIS #EF.TEF,FETSK+A.EF ;SET I/O DONE
1999 004606 DONSTR: CALL ..DECN ; RETURN NODE
004606 004737 000000G JSR PC,..DECN
2000 004612 012703 000000G MOV #D.FEPD,R3 ;ACK THIS FUNCTION
2001 004616 010205 MOV R2,R5
2002 004620 CALLR ..SACK
004620 000137 000000G JMP ..SACK
2003
2004 004624 013701 000000G IOABT: MOV NODADR,R1 ;NODE IN PROGRESS?
2008 004630 001766 BEQ DONSTR ;NO -- CONTINUE
2010 004632 005037 000000G CLR NODADR ;YES -- FIX IT WITH IE.ABO
2011 004636 042737 064000 000000G BIC #FE.SER!FE.DET!FE.DTE,FETBL+0 ;FINISHED WITH -11 REQUEST
2012 004644 012703 177761 MOV #IE.ABO,R3
2013 004650 CALL ..IODN ;QUIT IT
004650 004737 000000G JSR PC,..IODN
2017 004654 000754 BR DONSTR ;AND DECLARE DONE
2018 ;
2019 ; THIS IS A FUNCTION REQUEST FROM THE -10
FEDRV MACRO M1110 15-OCT-79 13:59 PAGE 19-1
2020 ;
2021 004656 022714 042515 FCN: CMP #"ME,(R4) ;IS IT MEMORY?
2022 004662 001401 BEQ MEFCN ;YUP -- MUST BE OK
2023 004664 000004 FCNBD: IOT ;NOPE -- CRASH
2024
2025 004666 052712 002000 MEFCN: BIS #FE.STR,(R2) ;WE ARE SERVICING -10 REQUEST
2026 004672 012737 000014 000000G MOV #14,DNBLK ;INIT RETURN PACKET SIZE
2027 004700 010137 000000G MOV R1,DNFCN ;SET FUNCTION
2028 004704 005437 000000G NEG DNFCN ;AND NEGATE.
2029 004710 012437 000002G MOV (R4)+,DNFCN+2 ;SAVE FUNCTION DEVICE
2030 004714 012737 000001 000000G MOV #IS.SUC,DNSTS ;ASSUME A SUCCESSFUL ACCESS
2031 004722 022424 CMP (R4)+,(R4)+ ;MOVE OVER UNIT AND HIGH ORDER ADDRES
2032 004724 012403 MOV (R4)+,R3 ;PICK UP ADDRESS
2033 004726 012405 MOV (R4)+,R5 ;AND BYTE COUNT
2034 004730 010537 000002G MOV R5,DNSTS+2 ;SAVE BYTE COUNT
2035 004734 .INH ;LOCK OUT INTERRUPTS
004734 013746 177776 MOV PS,-(SP)
004740 112737 000340 177776 MOVB #PR7,@#PS ;;
2036 004746 013746 000004 MOV @#4,-(SP) ;;;SAVE LOC 4
2037 004752 012737 005116' 000004 MOV #90$,@#4 ;;;GO TO ILL MEM ROUTINE
2038 004760 022701 000400 CMP #IO.WLB,R1 ;;;WRITE LOGICAL BLOCK?
2039 004764 001003 BNE 30$ ;;;READ MEMORY REQUEST
2040 004766 112423 20$: MOVB (R4)+,(R3)+ ;;;MOVE BYTES
2041 004770 077502 SOB R5,20$ ;;;UNTIL DONE
2042 004772 000417 BR 60$ ;;;RETURN SUCCESS
2043
2044 004774 122760 000014 000006 30$: CMPB #14,6(R0) ;;;ALL IN THIS PACKET?
2045 005002 001010 BNE 50$ ;;;NO -- BAD FUNCTION
2046 005004 012704 000000G MOV #BLKTT,R4 ;;;SET UP A PACKET TO ADD TO FUNCTION
2047 005010 112324 40$: MOVB (R3)+,(R4)+ ;;;MOVE CORRESPONDING BYTES
2048 005012 077502 SOB R5,40$ ;;;UNTIL DONE
2049 005014 063737 000002G 000000G ADD DNSTS+2,DNBLK ;;;INCLUDE RETURN BYTES IN PACKET
2050 005022 000405 BR 70$ ;;;SET RETURN FUNCTION
2051
2052 005024 012737 177777 000000G 50$: MOV #IE.BAD,DNSTS ;;;RETURN BAD FUNCTION
2053 005032 005037 000002G 60$: CLR DNSTS+2 ;;;NO BYTES TRANSFERRED
2054 005036 012637 000004 70$: MOV (SP)+,@#4 ;;;RESET LOC 4
2055 005042 .ENB ;;;ENABLE INTERRUPTS
005042 012637 177776 MOV (SP)+,@#PS ;;
2056 005046 013737 000002G 000004G MOV DNSTS+2,DNSTS+4 ;RETURN COUNT
2057 005054 010203 MOV R2,R3 ;COMPUTE FE NUMBER
2058 005056 162703 000000G SUB #FETBL,R3
2059 005062 006203 ASR R3 ;AND
2060 005064 110337 000001G MOVB R3,DNBLK+1 ;SET IN RETURN PACKET
2061 005070 010246 MOV R2,-(SP) ;SAVE FETBL POINTER
2062 005072 010046 MOV R0,-(SP) ;AND STRING POINTER
2063 005074 012700 000000G MOV #DNBLK,R0 ;SET DONE BLOCK ADDRESS
2064 005100 CALL SNSTR ;SEND STRING
005100 004737 004274' JSR PC,SNSTR
2065 005104 012600 MOV (SP)+,R0 ;RESTORE
2066 005106 012602 MOV (SP)+,R2
2067 005110 042712 002000 BIC #FE.STR,(R2) ;FINISHED WITH -10 REQUEST
2068 005114 000634 BR DONSTR ;AND QUIT
2069
2070 005116 022626 90$: CMP (SP)+,(SP)+ ;REMOVE TRAP STUFF
2071 005120 012737 177774 000000G MOV #IE.VER,DNSTS ;RETURN RECOVERABLE ERROR
2072 005126 000741 BR 60$
FEDRV MACRO M1110 15-OCT-79 13:59 PAGE 19-2
2073
2074 .TITLE LPDRV (LP-20 LINEPRINTER DRIVER FOR RSX10F)
2075 .SBTTL TITLE PAGE
2076 .IDENT /001000/
2077 ;
2078 ; COPYRIGHT (C) 1975, 1978 BY
2079 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
2080 ;
2081 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
2082 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
2083 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
2084 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
2085 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
2086 ;
2087 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
2088 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
2089 ; CORPORATION.
2090 ;
2091 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
2092 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
2093 ;
2094 ; MODULE: COMMON DEFINITIONS
2095 ;
2096 ; VERSION: 01-00
2097 ;
2098 ; AUTHOR: TOM PORCHER
2099 ;
2100 ; DATE: 4-JUN-75
2101 ;
2102 ;
2103 ; THIS MODULE CONTAINS:
2104 ;
2105 ; 1) COMMON PARAMETERS AND MACROS
2106 ;
2107 ; 2) LP-20 DEVICE REGISTER DEFINITIONS
2108 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 20
COMMON PARAMETERS AND MACROS
2110 .SBTTL COMMON PARAMETERS AND MACROS
2111 ;
2112 ; PARAMETERS
2113 ;
2114 ;L$$P20= 2 ;TWO LINEPRINTERS
2115 000214 LPALOC= 140. ;LINE ALLOCATION FOR EACH LP
2116 000012 LPRTRY= 10. ;# RETRYS ON ERRORS AND HUNG
2117 ;
2118 ; EVENT FLAGS
2119 ;
2120 000001 E.FLPD= 1 ;(1) INTERRUPT LEVEL I/O DONE
2121 000001 EF.LPD=BIT0
2122 000002 E.FLPC= 2 ;(2) MARK-TIME
2123 000002 EF.LPC=BIT1
2124 000003 E.FLPQ= 3 ;(3) CTY OUTPUT QUEUE I/O REQUESTS
2125 000004 EF.LPQ=BIT2
2126 ;(4) RESERVED FOR E.NIR (EXEC FLAG)
2127 000005 E.FLPS= 5 ;(5) STATUS REQUEST (LOCAL TO SSTSLP)
2128 000020 EF.LPS=BIT4
2129 000006 E.FLPW= 6 ;(6) WAIT FOR LP-20 TO SETTLE AFTER FLUSH
2130 000040 EF.LPW=BIT5
2131 ;
2132 ; MISC. MCALL'S
2133 ;
2134 .MCALL QIOSY$,ALUN$,MRKT$,QIOW$,SPRA$S,SVTK$S,WSIG$S,WTLO$S,WTSE$S,DIR$
2135 .MCALL $DEF,CALL,RETURN,.INH0,.INH,.ENB0,.ENB,PUSH,POP,.STKM
2136 005130 $DEF
2137 005130 QIOSY$
2138 .ENABLE AMA
2139 .LIST MEB
2140 ;
2141 ; COMMON MACROS
2142 ;
2143 .MACRO SAVE LIST
2144 PUSH <LIST>
2145 .MACRO RESTORE
2146 $$$=0
2147 .IRP ITEM,<LIST>
2148 $$$=$$$+1
2149 .ENDM
2150 .REPT $$$
2151 $$$$=0
2152 .IRP ITEM,<LIST>
2153 $$$$=$$$$+1
2154 .IF EQ $$$$-$$$
2155 POP ITEM
2156 .ENDC
2157 .ENDM
2158 $$$=$$$-1
2159 .ENDR
2160 .ENDM
2161 .ENDM
2162 ;
2163 ; BITS IN T.HCBC WORD IN THREAD BLOCK
2164 ;
2165 100000 TB.DON= BIT15 ;THREAD BLOCK DONE *** MUST BE SIGN BIT ***
2166 040000 TB.ABO= BIT14 ;ABORTED BLOCK
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 20-1
COMMON PARAMETERS AND MACROS
2167 020000 TB.EOF= BIT13 ;BLOCK REPRESENTS EOF
2168 010000 TB.LPC= BIT12 ;LOAD PAGE COUNTER FUNCTION
2169 004000 TB.RMD= BIT11 ;TRANSLATION RAM DATA
2170 002000 TB.VFD= BIT10 ;VFU DATA
2171 036000 TB.SFN= TB.EOF!TB.LPC!TB.RMD!TB.VFD ;SPECIAL FUNCTIONS
2172 ;
2173 ; QUEUE I/O -- THREAD BLOCK VALUES
2174 ;
2175 000004 PBTHRD= 4 ;R.PB+4 IS START OF THREAD BLOCK
2176 ;
2177 177774 T.HEMA= 0-PBTHRD ;(BYTE) EXTENDED MEMORY ADDRESS BITS 4 & 5
2178 177775 T.HVFC= 1-PBTHRD ;(BYTE) VERTICAL FORMAT CONTROL CHARACTER
2179 177776 T.HIBC= 2-PBTHRD ;(WORD) INITIAL BYTE COUNT
2180 ;
2181 ;
2182 ; STUFF THAT SHOULD BE GLOBAL, BUT MACY11 DOESN'T LIKE COMPLEX GLOBALS
2183 ;
2184 000377 LOBYTE= 377
2185 177400 HIBYTE= ^C<LOBYTE>
2186 ;
2187 ;
2188 000074 .CYLTM=^D60
2189 .MACRO .INH4
2190 MOV @#PS,-(SP)
2191 MOVB #PR4,@#PS
2192 .ENDM
2193 .MACRO .ENB4
2194 MOV (SP)+,@#PS
2195 .ENDM
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 21
LP-20 DEVICE REGISTER DEFINITIONS
2197 .SBTTL LP-20 DEVICE REGISTER DEFINITIONS
2198 ;
2199 ;
2200 ; LP-20 DEVICE REGISTER DEFINITIONS
2201 ;
2202 ; *** NOTE THAT ALL OFFSETS AND ADDRESSES ARE RELATIVE TO LPCSRA ***
2203 ;
2204 ;LPEXPA==175400 ;EXTERNAL PAGE ADDRESS OF LPCSRA
2205 ;LPEXPZ==20 ;SIZE OF EXTERNAL PAGE ADDRESSES IN BYTES
2206 ;
2207 000000 LPCSRA==0 ;CONTROL AND STATUS REGISTER A
2208 100000 ERR= BIT15
2209 040000 PAGZRO= BIT14
2210 020000 CHRINT= BIT13
2211 010000 VFURDY= BIT12
2212 004000 ONLINE= BIT11
2213 002000 DELHLD= BIT10
2214 001000 RSTERR= BIT9
2215 000400 LOINIT= BIT8
2216 ;
2217 000200 DONE= BIT7
2218 000100 INTENB= BIT6
2219 000040 BUSA17= BIT5
2220 000020 BUSA16= BIT4
2221 000010 MODE01= BIT3
2222 000004 MODE00= BIT2
2223 000001 TSTMOD= 1
2224 000002 VFULOD= 2
2225 000003 RAMLOD= 3
2226 000002 PARENB= BIT1
2227 000001 GO= BIT0
2228 ;
2229 000002 LPCSRB==2 ;CONTROL AND STATUS REGISTER B
2230 ; BITS 15-13 NOT USED
2231 010000 LPTPBT= BIT12
2232 004000 OPTVFU= BIT11
2233 002000 TEST02= BIT10
2234 001000 TEST01= BIT9
2235 000400 TEST00= BIT8
2236 ;
2237 000200 OFFLIN= BIT7
2238 000100 VFUERR= BIT6
2239 000040 LPTPAR= BIT5
2240 000020 MEMPAR= BIT4
2241 000010 RAMPAR= BIT3
2242 000004 SYNTIM= BIT2
2243 000002 DEMTIM= BIT1
2244 000001 GOERR= BIT0
2245 ;
2246 000004 LPBSAD==4 ;BUS ADDRESS REGISTER
2247 ;
2248 000006 LPBCTR==6 ;BYTE COUNT (2'S COMPLEMENT)
2249 ; BITS 15-12 NOT USED
2250 ; 11-0 BYTE COUNT
2251 ;
2252 000010 LPPCTR==10 ;PAGE COUNTER
2253 ; BITS 15-12 NOT USED
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 21-1
LP-20 DEVICE REGISTER DEFINITIONS
2254 ; 11-0 PAGE COUNT
2255 ;
2256 000012 LPRAMD==12 ;RAM DATA REGISTER
2257 ; BITS 15-13 NOT USED
2258 ; 12 RAM PARITY
2259 ; 11-0 RAM DATA
2260 ;
2261 000014 LPCBUF==14 ;(BYTE) CHARACTER BUFFER REGISTER
2262 000015 LPCCTR==15 ;(BYTE) COLUMN COUNT REGISTER
2263 ;
2264 000016 LPTDAT==16 ;(BYTE) PRINTER DATA REGISTER
2265 000017 LPCKSM==17 ;(BYTE) CHECKSUM REGISTER
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 22
COMMON DEVICE PARAMETER MODULE
2267 .SBTTL COMMON DEVICE PARAMETER MODULE
2268 ;
2269 ; COPYRIGHT (C) 1975, 1978 BY
2270 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
2271 ;
2272 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
2273 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
2274 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
2275 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
2276 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
2277 ;
2278 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
2279 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
2280 ; CORPORATION.
2281 ;
2282 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
2283 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
2284 ;
2285 ;
2286 ; MODULE: COMMON DEVICE PARAMETERS
2287 ;
2288 ; VERSION: 01-00
2289 ;
2290 ; AUTHOR: TOM PORCHER
2291 ;
2292 ; DATE: 25-AUG-75
2293 ;
2294 ;
2295 ; THIS MODULE CONTAINS:
2296 ;
2297 ; 1) DEVICE STATUS BIT DEFINITIONS
2298 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 23
DEVICE STATUS BIT DEFINITIONS
2300 .SBTTL DEVICE STATUS BIT DEFINITIONS
2301 ;
2302 ; GENERAL FORM OF STATUS BLOCK
2303 ;
2304 ; WORD 0 STANDARD STAUS BITS (DV.XXX)
2305 ; 1 DEVICE-DEPENDENT BITS (DD.XXX)
2306 ; 2 (HIGH BYTE) # BYTES OF DEVICE-DEPENDENT INFO TO FOLLOW
2307 ; (LOW BYTE) # BYTES OF DEVICE REGISTERS TO FOLLOW
2308 ; 3-... DEVICE DEPENDENT INFO (# BYTES IN WORD 2)
2309 ; .-... DEVICE REGISTERS (# BYTES IN WORD 2)
2310 ;
2311 ;
2312 ; STANDARD BITS (FIRST WORD OF STATUS)
2313 ;
2314 000001 DV.NXD= BIT0 ;NON-EX DEVICE
2315 000002 DV.OFL= BIT1 ;OFF-LINE
2316 000004 DV.OIR= BIT2 ;HARDWARE ERROR. OPERATOR INTERVENTION REQUIRED.
2317 000010 DV.SCN= BIT3 ;SOFTWARE CONDITON. ACKNOWLEDGE REQUIRED.
2318 000020 DV.IOP= BIT4 ;I/O IN PROGRESS
2319 000040 DV.EOF= BIT5 ;END-OF-FILE ENCOUNTERED
2320 000100 DV.LOG= BIT6 ;ERROR LOGGING REQUIRED
2321 000200 DV.URE= BIT7 ;UN-RECOVERABLE ERROR
2322 000400 DV.F11= BIT8 ;ERROR ON FROM -11 REQUEST
2323 001000 DV.HNG= BIT9 ;DEVICE HUNG
2324 ;
2325 ;
2326 ; DEVICE-DEPENDENT BITS (SECOND WORD OF STATUS)
2327 ;
2328 ; LP-20 LINEPRINTER
2329 ;
2330 000001 DD.PGZ= BIT0 ;PAGE COUNTER PASSED ZERO
2331 000002 DD.CHI= BIT1 ;CHARACTER INTERRUPT (FROM RAM)
2332 000004 DD.VFE= BIT2 ;VFU ERROR-- PAPER RE-ALIGNMENT REQUIRED
2333 000010 DD.LER= BIT3 ;ERROR FINDING/READING VF AND RAM FILE
2334 000020 DD.OVF= BIT4 ;PRINTER HAS OPTICAL VFU (AS OPPOSED TO DAVFU)
2335 000040 DD.RME= BIT5 ;RAM PARITY ERROR-- RELOAD REQUIRED
2336 ;
2337 ; DEVICE DEPNDENT INFO FOR LP-20 (2 BYTES):
2338 ; WORD 3 (LOW BYTE) ACCUMULATED CHECKSUM
2339 ; (HIGH BYTE) RETRY COUNT
2340 ;
2341 ; 4-13 LP-20 DEVICE REGISTERS (16. BYTES)
2342 ;
2343 ;
2344 ; CD-11 CARD READER
2345 ;
2346 000001 DD.RCK= BIT0 ;READ (PHOTO) CHECK
2347 000002 DD.PCK= BIT1 ;PICK CHECK
2348 000004 DD.SCK= BIT2 ;STACK CHECK
2349 000010 DD.HEM= BIT3 ;HOPPER EMPTY
2350 000020 DD.SFL= BIT4 ;STACKER FULL
2351 ;
2352 ; DEVICE-DEPENDENT INFO FOR CD-11 (0 BYTES)
2353 ; WORD 3-6 DEVICE REGISTERS FOR CD-11 (8. BYTES)
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 24
LP-20 COMMON DATA MODULE
2355 .SBTTL LP-20 COMMON DATA MODULE
2356 ;
2357 ; COPYRIGHT (C) 1975, 1978 BY
2358 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
2359 ;
2360 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
2361 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
2362 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
2363 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
2364 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
2365 ;
2366 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
2367 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
2368 ; CORPORATION.
2369 ;
2370 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
2371 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
2372 ;
2373 ; MODULE: LP-20 COMMON DATA
2374 ;
2375 ; VERSION: 01-00
2376 ;
2377 ; AUTHOR: TOM PORCHER
2378 ;
2379 ; DATE: 7-JUN-75
2380 ;
2381 ;
2382 ; THIS MODULE CONTAINS:
2383 ;
2384 ; 1) COMMON VARIABLES
2385 ;
2386 ; 2) DEVICE TABLES
2387 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 25
COMMON VARIABLES
2389 .SBTTL COMMON VARIABLES
2390 ;
2391 ; LP DRIVER TASK HEAD
2392 ;
2393 ;
2394 005130 LPHD:: .STKM 0,0,0,0,0,0,0,LPINI,174000,LPSTK
005176 000000 000000 000000 .WORD 0,0,0,0
005204 000000
005224 174000 005520' 005410' .WORD 174000,LPINI,LPSTK
005260 000005 .WORD 5
005262 000000G .WORD TTPEN
005264 000000 .WORD 0
005266 000000 .WORD 0
005270 000000 .WORD 0
005272 000000 .WORD 0
005274 000000 .WORD 0
005276 000000 .WORD 0
005300 000000 .WORD 0
005302 000000 .WORD 0
005304 000000 .WORD 0
005306 000000 .WORD 0
005410 000000 .WORD 0
005412 000000 .WORD 0
005414 000000 .WORD 0
005416 000000 .WORD 0
005420 000000 .WORD 0
005422 000000 .WORD 0
005424 005520' .WORD LPINI
005426 174000 .WORD 174000
2395 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 26
LP-20 DEVICE TABLES
2397 .SBTTL LP-20 DEVICE TABLES
2398
2399 ;
2400 ; LP-20 STATUS BITS
2401 ;
2402 100000 LP.HNG= BIT15 ;LP DID NOT COMPLETE I/O IN 20 SEC
2403 ;SET BY MARK-TIME REQUEST
2404 ;CLEARED BY ..DOLP
2405 040000 LP.SST= BIT14 ;SEND STATUS OF THIS LP TO -10
2406 ;SET BY INTERRUPT SERVICE
2407 ;CHECKED BY TASK
2408 020000 LP.PZI= BIT13 ;PAGE-ZERO INTERRUPT ENABLE
2409 ;SET FROM RAM/VF LOAD FILE
2410 ;CHECKED ON PAGZRO INTERRUPTS
2411 010000 LP.MCH= BIT12 ;MULTI-CHARACTER PRINT OPERATION IN PROGRESS
2412 ; (ARROW MODE). SET ON UNDCHR INTERRUPT,
2413 ; CLEARED WHEN DONE SET.
2414 004000 LP.WAT= BIT11 ;THIS LP IS WAITING FOR A RESPONSE
2415 ; FROM THE -10, DUE TO PAGZRO, ERROR
2416 ; ON SOMETHING LIKE THAT. SET BY INTERRUPT
2417 ; SERVICE, CLEARED BY 'CONTINUE'
2418 ; FUNCTION FROM -10.
2419 002000 LP.CLR= BIT10 ;CLEAR RAM REQUIRED (DUE TO ERROR)
2420 ; SET BY SSTSLP, CHECKED AND CLEARED BY TESTLP
2421 001000 LP.LIP= BIT9 ;LOAD OF VFU AND RAM IN PROGRESS, SET
2422 ; BY START OF LOAD (IN LPIOD) AND CLEARED BY
2423 ; TRANSFER COMPLETE FOR RAM/VFU DATA.
2424 000400 LP.F10= BIT8 ;FROM-10 REQUEST HAS BEEN QUEUED
2425 ; SET BY ..STLP AND SPECIAL FUNCTIONS
2426 ; CLEARED WHEN QUEUE IS EMPTY OR ..SPLP
2427 000200 LP.EOF= BIT7 ;END-OF-FILE. SET BY EOF FUNCTION ENCOUNTERED
2428 ; IN THREADED LIST BY INTERRUPT SERVICE.
2429 ; CHECKED AND CLEARED BY TESTLP WHEN
2430 ; CHECKSUM IS CLEARED.
2431 000003 LP.UNT= BIT1!BIT0 ;(LOW BITS) UNIT # OF THIS LP.
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 27
LP-20 DRIVER TASK MODULE
2433 .SBTTL LP-20 DRIVER TASK MODULE
2434 ;
2435 ; COPYRIGHT (C) 1975, 1978 BY
2436 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
2437 ;
2438 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
2439 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
2440 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
2441 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
2442 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
2443 ;
2444 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
2445 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
2446 ; CORPORATION.
2447 ;
2448 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
2449 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
2450 ;
2451 ; MODULE: LP-20 DRIVER TASK
2452 ;
2453 ; VERSION: 01-01
2454 ;
2455 ; AUTHOR: TOM PORCHER
2456 ;
2457 ; DATE: 4-JUN-75
2458 ;
2459 ;
2460 ; THIS MODULE CONTAINS:
2461 ;
2462 ; 1) LPINI (LP-20 INITIALIZATION)
2463 ;
2464 ; 2) LPLOOP (LP-20 DRIVER TASK LOOP)
2465 ;
2466 ; MODIFICATIONS:
2467 ;
2468 ; NO. DATE PROGRAMMER REASON
2469 ; --- ---- ---------- ------
2470 ; 001 28-FEB-77 A. PECKHAM CHANGE LENGTH OF VFU RECORDS
2471 ; TO 145 FROM 140
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 28
LPINI (INITIALIZE LP-20 TASK)
2473 .SBTTL LPINI (INITIALIZE LP-20 TASK)
2474 ;
2475 ;+
2476 ;
2477 ; THIS IS THE LP-20 USER-LEVEL TASK. IT HANDLES QIO
2478 ; REQUESTS, OUTPUT ACKNOWLEDGEMNETS, AND HUNG-CHECKING.
2479 ;
2480 ; LPINI IS CALLED WHEN THE TASK IS STARTED. IT RESETS THE
2481 ; LP-20 AND LOADS THE STANDARD VERTICAL FORMAT AND TRANSLATION
2482 ; RAM. THE 10-SECOND MARK-TIME REQUEST IS ALSO ENTERED.
2483 ;
2484 ;-
2485 ;
2486 ;
2487 ; DIRECTIVE PARAMETER BLOCKS
2488 ;
2489 005430 LPMRKT:
2490 005430 MRKT$ E.FLPC,10.*.CYLTM,10.*.CYLTM ;MARK-TIME REQUEST FOR 10 SECONDS
005430 027 005 .BYTE 23.,5
005432 000002 .WORD E.FLPC
005434 001130 .WORD 10.*.CYLTM
005436 001130 .WORD 10.*.CYLTM
005440 000000 .WORD
2491 005442 MKSCDP:
2492 005442 MRKT$ E.FLPW,.CYLTM,0 ;WAIT FOR 1 SECOND
005442 027 005 .BYTE 23.,5
005444 000006 .WORD E.FLPW
005446 000074 .WORD .CYLTM
005450 000000 .WORD 0
005452 000000 .WORD
2493 ;
2494 005454 LPSSTV:
2495 005454 005456' .WORD LPTRP4 ;WHERE TO GO ON TRAP-AT-4
2496 ;
2497 ; HERE ON A TRAP TO 4 (HOPEFULLY AN EXPECTED NON-EX LP)
2498 ;
2499 005456 LPTRP4:
2500 005456 021627 007046' CMP (SP),#LPDINT ;THIS FROM MARK-TIME?
2501 005462 001404 BEQ 10$ ;YES-- OK
2502 005464 021627 010476' CMP (SP),#LPDCLR ;HOW ABOUT INIT?
2503 005470 001401 BEQ 10$ ;YES-- OK
2504 005472 000004 IOT ;***** FATAL-- BAD TRAP AT 4
2505 ;
2506 005474 10$:
2507 005474 005062 000000G CLR LPCSA(R2) ;NON-EX LP-- SAY SO
2508 005500 005003 CLR R3 ; BOTH WAYS
2509 005502 052766 000001 000002 BIS #BIT0,2(SP) ;SET CARRY ON STACK
2510 005510 000002 RTI ;RETURN TO INTERRUPTED ROUTINE
2511 ;
2512 ; HERE ON POWER-RECOVERY AST
2513 ;
2514 005512 LPWRUP:
2515 005512 CALL INITLP ;INIT ALL LP'S
005512 004737 010426' JSR PC,INITLP
2516 005516 000002 RTI ;RETURN FROM AST
2517 ;
2518 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 28-1
LPINI (INITIALIZE LP-20 TASK)
2519 ; LPINI -- INITIALIZE LP'S
2520 ;
2521 005520 LPINI:
2522 005520 013737 000000G 000000G MOV .CRTSK,LPEVFG ;SAVE OUR TASK ADDRESS
2523 005526 062737 000020 000000G ADD #A.EF,LPEVFG ;MAKE THAT ADDR OF OUR EVENT FLAGS
2524 005534 052777 000060 000000G BIS #EF.LPW!EF.LPS,@LPEVFG ;SAY STATUS BUFFER AVAILABLE AND NOT WAITING
2525 005542 DIR$ #LPMRKT ;ENTER MARK-TIME REQUEST FOR 10 SECONDS
005542 012746 005430' MOV #LPMRKT,-(SP)
005546 104375 EMT 375
2526 005550 SVTK$S #LPSSTV,#1 ;ENABLE FOR TRAP-AT-4 RECOGNITION
005550 012746 000001 MOV #1,-(SP)
005554 012746 005454' MOV #LPSSTV,-(SP)
005560 012746 MOV (PC)+,-(SP)
005562 071 003 .BYTE 57.,3
005564 104375 EMT 375
2527 005566 SPRA$S #LPWRUP ;SETUP POWER-UP AST
005566 012746 005512' MOV #LPWRUP,-(SP)
005572 012746 MOV (PC)+,-(SP)
005574 155 002 .BYTE 109.,2
005576 104375 EMT 375
2528 005600 CALL INITLP ;INIT ALL THE LP'S
005600 004737 010426' JSR PC,INITLP
2529 ; BR LPLOOP ;FALL INTO NORMAL PROCESSING LOOP
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 29
LPLOOP (LP-20 DRIVER TASK LOOP)
2531 .SBTTL LPLOOP (LP-20 DRIVER TASK LOOP)
2532 ;
2533 ;+
2534 ;
2535 ; LPLOOP WAITS FOR AND DISPATCHES ON THE LP EVENT FLAGS,
2536 ; EF.LPD (INTERRUPT LEVEL I/O DONE), EF.NIR (QUEUE I/O REQUEST),
2537 ; AND EF.LPC (10 SECOND MARK-TIME REQUEST), IN THAT ORDER.
2538 ;
2539 ;-
2540 ;
2541 ;
2542 005604 LPLOOP:
2543 005604 WTLO$S 1,#EF.LPC!EF.LPD!EF.NIR ;WAIT FOR CLOCK (10 SECONDS)
005604 012746 000000C MOV #EF.LPC!EF.LPD!EF.NIR,-(SP)
005610 012746 000001 MOV #1,-(SP)
005614 012746 MOV (PC)+,-(SP)
005616 053 003 .BYTE 43.,3
005620 104375 EMT 375
2544 ; OR I/O DONE FROM ISR
2545 ; OR QIO REQUEST TO DO.
2546 005622 .INH ;A FLAG SET-- LOCK OUT LP INTERRUPTS
005622 013746 177776 MOV PS,-(SP)
005626 112737 000340 177776 MOVB #PR7,@#PS ;;
2547 005634 017737 000000G 000000G MOV @LPEVFG,LPCEVF ;GET CURRENT EVENT FLAGS
2548 005642 042777 000000C 000000G BIC #EF.LPC!EF.LPD!EF.NIR,@LPEVFG ;CLEAR THE FLAGS WE WAITED FOR
2549 005650 .ENB ;RETORE IRPS
005650 012637 177776 MOV (SP)+,@#PS ;;
2550 005654 005737 000000G TST .LPPFL ;POWER FAIL?
2551 005660 001404 BEQ 10$ ;NO -- CONTINUE
2552 005662 CALL INITLP
005662 004737 010426' JSR PC,INITLP
2553 005666 005037 000000G CLR .LPPFL
2554 005672 10$:
2555 ;
2556 ; BR LPIOD ;TRY FOR EF.IOD (I/O DONE) FIRST
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 30
LPIOD (LP TASK I/O DONE)
2558 .SBTTL LPIOD (LP TASK I/O DONE)
2559 ;
2560 ;+
2561 ;
2562 ; LPIOD IS DISPATCHED TO WHENEVER THE EVENT FLAG EF.LPD IS SET.
2563 ; THIS IS SET BY THE INTERRUPT SEVICE WHENEVER IT IS DONE WITH A BUFFER
2564 ; OR STATUS INFORMATION IS TO BE SENT TO THE -10 (IE. LP JUST CAME
2565 ; ONLINE).
2566 ;
2567 ; EACH LP'S THREADED OUTPUT LIST IS SCANNED FOR DONE BUFFERS
2568 ; (INDICATED BY T.HCBC NEGATIVE). THESE ARE RETURNED TO THE FREE POOL,
2569 ; AND, IN THE CASE OF QUEUE I/O REQUESTS, ..IODN IS CALLED TO TELL
2570 ; THE REQUESTOR THAT I/O HAS BEEN COMPLETED. IF A QUEUE I/O REQUEST
2571 ; IS STOPPED IN THE MIDDLE OF A TRANSFER BECAUSE OF ERROR, THE
2572 ; ERROR INDICATION IS GIVEN TO ..IODN, AND THE REQUEST IS ABORTED.
2573 ;
2574 ; AFTER THE THREADED LIST SCAN, THE LP STATUS IS SENT TO THE
2575 ; -10 (BY CALLING SSTSLP) IF THE LP.SST FLAG IS SET.
2576 ;
2577 ; IF A BUFFER WAS COMPLETED, AND THERE IS EITHER NONE
2578 ; OR ONE BUFFER TO OUTPUT, A REQUEST TO SEND IS SENT TO THE -10
2579 ; (BY CALLING ..SACK).
2580 ;
2581 ;-
2582 ;
2583 005672 LPIOD:
2584 005672 032737 000001 000000G BIT #EF.LPD,LPCEVF ;I/O DONE?
2585 005700 001504 BEQ 99$ ;NO-- TRY NEXT FLAG IN CHAIN
2586 005702 012702 000000G MOV #LPTBL,R2 ;ADDRESS LPTBL (UNIT 0)
2587 005706 PUSH #L$$P20 ;STACK COUNT OF LP'S TO LOOK AT
005706 012746 000002 MOV #L$$P20,-(SP)
2588 005712 10$:
2589 005712 005005 CLR R5 ;AND INDICATE NO BUFFERS DONE
2590 005714 016203 000000G MOV LPCSA(R2),R3 ;GET THE EXT PAGE ADDR OF THIS LP
2591 ;
2592 ; LOOP THROUGH THREADED LIST FOR THIS LP
2593 ;
2594 005720 20$:
2595 005720 016200 000000G MOV LPTHD(R2),R0 ;GET START OF LIST
2596 005724 001411 BEQ 80$ ;DONE-- GO AWAY
2597 ;
2598 ; LOOK AT THIS THREAD BLOCK TO SEE IF DONE
2599 ;
2600 005726 30$:
2601 005726 005760 000000G TST T.HCBC(R0) ;SEE IF DONE
2602 005732 002471 BLT 40$ ;DONE-- PROCESS
2603 005734 005762 000000G TST LPITH(R2) ;IS I/O IN PROGRESS ON THIS BLOCK?
2604 005740 001003 BNE 80$ ;YES-- WE ARE DONE WITH WHAT IS DONE
2605 ;
2606 ; LP STOPPED ON THIS ACTIVE THREAD BLOCK
2607 ;
2608 005742 032712 001000 BIT #LP.LIP,(R2) ;LOAD IN PROGRESS?
2609 005746 001063 BNE 40$ ;YES-- TERMINATE IT, SINCE I/O STOPPED
2610 ;
2611 ; END OF LIST-- SEE IF WE SHOULD SEND STATUS AND/OR ACK
2612 ;
2613 005750 80$:
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 30-1
LPIOD (LP TASK I/O DONE)
2614 005750 032712 040000 BIT #LP.SST,(R2) ;TIME TO SEND STATUS?
2615 005754 001402 BEQ 81$ ;NO-- HOW BOUT ACK?
2616 005756 CALL SSTSLP ;YES-- SEND STATUS TO -10
005756 004737 007234' JSR PC,SSTSLP
2617 005762 81$:
2618 005762 005700 TST R0 ;ANYTHING LEFT TO DO?
2619 005764 001411 BEQ 84$ ;NO-- SEND ACK
2620 005766 032712 004000 BIT #LP.WAT,(R2) ;ARE WE WAITING FOR RESPONSE?
2621 005772 001026 BNE 86$ ;YES-- DON'T START OUPUT
2622 005774 005762 000000G TST LPITH(R2) ;NO-- IS LP GOING ALREADY?
2623 006000 001023 BNE 86$ ;YES-- LEAVE IT GO
2624 006002 CALL TESTLP ;NO-- SEE IF LP CAN BE STARTED
006002 004737 010236' JSR PC,TESTLP
2625 006006 000420 BR 86$ ;SEE IF ACK NEEDED
2626 ;
2627 ; QUEUE IS EMPTY-- RESET ALL FLAGS
2628 ;
2629 006010 84$:
2630 006010 .INH ;;;MAKE SURE DTE DOESN'T GIVE US SOMETHING
006010 013746 177776 MOV PS,-(SP)
006014 112737 000340 177776 MOVB #PR7,@#PS ;;
2631 006022 016200 000000G MOV LPTHD(R2),R0 ;;;GET THREAD POINTER
2632 006026 001006 BNE 85$ ;;;OOPS-- LET'S GO AWAY, WE GOT SOMETHING
2633 006030 032777 000001 000000G BIT #EF.LPD,@LPEVFG ;;;WILL WE BE BACK AGAIN?
2634 006036 001002 BNE 85$ ;;;YES-- CATCH FLAGS NEXT TIME
2635 006040 042712 115400 BIC #LP.F10!LP.WAT!LP.LIP!LP.MCH!LP.HNG,(R2) ;;;SURELY OFF NOW
2636 006044 85$:
2637 006044 .ENB ;RESTORE INTERRUPTS
006044 012637 177776 MOV (SP)+,@#PS ;;
2638 006050 86$:
2639 006050 005705 TST R5 ;DID WE REMOVE A BUFFER?
2640 006052 001412 BEQ 90$ ;NO-- DON'T SEND ACK
2641 006054 005700 TST R0 ;YES-- ANY LEFT?
2642 006056 001402 BEQ 87$ ;NONE-- SEND ACK
2643 006060 005710 TST @R0 ;IS THIS LAST BUFFER?
2644 006062 001006 BNE 90$ ;NO-- SEND NOTHING
2645 006064 87$:
2646 006064 012700 000000G MOV #LPTBL,R0 ;ADDRESS BASE ADDR OF TABLE FOR ..SACK
2647 006070 012703 000000G MOV #D.CLPT,R3 ;SAY LPT DEVICE CODE
2648 006074 CALL ..SACK ;SEND THE ACK
006074 004737 000000G JSR PC,..SACK
2649 ;
2650 ; DONE WITH LP-- GET ANOTHER
2651 ;
2652 006100 90$:
2653 006100 062702 000000G ADD #LPSIZE,R2 ;BUMP TO NEXT LP IN TABLE
2654 006104 005316 DEC (SP) ;DECREMENT COUNT
2655 006106 003301 BGT 10$ ;BACK FOR MORE
2656 006110 005726 TST (SP)+ ;CLEAN STACK
2657 006112 99$:
2658 006112 000137 006552' JMP LPNIR ;DONE-- TRY NEXT EVENT-FLAG
2659 ;
2660 ; THREAD BLOCK DONE-- REMOVE FROM LIST & DEALLOCATE
2661 ;
2662 006116 40$:
2663 006116 005703 TST R3 ;LP EXIST???
2664 006120 001564 BEQ 49$ ;NO-- GIVE UP
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 30-2
LPIOD (LP TASK I/O DONE)
2665 006122 032712 001000 BIT #LP.LIP,(R2) ;LOAD IN PROGRESS (I.E. NOW COMPLETE)
2666 006126 001424 BEQ 41$ ;NO-- GO ON
2667 ;
2668 006130 042712 001000 BIC #LP.LIP,(R2) ;YES-- NO LONGER SO
2669 006134 042713 000014 BIC #MODE00!MODE01,(R3) ;CLEAR LOAD MODE BITS
2670 006140 PUSH <R0,R3> ;SAVE EPA
006140 010046 MOV R0,-(SP)
006142 010346 MOV R3,-(SP)
2671 006144 016200 000000G MOV LPRMA(R2),R0 ;GET RAM BUFFER ADDR
2672 006150 016201 000000G MOV LPRMZ(R2),R1 ; AND DATA SIZE
2673 006154 012703 000000G MOV #.BGBUF,R3 ;WE GOT IT FROM THE BIG BUFFER
2674 006160 CALL ..DEC2 ;RETURN THE BUFFER
006160 004737 000000G JSR PC,..DEC2
2675 006164 POP <R3,R0> ;RESTORE EPA
006164 012603 MOV (SP)+,R3
006166 012600 MOV (SP)+,R0
2676 006170 005062 000000G CLR LPRMA(R2) ;NO LONGER THERE
2677 006174 005062 000000G CLR LPRMC(R2) ; . .
2678 006200 41$:
2679 006200 016004 000000G MOV T.HCBC(R0),R4 ;GET COMPLETION STATUS
2680 006204 032704 040000 BIT #TB.ABO,R4 ;ABORTED?
2681 006210 001130 BNE 49$ ;YES-- LEAVE NOW
2682 006212 032704 036000 BIT #TB.SFN,R4 ;SPECIAL FUNCTION?
2683 006216 001525 BEQ 49$ ;NO-- GO ON
2684 ;
2685 006220 032704 020000 BIT #TB.EOF,R4 ;EOF?
2686 006224 001430 BEQ 42$ ;NO-- JUST GO ON
2687 006226 016260 000000G 000000G MOV LPRMA(R2),T.HCAD(R0) ;RAM/VFU DATA PRESENT?
2688 006234 001003 BNE 411$ ;YES-- DO RAM/VFU LOAD
2689 006236 052712 040200 BIS #LP.EOF!LP.SST,(R2) ;NO-- NOTE THAT EOF HAS OCCURED
2690 006242 000513 BR 49$ ;THAT'S IT FOR EOF IF NO RAM/VFU DATA
2691 006244 411$:
2692 006244 016260 000000G 000000G MOV LPRMC(R2),T.HCBC(R0) ;SET BYTE COUNT= LAST ADDRESS
2693 006252 166060 000000G 000000G SUB T.HCAD(R0),T.HCBC(R0) ;MAKE IT A BYTE COUNT
2694 006260 052712 001000 BIS #LP.LIP,(R2) ;NOTE LOAD NOW IN PRGRESS
2695 006264 052713 000010 BIS #VFULOD*MODE00,(R3) ;ASSUME VFU LOAD
2696 006270 026227 000000G 001000 CMP LPRMZ(R2),#1000 ;TRNASLATION RAM DATA?
2697 006276 001224 BNE 80$ ;NO-- MUST BE VFU DATA
2698 006300 052713 000014 BIS #RAMLOD*MODE00,(R3) ;YES-- SET RAM LOAD MODE
2699 006304 000621 BR 80$ ;START LP GOING ON THIS BLOCK
2700 006306 42$:
2701 006306 032704 010000 BIT #TB.LPC,R4 ;LOAD PAGE COUNTER FUNCTION?
2702 006312 001413 BEQ 43$ ;NO-- GO ON
2703 006314 042712 020000 BIC #LP.PZI,(R2) ;ASSUME NO INTERRUPT ENABLE
2704 006320 016001 000000G MOV T.HCAD(R0),R1 ;GET ADDRESS OF FUNCTION DATA
2705 006324 016163 000002 000010 MOV 2(R1),LPPCTR(R3) ;SET PAGE COUNTER
2706 006332 002057 BGE 49$ ;BIT15=0-- NO INTERRUPT
2707 006334 052712 020000 BIS #LP.PZI,(R2) ;BIT15=1-- INTERRUPT ENABLE
2708 006340 000454 BR 49$ ;ALL DONE
2709 006342 43$:
2710 006342 PUSH <R3,R0> ;SAVE THIS THREAD BLOCK ADDRESS
006342 010346 MOV R3,-(SP)
006344 010046 MOV R0,-(SP)
2711 006346 016201 000000G MOV LPRMC(R2),R1 ;GET CURRENT RAM DATA ADDRESS
2712 006352 001026 BNE 46$ ;GOT IT-- PUT THIS DATA IN THAT BUFFER
2713 006354 012700 000000G MOV #.BGBUF,R0 ;POINT TO BIG BUFFER FOR DATA BLOCK
2714 006360 012701 001000 MOV #1000,R1 ;ASSUME TRANSLATION RAM DATA
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 30-3
LPIOD (LP TASK I/O DONE)
2715 006364 032704 004000 BIT #TB.RMD,R4 ;RAM DATA?
2716 006370 001002 BNE 44$ ;YES-- GOT IT
2717 006372 012701 000444 MOV #<^D<145*2>+2+3>&<-4>,R1 ; +++001 NO-- VFU DATA-- GET MAX LENGTH
2718 006376 44$:
2719 006376 CALL ..ALC2 ;GET A BUFFER
006376 004737 000000G JSR PC,..ALC2
2720 006402 103004 BCC 45$ ;GOT IT-- GO ON
2721 006404 WSIG$S ;NO GOT-- WAIT AN INSTANT
006404 012746 MOV (PC)+,-(SP)
006406 061 001 .BYTE 49.,1
006410 104375 EMT 375
2722 006412 000771 BR 44$ ;TRY FOR BUFFER AGAIN
2723 006414 45$:
2724 006414 010162 000000G MOV R1,LPRMZ(R2) ;STORE RAM DATA SIZE
2725 006420 010001 MOV R0,R1 ;COPY THAT BUFFER ADDRESS
2726 006422 010162 000000G MOV R1,LPRMA(R2) ;STORE RAM DATA ADDRESS
2727 006426 011600 MOV (SP),R0 ;RESTORE THREAD BLOCK ADDRESS
2728 006430 46$:
2729 006430 016203 000000G MOV LPRMA(R2),R3 ;COPY ADDRESS WHERE DATA GOES
2730 006434 066203 000000G ADD LPRMZ(R2),R3 ;COMPUTE END OF BUFFER
2731 006440 016000 000000G MOV T.HCAD(R0),R0 ;GET THE RAM DATA ADDRESS
2732 006444 042704 177400 BIC #HIBYTE,R4 ;CLEAR TRASH IN BYTE COUNT
2733 006450 001404 BEQ 48$ ;ALL DONE IF ZERO BYTE COUNT
2734 006452 47$:
2735 006452 020103 CMP R1,R3 ;GOING BEYOND END OF BUFFER?
2736 006454 103002 BHIS 48$ ;YES-- THAT'S ALL THE DATA WE CAN TAKE
2737 006456 112021 MOVB (R0)+,(R1)+ ;STORE A BYTE AWAY
2738 006460 077404 SOB R4,47$ ;LOOP FOR ALL BYTES OF DATA
2739 006462 48$:
2740 006462 POP <R0,R3> ;RESTORE THE THREAD BLOCK POIINTER
006462 012600 MOV (SP)+,R0
006464 012603 MOV (SP)+,R3
2741 006466 010162 000000G MOV R1,LPRMC(R2) ;STORE CURRENT BYTE ADDRESS
2742 006472 49$:
2743 006472 011062 000000G MOV @R0,LPTHD(R2) ;REMOVE THIS BUFFER
2744 006476 016001 000000G MOV T.HBCT(R0),R1 ;GET SIZE OF THIS THREAD BLOCK
2745 006502 001013 BNE 60$ ;NOT QIO-- JUST DEALLOCATE
2746 ;
2747 ; QUEUE I/O REQUEST DONE-- CALL ..IODN
2748 ;
2749 006504 PUSH R3 ;SAVE EPA
006504 010346 MOV R3,-(SP)
2750 006506 110403 MOVB R4,R3 ;GET QUEUE I/O STATUS
2751 006510 016004 177776 MOV T.HIBC(R0),R4 ;GET INITAIL BYTE COUNT AS TRANSFER COUNT
2752 006514 010001 MOV R0,R1 ;COPY THREAD BLOCK ADDRESS
2753 006516 162701 000004G SUB #R.PB+PBTHRD,R1 ;GET ADDRESS OF REAL QUEUE I/O NODE
2754 006522 CALL ..IODN ;SAY I/O DONE
006522 004737 000000G JSR PC,..IODN
2755 006526 POP R3 ;RESTORE EPA
006526 012603 MOV (SP)+,R3
2756 006530 000406 BR 61$ ;ALL DONE
2757 ;
2758 ; ALL DONE WITH THREAD BLOCK-- DEALLOCATE IT
2759 ;
2760 006532 60$:
2761 006532 CALL ..DECB ;DEALLOCATE THE BUFFER
006532 004737 000000G JSR PC,..DECB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 30-4
LPIOD (LP TASK I/O DONE)
2762 006536 032712 000400 BIT #LP.F10,(R2) ;DOES -10 HAVE A REQUEST IN?
2763 006542 001401 BEQ 61$ ;NO-- DON'T FLAG TO ACK
2764 006544 010205 MOV R2,R5 ;NOTE THAT WE DID SOMETHING
2765 006546 61$:
2766 006546 000137 005720' JMP 20$ ;GET NEXT THREAD BLOCK FOR THIS LP
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 31
LPNIR (LP TASK QUEUE I/O REQUEST)
2768 .SBTTL LPNIR (LP TASK QUEUE I/O REQUEST)
2769 ;
2770 ;+
2771 ;
2772 ; LPNIR IS DISPATCHED TO WHENEVER THE EVENT FLAG EF.NIR IS SET.
2773 ; THIS OCCURS WHEN ANOTHER TASK REQUESTS OUTPUT TO ANY LP. ALL LP'S
2774 ; ARE CHECKED FOR A REQUEST WAITING.
2775 ;
2776 ; THE REQUEST IS QUEUED UP IN THE THREADED OUTPUT LIST
2777 ; FOR THIS LP, USING AN EXTENDED THREAD BLOCK. THIS BLOCK IS DISTINGUISHED
2778 ; AS A QUEUE I/O REQUEST BY T.HBCT BEING ZERO (THE LENGTH OF THE BLOCK
2779 ; IS T.HQRS). THE ADDITIONAL INFORMATION IN THIS THREAD BLOCK IS:
2780 ; T.HEMA -- (BYTE) EXTENDED MEMORY ADDRESS BITS (BITS 4 AND 5)
2781 ; T.HVFC -- (BYTE) VERTICAL FORMAT CONTROL CHARACTER
2782 ; T.HIBC -- INITIAL BYTE COUNT
2783 ;
2784 ;-
2785 ;
2786 .ENABLE LSB
2787 006552 LPNIR:
2788 006552 032737 000000G 000000G BIT #EF.NIR,LPCEVF ;A QUEUE I/O REQUEST FOR US?
2789 006560 001514 BEQ 99$ ;NO-- TRY NEXT IN CHAIN
2790 006562 012700 050114 MOV #"LP,R0 ;SAY WE ARE A LP
2791 006566 CALL ..DQRN ;GET A REQUEST
006566 004737 000000G JSR PC,..DQRN
2792 006572 103507 BCS 99$ ;NONE-- DONE
2793 ;
2794 ; GOT QUEUE I/O REQUEST NODE-- ADDR IN R1
2795 ;
2796 ; REGISTERS RETURNED BY ..DQRN
2797 ; R1 -- ADDRESS OF REQUEST NODE
2798 ; R2 -- UNIT # OF REQUESTED DEVICE
2799 ; R3 -- BYTE COUNT OF DATA
2800 ; R4 -- EXTENDED ADDRESS BITS 16 AND 17 (IN BITS 4 AND 5)
2801 ; R5 -- PHYSICAL ADDRESS OF DATA
2802 ;
2803 ; CHECK FOR FUNCTION CODES:
2804 ; IO.WLB OUTPUT BUFFER
2805 ; IO.WVB OUTPUT BUFFER
2806 ; IO.KIL FLUSH OUTPUT (CALL ..SPLP)
2807 ; IO.DAC CLOSE OUTPUT (TYPE <FF>)
2808 ; IO.RVB READ-- ILLEGAL FUNCTION
2809 ; IO.RLB READ-- ILLEGAL FUNCTION
2810 ;
2811 ; ALL OTHER FUNCTIONS ARE IGNORED
2812 ;
2813 006574 006302 ASL R2 ;MAKE UNIT IN WORDS
2814 006576 016202 000000G MOV LPUTBL(R2),R2 ;GET ADDR OF LPTBL ENTRY FOR THIS LP
2815 006602 116100 000001G MOVB R.FC+1(R1),R0 ;GET FUNCTION CODE FROM REQUEST NODE
2816 006606 001430 BEQ 20$ ;EXPRESS FUNCTION-- LOOK AT IT
2817 006610 122700 000001 CMPB #IO.WLB/400,R0 ;WRITE LOGICAL?
2818 006614 001441 BEQ 40$ ;YES-- PRINT
2819 006616 122700 000022 CMPB #IO.WVB/400,R0 ;WRITE VIRTUAL?
2820 006622 001436 BEQ 40$ ;YES-- PRINT ALSO
2821 006624 122700 000002 CMPB #IO.RLB/400,R0 ;READ LOGICAL????
2822 006630 001414 BEQ 15$ ;YES-- ILLEGAL
2823 006632 122700 000021 CMPB #IO.RVB/400,R0 ;READ VIRTUAL????
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 31-1
LPNIR (LP TASK QUEUE I/O REQUEST)
2824 006636 001411 BEQ 15$ ;YES-- ILLEGAL
2825 006640 122700 000020 CMPB #IO.DAC/400,R0 ;CLOSE OUT FILE?
2826 006644 001017 BNE 30$ ;NO-- ASSUME OK, GIVE SUCCESS
2827 ;
2828 ; IO.DAC -- CLOSE OUT FILE, SEND <FF>
2829 ;
2830 006646 012705 007000' MOV #VFCFF,R5 ;SET ADDRESS TO POINT TO FORM-FEED
2831 006652 012703 000001 MOV #1,R3 ;BYTE COUNT= 1
2832 006656 005004 CLR R4 ;NO EMA BITS
2833 006660 000417 BR 40$ ;SEND LIKE QUEUE I/O
2834 ;
2835 ; ILLEGAL FUNCTION
2836 ;
2837 006662 15$:
2838 006662 012703 177776 MOV #IE.IFC,R3 ;SAY ILLEGAL
2839 006666 000410 BR 31$ ;SO SAY IT
2840 ;
2841 ; IO.KIL-- FLUSH OUTPUT
2842 ;
2843 006670 20$:
2844 006670 022761 000012 000000G CMP #IO.KIL,R.FC(R1) ;THIS I/O KILL?
2845 006676 001002 BNE 30$ ;NO-- IGNORE
2846 006700 CALL ..SPLP ;FLUSH OUTPUT
006700 004737 011270' JSR PC,..SPLP
2847 ;
2848 ; IO.ATT, IO.DET-- IGNORE
2849 ;
2850 006704 30$:
2851 006704 012703 000001 MOV #IS.SUC,R3 ;SAY 'SUCCESS' TO ..IODN
2852 006710 31$:
2853 006710 005004 CLR R4 ;NO BYTES TRANSFERRED
2854 006712 CALL ..IODN ;RETURN PACKET TO REQUESTOR
006712 004737 000000G JSR PC,..IODN
2855 006716 000715 BR LPNIR ;DONE-- TRY FOR SOME MORE
2856 ;
2857 ; IO.WLB, IO.WVB-- SEND DATA TO LP
2858 ;
2859 ; ENTER THIS REQUEST IN THREADED OUTPUT LIST
2860 ;
2861 006720 40$:
2862 006720 010100 MOV R1,R0 ;COPY NODE ADDRESS
2863 006722 062700 000004G ADD #R.PB+PBTHRD,R0 ;POINT TO THREAD BLOCK AREA OF R.PB
2867 006726 116101 000004G MOVB R.PB+4(R1),R1 ;GET VERTICAL FORMAT CHARACTER
2868 006732 005060 000000G CLR T.HBCT(R0) ;NOTE THAT THIS IS A QIO REQUEST
2869 006736 010560 000000G MOV R5,T.HCAD(R0) ;SAVE PHYSICAL ADDR OF DATA
2870 006742 010360 000000G MOV R3,T.HCBC(R0) ; AND BYTE COUNT OF DATA
2871 006746 110460 177774 MOVB R4,T.HEMA(R0) ; AND EXTENDED MEMORY ADDR BITS
2872 ;
2873 006752 012705 006776' MOV #VFCTBL,R5 ;YES-- POINT TO TABLE OF FORMAT CONTROL CHARACTERS
2874 006756 55$:
2875 006756 112560 177775 MOVB (R5)+,T.HVFC(R0) ;GET THE CHARCTER TO CONTROL
2876 006762 001402 BEQ 60$ ;END OF TABLE-- GIVE UP WITH NOTHING
2877 006764 122501 CMPB (R5)+,R1 ;MATCH THE VFC CHARACTER?
2878 006766 001373 BNE 55$ ;NO-- LOOP UNTIL WE FIND ONE
2879 006770 60$:
2880 006770 CALL ..PTLP ;START LP ON THIS BUFFER, OR QUEUE UP
006770 004737 011522' JSR PC,..PTLP
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 31-2
LPNIR (LP TASK QUEUE I/O REQUEST)
2881 006774 000666 BR LPNIR ;LOOK FOR ANOTHER REQUEST
2882 ;
2883 ; VERTICAL FORMAT CONTROL CHARACTER TABLE FOR QUEUE I/O REQUESTS
2884 ;
2885 006776 VFCTBL:
2886 006776 012 040 .BYTE 12,' ;<SPACE> NEXT LINE
2887 007000 014 061 VFCFF: .BYTE 14,'1 ;"1" NEXT PAGE
2888 007002 015 053 .BYTE 15,'+ ;"+" OVERPRINT
2889 007004 021 060 .BYTE 21,'0 ;"0" DOUBLE SPACE
2890 007006 012 044 .BYTE 12,'$ ;"$" PROMPTING OUTPUT
2891 007010 000 .BYTE 0 ;END OF TABLE
2892 .EVEN
2893 ;
2894 ;
2895 007012 99$:
2896 ; BR LPMKT ;NEXT IS MARK-TIME REQUESTS
2897 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 32
LPMKT (LP TASK MARK-TIME REQUEST)
2899 .SBTTL LPMKT (LP TASK MARK-TIME REQUEST)
2900 ;
2901 ;+
2902 ; LPMKT IS DISPATCHED TO WHEN THE EF.LPC EVENT FLAG IS SET.
2903 ; THIS OCCURS EVERY 10. SECONDS. EACH LP IS CHECKED TO SEE IF LP.HNG
2904 ; BIT HAS BEEN CLEARED BY ..DOLP (I/O COMPLETION) IF IT IS NOT
2905 ; IDLE. IF LP.HNG IS SET, NO I/O HAS OCCURED IN 10 SECONDS, SO
2906 ; 'GO' IS SET IN LPCSRA TO CONTINUE THE LP. LPHUNG IS INCREMENTED.
2907 ; IN ANY CASE, IF THE LP IS NOT IDLE, LP.HNG IS SET SO IT CAN BE
2908 ; CHECKED IN ANOTHER 10 SECONDS.
2909 ;
2910 ;-
2911 ;
2912 .ENABLE LSB
2913 007012 LPMKT:
2914 007012 032737 000002 000000G BIT #EF.LPC,LPCEVF ;IS MARK-TIME EVENT FLAG SET?
2915 007020 001503 BEQ 99$ ;NO-- CHECK NEXT FLAG
2916 007022 012705 000002 MOV #L$$P20,R5 ;SET UP # LP'S TO CHECK
2917 007026 012702 000000G MOV #LPTBL,R2 ;ADDRESS DATA BLOCK FOR UNIT 0
2918 007032 10$:
2919 007032 016203 000000G MOV LPCSA(R2),R3 ;GET EXTERNAL PAGE ADDR
2920 007036 001407 BEQ 12$ ;NON-EX LP-- SKIP THIS
2921 007040 000241 CLC ;CLEAR CARRY, IN CASE OF TRAP
2922 007042 032713 000100 BIT #INTENB,(R3) ;IS INTERRUPT-ENABLE STILL SET?
2923 007046 LPDINT:
2924 007046 103403 BCS 12$ ;TIME-OUT-- JUST SEND STATUS
2925 007050 001002 BNE 12$ ;YES-- DON'T SET IT
2926 007052 052713 000100 BIS #INTENB,(R3) ;MAKE SURE WE STILL HAVE INTERRUPT ENABLE
2927 007056 12$:
2928 007056 032712 004000 BIT #LP.WAT,(R2) ;WAITING?
2929 007062 001047 BNE 30$ ;YES-- DON7T TRY TO CONTINUE
2930 007064 005762 000000G TST LPTHD(R2) ;ANY ACTIVE REQUESTS?
2931 007070 001453 BEQ 90$ ;NONE-- LP IS IDLE
2932 007072 032712 100000 BIT #LP.HNG,(R2) ;NO I/O IN 10 SEC?
2933 007076 001446 BEQ 80$ ;NO-- I/O CLEARED THIS BIT-- OK
2934 007100 005762 000000G TST LPITH(R2) ;IS I/O SUPPOSED TO BE IN PROGRSS?
2935 007104 001436 BEQ 30$ ;NO-- SEE IF WE JUST CAME ON-LINE
2936 007106 005703 TST R3 ;DEVICE EXIST?
2937 007110 001434 BEQ 30$ ;NON-EX LP-- FLUSH OUTPUT
2938 007112 005237 000000G INC LPHUNG ;COUNT # TIMES WE HAD TO START LP G9OING
2939 007116 005362 000000G DEC LPRTY(R2) ;ONE LESS TIME TO TRY
2940 007122 002427 BLT 30$ ;NONE LEFT-- GIVE UP
2941 007124 .INH4 ;;;LOCK OUT LP INTERRUPTS
007124 013746 177776 MOV @#PS,-(SP)
007130 112737 000200 177776 MOVB #PR4,@#PS
2942 007136 105062 000000G CLRB LPCSM+0(R2) ;;;CLEAR LOW BYTE SO NO CARRY
2943 007142 066362 000016 000000G ADD LPCKSM-1(R3),LPCSM(R2) ;;;ACCUMULATE CHECKSUM (CLEARED BY GO)
2944 007150 005763 000006 TST LPBCTR(R3) ;;;DONE (BYTE COUNT=0)?
2945 007154 001403 BEQ 20$ ;;;YES-- DO NEXT BUFFER
2946 007156 052713 000103 BIS #INTENB+PARENB+GO,(R3) ;;;NO-- JUST SET INT ENB AND GO
2947 007162 000404 BR 29$ ;;;DO ANOTHER LP
2948 ;
2949 007164 20$:
2950 007164 016200 000000G MOV LPITH(R2),R0 ;;;GET CURRENT BUFFER ADDRESS
2951 007170 CALL ..DOL1 ;;;DONE-- DO NEXT BUFFER
007170 004737 011650' JSR PC,..DOL1
2952 007174 29$:
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 32-1
LPMKT (LP TASK MARK-TIME REQUEST)
2953 007174 .ENB4 ;ALLOW LP INTERRUPTS
007174 012637 177776 MOV (SP)+,@#PS
2954 007200 000405 BR 80$ ;DONE WITH LP
2955 ;
2956 007202 30$:
2957 007202 052712 040000 BIS #LP.SST,(R2) ;TIME TO SEND STATUS!!
2958 007206 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;YES-- START IT UP AGAIN
2959 007214 80$:
2960 007214 052712 100000 BIS #LP.HNG,(R2) ;SAY LP NO I/O
2961 ; THIS WILL BE CLEARED WHENEVER
2962 ; ANY I/O IS DONE TO LP
2963 007220 90$:
2964 007220 062702 000000G ADD #LPSIZE,R2 ;BUMP TO NEXT LP IN LPTBL
2965 007224 005305 DEC R5 ;TRY ALL
2966 007226 003301 BGT 10$ ; LP'S
2967 007230 99$:
2968 007230 000137 005604' JMP LPLOOP ;GO BACK TO WAITING
2969 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 33
SSTSLP (SEND LP-20 STATUS TO -10)
2971 .SBTTL SSTSLP (SEND LP-20 STATUS TO -10)
2972 ;
2973 ;+
2974 ;
2975 ; SSTSLP IS CALLED TO SEND THE LP-20 STATUS TO THE -10.
2976 ; IT IS INVOKED BY BOTH A REQUEST FOR STATUS FROM THE -10
2977 ; AND ANY LP-20 ERROR INDICATION, AS WELL AS PAGE COUNT ZERO
2978 ; (IF ENABLED) AND UNDEFINED CHARACTERS IN THE RAM.
2979 ;
2980 ; TWO DEVICE-STSTUS WORDS ARE GENERATED,
2981 ; WITH THE STANDARD BITS (DV.XXX) IN THE FIRST WORD, AND THE
2982 ; FOLLOWING DEVICE-DEPENDENT BITS IN THE SECOND WORD:
2983 ;
2984 ; DD.PGZ PAGE COUNTER REACHED ZERO
2985 ; DD.CHI UNDEFINED CHARACTER IN RAM
2986 ; DD.VFE VFU ERROR (IMPLIES PAPER RE-ALIGNMENT REQUIRED)
2987 ; DD.LER ERROR FINDING/READING VFU AND RAM FILE
2988 ; DD.OVF OPTICAL VERTICAL FORMAT UNIT
2989 ; DD.RME RAM PARITY ERROR-- RELOAD REQUIRED
2990 ;
2991 ; THE STATUS BLOCK SENT TO THE -10 IS IN THE FOLLOWING FORMAT:
2992 ;
2993 ; WORD 0 STATUS WORD 0 (DV.XXX)
2994 ; 1 STATUS WORD 1 (DD.XXX)
2995 ; 2 (HIGH BYTE) # BYTES OF DEVICE DEPENDENT INFO (ALWAYS 2.)
2996 ; (LOW BYTE) # BYTES OF DEVICE REGISTERS (ALWAYS 16.)
2997 ; 3 (LOW BYTE) ACCUMULATED CHECKSUM (HIGH BYTE) RETRY COUNT
2998 ; LP-20 DEVICE REGISTERS
2999 ; 4 LPCSRA
3000 ; 5 LPCSRB
3001 ; 6 LPBSAD
3002 ; 7 LPBCTR
3003 ; 10 LPPCTR
3004 ; 11 LPRAMD
3005 ; 12 LPCBUF/LPCCTR
3006 ; 13 LPTDAT/LPCKSM
3007 ;
3008 ; CALLED AT TASK LEVEL
3009 ;
3010 ; CALLING SEQUENCE:
3011 ; R2 -- POINTER TO LPTBL ENTRY FOR THIS LP
3012 ; R3 -- EXTERNAL PAGE ADDRESS FOR THIS LP
3013 ;
3014 ; EXIT CONDITIONS:
3015 ;
3016 ; NO REGISTERS MODIFIED
3017 ;
3018 ;-
3019 ;
3020 .ENABLE LSB
3021 007234 SSTSLP:
3022 007234 SAVE <R0,R1,R3,R4> ;SAVE USED CARS
007234 010046 MOV R0,-(SP)
007236 010146 MOV R1,-(SP)
007240 010346 MOV R3,-(SP)
007242 010446 MOV R4,-(SP)
3023 007244 042712 040000 BIC #LP.SST,(R2) ;CLEAR 'SEND STATUS' FLAG
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 33-1
SSTSLP (SEND LP-20 STATUS TO -10)
3024 007250 032777 000020 000000G 4$: BIT #EF.LPS,@LPEVFG ;IS OUR BUFFER AVAILABLE?
3025 007256 001007 BNE 5$ ;YES-- DON'T WAIT
3026 007260 WSIG$S ;NO-- WAIT FOR IT
007260 012746 MOV (PC)+,-(SP)
007262 061 001 .BYTE 49.,1
007264 104375 EMT 375
3027 007266 032737 000000G 000002G BIT #EF.PR1,.COMEF+2 ;IS PRIMARY PROTOCOL RUNNING ?
3028 007274 001365 BNE 4$ ;YES-- STILL BUSY...
3029 007276 5$:
3030 007276 012700 000004G MOV #LPSTBK+4,R0 ;GET ADDRES OF BYTE COUNT WORD
3031 007302 005010 CLR (R0) ;CLEAR IT (ASSUME NON-EX DEV)
3032 007304 005040 CLR -(R0) ; AND SECOND WORD OF STATUS
3033 007306 005040 CLR -(R0) ;AND FIRST WORD, WITH R0 POINTING TO IT
3034 007310 005001 CLR R1 ;CLEAR ERROR MESSAGE POINTER, TOO
3035 007312 005703 TST R3 ;GOT A EPA?
3036 007314 001005 BNE 10$ ;GOT IT-- CHECK OUT LP STATUS
3037 007316 052710 000007 BIS #DV.NXD!DV.OIR!DV.OFL,(R0) ;NON-EX LP-- SAY SO
3038 007322 012701 007767' MOV #ERMNXD,R1 ;PRINT ERROR ON CONSOLE, TOO
3039 007326 000537 BR 50$ ;GO SEND THE ERROR
3040 ;
3041 007330 10$:
3042 007330 032712 000200 BIT #LP.EOF,(R2) ;THIS AN EOF ENCOUNTERED?
3043 007334 001402 BEQ 11$ ;NO-- GO ON
3044 007336 052710 000040 BIS #DV.EOF,(R0) ;YES-- SAY SO
3045 007342 11$:
3046 007342 032713 004000 BIT #ONLINE,(R3) ;LP OFF-LINE?
3047 007346 001004 BNE 12$ ;NO-- GO ON
3048 007350 052710 000006 BIS #DV.OFL!DV.OIR,(R0) ;YES-- SAY OFF-LINE
3049 007354 012701 010007' MOV #ERMOFL,R1 ; AND TO CONSOLE
3050 007360 12$:
3051 007360 032713 010000 BIT #VFURDY,(R3) ;VFU NOT READY?
3052 007364 001007 BNE 13$ ;NO-- OK
3053 007366 052760 000004 000002 BIS #DD.VFE,2(R0) ;YES-- SET SO IN DD WORD
3054 007374 012701 010022' MOV #ERMVFE,R1 ;TELL CONSOLE
3055 007400 052712 002000 BIS #LP.CLR,(R2) ;NOTE RAM NEEDS TO BE RESET
3056 007404 13$:
3057 007404 032763 000076 000002 BIT #LPTPAR+MEMPAR+RAMPAR+SYNTIM+DEMTIM,LPCSRB(R3) ;FATAL ERROR?
3058 007412 001404 BEQ 14$ ;NO-- ALL OK
3059 007414 052710 000100 BIS #DV.LOG,(R0) ;YES-- SAY BAD ERROR, AND ERROR-LOG IT
3060 007420 012701 010041' MOV #ERMHER,R1 ;SAY SPLAT TO CONSOLE
3061 007424 14$:
3062 007424 016204 000000G MOV LPTHD(R2),R4 ;IS I/O LEFT TO DO?
3063 007430 001002 BNE 141$ ;YES-- SAY SO
3064 007432 005001 CLR R1 ;NO-- DON'T SEND OFF-LINE/VFE
3065 007434 000436 BR 15$ ;GO ON
3066 ;
3067 007436 141$:
3068 007436 052710 000020 BIS #DV.IOP,(R0) ;SAY I/O IN PROGRESS
3069 007442 005764 000000G TST T.HBCT(R4) ;IS THIS A QUEUE I/O REQUEST?
3070 007446 001002 BNE 142$ ;NO-- GO ON
3071 007450 052710 000400 BIS #DV.F11,(R0) ;YES-- SAY FROM -11
3072 007454 142$:
3073 007454 005762 000000G TST LPRTY(R2) ;IS RETRY COUNT DOWN YET?
3074 007460 002024 BGE 15$ ;NO-- GO ON
3075 007462 052710 000300 BIS #DV.URE!DV.LOG,(R0) ;SAY RETRY COUNT EXHAUSTED
3076 007466 032712 100000 BIT #LP.HNG,(R2) ;WAS DEVICE HUNG, TOO?
3077 007472 001404 BEQ 143$ ;NO-- GO ON
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 33-2
SSTSLP (SEND LP-20 STATUS TO -10)
3078 007474 052710 001004 BIS #DV.HNG!DV.OIR,(R0) ;YES-- SAY THAT TOO
3079 007500 012701 010056' MOV #ERMHNG,R1 ;GET HUNG MESSAGE, TOO
3080 007504 143$:
3081 007504 032763 000010 000002 BIT #RAMPAR,LPCSRB(R3) ;RAM PARITY ERROR?
3082 007512 001405 BEQ 144$ ;NO-- GO ON
3083 007514 052760 000040 000002 BIS #DD.RME,2(R0) ;YES-- NOTE FATAL ERROR
3084 007522 052712 002000 BIS #LP.CLR,(R2) ;NOTE RAM NEEDS TO BE RESET
3085 007526 144$:
3086 007526 CALL ..SPLP ;RETRY COUNT EXHAUSTED-- GIVE UP OUTPUT
007526 004737 011270' JSR PC,..SPLP
3087 007532 15$:
3088 007532 032713 040000 BIT #PAGZRO,(R3) ;PAGE-COUNT ZERO?
3089 007536 001412 BEQ 16$ ;NO-- OK
3090 007540 032712 020000 BIT #LP.PZI,(R2) ;YES-- BUT ENABLED?
3091 007544 001407 BEQ 16$ ;NO-- DON'T TELL HIM
3092 007546 052710 000010 BIS #DV.SCN,(R0) ;TELL -10 WE WANT HIM TO ACK
3093 007552 052760 000001 000002 BIS #DD.PGZ,2(R0) ; FOR PAGE-ZERO
3094 007560 052712 004000 BIS #LP.WAT,(R2) ;REMEMBER TO WAIT
3095 007564 16$:
3096 007564 032713 020000 BIT #CHRINT,(R3) ;UNDEFINED (INTERRUPT) CHARACTER?
3097 007570 001407 BEQ 17$ ;NO-- GO ON
3098 007572 052710 000010 BIS #DV.SCN,(R0) ;NOTE TO WAIT
3099 007576 052760 000002 000002 BIS #DD.CHI,2(R0) ; FOR UNDEF CHAR
3100 007604 052712 004000 BIS #LP.WAT,(R2) ; AND FOR US TO WAIT
3101 007610 17$:
3102 007610 032763 004000 000002 BIT #OPTVFU,LPCSRB(R3) ;THIS LP HAVE OPTICAL VFU?
3103 007616 001403 BEQ 18$ ;NO-- MUST HAVE DAVFU (HOORAY)
3104 007620 052760 000020 000002 BIS #DD.OVF,2(R0) ;YES-- SAY SO
3105 007626 18$:
3106 ;
3107 ; ERROR CODE NOW IN LPSTBK+0 AND LPSTBK+2
3108 ;
3109 007626 50$:
3110 007626 032712 000400 BIT #LP.F10,(R2) ;THIS A FROM-10 REQUEST?
3111 007632 001115 BNE 70$ ;YES-- DON'T PRINT ON CONSOLE
3112 ;
3113 ; NON-10 REQUEST-- SEND CONSOLE A MESSAGE ABOUT OUR STATUS
3114 ;
3115 007634 042712 004000 BIC #LP.WAT,(R2) ;DON'T WAIT FOR NON-10 REQUEST
3116 007640 005701 TST R1 ;TELL OPR?
3117 007642 001511 BEQ 70$ ;NO-- JUST SEND TO -10 ANYWAY
3118 007644 012700 007747' MOV #LPEMSX,R0 ;GET ADDRESS OF END OF MESSAGE SO FAR
3119 007650 51$:
3120 007650 112120 MOVB (R1)+,(R0)+ ;COPY A BYTE OF THE MESSAGE
3121 007652 001376 BNE 51$ ; UNTIL ASCIZZZZZZZZ
3122 007654 162700 007734' SUB #LPEMSG,R0 ;GET LENGTH OF MESSAGE
3123 007660 010037 007730' MOV R0,LPQDPB+Q.IOPL+2 ;SET LENGTH IN QIOW$ DPB
3124 007664 011201 MOV (R2),R1 ;GET UNIT
3125 007666 042701 177774 BIC #^C<LP.UNT>,R1 ; NUMBER OF THIS LP
3126 007672 062701 000060 ADD #'0,R1 ;MAKE IT ASCII
3127 007676 110137 007744' MOVB R1,LPERUN ;SAVE IN MESSAGE STRING
3128 007702 DIR$ #LPQDPB ;DO QUEUE I/O TO CTY
007702 012746 007712' MOV #LPQDPB,-(SP)
007706 104375 EMT 375
3129 007710 000466 BR 70$ ;SEE IF WE CAN CONTINUE
3130 ;
3131 007712 LPQDPB:
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 33-3
SSTSLP (SEND LP-20 STATUS TO -10)
3132 007712 QIOW$ IO.WLB,1,E.FLPQ,1,0,0,<LPEMSG,0,0>
007712 003 011 .BYTE 3,$$$ARG
007714 000400 .WORD IO.WLB
007716 000001 .WORD 1
007720 003 001 .BYTE E.FLPQ,1
007722 000000 .WORD 0
007724 000000 .WORD 0
007726 007734' .WORD LPEMSG
007730 000000 .WORD 0
007732 000000 .WORD 0
3133 007734 LPEMSG:
3134 007734 015 012 052 .ASCII <15><12>/*** LP/
007737 052 052 040
007742 114 120
3135 007744 LPERUN:
3136 007744 060 072 040 .ASCII /0: /
3137 007747 LPEMSX:
3138 007747 .BLKB 16. ;REST OF MESSAGE: MAX OF 16 BYTES
3139 007767 ERMNXD:
3140 007767 116 117 116 .ASCIZ /NON-EX DEVICE/<15><12>
007772 055 105 130
007775 040 104 105
010000 126 111 103
010003 105 015 012
010006 000
3141 010007 ERMOFL:
3142 010007 117 106 106 .ASCIZ /OFF-LINE/<15><12>
010012 055 114 111
010015 116 105 015
010020 012 000
3143 010022 ERMVFE:
3144 010022 106 117 122 .ASCIZ /FORMAT ERROR/<15><12>
010025 115 101 124
010030 040 105 122
010033 122 117 122
010036 015 012 000
3145 010041 ERMHER:
3146 010041 104 101 124 .ASCIZ /DATA ERROR/<15><12>
010044 101 040 105
010047 122 122 117
010052 122 015 012
010055 000
3147 010056 ERMHNG:
3148 010056 110 125 116 .ASCIZ /HUNG/<15><12>
010061 107 015 012
010064 000
3149 .EVEN
3150 ;
3151 ; HERE WE SEND THE STATUS BLOCK TO THE -10, R1= STATE CODE
3152 ;
3153 ;
3154 ; ASSEMBLE DEVICE INFO AND DEVICE REGISTERS
3155 ;
3156 010066 70$:
3157 010066 005703 TST R3 ;NON-EX DEVICE?
3158 010070 001417 BEQ 72$ ;YES-- DON'T STORE NON-EX DEVICE REGISTERS
3159 010072 012700 000004G MOV #LPSTBK+4,R0 ;POINT TO STATUS RETURN BLOCK
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 33-4
SSTSLP (SEND LP-20 STATUS TO -10)
3160 010076 012720 000000C MOV #<2.*BIT8>+<LPEXPZ*BIT0>,(R0)+ ;2 BYTES INFO, + DEV REG'S
3161 010102 116220 000001G MOVB LPCSM+1(R2),(R0)+ ;CHECKSUM
3162 010106 012701 000012 MOV #LPRTRY,R1 ;GET INITIAL RETRY COUNT
3163 010112 166201 000000G SUB LPRTY(R2),R1 ; - CURRENT COUNT= # RETRIES
3164 010116 110120 MOVB R1,(R0)+ ;HIGH BYTE-- # RETRIES
3165 010120 71$:
3166 010120 012320 MOV (R3)+,(R0)+ ;(2) ... LP DEVICE REGISTERS
3167 010122 022700 000000C CMP #LPSTBK+LPSTLN,R0 ;DONE YET?
3168 010126 101374 BHI 71$ ;NO-- KEEP ON LOOPING
3169 ;
3170 ; SET UP REGISTERS FOR ..STIN:
3171 ; R0 -- ADDRESS OF BLOCK (FIRST WORD IS UNIT/BYTE COUNT)
3172 ; R1 -- FUNCTION CODE + BIT15 (FOR INDIRECT FUNCTION)
3173 ; R2 -- EVENT FLAG NUMBER TO BE SET WHEN BLOCK SENT
3174 ; R3 -- DEVICE CODE (D.CLPT FOR THE LP-20)
3175 ;
3176 010130 72$:
3177 010130 012700 000000G MOV #LPSTBK,R0 ;SET UP ADDR FOR ..STIN
3178 010134 011201 MOV (R2),R1 ;GET UNIT NUMBER
3179 010136 042701 177774 BIC #^C<LP.UNT>,R1 ; FROM LPSTS
3180 010142 110140 MOVB R1,-(R0) ;HIGH BYTE HEADER: UNIT #
3181 010144 112740 000002G MOVB #LPSTLN+2,-(R0) ;LOW BYTE HEADER: SIZE OF BLOCK
3182 010150 012701 100000G MOV #BIT15+BC.HDS,R1 ;INDIRECT FUNCTION HERE IS DEVICE STATUS
3183 010154 PUSH R2 ;SAVE LPTBL POINTER
010154 010246 MOV R2,-(SP)
3184 010156 012702 000005 MOV #E.FLPS,R2 ;EVENT FLAG NUMBER
3185 010162 012703 000000G MOV #D.CLPT,R3 ;DEVICE LP
3186 010166 042777 000020 000000G BIC #EF.LPS,@LPEVFG ;CLEAR BUFFER AVAILABLE FLAG
3187 010174 CALL ..STIN ;SAVE FOR NOW
010174 004737 000000G JSR PC,..STIN
3188 010200 POP R2 ;RESTORE LPTBL POINTER
010200 012602 MOV (SP)+,R2
3189 010202 103010 BCC 80$ ;FINISH UP
3190 ;
3191 ; ..STIN GAVE ERROR-- MUST SEND STATUS AGAIN LATER
3192 ;
3193 010204 75$:
3194 010204 052777 000020 000000G BIS #EF.LPS,@LPEVFG ;NOTE BUFFER STILL REALLY AVAILABLE
3195 010212 032712 000400 BIT #LP.F10,(R2) ;THIS A FROM-10 REQUEST
3196 010216 001402 BEQ 80$ ;NO-- IGNORE THE ERROR
3197 010220 052712 040000 BIS #LP.SST,(R2) ;YES-- SEND STATUS AGAIN LATER
3198 ;
3199 ; FINISH UP
3200 ;
3201 010224 80$:
3202 010224 RESTORE ; AND REGISTERS
010224 012604 MOV (SP)+,R4
010226 012603 MOV (SP)+,R3
010230 012601 MOV (SP)+,R1
010232 012600 MOV (SP)+,R0
3203 010234 RETURN ;RETURN FROM SSTSLP
010234 000207 RTS PC
3204 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 34
TESTLP (START LP-20 GOING ON THREADED LIST)
3206 .SBTTL TESTLP (START LP-20 GOING ON THREADED LIST)
3207 ;
3208 ;+
3209 ; TESTLP IS CALLED TO START THE LP-20 ON A THREADED LIST.
3210 ; THE THREAD MUST BE SET UP, WITH THE POINTER BOTH IN R0 AND LPTHD.
3211 ;
3212 ; CALLED FROM TASK LEVEL
3213 ;
3214 ; CALLING SEQUENCE:
3215 ; R0 -- THREAD POINTER (ALSO IN LPTHD)
3216 ; R2 -- LPTBL ENTRY FOR THIS LP
3217 ;
3218 ; EXIT CONDITIONS:
3219 ; R0 -- CURRENT OUTPUT THREAD POINTER
3220 ; R3 -- EXTERNAL PAGE ADDRESS OF THIS LP
3221 ;
3222 ;-
3223 ;
3224 010236 TESTLP:
3225 010236 032713 004000 BIT #ONLINE,(R3) ;OFF-LINE?
3226 010242 001470 BEQ 90$ ;YES-- DO NOTHING
3227 ;
3228 010244 032777 000040 000000G BIT #EF.LPW,@LPEVFG ;SHOULD WE WAIT FOR LP-20?
3229 010252 001011 BNE 10$ ;NO-- GO ON
3230 ;
3231 ; MUST WAIT FOR 1-SEC FOR LP-20 TO SETTLE AFTER DOING AN ABORT TRANSFER
3232 ;
3233 010254 DIR$ #MKSCDP ;SET MARK TIME REQUEST
010254 012746 005442' MOV #MKSCDP,-(SP)
010260 104375 EMT 375
3234 010262 103405 BCS 10$ ;OH, WELL ...
3235 010264 WTSE$S #E.FLPW ;WAIT FOR THE FLAG
010264 012746 000006 MOV #E.FLPW,-(SP)
010270 012746 MOV (PC)+,-(SP)
010272 051 002 .BYTE 41.,2
010274 104375 EMT 375
3236 010276 10$:
3237 010276 032712 002000 BIT #LP.CLR,(R2) ;TIME TO CLEAR THE RAM?
3238 010302 001414 BEQ 30$ ;NO-- JUST GO ON
3239 010304 042712 002000 BIC #LP.CLR,(R2) ;RESET THE FLAG
3240 010310 032712 001000 BIT #LP.LIP,(R2) ;BUT RAM LOAD NOW IN PROGRESS??
3241 010314 001007 BNE 30$ ;YES-- DON'T GO RESET IT
3242 ;
3243 ; RAM MUST BE CLEARED, SINCE WE GOT A RAMPAR/VFU ERROR
3244 ;
3245 010316 105063 000014 CLRB LPCBUF(R3) ;CLEAR RAM ADDRESS REGISTER
3246 010322 20$:
3247 010322 005063 000012 CLR LPRAMD(R3) ;CLEAR A RAM WORD
3248 010326 105263 000014 INCB LPCBUF(R3) ;BUMP TO NEXT RAM ADDRESS
3249 010332 001373 BNE 20$ ;NOT DONE-- GO ON TO NEXT WORD
3250 ;
3251 ; TIME TO START LP GOING
3252 ;
3253 010334 30$:
3254 010334 032712 000200 BIT #LP.EOF,(R2) ;WE AT EOF TIME?
3255 010340 001404 BEQ 32$ ;NO-- GO ON
3256 010342 042712 000200 BIC #LP.EOF,(R2) ;YES-- NO LONGER EOF
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 34-1
TESTLP (START LP-20 GOING ON THREADED LIST)
3257 010346 005062 000000G CLR LPCSM(R2) ;RESET CHECKSUM AT EOF
3258 010352 32$:
3259 010352 032713 040000 BIT #PAGZRO,(R3) ;PAGZRO SET?
3260 010356 001403 BEQ 34$ ;NO-- GO ON
3261 010360 016363 000010 000010 MOV LPPCTR(R3),LPPCTR(R3) ;YES-- RESET PAGZRO
3262 010366 34$:
3263 010366 005713 TST (R3) ;ERROR SET?
3264 010370 100002 BPL 40$ ;NO-- GO ON
3265 010372 052713 001102 BIS #RSTERR+INTENB+PARENB,(R3) ;YES-- RESET IT
3266 010376 40$:
3267 010376 PUSH R0 ;SAVE THREAD POINTER
010376 010046 MOV R0,-(SP)
3268 010400 .INH4 ;;; PREVENT LP INTERRUPTS
010400 013746 177776 MOV @#PS,-(SP)
010404 112737 000200 177776 MOVB #PR4,@#PS
3269 010412 CALL ..DOLP ;;;START LP GOING ON THE LIST
010412 004737 011664' JSR PC,..DOLP
3270 010416 .ENB4 ;;;DONE
010416 012637 177776 MOV (SP)+,@#PS
3271 010422 POP R0 ;RESTORE LPTHD POINTER
010422 012600 MOV (SP)+,R0
3272 ;
3273 ; ALL DONE
3274 ;
3275 010424 90$:
3276 010424 RETURN ;RETURN FROM TESTLP
010424 000207 RTS PC
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 35
INITLP (INITALIZE ALL LP'S)
3278 .SBTTL INITLP (INITALIZE ALL LP'S)
3279 ;
3280 ;+
3281 ; INITLP IS CALLED DURING INITIALIZATION AND ALSO ON POWER
3282 ; RECOVERY.
3283 ;
3284 ; EACH LP IS RESET, AND LP.LDF IS SET TO LOAD THE CURRENT RAM
3285 ; AND VF. LPCSA IS CLEARED FOR NON-EX LP'S
3286 ;
3287 ;-
3288 ;
3289 .ENABLE LSB
3290 010426 INITLP::
3291 010426 SAVE <R2,R3,R5> ;SAVE OUR PRECIOUS REGISTERS
010426 010246 MOV R2,-(SP)
010430 010346 MOV R3,-(SP)
010432 010546 MOV R5,-(SP)
3292 010434 012705 000002 MOV #L$$P20,R5 ;GET # LP'S WE HAVE
3293 010440 012702 000000G MOV #LPTBL,R2 ;ADDRESS LPTBL ENTRY FOR UNIT 0
3294 010444 10$:
3295 010444 011203 MOV (R2),R3 ;GET THE
3296 010446 042703 177774 BIC #^C<LP.UNT>,R3 ; UNIT #
3297 010452 006303 ASL R3 ; *2
3298 010454 006303 ASL R3 ; *4
3299 010456 006303 ASL R3 ; *8
3300 010460 006303 ASL R3 ; *16 BYTES PER UNIT
3301 010462 062703 000000G ADD #LPEXPA,R3 ;GET EXTERNAL PAGE ADDRESS FOR THIS LP
3302 010466 010362 000000G MOV R3,LPCSA(R2) ;SAVE THIS ADDRESS
3303 010472 012713 001102 MOV #RSTERR+INTENB+PARENB,(R3) ;CLEAR LP
3304 010476 LPDCLR:
3305 010476 005062 000000G CLR LPITH(R2) ;CLEAR INT-LEVEL POINTER TO THREADED LIST
3306 010502 90$:
3307 010502 062702 000000G ADD #LPSIZE,R2 ;BUMP TO NEXT LP'S ENTRY
3308 010506 077522 SOB R5,10$ ;LOOP FOR ALL LP'S
3309
3310 010510 052777 000002 000000G BIS #EF.LPC,@LPEVFG ;FORCE A HUNG CHECK NOW
3311 010516 RESTORE ; THE REGISTERS TO THEIR RIGHTFUL (PITIFUL) CONDITION
010516 012605 MOV (SP)+,R5
010520 012603 MOV (SP)+,R3
010522 012602 MOV (SP)+,R2
3312 010524 RETURN ;RETURN FROM INITLP
010524 000207 RTS PC
3313 ;
3314 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 36
LP-20 INTERRUPT SERVICE MODULE
3316 .SBTTL LP-20 INTERRUPT SERVICE MODULE
3317 ;
3318 ; COPYRIGHT (C) 1975, 1978 BY
3319 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
3320 ;
3321 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
3322 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
3323 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
3324 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
3325 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
3326 ;
3327 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
3328 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
3329 ; CORPORATION.
3330 ;
3331 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
3332 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
3333 ;
3334 ; MODULE: LP-20 INTERRUPT SERVICE
3335 ;
3336 ; VERSION: 01-00
3337 ;
3338 ; AUTHOR: TOM PORCHER
3339 ;
3340 ; DATE: 6-JUN-75
3341 ;
3342 ;
3343 ; THIS MODULE CONTAINS:
3344 ;
3345 ; 1) $LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
3346 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 37
$LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
3348 .SBTTL $LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
3349 ;
3350 ;+
3351 ;
3352 ; $LPINT IS CALLED FROM THE INTERRUPT VECTOR FOR
3353 ; ANY OF THE LP-20'S. THE UNIT NUMBER IS SAVED IN THE LOW-ORDER
3354 ; BITS (THE CC'S) OF THE PS IN THE TRAP VECTOR.
3355 ;
3356 ; WHEN A DONE INTERRUPT OCCURS, THE NEXT BUFFER IS STARTED,
3357 ; UNLESS THIS IS A MULTI-CHARACTER OPERATION (IE. 'ARROW' MODE), IN
3358 ; WHICH CASE THE CURRENT BUFFER IS CONTINUED.
3359 ;
3360 ; IF CHRINT (UNDEFINED CHARACTER -- INT BIT SET IN RAM) OCCURS,
3361 ; THE RAM DATA IS EXAMINED. IF IT IS '^', THE CHARACTER + 100,
3362 ; PRECEDED BY '^', IS PRINTED, ELSE OUTPUT IS
3363 ; STOPPED AND THE STATUS SENT TO THE -10 (INTERRUPT).
3364 ;
3365 ; IF PAGZRO (PAGE COUNT REACHED ZERO) OCCURS AND THE LP.PZI
3366 ; (PAGE ZERO INTERRUPT) FLAG IN LPSTS (SET BY RAM/VF LOAD FILE) IS
3367 ; SET, OUTPUT IS STOPPED AND THE STATUS IS SENT TO THE -10. OTHERWISE,
3368 ; OUTPUT IS MERELY RESUMED AND PAGZRO IGNORED.
3369 ;
3370 ; IF THE LP COMES ON-LINE, WHILE WAITING FOR OFF-LINE,
3371 ; OUTPUT IS RESUMED, AND THE NEW STATUS IS SENT TO THE -10.
3372 ;
3373 ;-
3374 ;
3375 010526 $LPINT::
3376 010526 013737 177776 000000G MOV @#PS,LPUNIT ;;;SAVE UNIT #
3377 010534 SAVE <R0,R2,R3> ;;;SAVE REGISTERS
010534 010046 MOV R0,-(SP)
010536 010246 MOV R2,-(SP)
010540 010346 MOV R3,-(SP)
3378 010542 013702 000000G MOV LPUNIT,R2 ;;;GET UNIT # BACK
3379 010546 006302 ASL R2 ;;;MAKE IT WORDS
3380 010550 042702 177774 BIC #^C<LP.UNT>,R2 ;;;CLEAR GARBAGE BITS
3381 010554 016202 000000G MOV LPUTBL(R2),R2 ;;;GET ADDR OF DEVICE STATUS BLOCK FOR THIS LP
3382 010560 016203 000000G MOV LPCSA(R2),R3 ;;;GET EXT PAGE ADDR FOR CURRENT LP
3383 010564 016200 000000G MOV LPITH(R2),R0 ;;;GET CURRENT THREAD BLOCK ADDR
3384 010570 001517 BEQ 80$ ;;;IDLE-- JUST SEND DEVICE STATUS
3385 ;
3386 ; LP NOT IDLE-- SEE IF ERROR, PAGZRO, CHRINT, OR DONE
3387 ;
3388 010572 105062 000000G CLRB LPCSM+0(R2) ;;;INSURE NO CARRY
3389 010576 066362 000016 000000G ADD LPCKSM-1(R3),LPCSM(R2) ;;;ACCUMULATE CHECKSUM
3390 010604 032713 160000 BIT #ERR+PAGZRO+CHRINT,(R3) ;;;ERROR, PAGZRO, OR CHRINT?
3391 010610 001014 BNE 30$ ;;;YES-- STOP I/O AND PROCESS
3392 010612 005763 000006 TST LPBCTR(R3) ;;;DONE (BYTE COUNT=0)?
3393 010616 001003 BNE 20$ ;;;NO-- JUST KEEP IT GOING
3394 010620 CALL ..DOL1 ;;;YES-- START NEXT BUFFER
010620 004737 011650' JSR PC,..DOL1
3395 010624 000510 BR 90$ ;;;EXIT FROM IRP
3396 ;
3397 010626 20$:
3398 010626 005362 000000G DEC LPRTY(R2) ;;;DECREMENT RETRY COUNT
3399 010632 002403 BLT 30$ ;;;RAN OUT-- CHECK FOR A BIT SET, OR ASSUME ERROR
3400 010634 052713 000103 BIS #INTENB+PARENB+GO,(R3) ;;;MAKE SURE LP IS STILL GO-ING
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 37-1
$LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
3401 010640 000502 BR 90$ ;;;AND EXIT
3402 ;
3403 ; ERROR, PAGZRO, OR CHRINT-- SAVE BYTE COUNT AND ADDRESS
3404 ; STOP I/O AND WAIT FOR CONTINUE
3405 ;
3406 010642 30$:
3407 010642 032712 010000 BIT #LP.MCH,(R2) ;;;MULTI-CHAR PRINT OPERATION?
3408 010646 001044 BNE 40$ ;;;YES-- DON'T SAVE BYTE COUNT AND ADDRESS
3409 010650 005463 000006 NEG LPBCTR(R3) ;;;GET # BYTES LEFT TO TRANSMIT
3410 010654 016360 000006 000000G MOV LPBCTR(R3),T.HCBC(R0) ;;; INTO THREAD BLOCK TO CONTINUE
3411 010662 016360 000004 000000G MOV LPBSAD(R3),T.HCAD(R0) ;;;ALSO CURRENT ADDRESS
3412 010670 032713 020000 BIT #CHRINT,(R3) ;;;THIS CHRINT INTERRUPT?
3413 010674 001431 BEQ 40$ ;;;NO-- SEE IF PAGZRO
3414 010676 PUSH R2 ;;;SAVE THE ADDRESS OF LPTBL
010676 010246 MOV R2,-(SP)
3415 010700 062702 000000G ADD #LPMCB,R2 ;;;POINT TO THE MULTI-CHAR BUFFER
3416 010704 010263 000004 MOV R2,LPBSAD(R3) ;;;POINT THE LP20 TO THAT BUFFER
3417 010710 116312 000012 MOVB LPRAMD+0(R3),(R2) ;;;GET RAM DATA CHARACTER
3418 010714 122722 000136 CMPB #'^,(R2)+ ;;;ARROW MODE?
3419 010720 001015 BNE 39$ ;;;NO-- INTERRUPT -10
3420 010722 116312 000014 MOVB LPCBUF(R3),(R2) ;;;YES-- GET THE CAUSING CHARACTER
3421 010726 152712 000100 BISB #100,(R2) ;;;MAKE IT ALPHABETIC
3422 010732 POP R2 ;;;RESTORE LPTBL
010732 012602 MOV (SP)+,R2
3423 010734 052712 010000 BIS #LP.MCH,(R2) ;;;SAY WE ARE DOING MULTI-CHARACTER
3424 010740 012763 177776 000006 MOV #-2,LPBCTR(R3) ;;;SET BYTE COUNT TO TWO CHARACTERS
3425 010746 012713 000103 MOV #PARENB+INTENB+GO,(R3) ;;;START IT GOING ON THESE TWO CHARS
3426 010752 000435 BR 90$ ;;;WAIT FOR DONE
3427 ;
3428 010754 39$: POP R2 ;;;INTERRUPT-- RESTORE LPTBL POINTER
010754 012602 MOV (SP)+,R2
3429 010756 000422 BR 70$ ;;; AND TELL -10
3430 ;
3431 ; ERROR OR PAGZRO
3432 ;
3433 010760 40$:
3434 010760 032713 040000 BIT #PAGZRO,(R3) ;;;PAGZRO?
3435 010764 001411 BEQ 60$ ;;;NO-- MUST BE ERROR
3436 010766 032712 020000 BIT #LP.PZI,(R2) ;;;YES-- IS PAGE ZERO INTERRUPT ENABLED?
3437 010772 001014 BNE 70$ ;;;YES-- INTERRUPT AND WAIT
3438 010774 016363 000010 000010 MOV LPPCTR(R3),LPPCTR(R3) ;;;NO-- RESET PAGZRO
3439 011002 CALL ..DOLP ;;;NO-- JUST CONTINUE
011002 004737 011664' JSR PC,..DOLP
3440 011006 000417 BR 90$ ;;;DONE WITH PAGZRO
3441 ;
3442 ; ERROR-- DECREMENT RETRY COUNT IF ANYTHING BUT OFF-LINE
3443 ;
3444 011010 60$:
3445 011010 032763 000177 000002 BIT #VFUERR+LPTPAR+MEMPAR+RAMPAR+SYNTIM+DEMTIM+GOERR,LPCSRB(R3)
3446 011016 001402 BEQ 70$ ;;;NO ERRORS-- JUST SEND STATUS
3447 011020 005362 000000G DEC LPRTY(R2) ;;;YES-- DECREMENT RETRY COUNT NOW
3448 ;
3449 ; STOP I/O AND SEND STATUS TO -10
3450 ;
3451 011024 70$:
3452 011024 005062 000000G CLR LPITH(R2) ;;;SAY I/O STOPPED
3453 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 37-2
$LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
3454 ; SEND STATUS TO -10
3455 ;
3456 011030 80$:
3457 011030 052712 040000 BIS #LP.SST,(R2) ;;;SAY SEND STATUS TO TASK
3458 011034 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;;;SAY SOMETHING TO DO
3459 011042 CALL ..DSEV ;;;SAY SIGNIFICANT EVENT
011042 004737 000000G JSR PC,..DSEV
3460 ;
3461 ; ALL DONE WITH INTERRUPT
3462 ;
3463 011046 90$:
3464 011046 RESTORE ;;; SAVED REGISTERS
011046 012603 MOV (SP)+,R3
011050 012602 MOV (SP)+,R2
011052 012600 MOV (SP)+,R0
3465 011054 000137 000000G JMP ..INTX ;;;RETURN FROM LP INTERRUPT
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 38
LP-20 COMMON SUBROUTINES MODULE
3467 .SBTTL LP-20 COMMON SUBROUTINES MODULE
3468 ;
3469 ; COPYRIGHT (C) 1975, 1978 BY
3470 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
3471 ;
3472 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
3473 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
3474 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
3475 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
3476 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
3477 ;
3478 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
3479 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
3480 ; CORPORATION.
3481 ;
3482 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
3483 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
3484 ;
3485 ; MODULE: LP-20 COMMON SUBROUTINES
3486 ;
3487 ; VERSION: 01-00
3488 ;
3489 ; AUTHOR: TOM PORCHER
3490 ;
3491 ; DATE: 7-JUN-75
3492 ;
3493 ;
3494 ; THIS MODULE CONTAINS:
3495 ;
3496 ; 1) ..STLP (START LP-20 OUTPUT)
3497 ;
3498 ; 2) ..SPLP (STOP LP-20 OUTPUT)
3499 ;
3500 ; 3) ..AKLP (ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)
3501 ;
3502 ; 4) ..PTLP (PUT BLOCK IN THREADED OUTPUT LIST)
3503 ;
3504 ; 5) ..DOLP (INITIATE LP-20 TRANSFER)
3505 ;
3506 .SBTTL ..STLP (START LP-20 OUTPUT)
3507 ;
3508 ;+
3509 ;
3510 ; ..STLP IS CALLED ONLY FROM THE QUEUED PROTOCOL
3511 ; TASK TO PERFORM A FUNCTION ON THE SPECIFIED LP. THE
3512 ; FOLLOWING FUNCTIONS ARE RECOGNIZED HERE (FUNCTION CODE
3513 ; IN HIGH BYTE OF T.HCBC OF THREAD BLOCK):
3514 ; BC.STR STRING DATA
3515 ; BC.RDS RETURN DEVICE STATUS
3516 ; BC.HDS HERE IS DEVICE STATUS
3517 ; BC.SDS SPECIAL DEVICE OPERATION, FIRST WORD IS FUNCTION:
3518 ; 1 -- SET PAGE COUNTER
3519 ; BC.LDR LOAD TRANSLATION RAM
3520 ; BC.LDV LOAD VERTICAL FORMAT
3521 ;
3522 ; CALLED FROM TASK LEVEL
3523 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 38-1
..STLP (START LP-20 OUTPUT)
3524 ; CALLING SEQUENCE:
3525 ; R0 -- ADDRESS OF THREAD BLOCK TO PROCESS
3526 ; R2 -- ADDRESS OF LPTBL ENTRY FOR THIS LP
3527 ;
3528 ; EXIT CONDITIONS:
3529 ;
3530 ; NO REGISTERS MODIFIED
3531 ;
3532 ;-
3533 ;
3534 .ENABLE LSB
3535 011060 ..STLP::
3536 011060 SAVE <R1,R3,R4>
011060 010146 MOV R1,-(SP)
011062 010346 MOV R3,-(SP)
011064 010446 MOV R4,-(SP)
3537 011066 022702 000000C CMP #LPTBL+<L$$P20*LPSIZE>,R2 ;THIS ONE OF US?
3538 011072 101434 BLOS 30$ ;NO-- JUST SLIP AWAY
3539 011074 052712 000400 BIS #LP.F10,(R2) ;NOTE THAT THIS IS A FROM-10 REQUEST
3540 011100 116004 000001G MOVB T.HCBC+1(R0),R4 ;GET FUNCTION CODE
3541 011104 105060 000001G CLRB T.HCBC+1(R0) ; AND CLEAR IT
3542 011110 012703 011130' MOV #BCFTAB,R3 ;POINT TO FUNCTION DISPATCH TABLE
3543 011114 10$:
3544 011114 112301 MOVB (R3)+,R1 ;GET A DISPATCH ADDRESS
3545 011116 001413 BEQ BCFILF ;END-- ASSUME RETURN DEVICE STATUS
3546 011120 122304 CMPB (R3)+,R4 ;MATCH FUNCTION?
3547 011122 001374 BNE 10$ ;NO-- LOOP TILL WE FIND FUNCTION
3548 011124 000161 011130' JMP BCFTAB(R1) ;PERFORM FUNCTION
3549 ;
3550 011130 BCFTAB:
3551 011130 124 000G .BYTE BCFSTR-BCFTAB,BC.STR
3552 011132 016 000G .BYTE BCFRDS-BCFTAB,BC.RDS
3553 011134 062 000G .BYTE BCFHDS-BCFTAB,BC.HDS
3554 011136 042 000G .BYTE BCFSDO-BCFTAB,BC.SDS
3555 011140 102 000G .BYTE BCFLDR-BCFTAB,BC.LDR
3556 011142 110 000G .BYTE BCFLDV-BCFTAB,BC.LDV
3557 011144 000 .BYTE 0
3558 .EVEN
3559 ;
3560 ; ILLEGAL FUNCTION
3561 ;
3562 011146 BCFILF:
3563 ; BR BCFRDS ;ILLEGAL FUNCTION-- JUST SEND STATUS FOR NOW
3564 ;
3565 ; RETURN DEVICE STATUS
3566 ;
3567 011146 BCFRDS:
3568 011146 052712 040000 BIS #LP.SST,(R2) ;NOTE TO SEND STATUS NOW
3569 011152 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;TELLL LP TASK TO DO SOMETHING
3570 011160 CALL ..DSEV ;MAKE A SIGNIFICANT EVENT HAPPEN
011160 004737 000000G JSR PC,..DSEV
3571 ;
3572 ; THREAD BLOCK DONE-- DEALLOCATE
3573 ;
3574 011164 30$:
3575 011164 CALL ..DECN ;DEALLOCATE THREAD BLOCK
011164 004737 000000G JSR PC,..DECN
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 38-2
..STLP (START LP-20 OUTPUT)
3576 011170 000433 BR 90$ ;RESTORE AND RETURN
3577 ;
3578 ; SPECIAL DEVICE OPERATION
3579 ;
3580 011172 BCFSDO:
3581 011172 016001 000000G MOV T.HCAD(R0),R1 ;GET DATA ADDRESS
3582 011176 022711 000001 CMP #1,(R1) ;SET PAGE COUNTER?
3583 011202 001361 BNE BCFILF ;NO-- ILLEGAL FUNCTION
3584 011204 012701 010000 MOV #TB.LPC,R1 ;SAY SET PAGE COUNTER
3585 011210 000415 BR 40$ ;QUEUE IT UP
3586 ;
3587 ; HERE IS DEVICE STATUS
3588 ;
3589 011212 BCFHDS:
3590 011212 016001 000000G MOV T.HCAD(R0),R1 ;GET ADDRESS
3591 011216 032711 000040 BIT #DV.EOF,(R1) ;EOF FOR LP?
3592 011222 001751 BEQ BCFILF ;NO-- ILLEGAL STATUS
3593 011224 012701 020000 MOV #TB.EOF,R1 ;YES-- SET FUNCTION
3594 011230 000405 BR 40$ ;SEND IT TO QUEUE
3595 ;
3596 ; TRANSLATION RAM DATA
3597 ;
3598 011232 BCFLDR:
3599 011232 012701 004000 MOV #TB.RMD,R1 ;NOTE RAM DATA
3600 011236 000402 BR 40$ ;SEND TO QUEUE
3601 ;
3602 ; VFU DATA
3603 ;
3604 011240 BCFLDV:
3605 011240 012701 002000 MOV #TB.VFD,R1 ;NOTE RAM DATA
3606 ; BR 40$ ;SEND TO QUEUE
3607 ;
3608 ; SPECIAL QUEUE ENTRY-- MARK BY TB.DON + FLAGS IN T.HCBC OF THREAD BLOCK
3609 ;
3610 011244 40$:
3611 011244 052701 100000 BIS #TB.DON,R1 ;FLAG BLOCK DONE TO INTERRUPT SERVICE
3612 011250 050160 000000G BIS R1,T.HCBC(R0) ;SET SPECIFIED FUNCTION
3613 ; BR BCFSTR ;PUT IN QUEUE
3614 ;
3615 ; QUEUE THREAD BLOCK TO LP-20
3616 ;
3617 011254 BCFSTR:
3618 011254 CALL ..PTLP ;SEND TO LP OR QUEUE UP
011254 004737 011522' JSR PC,..PTLP
3619 ;
3620 ; ALL DONE
3621 ;
3622 011260 90$:
3623 011260 RESTORE ;UN-SAVE REGISTRS
011260 012604 MOV (SP)+,R4
011262 012603 MOV (SP)+,R3
011264 012601 MOV (SP)+,R1
3624 011266 RETURN ; FROM ..STLP
011266 000207 RTS PC
3625 ;
3626 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 39
..SPLP (STOP LP-20 OUTPUT)
3628 .SBTTL ..SPLP (STOP LP-20 OUTPUT)
3629 ;
3630 ;+
3631 ;
3632 ; ..SPLP IS CALLED TO STOP OUTPUT TO THE LP-20 IMMEDIATELY
3633 ; AND RESET THE LP-20. THIS ROUTINE FIRST CLEARS THE LP-20
3634 ; 'GO' BIT (TO STOP OUTPUT), THEN THREADS THROUGH THE OUTPUT LIST
3635 ; AND MARKS THE THREAD BLOCKS AS DONE BY SETTING T.HCBC TO IE.ABO.
3636 ;
3637 ; QUEUE I/O REQUESTS ARE GIVEN THE ERROR RETURN 'IE.ABO'
3638 ; (OPERATION ABORTED) WHEN THE THREAD BLOCKS ARE PROCESSED BY THE TASK.
3639 ;
3640 ; CALLED FROM TASK LEVEL
3641 ;
3642 ; CALLING SEQUENCE:
3643 ; R2 -- POINTER TO LPTBL ENTRY FOR THIS LP
3644 ; CALL ..SPLP
3645 ;
3646 ; EXIT CONDITONS:
3647 ;
3648 ; NO REGISTERS MODIFIED
3649 ;
3650 ;-
3651 ;
3652 011270 ..SPLP::
3653 011270 SAVE <R0,R1,R3> ;SAVE MISC. REGISTERS
011270 010046 MOV R0,-(SP)
011272 010146 MOV R1,-(SP)
011274 010346 MOV R3,-(SP)
3654 011276 022702 000000C CMP #LPTBL+<L$$P20*LPSIZE>,R2 ;THIS ONE OF US?
3655 011302 101453 BLOS 99$ ;NO-- JUST LEAVE
3656 011304 042712 004000 BIC #LP.WAT,(R2) ;NO LONGER WAITING FOR ACK
3657 011310 005762 000000G TST LPRMA(R2) ;RAM DATA LOAD IN PROGRESS??
3658 011314 001402 BEQ 4$ ;NO-- GO ON
3659 011316 052712 001000 BIS #LP.LIP,(R2) ;YES-- FLAG TO REMOVE IT AT LPTASK
3660 011322 4$:
3661 011322 005762 000000G TST LPITH(R2) ;I/O IN PROGRESS?
3662 011326 001403 BEQ 5$ ;NO-- JUST GO ON
3663 011330 042777 000040 000000G BIC #EF.LPW,@LPEVFG ;YES-- MARK TO TIME OUT LP-20 WHEN WE STOP IT
3664 011336 5$:
3665 011336 005062 000000G CLR LPITH(R2) ;CLEAR INTERRUPT LEVEL THREAD PTR
3666 011342 016203 000000G MOV LPCSA(R2),R3 ;GET EXTERNAL PAGE ADDR
3667 011346 001405 BEQ 6$ ;NON-EX LP
3668 011350 012713 001102 MOV #RSTERR+INTENB+PARENB,(R3) ;STOP LP-20
3669 011354 016363 000010 000010 MOV LPPCTR(R3),LPPCTR(R3) ;RESET PAGZRO, TOO
3670 011362 6$:
3671 011362 016201 000000G MOV LPTHD(R2),R1 ;GET POINTER TO CURRENT THREADED LIST
3672 ;
3673 ; LOOP THROUGH THIS LIST AND MARK THE THREAD BLOCKS AS DONE
3674 ;
3675 011366 10$:
3676 011366 010100 MOV R1,R0 ;GET ADDR OF NEXT BLOCK
3677 011370 001413 BEQ 90$ ;THAT'S THE END
3678 011372 011001 MOV @R0,R1 ;GET ADDR OF NEXT NEXT BLOCK
3679 011374 052760 040000 000000G BIS #TB.ABO,T.HCBC(R0) ;MARK BLOCK AS ABORTED
3680 011402 005760 000000G TST T.HCBC(R0) ;THIS THREAD BLOCK ALREADY DONE?
3681 011406 002767 BLT 10$ ;YES-- LEAVE IT ALONE
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 39-1
..SPLP (STOP LP-20 OUTPUT)
3682 011410 012760 140361 000000G MOV #TB.DON!TB.ABO!<IE.ABO&LOBYTE>,T.HCBC(R0) ;MARK AS DONE, ABORTED
3683 011416 000763 BR 10$ ;LOOP FOR ALL THINGS IN LIST
3684 ;
3685 ; ALL DONE WITH LIST
3686 ;
3687 011420 90$:
3688 011420 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;SAY I/O DONE TO LP TASK (RATHER... ABORTED)
3689 011426 CALL ..DSEV ;MAKE A SIGNIFICANT EVENT HAPPEN
011426 004737 000000G JSR PC,..DSEV
3690 011432 99$:
3691 011432 RESTORE ;RESTORE SAVE REGISTERS
011432 012603 MOV (SP)+,R3
011434 012601 MOV (SP)+,R1
011436 012600 MOV (SP)+,R0
3692 011440 RETURN ;RETURN FORM ..SPLP
011440 000207 RTS PC
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 40
..AKLP (ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)
3694 .SBTTL ..AKLP (ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)
3695 ;
3696 ;+
3697 ;
3698 ; ..AKLP IS CALLED BY ACKNOWLDGE OUTPUUT REQUEST FROM THE -10.
3699 ; THE LP.WAT FLAG IS CLEARED, AND THE CONDITION FLAGS CHRINT, PAGZRO
3700 ; ARE RESET. OUTPUT IS RESUMED WHEN LP TASK RUNS.
3701 ;
3702 ; CALLED AT TASK LEVEL
3703 ;
3704 ; CALLING SEQUENCE:
3705 ; R2 -- POINTER TO LPTBL ENTRY FOR THIS LP
3706 ;
3707 ; EXIT CONDITIONS:
3708 ;
3709 ; NO REGISTERS MODIFIED
3710 ;
3711 ;-
3712 ;
3713 011442 ..AKLP::
3714 011442 SAVE <R3> ;SAVE USED R'S
011442 010346 MOV R3,-(SP)
3715 011444 022702 000000C CMP #LPTBL+<L$$P20*LPSIZE>,R2 ;THIS AN LP???
3716 011450 101422 BLOS 90$ ;NO-- JUST LEAVE
3717 011452 042712 004000 BIC #LP.WAT,(R2) ;NO LONGER WAITING
3718 011456 005762 000000G TST LPITH(R2) ;LP GOING?
3719 011462 001015 BNE 90$ ;YES-- JUST GO AWAY
3720 011464 016203 000000G MOV LPCSA(R2),R3 ;GET EXT PAGE ADDR OF THIS LP
3721 011470 001405 BEQ 10$ ;NON-EX LP-- JUST GO AWAY
3722 011472 016363 000010 000010 MOV LPPCTR(R3),LPPCTR(R3) ;RESET PAGZRO
3723 011500 042713 020000 BIC #CHRINT,(R3) ; AND CHRINT
3724 011504 10$:
3725 011504 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;START LP TASK
3726 011512 CALL ..DSEV ; . .
011512 004737 000000G JSR PC,..DSEV
3727 011516 90$:
3728 011516 RESTORE ; USED R'S
011516 012603 MOV (SP)+,R3
3729 011520 RETURN ; FROM ..AKLP
011520 000207 RTS PC
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 41
..PTLP (PUT BLOCK IN THREADED OUTPUT LIST)
3731 .SBTTL ..PTLP (PUT BLOCK IN THREADED OUTPUT LIST)
3732 ;
3733 ;+
3734 ;
3735 ; ..PTLP IS CALLED TO SEND A BUFFER TO THE LP-20. THE
3736 ; BUFFER IS EITHER OUTPUT IMMEDIATELY OR, IF THE LP IS NOT IDLE,
3737 ; ADDED TO THE END OF THIS LP'S THREADED OUTPUT LIST.
3738 ;
3739 ; CALLED FROM TASK LEVEL
3740 ;
3741 ; CALLING SEQUENCE:
3742 ; R0 -- ADDRESS OF THREAD BLOCK FOR THIS BUFFER
3743 ; R2 -- POINTER TO LPTBL FOR THIS LP
3744 ; CALL ..PTLP
3745 ;
3746 ; EXIT CONDITIONS:
3747 ;
3748 ; NO REGISTERS MODIFIED
3749 ;
3750 ;-
3751 ;
3752 011522 ..PTLP::
3753 011522 SAVE <R1,R3> ;SAVE USED REGISTERS
011522 010146 MOV R1,-(SP)
011524 010346 MOV R3,-(SP)
3754 011526 005010 CLR @R0 ;MARK END OF LIST
3755 011530 012762 000012 000000G MOV #LPRTRY,LPRTY(R2) ;RESET RETRY COUNTER
3756 011536 016203 000000G MOV LPCSA(R2),R3 ;GET LP EXTERNAL PAGE ADDRESS
3757 011542 001404 BEQ 5$ ;OOPS-- NON-EX LP
3758 011544 032713 004000 BIT #ONLINE,(R3) ;OFF-LINE?
3759 011550 001006 BNE 7$ ;NO-- JUST GO ON
3760 011552 000403 BR 6$ ;OFF-LINE-- SEND STATUS
3761 ;
3762 011554 5$:
3763 011554 012760 100277 000000G MOV #TB.DON!<IE.OFL&LOBYTE>,T.HCBC(R0) ;NON-EX-LP-- MARK AS DONE, ERROR
3764 011562 6$:
3765 011562 052712 040000 BIS #LP.SST,(R2) ;TIME TO RING THE -10
3766 011566 7$:
3767 011566 .INH0 ;;LOCK OUT QUEUE'D PROTOCOL TASK
011566 013746 177776 MOV @#PS,-(SP)
011572 112737 000140 177776 MOVB #140,@#PS
3768 011600 016201 000000G MOV LPTHD(R2),R1 ;;GET CURRENT POINTER TO THREADED LIST
3769 011604 001405 BEQ 20$ ;;NONE-- START LP GOING
3770 ;
3771 ; LP BUSY-- MUST FIND END OF THREADED LIST AND PUT THIS BUFFER THERE
3772 ;
3773 011606 10$:
3774 011606 010103 MOV R1,R3 ;;COPY ADDR OF THREAD BLOCK
3775 011610 011301 MOV @R3,R1 ;;GET NEXT THREAD
3776 011612 001375 BNE 10$ ;;NOT END-- KEEP ON LOOKING
3777 011614 010013 MOV R0,@R3 ;;END-- STORE CURRENT THREAD BLOCK AT END
3778 011616 000407 BR 90$ ;;ALL DONE
3779 ;
3780 ; LP IDLE-- START IT GOING ON THIS BUFFER
3781 ;
3782 011620 20$:
3783 011620 010062 000000G MOV R0,LPTHD(R2) ;;STORE START OF THREAD
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 41-1
..PTLP (PUT BLOCK IN THREADED OUTPUT LIST)
3784 011624 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;;TELL LP TASK TO START LP GOING
3785 011632 CALL ..DSEV ;; WITH A SIGNIFICANT EVENT
011632 004737 000000G JSR PC,..DSEV
3786 ;
3787 ; ALL DONE
3788 ;
3789 011636 90$:
3790 011636 .ENB0 ;RE-ENABLE IRPS
011636 004737 000000G JSR PC,..ENB0
3791 011642 RESTORE ;RESTORE SAVED REGISTERS
011642 012603 MOV (SP)+,R3
011644 012601 MOV (SP)+,R1
3792 011646 RETURN ;RETURN FROM ..PTLP
011646 000207 RTS PC
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 42
..DOLP (INITIATE LP-20 TRANSFER)
3794 .SBTTL ..DOLP (INITIATE LP-20 TRANSFER)
3795 ;
3796 ;+
3797 ;
3798 ; ..DOLP IS CALLED TO START AN LP GOING ON A SPECIFIED BUFFER.
3799 ; THE DEVICE RGISTERS ARE SET UP AND 'GO' IS SET TO START THE TRANSFER.
3800 ;
3801 ; IF THE THREAD SPECIFIED IS ZERO, NOTHING IS DONE AND THE
3802 ; LP IS LEFT IDLE.
3803 ;
3804 ; ENTER AT ..DOL1 TO OUTPUT NEXT BUFFER, UNLESS LP.MCH IS SET,
3805 ; IN WHICH CASE THE CURRENT BUFFER IS OUTPUT. THIS IS USUALLY ONLY
3806 ; CALLED WHEN 'DONE' IS SET.
3807 ;
3808 ; CALLED AT INTERRUPT LEVEL (OR WITH INTERRUPTS DISABLED)
3809 ;
3810 ; CALLING SEQUENCE:
3811 ; R0 -- ADDR OF THREAD BLOCK TO OUTPUT (ZERO IF END)
3812 ; R2 -- ADDR OF LPTBL ENTRY FOR THIS LP
3813 ; R3 -- EXTERNAL PAGE ADDRESS FOR THIS LP
3814 ;
3815 ; EXIT CONDITIONS:
3816 ; R0 -- ADDR OF CURRENT THREAD BLOCK
3817 ;
3818 ; NO OTHER REGISTERS MODIFIED
3819 ;
3820 ;-
3821 ;
3822 .ENABLE LSB
3823 011650 ..DOL1::
3824 011650 032712 001000 BIT #LP.LIP,(R2) ;;;LOAD SUPPOSED TO BE IN PROGRESS?
3825 011654 001020 BNE 19$ ;;;YES-- GO BACK TO TASK
3826 011656 032712 010000 BIT #LP.MCH,(R2) ;;;MULTI-CHARACTER OPERATION?
3827 011662 001417 BEQ 20$ ;;;NO-- GET NEXT BUFFER
3828 ;;;YES-- GET (CONTINUE) CURRENT BUFFER
3829 011664 ..DOLP::
3830 011664 10$:
3831 011664 042712 114000 BIC #LP.WAT!LP.MCH!LP.HNG,(R2) ;;;NOT WAITING, AND NOT MULTI-CHAR-ING
3832 011670 010062 000000G MOV R0,LPITH(R2) ;;;SAVE CURRENT BUFFER AS OUR INT-LEVEL BUFFER
3833 011674 001463 BEQ 90$ ;;;GIVE UP IF END
3834 011676 016063 000000G 000006 MOV T.HCBC(R0),LPBCTR(R3) ;;;SAVE BYTE COUNT FOR LP (WILL NEG LATER)
3835 011704 003020 BGT 50$ ;;;NOT DONE-- START OUTPUT
3836 ;
3837 011706 032760 036000 000000G BIT #TB.SFN,T.HCBC(R0) ;;;SPECIAL FUNCTION?
3838 011714 001402 BEQ 20$ ;;;NO-- JUST SET DONE
3839 011716 19$:
3840 011716 005000 CLR R0 ;;;YES-- DON'T GET NEXT THREAD BLOCK
3841 011720 000404 BR 30$ ;;;AND STOP I/O, REQUEST TASK LEVEL CODE
3842 ;
3843 ; THIS THREAD BLOCK DONE-- MARK IT BY -VE T.HCBC, SET I/O DONE
3844 ; EVENT FLAG, AND START NEXT BUFFER.
3845 ;
3846 011722 20$:
3847 011722 012760 100001 000000G MOV #TB.DON!<IS.SUC&LOBYTE>,T.HCBC(R0) ;;;NOTE SUCCESS HERE
3848 011730 011000 MOV @R0,R0 ;;;GET ADDR OF NEXT BUFFER
3849 ;
3850 ; SET I/O DONE, GO ON TO NEXT THREAD BLOCK (ADDR IN R0)
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1110 15-OCT-79 13:59 PAGE 42-1
..DOLP (INITIATE LP-20 TRANSFER)
3851 ;
3852 011732 30$:
3853 011732 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;;;SET LP I/O DONE EVENT FLAGE
3854 011740 CALL ..DSEV ;;;MAKE A SIGNIFICANT EVENT
011740 004737 000000G JSR PC,..DSEV
3855 011744 000747 BR 10$ ;;;DO NEXT BUFFER
3856 ;
3857 ; SET UP -VE BYTE COUNT AND EXTENDED MEMORY ADDRESS BITS
3858 ;
3859 011746 50$:
3860 011746 016063 000000G 000004 MOV T.HCAD(R0),LPBSAD(R3) ;;;SAVE PHYSICAL ADDR FOR LP
3861 011754 005463 000006 NEG LPBCTR(R3) ;;;MAKE -VE # BYTES TO SEND
3862 011760 042713 000060 BIC #BUSA17+BUSA16,(R3) ;;;CLEAR EXTENDED MEMORY ADDR BITS
3863 011764 005760 000000G TST T.HBCT(R0) ;;;THIS QUEUE I/O REQUEST?
3864 011770 001023 BNE 59$ ;;;NO-- ADDRESS IS IN LOW CORE
3865 011772 116062 177775 000000G MOVB T.HVFC(R0),LPMCB(R2) ;;;SET TO PRINT VERTICAL FORMAT CHARACTER
3866 012000 001415 BEQ 58$ ;;;NONE-- JUST START THE LP
3867 012002 105060 177775 CLRB T.HVFC(R0) ;;;YES-- CLEAR IT NOW
3868 012006 012763 000000G 000004 MOV #LPMCB,LPBSAD(R3) ;;;YES-- POINT TO THE FORMAT CHARACTER
3869 012014 060263 000004 ADD R2,LPBSAD(R3) ;;; FOR THIS LP
3870 012020 012763 177777 000006 MOV #-1,LPBCTR(R3) ;;;ONLY 1 CHARACTER
3871 012026 052712 010000 BIS #LP.MCH,(R2) ;;;NOTE THAT WE ARE WORKING FROM LPMCB
3872 012032 000402 BR 59$ ;;;START THE LP GOING
3873 ;
3874 012034 58$:
3875 012034 156013 177774 BISB T.HEMA(R0),(R3) ;;;SET EXTENDED MEMORY BITS
3876 ;
3877 ; SET INTENB, PARENB, AND GO TO START LP GOING ON THIS BUFFER
3878 ;
3879 012040 59$:
3880 012040 052713 000103 BIS #INTENB+PARENB+GO,(R3) ;;;START LP GOING
3881 ;
3882 ; ALL DONE-- RETURN
3883 ;
3884 012044 90$:
3885 012044 RETURN ;;;RETURN FROM ..DOLP/..DOL1
012044 000207 RTS PC
3886 .DSABLE LSB
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 43
..DOLP (INITIATE LP-20 TRANSFER)
3888 .TITLE CRDRV (CD-11 DRIVER FOR RSX10F)
3889 .SBTTL TITLE PAGE
3890 .IDENT /001000/
3891 ;
3892 ; COPYRIGHT (C) 1975, 1978 BY
3893 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
3894 ;
3895 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
3896 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
3897 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
3898 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
3899 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
3900 ;
3901 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
3902 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
3903 ; CORPORATION.
3904 ;
3905 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
3906 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
3907 ;
3908 ; MODULE: COMMON DEFINITIONS
3909 ;
3910 ; VERSION: 01-00
3911 ;
3912 ; AUTHOR: TOM PORCHER
3913 ;
3914 ; DATE: 25-SEP-75
3915 ;
3916 ;
3917 ; THIS MODULE CONTAINS:
3918 ;
3919 ; 1) COMMON PARAMETERS AND MACROS
3920 ;
3921 ; 2) CD-11 DEVICE REGISTER DEFINITIONS
3922 ;
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 44
COMMON PARAMETERS AND MACROS
3924 .SBTTL COMMON PARAMETERS AND MACROS
3925 ;
3926 ; MISC. MCALLS
3927 ;
3928 .MCALL MRKT$,SPRA$S,SVTK$S,WTLO$S,WTSE$S,WSIG$S
3929 .MCALL DIR$,$DEF,CALL,RETURN,.INH,.ENB,PUSH,POP,.STKM
3930 012046 $DEF
3931 .ENABLE AMA
3932 .LIST MEB
3933 ;
3934 ; PARAMETERS
3935 ;
3936 000001 C$$D11= 1 ;ONLY 1 CD-11
3937 ;
3938 ; EVENT FLAGS
3939 ;
3940 000001 E.FCRC= 1 ;CD-11 MARK-TIME REQUEST
3941 000001 EF.CRC=BIT0
3942 000002 E.FCRD= 2 ;I/O DONE FROM INTERRUPT LEVEL
3943 000002 EF.CRD=BIT1
3944 000003 E.FCRS= 3 ;BUFFER AVAILABLE FOR STATUS
3945 000004 EF.CRS=BIT2
3946 000004 E.FCRB= 4 ;DATA BUFFER AVAILABLE
3947 000010 EF.CRB=BIT3
3948 ;
3949 ;
3950 000074 .CYLTM=60.
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 45
CD-11 DEVICE REGISTER BIT DEFINITIONS
3952 .SBTTL CD-11 DEVICE REGISTER BIT DEFINITIONS
3953 ;
3954 ;
3955 ;CDST== 177160 ;CONTROL/STATUS REGISTER
3956 100000 CDSERR= BIT15
3957 040000 CDSRCK= BIT14
3958 020000 CDSEOF= BIT13
3959 010000 CDSOFL= BIT12
3960 004000 CDSDER= BIT11
3961 002000 CDSDLT= BIT10
3962 001000 CDSNXM= BIT9
3963 000400 CDSPWC= BIT8
3964 000200 CDSRDY= BIT7
3965 000100 CDSIEN= BIT6
3966 000040 CDSB17= BIT5
3967 000020 CDSB16= BIT4
3968 000010 CDSTOL= BIT3
3969 000004 CDSHEM= BIT2
3970 000002 CDSPAK= BIT1
3971 000001 CDSRED= BIT0
3972 ;CDCC== 177162 ;COLUMN COUNT REGISTER
3973 ;CDBA== 177164 ;BUS ADDRESS BITS 15-0
3974 ;CDDB== 177166 ;DATA BUFFER REGISTER
3975 ;AFTER DATA TRANSFERS (CDSRDY= 1):
3976 040000 CDBRCK= BIT14
3977 020000 CDBPCK= BIT13
3978 010000 CDBSCK= BIT12
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 46
CD-11 DRIVER COMMON DATA MODULE
3980 .SBTTL CD-11 DRIVER COMMON DATA MODULE
3981 ;
3982 ; COPYRIGHT (C) 1975, 1978 BY
3983 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
3984 ;
3985 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
3986 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
3987 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
3988 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
3989 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
3990 ;
3991 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
3992 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
3993 ; CORPORATION.
3994 ;
3995 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
3996 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
3997 ;
3998 ; MODULE: CD-11 DRIVER COMMON DATA
3999 ;
4000 ; VERSION: 01-00
4001 ;
4002 ; AUTHOR: TOM PORCHER
4003 ;
4004 ; DATE: 25-AUG-75
4005 ;
4006 ;
4007 ; THIS MODULE CONTAINS:
4008 ;
4009 ; 1) COMMON DATABASE DEFINITIONS
4010 ;
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 47
COMMON DATABASE DEFINITIONS
4012 .SBTTL COMMON DATABASE DEFINITIONS
4013 ;
4014 ;
4015 ; CR TASK STACK HEADER
4016 ;
4017 012046 CRHD:: .STKM 0,0,0,0,0,0,0,CRINI,174000,CRSTK
012114 000000 000000 000000 .WORD 0,0,0,0
012122 000000
012142 174000 012424' 012326' .WORD 174000,CRINI,CRSTK
012176 000005 .WORD 5
012200 000000G .WORD TTPEN
012202 000000 .WORD 0
012204 000000 .WORD 0
012206 000000 .WORD 0
012210 000000 .WORD 0
012212 000000 .WORD 0
012214 000000 .WORD 0
012216 000000 .WORD 0
012220 000000 .WORD 0
012222 000000 .WORD 0
012224 000000 .WORD 0
012326 000000 .WORD 0
012330 000000 .WORD 0
012332 000000 .WORD 0
012334 000000 .WORD 0
012336 000000 .WORD 0
012340 000000 .WORD 0
012342 012424' .WORD CRINI
012344 174000 .WORD 174000
4018 ;
4019 ;STATUS BITS:
4020 100000 CR.HNG= BIT15 ;CR IS HUNG, I.E. NO INPUT HAS OCCURED
4021 ; IN 10 SECONDS. SET AND CHECKED BY
4022 ; MARK-TIME SERVICE, CLEARED BY I/O
4023 ; DONE AT INTERRUPT.
4024 040000 CR.SST= BIT14 ;A CHANGE IN DEVICE STATUS HAS OCCURED,
4025 ; OR THE -10 HAS REQUESTED THE STATUS OF
4026 ; THE CR.
4027 020000 CR.IOP= BIT13 ;I/O IN PROGRESS. SET WHEN READ CARD STARTED,
4028 ; CLEARED WHEN DONE INTERRUPT OCCURS.
4029 010000 CR.IOD= BIT12 ;I/O DONE FROM INTERRUPT LEVEL. SET WHEN A
4030 ; DATA BUFFER IS READY TO BE SENT TO THE -10.
4031 004000 CR.ACK= BIT11 ;ACKNOWLEDGE RECEIVED. READ NEXT CARD.
4032 ; SET WHEN ACK RECEIVED FROM -10 (..AKCR).
4033 002000 CR.RHN= BIT10 ;READER HUNG DURING READ. SET BY MKT ROUTINE
4034 ; TESTED AND CLEARED BY SSTSCR
4035 001000 CR.NXD= BIT9 ;NON-EX CD-11. SET BY INITCR, CHECKED
4036 ; BEFORE TRANSFER STARTED.
4037 000400 CR.NSF= BIT8 ;NOT STACKER FULL. SET WHEN ANY OTHER ERROR
4038 ; CONDITION IS SET.
4039 ;
4040 ; DIRECTIVE PARAMETER BLOCKS
4041 ;
4042 012346 CRMRKT: MRKT$ E.FCRC,10.*.CYLTM,10.*.CYLTM ;MARK-TIME REQUEST FOR 10 SECONDS
012346 027 005 .BYTE 23.,5
012350 000001 .WORD E.FCRC
012352 001130 .WORD 10.*.CYLTM
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 47-1
COMMON DATABASE DEFINITIONS
012354 001130 .WORD 10.*.CYLTM
012356 000000 .WORD
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 48
CD-11 DRIVER TASK MODULE
4044 .SBTTL CD-11 DRIVER TASK MODULE
4045 ;
4046 ; COPYRIGHT (C) 1975, 1978 BY
4047 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
4048 ;
4049 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
4050 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
4051 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
4052 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
4053 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
4054 ;
4055 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
4056 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4057 ; CORPORATION.
4058 ;
4059 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4060 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4061 ;
4062 ; MODULE: CD-11 DRIVER TASK
4063 ;
4064 ; VERSION: 01-00
4065 ;
4066 ; AUTHOR: TOM PORCHER
4067 ;
4068 ; DATE: 25-AUG-75
4069 ;
4070 ;
4071 ; THIS MODULE CONTAINS:
4072 ;
4073 ; 1) TASK LEVEL SERVICE FOR CD-11
4074 ;
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 49
TASK INITIALIZATION
4076 .SBTTL TASK INITIALIZATION
4077 ;
4078 ; SST VECTOR TABLE
4079 ;
4080 012360 012362' CRSSTV: .WORD CRTRP4 ;WHERE TO GO ON TRAP TO 4
4081 ;
4082 ; HERE ON TRAP TO 4, HOPEFULLY JUST NON-EX CR
4083 ;
4084 012362 021627 013074' CRTRP4: CMP (SP),#CRDINT ;FROM MARK-TIME?
4085 012366 001404 BEQ 10$ ;YES-- OK
4086 012370 021627 013626' CMP (SP),#CRDCLR ;OR FROM INIT?
4087 012374 001401 BEQ 10$ ;YES-- ALSO OK
4088 012376 000004 IOT ;***** NO, NOT OUR T04 *****
4089 ;
4090 012400 052737 001000 000000G 10$: BIS #CR.NXD,CRSTS ;SAY NON-EX CR
4091 012406 052766 000001 000002 BIS #BIT0,2(SP) ;SET THE CARRY TO THE SST
4092 012414 000002 RTI ;RETURN TO INTERRPUTED ROUTINE
4093 ;
4094 ; HERE ON POWER-UP AST
4095 ;
4096 012416 CRPWUP: CALL INITCR ;RESET THE CR
012416 004737 013612' JSR PC,INITCR
4097 012422 000002 RTI ;RETURN FROM AST
4098 ;
4099 ; HERE TO START CR TASK
4100 ;
4101 012424 013737 000000G 000000G CRINI: MOV .CRTSK,CREVFG ;GET ADDRESS OF OUR TASK'S ENTRY
4102 012432 062737 000020 000000G ADD #A.EF,CREVFG ;MAKE THAT ADDRESS OF OUR EVENT FLAGS
4103 012440 052777 000014 000000G BIS #EF.CRB!EF.CRS,@CREVFG ;SAY OUR BUFFERS ARE AVAILABLE
4104 012446 DIR$ #CRMRKT ;SETUP FOR 10-SECOND MARK-TIME'S
012446 012746 012346' MOV #CRMRKT,-(SP)
012452 104375 EMT 375
4105 012454 SVTK$S #CRSSTV,#1 ;SETUP FOR TRAP-TO-4 RECOGNITION
012454 012746 000001 MOV #1,-(SP)
012460 012746 012360' MOV #CRSSTV,-(SP)
012464 012746 MOV (PC)+,-(SP)
012466 071 003 .BYTE 57.,3
012470 104375 EMT 375
4106 012472 SPRA$S #CRPWUP ;SETUP FOR POWER-UP AST
012472 012746 012416' MOV #CRPWUP,-(SP)
012476 012746 MOV (PC)+,-(SP)
012500 155 002 .BYTE 109.,2
012502 104375 EMT 375
4107 012504 CALL INITCR ;INITIALIZE CD-11 AND TABLES
012504 004737 013612' JSR PC,INITCR
4108 ; BR CRLOOP ;FALL INTO PROCESSING LOOP
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 50
CRLOOP (MAIN PROCESSING LOOP)
4110 .SBTTL CRLOOP (MAIN PROCESSING LOOP)
4111 ;
4112 ; WAIT FOR EVENT FLAGS EF.CRC (10 SEC MARK-TIME), EF.CRD (I/O DONE).
4113 ;
4114 012510 CRLOOP: WTLO$S 1,#EF.CRC!EF.CRD ;WAIT FOR FLAGS
012510 012746 000003 MOV #EF.CRC!EF.CRD,-(SP)
012514 012746 000001 MOV #1,-(SP)
012520 012746 MOV (PC)+,-(SP)
012522 053 003 .BYTE 43.,3
012524 104375 EMT 375
4115 ;
4116 012526 .INH ;;;A FLAG WAS SET-- LOCK OUT INTERRUPTS
012526 013746 177776 MOV PS,-(SP)
012532 112737 000340 177776 MOVB #PR7,@#PS ;;
4117 012540 017737 000000G 000000G MOV @CREVFG,CRCEVF ;;;GET OUR CURRENT EVENT FLAGS
4118 012546 042777 000003 000000G BIC #EF.CRC!EF.CRD,@CREVFG ;;;CLEAR THE FLAGS WE WAITED FOR
4119 012554 .ENB ;INTERRUPTS: ON!
012554 012637 177776 MOV (SP)+,@#PS ;;
4120 012560 005737 000000G TST .CRPFL ;POWER FAIL?
4121 012564 001404 BEQ 10$ ;NO -- FORGET IT
4122 012566 CALL INITCR ;YES -- INIT CR
012566 004737 013612' JSR PC,INITCR
4123 012572 005037 000000G CLR .CRPFL
4124 012576 10$:
4125 ;
4126 ; SEE IF THIS IS EF.CRD (I/O DONE), AND FIND OUT WHY IT WAS SET.
4127 ;
4128 012576 032737 000002 000000G CRIOD: BIT #EF.CRD,CRCEVF ;THIS EF.CRD?
4129 012604 001517 BEQ 90$ ;NO-- TRY FOR MARK-TIME
4130 ;
4131 ; SEE IF A BUFFER IS READY TO BE SENT TO THE -10 (CR.IOD SET BY INTERRUPT SERVICE)
4132 ;
4133 012606 032737 010000 000000G BIT #CR.IOD,CRSTS ;WE FINISH A TRANSFER?
4134 012614 001430 BEQ 20$ ;NO-- GO ON
4135 012616 012700 000000G MOV #CRBUFF,R0 ;YES-- GET ADDRESS OF BUFFER
4136 ;
4137 ; WE MUST SEND A DATA BUFFER TO THE -10. SET UP FOR ..STIN:
4138 ; R0 -- ADDRESS OF BUFFER. FIRST WORD IS (LOW BYTE) BYTE COUNT
4139 ; OF BUFFER (NOT INCLUDING HEADER WORD), (HIGH BYTE) UNIT #.
4140 ; R1 -- BIT15+ FUNCTION CODE (BC.STR-- STRING DATA)
4141 ; R2 -- EVENT FLAG TO SET WHEN DONE
4142 ; R3 -- DEVICE CODE (D.CCDR)
4143 ;
4144 012622 105040 CLRB -(R0) ;HIGH BYTE HEADER: UNIT # (ALWAYS 0)
4145 012624 112740 000000G MOVB #CRBFLN,-(R0) ;LOW BYTE HEADER: SIZE OF BUFFER
4146 012630 012701 100000G MOV #BIT15+BC.STR,R1 ;FUNCTION CODE: STRING DATA (INDIRECT FLAVOR)
4147 012634 012702 000004 MOV #E.FCRB,R2 ;EVENT FLAG TO SET WHEN DONE
4148 012640 012703 000000G MOV #D.CCDR,R3 ;DEVICE CODE: CDR
4149 012644 042777 000010 000000G BIC #EF.CRB,@CREVFG ;ASSUME SUCCESS
4150 012652 CALL ..STIN ;SEND TO -10
012652 004737 000000G JSR PC,..STIN
4151 012656 103404 BCS 10$ ;GIVE UP-- PRIMARY PROTOCOL (DDT)
4152 012660 042737 112400 000000G BIC #CR.IOD!CR.HNG!CR.RHN!CR.NSF,CRSTS ;OK-- NO LONGER BUFFER TO SEND
4153 012666 000403 BR 20$ ;GO ON
4154 ;
4155 012670 052777 000010 000000G 10$: BIS #EF.CRB,@CREVFG ;..STIN FAILED-- BUFFER STILL AVAILABLE
4156 ;
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 50-1
CRLOOP (MAIN PROCESSING LOOP)
4157 ; SEE IF STATUS IS TO BE SENT TO -10, EITHER BECAUSE OF A CHANGE IN
4158 ; DEVICE STATUS OR A REQUEST FROM THE -10.
4159 ;
4160 012676 032737 040000 000000G 20$: BIT #CR.SST,CRSTS ;TIME TO SEND DEVICE STATUS?
4161 012704 001402 BEQ 30$ ;NO-- GO ON
4162 012706 CALL SSTSCR ;YES-- SEND SUCH TO -10
012706 004737 013204' JSR PC,SSTSCR
4163 ;
4164 ; SEE IF -10 WANTS US TO READ NEXT CARD, BY CR.ACK SET.
4165 ;
4166 012712 032737 004000 000000G 30$: BIT #CR.ACK,CRSTS ;-10 WANT A CARD?
4167 012720 001451 BEQ 90$ ;NO-- ALL DONE
4168 012722 032737 030000 000000G BIT #CR.IOP!CR.IOD,CRSTS ;STILL I/O IN PROGRESS?
4169 012730 001045 BNE 90$ ;YES-- COME BACK LATER WHEN WE ARE DONE
4170 012732 042737 106000 000000G BIC #CR.ACK!CR.HNG!CR.RHN,CRSTS ;YES-- NO LONGER WANTING
4171 012740 032737 001000 000000G BIT #CR.NXD,CRSTS ;THIS NON-EX CD-11?
4172 012746 001017 BNE 32$ ;YES-- JUST SEND STATUS
4173 012750 032777 000010 000000G 34$: BIT #EF.CRB,@CREVFG ;BUFFER AVAILABLE TO US YET?
4174 012756 001007 BNE 31$ ;YES-- ALL OK
4175 012760 WSIG$S ;WAIT FOR SOMETHING TO HAPPEN
012760 012746 MOV (PC)+,-(SP)
012762 061 001 .BYTE 49.,1
012764 104375 EMT 375
4176 012766 032737 000000G 000002G BIT #EF.PR1,.COMEF+2 ;IS PRIMARY PROTOCOL STILL RUNNING ?
4177 012774 001365 BNE 34$ ;YES, SEE IF BUFFER IS NOW FREE.
4178 ;
4179 012776 032737 010000 000000G 31$: BIT #CDSOFL,@#CDST ;CD-11 OFF-LINE?
4180 013004 001403 BEQ 33$ ;NO-- LET'S START TRANSFER
4181 013006 32$: CALL SSTSCR ;YES-- TELL -10
013006 004737 013204' JSR PC,SSTSCR
4182 013012 000414 BR 90$ ; AND GO AWAY FOR NOW
4183 ;
4184 ; START TRNSFER OF CARD TO CRBUFF
4185 ;
4186 013014 052737 020000 000000G 33$: BIS #CR.IOP,CRSTS ;SAY I/O NOW IN PROGRESS
4187 013022 012737 000000C 000000G MOV #-<CRBFLN/2>,@#CDCC ;INDICATE TO READ 80. COLUMNS
4188 013030 012737 000000G 000000G MOV #CRBUFF,@#CDBA ; INTO CRBUFF
4189 013036 012737 000101 000000G MOV #CDSIEN!CDSRED,@#CDST ;START CARD GOING
4190 ;
4191 ; ALL DONE WITH EF.CRD
4192 ;
4193 013044 90$:
4194 ;
4195 ; CHECK FOR MARK-TIME REQUEST (EF.CRC SET), THEN DO HUNG CHECK IF SO.
4196 ;
4197 .ENABLE LSB
4198 013044 032737 000001 000000G CRMKT: BIT #EF.CRC,CRCEVF ;MARK-TIME REQUEST EVENT FLAG SET?
4199 013052 001452 BEQ 90$ ;NO-- GO ON
4200 013054 032737 001000 000000G BIT #CR.NXD,CRSTS ;NON-EX CR?
4201 013062 001011 BNE 9$ ;YES-- SKIP INT-ENB STUFF
4202 013064 000241 CLC ;IN CASE OF TRAP
4203 013066 032737 000100 000000G BIT #CDSIEN,@#CDST ;INT-ENB STILL SET?
4204 013074 103404 CRDINT: BCS 9$ ;NON-EX CR-- GO ON
4205 013076 001003 BNE 9$ ;YES-- SKIP THE SET
4206 013100 052737 000100 000000G BIS #CDSIEN,@#CDST ;YES-- MAKE SURE WE STILL HAVE INT-ENB
4207 013106 032737 074000 000000G 9$: BIT #CR.SST!CR.IOD!CR.ACK!CR.IOP,CRSTS ;YES-- STUFF FOR US TO DO?
4208 013114 001426 BEQ 30$ ;NO-- IDLE-- CLEAR HUNG FLAG
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 50-2
CRLOOP (MAIN PROCESSING LOOP)
4209 013116 032737 100000 000000G BIT #CR.HNG,CRSTS ;WE BEEN HERE WITHIN 10 SECONDS?
4210 013124 001416 BEQ 20$ ;NO-- SET HUNG FLAG SO WE WILL IN 10 SEC
4211 013126 032737 020000 000000G BIT #CR.IOP,CRSTS ;YES-- WAS I/O IN PROGRESS
4212 013134 001407 BEQ 10$ ;NO-- JUST PROCESS OTHER FLAGS
4213 013136 052737 042000 000000G BIS #CR.RHN!CR.SST,CRSTS ;YES-- SAY READER HUNG
4214 013144 005237 000000G INC CRHUNG ;COUNT # TIMES HUNG
4215 013150 CALL INITCR ;RESET THE CD-11
013150 004737 013612' JSR PC,INITCR
4216 ;
4217 013154 052777 000002 000000G 10$: BIS #EF.CRD,@CREVFG ;SAY TO LOOK AT THE FLAGS AGAIN
4218 ;
4219 013162 052737 100000 000000G 20$: BIS #CR.HNG,CRSTS ;FLAG TO CHECK THIS AGAIN IN 10 SECONDS
4220 013170 000403 BR 90$ ;ALL DONE
4221 ;
4222 013172 042737 102000 000000G 30$: BIC #CR.HNG!CR.RHN,CRSTS ;NOTHING TO DO-- DON'T SAY WE ARE HUNG
4223 ;
4224 ; ALL DONE WITH EF.CRC
4225 ;
4226 013200 000137 012510' 90$: JMP CRLOOP ;BACK TO MAIN LOOP
4227 .DSABLE LSB
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 51
SSTSCR (SEND CD-11 STATUS TO -10)
4229 .SBTTL SSTSCR (SEND CD-11 STATUS TO -10)
4230 ;
4231 ;+
4232 ;
4233 ; SSTSCR IS CALLED WHEN CR.SST IS SET, EITHER BY A CHANGE IN HARDWARE
4234 ; STATUS, OR ON REQUEST FROM THE -10.
4235 ;
4236 ; THE STATUS PACKET IS ASSEMBLED INTO CRSTBK. THE FORMAT OF THIS BLOCK
4237 ; IS AS FOLLOWS:
4238 ;
4239 ; WORD 0 STANDARD BITS (DV.XXX)
4240 ; 1 DEVICE DEPENDENT BITS (DD.XXX)
4241 ; 2 (HIGH BYTE) # BYTES OF DEVICE DEPENDENT INFO (ALWAYS 0)
4242 ; (LOW BYTE) # BYTES OF DEVICE REGISTERS (ALWAYS 8.)
4243 ; CD-11 DEVICE REGISTERS
4244 ; 3 CDST
4245 ; 4 CDCC
4246 ; 5 CDBA
4247 ; 6 CDDB
4248 ;
4249 ; THE FOLLOWING BITS ARE USED IN THE STATUS WORDS:
4250 ;
4251 ; DV.NXD NON-EX DEVICE
4252 ; DV.OFL OFF-LINE
4253 ; DV.OIR HARD ERROR (DD.RCK, DD.PCK, DD.SCK)
4254 ; DV.IOP I/O IN PROGRESS (READING A CARD)
4255 ; DV.EOF E-O-F BUTTON PUSHED
4256 ; DV.LOG ERROR LOGGING REQUIRED
4257 ; DV.HNG DEVICE HUNG
4258 ;
4259 ; DD.RCK READ CHECK
4260 ; DD.PCK PICK CHECK
4261 ; DD.SCK STACK CHECK
4262 ; DD.HEM HOPPER EMPTY
4263 ; DD.SFL STACKER FULL
4264 ;
4265 ;-
4266 ;
4267 013204 042737 040000 000000G SSTSCR: BIC #CR.SST,CRSTS ;SAY STATUS SENT ALREADY
4268 013212 032777 000004 000000G 60$: BIT #EF.CRS,@CREVFG ;IS STATUS BUFFER AVAILABLE?
4269 013220 001007 BNE 10$ ;YES-- ASSEMBLE STATUS
4270 013222 WSIG$S ;NO-- WAIT FOR IT TO BE THERE
013222 012746 MOV (PC)+,-(SP)
013224 061 001 .BYTE 49.,1
013226 104375 EMT 375
4271 013230 032737 000000G 000002G BIT #EF.PR1,.COMEF+2 ;IF PRIMARY PROTOCOL IS STILL RUNNING
4272 013236 001365 BNE 60$ ;THEN CHECK IF STILL GOING
4273 ;
4274 ; ASSEMBLE STATUS INTO CRSTBK+0 CRSTBK+2
4275 ;
4276 013240 012700 000004G 10$: MOV #CRSTBK+4,R0 ;GET ADDRESS OF STATUS BLOCK
4277 013244 005010 CLR (R0) ;CLEAR BYTE COUNT WORD(ASSUME NON-EX DEV)
4278 013246 005040 CLR -(R0) ; AND SECOND WORD OF STATUS
4279 013250 010001 MOV R0,R1 ;SAVE ADDR OF SECOND WORD
4280 013252 005040 CLR -(R0) ; AND CLEAR FIRST WORD, R0 POINTS TO IT
4281 ;
4282 013254 032737 001000 000000G BIT #CR.NXD,CRSTS ;NON-EX DEVICE?
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 51-1
SSTSCR (SEND CD-11 STATUS TO -10)
4283 013262 001403 BEQ 101$ ;NO-- GET REAL STATUS
4284 013264 052710 000007 BIS #DV.NXD!DV.OFL!DV.OIR,(R0) ;YES-- SAY NOT THERE
4285 013270 000522 BR 50$ ;SEND THIS STATUS
4286 ;
4287 013272 013703 000000G 101$: MOV @#CDST,R3 ;COPY DEVICE STATUS
4288 013276 032703 010000 BIT #CDSOFL,R3 ;CD-11 OFF-LINE?
4289 013302 001402 BEQ 11$ ;NO-- GO ON
4290 013304 052710 000006 BIS #DV.OFL!DV.OIR,(R0) ;YES-- SAY SO
4291 ;
4292 013310 032737 030000 000000G 11$: BIT #CR.IOP!CR.IOD,CRSTS ;I/O STILL IN PROGRESS?
4293 013316 001402 BEQ 12$ ;NO
4294 013320 052710 000020 BIS #DV.IOP,(R0) ;YES-- SAY SO
4295 ;
4296 013324 032703 020000 12$: BIT #CDSEOF,R3 ;E-O-F BUTTON PUSHED?
4297 013330 001402 BEQ 13$ ;NO-- GO ON
4298 013332 052710 000040 BIS #DV.EOF,(R0) ;YES-- SAY EOF
4299 ;
4300 013336 032737 002000 000000G 13$: BIT #CR.RHN,CRSTS ;READER HUNG?
4301 013344 001402 BEQ 14$ ;NO-- GO ON
4302 013346 052710 001104 BIS #DV.HNG!DV.OIR!DV.LOG,(R0) ;YES-- SAY HUNG
4303 ;
4304 013352 032703 003000 14$: BIT #CDSDLT!CDSNXM,R3 ;FATAL ERROR (DATA LATE, NXM)?
4305 013356 001402 BEQ 15$ ;NO-- GO ON
4306 013360 052710 000300 BIS #DV.URE!DV.LOG,(R0) ;YES-- SAY SO
4307 ;
4308 013364 032703 000200 15$: BIT #CDSRDY,R3 ;BUT IS READER READY?
4309 013370 001451 BEQ 30$ ;NO-- BITS ARE NOT VALID-- GO ON
4310 ;
4311 013372 013704 000000G MOV @#CDDB,R4 ;YES-- GET ERROR BITS TO R4
4312 ;
4313 013376 032704 040000 BIT #CDBRCK,R4 ;READ (PHOTO) CHECK?
4314 013402 001402 BEQ 16$ ;NO
4315 013404 052711 000001 BIS #DD.RCK,(R1) ;YES
4316 ;
4317 013410 032704 020000 16$: BIT #CDBPCK,R4 ;PICK CHECK?
4318 013414 001402 BEQ 17$ ;NO
4319 013416 052711 000002 BIS #DD.PCK,(R1) ;YES
4320 ;
4321 013422 032704 010000 17$: BIT #CDBSCK,R4 ;STACK CHECK?
4322 013426 001402 BEQ 18$ ;NO
4323 013430 052711 000004 BIS #DD.SCK,(R1) ;YES
4324 ;
4325 013434 005711 18$: TST (R1) ;FATAL ERRROR DETECTED?
4326 013436 001402 BEQ 19$ ;NO-- GO ON
4327 013440 052710 000100 BIS #DV.LOG,(R0) ;YES-- SAY ERROR LOGGING NEEDED
4328 ;
4329 013444 032703 000004 19$: BIT #CDSHEM,R3 ;HOPPER EMPTY?
4330 013450 001402 BEQ 20$ ;NO-- GO ON
4331 013452 052711 000010 BIS #DD.HEM,(R1) ;YES
4332 ;
4333 013456 005711 20$: TST (R1) ;ANY ERROR BITS SET?
4334 013460 001012 BNE 21$ ;YES-- NOT STACKER FULL
4335 013462 032703 040000 BIT #CDSRCK,R3 ;IS THIS A READER CHECK?
4336 013466 001412 BEQ 23$ ;NO-- CERTAINLY NOT STACKER FULL
4337 013470 032737 000400 000000G BIT #CR.NSF,CRSTS ;WE DECIDE IT WASN'T STACKER FULL BEFORE?
4338 013476 001006 BNE 23$ ;YES-- CAN'T BE STACKER FULL NOW
4339 013500 052711 000020 BIS #DD.SFL,(R1) ;NO-- READER CHECK & NO ERRORS => STACKER FULL
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 51-2
SSTSCR (SEND CD-11 STATUS TO -10)
4340 013504 000403 BR 22$ ;STACKER-FULL-- GO ON
4341 ;
4342 013506 052737 000400 000000G 21$: BIS #CR.NSF,CRSTS ;FLAG THAT IT CAN'T BE STACKER FULL
4343 013514 22$:
4344 013514 23$:
4345 013514 012703 000000G 30$: MOV #CDST,R3 ;ADDRESS CD CSR
4346 013520 005721 TST (R1)+ ;POINT TO FIRST WORD OF DEVICE REGISTERS IN STATUS BLOCK
4347 013522 012721 000000C MOV #<CDDB+2-CDST>,(R1)+ ;SAVE SIZE OF FOLLOWING BLOCK
4348 013526 012321 31$: MOV (R3)+,(R1)+ ;MOVE A REGISTER
4349 013530 022701 000000C CMP #CRSTBK+CRSTLN,R1 ;MOVED 'EM ALL?
4350 013534 101374 BHI 31$ ;NO-- LOOP FOR ALL OF THEM
4351 ;
4352 ; SET UP REGISTERS FOR ..STIN TO SEND BLOCK TO -10:
4353 ; R0 -- POINTER TO STATUS BLOCK
4354 ; FIRST WORD IS HEADER: (HIGH BYTE) UNIT # (LOW BYTE) BYTE COUNT OF BLCOK
4355 ; R1 -- BIT15 (FOR INDIRECT FUNCTION) + FUNCTION CODE (BC.HDS)
4356 ; R2 -- EVENT FLAG TO SET WHEN BLOCK DONE (EF.CRS)
4357 ; R3 -- DEVICE CODE (D.CCDR)
4358 ;
4359 013536 105040 50$: CLRB -(R0) ;HIGH BYTE HEADER: UNIT # (ALWAYS 0)
4360 013540 112740 000000G MOVB #CRSTLN,-(R0) ;LOW BYTE: BYTE COUNT OF BLOCK (NOT INCLUDING HEADER)
4361 013544 012701 100000G MOV #BIT15+BC.HDS,R1 ;FUNCTION: HERE IS DEVICE STATUS (INDIRECT FLAVOR)
4362 013550 012702 000003 MOV #E.FCRS,R2 ;EVENT FLAG TO SET WHEN DONE
4363 013554 012703 000000G MOV #D.CCDR,R3 ;DEVICE CODE: CDR (OF COURSE)
4364 013560 042777 000004 000000G BIC #EF.CRS,@CREVFG ;CLEAR BUFFER AVAILABLE FLAG
4365 013566 CALL ..STIN ;SEND TO -10
013566 004737 000000G JSR PC,..STIN
4366 013572 103006 BCC 90$ ;OK-- DONE
4367 013574 052777 000004 000000G BIS #EF.CRS,@CREVFG ;FAILED-- BUFFER STILL AVAILABLE
4368 013602 052737 040000 000000G BIS #CR.SST,CRSTS ;ERROR-- TRY AGAIN LATER
4369 ;
4370 ; ALL DONE
4371 ;
4372 013610 90$: RETURN ;ALL DONE FORM SSTSCR
013610 000207 RTS PC
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 52
INITCR (INITIALIZE CD-11)
4374 .SBTTL INITCR (INITIALIZE CD-11)
4375 ;
4376 ;+
4377 ;
4378 ; INITCR IS CALLED FROM TASK INITIALIZATION AND FROM POWER-UP
4379 ; ROUTINE TO RESET THE CD-11.
4380 ;
4381 ;-
4382 ;
4383 013612 042737 021000 000000G INITCR::BIC #CR.IOP!CR.NXD,CRSTS ;NO LONGER I/O IN PROGRESS, ASSUME DEVICE EXISTS
4384 013620 012737 000400 000000G MOV #CDSPWC,@#CDST ;DO POWER-CLEAR
4385 013626 052777 000001 000000G CRDCLR: BIS #EF.CRC,@CREVFG ;FORCE HUNG CHECK
4386 013634 RETURN
013634 000207 RTS PC
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 53
CD-11 DRIVER COMMON SUBROUTINES MODULE
4388 .SBTTL CD-11 DRIVER COMMON SUBROUTINES MODULE
4389 ;
4390 ; COPYRIGHT (C) 1975, 1978 BY
4391 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
4392 ;
4393 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
4394 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
4395 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
4396 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
4397 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
4398 ;
4399 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
4400 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4401 ; CORPORATION.
4402 ;
4403 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4404 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4405 ;
4406 ; MODULE: CD-11 DRIVER COMMON SUBROUTINES
4407 ;
4408 ; VERSION: 01-00
4409 ;
4410 ; AUTHOR: TOM PORCHER
4411 ;
4412 ; DATE: 25-AUG-75
4413 ;
4414 ;
4415 ; THIS MODULE CONTAINS:
4416 ;
4417 ; 1) $CDINT (CD-11 INTERRUPT SERVICE ROUTINE)
4418 ;
4419 ; 2) ..STCR (START CD-11)
4420 ;
4421 ; 3) ..SPCR (STOP CD-11)
4422 ;
4423 ; 4) ..AKCR (READ CARD)
4424 ;
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 54
$CDINT (CD-11 INTERRUPT SERVICE)
4426 .SBTTL $CDINT (CD-11 INTERRUPT SERVICE)
4427 ;
4428 ;+
4429 ;
4430 ; $CDINT IS CALLED FROM THE INTERRUPT VECTOR FOR THE CD-11.
4431 ; IT MERELY SAYS THAT I/O IS DONE BY SETTING CR.IOD IF I/O WAS
4432 ; IN PROGRESS (CR.IOP), AND REQUESTS STATUS IF AN ERROR HAS OCCURED.
4433 ;
4434 ;-
4435 ;
4436 013636 105737 000000G $CDINT:: TSTB @#CDST ;;;CD-11 READY?
4437 013642 100025 BPL 90$ ;;;NO-- JUST GO AWAY
4438 013644 032737 020000 000000G BIT #CR.IOP,CRSTS ;;;YES-- WERE WE I/O IN PROGRESS (READING)?
4439 013652 001414 BEQ 10$ ;;;NO-- GO ON (SEE IF ERROR)
4440 013654 042737 020000 000000G BIC #CR.IOP,CRSTS ;;;YES-- MUST BE DONE NOW
4441 013662 005737 000000G TST @#CDCC ;;;DID WE READ A CARD?
4442 013666 001006 BNE 10$ ;;;NO-- MUST BE ERROR-- SEND STATUS NOW
4443 013670 052737 010000 000000G BIS #CR.IOD,CRSTS ;;;SO MAKE TASK KNOW WE ARE DONE
4444 ;
4445 013676 005737 000000G TST @#CDST ;;;WAS THERE AN ERROR?
4446 013702 100003 BPL 20$ ;;;NO-- GO ON
4447 ;
4448 013704 052737 040000 000000G 10$: BIS #CR.SST,CRSTS ;;;YES-- SEND DEVICE STATUS
4449 013712 20$: CALL IODNCR ;;;SAY I/O DONE TO TASK
013712 004737 014002' JSR PC,IODNCR
4450 ;
4451 ; ALL DONE WITH INTERRUPT
4452 ;
4453 013716 000137 000000G 90$: JMP ..INTX ;;;FINISH OFF INTERRUPT
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 55
..STCR (START CD-11)
4455 .SBTTL ..STCR (START CD-11)
4456 ;
4457 ;+
4458 ;
4459 ; ..STCR IS CALLED FROM THE QUEUED PROTOCOL TASK ON A REQUEST
4460 ; FOR STATUS. NO OTHER REQUESTS TO THE CD-11 DRIVER ARE MADE THROUGH
4461 ; ..STCR.
4462 ;
4463 ; THE STATUS IS REQUESTED TO THE CD-11 DRIVER TASK BY SETTING
4464 ; CR.SST AND EF.CRD.
4465 ;
4466 ; CALLING SEQUENCE:
4467 ; R0 -- POINTER TO THREAD BLOCK (WILL JUST BE DEALLOCATED)
4468 ; R2 -- POINTER TO CRTBL (MUST BE CRTBL+0)
4469 ;
4470 ; EXIT CONDITIONS:
4471 ;
4472 ; NO REGISTERS MODIFIED
4473 ;
4474 ;-
4475 ;
4476 .ENABLE LSB
4477 013722 ..STCR::
4478 013722 CALL ..DECN ;DE-ALLOCATE BLOCK
013722 004737 000000G JSR PC,..DECN
4479 013726 020227 000000G CMP R2,#CRTBL+0 ;THIS CR0?
4480 013732 001030 BNE 99$ ;NO-- GO AWAY
4481 013734 052737 040000 000000G BIS #CR.SST,CRSTS ;YES-- MAKE STATUS HAPPEN
4482 013742 000417 BR IODNCR ; AND MAKE TASK RECOGNIZE IT
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 56
..SPCR (STOP CD-11)
4484 .SBTTL ..SPCR (STOP CD-11)
4485 ;
4486 ;+
4487 ;
4488 ; ..SPCR IS CALLED FROM THE QUEUED PROTOCOL TASK TO FLUSH
4489 ; INPUT FROM THE CD-11. ANY I/O THAT IS IN PROGRESS IS STOPPED,
4490 ; AND NO FURTHER DATA IS SENT TO THE -10.
4491 ;
4492 ; CALLING SEQUENCE:
4493 ; R2 -- POINTER TO CRTBL (MUST BE CRTBL+0)
4494 ;
4495 ; EXIT CONDITIONS:
4496 ;
4497 ; NO REGISTERS MODIFIED
4498 ;
4499 ;-
4500 ;
4501 013744 020227 000000G ..SPCR:: CMP R2,#CRTBL+0 ;THIS CR0?????
4502 013750 001021 BNE 99$ ;NO-- GO AWAY
4503 013752 CALL INITCR ;RESET THE CD-11
013752 004737 013612' JSR PC,INITCR
4504 013756 042737 034000 000000G BIC #CR.ACK!CR.IOD!CR.IOP,CRSTS ;SAY WE ARE HAPPY
4505 013764 RETURN
013764 000207 RTS PC
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1110 15-OCT-79 13:59 PAGE 57
..AKCR (READ CARD)
4507 .SBTTL ..AKCR (READ CARD)
4508 ;
4509 ;+
4510 ;
4511 ; ..AKCR IS CALLED FROM THE QUEUED PROTOCOL TASK ON AN ACKNOWLEDGE
4512 ; REQUEST FROM THE -10. THIS IMPLIES THAT A CARD SHOULD BE READ.
4513 ;
4514 ; CALLING SEQUENCE:
4515 ; R2 -- POINTER TO CRTBL (MUST BE CRTBL+0)
4516 ;
4517 ; EXIT CONDITIONS:
4518 ;
4519 ; NO REGISTERS MODIFIED
4520 ;
4521 ;-
4522 ;
4523 013766 020227 000000G ..AKCR:: CMP R2,#CRTBL+0 ;IS THIS CR0???
4524 013772 001010 BNE 99$ ;NO-- GIVE UP
4525 013774 052737 004000 000000G BIS #CR.ACK,CRSTS ;YES-- SAY TO READ A CARD
4526 ; BR IODNCR ;SET I/O DONE TO SAY SOMETHING TO DO TO TASK
4527 ;
4528 ; HERE TO SET I/O DONE (EF.CRD) TO CR TASK TO INDICATE SOMETHING TO DO.
4529 ; ALSO SIGNIFICANT EVENT TO CAUSE CR TASK TO RUN.
4530 ;
4531 014002 052777 000002 000000G IODNCR: BIS #EF.CRD,@CREVFG ;SET EVENT FLAG
4532 014010 CALL ..DSEV ; AND MAKE SIGN. EVENT TO WAKE TASK
014010 004737 000000G JSR PC,..DSEV
4533 014014 99$: RETURN ; FROM IODNCR
014014 000207 RTS PC
4534 .DSABLE LSB
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 58
..AKCR (READ CARD)
4536 .TITLE INSTAL -- TASK INSTALLER FOR RSX-20F
4537 .SBTTL TITLE PAGE
4538 .IDENT /010020/
4539 ;
4540 ; COPYRIGHT (C) 1975, 1978 BY
4541 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
4542 ;
4543 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
4544 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
4545 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
4546 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
4547 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
4548 ;
4549 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
4550 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4551 ; CORPORATION.
4552 ;
4553 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4554 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4555 ;
4556 ; MODULE: INSTALL TASK FOR RSX-20F
4557 ;
4558 ; VERSION: 10-01
4559 ;
4560 ; AUTHOR: TOM PORCHER
4561 ;
4562 ; DATE: 1-OCT-75
4563 ;
4564 ;
4565 ; THIS MODULE CONTAINS:
4566 ;
4567 ; -- CODE TO INSTALL A TASK IN RSX-20F
4568 ;
4569 ; MODIFICATIONS:
4570 ;
4571 ; NO. DATE PROGRAMMER PURPOSE
4572 ; --- ---- ---------- -------
4573 ; 001 14-MAR-77 R. BELANGER DEFINE THE END OF "INSTAL"
4574 ; TO ALLOW DYNAMIC ALLOCATION
4575 ; OF FREE POOL SPACE
4576 ; 002 30-MAY-78 R. BELANGER MODIFY INSTAL TO MOUNT BOTH
4577 ; DX0: AND DX1: AS SY:
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 59
MACROS AND PARAMETERS
4579 .SBTTL MACROS AND PARAMETERS
4580 ;
4581 ; SETUP ASSEMBLY CONDITIONS
4582 ;
4583 .ENABLE AMA
4584 .LIST MEB
4585 ;
4586 ; MISC. MCALL'S
4587 ;
4588 .MCALL QIOSY$,ALUN$S,QIOW$S,RCVX$S,RQST$S,WSIG$S,.INH0,.ENB0,CALL,RETURN,PUSH,POP,.STKM,$DEF
4589 014016 $DEF
4590 014016 QIOSY$
4591 ;
4592 ; MACROS
4593 ;
4594 .MACRO MSG A,B
4595 .PSECT TEXT
4596 $$$=.
4597 .ASCIZ \B\
4598 .PSECT
4599 PUSH #$$$
4600 CALL TYPMSG
4601 .ENDM MSG
4602 ;
4603 .MACRO ERR A,B
4604 MSG <A>,<B>
4605 .ENDM ERR
4606 ;
4607 .MACRO ERRF A,B
4608 ERR <A>,<B>
4609 BR CLSFIL
4610 .ENDM ERRF
4611 ;
4612 .MACRO ERRN A,B
4613 ERR <A>,<B>
4614 BR RETNOD
4615 .ENDM ERRN
4616 ;
4617 ; PARAMETERS
4618 ;
4619 000062 DEFPRI= 50. ;DEFAULT TASK PRIORITY
4620 ;
4621 000050 U.SZ=50 ;LOCAL DEF OF U.SZ
4622 000001 SF.TA=1 ;LOCAL DEF OF TASK ACTIVE
4623 040000 SF.IR=40000 ;LOCAL DEF FOR INSTAL REQUESTED
4624 ; LOGICAL UNIT NUMBER ASSIGNMENTS
4625 ;
4626 000001 CTYLUN= 1 ;FOR I/O TO THE CTY **** MUST BE UNIT 1 ****
4627 000002 TSKLUN= 2 ;FOR I/O TO TASK IMAGE FILE
4628 ;
4629 ; EVENT FLAGS
4630 ;
4631 000001 E.FQIO= 1 ;WAIT FOR QUEUE I/O TO COMPLETE
4632 000001 EF.QIO=BIT0
4633 ;
4634 ; HEADER BLOCK DEFINITIONS
4635 ;
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 59-1
MACROS AND PARAMETERS
4636 000076 H.IPC= 76 ;INITIAL PC
4637 000100 H.ISP= 100 ;INITIAL SP
4638 000130 H.NLUN= 130 ;NUMBER OF LUNS FOR TASK
4639 000132 H.LUN= 132 ;START OF LUN TABLE AREA
4640 ;
4641 ; LABEL BLOCK DEFINITIONS
4642 ;
4643 000000 L$BTSK= 0 ;TASK NAME IN RAD50 (TWO WORDS)
4644 000004 L$BPAR= 4 ;PARTITION NAME IN RAD50 (TWO WORDS)
4645 000010 L$BFLG= 10 ;FLAG WORD
4646 000012 L$BPRI= 12 ;DEFAULT TASK RUN PRIORITY
4647 000014 L$BLDZ= 14 ;LOAD SIZE OF TASK IMAGE
4648 000016 L$BMXZ= 16 ;MAX SIZE OF TASK
4649 000020 L$BSA= 20 ;BASE ADDRESS OF TASK
4650 000022 L$BHRB= 22 ;HEADER RELATIVE BLOCK IN TASK FILE
4651 000024 L$BBLK= 24 ;# BLOCKS IN LABEL GROUP
4652 ;
4653 ; ACCESS CONTROL BITS
4654 ;
4655 000200 AC.ENA= BIT7 ;ENABLE ACCESS
4656 ;
4657 ; FILENAME BLOCK OFFSETS
4658 ;
4659 000000 N.FID= 0 ;FILE-ID / SEQUENCE #
4660 000006 N.FNAM= 6 ;FILENAME IN RADIX 50 (3 WORDS)
4661 000014 N.FTYP= 14 ;FILE TYPE IN RADIX 50
4662 000016 N.FVER= 16 ;FILE VERSION NUMBER
4663 000020 N.STAT= 20 ;FLAGS
4664 000022 N.NEXT= 22 ;CONTEXT SAVE FOR .FIND
4665 000024 N.DID= 24 ;DIRECTORY ID
4666 000034 S.DRFN=34 ;WORDS OF FILE-NAME BLOCK USED FOR IO.FNA
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 60
TASK DATA
4668 .SBTTL TASK DATA
4669 ;
4670 ; TASK HEADER AND STACK
4671 ;
4672 014016 INSHD:: .STKM 0,0,0,0,0,0,40,INSTAL,174000,INSTK
014064 000000 000000 000000 .WORD 0,0,0,0
014072 000000
014112 174000 014636' 014276' .WORD 174000,INSTAL,INSTK
014146 000005 .WORD 5
014150 000000G .WORD TTPEN
014152 000000 .WORD 0
014154 000000 .WORD 0
014156 000000 .WORD 0
014160 000000 .WORD 0
014162 000000 .WORD 0
014164 000000 .WORD 0
014166 000000 .WORD 0
014170 000000 .WORD 0
014172 000000 .WORD 0
014174 000000 .WORD 0
014276 000000 .WORD 0
014300 000000 .WORD 0
014302 000000 .WORD 0
014304 000000 .WORD 0
014306 000000 .WORD 0
014310 000000 .WORD 0
014312 014636' .WORD INSTAL
014314 174000 .WORD 174000
4673 ;
4674 014316 .BLKB 40
4675 014356 EXSP:
4676 ;
4677 ; LOCAL DATA
4678 ;
4679 014356 000 DXFLAG: .BYTE 0 ; +++002 SECOND DX: MOUNT FLAG
4680 014357 000 SYFLAG: .BYTE 0 ; +++002 SY: MOUNTED FLAG
4681 014360 RCVBLK: .BLKW 2 ;RECEIVE DATA BUFFER: TRASH
4682 014364 REQBLK: .BLKW 13. ;REQUEST BLOCK FROM EXEC
4683 014376' STDADR=REQBLK+12 ;ADDRESS OF OUR SYSTEM TASK DIRECTORY ENTRY
4684 014416 PUDADR: .BLKW 1 ;PUD ENTRY ADDRESS OF DEVICE WHERE TASK FILE WAS FOUND
4685 014420 LBLBLK: .BLKW 1 ;CURRENT VIRTUAL BLOCK NUMBER TO READ LABEL GROUP
4686 014422 LBLNUM: .BLKW 1 ;NUMBER OF BLOCKS IN LABEL GROUP
4687 014424 LBLBUF: .BLKW 1 ;ADDRESS OF LABEL BUFFER
4688 014426 LBLBFE: .BLKW 1 ;ADDRESS OF END OF BUFFER (LBLBUF)+512.
4689 014430 HDRBLK: .BLKW 1 ;CURRENT VIRTUAL BLOCK NUMBER TO READ HEADER
4690 014432 HDRBUF: .BLKW 1 ;ADDRESS OF HEADER BLOCK BUFFER
4691 014434 HDRBFE: .BLKW 1 ;ADDRESS OF END OF HEADER BUFFER
4692 014436 FILBLK: .BLKB S.DRFN ;FILE-NAME BLOCK FOR TASK IMAGE FILE
4693 014472 FILADR: .BLKW 2 ;STATISTISTICS BLOCK: DISK ADDRESS
4694 014476 QIOSTS: .BLKW 2 ;I/O STATUS
4695 014502 TYPBUF: .BLKB 60. ;BUFFER FOR CTY OUTPUT
4696 ;
4697 ; PURE DATA
4698 ;
4699 014576 367 ATCBLK: .BYTE -9. ;ATTIBUTE CONTROL: STATISTICS BLOCK, READ
4700 014577 004 .BYTE 4. ;4 BYTES OF INFO
4701 014600 014472' .WORD FILADR ;WHERE TO INFO TO
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 60-1
TASK DATA
4702 014602 000 000 .BYTE 0,0 ;END OF ATTRIBUTE CONTROL BLOCK
4703 ;
4704 014604 001 MNTBLK: .BYTE 1 ;ACP CONTROL: MOUNT FUNCTION
4705 014605 001 .BYTE 1 ;STRING LENGTH: 1
4706 014606 014610' .WORD 1$ ;ADDRESS OF STRING
4707 014610 072 1$: .ASCII /:/
4708 .EVEN
4709 ;
4710 ; DEVICE CONVERSION TABLE
4711 ;
4712 014612 124 111 124 CNVTBL: .ASCII /TI//TT/
014615 124
4713 014616 103 117 124 .ASCII /CO//TT/
014621 124
4714 014622 103 111 124 .ASCII /CI//TT/
014625 124
4715 014626 103 114 114 .ASCII /CL//LP/
014631 120
4716 014632 000000 000000 .WORD 0,0
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 61
FIND THE TASK FILE
4718 .SBTTL FIND THE TASK FILE
4719 ;
4720 ;
4721 ; HERE ON A REQUEST TO INSTALL A TASK FROM THE EXECUTIVE
4722 ;
4723 ; A SEND DATA PACKET IS SENT TO THIS TASK .INST. IN REQUEST
4724 ; FOR A TASK WHICH IS NOT CURRENTLY INSTALLED. THE PACKET
4725 ; HAS THE FOLLOWING FORMAT:
4726 ;
4727 ; WORD 0 TASK NAME IN RADIX 50 FORMAT
4728 ; 1 (SECOND HALF)
4729 ; 2 PARTITION NAME IN RADIX 50 (IF SPECIFIED, OTHERWISE 0)
4730 ; 3 (SECOND HALF)
4731 ; 4 RUN PRIORITY (IF SPECIFIED, OTHERWISE 0)
4732 ; 5 STD ADDRESS
4733 ;
4734 ;
4735 ; GET THE PACKET, OR EXIT IF NOTHING TO DO
4736 ;
4737 014636 INSTAL::
4738 014636 012706 014356' MOV #EXSP,SP ;;ADD EXTRA STACK SPACE
4739 014642 RCVX$S ,#RCVBLK ;;GET THE REQUEST OR EXIT IF NONE
014642 012746 014360' MOV #RCVBLK,-(SP)
014646 005046 CLR -(SP)
014650 005046 CLR -(SP)
014652 012746 MOV (PC)+,-(SP)
014654 023 004 .BYTE 19.,$$$T1
014656 104375 EMT 375
4740 014660 103766 BCS INSTAL ;OOPS-- TRY AGAIN
4741 ;
4742 014662 CALL CLRBUF ; AND NO BUFFERS ALLOCATED
014662 004737 016432' JSR PC,CLRBUF
4743 014666 105037 014356' CLRB DXFLAG ; +++002 RESET THE RX01 FLAG
4744 ;
4745 ; SETUP TO LOOK ON DEVICE SY FOR THE TASK FIRST
4746 ;
4747 014672 012705 177730G MOV #.PUDBA-U.SZ,R5 ;POINT TO START OF PUD'S TO SCAN IF NOT ON SY
4748 ;MINUS 1 FOR SY
4749 014676 012700 054523 MOV #"SY,R0 ; +++002 DEVICE NAME (U.DN) TO R0
4750 014702 005001 CLR R1 ; +++002 UNIT NUMBER (U.UN) TO R1
4751 ;
4752 014704 MNTSYD: ; +++002
4753 014704 ALUN$S #TSKLUN,R0,R1 ; +++002 ASSIGN DEVICE SY0 TO TASK LUN
014704 010146 MOV R1,-(SP)
014706 010046 MOV R0,-(SP)
014710 012746 000002 MOV #TSKLUN,-(SP)
014714 012746 MOV (PC)+,-(SP)
014716 007 004 .BYTE 7.,4
014720 104375 EMT 375
4754 014722 103557 BCS TASKNF ;NO DICE-- JUST TRY PUD SCAN
4755 ;
4756 014724 013704 000000G MOV .CRTSK,R4 ;GOT IT-- GET ADDRESS
4757 014730 016404 000000G MOV A.HA(R4),R4 ; OF OUR HEADER TO
4758 014734 016404 000136 MOV H.LUN+<4*<TSKLUN-1>>+0(R4),R4 ; FIND PUD ADDRESS OF SY
4759 014740 016404 000000G MOV U.RP(R4),R4 ; BUT GET THE REAL DEVICE PUD ENTRY
4760 014744 010437 014416' MOV R4,PUDADR ;SAVE THIS PUD ADDRESS IN CASE WE DO FIND THE TASK
4761 014750 005764 000000G TST U.VA(R4) ;IS SY MOUNTED?
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 61-1
FIND THE TASK FILE
4762 014754 001031 BNE SYMNTD ; +++002 YES -- DO THE SECOND FLOPPY CHECK
4763 ;
4764 ; SY IS NOT MOUNTED. WE MUST MOUNT IT BEFORE WE CAN FIND ANYTHING
4765 ;
4766 ; NOTE--
4767 ;
4768 ; IF THE SY: DEVICE BEING MOUNTED IS A FLOPPY (DX:) INSTAL WILL
4769 ; ATTEMPT TO MOUNT THE OTHER UNIT AS WELL.
4770 ;
4771 014756 012701 014364' MOV #RCVBLK+4,R1 ;GET A SCRATCH AREA
4772 014762 012741 MOV (PC)+,-(R1) ;STORE
4773 014764 003310 .RAD50 /ACP/ ; THE NAME OF AN ACP
4774 014766 016441 000000G MOV U.DACP(R4),-(R1) ; AND THE NAME OF THE ACP FOR THIS DEVICE
4775 014772 CALL ..FSTD ;FIND THE STD ENTRY ADDRESS OF THE ACP
014772 004737 000000G JSR PC,..FSTD
4776 014776 010264 000000G MOV R2,U.ACP(R4) ;STORE THE STD ADDRESS OF THE ACP
4777 ;
4778 015002 012700 014010 MOV #IO.APV,R0 ;SET TO DO PRIVILEGED ACP CONTROL
4779 015006 005001 CLR R1 ;NO FILE-ID
4780 015010 012702 014604' MOV #MNTBLK,R2 ;ACP CONTROL FUNCTION BLOCK TO MOUNT
4781 015014 005003 CLR R3 ;NO ACCESS
4782 015016 005004 CLR R4 ;NO FILE-NAME BLOCK
4783 015020 CALL FILQIO ;DO A MOUNT ON SY
015020 004737 016732' JSR PC,FILQIO
4784 015024 103005 BCC SYMNTD ;SUCCESS-- SAY WE DID THE MOUNT SO WE DON'T SCARE ANYBODY
4785 015026 ERR MSF,<MOUNT SY FAILED>
000000 115 117 125 .ASCIZ \MOUNT SY FAILED\
000003 116 124 040
000006 123 131 040
000011 106 101 111
000014 114 105 104
000017 000
015026 012746 000000' MOV #$$$,-(SP)
015032 004737 017012' JSR PC,TYPMSG
4786 015036 000511 BR TASKNF ;CERTAINLY NOT FOUND
4787 ;
4788 015040 SYMNTD:
4789 015040 013704 014416' MOV PUDADR,R4 ; +++002 PUD ADDRESS TO R4
4790 015044 016400 000000G MOV U.DN(R4),R0 ; +++002 DEVICE NAME TO R0
4791 015050 016401 000000G MOV U.UN(R4),R1 ; +++002 UNIT NUMBER TO R1
4792 015054 022700 054104 CMP #"DX,R0 ; +++002 DID WE TRY TO MOUNT A FLOPPY??
4793 015060 001011 BNE SYMNT1 ; +++002 NO -- GO ON
4794 015062 105737 014356' TSTB DXFLAG ; +++002 YES -- HAVE WE DONE BOTH??
4795 015066 001006 BNE SYMNT1 ; +++002 YES -- GO ON
4796 015070 105237 014356' INCB DXFLAG ; +++002 NO -- MARK SECOND TIME AROUND
4797 015074 005201 INC R1 ; +++002 SET UP FOR "OTHER" FLOPPY
4798 015076 042701 177776 BIC #^C1,R1 ; +++002 SO
4799 015102 000700 BR MNTSYD ; +++002 AND DO IT...
4800 ;
4801 015104 SYMNT1: ; +++002
4802 015104 105737 014357' TSTB SYFLAG ; +++002 SY: ALREADY MOUNTED??
4803 015110 001006 BNE FNDFIL ; +++002 YES -- GO ON
4804 015112 MSG SYM,<SY MOUNTED>
000020 123 131 040 .ASCIZ \SY MOUNTED\
000023 115 117 125
000026 116 124 105
000031 104 000
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 61-2
FIND THE TASK FILE
015112 012746 000020' MOV #$$$,-(SP)
015116 004737 017012' JSR PC,TYPMSG
4805 015122 105237 014357' INCB SYFLAG ; +++002 MARK MOUNT DONE
4806 ;
4807 ; SET UP FILENAME BLOCK TO LOOK FOR [5,5] DIRECTORY IN MFD
4808 ;
4809 015126 FNDFIL:
4810 015126 012702 014444' MOV #FILBLK+N.FNAM,R2 ;POINT TO FILE-NAME BLOCK
4811 015132 012712 MOV (PC)+,(R2) ;SET FILENAME TO
4812 015134 140123 .RAD50 /005/ ; 005005
4813 015136 012222 MOV (R2)+,(R2)+ ; BOTH HALVES
4814 015140 005022 CLR (R2)+ ;ONLY SIX CHARS
4815 015142 012722 MOV (PC)+,(R2)+ ;SET TYPE TO DIRECTORY
4816 015144 015172 .RAD50 /DIR/ ; FILE
4817 015146 005022 CLR (R2)+ ;VERSION, DON'T CARE
4818 015150 005022 CLR (R2)+ ;NO FLAGS
4819 015152 005022 CLR (R2)+ ;UNKOWN STUFF
4820 015154 012712 177777 MOV #-1,(R2) ;DIRECTORY ID:
4821 015160 012222 MOV (R2)+,(R2)+ ; (-1,-1) IS MFD
4822 015162 012722 MOV (PC)+,(R2)+ ;ALSO SET OWNER TO US
4823 015164 005 005 .BYTE 5,5 ;THE UIC
4824 ;
4825 015166 CALL FILFNA ;LOOK UP DIRECTORY FOR [5,5]
015166 004737 016562' JSR PC,FILFNA
4826 015172 103433 BCS TASKNF ;GIVE UP NOW IF NO DIRECTORY FOR US
4827 ;
4828 ; SETUP FILE-NAME BLOCK TO <TASK-NAME>.TSK[5,5]
4829 ;
4830 015174 012701 014364' MOV #REQBLK,R1 ;ADDRESS REQUEST BLOCK
4831 015200 012702 014444' MOV #FILBLK+N.FNAM,R2 ; AND FILE-NAME BLOCK FOR LOOKUP
4832 015204 021127 CMP (R1),(PC)+ ;IS THIS
4833 015206 131574 .RAD50 /.../ ; AN MCR FUNCTION TASK?
4834 015210 001004 BNE 20$ ;NO-- JUST LOOKUP THE TASK NAME
4835 015212 005721 TST (R1)+ ;YES-- SKIP THE DOTS
4836 015214 012122 MOV (R1)+,(R2)+ ;COPY THE LAST THREE CHARACTERS
4837 015216 005022 CLR (R2)+ ; AS THE WHOLE NAME
4838 015220 000402 BR 25$ ;PROCEED.
4839 ;
4840 015222 20$:
4841 015222 012122 MOV (R1)+,(R2)+ ;COPY TASK NAME
4842 015224 012122 MOV (R1)+,(R2)+ ; AS FILE NAME
4843 015226 25$:
4844 015226 005022 CLR (R2)+ ;ONLY SIX CHARACTERS
4845 015230 012722 MOV (PC)+,(R2)+ ;SET FILE TYPE
4846 015232 100003 .RAD50 /TSK/ ; TO A TASK FILE
4847 015234 005022 CLR (R2)+ ;NO VERSION CARE
4848 015236 005022 CLR (R2)+ ;NO FLAGS
4849 015240 005022 CLR (R2)+ ;NO NOTHING
4850 015242 012701 014436' MOV #FILBLK+N.FID,R1 ;POINT TO FILE-ID OF DIRECTORY
4851 015246 012122 MOV (R1)+,(R2)+ ;COPY FILE-ID
4852 015250 012122 MOV (R1)+,(R2)+ ; SEQ #
4853 015252 012122 MOV (R1)+,(R2)+ ; OWNER
4854 ;
4855 ; DO A FIND FILE IN DIRECTORY FUNCTION TO GET FILE ID
4856 ;
4857 015254 CALL FILFNA ;FIND THE TASK (IF IT'S THERE)
015254 004737 016562' JSR PC,FILFNA
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 61-3
FIND THE TASK FILE
4858 015260 103051 BCC TSKFND ;FOUND FILE-- GO READ IT AND CHECK IT OUT
4859 ;
4860 ; THE TASK FILE WAS NOT FOUND ON THIS DEVICE. CONTINUE TO SCAN PUD
4861 ; FOR ALL FILES-11 DEVICES SUCH THAT WE FIND THE TASK.
4862 ;
4863 015262 TASKNF:
4864 015262 062705 000050 ADD #U.SZ,R5 ;BUMP TO NEXT PUD ENTRY
4865 015266 020527 000000G CMP R5,#.PUDEA ;ARE WE AT THE END OF THE PUD?
4866 015272 103027 BHIS TNFERR ;YES-- TASK NOT FOUND
4867 015274 026505 000000G CMP U.RP(R5),R5 ;THIS DEVICE REDIRECTED?
4868 015300 001370 BNE TASKNF ;YES-- WE WILL FIND THE REAL DEVICE
4869 015302 132765 000000G 000000G BITB #UF.TL,U.FB(R5) ;TASK LOADS ALLOWED FROM THIS DEVICE?
4870 015310 001764 BEQ TASKNF ;NO-- DON'T EVEN TRY
4871 015312 005765 000000G TST U.VA(R5) ;VOLUME MOUNTED?
4872 015316 001761 BEQ TASKNF ;NO-- DON'T TRY TO FIND FILE
4873 ;
4874 015320 ALUN$S #TSKLUN,U.DN(R5),U.UN(R5) ;YES-- ASSIGN TH CURRENT DEVICE TO US
015320 016546 000000G MOV U.UN(R5),-(SP)
015324 016546 000000G MOV U.DN(R5),-(SP)
015330 012746 000002 MOV #TSKLUN,-(SP)
015334 012746 MOV (PC)+,-(SP)
015336 007 004 .BYTE 7.,4
015340 104375 EMT 375
4875 015342 103747 BCS TASKNF ;THIS SHOULD REALLY NEVER HAPPN
4876 015344 010537 014416' MOV R5,PUDADR ;OK-- SAVE THIS PUD ADDRESS IN CASE WE FIND THE FILE
4877 015350 000666 BR FNDFIL ;OK-- GO LOOK FOR THE TASK FILE
4878 ;
4879 015352 TNFERR:
4880 015352 ERR TNF,<TASK NOT FOUND>
000033 124 101 123 .ASCIZ \TASK NOT FOUND\
000036 113 040 116
000041 117 124 040
000044 106 117 125
000047 116 104 000
015352 012746 000033' MOV #$$$,-(SP)
015356 004737 017012' JSR PC,TYPMSG
4881 015362 000137 016266' JMP RETNOD ;GIVE UP
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 62
INITIALIZE TASK FILE
4883 .SBTTL INITIALIZE TASK FILE
4884 ;
4885 ; FILE ERRORS END UP HERE, GOING ON THERE WAY TO THERE
4886 ;
4887 015366 000137 016252' FILERA: JMP FILERR ;OOPS
4888 ;
4889 ; ONE OF THE NODE/BUFFER REQUESTS FAILED-- GIVE ALL OF THEM BACK AND WAIT
4890 ;
4891 015372 BUFAIL: CALL RETBUF ;RETURN ALL BUFFERS
015372 004737 016376' JSR PC,RETBUF
4892 015376 WSIG$S ;WAIT FOR FREE
015376 012746 MOV (PC)+,-(SP)
015400 061 001 .BYTE 49.,1
015402 104375 EMT 375
4893 ;
4894 ; HERE WHEN A TASK FILE FOUND
4895 ;
4896 ; GET TWO BUFFERS FOR THE HEADER AND LABEL BLOCKS
4897 ;
4898 015404 012700 000000G TSKFND: MOV #.BGBUF,R0 ;POINT TO BIG FREE SPACE
4899 015410 012701 001000 MOV #512.,R1 ;SET TO GET A BLOCK
4900 015414 CALL ..ALC2 ;GET ONE
015414 004737 000000G JSR PC,..ALC2
4901 015420 103764 BCS BUFAIL ;FAILED-- RELEASE NODE AND WAIT
4902 015422 010037 014424' MOV R0,LBLBUF ;OK-- STORE THE ADDRESS FOR LABEL BLOCK BUFFER
4903 015426 060100 ADD R1,R0 ;GET END ADDRESS, TOO
4904 015430 010037 014426' MOV R0,LBLBFE ;SAVE THAT AS END OF BLOCK
4905 015434 012700 000000G MOV #.BGBUF,R0 ;POINT TO BIG FREE LIST HEAD
4906 ;
4907 015440 CALL ..ALC2 ;GET A HEADER BUFFER, TOO
015440 004737 000000G JSR PC,..ALC2
4908 015444 103752 BCS BUFAIL ;NONE-- GIVE IT ALL AWAY
4909 015446 010037 014432' MOV R0,HDRBUF ;GOT IT-- SAVE ADDRESS OF BLOCK
4910 015452 060100 ADD R1,R0 ;GET END, TOO
4911 015454 010037 014434' MOV R0,HDRBFE ;SAVE THE END OF HEADER BUFFER
4912 ;
4913 ; DO AN ACCESS FOR READ, WRITE ON THE TASK FILE THAT WE FOUND
4914 ;
4915 015460 012700 007000 MOV #IO.ACW,R0 ;DO AN ACCESS FOR READ,WRITE
4916 015464 012701 014436' MOV #FILBLK+N.FID,R1 ;FILE BLOCK NOW HAS FILE-ID, SEQ# IN IT
4917 015470 012702 014576' MOV #ATCBLK,R2 ;ATTRRIBUTE CONTROL BLOCK TO GET DISK ADDR OF FILE
4918 015474 012703 MOV (PC)+,R3 ;ENABLE
4919 015476 000 200 .BYTE 0,AC.ENA ; ACCESS
4920 015500 005004 CLR R4 ;NO FILE-NAME BLOCK NOW
4921 015502 CALL FILQIO ;DO THE ACCESS
015502 004737 016732' JSR PC,FILQIO
4922 015506 103727 BCS FILERA ;NO DICE-- GIVE UP
4923 ;
4924 ; READ THE FIRST LABEL BLOCK AND THE FIRST BLOCK OF THE TASK HEADER
4925 ;
4926 015510 005037 014420' CLR LBLBLK ;START WITH BLOCK 0 (WILL BUMP TO VBN 1)
4927 015514 CALL REDLBL ;READ THE LABEL BLOCK
015514 004737 016660' JSR PC,REDLBL
4928 015520 103722 BCS FILERA ;ERROR-- REPORT IT
4929 ;
4930 015522 016137 000022 014430' MOV L$BHRB(R1),HDRBLK ;GET FIRST BLOCK OF HEADER
4931 015530 CALL REDHDR ;READ THE FIRST BLOCK OF THE HEADER
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 62-1
INITIALIZE TASK FILE
015530 004737 016616' JSR PC,REDHDR
4932 015534 103714 BCS FILERA ;THAT'S-A-NO-GOOD
4933 ; BR SETSTD ;OK-- SET UP THE STD
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 63
SETUP STD ENTRY
4935 .SBTTL SETUP STD ENTRY
4936 ;
4937 ; WE HAVE THE LABEL BLOCK OF THE TASK FILE AND THE FIRST HEADER BLOCK
4938 ; R1 -- ADDRESS OF LABEL BLOCK BUFFER
4939 ; R2 -- ADDRESS OF HEADER BLOCK BUFFER
4940 ;
4941 015536 013704 014376' SETSTD: MOV STDADR,R4 ;ADDRESS OUR NEW-FOUND STD
4942 ;
4943 015542 012703 014370' MOV #REQBLK+4,R3 ;POINT TO THE REQUEST INFO BLOCK
4944 015546 022424 CMP (R4)+,(R4)+ ;MOVE OVER NAME
4945 015550 022121 CMP (R1)+,(R1)+ ;(L$BTSK+0) (L$BTSK+2) SKIP OVER TASK NAME IN LABEL BLOCK
4946 ;
4947 ; FIND WHICH PARTITION TO INSTALL THE TASK INTO
4948 ; IF REQUEST DID NOT SPECIFY ONE, USE THE ONE SPECIFIED IN THE TASK FILE
4949 ;
4950 015552 005713 TST (R3) ;PARTITION SPECIFIED IN REQUEST?
4951 015554 001001 BNE 20$ ;YES-- LOOK FOR THAT ONE
4952 015556 010103 MOV R1,R3 ;NO-- (L$BPAR) USE PARTITION FROM TASK FILE
4953 ;
4954 ; FIND THE PARTITION WHERE WE BELONG
4955 ;
4956 015560 022121 20$: CMP (R1)+,(R1)+ ;(L$BPAR+0) (L$BPAR+2) SKIP OVER PARTITION NAME IN LABEL
4957 015562 012705 000000G MOV #.TPDBA,R5 ;START AT BEGINNING OF THE TASK PARTITION DIRECTORY
4958 ;
4959 015566 026513 000000G 21$: CMP T.PN+0(R5),(R3) ;FIRST HALF OF NAME MATCH?
4960 015572 001004 BNE 25$ ;NO-- GO ON TO NEXT ENTRY
4961 015574 026563 000002G 000002 CMP T.PN+2(R5),2(R3) ;YES-- SECOND HALF MATCH?
4962 015602 001432 BEQ PARFND ;YES-- WE FOUND THE PARTITION
4963 ;
4964 015604 062705 000000G 25$: ADD #T.SZ,R5 ;NO-- BUMP TO NEXT ENTRY IN TPD
4965 015610 020527 000000G CMP R5,#.TPDEA ;ARE WE AT THE END OF THE DIRECTORY?
4966 015614 103764 BLO 21$ ;NO-- KEEP LOOKING FOR OUR PARTITION
4967 015616 010324 MOV R3,(R4)+ ;YES-- PARTITION NOT FOUND-- SAVE ADDR OF NAME FOR ERR
4968 015620 ERRF PNF,<PARTITION NOT FOUND>
000052 120 101 122 .ASCIZ \PARTITION NOT FOUND\
000055 124 111 124
000060 111 117 116
000063 040 116 117
000066 124 040 106
000071 117 125 116
000074 104 000
015620 012746 000052' MOV #$$$,-(SP)
015624 004737 017012' JSR PC,TYPMSG
015630 000416 BR CLSFIL
4969 ;
4971 015632 IPAERR: ERRF IPA,<INVALID PARITITION ADR>
000076 111 116 126 .ASCIZ \INVALID PARITITION ADR\
000101 101 114 111
000104 104 040 120
000107 101 122 111
000112 124 111 124
000115 111 117 116
000120 040 101 104
000123 122 000
015632 012746 000076' MOV #$$$,-(SP)
015636 004737 017012' JSR PC,TYPMSG
015642 000411 BR CLSFIL
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 63-1
SETUP STD ENTRY
4973 ;
4974 015644 TTBERR: ERRF TTB,<TASK TOO BIG>
000125 124 101 123 .ASCIZ \TASK TOO BIG\
000130 113 040 124
000133 117 117 040
000136 102 111 107
000141 000
015644 012746 000125' MOV #$$$,-(SP)
015650 004737 017012' JSR PC,TYPMSG
015654 000404 BR CLSFIL
4975 ;
4976 015656 TNCERR: ERR TNC,<TASK FILE NOT CONTIGUOUS>
000142 124 101 123 .ASCIZ \TASK FILE NOT CONTIGUOUS\
000145 113 040 106
000150 111 114 105
000153 040 116 117
000156 124 040 103
000161 117 116 124
000164 111 107 125
000167 117 125 123
000172 000
015656 012746 000142' MOV #$$$,-(SP)
015662 004737 017012' JSR PC,TYPMSG
4977 ;
4978 015666 000575 CLSFIL: BR FILERX ;CLOSE FILE IF FILE OPERN & ERROR
4979 ;
4980 ; PARTITION FOUND-- SAVE THE ADDRESS IN THE STD AND CHECK IT OUT
4981 ;
4982 015670 010524 PARFND: MOV R5,(R4)+ ;(S.TD) SET ADDRESS OF TPD ENTRY
4983 ;
4984 015672 022121 CMP (R1)+,(R1)+ ;(L$BFLG) SKIP TASK FLAGS
4985 015674 005724 TST (R4)+ ;(S.TF) FLAG TASK TO RETSTE ON EXIT
4986 ;
4987 015676 112724 000062 MOVB #DEFPRI,(R4)+ ;NONE-- USE DEFAULT
4988 ;
4989 015702 013700 014416' MOV PUDADR,R0 ;GET THE ADDRESS WHERE WE FOUND OUR FILE
4990 015706 012703 177777 MOV #-1,R3 ;START THE COUNT AT ZERO
4991 015712 162700 000000G SUB #.PUDBA,R0 ;MAKE R0 INDEX INTO PUD
4992 015716 005203 30$: INC R3 ;BUMP THE INDEX
4993 015720 162700 000050 SUB #U.SZ,R0 ;DIVIDE PUD ADDRESS
4994 015724 002374 BGE 30$ ; BY THE ENTRY SIZE
4995 015726 110324 MOVB R3,(R4)+ ;(S.DI) SYSTEM DISK INDICATOR
4996 ;
4997 015730 016524 000000G MOV T.BA(R5),(R4)+ ;(S.BA) BASE ADDRESS OF TASK (NO KT-11)
5001 015734 012114 MOV (R1)+,(R4) ;(L$BLDZ) (S.LZ) LOAD SIZE OF TASK
5002 015736 006314 ASL (R4) ;MAKE IT REAL ADDRESS (*64)
5003 015740 006314 ASL (R4) ; . .
5004 015742 006314 ASL (R4) ; . .
5005 015744 006314 ASL (R4) ; . .
5006 015746 006314 ASL (R4) ; . .
5007 015750 006324 ASL (R4)+ ; . .
5009 015752 012114 MOV (R1)+,(R4) ;(L$BMXZ) (S.MZ) MAXIMUM SIZE OF TASK
5011 015754 006314 ASL (R4) ;MAKE REAL ADDRESS (*64)
5012 015756 006314 ASL (R4) ; . .
5013 015760 006314 ASL (R4) ; . .
5014 015762 006314 ASL (R4) ; . .
5015 015764 006314 ASL (R4) ; . .
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 63-2
SETUP STD ENTRY
5016 015766 006314 ASL (R4) ; . .
5018 015770 026524 000000G CMP T.PZ(R5),(R4)+ ;WILL TASK FIT IN PARTITION SPECIFIED?
5019 015774 103723 BLO TTBERR ;NO-- DON'T TRY TO INSTALL IT
5021 015776 026521 000000G CMP T.BA(R5),(R1)+ ;(L$BSA) IS TASK ADDRESS SAME AS PARTITION ADDRESS?
5022 016002 001313 BNE IPAERR ;NO-- DON'T INSTALL IT
5026 ;
5027 016004 016224 000076 MOV H.IPC(R2),(R4)+ ;(S.PC) SET INTIAL PC FROM HEADER
5028 016010 016224 000100 MOV H.ISP(R2),(R4)+ ;(S.SP) ALSO INITIAL SP
5029 016014 022424 CMP (R4)+,(R4)+ ;MOVE OVER SEND/REQUEST LISTHEAD
5030 016016 005024 CLR (R4)+ ;(S.SS) SST VECTOR TABLE ADDRESS
5031 ;
5032 016020 013714 014472' MOV FILADR+0,(R4) ;(S.DL+0) DISK ADDRESS OF TASK IMAGE
5033 016024 012400 MOV (R4)+,R0 ;COPY IT IN CASE IT'S ZERO
5034 016026 013714 014474' MOV FILADR+2,(R4) ;(S.DL+2) SECOND HALF OF DISK ADDRESS
5035 016032 051400 BIS (R4),R0 ;WERE BOTH WORDS ZERO?
5036 016034 001710 BEQ TNCERR ;YES-- TASK FILE IS NOT CONTIGUOUS
5037 016036 062114 ADD (R1)+,(R4) ;(L$BHRB) + RELATIVE BLOCK IN FILE= REAL ADDRESS
5038 016040 005544 ADC -(R4) ;ADD THE CARRY BACK TO HIGH ORDER WORD
5039 ;
5040 016042 012137 014422' MOV (R1)+,LBLNUM ;(L$BBLK) SAVE # BLOCKS IN LABEL GROUP FOR LATER
5041 ; BR SETLUN ;NOW SET UP THE LUN'S
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 64
SETUP LOGICAL UNIT TABLE FOR TASK
5043 .SBTTL SETUP LOGICAL UNIT TABLE FOR TASK
5044 ;
5045 ; LOOP THROUGH SECOND AND THIRD LABEL BLOCKS FOR ALL 255 LUNS
5046 ; R2 -- ADDRESS OF HEADER BLOCK BUFFER
5047 ;
5048 016046 062702 000130 SETLUN: ADD #H.NLUN,R2 ;POINT TO # LUNS, AND LUN TABLE IN HEADER
5049 016052 012205 MOV (R2)+,R5 ;(H.NLUN) GET # LUNS TO SET UP, POINT TO LUN TABLE IN HEADER
5050 016054 001471 BEQ 80$ ;NONE-- JUST CLOSE FILE
5051 016056 013701 014426' MOV LBLBFE,R1 ;FORCE READ OF NEXT LABEL BLOCK
5052 ;
5053 ; SEE IF WE MUST WRITE OUT THIS BLOCK AND READ NEXT BLOCK OF HEADER
5054 ;
5055 016062 10$: CALL NXTHDR ;GO ON TO NEXT BLOCK?
016062 004737 016602' JSR PC,NXTHDR
5056 016066 103471 BCS FILERR ;FAILED
5057 ;
5058 ; SEE IF WE NEED TO READ ANOTHER LABEL BLOCK
5059 ;
5060 016070 020137 014426' 20$: CMP R1,LBLBFE ;HAVE WE FINISHED THIS LABEL BLOCK?
5061 016074 103410 BLO 30$ ;NO-- JUST GET ANOTHER ENTRY FROM IT
5062 016076 005004 CLR R4 ;YES-- ASSUME NO MORE TO DO
5063 016100 023737 014420' 014422' CMP LBLBLK,LBLNUM ;HAVE WE RUN OUT OF LABEL BLOCKS?
5064 016106 002043 BGE 60$ ;YES-- READ NO MORE-- JUST ZERO
5065 016110 CALL REDLBL ;YES-- READ NEXT ONE
016110 004737 016660' JSR PC,REDLBL
5066 016114 103456 BCS FILERR ;SPLAT
5067 ;
5068 ; FIND THE PUD ADDRESS OF THE DEVICE FROM THE LABEL BLOCK
5069 ;
5070 016116 005711 30$: TST (R1) ;IS THIS A ZERO ENTRY?
5071 016120 001434 BEQ 40$ ;YES-- JUST STORE ZERO
5072 016122 013704 014416' MOV PUDADR,R4 ;ASSUME DEVICE OV
5073 016126 022711 053117 CMP #"OV,(R1) ;THIS OVERLAY DEVICE?
5074 016132 001430 BEQ 50$ ;YES-- WE HAVE PUD ADDRESS
5075 ;
5076 016134 012704 000000G 31$: MOV #.PUDBA,R4 ;NO-- START SEARCHING THROUGH THE PUD
5077 ;
5078 016140 021164 000000G 33$: CMP (R1),U.DN(R4) ;THIS OUR DEVICE?
5079 016144 001004 BNE 35$ ;NO-- TRY ANOTHER ONE
5080 016146 126164 000002 000000G CMPB 2(R1),U.UN(R4) ;YES-- RIGHT UNIT #
5081 016154 001417 BEQ 50$ ;YES-- WE HAVE PUD ADDRESS IN R4
5082 ;
5083 016156 062704 000050 35$: ADD #U.SZ,R4 ;NO-- BUMP TO NEXT PUD ENTRY
5084 016162 020427 000000G CMP R4,#.PUDEA ;END OF PUD YET?
5085 016166 103764 BLO 33$ ;NO-- LOOK AT THIS ENTRY
5086 ;
5087 016170 012704 014612' MOV #CNVTBL,R4 ;ENTRY NOT FOUND-- SEE IF CONVERTIBLE DEVICE
5088 ;
5089 016174 022411 37$: CMP (R4)+,(R1) ;DEVICE MATCH?
5090 016176 001403 BEQ 38$ ;YES-- GET THE CONVERTED NAME AND GO AWAY
5091 016200 005724 TST (R4)+ ;NO-- IS THIS END OF TABLE?
5092 016202 001374 BNE 37$ ;NO-- KEEP ON LOOKING
5093 016204 000402 BR 40$ ;YES-- DEVICE NOT FOUND-- STORE 0
5094 ;
5095 016206 011411 38$: MOV (R4),(R1) ;DEVICE FOUND IN CONVERSION TABLE--
5096 016210 000751 BR 31$ ; SAVE AS NEW DEVICE AND SCAN PUD FOR IT
5097 ;
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 64-1
SETUP LOGICAL UNIT TABLE FOR TASK
5098 016212 005004 40$: CLR R4 ;ENTRY NOT FOUND-- CLEAR THE PUD ADDRESS
5099 ;
5100 016214 022121 50$: CMP (R1)+,(R1)+ ;SKIP OVER ENTRY IN LABEL BLOCK
5101 ;
5102 016216 010422 60$: MOV R4,(R2)+ ;STORE THE PUD ADDRESS IN LUT IN HEADER
5103 016220 CALL NXTHDR ;SEE IF WE NEED ANOTHER HEADER BLOCK
016220 004737 016602' JSR PC,NXTHDR
5104 016224 103412 BCS FILERR ;I/O ERROR-- GIVE UP
5105 016226 005022 CLR (R2)+ ;CLEAR SECOND WORD OF HEADER ENTRY
5106 ;
5107 016230 077564 SOB R5,10$ ;LOOP FOR ALL LUNS IN HEADER
5108 016232 CALL WRTHDR ;WRITE OTU THE LAST HEADER BLOCK
016232 004737 016630' JSR PC,WRTHDR
5109 016236 103405 BCS FILERR ;FAILED
5110 ;
5111 ; ALL DONE WITH THE TASK FILE-- CLOSE IT UP
5112 ;
5113 016240 80$: CALL RETBUF ;RETURN THE BUFFERS
016240 004737 016376' JSR PC,RETBUF
5114 016244 CALL FILCLS ;CLOSE THE FILE
016244 004737 016720' JSR PC,FILCLS
5115 016250 103075 BCC REQTSK ;OK-- GO PUT US IN THE STD
5116 ;
5117 ; ALL FILE I/O ERRORS END UP HERE
5118 ;
5119 016252 FILERR: ERR IOE,<WRITE LOCKED DEVICE OR I/O ERROR ON TASK FILE>
000173 127 122 111 .ASCIZ \WRITE LOCKED DEVICE OR I/O ERROR ON TASK FILE\
000176 124 105 040
000201 114 117 103
000204 113 105 104
000207 040 104 105
000212 126 111 103
000215 105 040 117
000220 122 040 111
000223 057 117 040
000226 105 122 122
000231 117 122 040
000234 117 116 040
000237 124 101 123
000242 113 040 106
000245 111 114 105
000250 000
016252 012746 000173' MOV #$$$,-(SP)
016256 004737 017012' JSR PC,TYPMSG
5120 016262 FILERX: CALL FILCLS ;GIVE CLOSE A TRY
016262 004737 016720' JSR PC,FILCLS
5121 ;
5122 016266 012746 016556' RETNOD: MOV #ALLDON,-(SP) ;RETURN ALL BUFFERS AND STD NODE
5123 016272 .INH0 ;;OTHER ERROR-- MUST REMOVE TASK FROM THE STD
016272 013746 177776 MOV @#PS,-(SP)
016276 112737 000140 177776 MOVB #140,@#PS
5124 016304 012701 014364' MOV #REQBLK,R1 ;FIND THE STD OF THIS TASK
5125 016310 CALL ..FSTD
016310 004737 000000G JSR PC,..FSTD
5126 016314 001015 BNE 60$ ;CAN'T FIND IT?????
5127 016316 162737 000002 000000G SUB #2,.STDTZ ;;ONE LESS ENTRY IN THE STD NOW
5128 016324 013705 000000G MOV .STDTZ,R5 ;; SO GET NEW LENGTH
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 64-2
SETUP LOGICAL UNIT TABLE FOR TASK
5129 016330 063705 000000G ADD .STDTA,R5 ;;MAKE ADDRESS OF LAST ENTRY IN THE TABLE
5130 016334 005743 TST -(R3) ;;BACK UP THE POINTER
5131 ;
5132 016336 020305 50$: CMP R3,R5 ;;AT END OF TABLE YET?
5133 016340 101003 BHI 60$ ;;YES-- ALL DONE
5134 016342 016323 000002 MOV 2(R3),(R3)+ ;;NO-- MOVE ANOTHER ENTRY DOWN
5135 016346 000773 BR 50$ ;;LOOP TO MOVE WHOLE TABLE DOWN
5136 ;
5137 016350 60$: .ENB0 ;;RESTORE TASK SWITCHING
016350 004737 000000G JSR PC,..ENB0
5138 ;
5139 ; RETALL -- RETURN ALL BUFFERS AND STD NODE
5140 ;
5141 016354 013701 014376' RETALL: MOV STDADR,R1 ;GET THE STD ADDRESS
5142 016360 001406 BEQ RETBUF ;NONE-- JUST RETURN THE BUFFERS
5143 016362 012704 000000G MOV #.POLLH,R4 ;ADD IT TO THE FREE POOL
5144 016366 CALL ..NADD ;PUT IT BACK
016366 004737 000000G JSR PC,..NADD
5145 016372 005037 014376' CLR STDADR ;NO MORE STD NODE
5146 ;
5147 016376 012701 001000 RETBUF: MOV #512.,R1 ;SET TO RETURN A BLOCK
5148 016402 012703 000000G MOV #.BGBUF,R3 ; TO THE BIG BUFFER LIST HEAD
5149 016406 013700 014424' MOV LBLBUF,R0 ;GET ADDRESS OF LABEL BLOCK BUFFER
5150 016412 001402 BEQ 20$ ;NONE-- TRY HEADER BUFFER
5151 016414 CALL ..DEC2 ;DE-ALLOCATE THE BUFFER
016414 004737 000000G JSR PC,..DEC2
5152 ;
5153 016420 013700 014432' 20$: MOV HDRBUF,R0 ;ALSO THE HEADER BUFFER
5154 016424 001402 BEQ CLRBUF ;NONE-- JUST CLEAN UP
5155 016426 CALL ..DEC2 ;DE-ALLOCATE THE HEADER BUFFER
016426 004737 000000G JSR PC,..DEC2
5156 ;
5157 016432 005037 014424' CLRBUF: CLR LBLBUF ;NO MORE LABEL BUFFER
5158 016436 005037 014432' CLR HDRBUF ; OR HEADER BUFFER
5159 016442 RETURN ;THAT'S IT
016442 000207 RTS PC
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 65
RE-REQUEST TASK
5161 .SBTTL RE-REQUEST TASK
5162 ;
5163 ; TASK REQUEST BLOCK IS STILL SET UP FROM CALL
5164 ;
5165 016444 REQTSK: .INH0 ;INHIBIT TASK SWITCHING
016444 013746 177776 MOV @#PS,-(SP)
016450 112737 000140 177776 MOVB #140,@#PS
5166 016456 013704 014376' MOV STDADR,R4 ;FIND STD ADDRESS
5167 016462 042764 040001 000000G BIC #SF.TA!SF.IR,S.FW(R4) ;CLEAR ACTIVE BIT SO IT CAN BE REQUESTED
5168 016470 012700 014364' MOV #REQBLK,R0
5169 016474 RQST$S R0,,REQBLK+10 ;RE-REQUEST TASK
016474 005046 CLR -(SP)
016476 013746 014374' MOV REQBLK+10,-(SP)
016502 005046 CLR -(SP)
016504 005046 CLR -(SP)
016506 016046 000002 MOV 2(R0),-(SP)
016512 011046 MOV (R0),-(SP)
016514 012746 MOV (PC)+,-(SP)
016516 013 007 .BYTE 11.,7
016520 104375 EMT 375
5170 016522 .ENB0 ;ENABLE TASK SWITCHING
016522 004737 000000G JSR PC,..ENB0
5171 016526 005737 000000G TST $DSW ;SUCCESS/FAILURE?
5172 016532 100011 BPL ALLDON ;SUCCESS -- ALL OK
5173 ;
5174 ; REQUEST FAILED-- IF TASK ALREADY ACTIVE, THAT'S OK
5175 ;
5176 016534 023727 000000G 177771 CMP $DSW,#IE.ACT ;TASK ALREADY ACTIVE?
5177 016542 001405 BEQ ALLDON ;YES-- WE ARE HAPPY
5178 ;
5179 016544 ERRN TRF,<TASK REQUEST FAILED>
000251 124 101 123 .ASCIZ \TASK REQUEST FAILED\
000254 113 040 122
000257 105 121 125
000262 105 123 124
000265 040 106 101
000270 111 114 105
000273 104 000
016544 012746 000251' MOV #$$$,-(SP)
016550 004737 017012' JSR PC,TYPMSG
016554 000644 BR RETNOD
5180 ;
5181 ; ALL DONE-- GO BACK TO WAITING
5182 ;
5183 016556 000137 014636' ALLDON: JMP INSTAL ;RETURN AND EXIT IF NO MORE TO DO
5184 ;
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 66
TASK FILE I/O ROUTINES
5186 .SBTTL TASK FILE I/O ROUTINES
5187 ;
5188 ; FILFNA -- DO A 'FIND NAME IN DIRECTORY' FUNCTION TO FIND A FILE
5189 ; FILBLK -- FILE-NAME BLOCK SET UP FOR DESIRED FILE
5190 ;
5191 016562 012700 004400 FILFNA: MOV #IO.FNA,R0 ;DO A FIND FILE IN DIRECTORY
5192 016566 005001 CLR R1 ;NO FILE-ID
5193 016570 005002 CLR R2 ;NO ATTRIBUTES
5194 016572 005003 CLR R3 ;NO ACCESS
5195 016574 012704 014436' MOV #FILBLK,R4 ;SET TO DO IT TO THE RIGHT FILE
5196 016600 000454 BR FILQIO ;GO DO IT AND RETURN
5197 ;
5198 ; NXTHDR -- ROUTINE TO WRITE OUT CURRENT HEADER BLOCK AND READ NEXT ONE
5199 ; IF AT END OF BLOCK.
5200 ; R2 -- POINTER TO HEADER BUFFER (HDR). UPDATED TO HDR+0 IF END OF BLOCK
5201 ;
5202 016602 023702 014434' NXTHDR: CMP HDRBFE,R2 ;END OF HEADER BUFFER?
5203 016606 101023 BHI RETXXX ;NO-- JUST RETURN
5204 016610 CALL WRTHDR ;YES-- WRITE OUT OLD HEADER
016610 004737 016630' JSR PC,WRTHDR
5205 016614 103420 BCS RETXXX ;ERROR-- RETURN WITH IT
5206 ; BR REDHDR ;READ THE NEXT ONE
5207 ;
5208 ; REDHDR -- READ NEXT HEADER BLOBK
5209 ;
5210 016616 005237 014430' REDHDR: INC HDRBLK ;BUMP TO NEXT BLOCK OF HEADER
5211 016622 012700 010400 MOV #IO.RVB,R0 ;DO A READ
5212 016626 000402 BR RWRHDR ;DO IT TO HEADER BLOCK
5213 ;
5214 ; WRTHDR -- WRITE CURRENT HEADER BLOCK
5215 ;
5216 016630 012700 011000 WRTHDR: MOV #IO.WVB,R0 ;DO A WRITE
5217 ; BR RWRHDR ;READ/WRITE A BLOCK
5218 ;
5219 ; RWRHDR -- READ/WRITE HEADER BLOCK
5220 ; R0 -- READ/WRTIE FUNCTION CODE
5221 ;
5222 016634 RWRHDR: PUSH R1 ;SAVE THE LABEL POINTER
016634 010146 MOV R1,-(SP)
5223 016636 013701 014432' MOV HDRBUF,R1 ;POINT TO HEADER BUFFER
5224 016642 013703 014430' MOV HDRBLK,R3 ;SET PROPER VBN
5225 016646 CALL RWRBLK ;DO A BLOCK
016646 004737 016712' JSR PC,RWRBLK
5226 016652 010102 MOV R1,R2 ;POINT R2 TO HDR BUFFER
5227 016654 POP R1 ;RESTORE LABEL POINTER
016654 012601 MOV (SP)+,R1
5228 016656 RETXXX: RETURN ;WITH CC-C SET/CLEAR BY RWRBLK
016656 000207 RTS PC
5229 ;
5230 ; REDLBL -- READ NEXT LABEL BLOCK
5231 ;
5232 016660 REDLBL: PUSH R2 ;SAVE THE HEADER POINTER
016660 010246 MOV R2,-(SP)
5233 016662 012700 010400 MOV #IO.RVB,R0 ;DO A READ
5234 016666 013701 014424' MOV LBLBUF,R1 ; TO THE LABEL BUFFER
5235 016672 005237 014420' INC LBLBLK ;BUMP TO NEXT LABEL BLOCK
5236 016676 013703 014420' MOV LBLBLK,R3 ; AND SAVE AS VBN TO READ
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 66-1
TASK FILE I/O ROUTINES
5237 016702 CALL RWRBLK ;READ THE BLOCK
016702 004737 016712' JSR PC,RWRBLK
5238 016706 POP R2 ;RESTORE THE HEADER POINTER
016706 012602 MOV (SP)+,R2
5239 016710 RETURN ;CC-C SET/CLEAR BY RWRBLK, R1 POINTS TO LBL BUFFER
016710 000207 RTS PC
5240 ;
5241 ; RWRBLK -- READ/WRITE A BLOCK
5242 ; R0 -- READ/WRITE FUNCTION CODE
5243 ; R1 -- ADDRESS OF BUFFER
5244 ; R3 -- VIRTUAL BLOCK NUMBER IN TASK FILE
5245 ;
5246 016712 012702 001000 RWRBLK: MOV #512.,R2 ;SET TO READ ONE BLOCK
5247 016716 000405 BR FILQIO ;DO IT TO TASK FILE
5248 ;
5249 ; FILCLS -- DE-ACCESS THE TASK FILE
5250 ;
5251 016720 012700 010000 FILCLS: MOV #IO.DAC,R0 ;DE-ACCESS FUNCTION
5252 016724 005001 CLR R1 ;NO FILE-ID BLOCK
5253 016726 005002 CLR R2 ;NO ATTRIBUTES ALLOWED
5254 016730 005004 CLR R4 ;NO FILE-NAME BLOCK EITHER
5255 ; BR FILQIO ;DO IT TO TASK FILE
5256 ;
5257 ; FILQIO -- PERFORM QUEUE I/O FUNCTION ON THE TASK FILE
5258 ; R0 -- FUNCTION CODE
5259 ; R1 -- PARAMETER #1 (FILE-ID BLOCK OR BUFFER ADDRESS)
5260 ; R2 -- PARAMETER #2 (ATTRIBUTE CONTROL BLOCK OR BUFFER LENGTH)
5261 ; R3 -- PARAMETER #5 (ACCESS CONTROL OR VIRTUAL BLOCK NUMBER)
5262 ; R4 -- PARAMETER #6 (FILENAME BLOCK)
5263 ;
5264 ; CC-C CLEAR IF SUCCESS, SET IF FAILURE.
5265 ;
5266 016732 FILQIO: QIOW$S R0,#TSKLUN,#E.FQIO,,#QIOSTS,,<R1,R2,,,R3,R4>
016732 010446 MOV R4,-(SP)
016734 010346 MOV R3,-(SP)
016736 005046 CLR -(SP)
016740 005046 CLR -(SP)
016742 010246 MOV R2,-(SP)
016744 010146 MOV R1,-(SP)
016746 005046 CLR -(SP)
016750 012746 014476' MOV #QIOSTS,-(SP)
016754 005046 CLR -(SP)
016756 112716 000001 MOVB #E.FQIO,(SP)
016762 012746 000002 MOV #TSKLUN,-(SP)
016766 010046 MOV R0,-(SP)
016770 012746 MOV (PC)+,-(SP)
016772 003 014 .BYTE 3,$$$T1
016774 104375 EMT 375
5267 016776 103404 BCS 90$ ;GIVE UP
5268 ;
5269 017000 105737 014476' 30$: TSTB QIOSTS+0 ;I/O SUCCESSFUL?
5270 017004 002001 BGE 90$ ;YES-- JUST RETURN WITH CC-C CLEAR
5271 ;
5272 017006 000261 80$: SEC ;NO-- RETURN ERROR
5273 017010 90$: RETURN ;RETURN FROM FILQIO
017010 000207 RTS PC
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 67
ERROR PROCESSING
5275 .SBTTL ERROR PROCESSING
5276 ;
5277 ; TYPMSG -- TYPE A MESSAGE
5278 ;
5279 ; CALL: PUSH #<ADDRESS OF ASCIZ TEXT>
5280 ; CALL TYPMSG
5281 ;
5282 017012 TYPMSG: PUSH <R0,R1,R2,R3,R4> ;SAVE USED REGISTERS
017012 010046 MOV R0,-(SP)
017014 010146 MOV R1,-(SP)
017016 010246 MOV R2,-(SP)
017020 010346 MOV R3,-(SP)
017022 010446 MOV R4,-(SP)
5283 017024 012704 014502' MOV #TYPBUF,R4 ;SET ADDRESS OF TYPEOUT BUFFER
5284 017030 012703 017322' MOV #INSMSG,R3 ;GET 'INS --'
5285 017034 CALL PUTSTR ;PUT IT IN STRING
017034 004737 017214' JSR PC,PUTSTR
5286 017040 016603 000014 MOV 14(SP),R3 ;GET ADDRESS OF THE TEXT TO TYPE
5287 017044 CALL PUTSTR ;TYPE IT
017044 004737 017214' JSR PC,PUTSTR
5288 017050 012703 017334' MOV #TSKMSG,R3 ;GET 'TSK= '
5289 017054 CALL PUTSTR ;PUT IT TOO
017054 004737 017214' JSR PC,PUTSTR
5290 017060 012703 014364' MOV #REQBLK,R3 ;POINT TO .RAD50 /TASK-NAME/
5291 017064 CALL PUTR50 ;PUT IT IN THERE, TOO
017064 004737 017224' JSR PC,PUTR50
5292 017070 013702 014376' MOV STDADR,R2 ;GET THE ADDRESS OF THE STD
5293 017074 016202 000000G MOV S.TD(R2),R2 ;GET ADDRESS OF .RAD50/PARTITION/
5294 017100 001407 BEQ 20$ ;NONE-- SKIP THIS
5295 017102 012703 017343' MOV #PARMSG,R3 ;SAY 'PAR= '
5296 017106 CALL PUTSTR ; . .
017106 004737 017214' JSR PC,PUTSTR
5297 017112 010203 MOV R2,R3 ;GET THE NAME ADDRESS
5298 017114 CALL PUTR50 ;PUT IT IN STRING
017114 004737 017224' JSR PC,PUTR50
5299 ;
5300 017120 112724 000012 20$: MOVB #12,(R4)+ ;STORE LF
5301 017124 112724 000015 MOVB #15,(R4)+ ;STORE CR
5302 017130 012700 014502' MOV #TYPBUF,R0 ;GET ADDRESS OF BUFFER BACK
5303 017134 160004 SUB R0,R4 ;COMPUTE LENGTH OF STRING
5304 017136 QIOW$S #IO.WLB,#CTYLUN,#E.FQIO,,,,<R0,R4,#40>
017136 012746 000040 MOV #40,-(SP)
017142 010446 MOV R4,-(SP)
017144 010046 MOV R0,-(SP)
017146 005046 CLR -(SP)
017150 005046 CLR -(SP)
017152 005046 CLR -(SP)
017154 112716 000001 MOVB #E.FQIO,(SP)
017160 012746 000001 MOV #CTYLUN,-(SP)
017164 012746 000400 MOV #IO.WLB,-(SP)
017170 012746 MOV (PC)+,-(SP)
017172 003 011 .BYTE 3,$$$T1
017174 104375 EMT 375
5305 017176 POP <R4,R3,R2,R1,R0> ;RESTORE THE REGISTERS
017176 012604 MOV (SP)+,R4
017200 012603 MOV (SP)+,R3
017202 012602 MOV (SP)+,R2
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 67-1
ERROR PROCESSING
017204 012601 MOV (SP)+,R1
017206 012600 MOV (SP)+,R0
5306 017210 POP (SP) ;RESTORE PC OVER MESSAGE ADDRESS
017210 012616 MOV (SP)+,(SP)
5307 017212 RETURN ;THAT'S IT FOR TYPMSG
017212 000207 RTS PC
5308 ;
5309 ; PUTSTR -- PUT STRING IN TYPE-OUT BUFFER
5310 ; R3 -- ADDRESS OF ASCIZ STRING
5311 ; R4 -- CURRENT POINTER TO TYPE-OUT BUFFER
5312 ;
5313 017214 112324 PUTSTR: MOVB (R3)+,(R4)+ ;COPY A CHARACTER
5314 017216 001376 BNE PUTSTR ; UNTIL ASCIZ
5315 017220 105744 TSTB -(R4) ;BACK OVER ZERO BYTE
5316 017222 RETURN ;RETURN FROM PUTSTR
017222 000207 RTS PC
5317 ;
5318 ; PUTR50 -- PUT RADIX 50 NAME IN TYPE-OUT BUFFER
5319 ; R3 -- ADDRESS OF TWO-WORD RADIX 50 BLOCK
5320 ; R4 -- CURRENT POINTER TO TYPE-OUT BUFFER
5321 ;
5322 017224 012300 PUTR50: MOV (R3)+,R0 ;GET FIRST 3 CHARS
5323 017226 CALL PUTR51 ;TYPE 'EM
017226 004737 017234' JSR PC,PUTR51
5324 017232 012300 MOV (R3)+,R0 ;GET NEXT THREE CHARS
5325 ; BR PUTR51 ;PUT THEM, TOO
5326 ;
5327 ; PUTR51 -- PUT 3 RADIX 50 CHARACTERS IN TYPE-OUT BUFFER
5328 ; R0 -- RADIX 50 TEXT
5329 ; R4 -- CURRENT POINTER TO TYPE-OUT BUFFER
5330 ;
5331 017234 012702 017276' PUTR51: MOV #T50TBL,R2 ;POINT TO TABLE OF DIVISORS
5332 ;
5333 017240 012201 20$: MOV (R2)+,R1 ;GET NEXT DIVISOR
5334 017242 001414 BEQ 90$ ;THREE HAVE BEEN DONE-- RETURN
5335 017244 CALL $DIV ;DIVIDE CURRENT TEXT BY 50**N
017244 004737 000032' JSR PC,$DIV
5336 017250 PUSH R1 ;SAVE THE REMAINDER
017250 010146 MOV R1,-(SP)
5337 017252 012701 017306' MOV #R50TBL,R1 ;POINT TO CONVERSION TABLE
5338 ;
5339 017256 061100 30$: ADD (R1),R0 ;CONVERT THE CHARACTER
5340 017260 105721 TSTB (R1)+ ;SKIP THE BYTE
5341 017262 120021 CMPB R0,(R1)+ ;HAVE WE FOUND THE CHAR YET?
5342 017264 103774 BLO 30$ ;NO-- LOOP UNTIL WE DO
5343 ;
5344 017266 110024 MOVB R0,(R4)+ ;YES-- SAVE THE CHAR IN TEXT
5345 017270 POP R0 ;RESTORE LAST REMAINDER AS NEW DIVIDEND
017270 012600 MOV (SP)+,R0
5346 017272 000762 BR 20$ ;GET ANOTHER CHARACTER
5347 ;
5348 017274 90$: RETURN ;FROM PUTR50/PUTR51
017274 000207 RTS PC
5349 ;
5350 017276 003100 000050 000001 T50TBL: .WORD 50*50,50,1,0 ;TABLE OF DIVISORS
017304 000000
5351 ;
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 67-2
ERROR PROCESSING
5352 017306 022 060 R50TBL: .BYTE <'0-36>-<50-50>,'0 ;36-47: 0-9
5353 017310 366 045 .BYTE <'%-35>-<'0-36>,'% ;35 : %
5354 017312 012 056 .BYTE <'.-34>-<'%-35>,'. ;34 : .
5355 017314 367 044 .BYTE <'$-33>-<'.-34>,'$ ;33 : $
5356 017316 067 101 .BYTE <'A-01>-<'$-33>,'A ;01-32: A-Z
5357 017320 340 040 .BYTE <' -00>-<'A-01>,' ;00 : <SPACE>
5358 .EVEN
5359 ;
5360 017322 015 012 111 INSMSG: .ASCIZ <15><12>/INS -- /
017325 116 123 040
017330 055 055 040
017333 000
5361 017334 040 040 124 TSKMSG: .ASCIZ / TSK=/
017337 123 113 075
017342 000
5362 017343 040 120 101 PARMSG: .ASCIZ / PAR=/
017346 122 075 000
5363 .EVEN
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 68
END STATEMENT
5365 .SBTTL END STATEMENT
5366 000001 .END
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 68-1
SYMBOL TABLE
AC.ENA= 000200 CDSIEN= 000100 DBIOD 000370R DR.DTE= 000011 EF.CRC= 000001
ADRSAV= ****** GX CDSNXM= 001000 DCK = 100000 DSEND = 000004 EF.CRD= 000002
ALLDON 016556R CDSOFL= 010000 DCOMST= 000001 DS04 = 004000 EF.CRS= 000004
AOE = 001000 CDSPAK= 000002 DD.CHI= 000002 DS05 = 002000 EF.IOD= ****** GX
ATCBLK 014576R CDSPWC= 000400 DD.HEM= 000010 DS06 = 001000 EF.LPC= 000002
A.EF = 000020 CDSRCK= 040000 DD.LER= 000010 DTE = 010000 EF.LPD= 000001
A.HA = ****** GX CDSRDY= 000200 DD.OVF= 000020 DTECMD= 000451 EF.LPQ= 000004
BCFHDS 011212R CDSRED= 000001 DD.PCK= 000002 DTEFLG= 000444 EF.LPS= 000020
BCFILF 011146R CDST = ****** GX DD.PGZ= 000001 DTEF11= 000450 EF.LPW= 000040
BCFLDR 011232R CDSTOL= 000010 DD.RCK= 000001 DTEMTD= 000455 EF.NIR= ****** GX
BCFLDV 011240R CHNPNT= 000001 DD.RME= 000040 DTEMTI= 000456 EF.PR1= ****** GX
BCFRDS 011146R CHRINT= 020000 DD.SCK= 000004 DUNS 000460R EF.QIO= 000001
BCFSDO 011172R CLIOD 000374R DD.SFL= 000020 DUPE = 000020 EF.SEP= 100000
BCFSTR 011254R CLRBUF 016432R DD.VFE= 000004 DURE = 000004 EF.TEF= 000400
BCFTAB 011130R CLSFIL 015666R DEFPRI= 000062 DVA = 004000 EMPTY = 000003
BC.HDS= ****** GX CNUPE = 000002 DELHLD= 002000 DV.EOF= 000040 EPTR = 000000
BC.LDR= ****** GX CNVTBL 014612R DEMTIM= 000002 DV.F11= 000400 ERMHER 010041R
BC.LDV= ****** GX CPE = 000010 DEP = 010000 DV.HNG= 001000 ERMHNG 010056R
BC.RDS= ****** GX CRBFLN= ****** GX DEX = 000400 DV.IOP= 000020 ERMNXD 007767R
BC.SDS= ****** GX CRBUFF= ****** GX DEXDON= 000004 DV.LOG= 000100 ERMOFL 010007R
BC.STR= ****** GX CRCEVF= ****** GX DEXWD1= 174406 DV.NXD= 000001 ERMVFE 010022R
BIT0 = 000001 CRDCLR 013626R DEXWD2= 174404 DV.OFL= 000002 ERR = 100000
BIT1 = 000002 CRDINT 013074R DEXWD3= 174402 DV.OIR= 000004 ERR10C= 010000
BIT10 = 002000 CREVFG= ****** GX DFUNC = 000200 DV.SCN= 000010 ERR10S= 020000
BIT11 = 004000 CRHD 012046RG DF.DMG= 000004 DV.URE= 000200 ERR11C= 000001
BIT12 = 010000 CRHUNG= ****** GX DF.DMN= 000007 DXBUF = ****** GX ERR11S= 000002
BIT13 = 020000 CRINI 012424R DF.DOR= 000001 DXCNT = ****** GX EXSP 014356R
BIT14 = 040000 CRIOD 012576R DF.EHG= 000010 DXEXP = 177170 E.FCRB= 000004
BIT15 = 100000 CRLOOP 012510R DF.EHM= 000011 DXFLAG 014356R E.FCRC= 000001
BIT2 = 000004 CRMKT 013044R DF.EMG= 000005 DXHD 001730RG E.FCRD= 000002
BIT3 = 000010 CRMRKT 012346R DF.EMN= 000006 DXINI 002240R E.FCRS= 000003
BIT4 = 000020 CRPWUP 012416R DF.KLR= 000012 DXIOD 002234R E.FLPC= 000002
BIT5 = 000040 CRSSTV 012360R DF.KLW= 000013 DXPKT = ****** GX E.FLPD= 000001
BIT6 = 000100 CRSTBK= ****** GX DF.KLX= 000014 DXRTC = ****** GX E.FLPQ= 000003
BIT7 = 000200 CRSTK 012326RG DF.OFF= 000002 DXRTY 003122R E.FLPS= 000005
BIT8 = 000400 CRSTLN= ****** GX DF.ON = 000003 DXSTK 002210RG E.FLPW= 000006
BIT9 = 001000 CRSTS = ****** GX DF.PDP= 000016 DXTSK = ****** GX E.FQIO= 000001
BLKTT = ****** GX CRTBL = ****** GX DF.PEX= 000015 DXUNIT= ****** GX E.IOD = ****** GX
BPARER= 000020 CRTRP4 012362R DIAG1 = 174430 DXVCB = ****** GX E.NIR = ****** GX
BUFAIL 015372R CR.ACK= 004000 DIAG2 = 174432 DXWD1 = 000006 FCN 004656R
BUSA16= 000020 CR.HNG= 100000 DIAG3 = 174436 DXWD2 = 000004 FCNBD 004664R
BUSA17= 000040 CR.IOD= 010000 DIKL10= 000010 DXWD3 = 000002 FEDRV 003670R
BYTESA= ****** GX CR.IOP= 020000 DLT = 100000 DXWRD1= 002000 FEHD 003370RG
CDBA = ****** GX CR.NSF= 000400 DLYCNT= 174400 D$$H11= 000010 FER = 000020
CDBPCK= 020000 CR.NXD= 001000 DNBLK = ****** GX D.CCDR= ****** GX FESTK 003650RG
CDBRCK= 040000 CR.RHN= 002000 DNFCN = ****** GX D.CLPT= ****** GX FETBL = ****** GX
CDBSCK= 010000 CR.SST= 040000 DNMSG 000442R D.FEPD= ****** GX FETSK = ****** GX
CDCC = ****** GX CS.EXP= 177670 DNSTS = ****** GX D1011 = 000040 FE.DET= 040000
CDD = 000020 CTYLUN= 000001 DONE = 000200 EBSEL = 000100 FE.DTE= 020000
CDDB = ****** GX CYCLS = 000002 DONSTR 004606R EBUSPC= 000020 FE.SER= 004000
CDSB16= 000020 C$$D11= 000001 DON10C= 040000 EBUSPS= 000004 FE.STR= 002000
CDSB17= 000040 C.LEEF= 000002 DON10S= 100000 ECCMSK 000504R FILADR 014472R
CDSDER= 004000 DAG1 = 000030 DON11C= 000100 ECCWRD 000476R FILBLK 014436R
CDSDLT= 002000 DAG2 = 000032 DON11S= 000200 ECH = 000100 FILCLS 016720R
CDSEOF= 020000 DAG3 = 000036 DPS4 = 040000 ECI = 004000 FILERA 015366R
CDSERR= 100000 DATE = 000004 DRESET= 000100 EDONES= 040000 FILERR 016252R
CDSHEM= 000004 DBINI 000512R DRY = 000200 EF.CRB= 000010 FILERX 016262R
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 68-2
SYMBOL TABLE
FILFNA 016562R IE.HFU= 177744 INSMSG 017322R IO.RAL= 001010 IS.SUC= 000001
FILL = 000001 IE.HWR= 177772 INSTAL 014636RG IO.RAT= 013000 KLPWRF= 000010
FILQIO 016732R IE.IDU= 177644 INSTK 014276RG IO.RBC= 003000 LBLBFE 014426R
FMT22 = 010000 IE.IEF= 177637 INTEBL= 000100 IO.RCI= 015000 LBLBLK 014420R
FNDFIL 015126R IE.IFC= 177776 INTENB= 000100 IO.RCV= 015000 LBLBUF 014424R
FORPRO= 000020 IE.IFU= 177747 INTROF= 000010 IO.RDB= 001200 LBLNUM 014422R
GO = 000001 IE.ILL= 177726 INTRON= 000040 IO.RDN= 000022 LOAD11= 000004
GOERR = 000001 IE.ILU= 177640 INTSON= 000001 IO.REL= 013400 LOBYTE= 000377
HCE = 000200 IE.INS= 177776 INT10S= 000400 IO.RHD= 001010 LOINIT= 000400
HCI = 002000 IE.IPR= 177641 INT11C= 002000 IO.RLB= 001000 LPALOC= 000214
HCRC = 000400 IE.ISQ= 177703 INT11S= 004000 IO.RLV= 001100 LPBCTR= 000006 G
HDRBFE 014434R IE.ITI= 177643 IOABT 004624R IO.RNA= 005400 LPBSAD= 000004 G
HDRBLK 014430R IE.ITS= 177770 IODN 004232R IO.RNC= 001004 LPCBUF= 000014 G
HDRBUF 014432R IE.LCK= 177745 IODNCR 014002R IO.RNE= 001020 LPCCTR= 000015 G
HIBYTE= 177400 IE.LNL= 177646 IO.ACE= 007400 IO.RTC= 003400 LPCEVF= ****** GX
H.IPC = 000076 IE.MBK= 177721 IO.ACR= 006400 IO.RTI= 016400 LPCKSM= 000017 G
H.ISP = 000100 IE.MOD= 177753 IO.ACW= 007000 IO.RTK= 000060 LPCSA = ****** GX
H.LUN = 000132 IE.NBF= 177731 IO.ADS= 014000 IO.RVB= 010400 LPCSM = ****** GX
H.LUT = ****** GX IE.NBK= 177727 IO.APC= 014000 IO.RWD= 002400 LPCSRA= 000000 G
H.NLUN= 000130 IE.NFI= 177704 IO.APV= 014010 IO.RWU= 002540 LPCSRB= 000002 G
IAE = 002000 IE.NLN= 177733 IO.ATT= 001400 IO.R1C= 002400 LPDCLR 010476R
IE.ABO= 177761 IE.NNC= 177674 IO.CCI= 014000 IO.SAO= 004000 LPDINT 007046R
IE.ACT= 177771 IE.NOD= 177751 IO.CCT= 002460 IO.SCS= 013000 LPEMSG 007734R
IE.ADP= 177636 IE.NSF= 177746 IO.CLN= 003400 IO.SDI= 013000 LPEMSX 007747R
IE.ALN= 177736 IE.OFL= 177677 IO.CON= 015400 IO.SDO= 012400 LPERUN 007744R
IE.AST= 177660 IE.ONP= 177773 IO.CRC= 001020 IO.SEC= 002520 LPEVFG= ****** GX
IE.BAD= 177777 IE.OVR= 177756 IO.CRE= 012000 IO.SEM= 002440 LPEXPA= ****** GX
IE.BBE= 177710 IE.PRI= 177760 IO.CTI= 015400 IO.SHT= 002410 LPEXPZ= ****** GX
IE.BDI= 177714 IE.RAC= 177724 IO.CTL= 016400 IO.SLO= 005400 LPHD 005130RG
IE.BDR= 177716 IE.RAT= 177723 IO.DAC= 010000 IO.SMO= 002560 LPHUNG= ****** GX
IE.BDV= 177711 IE.RBG= 177730 IO.DCI= 014400 IO.SNM= 002450 LPINI 005520R
IE.BHD= 177700 IE.RCN= 177722 IO.DCT= 002470 IO.SPB= 002420 LPIOD 005672R
IE.BLK= 177754 IE.RER= 177740 IO.DEL= 012400 IO.SPF= 002440 LPITH = ****** GX
IE.BNM= 177712 IE.RNM= 177715 IO.DET= 002000 IO.SSO= 004400 LPLOOP 005604R
IE.BTF= 177675 IE.RSU= 177757 IO.DIS= 016000 IO.SST= 002430 LPMCB = ****** GX
IE.BTP= 177725 IE.SDP= 177635 IO.DTI= 016000 IO.STC= 002500 LPMKT 007012R
IE.BVR= 177701 IE.SNC= 177735 IO.ENA= 006000 IO.STP= 016400 LPMRKT 005430R
IE.BYT= 177755 IE.SPC= 177772 IO.EOF= 003000 IO.SYN= 003040 LPNIR 006552R
IE.CKP= 177766 IE.SQC= 177734 IO.ESA= 002500 IO.TRM= 002410 LPPCTR= 000010 G
IE.CKS= 177742 IE.SRE= 177762 IO.EXT= 011400 IO.UNL= 000042 LPQDPB 007712R
IE.CLO= 177732 IE.STK= 177706 IO.FDX= 003020 IO.WAT= 013400 LPRAMD= 000012 G
IE.CON= 177752 IE.ULN= 177773 IO.FNA= 004400 IO.WLB= 000400 LPRMA = ****** GX
IE.DAA= 177770 IE.UPN= 177777 IO.HDX= 003010 IO.WLS= 000410 LPRMC = ****** GX
IE.DAO= 177763 IE.VER= 177774 IO.HIS= 015000 IO.WLV= 000500 LPRMZ = ****** GX
IE.DFU= 177750 IE.WAC= 177743 IO.INL= 002400 IO.WVB= 011000 LPRTRY= 000012
IE.DNA= 177771 IE.WAT= 177741 IO.ITI= 017000 IO.XMT= 014400 LPRTY = ****** GX
IE.DNR= 177775 IE.WER= 177737 IO.KIL= 000012 IO.XNA= 014410 LPSIZE= ****** GX
IE.DUN= 177767 IE.WLK= 177764 IO.LED= 012000 IPAERR 015632R LPSSTV 005454R
IE.DUP= 177707 IE.2DV= 177720 IO.LOV= 001010 IQ.Q = 000002 LPSTBK= ****** GX
IE.EBX= 177776 IFLOP = 100000 IO.LTK= 000050 IQ.X = 000001 LPSTK 005410RG
IE.EOF= 177766 ILF = 000001 IO.MCS= 013400 IS.BV = 000005 LPSTLN= ****** GX
IE.EOT= 177702 ILFCD 002474R IO.MDA= 016000 IS.CLR= 000000 LPTBL = ****** GX
IE.EOV= 177765 ILR = 000002 IO.MDI= 014400 IS.CR = 006401 LPTDAT= 000016 G
IE.EXP= 177676 INIT = 040000 IO.MDO= 015400 IS.ESC= 015401 LPTHD = ****** GX
IE.FEX= 177717 INITCR 013612RG IO.MLO= 006000 IS.PND= 000000 LPTPAR= 000040
IE.FHE= 177705 INITLP 010426RG IO.MOD= 003000 IS.RDD= 000002 LPTPBT= 010000
IE.FOP= 177713 INSHD 014016RG IO.MSO= 005000 IS.SET= 000002 LPTRP4 005456R
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 68-3
SYMBOL TABLE
LPUNIT= ****** GX ONLINE= 004000 REDLBL 016660R R50TBL 017306R TO11BC= 174416
LPUTBL= ****** GX OPI = 020000 REQBLK 014364R SCD = 000040 TO11BM= 020000
LPWRUP 005512R OPTVFU= 004000 REQTSK 016444R SETBUF 003314R TO11DB= 004000
LP.CLR= 002000 PAGZRO= 040000 RETALL 016354R SETLUN 016046R TO11DN= 000200
LP.EOF= 000200 PARENB= 000002 RETBUF 016376R SETSTD 015536R TO11DT= 174426
LP.F10= 000400 PARFND 015670R RETNOD 016266R SF.IR = 040000 TO11ER= 000002
LP.HNG= 100000 PARMSG 017343R RETRY = 000010 SF.TA = 000001 TR = 000200
LP.LIP= 001000 PBTHRD= 000004 RETXXX 016656R SNSTR 004274R TRE = 040000
LP.MCH= 010000 PERCLR= 001000 RFMAD0= 100000 SSTSCR 013204R TRKSEC 003144R
LP.PZI= 020000 PGE = 002000 RFMAD1= 040000 SSTSLP 007234R TRWAIT 003344R
LP.SST= 040000 PGM = 001000 RFMAD2= 020000 STAT = 174434 TSKFND 015404R
LP.UNT= 000003 PHYBLK= 000040 RFMAD3= 010000 STATD = 000034 TSKLUN= 000002
LP.WAT= 004000 PHYS = 100000 RM = 000010 STATUS= 000022 TSKMSG 017334R
L$BBLK= 000024 PIDENT= 000000 RMR = 000004 STDADR= 014376R TSTMOD= 000001
L$BFLG= 000010 PRI7 = 000340 RPAS = 000016 STSWD = ****** GX TTBERR 015644R
L$BHRB= 000022 PROPNT= 000021 RPBA = 000004 SWR = 177570 TTPEN = ****** GX
L$BLDZ= 000014 PRTOFF= 004000 RPBUF = ****** GX SWSLLT= 100000 TYPBUF 014502R
L$BMXZ= 000016 PR0 = 000000 RPCNT = ****** GX SYFLAG 014357R TYPMSG 017012R
L$BPAR= 000004 PR1 = 000040 RPCS1 = 000000 SYMNTD 015040R T.BA = ****** GX
L$BPRI= 000012 PR2 = 000100 RPCS2 = 000010 SYMNT1 015104R T.HBCT= ****** GX
L$BSA = 000020 PR3 = 000140 RPDA = 000006 SYNTIM= 000004 T.HCAD= ****** GX
L$BTSK= 000000 PR4 = 000200 RPDBR = 000022 S.DRFN= 000034 T.HCBC= ****** GX
L$$P20= 000002 PR5 = 000240 RPDC = 000034 S.FW = ****** GX T.HEMA= 177774
MCPE = 020000 PR6 = 000300 RPDS = 000012 S.TD = ****** GX T.HIBC= 177776
MDPE = 000400 PR7 = 000340 RPDT = 000026 TASKNF 015262R T.HVFC= 177775
MEFCN 004666R PS = 177776 RPEC1 = 000044 TB.ABO= 040000 T.PN = ****** GX
MEMPAR= 000020 PSWW1 = 000005 RPEC2 = 000046 TB.DON= 100000 T.PZ = ****** GX
MKDNR 000404RG PSWW10= 000014 RPER1 = 000014 TB.EOF= 020000 T.SZ = ****** GX
MKSCDP 005442R PSWW11= 000015 RPEXP = 176700 TB.LPC= 010000 T10AD = 000020
MNTBLK 014604R PSWW12= 000016 RPHD 000070RG TB.RMD= 004000 T11AD = 000022
MNTSYD 014704R PSWW13= 000017 RPLA = 000020 TB.SFN= 036000 T11BC = 000016
MODE00= 000004 PSWW2 = 000006 RPMR = 000024 TB.VFD= 002000 T50TBL 017276R
MODE01= 000010 PSWW3 = 000007 RPOF = 000032 TENAD1= 174410 UF.TL = ****** GX
MOL = 010000 PSWW4 = 000010 RPRNA = ****** GX TENAD2= 174412 UNASG1= 000032
MPE11 = 001000 PSWW5 = 000011 RPRTC = ****** GX TESTLP 010236R UNASG2= 000033
MSGDPB 000422R PSWW6 = 000012 RPSN = 000030 TEST00= 000400 UNASG3= 000034
MSGSIZ= 000016 PSWW7 = 000013 RPSTK 000350RG TEST01= 001000 UNASG4= 000035
MXF = 001000 PUDADR 014416R RPTSK = ****** GX TEST02= 002000 UNASG5= 000036
M.KTAE= 000010 PULSE = 000020 RPUNIT= ****** GX TNAD1 = 000010 UNASG6= 000037
M.KTEF= 000002 PUTR50 017224R RPWC = 000002 TNAD2 = 000012 UNIT = 000020
M.KTMG= 000004 PUTR51 017234R RPWLO 000400R TNCERR 015656R UNS = 040000
M.KTUN= 000006 PUTSTR 017214R RSTERR= 001000 TNFERR 015352R UPE = 020000
NED = 010000 QIOSTS 014476R RSX$$E= 000041 TOBM = 000004 U.ACP = ****** GX
NEM = 004000 QSIZE = 000023 RSX$$F= 000105 TOD = 000003 U.DACP= ****** GX
NODADR= ****** GX Q.IOAE= 000012 RSX$$K= 000126 TOIP = 000002 U.DN = ****** GX
NULSTP= 000040 Q.IOEF= 000006 RSX$$V= 000013 TOIT = 000001 U.FB = ****** GX
NUPE = 000002 Q.IOFN= 000002 RWRBLK 016712R TO10 = 000200 U.RP = ****** GX
NXTHDR 016602R Q.IOLU= 000004 RWRHDR 016634R TO10AD= 174420 U.SZ = 000050
NXTSEC 003272R Q.IOPL= 000014 RXCS = 000000 TO10BC= 174414 U.UN = ****** GX
N.DID = 000024 Q.IOPR= 000007 RXDB = 000002 TO10BM= 000001 U.VA = ****** GX
N.FID = 000000 Q.IOSB= 000010 R$$E18= 000001 TO10DB= 000400 VFCFF 007000R
N.FNAM= 000006 RAMIS0= 010000 R$$11D= 000001 TO10DN= 100000 VFCTBL 006776R
N.FTYP= 000014 RAMLOD= 000003 R.AT = ****** GX TO10DT= 174424 VFUERR= 000100
N.FVER= 000016 RAMPAR= 000010 R.DP = ****** GX TO10ER= 020000 VFULOD= 000002
N.NEXT= 000022 RCVBLK 014360R R.FC = ****** GX TO10PK= ****** GX VFURDY= 010000
N.STAT= 000020 READ = 000007 R.LU = ****** GX TO11 = 000100 VV = 000100
OFFLIN= 000200 REDHDR 016616R R.PB = ****** GX TO11AD= 174422 WCE = 040000
INSTAL -- TASK INSTALLER FOR RS MACRO M1110 15-OCT-79 13:59 PAGE 68-4
SYMBOL TABLE
WCF = 000040 $RP04 = 000001 .DSIOJ= 065000 .LPPFL= ****** GX .TPDBA= ****** GX
WEP = 000010 $RX11 = 000001 .EIOJA= 067000 .MEMRS= 076000 .TPDEA= ****** GX
WFDNR 000416RG $TOP10= 000001 .FEACK 004312RG .PCAB1= 150000 .WRMBX= 071000
WFEF1 003362R $T1091= 000001 .FEST 004416RG .PCAB2= 151000 ..AKCR 013766RG
WFPKT 002230R $$ = 000037 .GFNR = 102000 .PCAB3= 152000 ..AKLP 011442RG
WLE = 004000 $$MSG = 000000 .INICL= 070000 .PCAB4= 153000 ..ALC2= ****** GX
WRITE = 000005 $$$ = 000251R 002 .IRLTC= 014000 .POLLH= ****** GX ..DECB= ****** GX
WRL = 004000 $$$ARG= 000003 .LCRDL= 052000 .PUDBA= ****** GX ..DECN= ****** GX
WRTDD = 000015 $$$OST= 000012 .LCRDR= 051000 .PUDEA= ****** GX ..DEC2= ****** GX
WRTHDR 016630R $$$T1 = 000011 .LCRM1= 057000 .RCRM1= 147000 ..DOLP 011664RG
W.TSEF= 000002 $$$T2 = 000000 .LCRM2= 056000 .RCRM2= 146000 ..DOL1 011650RG
ZSTOP = 040000 $$$$ = 000002 .LCRM3= 055000 .RCRM3= 145000 ..DQRN= ****** GX
$CDINT 013636RG .BGBUF= ****** GX .LCRM4= 054000 .RCRM4= 144000 ..DSEV= ****** GX
$CD11 = 000001 .BRCLK= 005000 .LCRM5= 053000 .RCSPF= 141000 ..ENB0= ****** GX
$DBDTE= 000001 .CECLK= 004000 .LDAR = 077000 .RDJ14= 134000 ..FSTD= ****** GX
$DH11 = 000001 .CLRMR= 006000 .LDBRL= 043000 .RDJ71= 135000 ..INTX= ****** GX
$DIRAC= 000001 .CLRUN= 010000 .LDBRR= 042000 .RDMAB= 133000 ..IODN= ****** GX
$DIV 000032RG .COMEF= ****** GX .LDCK1= 046000 .RPUNT= ****** GX ..NADD= ****** GX
$DSW = ****** GX .CONBT= 012000 .LDCK2= 047000 .SECLK= 003000 ..PTLP 011522RG
$DTE = 000001 .CRPFL= ****** GX .LDDIS= 045000 .SETMR= 007000 ..SACK= ****** GX
$DXINT 002732RG .CRTSK= ****** GX .LDRJD= 064000 .SETRN= 011000 ..SPCR 013744RG
$FE = 000001 .CSHRG= 164000 .LDRJV= 063000 .SSCLK= 002000 ..SPLP 011270RG
$F11 = 000001 .CYLTM= 000074 .LDRM1= 060000 .STDTA= ****** GX ..STCR 013722RG
$LPINT 010526RG .DBINT 001236RG .LDRM2= 061000 .STDTZ= ****** GX ..STIN= ****** GX
$LP20 = 000001 .DRLTC= 015000 .LDRM3= 062000 .STPCL= 000000 ..STLP 011060RG
$MUL 000000RG .DSACF= 066000 .LDSEL= 044000 .STRCL= 001000 ...GBL= 000000
. ABS. 000000 000
017352 001
TEXT 000275 002
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 12608 WORDS ( 50 PAGES)
DYNAMIC MEMORY: 13540 WORDS ( 52 PAGES)
ELAPSED TIME: 00:09:30
,[100,20]DRIVERS91.LST/-SP/CRF=[100,30]DRIVERS91.TMP
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 1
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
AC.ENA = 000200 #59-4655 62-4919
ADRSAV = ****** GX *17-1886 18-1941 *18-1946 *19-1980 19-1990 *19-1991
ALLDON 016556 R 64-5122 65-5172 65-5177 #65-5183
AOE = 001000 #6-391 8-677 8-686
ATCBLK 014576 R #60-4699 62-4917
A.EF = 000020 *8-725 #11-1416 *12-1593 *13-1642 17-1836 *17-1838 *19-1998 28-2523 49-4102
A.HA = ****** GX 17-1899 61-4757
BCFHDS 011212 R 38-3553 #38-3589
BCFILF 011146 R 38-3545 #38-3562 38-3583 38-3592
BCFLDR 011232 R 38-3555 #38-3598
BCFLDV 011240 R 38-3556 #38-3604
BCFRDS 011146 R 38-3552 #38-3567
BCFSDO 011172 R 38-3554 #38-3580
BCFSTR 011254 R 38-3551 #38-3617
BCFTAB 011130 R 38-3542 38-3548 #38-3550 38-3551 38-3552 38-3553 38-3554 38-3555 38-3556
BC.HDS = ****** GX 33-3182 38-3553 51-4361
BC.LDR = ****** GX 38-3555
BC.LDV = ****** GX 38-3556
BC.RDS = ****** GX 38-3552
BC.SDS = ****** GX 38-3554
BC.STR = ****** GX 17-1929 19-1965 38-3551 50-4146
BIT0 = 000001 #11-1411 20-2121 #20-2136 21-2227 21-2244 23-2314 23-2330 23-2346 26-2431
28-2509 33-3160 #44-3930 44-3941 45-3971 49-4091 #59-4589 59-4632
BIT1 = 000002 #11-1411 20-2123 #20-2136 21-2226 21-2243 23-2315 23-2331 23-2347 26-2431
#44-3930 44-3943 45-3970 #59-4589
BIT10 = 002000 #11-1411 #20-2136 20-2170 21-2213 21-2233 26-2419 #44-3930 45-3961 47-4033
#59-4589
BIT11 = 004000 #11-1411 #20-2136 20-2169 21-2212 21-2232 26-2414 #44-3930 45-3960 47-4031
#59-4589
BIT12 = 010000 #11-1411 #20-2136 20-2168 21-2211 21-2231 26-2411 #44-3930 45-3959 45-3978
47-4029 #59-4589
BIT13 = 020000 #11-1411 #20-2136 20-2167 21-2210 26-2408 #44-3930 45-3958 45-3977 47-4027
#59-4589
BIT14 = 040000 #11-1411 #20-2136 20-2166 21-2209 26-2405 #44-3930 45-3957 45-3976 47-4024
#59-4589
BIT15 = 100000 #11-1411 #20-2136 20-2165 21-2208 26-2402 33-3182 #44-3930 45-3956 47-4020
50-4146 51-4361 #59-4589
BIT2 = 000004 #11-1411 20-2125 #20-2136 21-2222 21-2242 23-2316 23-2332 23-2348 #44-3930
44-3945 45-3969 #59-4589
BIT3 = 000010 #11-1411 #20-2136 21-2221 21-2241 23-2317 23-2333 23-2349 #44-3930 44-3947
45-3968 #59-4589
BIT4 = 000020 #11-1411 20-2128 #20-2136 21-2220 21-2240 23-2318 23-2334 23-2350 #44-3930
45-3967 #59-4589
BIT5 = 000040 #11-1411 20-2130 #20-2136 21-2219 21-2239 23-2319 23-2335 #44-3930 45-3966
#59-4589
BIT6 = 000100 #11-1411 #20-2136 21-2218 21-2238 23-2320 #44-3930 45-3965 #59-4589
BIT7 = 000200 #11-1411 #20-2136 21-2217 21-2237 23-2321 26-2427 #44-3930 45-3964 #59-4589
59-4655
BIT8 = 000400 #11-1411 #20-2136 21-2215 21-2235 23-2322 26-2424 33-3160 #44-3930 45-3963
47-4037 #59-4589
BIT9 = 001000 #11-1411 #20-2136 21-2214 21-2234 23-2323 26-2421 #44-3930 45-3962 47-4035
#59-4589
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 2
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
BLKTT = ****** GX 19-2046
BPARER = 000020 #11-1411 #20-2136 #44-3930 #59-4589
BUFAIL 015372 R #62-4891 62-4901 62-4908
BUSA16 = 000020 #21-2220 42-3862
BUSA17 = 000040 #21-2219 42-3862
BYTESA = ****** GX *17-1887 *17-1910 17-1913 18-1943 18-1945 *18-1947 *19-1979 19-1985 *19-1987
*19-1992 19-1995
CDBA = ****** GX 50-4188
CDBPCK = 020000 #45-3977 51-4317
CDBRCK = 040000 #45-3976 51-4313
CDBSCK = 010000 #45-3978 51-4321
CDCC = ****** GX 50-4187 54-4441
CDD = 000020 #11-1411 #20-2136 #44-3930 #59-4589
CDDB = ****** GX 51-4311 51-4347
CDSB16 = 000020 #45-3967
CDSB17 = 000040 #45-3966
CDSDER = 004000 #45-3960
CDSDLT = 002000 #45-3961 51-4304
CDSEOF = 020000 #45-3958 51-4296
CDSERR = 100000 #45-3956
CDSHEM = 000004 #45-3969 51-4329
CDSIEN = 000100 #45-3965 50-4189 50-4203 50-4206
CDSNXM = 001000 #45-3962 51-4304
CDSOFL = 010000 #45-3959 50-4179 51-4288
CDSPAK = 000002 #45-3970
CDSPWC = 000400 #45-3963 52-4384
CDSRCK = 040000 #45-3957 51-4335
CDSRDY = 000200 #45-3964 51-4308
CDSRED = 000001 #45-3971 50-4189
CDST = ****** GX 50-4179 50-4189 50-4203 50-4206 51-4287 51-4345 51-4347 52-4384 54-4436
54-4445
CDSTOL = 000010 #45-3968
CHNPNT = 000001 #11-1411 #20-2136 #44-3930 #59-4589
CHRINT = 020000 #21-2210 33-3096 37-3390 37-3412 40-3723
CLIOD 000374 R #6-445 7-634
CLRBUF 016432 R 61-4742 61-4742 64-5154 #64-5157
CLSFIL 015666 R 63-4968 63-4971 63-4974 #63-4978
CNUPE = 000002 #11-1411 #20-2136 #44-3930 #59-4589
CNVTBL 014612 R #60-4712 64-5087
CPE = 000010 #6-397
CRBFLN = ****** GX 50-4145 50-4187
CRBUFF = ****** GX 50-4135 50-4188
CRCEVF = ****** GX *50-4117 50-4128 50-4198
CRDCLR 013626 R 49-4086 #52-4385
CRDINT 013074 R 49-4084 #50-4204
CREVFG = ****** GX *49-4101 *49-4102 49-4103 50-4117 50-4118 50-4149 50-4155 50-4173 50-4217
51-4268 51-4364 51-4367 52-4385 57-4531
CRHD 012046 RG #47-4017
CRHUNG = ****** GX *50-4214
CRINI 012424 R 47-4017 47-4017 #49-4101
CRIOD 012576 R #50-4128
CRLOOP 012510 R #50-4114 50-4226
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 3
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
CRMKT 013044 R #50-4198
CRMRKT 012346 R #47-4042 49-4104
CRPWUP 012416 R #49-4096 49-4106
CRSSTV 012360 R #49-4080 49-4105
CRSTBK = ****** GX 51-4276 51-4349
CRSTK 012326 RG 47-4017 #47-4017
CRSTLN = ****** GX 51-4349 51-4360
CRSTS = ****** GX *49-4090 50-4133 *50-4152 50-4160 50-4166 50-4168 *50-4170 50-4171 *50-4186
50-4200 50-4207 50-4209 50-4211 *50-4213 *50-4219 *50-4222 *51-4267 51-4282
51-4292 51-4300 51-4337 *51-4342 *51-4368 *52-4383 54-4438 *54-4440 *54-4443
*54-4448 *55-4481 *56-4504 *57-4525
CRTBL = ****** GX 55-4479 56-4501 57-4523
CRTRP4 012362 R 49-4080 #49-4084
CR.ACK = 004000 #47-4031 50-4166 50-4170 50-4207 56-4504 57-4525
CR.HNG = 100000 #47-4020 50-4152 50-4170 50-4209 50-4219 50-4222
CR.IOD = 010000 #47-4029 50-4133 50-4152 50-4168 50-4207 51-4292 54-4443 56-4504
CR.IOP = 020000 #47-4027 50-4168 50-4186 50-4207 50-4211 51-4292 52-4383 54-4438 54-4440
56-4504
CR.NSF = 000400 #47-4037 50-4152 51-4337 51-4342
CR.NXD = 001000 #47-4035 49-4090 50-4171 50-4200 51-4282 52-4383
CR.RHN = 002000 #47-4033 50-4152 50-4170 50-4213 50-4222 51-4300
CR.SST = 040000 #47-4024 50-4160 50-4207 50-4213 51-4267 51-4368 54-4448 55-4481
CS.EXP = 177670 #11-1411 #20-2136 #44-3930 #59-4589
CTYLUN = 000001 #59-4626 67-5304
CYCLS = 000002 #11-1411 #20-2136 #44-3930 #59-4589
C$$D11 = 000001 #44-3936
C.LEEF = 000002 #6-445
DAG1 = 000030 #3-128
DAG2 = 000032 #3-127
DAG3 = 000036 #3-125
DATE = 000004 #11-1411 #20-2136 #44-3930 #59-4589
DBINI 000512 R 6-441 6-441 #7-513 7-516 7-639
DBIOD 000370 R #6-443 7-633
DCK = 100000 #6-385
DCOMST = 000001 #11-1411 #20-2136 #44-3930 #59-4589
DD.CHI = 000002 #23-2331 33-3099
DD.HEM = 000010 #23-2349 51-4331
DD.LER = 000010 #23-2333
DD.OVF = 000020 #23-2334 33-3104
DD.PCK = 000002 #23-2347 51-4319
DD.PGZ = 000001 #23-2330 33-3093
DD.RCK = 000001 #23-2346 51-4315
DD.RME = 000040 #23-2335 33-3083
DD.SCK = 000004 #23-2348 51-4323
DD.SFL = 000020 #23-2350 51-4339
DD.VFE = 000004 #23-2332 33-3053
DEFPRI = 000062 #59-4619 63-4987
DELHLD = 002000 #21-2213
DEMTIM = 000002 #21-2243 33-3057 37-3445
DEP = 010000 #11-1411 #20-2136 #44-3930 #59-4589
DEX = 000400 #11-1411 #20-2136 #44-3930 #59-4589
DEXDON = 000004 #11-1411 #20-2136 #44-3930 #59-4589
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 4
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DEXWD1 = 174406 #11-1411 #20-2136 #44-3930 #59-4589
DEXWD2 = 174404 #11-1411 #20-2136 #44-3930 #59-4589
DEXWD3 = 174402 #11-1411 #20-2136 #44-3930 #59-4589
DFUNC = 000200 #11-1411 #20-2136 #44-3930 #59-4589
DF.DMG = 000004 #11-1411 #20-2136 #44-3930 #59-4589
DF.DMN = 000007 #11-1411 #20-2136 #44-3930 #59-4589
DF.DOR = 000001 #11-1411 #20-2136 #44-3930 #59-4589
DF.EHG = 000010 #11-1411 #20-2136 #44-3930 #59-4589
DF.EHM = 000011 #11-1411 #20-2136 #44-3930 #59-4589
DF.EMG = 000005 #11-1411 #20-2136 #44-3930 #59-4589
DF.EMN = 000006 #11-1411 #20-2136 #44-3930 #59-4589
DF.KLR = 000012 #11-1411 #20-2136 #44-3930 #59-4589
DF.KLW = 000013 #11-1411 #20-2136 #44-3930 #59-4589
DF.KLX = 000014 #11-1411 #20-2136 #44-3930 #59-4589
DF.OFF = 000002 #11-1411 #20-2136 #44-3930 #59-4589
DF.ON = 000003 #11-1411 #20-2136 #44-3930 #59-4589
DF.PDP = 000016 #11-1411 #20-2136 #44-3930 #59-4589
DF.PEX = 000015 #11-1411 #20-2136 #44-3930 #59-4589
DIAG1 = 174430 #11-1411 #20-2136 #44-3930 #59-4589
DIAG2 = 174432 #11-1411 #20-2136 #44-3930 #59-4589
DIAG3 = 174436 #11-1411 #20-2136 #44-3930 #59-4589
DIKL10 = 000010 #11-1411 #20-2136 #44-3930 #59-4589
DLT = 100000 #6-361 8-742
DLYCNT = 174400 #11-1411 #20-2136 #44-3930 #59-4589
DNBLK = ****** GX *19-2026 *19-2049 *19-2060 19-2063
DNFCN = ****** GX *19-2027 *19-2028 *19-2029
DNMSG 000442 R #6-455 7-641
DNSTS = ****** GX *19-2030 *19-2034 19-2049 *19-2052 *19-2053 19-2056 *19-2056 *19-2071
DONE = 000200 #11-1429 12-1531 12-1551 15-1773 #21-2217
DONSTR 004606 R 19-1996 #19-1999 19-2008 19-2017 19-2068
DON10C = 040000 #11-1411 #20-2136 #44-3930 #59-4589
DON10S = 100000 #11-1411 #20-2136 #44-3930 #59-4589
DON11C = 000100 #11-1411 #20-2136 #44-3930 #59-4589
DON11S = 000200 #11-1411 #20-2136 #44-3930 #59-4589
DPS4 = 040000 #11-1411 #20-2136 #44-3930 #59-4589
DRESET = 000100 #11-1411 #20-2136 #44-3930 #59-4589
DRY = 000200 #6-378 7-625
DR.DTE = 000011 #11-1411 #20-2136 #44-3930 #59-4589
DSEND = 000004 #11-1411 #20-2136 #44-3930 #59-4589
DS04 = 004000 #11-1411 #20-2136 #44-3930 #59-4589
DS05 = 002000 #11-1411 #20-2136 #44-3930 #59-4589
DS06 = 001000 #11-1411 #20-2136 #44-3930 #59-4589
DTE = 010000 #6-388
DTECMD = 000451 #11-1411 #20-2136 #44-3930 #59-4589
DTEFLG = 000444 #11-1411 #20-2136 #44-3930 #59-4589
DTEF11 = 000450 #11-1411 #20-2136 #44-3930 #59-4589
DTEMTD = 000455 #11-1411 #20-2136 #44-3930 #59-4589
DTEMTI = 000456 #11-1411 #20-2136 #44-3930 #59-4589
DUNS 000460 R #6-457 7-650
DUPE = 000020 #11-1411 #20-2136 #44-3930 #59-4589
DURE = 000004 #11-1411 #20-2136 #44-3930 #59-4589
DVA = 004000 #6-347 7-593 7-600
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 5
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DV.EOF = 000040 #23-2319 33-3044 38-3591 51-4298
DV.F11 = 000400 #23-2322 33-3071
DV.HNG = 001000 #23-2323 33-3078 51-4302
DV.IOP = 000020 #23-2318 33-3068 51-4294
DV.LOG = 000100 #23-2320 33-3059 33-3075 51-4302 51-4306 51-4327
DV.NXD = 000001 #23-2314 33-3037 51-4284
DV.OFL = 000002 #23-2315 33-3037 33-3048 51-4284 51-4290
DV.OIR = 000004 #23-2316 33-3037 33-3048 33-3078 51-4284 51-4290 51-4302
DV.SCN = 000010 #23-2317 33-3092 33-3098
DV.URE = 000200 #23-2321 33-3075 51-4306
DXBUF = ****** GX *12-1481 *15-1738 15-1754
DXCNT = ****** GX *12-1482 *15-1740 15-1756 15-1758
DXEXP = 177170 #11-1417 12-1515 13-1618
DXFLAG 014356 R #60-4679 *61-4743 61-4794 *61-4796
DXHD 001730 RG #11-1444
DXINI 002240 R 11-1444 11-1444 #12-1473 12-1476 12-1594
DXIOD 002234 R #11-1448 12-1588
DXPKT = ****** GX *12-1483 12-1591 13-1638
DXRTC = ****** GX *12-1502 *13-1623 *13-1660 *13-1662
DXRTY 003122 R 12-1540 12-1563 12-1578 12-1581 13-1622 #13-1660
DXSTK 002210 RG 11-1444 #11-1444
DXTSK = ****** GX *12-1593 *13-1642
DXUNIT = ****** GX *12-1480 12-1575
DXVCB = ****** GX *12-1513 *12-1514 12-1519 12-1571 12-1579 12-1582 12-1589 12-1590 *13-1619
13-1625 13-1632 13-1635 *13-1640 *13-1641 14-1682 14-1695 *14-1710 *14-1711
14-1712 *15-1736 15-1740 *15-1759
DXWD1 = 000006 #3-134
DXWD2 = 000004 #3-135
DXWD3 = 000002 #3-136
DXWRD1 = 002000 #11-1411 #20-2136 #44-3930 #59-4589
D$$H11 = 000010 #1-45
D.CCDR = ****** GX 50-4148 51-4363
D.CLPT = ****** GX 30-2647 33-3185
D.FEPD = ****** GX 17-1931 19-2000
D1011 = 000040 #11-1411 #20-2136 #44-3930 #59-4589
EBSEL = 000100 #11-1411 #20-2136 #44-3930 #59-4589
EBUSPC = 000020 #11-1411 #20-2136 #44-3930 #59-4589
EBUSPS = 000004 #11-1411 #20-2136 #44-3930 #59-4589
ECCMSK 000504 R #6-485 8-823 8-839
ECCWRD 000476 R #6-483 8-832
ECH = 000100 #6-394 8-757
ECI = 004000 #6-420
EDONES = 040000 #11-1411 #20-2136 #44-3930 #59-4589
EF.CRB = 000010 #44-3947 49-4103 50-4149 50-4155 50-4173
EF.CRC = 000001 #44-3941 50-4114 50-4118 50-4198 52-4385
EF.CRD = 000002 #44-3943 50-4114 50-4118 50-4128 50-4217 57-4531
EF.CRS = 000004 #44-3945 49-4103 51-4268 51-4364 51-4367
EF.IOD = ****** GX 8-725 12-1593 13-1642
EF.LPC = 000002 #20-2123 29-2543 29-2548 32-2914 35-3310
EF.LPD = 000001 #20-2121 29-2543 29-2548 30-2584 30-2633 32-2958 37-3458 38-3569 39-3688
40-3725 41-3784 42-3853
EF.LPQ = 000004 #20-2125
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 6
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
EF.LPS = 000020 #20-2128 28-2524 33-3024 33-3186 33-3194
EF.LPW = 000040 #20-2130 28-2524 34-3228 39-3663
EF.NIR = ****** GX 16-1821 29-2543 29-2548 31-2788
EF.PR1 = ****** GX 17-1839 33-3027 50-4176 51-4271
EF.QIO = 000001 #59-4632
EF.SEP = 100000 #16-1816 16-1821
EF.TEF = 000400 #16-1817 16-1821 17-1874 19-1998
EMPTY = 000003 #11-1439 12-1549
EPTR = 000000 #11-1411 #20-2136 #44-3930 #59-4589
ERMHER 010041 R 33-3060 #33-3145
ERMHNG 010056 R 33-3079 #33-3147
ERMNXD 007767 R 33-3038 #33-3139
ERMOFL 010007 R 33-3049 #33-3141
ERMVFE 010022 R 33-3054 #33-3143
ERR = 100000 #6-374 #21-2208 37-3390
ERR10C = 010000 #11-1411 #20-2136 #44-3930 #59-4589
ERR10S = 020000 #11-1411 #20-2136 #44-3930 #59-4589
ERR11C = 000001 #11-1411 #20-2136 #44-3930 #59-4589
ERR11S = 000002 #11-1411 #20-2136 #44-3930 #59-4589
EXSP 014356 R #60-4675 61-4738
E.FCRB = 000004 #44-3946 50-4147
E.FCRC = 000001 #44-3940 47-4042
E.FCRD = 000002 #44-3942
E.FCRS = 000003 #44-3944 51-4362
E.FLPC = 000002 #20-2122 28-2490
E.FLPD = 000001 #20-2120
E.FLPQ = 000003 #20-2124 33-3132
E.FLPS = 000005 #20-2127 33-3184
E.FLPW = 000006 #20-2129 28-2492 34-3235
E.FQIO = 000001 #59-4631 66-5266 67-5304
E.IOD = ****** GX 6-443 6-445 11-1448
E.NIR = ****** GX 6-447 11-1446
FCN 004656 R 19-1973 #19-2021
FCNBD 004664 R 19-1976 #19-2023
FEDRV 003670 R 16-1832 16-1832 #17-1834 17-1880 17-1883 17-1918 17-1927
FEHD 003370 RG #16-1832
FER = 000020 #6-396
FESTK 003650 RG 16-1832 #16-1832
FETBL = ****** GX *17-1849 *17-1884 *17-1915 *17-1926 *19-2011 19-2058
FETSK = ****** GX 17-1836 *17-1838 *19-1998
FE.DET = 040000 #16-1827 17-1849 17-1915 17-1926 18-1938 18-1949 19-2011
FE.DTE = 020000 #16-1828 17-1849 17-1926 19-1970 19-1984 19-1997 19-2011
FE.SER = 004000 #16-1829 17-1849 17-1884 17-1926 19-2011
FE.STR = 002000 #16-1830 19-2025 19-2067
FILADR 014472 R #60-4693 60-4701 63-5032 63-5034
FILBLK 014436 R #60-4692 61-4810 61-4831 61-4850 62-4916 66-5195
FILCLS 016720 R 64-5114 64-5114 64-5120 64-5120 #66-5251
FILERA 015366 R #62-4887 62-4922 62-4928 62-4932
FILERR 016252 R 62-4887 64-5056 64-5066 64-5104 64-5109 #64-5119
FILERX 016262 R 63-4978 #64-5120
FILFNA 016562 R 61-4825 61-4825 61-4857 61-4857 #66-5191
FILL = 000001 #11-1438 12-1526
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 7
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
FILQIO 016732 R 61-4783 61-4783 62-4921 62-4921 66-5196 66-5247 #66-5266
FMT22 = 010000 #6-419
FNDFIL 015126 R 61-4803 #61-4809 61-4877
FORPRO = 000020 #11-1411 #20-2136 #44-3930 #59-4589
GO = 000001 #11-1437 11-1438 11-1439 11-1440 11-1441 11-1442 #21-2227 32-2946 37-3400
37-3425 42-3880
GOERR = 000001 #21-2244 37-3445
HCE = 000200 #6-393
HCI = 002000 #6-421
HCRC = 000400 #6-392
HDRBFE 014434 R #60-4691 *62-4911 66-5202
HDRBLK 014430 R #60-4689 *62-4930 *66-5210 66-5224
HDRBUF 014432 R #60-4690 *62-4909 64-5153 *64-5158 66-5223
HDR64 = ****** 63-4998
HIBYTE = 177400 #11-1411 #20-2136 #20-2185 30-2732 #44-3930 #59-4589
H.IPC = 000076 #59-4636 63-5027
H.ISP = 000100 #59-4637 63-5028
H.LUN = 000132 #59-4639 61-4758
H.LUT = ****** GX 17-1903
H.NLUN = 000130 #59-4638 64-5048
IAE = 002000 #6-390 8-677 8-686
IE.ABO = 177761 17-1867 19-2012 39-3682
IE.ACT = 177771 65-5176
IE.BAD = 177777 19-2052
IE.BLK = 177754 8-688 12-1596
IE.DNR = 177775 7-622
IE.IFC = 177776 7-547 12-1542 31-2838
IE.OFL = 177677 41-3763
IE.VER = 177774 8-675 12-1601 19-2071
IE.WLK = 177764 8-683
IFLOP = 100000 #11-1411 #20-2136 #44-3930 #59-4589
ILF = 000001 #6-400 8-677
ILFCD 002474 R 12-1487 #12-1542
ILR = 000002 #6-399 8-677
INIT = 040000 #11-1432 13-1663
INITCR 013612 RG 49-4096 49-4096 49-4107 49-4107 50-4122 50-4122 50-4215 50-4215 #52-4383
56-4503 56-4503
INITLP 010426 RG 28-2515 28-2515 28-2528 28-2528 29-2552 29-2552 #35-3290
INSHD 014016 RG #60-4672
INSMSG 017322 R 67-5284 #67-5360
INSTAL 014636 RG 60-4672 60-4672 #61-4737 61-4740 65-5183
INSTK 014276 RG 60-4672 #60-4672
INTEBL = 000100 #11-1430 12-1584 13-1620
INTENB = 000100 #21-2218 32-2922 32-2926 32-2946 34-3265 35-3303 37-3400 37-3425 39-3668
42-3880
INTROF = 000010 #11-1411 #20-2136 #44-3930 #59-4589
INTRON = 000040 #11-1411 #20-2136 #44-3930 #59-4589
INTSON = 000001 #11-1411 #20-2136 #44-3930 #59-4589
INT10S = 000400 #11-1411 #20-2136 #44-3930 #59-4589
INT11C = 002000 #11-1411 #20-2136 #44-3930 #59-4589
INT11S = 004000 #11-1411 #20-2136 #44-3930 #59-4589
IOABT 004624 R 19-1966 #19-2004
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 8
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
IODN 004232 R 17-1875 #17-1920
IODNCR 014002 R 54-4449 54-4449 55-4482 #57-4531
IO.ACW = 007000 62-4915
IO.APV = 014010 61-4778
IO.ATT = 001400 19-1977
IO.DAC = 010000 31-2825 66-5251
IO.FNA = 004400 66-5191
IO.KIL = 000012 31-2844
IO.RLB = 001000 7-543 12-1484 13-1625 31-2821
IO.RVB = 010400 31-2823 66-5211 66-5233
IO.WLB = 000400 7-545 12-1486 12-1519 19-2038 31-2817 33-3132 67-5304
IO.WVB = 011000 6-453 31-2819 66-5216
IPAERR 015632 R #63-4971 63-5022
IS.RDD = 000002 13-1634
IS.SUC = 000001 8-672 8-910 13-1637 19-2030 31-2851 42-3847
KLPWRF = 000010 #11-1411 #20-2136 #44-3930 #59-4589
KT11 = ****** 63-4970 63-5020
LBLBFE 014426 R #60-4688 *62-4904 64-5051 64-5060
LBLBLK 014420 R #60-4685 *62-4926 64-5063 *66-5235 66-5236
LBLBUF 014424 R #60-4687 *62-4902 64-5149 *64-5157 66-5234
LBLNUM 014422 R #60-4686 *63-5040 64-5063
LOAD11 = 000004 #11-1411 #20-2136 #44-3930 #59-4589
LOBYTE = 000377 #20-2184 20-2185 39-3682 41-3763 42-3847
LOINIT = 000400 #21-2215
LPALOC = 000214 #20-2115
LPBCTR = 000006 G #21-2248 32-2944 37-3392 *37-3409 37-3410 *37-3424 *42-3834 *42-3861 *42-3870
LPBSAD = 000004 G #21-2246 37-3411 *37-3416 *42-3860 *42-3868 *42-3869
LPCBUF = 000014 G #21-2261 *34-3245 *34-3248 37-3420
LPCCTR = 000015 G #21-2262
LPCEVF = ****** GX *29-2547 30-2584 31-2788 32-2914
LPCKSM = 000017 G #21-2265 32-2943 37-3389
LPCSA = ****** GX *28-2507 30-2590 32-2919 *35-3302 37-3382 39-3666 40-3720 41-3756
LPCSM = ****** GX *32-2942 *32-2943 33-3161 *34-3257 *37-3388 *37-3389
LPCSRA = 000000 G #21-2207
LPCSRB = 000002 G #21-2229 33-3057 33-3081 33-3102 37-3445
LPDCLR 010476 R 28-2502 #35-3304
LPDINT 007046 R 28-2500 #32-2923
LPEMSG 007734 R 33-3122 33-3132 #33-3133
LPEMSX 007747 R 33-3118 #33-3137
LPERUN 007744 R *33-3127 #33-3135
LPEVFG = ****** GX *28-2522 *28-2523 28-2524 29-2547 29-2548 30-2633 32-2958 33-3024 33-3186
33-3194 34-3228 35-3310 37-3458 38-3569 39-3663 39-3688 40-3725 41-3784
42-3853
LPEXPA = ****** GX 35-3301
LPEXPZ = ****** GX 33-3160
LPHD 005130 RG #25-2394
LPHUNG = ****** GX *32-2938
LPINI 005520 R 25-2394 25-2394 #28-2521
LPIOD 005672 R #30-2583
LPITH = ****** GX 30-2603 30-2622 32-2934 32-2950 *35-3305 37-3383 *37-3452 39-3661 *39-3665
40-3718 *42-3832
LPLOOP 005604 R #29-2542 32-2968
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 9
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
LPMCB = ****** GX 37-3415 *42-3865 42-3868
LPMKT 007012 R #32-2913
LPMRKT 005430 R #28-2489 28-2525
LPNIR 006552 R 30-2658 #31-2787 31-2855 31-2881
LPPCTR = 000010 G #21-2252 *30-2705 34-3261 *34-3261 37-3438 *37-3438 39-3669 *39-3669 40-3722
*40-3722
LPQDPB 007712 R *33-3123 33-3128 #33-3131
LPRAMD = 000012 G #21-2256 *34-3247 37-3417
LPRMA = ****** GX 30-2671 *30-2676 30-2687 *30-2726 30-2729 39-3657
LPRMC = ****** GX *30-2677 30-2692 30-2711 *30-2741
LPRMZ = ****** GX 30-2672 30-2696 *30-2724 30-2730
LPRTRY = 000012 #20-2116 33-3162 41-3755
LPRTY = ****** GX *32-2939 33-3073 33-3163 *37-3398 *37-3447 *41-3755
LPSIZE = ****** GX 30-2653 32-2964 35-3307 38-3537 39-3654 40-3715
LPSSTV 005454 R #28-2494 28-2526
LPSTBK = ****** GX 33-3030 33-3159 33-3167 33-3177
LPSTK 005410 RG 25-2394 #25-2394
LPSTLN = ****** GX 33-3167 33-3181
LPTBL = ****** GX 30-2586 30-2646 32-2917 35-3293 38-3537 39-3654 40-3715
LPTDAT = 000016 G #21-2264
LPTHD = ****** GX 30-2595 30-2631 *30-2743 32-2930 33-3062 39-3671 41-3768 *41-3783
LPTPAR = 000040 #21-2239 33-3057 37-3445
LPTPBT = 010000 #21-2231
LPTRP4 005456 R 28-2495 #28-2499
LPUNIT = ****** GX *37-3376 37-3378
LPUTBL = ****** GX 31-2814 37-3381
LPWRUP 005512 R #28-2514 28-2527
LP.CLR = 002000 #26-2419 33-3055 33-3084 34-3237 34-3239
LP.EOF = 000200 #26-2427 30-2689 33-3042 34-3254 34-3256
LP.F10 = 000400 #26-2424 30-2635 30-2762 33-3110 33-3195 38-3539
LP.HNG = 100000 #26-2402 30-2635 32-2932 32-2960 33-3076 42-3831
LP.LIP = 001000 #26-2421 30-2608 30-2635 30-2665 30-2668 30-2694 34-3240 39-3659 42-3824
LP.MCH = 010000 #26-2411 30-2635 37-3407 37-3423 42-3826 42-3831 42-3871
LP.PZI = 020000 #26-2408 30-2703 30-2707 33-3090 37-3436
LP.SST = 040000 #26-2405 30-2614 30-2689 32-2957 33-3023 33-3197 37-3457 38-3568 41-3765
LP.UNT = 000003 #26-2431 33-3125 33-3179 35-3296 37-3380
LP.WAT = 004000 #26-2414 30-2620 30-2635 32-2928 33-3094 33-3100 33-3115 39-3656 40-3717
42-3831
L$BBLK = 000024 #59-4651
L$BFLG = 000010 #59-4645
L$BHRB = 000022 #59-4650 62-4930
L$BLDZ = 000014 #59-4647
L$BMXZ = 000016 #59-4648
L$BPAR = 000004 #59-4644
L$BPRI = 000012 #59-4646
L$BSA = 000020 #59-4649
L$BTSK = 000000 #59-4643
L$$P20 = 000002 #1-39 30-2587 32-2916 35-3292 38-3537 39-3654 40-3715
MCPE = 020000 #6-346 8-673
MDPE = 000400 #6-368 8-742
MEFCN 004666 R 19-2022 #19-2025
MEMPAR = 000020 #21-2240 33-3057 37-3445
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 10
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
MKDNR 000404 RG #6-449 7-646
MKSCDP 005442 R #28-2491 34-3233
MNTBLK 014604 R #60-4704 61-4780
MNTSYD 014704 R #61-4752 61-4799
MODE00 = 000004 #21-2222 30-2669 30-2695 30-2698
MODE01 = 000010 #21-2221 30-2669
MOL = 010000 #6-375 7-625
MPE11 = 001000 #11-1411 #20-2136 #44-3930 #59-4589
MSGDPB 000422 R #6-453 *7-641 7-645 *7-650
MSGSIZ = 000016 6-453 #6-460
MXF = 001000 #6-367 8-742
M.KTAE = 000010 #6-449 #28-2490 #28-2492 #47-4042
M.KTEF = 000002 #6-449 #28-2490 #28-2492 #47-4042
M.KTMG = 000004 #6-449 #28-2490 #28-2492 #47-4042
M.KTUN = 000006 #6-449 #28-2490 #28-2492 #47-4042
NED = 010000 #6-364 8-679
NEM = 004000 #6-365 8-679
NODADR = ****** GX 17-1846 *17-1847 17-1879 *17-1885 17-1922 *17-1923 19-1974 19-2004 *19-2010
NULSTP = 000040 #11-1411 #20-2136 #44-3930 #59-4589
NUPE = 000002 #11-1411 #20-2136 #44-3930 #59-4589
NXTHDR 016602 R 64-5055 64-5055 64-5103 64-5103 #66-5202
NXTSEC 003272 R 12-1564 12-1564 13-1627 13-1627 #15-1736
N.DID = 000024 #59-4665
N.FID = 000000 #59-4659 61-4850 62-4916
N.FNAM = 000006 #59-4660 61-4810 61-4831
N.FTYP = 000014 #59-4661
N.FVER = 000016 #59-4662
N.NEXT = 000022 #59-4664
N.STAT = 000020 #59-4663
OFFLIN = 000200 #21-2237
ONLINE = 004000 #21-2212 33-3046 34-3225 41-3758
OPI = 020000 #6-387
OPTVFU = 004000 #21-2232 33-3102
PAGZRO = 040000 #21-2209 33-3088 34-3259 37-3390 37-3434
PARENB = 000002 #21-2226 32-2946 34-3265 35-3303 37-3400 37-3425 39-3668 42-3880
PARFND 015670 R 63-4962 #63-4982
PARMSG 017343 R 67-5295 #67-5362
PBTHRD = 000004 #20-2175 20-2177 20-2178 20-2179 30-2753 31-2863 31-2864
PERCLR = 001000 #11-1411 #20-2136 #44-3930 #59-4589
PGE = 002000 #6-366 8-742
PGM = 001000 #6-377
PHYBLK = 000040 #11-1420 12-1509 13-1632 14-1695
PHYS = 100000 #11-1411 #20-2136 #44-3930 #59-4589
PIDENT = 000000 #11-1411 #20-2136 #44-3930 #59-4589
PRI7 = 000340 #11-1411 #20-2136 #44-3930 #59-4589
PROPNT = 000021 #11-1411 #20-2136 #44-3930 #59-4589
PRTOFF = 004000 #11-1411 #20-2136 #44-3930 #59-4589
PR0 = 000000 #11-1411 #20-2136 #44-3930 #59-4589
PR1 = 000040 #11-1411 #20-2136 #44-3930 #59-4589
PR2 = 000100 #11-1411 #20-2136 #44-3930 #59-4589
PR3 = 000140 #11-1411 #20-2136 #44-3930 #59-4589
PR4 = 000200 #11-1411 #20-2136 32-2941 34-3268 #44-3930 #59-4589
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 11
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
PR5 = 000240 #11-1411 #20-2136 #44-3930 #59-4589
PR6 = 000300 #11-1411 #20-2136 #44-3930 #59-4589
PR7 = 000340 #11-1411 19-2035 #20-2136 29-2546 30-2630 #44-3930 50-4116 #59-4589
PS = 177776 7-591 7-631 7-643 #11-1411 12-1586 12-1597 17-1835 17-1835 18-1950
18-1950 18-1955 19-2035 19-2035 19-2055 #20-2136 29-2546 29-2546 29-2549
30-2630 30-2630 30-2637 32-2941 32-2941 32-2953 34-3268 34-3268 34-3270
37-3376 41-3767 41-3767 #44-3930 50-4116 50-4116 50-4119 #59-4589 64-5123
64-5123 65-5165 65-5165
PSWW1 = 000005 #11-1411 #20-2136 #44-3930 #59-4589
PSWW10 = 000014 #11-1411 #20-2136 #44-3930 #59-4589
PSWW11 = 000015 #11-1411 #20-2136 #44-3930 #59-4589
PSWW12 = 000016 #11-1411 #20-2136 #44-3930 #59-4589
PSWW13 = 000017 #11-1411 #20-2136 #44-3930 #59-4589
PSWW2 = 000006 #11-1411 #20-2136 #44-3930 #59-4589
PSWW3 = 000007 #11-1411 #20-2136 #44-3930 #59-4589
PSWW4 = 000010 #11-1411 #20-2136 #44-3930 #59-4589
PSWW5 = 000011 #11-1411 #20-2136 #44-3930 #59-4589
PSWW6 = 000012 #11-1411 #20-2136 #44-3930 #59-4589
PSWW7 = 000013 #11-1411 #20-2136 #44-3930 #59-4589
PUDADR 014416 R #60-4684 *61-4760 61-4789 *61-4876 63-4989 64-5072
PULSE = 000020 #11-1411 #20-2136 #44-3930 #59-4589
PUTR50 017224 R 67-5291 67-5291 67-5298 67-5298 #67-5322
PUTR51 017234 R 67-5323 67-5323 #67-5331
PUTSTR 017214 R 67-5285 67-5285 67-5287 67-5287 67-5289 67-5289 67-5296 67-5296 #67-5313
67-5314
QIOSTS 014476 R #60-4694 66-5266 66-5269
QSIZE = 000023 #11-1411 #20-2136 #44-3930 #59-4589
Q.IOAE = 000012 #6-453 #33-3132
Q.IOEF = 000006 #6-453 #33-3132
Q.IOFN = 000002 #6-453 #33-3132
Q.IOLU = 000004 #6-453 #33-3132
Q.IOPL = 000014 #6-453 *7-641 *7-650 *33-3123 #33-3132
Q.IOPR = 000007 #6-453 #33-3132
Q.IOSB = 000010 #6-453 #33-3132
RAMIS0 = 010000 #11-1411 #20-2136 #44-3930 #59-4589
RAMLOD = 000003 #21-2225 30-2698
RAMPAR = 000010 #21-2241 33-3057 33-3081 37-3445
RCVBLK 014360 R #60-4681 61-4739 61-4771
READ = 000007 #11-1441 12-1518
REDHDR 016616 R 62-4931 62-4931 #66-5210
REDLBL 016660 R 62-4927 62-4927 64-5065 64-5065 #66-5232
REQBLK 014364 R #60-4682 60-4683 61-4830 63-4943 64-5124 65-5168 65-5169 67-5290
REQTSK 016444 R 64-5115 #65-5165
RETALL 016354 R #64-5141
RETBUF 016376 R 62-4891 62-4891 64-5113 64-5113 64-5142 #64-5147
RETNOD 016266 R 61-4881 #64-5122 65-5179
RETRY = 000010 #6-434 7-551 #11-1419 12-1502
RETXXX 016656 R 66-5203 66-5205 #66-5228
RFMAD0 = 100000 #11-1411 #20-2136 #44-3930 #59-4589
RFMAD1 = 040000 #11-1411 #20-2136 #44-3930 #59-4589
RFMAD2 = 020000 #11-1411 #20-2136 #44-3930 #59-4589
RFMAD3 = 010000 #11-1411 #20-2136 #44-3930 #59-4589
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 12
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
RM = 000010 #11-1411 #20-2136 #44-3930 #59-4589
RMR = 000004 #6-398 8-677
RPAS = 000016 #6-404
RPBA = 000004 #6-353
RPBUF = ****** GX *7-536 *7-541 *7-542 *7-550 7-606 7-630 7-636 7-637 *8-723
*8-724 8-818 8-934
RPCNT = ****** GX *7-534 7-607 8-770
RPCS1 = 000000 #6-343
RPCS2 = 000010 #6-359 7-586 7-603 8-679 8-742
RPDA = 000006 #6-355
RPDBR = 000022 #6-408
RPDC = 000034 #6-424 *7-629
RPDS = 000012 #6-372 7-623
RPDT = 000026 #6-412
RPEC1 = 000044 #6-426 8-803
RPEC2 = 000046 #6-428 8-826
RPER1 = 000014 #6-383 7-627 8-676
RPEXP = 176700 #6-339 7-586 7-589 7-603 8-663
RPHD 000070 RG #6-441
RPLA = 000020 #6-406
RPMR = 000024 #6-410
RPOF = 000032 #6-417
RPRNA = ****** GX *7-533 7-602 7-635 8-719
RPRTC = ****** GX *7-551 *8-707
RPSN = 000030 #6-414
RPSTK 000350 RG 6-441 #6-441
RPTSK = ****** GX *8-725
RPUNIT = ****** GX *7-535 7-588 7-604
RPWC = 000002 #6-351 8-768 8-919
RPWLO 000400 R #6-447 7-513
RSTERR = 001000 #21-2214 34-3265 35-3303 39-3668
RSX$$E = 000041 #3-100
RSX$$F = 000105 #3-108 #3-113 3-119
RSX$$K = 000126 #3-104
RSX$$V = 000013 #3-99
RWRBLK 016712 R 66-5225 66-5225 66-5237 66-5237 #66-5246
RWRHDR 016634 R 66-5212 #66-5222
RXCS = 000000 #11-1426
RXDB = 000002 #11-1427 *12-1579 *12-1582
R$$E16 = ****** 8-860 8-998
R$$E18 = 000001 #6-322 6-481 8-792 8-937
R$$JPO = ****** 6-462 7-553 7-612 8-665 8-772 8-784 8-913 8-1020
R$$11D = 000001 #1-48
R.AT = ****** GX 17-1898
R.DP = ****** GX 17-1907
R.FC = ****** GX 7-543 7-545 12-1484 12-1486 12-1509 12-1514 17-1891 19-1975 19-1977
31-2815 31-2844
R.LU = ****** GX 17-1893
R.PB = ****** GX 7-561 7-562 *7-574 *7-580 7-605 7-629 8-720 12-1503 12-1508
13-1639 17-1911 17-1912 19-1979 19-1980 30-2753 31-2863 31-2867
R50TBL 017306 R 67-5337 #67-5352
SCD = 000040 #11-1411 #20-2136 #44-3930 #59-4589
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 13
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
SETBUF 003314 R 12-1524 12-1524 12-1550 12-1550 #15-1754
SETLUN 016046 R #64-5048
SETSTD 015536 R #63-4941
SF.IR = 040000 #59-4623 65-5167
SF.TA = 000001 #59-4622 65-5167
SNSTR 004274 R 17-1916 17-1916 #17-1929 18-1953 18-1953 19-2064 19-2064
SSTSCR 013204 R 50-4162 50-4162 50-4181 50-4181 #51-4267
SSTSLP 007234 R 30-2616 30-2616 #33-3021
STAT = 174434 #11-1411 #20-2136 #44-3930 #59-4589
STATD = 000034 #3-126
STATUS = 000022 #11-1411 #20-2136 #44-3930 #59-4589
STDADR = 014376 R #60-4683 63-4941 64-5141 *64-5145 65-5166 67-5292
STSWD = ****** GX *17-1848 *17-1917 17-1920 17-1921 *17-1924 *19-1982 *19-1983
SWR = 177570 #11-1411 #20-2136 #44-3930 #59-4589
SWSLLT = 100000 #11-1411 #20-2136 #44-3930 #59-4589
SYFLAG 014357 R #60-4680 61-4802 *61-4805
SYMNTD 015040 R 61-4762 61-4784 #61-4788
SYMNT1 015104 R 61-4793 61-4795 #61-4801
SYNTIM = 000004 #21-2242 33-3057 37-3445
S.DRFN = 000034 #59-4666 60-4692
S.FW = ****** GX *65-5167
S.TD = ****** GX 67-5293
TASKNF 015262 R 61-4754 61-4786 61-4826 #61-4863 61-4868 61-4870 61-4872 61-4875
TB.ABO = 040000 #20-2166 30-2680 39-3679 39-3682
TB.DON = 100000 #20-2165 38-3611 39-3682 41-3763 42-3847
TB.EOF = 020000 #20-2167 20-2171 30-2685 38-3593
TB.LPC = 010000 #20-2168 20-2171 30-2701 38-3584
TB.RMD = 004000 #20-2169 20-2171 30-2715 38-3599
TB.SFN = 036000 #20-2171 30-2682 42-3837
TB.VFD = 002000 #20-2170 20-2171 38-3605
TENAD1 = 174410 #11-1411 #20-2136 #44-3930 #59-4589
TENAD2 = 174412 #11-1411 #20-2136 #44-3930 #59-4589
TESTLP 010236 R 30-2624 30-2624 #34-3224
TEST00 = 000400 #21-2235
TEST01 = 001000 #21-2234
TEST02 = 002000 #21-2233
TNAD1 = 000010 #3-132
TNAD2 = 000012 #3-133
TNCERR 015656 R #63-4976 63-5036
TNFERR 015352 R 61-4866 #61-4879
TOBM = 000004 #11-1411 #20-2136 #44-3930 #59-4589
TOD = 000003 #11-1411 #20-2136 #44-3930 #59-4589
TOIP = 000002 #11-1411 #20-2136 #44-3930 #59-4589
TOIT = 000001 #11-1411 #20-2136 #44-3930 #59-4589
TO10 = 000200 #11-1411 #20-2136 #44-3930 #59-4589
TO10AD = 174420 #11-1411 #20-2136 #44-3930 #59-4589
TO10BC = 174414 #11-1411 #20-2136 #44-3930 #59-4589
TO10BM = 000001 #11-1411 #20-2136 #44-3930 #59-4589
TO10DB = 000400 #11-1411 #20-2136 #44-3930 #59-4589
TO10DN = 100000 #11-1411 #20-2136 #44-3930 #59-4589
TO10DT = 174424 #11-1411 #20-2136 #44-3930 #59-4589
TO10ER = 020000 #11-1411 #20-2136 #44-3930 #59-4589
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 14
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
TO10PK = ****** GX 17-1888
TO11 = 000100 #11-1411 #20-2136 #44-3930 #59-4589
TO11AD = 174422 #11-1411 #20-2136 #44-3930 #59-4589
TO11BC = 174416 #11-1411 #20-2136 #44-3930 #59-4589
TO11BM = 020000 #11-1411 #20-2136 #44-3930 #59-4589
TO11DB = 004000 #11-1411 #20-2136 #44-3930 #59-4589
TO11DN = 000200 #11-1411 #20-2136 #44-3930 #59-4589
TO11DT = 174426 #11-1411 #20-2136 #44-3930 #59-4589
TO11ER = 000002 #11-1411 #20-2136 #44-3930 #59-4589
TR = 000200 #11-1431 12-1531 12-1551 15-1773
TRE = 040000 #6-345 8-673
TRKSEC 003144 R 12-1516 12-1516 #14-1682
TRWAIT 003344 R 12-1577 12-1577 12-1580 12-1580 #15-1772
TSKFND 015404 R 61-4858 #62-4898
TSKLUN = 000002 #59-4627 61-4753 61-4758 61-4874 66-5266
TSKMSG 017334 R 67-5288 #67-5361
TSTMOD = 000001 #21-2223
TTBERR 015644 R #63-4974 63-5019
TTPEN = ****** GX 6-441 11-1444 16-1832 25-2394 47-4017 60-4672
TYPBUF 014502 R #60-4695 67-5283 67-5302
TYPMSG 017012 R 61-4785 61-4785 61-4804 61-4804 61-4880 61-4880 63-4968 63-4968 63-4971
63-4971 63-4974 63-4974 63-4976 63-4976 64-5119 64-5119 65-5179 65-5179
#67-5282
T.BA = ****** GX 63-4997 63-5021
T.HBCT = ****** GX 30-2744 *31-2868 33-3069 42-3863
T.HCAD = ****** GX *30-2687 30-2693 30-2704 30-2731 *31-2869 *37-3411 38-3581 38-3590 42-3860
T.HCBC = ****** GX 30-2601 30-2679 *30-2692 *30-2693 *31-2870 *37-3410 38-3540 *38-3541 *38-3612
*39-3679 39-3680 *39-3682 *41-3763 42-3834 42-3837 *42-3847
T.HEMA = 177774 #20-2177 *31-2871 42-3875
T.HIBC = 177776 #20-2179 30-2751 31-2864
T.HVFC = 177775 #20-2178 *31-2875 42-3865 *42-3867
T.PN = ****** GX 63-4959 63-4961
T.PZ = ****** GX 63-5018
T.SZ = ****** GX 63-4964
T10AD = 000020 #3-130
T11AD = 000022 #3-129
T11BC = 000016 #3-131
T50TBL 017276 R 67-5331 #67-5350
UF.TL = ****** GX 61-4869
UNASG1 = 000032 #11-1411 #20-2136 #44-3930 #59-4589
UNASG2 = 000033 #11-1411 #20-2136 #44-3930 #59-4589
UNASG3 = 000034 #11-1411 #20-2136 #44-3930 #59-4589
UNASG4 = 000035 #11-1411 #20-2136 #44-3930 #59-4589
UNASG5 = 000036 #11-1411 #20-2136 #44-3930 #59-4589
UNASG6 = 000037 #11-1411 #20-2136 #44-3930 #59-4589
UNIT = 000020 #11-1428 12-1479
UNS = 040000 #6-386 7-627 8-677
UPE = 020000 #6-363 8-742
U.ACP = ****** GX *61-4776
U.DACP = ****** GX 61-4774
U.DN = ****** GX 61-4790 61-4874 64-5078
U.FB = ****** GX 61-4869
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 15
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
U.RP = ****** GX 17-1904 61-4759 61-4867
U.SZ = 000050 #59-4621 61-4747 61-4864 63-4993 64-5083
U.UN = ****** GX 61-4791 61-4874 64-5080
U.VA = ****** GX 61-4761 61-4871
VFCFF 007000 R 31-2830 #31-2887
VFCTBL 006776 R 31-2873 #31-2885
VFUERR = 000100 #21-2238 37-3445
VFULOD = 000002 #21-2224 30-2695
VFURDY = 010000 #21-2211 33-3051
VV = 000100 #6-379 7-625
WCE = 040000 #6-362 8-742
WCF = 000040 #6-395
WEP = 000010 #11-1411 #20-2136 #44-3930 #59-4589
WFDNR 000416 RG #6-451 7-647
WFEF1 003362 R #16-1821 17-1834
WFPKT 002230 R #11-1446 12-1473
WLE = 004000 #6-389 8-677 8-681
WRITE = 000005 #11-1440 12-1570
WRL = 004000 #6-376
WRTDD = 000015 #11-1442 12-1573
WRTHDR 016630 R 64-5108 64-5108 66-5204 66-5204 #66-5216
W.TSEF = 000002 #6-443 #6-447 #6-451 #11-1446 #11-1448
ZSTOP = 040000 #11-1411 #20-2136 #44-3930 #59-4589
$CDINT 013636 RG #54-4436
$CD11 = 000001 #1-40
$DBDTE = 000001 #1-46
$DH11 = 000001 #1-44
$DIRAC = 000001 #6-318 7-518 #16-1783 17-1855 19-2005
$DIV 000032 RG #4-259 7-577 7-577 8-808 8-808 67-5335 67-5335
$DSW = ****** GX 65-5171 65-5176
$DTA = ****** 8-1089
$DTE = 000001 #1-47
$DXINT 002732 RG #13-1609
$FE = 000001 #1-42
$F11 = 000001 #1-43
$LPINT 010526 RG #37-3375
$LP20 = 000001 #1-38
$MUL 000000 RG #4-232
$RP04 = 000001 #1-41
$RX11 = 000001 #1-58 10-1349
$TOP10 = 000001 #1-51 1-54 3-109
$TOP20 = ****** 1-62 3-116
$T1091 = 000001 #1-36 1-50 1-55 3-110
$$ = 000037 #7-515 7-515 #7-577 7-577 #7-638 7-638 #8-726 8-726 #8-808
8-808 #8-827 8-827 #8-837 8-837 #8-843 8-843 #8-844 8-844
#8-845 8-845 #8-852 8-852 #12-1475 12-1475 #12-1516 12-1516 #12-1524
12-1524 #12-1550 12-1550 #12-1564 12-1564 #12-1577 12-1577 #12-1580 12-1580
#12-1592 12-1592 #13-1627 13-1627 #13-1643 13-1643 #17-1853 17-1853 #17-1868
17-1868 #17-1873 17-1873 #17-1882 17-1882 #17-1916 17-1916 #17-1925 17-1925
#18-1953 18-1953 #19-1999 19-1999 #19-2013 19-2013 #19-2064 19-2064 #28-2515
28-2515 #28-2528 28-2528 #29-2552 29-2552 #30-2616 30-2616 #30-2624 30-2624
#30-2648 30-2648 #30-2674 30-2674 #30-2719 30-2719 #30-2754 30-2754 #30-2761
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 16
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
30-2761 #31-2791 31-2791 #31-2846 31-2846 #31-2854 31-2854 #31-2880 31-2880
#32-2951 32-2951 #33-3086 33-3086 #33-3187 33-3187 #34-3269 34-3269 #37-3394
37-3394 #37-3439 37-3439 #37-3459 37-3459 #38-3570 38-3570 #38-3575 38-3575
#38-3618 38-3618 #39-3689 39-3689 #40-3726 40-3726 #41-3785 41-3785 #41-3790
41-3790 #42-3854 42-3854 #49-4096 49-4096 #49-4107 49-4107 #50-4122 50-4122
#50-4150 50-4150 #50-4162 50-4162 #50-4181 50-4181 #50-4215 50-4215 #51-4365
51-4365 #54-4449 54-4449 #55-4478 55-4478 #56-4503 56-4503 #57-4532 57-4532
#61-4742 61-4742 #61-4775 61-4775 #61-4783 61-4783 #61-4785 61-4785 #61-4804
61-4804 #61-4825 61-4825 #61-4857 61-4857 #61-4880 61-4880 #62-4891 62-4891
#62-4900 62-4900 #62-4907 62-4907 #62-4921 62-4921 #62-4927 62-4927 #62-4931
62-4931 #63-4968 63-4968 #63-4971 63-4971 #63-4974 63-4974 #63-4976 63-4976
#64-5055 64-5055 #64-5065 64-5065 #64-5103 64-5103 #64-5108 64-5108 #64-5113
64-5113 #64-5114 64-5114 #64-5119 64-5119 #64-5120 64-5120 #64-5125 64-5125
#64-5137 64-5137 #64-5144 64-5144 #64-5151 64-5151 #64-5155 64-5155 #65-5170
65-5170 #65-5179 65-5179 #66-5204 66-5204 #66-5225 66-5225 #66-5237 66-5237
#67-5285 67-5285 #67-5287 67-5287 #67-5289 67-5289 #67-5291 67-5291 #67-5296
67-5296 #67-5298 67-5298 #67-5323 67-5323 #67-5335 67-5335
$$$ = 000251 R #33-3202 33-3202 #33-3202 33-3202 #33-3202 33-3202 #33-3202 33-3202 #33-3202
33-3202 33-3202 33-3202 33-3202 33-3202 33-3202 #33-3202 33-3202 33-3202
33-3202 33-3202 33-3202 #33-3202 33-3202 33-3202 33-3202 33-3202 33-3202
#33-3202 33-3202 33-3202 33-3202 33-3202 33-3202 #33-3202 #35-3311 35-3311
#35-3311 35-3311 #35-3311 35-3311 #35-3311 35-3311 35-3311 35-3311 35-3311
35-3311 #35-3311 35-3311 35-3311 35-3311 35-3311 #35-3311 35-3311 35-3311
35-3311 35-3311 #35-3311 #37-3464 37-3464 #37-3464 37-3464 #37-3464 37-3464
#37-3464 37-3464 37-3464 37-3464 37-3464 37-3464 #37-3464 37-3464 37-3464
37-3464 37-3464 #37-3464 37-3464 37-3464 37-3464 37-3464 #37-3464 #38-3623
38-3623 #38-3623 38-3623 #38-3623 38-3623 #38-3623 38-3623 38-3623 38-3623
38-3623 38-3623 #38-3623 38-3623 38-3623 38-3623 38-3623 #38-3623 38-3623
38-3623 38-3623 38-3623 #38-3623 #39-3691 39-3691 #39-3691 39-3691 #39-3691
39-3691 #39-3691 39-3691 39-3691 39-3691 39-3691 39-3691 #39-3691 39-3691
39-3691 39-3691 39-3691 #39-3691 39-3691 39-3691 39-3691 39-3691 #39-3691
#40-3728 40-3728 #40-3728 40-3728 40-3728 40-3728 #40-3728 #41-3791 41-3791
#41-3791 41-3791 #41-3791 41-3791 41-3791 41-3791 41-3791 #41-3791 41-3791
41-3791 41-3791 #41-3791 #61-4785 61-4785 #61-4804 61-4804 #61-4880 61-4880
#63-4968 63-4968 #63-4971 63-4971 #63-4974 63-4974 #63-4976 63-4976 #64-5119
64-5119 #65-5179 65-5179
$$$ARG = 000003 #6-453 6-453 #6-453 6-453 #6-453 6-453 #33-3132 33-3132 #33-3132
33-3132 #33-3132 33-3132 #33-3132 33-3132 #61-4753 61-4753 #61-4753 61-4753
#61-4753 61-4753 #61-4753 61-4753 61-4753 61-4753 61-4753 61-4753 61-4753
61-4753 61-4753 61-4753 61-4753 #61-4874 61-4874 #61-4874 61-4874 #61-4874
61-4874 #61-4874 61-4874 61-4874 61-4874 61-4874 61-4874 61-4874 61-4874
61-4874 61-4874 61-4874 #66-5266 66-5266 66-5266 66-5266 66-5266 66-5266
66-5266 66-5266 66-5266 66-5266 66-5266 66-5266 #67-5304 67-5304 67-5304
67-5304 67-5304 67-5304 67-5304 67-5304 67-5304 67-5304 67-5304 67-5304
$$$GLB = ****** 6-443 6-443 6-445 6-445 6-447 6-447 6-449 6-449 6-449
6-449 6-449 6-451 6-451 6-453 6-453 6-453 6-453 6-453
6-453 6-453 6-453 11-1446 11-1446 11-1448 11-1448 16-1821 28-2490
28-2490 28-2490 28-2490 28-2490 28-2492 28-2492 28-2492 28-2492 28-2492
33-3132 33-3132 33-3132 33-3132 33-3132 33-3132 33-3132 33-3132 47-4042
47-4042 47-4042 47-4042 47-4042
$$$OST = 000012 #6-443 6-443 6-443 #6-443 #6-445 6-445 6-445 #6-445 #6-447
6-447 6-447 #6-447 #6-449 6-449 6-449 #6-449 6-449 6-449
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 17
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
#6-449 6-449 6-449 #6-449 6-449 6-449 #6-449 #6-451 6-451
6-451 #6-451 #6-453 6-453 6-453 #6-453 6-453 6-453 #6-453
6-453 6-453 #6-453 6-453 6-453 #6-453 6-453 6-453 #6-453
6-453 6-453 #6-453 6-453 #11-1446 11-1446 11-1446 #11-1446 #11-1448
11-1448 11-1448 #11-1448 #28-2490 28-2490 28-2490 #28-2490 28-2490 28-2490
#28-2490 28-2490 28-2490 #28-2490 28-2490 28-2490 #28-2490 #28-2492 28-2492
28-2492 #28-2492 28-2492 28-2492 #28-2492 28-2492 28-2492 #28-2492 28-2492
28-2492 #28-2492 #33-3132 33-3132 33-3132 #33-3132 33-3132 33-3132 #33-3132
33-3132 33-3132 #33-3132 33-3132 33-3132 #33-3132 33-3132 33-3132 #33-3132
33-3132 33-3132 #33-3132 33-3132 #47-4042 47-4042 47-4042 #47-4042 47-4042
47-4042 #47-4042 47-4042 47-4042 #47-4042 47-4042 47-4042 #47-4042
$$$T1 = 000011 #61-4739 61-4739 #66-5266 66-5266 #67-5304 67-5304
$$$T2 = 000000 #65-5169 65-5169
$$$$ = 000002 #33-3202 33-3202 #33-3202 33-3202 33-3202 #33-3202 33-3202 33-3202 #33-3202
33-3202 33-3202 #33-3202 33-3202 #33-3202 33-3202 #33-3202 33-3202 33-3202
#33-3202 33-3202 33-3202 #33-3202 33-3202 33-3202 #33-3202 33-3202 #33-3202
33-3202 #33-3202 33-3202 33-3202 #33-3202 33-3202 33-3202 #33-3202 33-3202
33-3202 #33-3202 33-3202 #33-3202 33-3202 #33-3202 33-3202 33-3202 #33-3202
33-3202 33-3202 #33-3202 33-3202 33-3202 #33-3202 33-3202 #35-3311 35-3311
#35-3311 35-3311 35-3311 #35-3311 35-3311 35-3311 #35-3311 35-3311 #35-3311
35-3311 #35-3311 35-3311 35-3311 #35-3311 35-3311 35-3311 #35-3311 35-3311
#35-3311 35-3311 #35-3311 35-3311 35-3311 #35-3311 35-3311 35-3311 #35-3311
35-3311 #37-3464 37-3464 #37-3464 37-3464 37-3464 #37-3464 37-3464 37-3464
#37-3464 37-3464 #37-3464 37-3464 #37-3464 37-3464 37-3464 #37-3464 37-3464
37-3464 #37-3464 37-3464 #37-3464 37-3464 #37-3464 37-3464 37-3464 #37-3464
37-3464 37-3464 #37-3464 37-3464 #38-3623 38-3623 #38-3623 38-3623 38-3623
#38-3623 38-3623 38-3623 #38-3623 38-3623 #38-3623 38-3623 #38-3623 38-3623
38-3623 #38-3623 38-3623 38-3623 #38-3623 38-3623 #38-3623 38-3623 #38-3623
38-3623 38-3623 #38-3623 38-3623 38-3623 #38-3623 38-3623 #39-3691 39-3691
#39-3691 39-3691 39-3691 #39-3691 39-3691 39-3691 #39-3691 39-3691 #39-3691
39-3691 #39-3691 39-3691 39-3691 #39-3691 39-3691 39-3691 #39-3691 39-3691
#39-3691 39-3691 #39-3691 39-3691 39-3691 #39-3691 39-3691 39-3691 #39-3691
39-3691 #40-3728 40-3728 #40-3728 40-3728 #41-3791 41-3791 #41-3791 41-3791
41-3791 #41-3791 41-3791 #41-3791 41-3791 #41-3791 41-3791 41-3791 #41-3791
41-3791
.BGBUF = ****** GX 30-2673 30-2713 62-4898 62-4905 64-5148
.BRCLK = 005000 #11-1411 #20-2136 #44-3930 #59-4589
.CECLK = 004000 #11-1411 #20-2136 #44-3930 #59-4589
.CLRMR = 006000 #11-1411 #20-2136 #44-3930 #59-4589
.CLRUN = 010000 #11-1411 #20-2136 #44-3930 #59-4589
.COMEF = ****** GX 17-1839 33-3027 50-4176 51-4271
.CONBT = 012000 #11-1411 #20-2136 #44-3930 #59-4589
.CRPFL = ****** GX 50-4120 *50-4123
.CRTSK = ****** GX 28-2522 49-4101 61-4756
.CSHRG = 164000 #11-1411 #20-2136 #44-3930 #59-4589
.CYLTM = 000074 #20-2188 28-2490 28-2490 28-2492 #44-3950 47-4042 47-4042
.DBINT 001236 RG #8-659
.DRLTC = 015000 #11-1411 #20-2136 #44-3930 #59-4589
.DSACF = 066000 #11-1411 #20-2136 #44-3930 #59-4589
.DSIOJ = 065000 #11-1411 #20-2136 #44-3930 #59-4589
.EIOJA = 067000 #11-1411 #20-2136 #44-3930 #59-4589
.FEACK 004312 RG #18-1938
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 18
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
.FEST 004416 RG #19-1965
.GFNR = 102000 #11-1411 #20-2136 #44-3930 #59-4589
.INICL = 070000 #11-1411 #20-2136 #44-3930 #59-4589
.IRLTC = 014000 #11-1411 #20-2136 #44-3930 #59-4589
.LCRDL = 052000 #11-1411 #20-2136 #44-3930 #59-4589
.LCRDR = 051000 #11-1411 #20-2136 #44-3930 #59-4589
.LCRM1 = 057000 #11-1411 #20-2136 #44-3930 #59-4589
.LCRM2 = 056000 #11-1411 #20-2136 #44-3930 #59-4589
.LCRM3 = 055000 #11-1411 #20-2136 #44-3930 #59-4589
.LCRM4 = 054000 #11-1411 #20-2136 #44-3930 #59-4589
.LCRM5 = 053000 #11-1411 #20-2136 #44-3930 #59-4589
.LDAR = 077000 #11-1411 #20-2136 #44-3930 #59-4589
.LDBRL = 043000 #11-1411 #20-2136 #44-3930 #59-4589
.LDBRR = 042000 #11-1411 #20-2136 #44-3930 #59-4589
.LDCK1 = 046000 #11-1411 #20-2136 #44-3930 #59-4589
.LDCK2 = 047000 #11-1411 #20-2136 #44-3930 #59-4589
.LDDIS = 045000 #11-1411 #20-2136 #44-3930 #59-4589
.LDRJD = 064000 #11-1411 #20-2136 #44-3930 #59-4589
.LDRJV = 063000 #11-1411 #20-2136 #44-3930 #59-4589
.LDRM1 = 060000 #11-1411 #20-2136 #44-3930 #59-4589
.LDRM2 = 061000 #11-1411 #20-2136 #44-3930 #59-4589
.LDRM3 = 062000 #11-1411 #20-2136 #44-3930 #59-4589
.LDSEL = 044000 #11-1411 #20-2136 #44-3930 #59-4589
.LPPFL = ****** GX 29-2550 *29-2553
.MEMRS = 076000 #11-1411 #20-2136 #44-3930 #59-4589
.PCAB1 = 150000 #11-1411 #20-2136 #44-3930 #59-4589
.PCAB2 = 151000 #11-1411 #20-2136 #44-3930 #59-4589
.PCAB3 = 152000 #11-1411 #20-2136 #44-3930 #59-4589
.PCAB4 = 153000 #11-1411 #20-2136 #44-3930 #59-4589
.POLLH = ****** GX 64-5143
.PUDBA = ****** GX 61-4747 63-4991 64-5076
.PUDEA = ****** GX 61-4865 64-5084
.RCRM1 = 147000 #11-1411 #20-2136 #44-3930 #59-4589
.RCRM2 = 146000 #11-1411 #20-2136 #44-3930 #59-4589
.RCRM3 = 145000 #11-1411 #20-2136 #44-3930 #59-4589
.RCRM4 = 144000 #11-1411 #20-2136 #44-3930 #59-4589
.RCSPF = 141000 #11-1411 #20-2136 #44-3930 #59-4589
.RDJ14 = 134000 #11-1411 #20-2136 #44-3930 #59-4589
.RDJ71 = 135000 #11-1411 #20-2136 #44-3930 #59-4589
.RDMAB = 133000 #11-1411 #20-2136 #44-3930 #59-4589
.RPUNT = ****** GX 17-1896
.SECLK = 003000 #11-1411 #20-2136 #44-3930 #59-4589
.SETMR = 007000 #11-1411 #20-2136 #44-3930 #59-4589
.SETRN = 011000 #11-1411 #20-2136 #44-3930 #59-4589
.SSCLK = 002000 #11-1411 #20-2136 #44-3930 #59-4589
.STDTA = ****** GX 64-5129
.STDTZ = ****** GX *64-5127 64-5128
.STPCL = 000000 #11-1411 #20-2136 #44-3930 #59-4589
.STRCL = 001000 #11-1411 #20-2136 #44-3930 #59-4589
.TPDBA = ****** GX 63-4957
.TPDEA = ****** GX 63-4965
.WRMBX = 071000 #11-1411 #20-2136 #44-3930 #59-4589
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 19
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
..AKCR 013766 RG #57-4523
..AKLP 011442 RG #40-3713
..ALC2 = ****** GX 30-2719 30-2719 62-4900 62-4900 62-4907 62-4907
..DECB = ****** GX 30-2761 30-2761
..DECN = ****** GX 19-1999 19-1999 38-3575 38-3575 55-4478 55-4478
..DEC2 = ****** GX 30-2674 30-2674 64-5151 64-5151 64-5155 64-5155
..DOLP 011664 RG 34-3269 34-3269 37-3439 37-3439 #42-3829
..DOL1 011650 RG 32-2951 32-2951 37-3394 37-3394 #42-3823
..DQRN = ****** GX 7-515 7-515 12-1475 12-1475 17-1853 17-1853 17-1882 17-1882 31-2791
31-2791
..DSEV = ****** GX 8-726 8-726 13-1643 13-1643 37-3459 37-3459 38-3570 38-3570 39-3689
39-3689 40-3726 40-3726 41-3785 41-3785 42-3854 42-3854 57-4532 57-4532
..ENB0 = ****** GX 17-1873 17-1873 41-3790 41-3790 64-5137 64-5137 65-5170 65-5170
..FSTD = ****** GX 61-4775 61-4775 64-5125 64-5125
..INTX = ****** GX 8-731 13-1650 37-3465 54-4453
..IODN = ****** GX 7-638 7-638 12-1592 12-1592 17-1868 17-1868 17-1925 17-1925 19-2013
19-2013 30-2754 30-2754 31-2854 31-2854
..NADD = ****** GX 64-5144 64-5144
..PTLP 011522 RG 31-2880 31-2880 38-3618 38-3618 #41-3752
..SACK = ****** GX 19-2002 30-2648 30-2648
..SPCR 013744 RG #56-4501
..SPLP 011270 RG 31-2846 31-2846 33-3086 33-3086 #39-3652
..STCR 013722 RG #55-4477
..STIN = ****** GX 17-1932 33-3187 33-3187 50-4150 50-4150 51-4365 51-4365
..STLP 011060 RG #38-3535
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 20
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
ALUN$ #20-2134
ALUN$S #59-4588 61-4753 61-4874
CALL #6-330 7-515 7-577 7-638 8-726 8-808 8-827 8-837 8-843 8-844
8-845 8-852 #11-1410 12-1475 12-1516 12-1524 12-1550 12-1564 12-1577 12-1580
12-1592 13-1627 13-1643 #16-1812 17-1853 17-1868 17-1873 17-1882 17-1916 17-1925
18-1953 19-1999 19-2013 19-2064 #20-2135 28-2515 28-2528 29-2552 30-2616 30-2624
30-2648 30-2674 30-2719 30-2754 30-2761 31-2791 31-2846 31-2854 31-2880 32-2951
33-3086 33-3187 34-3269 37-3394 37-3439 37-3459 38-3570 38-3575 38-3618 39-3689
40-3726 41-3785 41-3790 42-3854 #44-3929 49-4096 49-4107 50-4122 50-4150 50-4162
50-4181 50-4215 51-4365 54-4449 55-4478 56-4503 57-4532 #59-4588 61-4742 61-4775
61-4783 61-4785 61-4804 61-4825 61-4857 61-4880 62-4891 62-4900 62-4907 62-4921
62-4927 62-4931 63-4968 63-4971 63-4974 63-4976 64-5055 64-5065 64-5103 64-5108
64-5113 64-5114 64-5119 64-5120 64-5125 64-5137 64-5144 64-5151 64-5155 65-5170
65-5179 66-5204 66-5225 66-5237 67-5285 67-5287 67-5289 67-5291 67-5296 67-5298
67-5323 67-5335
CALLR #16-1812 #17-1932 #19-2002
CLEF$ #6-330 #6-445
DIR$ #6-330 #7-513 #7-595 #7-595 #7-633 #7-634 #7-645 #7-646 #7-647 #11-1410
#12-1473 #12-1588 #16-1811 #17-1834 #20-2134 #28-2525 #28-2526 #28-2526 #28-2527 #28-2527
#29-2543 #29-2543 #30-2721 #30-2721 #33-3026 #33-3026 #33-3128 #34-3233 #34-3235 #34-3235
#44-3929 #49-4104 #49-4105 #49-4105 #49-4106 #49-4106 #50-4114 #50-4114 #50-4175 #50-4175
#51-4270 #51-4270 #61-4739 #61-4739 #61-4753 #61-4753 #61-4874 #61-4874 #62-4892 #62-4892
#65-5169 #65-5169 #66-5266 #66-5266 #67-5304 #67-5304
ERR #59-4603 61-4785 61-4880 63-4968 63-4971 63-4974 63-4976 64-5119 65-5179
ERRF #59-4607 #63-4968 #63-4971 #63-4974
ERRN #59-4612 #65-5179
ERR$ #7-513 #7-595 #7-633 #7-634 #7-645 #7-646 #7-647 #12-1473 #12-1588 #17-1834
#28-2525 #28-2526 #28-2527 #29-2543 #30-2721 #33-3026 #33-3128 #34-3233 #34-3235 #49-4104
#49-4105 #49-4106 #50-4114 #50-4175 #51-4270 #61-4739 #61-4753 #61-4874 #62-4892 #65-5169
#66-5266 #67-5304
IDENT$ #4-147
MOV$ #28-2526 28-2526 28-2526 #28-2527 28-2527 #29-2543 29-2543 #34-3235 34-3235 #49-4105
49-4105 49-4105 #49-4106 49-4106 #50-4114 50-4114 #61-4739 61-4739 #61-4753 #61-4753
61-4753 61-4753 61-4753 #61-4874 #61-4874 61-4874 61-4874 61-4874 #65-5169 65-5169
#66-5266 #66-5266 66-5266 66-5266 66-5266 66-5266 66-5266 66-5266 66-5266 66-5266
66-5266 66-5266 #67-5304 #67-5304 67-5304 67-5304 67-5304 67-5304 67-5304 67-5304
67-5304
MRKT$ #6-330 6-449 #20-2134 28-2490 28-2492 #44-3928 47-4042
MSG #59-4594 61-4785 61-4804 61-4880 63-4968 63-4971 63-4974 63-4976 64-5119 65-5179
MVB$ #65-5169 65-5169 #66-5266 66-5266 #67-5304 67-5304
NBL$ #61-4753 61-4753 #61-4874 61-4874
OFF$ #6-443 #6-443 #6-443 #6-445 #6-445 #6-445 #6-447 #6-447 #6-447 #6-449
#6-449 #6-449 #6-449 #6-449 #6-449 #6-451 #6-451 #6-451 #6-453 #6-453
#6-453 #6-453 #6-453 #6-453 #6-453 #6-453 #6-453 #11-1446 #11-1446 #11-1446
#11-1448 #11-1448 #11-1448 #28-2490 #28-2490 #28-2490 #28-2490 #28-2490 #28-2490 #28-2492
#28-2492 #28-2492 #28-2492 #28-2492 #28-2492 #33-3132 #33-3132 #33-3132 #33-3132 #33-3132
#33-3132 #33-3132 #33-3132 #33-3132 #47-4042 #47-4042 #47-4042 #47-4042 #47-4042 #47-4042
POP #20-2135 #30-2675 #30-2740 #30-2755 #33-3188 #33-3202 #33-3202 #33-3202 #33-3202 #34-3271
#35-3311 #35-3311 #35-3311 #37-3422 #37-3428 #37-3464 #37-3464 #37-3464 #38-3623 #38-3623
#38-3623 #39-3691 #39-3691 #39-3691 #40-3728 #41-3791 #41-3791 #44-3929 #59-4588 #66-5227
#66-5238 #67-5305 #67-5306 #67-5345
PUSH #20-2135 #30-2587 #30-2670 #30-2710 #30-2749 #33-3022 #33-3183 #34-3267 #35-3291 #37-3377
DRIVERS91 CREATED BY MACRO ON 15-OCT-79 AT 14:03 PAGE 21
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
#37-3414 #38-3536 #39-3653 #40-3714 #41-3753 #44-3929 #59-4588 #61-4785 #61-4804 #61-4880
#63-4968 #63-4971 #63-4974 #63-4976 #64-5119 #65-5179 #66-5222 #66-5232 #67-5282 #67-5336
QDPB$ #6-453 #6-453 #33-3132 #33-3132
QDPB$S #66-5266 #66-5266 #67-5304 #67-5304
QIOSY$ #6-330 #6-332 #11-1408 #11-1409 #20-2134 #20-2137 #59-4588 #59-4590
QIOW$ #6-330 6-453 #20-2134 33-3132
QIOW$S #59-4588 #66-5266 #67-5304
RCVX$S #59-4588 61-4739
RESTOR #33-3022 33-3202 #35-3291 35-3311 #37-3377 37-3464 #38-3536 38-3623 #39-3653 39-3691
#40-3714 40-3728 #41-3753 41-3791
RETURN #4-212 #4-271 #6-330 #8-958 #8-994 #11-1410 #14-1713 #15-1741 #15-1761 #15-1777
#16-1812 #18-1957 #20-2135 #33-3203 #34-3276 #35-3312 #38-3624 #39-3692 #40-3729 #41-3792
#42-3885 #44-3929 #51-4372 #52-4386 #56-4505 #57-4533 #59-4588 #64-5159 #66-5228 #66-5239
#66-5273 #67-5307 #67-5316 #67-5348
RFA$ #61-4739 61-4739 #65-5169 65-5169 65-5169
RQST$S #59-4588 65-5169
RVP$ #29-2543 #50-4114 #61-4753 #61-4753 #61-4874 #61-4874 #66-5266 #66-5266 #67-5304 #67-5304
SAVE #20-2143 33-3022 35-3291 37-3377 38-3536 39-3653 40-3714 41-3753
SPRA$S #20-2134 28-2527 #44-3928 49-4106
SVTK$S #20-2134 #28-2526 #44-3928 #49-4105
VDPB$S #61-4739 61-4739
WSIG$S #6-330 7-595 #20-2134 30-2721 33-3026 #44-3928 50-4175 51-4270 #59-4588 62-4892
WTLO$ #16-1811 #16-1821
WTLO$S #20-2134 #29-2543 #44-3928 #50-4114
WTSE$ #6-330 #6-443 #6-447 #6-451 #11-1410 #11-1446 #11-1448
WTSE$S #20-2134 #34-3235 #44-3928
$DEF #11-1408 11-1411 #20-2135 20-2136 #44-3929 44-3930 #59-4588 59-4589
.ENB #16-1811 19-2055 #20-2135 29-2549 30-2637 #44-3929 50-4119
.ENB0 #16-1811 17-1873 #20-2135 41-3790 #59-4588 64-5137 65-5170
.ENB4 #20-2193 32-2953 34-3270
.ENB6 #16-1811 18-1955
.INH #16-1811 #19-2035 #20-2135 #29-2546 #30-2630 #44-3929 #50-4116
.INH0 #16-1811 #17-1835 #20-2135 #41-3767 #59-4588 #64-5123 #65-5165
.INH4 #20-2189 #32-2941 #34-3268
.INH6 #16-1811 #18-1950
.STKM #6-330 #6-441 #11-1410 #11-1444 #16-1811 #16-1832 #20-2135 #25-2394 #44-3929 #47-4017
#59-4588 #60-4672