Trailing-Edge
-
PDP-10 Archives
-
bb-m403a-bk
-
driver.l10
There are 3 other files named driver.l10 in the archive. Click here to see a list.
ARITH -- 16 BIT ARITHMETIC SIMU MACRO M1113 10-NOV-81 17:28
TABLE OF CONTENTS
6- 187 ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
21- 2168 TITLE PAGE
22- 2203 COMMON PARAMETERS AND MACROS
23- 2290 LP-20 DEVICE REGISTER DEFINITIONS
24- 2360 COMMON DEVICE PARAMETER MODULE
25- 2393 DEVICE STATUS BIT DEFINITIONS
26- 2448 LP-20 COMMON DATA MODULE
27- 2482 COMMON VARIABLES
28- 2490 LP-20 DEVICE TABLES
29- 2526 LP-20 DRIVER TASK MODULE
30- 2570 LPINI (INITIALIZE LP-20 TASK)
31- 2628 LPLOOP (LP-20 DRIVER TASK LOOP)
32- 2655 LPIOD (LP TASK I/O DONE)
33- 2865 LPNIR (LP TASK QUEUE I/O REQUEST)
34- 2996 LPMKT (LP TASK MARK-TIME REQUEST)
35- 3068 SSTSLP (SEND LP-20 STATUS TO -10)
36- 3303 TESTLP (START LP-20 GOING ON THREADED LIST)
37- 3375 INITLP (INITALIZE ALL LP'S)
38- 3413 LP-20 INTERRUPT SERVICE MODULE
39- 3445 $LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
40- 3564 LP-20 COMMON SUBROUTINES MODULE
40- 3603 ..STLP (START LP-20 OUTPUT)
41- 3725 ..SPLP (STOP LP-20 OUTPUT)
42- 3791 ..AKLP (ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)
43- 3828 ..PTLP (PUT BLOCK IN THREADED OUTPUT LIST)
44- 3891 ..DOLP (INITIATE LP-20 TRANSFER)
45- 3986 TITLE PAGE
46- 4021 COMMON PARAMETERS AND MACROS
47- 4049 CD-11 DEVICE REGISTER BIT DEFINITIONS
48- 4077 CD-11 DRIVER COMMON DATA MODULE
49- 4109 COMMON DATABASE DEFINITIONS
50- 4141 CD-11 DRIVER TASK MODULE
51- 4175 TASK INITIALIZATION
52- 4210 CRLOOP (MAIN PROCESSING LOOP)
53- 4329 SSTSCR (SEND CD-11 STATUS TO -10)
54- 4474 INITCR (INITIALIZE CD-11)
55- 4488 CD-11 DRIVER COMMON SUBROUTINES MODULE
56- 4526 $CDINT (CD-11 INTERRUPT SERVICE)
57- 4555 ..STCR (START CD-11)
58- 4584 ..SPCR (STOP CD-11)
59- 4607 ..AKCR (READ CARD)
60- 4637 TITLE PAGE
61- 4681 MACROS AND PARAMETERS
62- 4770 TASK DATA
63- 4820 FIND THE TASK FILE
64- 4985 INITIALIZE TASK FILE
65- 5037 SETUP STD ENTRY
66- 5145 SETUP LOGICAL UNIT TABLE FOR TASK
67- 5263 RE-REQUEST TASK
68- 5288 TASK FILE I/O ROUTINES
69- 5377 ERROR PROCESSING
70- 5467 END STATEMENT
RSXFC -- RSX20F PARAMETER FIL MACRO M1113 10-NOV-81 17:28 PAGE 1
1 .TITLE RSXFC -- RSX20F PARAMETER FILE (TOPS-10 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 ; VERSION 13-10
21 ;
22 ; ALAN D. PECKHAM 19-APR-77
23 ;
24 ; MODIFIED BY:
25 ;
26 ; R. BELANGER -- ELIMINATE 1090T "ARPA" CONFIGURATTION
27 ; R. BELANGER -- ADD 1091 CONFIGURATION
28 ;
29 ; FUNCTION: THIS MODULE PROVIDES THE PARAMETERS FOR ASSEMBLY OF RSX20F FOR
30 ; THE TOPS-10 SYSTEM.
31 ;
32 ; EQUATED SYMBOLS
33 ;
34 000001 $TOP10 =1 ; DEFINE TOPS-10 OPTION
35
36 000001 $LP20 =1 ; INCLUDE LP20 DRIVER
37 000002 L$$P20 =2 ; INCLUDE 2 LP-20'S
38 000001 $CD11 =1 ; INCLUDE CD11 CARD READER DRIVER
39 000001 $RP04 =1 ; INCLUDE RP04 DISK DRIVER
40 000001 $FE =1 ; INCLUDE FE PSEUDO-DEVICE DRIVER
41 000001 $F11 =1 ; INCLUDE FILES-11 ACP
42 000001 $DH11 =1 ; INCLUDE DH11 DRIVER
43 000010 D$$H11 =8. ; INCLUDE 8 DH-11'S
44 000001 $DBDTE =1 ; INCLUDE DTE20 DEBUGGING CODE
45 000001 $DTE =1 ; INCLUDE DTE20 DTE DRIVER
46 000001 R$$11D =1 ; RSX-11D BASE
47
48 .IF DF $T1091
49 $TOP10 =1 ; DEFINE TOPS-10 BASE FOR 1091
50 .ENDC ; $T1091
51
52 .IF DF $TOP10
53 .IF NDF $T1091
54 000001 $DTA =1 ; INCLUDE DECTAPE DRIVER FOR TOPS-10
55 .IFF
56 $RX11 =1 ; INCLUDE FLOPPY DRIVER FOR TOPS-10/1091
57 .ENDC ; $T1091
RSXFC -- RSX20F PARAMETER FIL MACRO M1113 10-NOV-81 17:28 PAGE 1-1
58 .ENDC ; $TOP10
59
60 .IF DF $TOP20
61 $RX11 =1 ; INCLUDE FLOPPY DRIVER
62 .ENDC ; $TOP20
RSX20F -- RESIDENT EXECUTIVE ( MACRO M1113 10-NOV-81 17:28 PAGE 2
64 .TITLE RSX20F -- RESIDENT EXECUTIVE (SYSTEM DEFINITION)
65 .IDENT /014450/
66 .ENABL AMA
67 .LIST MEB
68 .NLIST CND
69 ;
70 ; COPYRIGHT (C) 1975, 1978 BY
71 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
72 ;
73 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
74 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
75 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
76 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
77 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
78 ;
79 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
80 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
81 ; CORPORATION.
82 ;
83 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
84 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
85 ;
86 ; R. MCLEAN 19-MAR-75
87 ;
88 ; VERSION 14-45
89 ;
90 ; MODIFIED BY:
91 ;
RSX20F -- RESIDENT EXECUTIVE ( MACRO M1113 10-NOV-81 17:28 PAGE 3
93 ;
94 ; SET VERSION OF RSX20F EXEC HERE
95 ;
96 000014 RSX$$V = 14 ; VERSION 14
97 000045 RSX$$E = 45 ; EDIT 45
98 ;
99 ; RELEASE VERSION
100 ;
101 000126 RSX$$K = 'V ; KEY FOR RELEASE-TYPE
102 ; "V" -- RELEASE
103 ; "X" -- EXPERIMENTAL
104 ; "Y" -- FIELD/LOAD TEST
105 000000 RSX$$F = 0 ; DEFINE FORM AS NULL
108 000101 RSX$$F = 'A ; TOPS-10 FORM OF THE EXEC.
119 ;
120 ; DTE-20 REGISTER OFFSETS
121 ;
122 000036 DAG3 =36
123 000034 STATD =34
124 000032 DAG2 =32
125 000030 DAG1 =30
126 000022 T11AD =22
127 000020 T10AD =20
128 000016 T11BC =16
129 000010 TNAD1 =10
130 000012 TNAD2 =12
131 000006 DXWD1 =6
132 000004 DXWD2 =4
133 000002 DXWD3 =2
RSX20F -- RESIDENT EXECUTIVE ( MACRO M1113 10-NOV-81 17:28 PAGE 4
135 ;+
136 ; MACRO TO SET IDENT FOR EXEC MODULES.
137 ; FORMAT OF CALL IS:
138 ; IDENT$ VERSION,EDIT
139 ; OR
140 ; IDENT$ VERSION,EDIT,RSX$$F
141 ; IF MODULE CODING CHANGES WITH DIFFERENT FORMS
142 ;-
143
144 .MACRO IDENT$ VER,EDT,FRM,NUM
145 .IF B,NUM
146 .IF B,FRM
147 IDENT$ \VER,\EDT,0,0
148 .IFF
149 .IF EQ,<FRM-'A>
150 IDENT$ \VER,\EDT,A,0
151 .IFF
152 .IF EQ,<FRM-'B>
153 IDENT$ \VER,\EDT,B,0
154 .IFF
155 IDENT$ \VER,\EDT,E,0
156 .ENDC
157 .ENDC
158 .ENDC
159 .MEXIT
160 .IFF
161 .IF GE,VER-10
162 .IF GE,EDT-10
163 .LIST
164 .IDENT /'FRM'VER'EDT'0/
165 .NLIST
166 .IFF
167 .LIST
168 .IDENT /'FRM'VER'0'EDT'0/
169 .NLIST
170 .ENDC
171 .IFF
172 .IF GE,EDT-10
173 .LIST
174 .IDENT /'FRM'0'VER'EDT'0/
175 .NLIST
176 .IFF
177 .LIST
178 .IDENT /'FRM'0'VER'0'EDT'0/
179 .NLIST
180 .ENDC
181 .ENDC
182 .ENDC
183 .ENDM IDENT$
ARITH -- 16 BIT ARITHMETIC SIMU MACRO M1113 10-NOV-81 17:28 PAGE 6
186 .TITLE ARITH -- 16 BIT ARITHMETIC SIMULATOR
187 .SBTTL ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
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
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
ARITH -- 16 BIT ARITHMETIC SIMU MACRO M1113 10-NOV-81 17:28 PAGE 6-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
243
244 ;+
245 ; **-$DIV-INTEGER DIVIDE MAGNITUDE NUMBERS
246 ;
247 ; INPUTS:
248 ;
249 ; R0=DIVIDEND.
250 ; R1=DIVISOR.
251 ;
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 M1113 10-NOV-81 17:28 PAGE 7
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
274 .TITLE DBDRV -- RP04/RP06 DRIVER
275 .IDENT /014440/
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: 14-44
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
313 ; TCO 5.1003 14-SEP-79 R. BELANGER FIX BUG IN DUAL-PORT LOGIC
314 ; TCO 5.1009 15-0CT-79 R. BELANGER ADD RH-11 ERROR LOGGING
315 ; TCO 4.1.1105 11-MAR-80 R. BELANGER CHANGE "EF.PR1" RECOGNITION
316 ; RCO 5.0000 04-AUG-81 D. DEUFEL/S. LEAPLINE
317 ; FIX BUG IN ECC CORRECTION
318 ;
DBDRV -- RP04/RP06 DRIVER MACRO M1113 10-NOV-81 17:28 PAGE 8
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
320 ;
321 ; CONDITIONAL ASSEMBLY SWITCH DEFINITIONS
322 ;
323
324 000001 $DIRAC =1
325
326 ;R$$JPO =1 ; IF DEFINED, INCLUDE TRACK OFFSETTING
327
328 000001 R$$E18 =1 ; +++004 IF DEFINED, INCLUDE 18-BIT ECC CORRECTION
329
330 ;R$$E16 =1 ; +++004 IF DEFINED, INCLUDE 16-BIT ECC CORRECTION
331
332 ;
333 ; MACRO LIBRARY CALLS
334 ;
335
336 .MCALL WTSE$,CLEF$,MRKT$,QIOW$,DIR$,CALL,RETURN,.STKM,QIOSY$,WSIG$S
337
338 000070 QIOSY$
339
340
341
342 ; DEVICE REGISTER AND STATUS BIT DEFINITIONS
343
344
345 176700 RPEXP=176700 ; RPCS1 EXTERNAL PAGE ADDRESS
346
347
348
349 000000 RPCS1=0 ; CONTROL STATUS REGISTER 1
350
351 040000 TRE=40000 ; TRANSFER ERROR
352 020000 MCPE=20000 ; MASSBUS CONTROL PARITY ERROR
353 004000 DVA=4000 ; DRIVE AVAILABLE
354
355
356
357 000002 RPWC=2 ; WORD COUNT REGISTER
358
359 000004 RPBA=4 ; BUFFER ADDRESS REGISTER
360
361 000006 RPDA=6 ; DESIRED TRACK/SECTOR REGISTER
362
363
364
365 000010 RPCS2=10 ; CONTROL STATUS REGISTER 2
366
367 100000 DLT=100000 ; DATA LATE ERROR
368 040000 WCE=40000 ; WRITE CHECK ERROR
369 020000 UPE=20000 ; UNIBUS PARITY ERROR
370 010000 NED=10000 ; NONEXISTENT DISK ERROR
371 004000 NEM=4000 ; NONEXISTENT MEMORY ERROR
372 002000 PGE=2000 ; PROGRAMMING ERROR
373 001000 MXF=1000 ; MISSED TRANSFER ERROR
374 000400 MDPE=400 ; MASSBUS DATA PARITY ERROR
375
376
DBDRV -- RP04/RP06 DRIVER MACRO M1113 10-NOV-81 17:28 PAGE 8-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
377
378 000012 RPDS=12 ; DRIVE STATUS REGISTER
379
380 040000 ERR=40000 ; ERROR SUMMARY BIT
381 010000 MOL=10000 ; MEDIUM ONLINE
382 004000 WRL=4000 ; WRITE LOCKED DRIVE
383 001000 PGM=1000 ; PROGRAM MODE
384 000200 DRY=200 ; DRIVE READY
385 000100 VV=100 ; VOLUME VALID
386
387
388
389 000014 RPER1=14 ; ERROR SUMMARY REGISTER
390
391 100000 DCK=100000 ; DATA CHECK ERROR
392 040000 UNS=40000 ; DRIVE UNSAFE
393 020000 OPI=20000 ; OPERATION INCOMPLETE
394 010000 DTE=10000 ; DRIVE TIMING ERROR
395 004000 WLE=4000 ; WRITE LOCK ERROR
396 002000 IAE=2000 ; INVALID DISK ADDRESS
397 001000 AOE=1000 ; ADDRESS OVERFLOW
398 000400 HCRC=400 ; HEADER CRC ERROR
399 000200 HCE=200 ; HEADER COMPARE ERROR
400 000100 ECH=100 ; ECC HARD ERROR
401 000040 WCF=40 ; WRITE CLOCK FAILURE
402 000020 FER=20 ; FORMAT ERROR
403 000010 CPE=10 ; CONTROL BUS PARITY ERROR
404 000004 RMR=4 ; REGISTER MODIFY REFUSED
405 000002 ILR=2 ; ILLEGAL REGISTER
406 000001 ILF=1 ; ILLEGAL FUNCTION
407
408
409
410 000016 RPAS=16 ; ATTENTION SUMMARY REGISTER
411
412 000020 RPLA=20 ; LOOKAHEAD REGISTER
413
414 000022 RPDBR=22 ; DATA BUFFER REGISTER
415
416 000024 RPMR=24 ; MAINTENENCE REGISTER
417
418 000026 RPDT=26 ; DRIVE TYPE REGISTER
419
420 000030 RPSN=30 ; DRIVE SERIAL NUMBER
421
422
423 000032 RPOF=32 ; DRIVE OFFSET REGISTER
424
425 010000 FMT22=10000 ; FORMAT (1=16 BIT)
426 004000 ECI=4000 ; ECC INHIBIT
427 002000 HCI=2000 ; HEADER COMPARE INHIBIT
428
429
430 000034 RPDC=34 ; DESIRED CYLINDER NUMBER
431
432 000044 RPEC1=44 ; ECC POSITION REGISTER
433
DBDRV -- RP04/RP06 DRIVER MACRO M1113 10-NOV-81 17:28 PAGE 8-2
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
434 000046 RPEC2=46 ; ECC PATTERN REGISTER
435
436 ;
437 ; ERROR RETRY COUNT
438 ;
439
440 000010 RETRY=8. ; CONTROLLER ERROR RETRY COUNT
441
442
443 ; LOCAL DATA
444 ;
445 ;
446
447 000070 RPHD::
448 000070 .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
449
450 000370 DBIOD:
451 000370 WTSE$ E.IOD
000370 051 002 .BYTE 41.,2
000372 000000G .WORD E.IOD
452
453 000374 CLIOD:
454 000374 CLEF$ E.IOD ; CLEAR I/O DONE FLAG
000374 037 002 .BYTE 31.,2
000376 000000G .WORD E.IOD
455
456 000400 RPWLO:
457 000400 WTSE$ E.NIR ; WAIT FOR QIO
000400 051 002 .BYTE 41.,2
000402 000000G .WORD E.NIR
458
459 000404 MKDNR::
460 000404 MRKT$ 1,74.*10,0,0 ; WAIT FOR FIX
000404 027 005 .BYTE 23.,5
DBDRV -- RP04/RP06 DRIVER MACRO M1113 10-NOV-81 17:28 PAGE 8-3
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
000406 000001 .WORD 1
000410 001120 .WORD 74.*10
000412 000000 .WORD 0
000414 000000 .WORD 0
461
462 000416 WFDNR::
463 000416 WTSE$ 1 ; WAIT
000416 051 002 .BYTE 41.,2
000420 000001 .WORD 1
464
465 000422 MSGDPB:
466 000422 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
467
468 000442 DNMSG:
469 000442 015 012 104 .ASCII <15><12>"DB NOT RDY"<15><12>
000445 102 040 116
000450 117 124 040
000453 122 104 131
000456 015 012
470
471 000460 DUNS:
472 000460 015 012 104 .ASCII <15><12>"DB UNSAFE "<15><12>
000463 102 040 125
000466 116 123 101
000471 106 105 040
000474 015 012
473 .EVEN
474
475 000016 MSGSIZ =14. ; MESSAGE SIZE
476
497
499
500 000476 ECCWRD:
501 000476 000000 000000 000000 .WORD 0,0,0
502 000504 ECCMSK:
503 000504 000000 000000 000000 .WORD 0,0,0
504
DBDRV -- RP04/RP06 DRIVER MACRO M1113 10-NOV-81 17:28 PAGE 9
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
507 ;
508 ;+
509 ; **-DBINI-RH11-RP04 DISK PACK CONTROLLER INITIATOR
510 ;
511 ; THIS ROUTINE IS ENTERED FROM THE QUEUE I/O DIRECTIVE WHEN AN I/O REQUEST
512 ; IS QUEUED AND AT THE END OF A PREVIOUS I/O OPERATION TO PROPAGATE THE EXECU-
513 ; TION OF THE DRIVER. IF THE SPECIFIED CONTROLLER IS NOT BUSY, THEN AN ATTEMPT
514 ; IS MADE TO DEQUEUE THE NEXT I/O REQUEST. ELSE A RETURN TO THE CALLER IS
515 ; EXECUTED. IF THE DEQUEUE ATTEMPT IS SUCCESSFUL, THEN THE NEXT I/O OPER-
516 ; ATION IS INITIATED. A RETURN TO THE CALLER IS THEN EXECUTED.
517 ;
518 ; INPUTS:
519 ;
520 ;
521 ; OUTPUTS:
522 ;
523 ; IF THE SPECIFIED CONTROLLER IS NOT BUSY AND AN I/O REQUEST IS WAIT-
524 ; ING TO BE PROCESSED, THEN THE REQUEST IS DEQUEUED AND THE I/O OPER-
525 ; ATION IS INITIATED.
526 ;-
527
528 .ENABL LSB
529
530 000512 DBINI:
531 000512 DIR$ #RPWLO ; WAIT FOR SOMETHING TO DO
000512 012746 000400' MOV #RPWLO,-(SP)
000516 104375 EMT 375
532 000520 012700 041104 MOV #"DB,R0 ; DQ THE REQUEST
533 000524 CALL ..DQRN
000524 004737 000000G JSR PC,..DQRN
534 000530 103770 BCS DBINI ; NOTHING GO BACK TO SLEEP
535
550
551 000532 4$:
552 000532 010137 000000G MOV R1,RPRNA ; SAVE THE REQUST NODE ADDRESS
553 000536 010337 000000G MOV R3,RPCNT ; SAVE THE TRANSFER SIZE
554 000542 010237 000000G MOV R2,RPUNIT ; SAVE UNIT NUMBER
555 000546 010537 000002G MOV R5,RPBUF+2 ; SAVE THE XFER ADDRESS
556 000552 006304 ASL R4 ; SHIF TO CORRECT POSITION
557 000554 006304 ASL R4
558 000556 006304 ASL R4
559 000560 006304 ASL R4
560 000562 010437 000000G MOV R4,RPBUF ; SAVE ADDRESS (HIGH ORDER)
561 000566 052737 000171 000000G BIS #171,RPBUF ; ASSUME READ LOGICAL FUNCTION
562 000574 122761 000002 000001G CMPB #IO.RLB/256.,R.FC+1(R1) ; READ LOGICAL FUNCTION?
563 000602 001412 BEQ 10$ ; IF EQ YES
564 000604 122761 000001 000001G CMPB #IO.WLB/256.,R.FC+1(R1)
565 000612 001403 BEQ 5$
566 000614 012703 177776 MOV #IE.IFC,R3
567 000620 000553 BR 46$
568 ;
569 000622 5$:
570 000622 162737 000010 000000G SUB #10,RPBUF ; CONVERT TO WRITE LOGICAL FUNCTION
571 000630 10$:
572 000630 012737 000010 000000G MOV #RETRY,RPRTC ; SET RETRY COUNT
573
580
DBDRV -- RP04/RP06 DRIVER MACRO M1113 10-NOV-81 17:28 PAGE 9-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
581 000636 005002 CLR R2
582 000640 156102 000006G BISB R.PB+6(R1),R2
583 000644 016100 000010G MOV R.PB+10(R1),R0
584 000650 010103 MOV R1,R3 ; SAVE NODE ADDRESS
585 000652 012701 000020 MOV #16.,R1
586
587 000656 20$:
588 000656 006300 ASL R0
589 000660 006102 ROL R2 ;
590 000662 020227 000574 CMP R2,#19.*20. ; PARTIAL REMAINDER LARGER THAN DIVISOR?
591 000666 103403 BLO 30$ ; IF LO NO
592 000670 162702 000574 SUB #19.*20.,R2
593 000674 005200 INC R0
594 000676 30$:
595 000676 005301 DEC R1
596 000700 003366 BGT 20$ ; IF GT YES
597 000702 010063 000006G MOV R0,R.PB+6(R3)
598 000706 010200 MOV R2,R0 ; SET DIVIDEND TO TRACK/SECTOR REMAINDER
599 000710 012701 000024 MOV #20.,R1 ; SET DIVISOR TO NUMBER OF SECTORS/TRACK
600 000714 CALL $DIV ; CALCULATE TRACK AND SECTOR
000714 004737 000032' JSR PC,$DIV
601 000720 000300 SWAB R0 ; SWAP TRACK TO HIGH BYTE
602 000722 050100 BIS R1,R0 ; MERGE TRACK
603 000724 010063 000010G MOV R0,R.PB+10(R3)
604
605 ;
606 ; INITIATE I/O OPERATION
607 ;
608
609 000730 40$:
610 000730 012703 176710 MOV #RPEXP+RPCS2,R3 ; GET ADDRESS OF CSR
611 000734 012713 000040 MOV #40,@R3 ; CLEAR RH11+CONTROLLER
612 000740 113713 000000G MOVB RPUNIT,@R3
613 000744 012703 176700 MOV #RPEXP,R3
614 000750 41$:
615 000750 012713 000023 MOV #23,@R3 ; [5.1003] EXECUTE PACK ACK FUNCTION TO SET VV
616 000754 032737 000340 177776 BIT #340,@#PS ; IN INTERRUPT SERVICE?
617 000762 001007 BNE 42$ ; LEAVE IT ALONE -- MUST HAVE PORT HERE
618 000764 032713 004000 BIT #DVA,@R3 ; DRIVE AVAILABLE?
619 000770 001004 BNE 42$ ; YES -- USE IT
620 000772 WSIG$S ; NO -- BETTER WAIT FOR IT
000772 012746 MOV (PC)+,-(SP)
000774 061 001 .BYTE 49.,1
000776 104375 EMT 375
621 001000 000763 BR 41$ ; MAKE ANOTHER TRY
622 ;
623 001002 42$:
624 001002 012713 000023 MOV #23,@R3 ; PACK ACK AGAIN
625 001006 032713 004000 BIT #DVA,@R3 ; WATCH FOR TIMING AND MISSING DRIVE
626 001012 001756 BEQ 41$ ; MISSED IT -- TRY AGAIN
627 001014 43$:
628 001014 013702 000000G MOV RPRNA,R2 ; GET ADDRESS OF I/O PACKET
629 001020 012703 176710 MOV #RPEXP+RPCS2,R3 ; POINT TO SECOND CSR
630 001024 113713 000000G MOVB RPUNIT,@R3 ; SELECT PROPER DRIVE
631 001030 016243 000010G MOV R.PB+10(R2),-(R3) ; INSERT TRACK/SECTOR ADDRESS
632 001034 013743 000002G MOV RPBUF+2,-(R3) ; INSERT BUFFER ADDRESS
633 001040 013743 000000G MOV RPCNT,-(R3) ; INSERT NUMBER OF BYTES TO TRANSFER
DBDRV -- RP04/RP06 DRIVER MACRO M1113 10-NOV-81 17:28 PAGE 9-2
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
634 001044 006013 ROR @R3 ; CONVERT TO WORD COUNT
635 001046 005413 NEG @R3 ; MAKE NEGATIVE WORD COUNT
636 001050 005743 TST -(R3) ; POINT TO BEGINNING
637
648
649 001052 012700 000375 MOV #IE.DNR&377,R0 ; ASSUME DRIVE NOT READY
650 001056 016301 000012 MOV RPDS(R3),R1 ; GET CURRENT DRIVE STATUS
651 001062 005101 COM R1 ; COMPLEMENT STATUS
652 001064 032701 010300 BIT #MOL!DRY!VV,R1 ; DRIVE READY?
653 001070 001035 BNE 47$ ; IF NE NO
654 001072 032763 040000 000014 BIT #UNS,RPER1(R3) ; DRIVE UNSAFE?
655 001100 001052 BNE 49$ ; IF NE YES
656 001102 016263 000006G 000034 MOV R.PB+6(R2),RPDC(R3) ; SET DESIRED CYLINDER ADDRESS
657 001110 013713 000000G MOV RPBUF,@R3 ; START FUNCTION
658 001114 032737 000340 177776 BIT #340,@#PS ; CHECK FOR RESTART FROM INTERRUPT SERVICE LEVEL
659 001122 001136 BNE 85$ ; YES -- RETURN FROM INTERRUPT
660 001124 DIR$ #DBIOD ; WAIT FOR I/O DONE
001124 012746 000370' MOV #DBIOD,-(SP)
001130 104375 EMT 375
661 001132 DIR$ #CLIOD ; CLEAR I/O DONE FLAG
001132 012746 000374' MOV #CLIOD,-(SP)
001136 104375 EMT 375
662 001140 013701 000000G MOV RPRNA,R1 ; FIND THE REQUEST NODE
663 001144 013703 000000G MOV RPBUF,R3 ; FIND THE I/O STATUS
664 001150 46$:
665 001150 013704 000002G MOV RPBUF+2,R4 ; BOTH HALVES
666 001154 CALL ..IODN ; FINISH I/O
001154 004737 000000G JSR PC,..IODN
667 001160 000137 000512' JMP DBINI ; WAIT FOR NEXT
668 ;
669 001164 47$:
670 001164 012737 000442' 000436' MOV #DNMSG,MSGDPB+Q.IOPL ; SET FOR NOT READY MESSAGE
671
672 001172 48$:
673 001172 032737 000340 177776 BIT #340,@#PS ; CHECK FOR ENTRY FROM PRI
674 001200 001060 BNE 60$ ; YES -- GO RE-TRY
675 001202 DIR$ #MSGDPB ; COMPLAIN
001202 012746 000422' MOV #MSGDPB,-(SP)
001206 104375 EMT 375
676 001210 DIR$ #MKDNR ; WAIT FOR FIX
001210 012746 000404' MOV #MKDNR,-(SP)
001214 104375 EMT 375
677 001216 DIR$ #WFDNR ; WAIT
001216 012746 000416' MOV #WFDNR,-(SP)
001222 104375 EMT 375
678 001224 000641 BR 40$ ; AND TRY AGAIN
679 ;
680 001226 49$:
681 001226 012737 000460' 000436' MOV #DUNS,MSGDPB+Q.IOPL ; SET FOR UNSAFE MESSAGE
682 001234 000756 BR 48$ ; TYPE MESSAGE
683 ;
DBDRV -- RP04/RP06 DRIVER MACRO M1113 10-NOV-81 17:28 PAGE 10
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
685 ;
686 ;+
687 ; **-.DBINT-RH11-RP04 DISK PACK CONTROLLER INTERRUPTS
688 ;-
689 ;
690
691 001236 .DBINT::
692 001236 010046 MOV R0,-(SP) ;;; SAVE REGISTERS
693 001240 010146 MOV R1,-(SP)
694 001242 010246 MOV R2,-(SP)
695 001244 010346 MOV R3,-(SP)
696 001246 012702 176700 MOV #RPEXP,R2 ;;; GET ADDRESS OF CSR
697
704
705 001252 012700 000001 MOV #IS.SUC&377,R0 ;;; ASSUME SUCCESSFUL TRANSFER
706 001256 032712 060000 BIT #TRE!MCPE,@R2 ;;; ANY ERRORS?
707 001262 001432 BEQ 70$ ;;; IF EQ NO
708 001264 012700 000374 MOV #IE.VER&377,R0 ;;; ASSUME UNRECOVERABLE ERROR
709 001270 016201 000014 MOV RPER1(R2),R1 ;;; GET CONTENTS OF ERROR REGISTER
710 001274 032701 047007 BIT #UNS!WLE!IAE!AOE!RMR!ILR!ILF,R1 ;;; HARD ERROR?
711 001300 001004 BNE 50$ ;;; IF NE YES
712 001302 032762 014000 000010 BIT #NED!NEM,RPCS2(R2) ;;; HARD ERROR?
713 001310 001453 BEQ 100$ ;;; IF EQ NO
714 001312 50$:
715 001312 032701 004000 BIT #WLE,R1 ;;; WRITE LOCK ERROR?
716 001316 001403 BEQ 52$ ;;; IF EQ NO
717 001320 012700 000364 MOV #IE.WLK&377,R0 ;;; SET WRITE LOCK ERROR
718 001324 000415 BR 80$ ;;;
719 ;
720 001326 52$:
721 001326 032701 003000 BIT #IAE!AOE,R1 ;;; CHECK FOR ILLEGAL CYL
722 001332 001412 BEQ 80$ ;;; NO -- UNRECOVERABLE ERROR
723 001334 012700 000354 MOV #IE.BLK&377,R0 ;;; SET ILLEGAL BLOCK
724 001340 000407 BR 80$ ;;; AND RETURN
725 ;
737
738 ;
739 ; DEVICE TIMEOUT RESULTS IN THE CURRENT OPERATION BEING REPEATED. TIMEOUTS ARE
740 ; USUALLY CAUSED BY POWERFAILURE BUT MAY ALSO BE THE RESULT OF A HARDWARE FAILURE
741 ;
742
743 001342 60$:
744 001342 105337 000000G DECB RPRTC ;;; RETRY FUNCTION?
745
751
752 001346 003032 BGT 82$ ;;; IF GT YES
753
755
756 001350 70$:
757 001350 013701 000000G MOV RPRNA,R1 ;;; GET ADDRESS OF I/O PACKET
758 001354 016101 000002G MOV R.PB+2(R1),R1 ;;; SET FINAL VALUE OF SECOND STATUS WORD
759 001360 80$: ;;; REF LABEL
760 001360 012712 000013 MOV #13,@R2 ;;; RELEASE DUAL PORT
761 001364 010037 000000G MOV R0,RPBUF ;;; SAVE THE STATUS
762 001370 010137 000002G MOV R1,RPBUF+2
763 001374 052737 000000G 000020G BIS #EF.IOD,RPTSK+A.EF ;;; SET I/O DONE
764 001402 CALL ..DSEV ;;; DECLARE SIG EVENT
DBDRV -- RP04/RP06 DRIVER MACRO M1113 10-NOV-81 17:28 PAGE 10-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
001402 004737 000000G JSR PC,..DSEV
765 001406 105737 000000G TSTB RPBUF+0 ;;; [5.1009] DID WE GET AN ERROR??
766 001412 100002 BPL 85$ ;;; [5.1009] NO -- GO ON
767 001414 CALL 300$ ;;; [5.1009] YES -- QUEUE UP AN ERROR LOG REQUEST
001414 004737 001750' JSR PC,300$
768 001420 85$:
769 001420 012603 MOV (SP)+,R3 ;;; RESTORE REGISTERS
770 001422 012602 MOV (SP)+,R2
771 001424 012601 MOV (SP)+,R1
772 001426 012600 MOV (SP)+,R0
773 001430 000137 000000G JMP @#..INTX ;;; RETURN FROM INTERRUPTS
774 ;
775 001434 82$:
776 001434 000137 000730' JMP 40$
777 ;
784
785 001440 100$:
786 001440 032762 163400 000010 BIT #DLT!WCE!UPE!PGE!MXF!MDPE,RPCS2(R2) ;;; CONTROLLER ERROR?
787 001446 001335 BNE 60$ ;;; IF NE YES
788
795
796 001450 005701 TST R1 ;;; DATA CHECK ERROR?
797 001452 100333 BPL 60$ ;;; IF PL NO
798
800
801 001454 032701 000100 BIT #ECH,R1 ;;; ECC HARD ERROR?
802 001460 001330 BNE 60$ ;;; IF NE YES
803
805
806 ;
807 ; START ECC CORRECTION PROCEDURE
808 ;
809 ; FIRST CALCULATE THE BYTE OFFSET TO THE START OF BLOCK TRANSFERED
810 ;
811
812 001462 105$:
813 001462 016203 000002 MOV RPWC(R2),R3 ;;; GET NEGATIVE NUMBER OF WORDS REMAINING
814 001466 006303 ASL R3 ;;; CONVERT TO NEGATIVE BYTES REMAINING
815 001470 063703 000000G ADD RPCNT,R3 ;;; CALCULATE NUMBER OF BYTES TRANSFERED
816
825
826 001474 005303 DEC R3 ;;; CALCULATE OFFSET TO START OF BLOCK
827 001476 107$:
828 001476 042703 000777 BIC #777,R3 ;;; CLEAR RESIDUE
829
837
839
840 ;
841 ; 18-BIT ECC CORRECTION ROUTINES
842 ;
843 ; THE WORD IN ERROR AND THE WORD FOLLOWING IT ARE SET UP AS A TRIPLET
844 ; (TWO 18-BIT WORDS) AS IS THE ECC CORRECTION MASK FROM THE CONTROLLER.
845 ; THE MASK TRIPLET IS POSITIONED OVER THE DATA TRIPLET, CORRECTION IS
846 ; APPLIED, AND THE TWO DATA WORDS RETUNED TO THE BUFFER. THE CURRENT
847 ; OPERATION THEN PROCEEDS NORMALLY.
848 ;
849 001502 016200 000044 MOV RPEC1(R2),R0 ;;; LOOK AT POSITION REGISTER
DBDRV -- RP04/RP06 DRIVER MACRO M1113 10-NOV-81 17:28 PAGE 10-2
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
850 001506 001003 BNE 109$ ;;; 5.000 BRANCH IF OK
851 001510 112700 000374 MOVB #IE.VER&377,R0 ;;; 5.000 INDICATE ERROR
852 001514 000721 BR 80$ ;;; AND EXIT
853 001516 005300 109$: DEC R0 ;;; MINUS 1
854 001520 012701 000022 MOV #^D18,R1 ;;; DIVIDE BY 18.
855 001524 CALL $DIV ;;; SO
001524 004737 000032' JSR PC,$DIV
856 ;
857 ; COMPUTE THE ADDRESS OF THE WORD IN ERROR
858 ;
859 ; R0 -- WORD OFFSET IN TRANSFER
860 ; R1 -- SHIFT COUNT FOR ECC MASK
861 ; R2 -- BASE OF CONTROLLER REGISTERS
862 ; R3 -- OFFSET INTO TRANSFER BUFFER
863 ;
864 001530 006300 ASL R0 ;;; CONVERT TO BYTE OFFSET
865 001532 063703 000002G ADD RPBUF+2,R3 ;;; BUFFER ADDRESS TO R3
866 001536 060003 ADD R0,R3 ;;; POINT TO WORD IN ERROR
867 ;
868 ; CONSTRUCT THE CORRECTION MASK TRIPLET
869 ;
870 001540 012700 000512' MOV #ECCMSK+6,R0 ;;; POINT TO THE MASK BUFFER
871 001544 005040 CLR -(R0) ;;; CLEAR IT OUT
872 001546 005040 CLR -(R0) ;;; SO
873 001550 016240 000046 MOV RPEC2(R2),-(R0) ;;; SET THE MASK WORD IN THE BUFFER
874 001554 CALL 141$ ;;; SHIFT IT INTO CORRECT POSITION
001554 004737 001704' JSR PC,141$
875 ;
876 ; CONSTRUCT THE ERROR DATA TRIPLET
877 ;
878 001560 005723 TST (R3)+ ;;; POINT TO THE SECOND ERROR WORD
879 001562 012700 000504' MOV #ECCWRD+6,R0 ;;; POINT TO THE ECC WORD BUFFER
880 001566 005040 CLR -(R0) ;;; CLEAR IT OUT
881 001570 005040 CLR -(R0) ;;; SO
882 001572 011340 MOV (R3),-(R0) ;;; SET SECOND ERROR WORD IN BUFFER
883 001574 012701 000022 MOV #^D18,R1 ;;; SHIFT IT INTO THE HIGH 18. BITS
884 001600 CALL 141$ ;;; SO
001600 004737 001704' JSR PC,141$
885 001604 014310 MOV -(R3),(R0) ;;; SET THE FIRST ERROR WORD IN THE BUFFER
886 001606 012701 000504' MOV #ECCMSK,R1 ;;; POINT TO THE SHIFTED MASK
887 ;
888 ; APPLY CORRECTION TO EACH WORD IN THE DATA TRIPLET
889 ;
890 001612 CALL 130$ ;;; CORRECT BITS 00 THRU 16
001612 004737 001672' JSR PC,130$
891 001616 CALL 130$ ;;; CORRECT BITS 17 THRU 32
001616 004737 001672' JSR PC,130$
892 001622 CALL 130$ ;;; CORRECT BITS 33 THRU 36
001622 004737 001672' JSR PC,130$
893 ;
894 ; REPLACE THE ERROR WORDS WITH THOSE JUST CORRECTED
895 ;
896 001626 162700 000006 SUB #6,R0 ;;; BACK THE POINTER UP
897 001632 011023 MOV (R0),(R3)+ ;;; SET FIRST CORRECTED WORD IN BUFFER
898 001634 012701 177756 MOV #-^D18,R1 ;;; SHIFT COUNT TO R1
899 001640 CALL 141$ ;;; SHIFT SECOND CORRECTED WORD DOWN
001640 004737 001704' JSR PC,141$
DBDRV -- RP04/RP06 DRIVER MACRO M1113 10-NOV-81 17:28 PAGE 10-3
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
900 001644 011013 MOV (R0),(R3) ;;; SET SECOND CORRECTED WORD IN BUFFER
901 ;
902 ; CONTINUE OR TERMINATE PREVIOUS OPERATION
903 ;
904
906
954
955 ;
956 ; SIXTH FINISH OR CONTINUE PREVIOUS FUNCTION
957 ;
958
959 001646 012700 000001 MOV #IS.SUC&377,R0 ;;; ASSUME SUCCESSFUL TRANSFER
960 001652 112712 000011 MOVB #11,@R2 ;;; CLEAR DRIVE ERRORS
961
967
968 001656 005762 000002 TST RPWC(R2) ;;; ANY MORE WORDS TO TRANSFER?
969
971
972 001662 001632 BEQ 70$ ;;; IF EQ NO
973
982
983 001664 113712 000000G MOVB RPBUF,@R2 ;;; RESTART PREVIOUS OPERATION
984 001670 000653 BR 85$
985 ;
987
988 ;
989 ; APPLY CORRECTION TO ONE WORD IN THE ERROR TRIPLET
990 ;
991 ; INPUTS:
992 ;
993 ; R0 POINTS TO WORD IN DATA TRIPLET TO BE CORRECTED
994 ; R1 POINTS TO WORD IN MASK TRIPLET TO BE APPLIED TO DATA
995 ;
996 ; OUTPUTS:
997 ;
998 ; R0 POINTS TO THE NEXT WORD IN THE DATA TRIPLET
999 ; R1 POINTS TO THE NEXT WORD IN THE MASK TRIPLET
1000 ;
1001 001672 130$:
1002 001672 011146 MOV (R1),-(SP) ;;; CURRENT MASK TO STACK
1003 001674 041016 BIC (R0),(SP) ;;; .NOT. MASK .AND. DATA
1004 001676 042110 BIC (R1)+,(R0) ;;; .NOT. DATA .AND. MASK
1005 001700 052620 BIS (SP)+,(R0)+ ;;; DATA .OR. MASK
1006 001702 140$:
1007 001702 RETURN ;;; FOR MORE
001702 000207 RTS PC
1008 ;
1009 ; SHIFT A TRIPLET EITHER RIGHT OR LEFT
1010 ;
1011 ; INPUTS:
1012 ;
1013 ; R0 POINTS TO TRIPLET TO BE SHIFTED
1014 ; R1 HAS SHIFT COUNT -
1015 ; .GT. 0 => SHIFT LEFT
1016 ; .EQ. 0 => NO SHIFT
1017 ; .LT. 0 => SHIFT RIGHT
1018 ;
DBDRV -- RP04/RP06 DRIVER MACRO M1113 10-NOV-81 17:28 PAGE 10-4
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1019 ; NO REGISTERS ALTERED
1020 ;
1021 001704 141$:
1022 001704 010146 MOV R1,-(SP) ;;; SAVE SHIFT COUNT
1023 001706 100407 BMI 143$ ;;; SHIFT RIGHT IF NEGATIVE
1024 001710 001415 BEQ 145$ ;;; GO AWAY IF .EQ. 0
1025 001712 142$:
1026 001712 006320 ASL (R0)+ ;;; SHIFT AWAY TO THE LEFT
1027 001714 006120 ROL (R0)+ ;;; PROPAGATE CARRY
1028 001716 006110 ROL (R0) ;;; FOR ALL THREE WORDS
1029 001720 024040 CMP -(R0),-(R0) ;;; BACK THE POINTER UP
1030 001722 077105 SOB R1,142$ ;;; LOOP TILL DONE
1031 001724 000407 BR 145$ ;;; EXIT
1032 ;
1033 001726 143$:
1034 001726 005401 NEG R1 ;;; SO "SOB" WORKS
1035 001730 144$:
1036 001730 022020 CMP (R0)+,(R0)+ ;;; 5.000 ADVANCE THE POINTER
1037 001732 000241 CLC ;;; 5.000 CLEAR THE CARRY BIT
1038 001734 006010 ROR (R0) ;;; 5.000
1039 001736 006040 ROR -(R0) ;;; 5.000
1040 001740 006040 ROR -(R0) ;;; 5.000
1041 001742 077106 SOB R1,144$ ;;; TRY FOR MORE
1042 001744 145$:
1043 001744 012601 MOV (SP)+,R1 ;;; RESTORE SHIFT COUNT
1044 001746 RETURN ;;; TO CALLER
001746 000207 RTS PC
1045
1047
1067
1068 ;
1069 ; OFFSET RECOVERY
1070 ;
1071
1150 001750 300$:
1151 001750 005737 000002G TST .COMEF+2 ;;; [4.1.1105] PRIMARY PROTOCOL RUNNING??
1152 001754 100037 BPL 340$ ;;; [4.1.1105] NO -- JUST EXIT
1153 001756 022737 000002 000000G CMP #2,.RPELC ;;; [5.1009] YES -- IS THERE SPACE IN THE QUEUE
1154 001764 001433 BEQ 340$ ;;; [5.1009] NO -- EXIT
1155 001766 012701 000052 MOV #52,R1 ;;; [5.1009] YES -- ALLOCATE A PACKET
1156 001772 CALL ..ALCB ;;; [5.1009] SO
001772 004737 000000G JSR PC,..ALCB
1157 001776 103426 BCS 340$ ;;; [5.1009] ERROR IF CC-C IS SET
1158 002000 005237 000000G INC .RPELC ;;; [5.1009] COUNT THIS NODE
1159 002004 012702 000000G MOV #.RPELQ,R2 ;;; [5.1009] LISTHEAD POINTER TO R2
1160 002010 310$:
1161 002010 011203 MOV (R2),R3 ;;; [5.1009] FIND THE END OF THE LIST
1162 002012 001402 BEQ 320$ ;;; [5.1009] FOUND IT -- GO ON
1163 002014 010303 MOV R3,R3 ;;; [5.1009] NOT YET
1164 002016 000774 BR 310$ ;;; [5.1009] TRY AGAIN
1165 ;
1166 002020 320$:
1167 002020 010012 MOV R0,(R2) ;;; [5.1009] LINK NEW NODE
1168 002022 005020 CLR (R0)+ ;;; [5.1009] MARK END OF LIST
1169 002024 010120 MOV R1,(R0)+ ;;; [5.1009] SET NODE SIZE
1170 002026 012720 000046 MOV #46,(R0)+ ;;; [5.1009] SET TRANSFER SIZE
1171 002032 012720 000300 MOV #DV.LOG!DV.URE,(R0)+ ;;; [5.1009] SET STANDARD STATUS
DBDRV -- RP04/RP06 DRIVER MACRO M1113 10-NOV-81 17:28 PAGE 10-5
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1172 002036 012701 176700 MOV #RPEXP,R1 ;;; [5.1009] POINT TO BASE OF DEVICE REGISTERS
1173 002042 010120 MOV R1,(R0)+ ;;; [5.1009] SET THAT IN PACKET
1174 002044 012702 000020 MOV #20,R2 ;;; [5.1009] SET SIZE OF DEVICE
1175 002050 330$:
1176 002050 012120 MOV (R1)+,(R0)+ ;;; [5.1009] LOAD UP THE PACKET
1177 002052 077202 SOB R2,330$ ;;; [5.1009] SO
1178 002054 340$:
1179 002054 RETURN ;;; [5.1009] TO CALLER
002054 000207 RTS PC
1180 .DSABL LSB
1182 .TITLE DTDRV
1183 .IDENT /007000/
1184 ;
1185 ;
1186 ;
1187 ; COPYRIGHT (C) 1975, 1978 BY
1188 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
1189 ;
1190 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
1191 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
1192 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
1193 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
1194 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
1195 ;
1196 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
1197 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
1198 ; CORPORATION.
1199 ;
1200 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
1201 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
1202 ;
1203 ; VERSION 07-00
1204 ;
1205 ; R. MCLEAN 5-JUN-75
1206 ;
1207 ; TC11 DECTAPE CONTROLLER DRIVER
1208 ;
1209 ; MODIFICATIONS:
1210 ;
1211 ; NO. DATE PROGRAMMER PURPOSE
1212 ; --- ---- ---------- -------
1213 ; 001 15-MAR-77 R. BELANGER CONDITIONALLY
1214 ; ASSEMBLE DECTAPE DRIVER
1215 ; 002 04-APR-77 A. PECKHAM FIX BUG IN I/O DONE SERVICE
1216 ; 22-0CT-77 R. BELANGER REMOVE CONDITIONALS
DTDRV MACRO M1113 10-NOV-81 17:28 PAGE 11
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1218 ; MACRO LIBRARY CALLS
1219 ;
1220 ;
1221 .MCALL QIOSY$,$DEF
1222 .MCALL .STKM,WTSE$,QIOW$,MRKT$,DIR$,CALL,RETURN
1223 002056 $DEF
1224 002056 QIOSY$
1225 ;
1226 ;
1227 000020 A.EF=20 ;TEMP DEFINITION OF A.EF BECAUSE MACY WON'T ACCEPT COMPLEX GLOBLS
1228 ;
1229 ; EQUATED SYMBOLS
1230 ;
1231 ;
1232 000005 RETRY=5. ;ERROR RETRY COUNT
1233 ;
1234 177340 DTEXP=177340 ;EXTERNAL PAGE ADDRESS OF DTA'S
1235 ;
1236 ; DIRECTIVES
1237 ;
1238 ;
1239 002056 DTHD:: .STKM 0,0,0,0,0,0,0,DTINI,174000,DTSTK
002124 000000 000000 000000 .WORD 0,0,0,0
002132 000000
002152 174000 002442' 002336' .WORD 174000,DTINI,DTSTK
002206 000005 .WORD 5
002210 000000G .WORD TTPEN
002212 000000 .WORD 0
002214 000000 .WORD 0
002216 000000 .WORD 0
002220 000000 .WORD 0
002222 000000 .WORD 0
002224 000000 .WORD 0
002226 000000 .WORD 0
002230 000000 .WORD 0
002232 000000 .WORD 0
002234 000000 .WORD 0
002336 000000 .WORD 0
002340 000000 .WORD 0
002342 000000 .WORD 0
002344 000000 .WORD 0
002346 000000 .WORD 0
002350 000000 .WORD 0
002352 002442' .WORD DTINI
002354 174000 .WORD 174000
1240 ;
1241 002356 WFDTQ: WTSE$ E.NIR
002356 051 002 .BYTE 41.,2
002360 000000G .WORD E.NIR
1242 ;
1243 002362 WFDTD: WTSE$ E.IOD
002362 051 002 .BYTE 41.,2
002364 000000G .WORD E.IOD
1244 ;
1245 002366 DTNRM: QIOW$ IO.WLB,1,1,0,0,0,<NTRDMS,NTRDSZ>
002366 003 010 .BYTE 3,$$$ARG
002370 000400 .WORD IO.WLB
DTDRV MACRO M1113 10-NOV-81 17:28 PAGE 11-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
002372 000001 .WORD 1
002374 001 000 .BYTE 1,0
002376 000000 .WORD 0
002400 000000 .WORD 0
002402 002424' .WORD NTRDMS
002404 000016 .WORD NTRDSZ
1246 ;
1247 002406 MRKDT: MRKT$ 2,74*10,0,0
002406 027 005 .BYTE 23.,5
002410 000002 .WORD 2
002412 000740 .WORD 74*10
002414 000000 .WORD 0
002416 000000 .WORD 0
1248 ;
1249 002420 WFMKT: WTSE$ 2
002420 051 002 .BYTE 41.,2
002422 000002 .WORD 2
1250 ;
1251 002424 012 015 104 NTRDMS: .ASCII <12><15>"DT NOT RDY"<15><12>
002427 124 040 116
002432 117 124 040
002435 122 104 131
002440 015 012
1252 000016 NTRDSZ=.-NTRDMS
1253 .EVEN
1254 ;
1255 ; DRIVER DISPATCH TABLE
1256 ;
1257 ;
1258 ;+
1259 ; **-DTINI-TC11 DECTAPE CONTROLLER INITIATOR
1260 ;
1261 ; THIS ROUTINE IS ENTERED FROM THE QUEUE I/O DIRECTIVE WHEN AN I/O REQUEST
1262 ; IS QUEUED AND AT THE END OF A PREVIOUS I/O OPERATION TO PROPAGATE THE EXECU-
1263 ; TION OF THE DRIVER. IF THE SPECIFIED CONTROLLER IS NOT BUSY, THEN AN ATTEMPT
1264 ; IS MADE TO DEQUEUE THE NEXT I/O REQUEST. ELSE A RETURN TO THE CALLER IS
1265 ; EXECUTED. IF THE DEQUEUE ATTEMPT IS SUCCESSFUL, THEN THE NEXT I/O OPER-
1266 ; ATION IS INITIATED. A RETURN TO THE CALLER IS THEN EXECUTED.
1267 ;
1268 ; INPUTS:
1269 ;
1270 ;
1271 ; OUTPUTS:
1272 ;
1273 ; IF THE SPECIFIED CONTROLLER IS NOT BUSY AND AN I/O REQUEST IS WAIT-
1274 ; ING TO BE PROCESSED, THEN THE REQUEST IS DEQUEUED AND THE I/O OPER-
1275 ; ATION IS INITIATED.
1276 ;-
1277 ;
1278 .ENABL LSB
1279 ;
1280 002442 DTINI: DIR$ #WFDTQ ;WAIT FOR SOMETHING TO BE QUEUE'S
002442 012746 002356' MOV #WFDTQ,-(SP)
002446 104375 EMT 375
1281 002450 012700 052104 MOV #"DT,R0 ;FIND THE UNIT NUMBER OF THE DT
1282 002454 CALL ..DQRN ;;DEQUEUE REQUEST
002454 004737 000000G JSR PC,..DQRN
DTDRV MACRO M1113 10-NOV-81 17:28 PAGE 11-2
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1283 002460 103770 BCS DTINI
1284 002462 010337 000000G MOV R3,DTCNT ;SAVE COUNT
1285 002466 010437 000000G MOV R4,DTBUF
1286 002472 010537 000002G MOV R5,DTBUF+2
1287
1288 002476 012737 000005 000000G MOV #RETRY,DTRTC ;SET RETRY COUNT
1289 002504 012700 000001G MOV #DTBUF+1,R0
1290 002510 110210 MOVB R2,@R0 ;INSERT DRIVE NUMBER
1291 002512 152740 000115 BISB #115,-(R0) ;ASSUME WRITE LOGICAL FUNCTION
1292 002516 122761 000001 000001G CMPB #IO.WLB/256.,R.FC+1(R1) ;WRITE LOGICAL FUNCTION?
1293 002524 001406 BEQ 10$ ;IF EQ YES
1294 002526 042710 000010 BIC #10,@R0 ;CONVERT TO READ LOGICAL FUNCTION
1295 002532 122761 000002 000001G CMPB #IO.RLB/256.,R.FC+1(R1) ;READ LOGICAL?
1296 002540 001074 BNE 767$ ;NO -- BAD FUNCTION
1297 002542 032761 000100 000000G 10$: BIT #IO.WLV&377,R.FC(R1) ;REVERSE DIRECTION?
1298 002550 001402 BEQ 20$ ;IF EQ NO
1299 002552 052710 004000 BIS #4000,@R0 ;SET REVERSE DIRECTION BIT
1300 002556 012703 000354 20$: MOV #IE.BLK&377,R3 ;ASSUME ILLEGAL BLOCK NUMBER
1301 002562 016102 000010G MOV R.PB+10(R1),R2 ;GET LOW PART OF LOGICAL BLOCK NUMBER
1302 002566 020227 001102 CMP R2,#1102 ;LEGAL BLOCK NUMBER?
1303 002572 103052 BHIS 66$ ; +++002 IF HIS NO
1304 002574 105761 000006G TSTB R.PB+6(R1) ;HIGH PART OF LOGICAL BLOCK NUMBER ZERO?
1305 002600 001045 BNE 50$ ;IF NE NO
1306 002602 010237 000000G MOV R2,DTCW2 ;SET LOGICAL BLOCK NUMBER
1307
1308 ;
1309 ;
1310
1311 002606 005037 177340 DTOUT: CLR @#DTEXP ;;;CLEAR INTERRUPT ENABLE
1312 ;
1313 ;
1314 ; INITIATE I/O OPERATION
1315 ;
1316 ;
1317 002612 012700 177346 30$: MOV #DTEXP+6,R0 ;GET ADDRESS OF COMMAND REGISTER
1318 002616 013710 000002G MOV DTBUF+2,@R0 ;INSERT BUFFER ADDRESS
1319 002622 013740 000000G MOV DTCNT,-(R0) ;INSERT LENGTH OF TRANSFER IN BYTES
1320 002626 005037 000000G CLR DTCW3 ;CLEAR FINAL ERROR STATUS
1321 002632 006010 ROR @R0 ;CONVERT LENGTH TO WORD COUNT
1322 002634 005410 NEG @R0 ;MAKE NEGATIVE WORD COUNT
1323 002636 113740 000001G MOVB DTBUF+1,-(R0) ;INSERT UNIT AND DIRECTION BIT
1324 002642 112740 000011 MOVB #11,-(R0) ;STOP TRANSPORT (SELECT UNIT)
1325 002646 032710 100200 35$: BIT #100200,@R0 ;SELECT ERROR?
1326 002652 100432 BMI 40$ ;IF MI YES
1327 002654 001774 BEQ 35$ ;IF EQ DRIVE NOT SELECTED
1328 002656 112737 000010 000001G MOVB #8.,DTRTC+1 ;SET TAPE ROCK COUNT
1329 002664 042737 000000G 000020G BIC #EF.IOD,DTTSK+A.EF ;CLEAR EVENT FLAG
1330 002672 112710 000103 MOVB #103,@R0 ;START SEARCH FOR BLOCK.
1331 002676 032737 000340 177776 BIT #340,@#PS ;AT PRI LEVEL?
1332 002704 001176 BNE 140$ ;YES -- RETURN THROUGH INTERRUPT SERVICE
1333 002706 DIR$ #WFDTD ;WAIT FOR I/O DONE
002706 012746 002362' MOV #WFDTD,-(SP)
002712 104375 EMT 375
1334 002714 013703 000000G 50$: MOV DTBUF,R3 ;SET UP FOR I/O DONE
1335 002720 013704 000000G 66$: MOV DTCNT,R4
1336 002724 CALL ..IODN
002724 004737 000000G JSR PC,..IODN
DTDRV MACRO M1113 10-NOV-81 17:28 PAGE 11-3
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1337 002730 000644 BR DTINI ;WAIT FOR ANOTHER
1338 002732 012703 177776 767$: MOV #IE.IFC,R3
1339 002736 000770 BR 66$
1340 ;
1341 ;
1342 ;
1343 ;
1344 ;
1345 ; OUTPUT SELECT ERROR MESSAGE
1346 ;
1347 ;
1348 002740 032737 000340 177776 40$: BIT #340,@#PS ;CHECK FOR INT SERV
1349 002746 001135 BNE 175$ ;TOUGH
1350 002750 DIR$ #DTNRM ;COMPLAIN
002750 012746 002366' MOV #DTNRM,-(SP)
002754 104375 EMT 375
1351 002756 DIR$ #MRKDT ;MARK TIME ON SELECT ERROR
002756 012746 002406' MOV #MRKDT,-(SP)
002762 104375 EMT 375
1352 002764 DIR$ #WFMKT ;WAIT FOR MARK TIME
002764 012746 002420' MOV #WFMKT,-(SP)
002770 104375 EMT 375
1353 002772 000705 BR DTOUT ;AND TRY AGAIN
1354 ;
1355
1356 ;+
1357 ; **-$DTINT-TC11 DECTAPE CONTROLLER INTERUPTS
1358 ;-
1359 ;
1360 002774 $DTINT:: ;;;REF LABEL
1361 ;
1362 ;
1363 ;
1364 ;
1365 002774 010046 MOV R0,-(SP) ;;;SAVE REGISTERS
1366 002776 010246 MOV R2,-(SP)
1367 003000 010346 MOV R3,-(SP)
1368 ;
1369 ;
1370 ;
1371 ;
1372 003002 012703 177342 MOV #DTEXP+2,R3 ;;;SET UP ADDRESS OF DT
1373 003006 032713 000002 BIT #2,@R3 ;;;BLOCK SEARCH IN PROGRESS?
1374 003012 001462 BEQ 150$ ;;;IF EQ NO
1375 003014 005713 TST @R3 ;;;SEARCH ERROR?
1376 003016 100011 BPL 70$ ;;;IF PL NO
1377 003020 005743 TST -(R3) ;;;END ZONE?
1378 003022 100436 BMI 110$ ;;;IF MI YES
1379 003024 032723 020000 BIT #20000,(R3)+ ;;;MARK TRACK ERROR?
1380 003030 001045 BNE 120$ ;;;IF NE YES-TRY TO BYPASS IT
1381 003032 012737 100000 000000G 60$: MOV #100000,DTCW3 ;;;SET UNRECOVERALBE ERROR
1382 003040 000454 BR 160$ ;;;
1383 003042 016346 000006 70$: MOV 6(R3),-(SP) ;;;GET CURRENT BLOCK NUMBER
1384 003046 123763 000001G 000001 CMPB DTBUF+1,1(R3) ;;;MOVING IN FINAL DIRECTION?
1385 003054 001003 BNE 80$ ;;;IF NE NO
1386 003056 021637 000000G CMP @SP,DTCW2 ;;;BLOCK NUMBER MATCH?
1387 003062 001432 BEQ 130$ ;;;IF EQ YES
DTDRV MACRO M1113 10-NOV-81 17:28 PAGE 11-4
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1388 003064 032713 004000 80$: BIT #4000,@R3 ;;;MOVING IN FORWARD DIRECTION?
1389 003070 001405 BEQ 90$ ;;;IF EQ YES
1390 003072 062716 000002 ADD #2,@SP ;;;ADD TURN AROUND BIAS
1391 003076 023726 000000G CMP DTCW2,(SP)+ ;;;TURN AROUND NECESSARY?
1392 003102 000404 BR 100$ ;;;
1393 003104 162716 000002 90$: SUB #2,@SP ;;;SUBTRACT TURN AROUND BIAS
1394 003110 022637 000000G CMP (SP)+,DTCW2 ;;;TURN AROUND NECESSARY?
1395 003114 003413 100$: BLE 120$ ;;;IF LE NO
1396 003116 005743 TST -(R3) ;;;POINT TO ERROR REGISTER
1397 003120 005723 110$: TST (R3)+ ;;;POINT TO COMMAND REGISTER
1398 003122 105337 000001G DECB DTRTC+1 ;;;DRIVE HUNG?
1399 003126 002741 BLT 60$ ;;;IF LT YES
1400 003130 012746 004000 MOV #4000,-(SP) ;;;GET DIRECTION BIT
1401 003134 041316 BIC @R3,@SP ;;;.NOT.COMMAND REGISTER.AND.DIRECTION BIT
1402 003136 042713 004000 BIC #4000,@R3 ;;;.NOT.DIRECTION BIT.ANL.OMMAND REGISTER
1403 003142 052613 BIS (SP)+,@R3 ;;;DIRECTION BIT.OR.COMMAND REGISTER
1404 003144 005213 120$: INC @R3 ;;;CONTINUE SEARCH
1405 003146 000455 BR 140$ ;;;
1406 003150 005726 130$: TST (SP)+ ;;;REMOVE BLOCK NUMBER FROM STACK
1407 003152 013713 000000G MOV DTBUF,@R3 ;;;START READ/WRITE FUNCTION
1408 003156 000451 BR 140$
1409 003160 005713 150$: TST @R3 ;;;ANY ERRORS?
1410 003162 100003 BPL 160$ ;;;IF PL NO
1411 003164 016337 177776 000000G MOV -2(R3),DTCW3 ;;;SAVE ERROR STATUS
1412 003172 112713 000011 160$: MOVB #11,@R3 ;;;STOP TAPE MOTION
1413 003176 012700 000001 MOV #IS.SUC&377,R0 ;ASSUME SUCCESSFUL COMPLETION
1414 003202 013702 000000G MOV DTCW3,R2 ;RETRIEVE FINAL STATUS
1415 003206 001417 BEQ 180$ ;IF EQ SUCCESS
1416 003210 032702 063000 BIT #63000,R2 ;RECOVERABLE ERROR?
1417 003214 001405 BEQ 170$ ;IF EQ NO
1418 003216 105337 000000G DECB DTRTC ;ANY MORE RETRIES?
1419 003222 003402 BLE 170$ ;IF LE NO
1420 003224 000137 002612' JMP 30$ ;TRY AGAIN
1421 003230 012700 000364 170$: MOV #IE.WLK&377,R0 ;ASSUME DRIVE WRITE LOCKED
1422 003234 032702 010000 BIT #10000,R2 ;DRIVE WRITE LOCKED?
1423 003240 001002 BNE 180$ ;IF NE YES
1424 003242 012700 000374 175$: MOV #IE.VER&377,R0 ;UNRECOVERABLE ERROR
1425 003246 013703 177344 180$: MOV DTEXP+4,R3
1426 003252 160303 SUB R3,R3
1427 003254 063703 000000G ADD DTCNT,R3
1428 003260 010037 000000G MOV R0,DTBUF ;SAVE I/O STATUS
1429 003264 010337 000002G MOV R3,DTBUF+2
1430 003270 052737 000000G 000020G BIS #EF.IOD,DTTSK+A.EF ;SET EVENT FLAG
1431 003276 CALL ..DSEV
003276 004737 000000G JSR PC,..DSEV
1432 003302 012603 140$: MOV (SP)+,R3
1433 003304 012602 MOV (SP)+,R2
1434 003306 012600 MOV (SP)+,R0
1435 003310 000137 000000G JMP ..INTX ;RETURN FROM INTERRUPT
1436 ;
1437 .DSABL LSB
1438 ;
FEDRV MACRO M1113 10-NOV-81 17:28 PAGE 18
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1873 .TITLE FEDRV
1874 .IDENT /014220/
1875 000001 $DIRAC=1
1876 ;
1877 ; COPYRIGHT (C) 1975, 1978 BY
1878 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
1879 ;
1880 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
1881 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
1882 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
1883 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
1884 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
1885 ;
1886 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
1887 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
1888 ; CORPORATION.
1889 ;
1890 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
1891 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
1892 ;
1893 ; VERSION 14-22
1894 ;
1895 ; R. MCLEAN 25-JUN-75
1896 ; A. PECKHAM 30-NOV-76
1897 ; TCO 4.1.1105 11-MAR-80 R. BELANGER CHANGE "EF.PR1" RECOGNITION
1898 ;
1899 ; FE PSEUDO DRIVER
1900 ;
1901 ; MACRO LIBRARY CALLS
1902 ;
1903 ;
1904 .MCALL .STKM,WTLO$,DIR$,.INH0,.ENB0,.ENB6,.INH6,.ENB,.INH
1905 .MCALL CALL,CALLR,RETURN
1906 ;
1907 ; EQUATED SYMBOLS
1908 ;
1909 100000 EF.SEP=100000 ;SECONDARY PROTOCOL FLAG
1910 000400 EF.TEF=400 ;DONE EVENT FLAG
1911 ;
1912 ; DIRECTIVES
1913 ;
1914 003314 WFEF1: WTLO$ 1,EF.SEP!EF.NIR!EF.TEF ;WAIT FOR SOMETHING TO DO
003314 053 003 .BYTE 43.,3
003316 000001 .WORD 1
003320 000000C .WORD EF.SEP!EF.NIR!EF.TEF
1915 ;
1916 ; DATA AREAS
1917 ;
1918 ; FETBL SWITCHES
1919 ;
1920 040000 FE.DET=040000 ;MORE DATA -11 TO -10 TO BE SENT
1921 020000 FE.DTE=020000 ;MORE DATA -10 TO -11 EXPECTED
1922 004000 FE.SER=004000 ;SERVICING -11 TRANSFER REQUEST
1923 002000 FE.STR=002000 ;SERVICING -10 TRANSFER REQUEST
1924
1925 003322 FEHD:: .STKM 0,0,0,0,0,0,0,FEDRV,174000,FESTK
003370 000000 000000 000000 .WORD 0,0,0,0
FEDRV MACRO M1113 10-NOV-81 17:28 PAGE 18-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
003376 000000
003416 174000 003622' 003602' .WORD 174000,FEDRV,FESTK
003452 000005 .WORD 5
003454 000000G .WORD TTPEN
003456 000000 .WORD 0
003460 000000 .WORD 0
003462 000000 .WORD 0
003464 000000 .WORD 0
003466 000000 .WORD 0
003470 000000 .WORD 0
003472 000000 .WORD 0
003474 000000 .WORD 0
003476 000000 .WORD 0
003500 000000 .WORD 0
003602 000000 .WORD 0
003604 000000 .WORD 0
003606 000000 .WORD 0
003610 000000 .WORD 0
003612 000000 .WORD 0
003614 000000 .WORD 0
003616 003622' .WORD FEDRV
003620 174000 .WORD 174000
FEDRV MACRO M1113 10-NOV-81 17:28 PAGE 19
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1927 003622 FEDRV: DIR$ #WFEF1 ;WAIT TO GET STARTED
003622 012746 003314' MOV #WFEF1,-(SP)
003626 104375 EMT 375
1928 003630 .INH0 ;LOCK OUT DTE INTERRUPTS
003630 013746 177776 MOV @#PS,-(SP)
003634 112737 000140 177776 MOVB #140,@#PS
1929 003642 013700 000020G 1$: MOV FETSK+A.EF,R0 ;;;PICK UP THE EVENT FLAGS
1930 003646 001434 BEQ 5$ ;;;EXIT IF NOTHING
1931 003650 005037 000020G CLR FETSK+A.EF ;;;CLEAR EVENT FLAGS
1932 003654 005737 000002G TST .COMEF+2 ;;; [4.1.1105] PRIMARY PROTOCOL IN USE?
1933 003660 100002 BPL 2$ ;;; [4.1.1105] NO -- BETTER DUMP REQUEST'S
1934 003662 005700 TST R0 ;;;SECONDARY PROTOCOL CHANGE?
1935 003664 100025 BPL 5$ ;;;NO -- CONTINUE
1936 ;
1937 ; PRIMARY PROTOCOL HAS DIED - CLEAR OUT THE REQUEST QUEUE
1938 ;
1939 003666 013701 000000G 2$: MOV NODADR,R1 ;;;GET CURRENT NODE
1940 003672 005037 000000G CLR NODADR ;;;DON'T BLOCK FE DRIVER
1941 003676 005037 000000G CLR STSWD ;;;CLEAR STATUS WORD BLOCK
1942 003702 042737 064000 000000G BIC #FE.SER!FE.DET!FE.DTE,FETBL+0 ;;;NO ACTION ON FE0
1943 003710 005701 TST R1 ;;;WERE WE PROCESSING A NODE ?
1944 003712 001005 BNE 4$ ;;;YES -- DO IT FIRST
1945 003714 012700 042506 3$: MOV #"FE,R0 ;;;PICK A NODE FROM THE QUEUE
1946 003720 CALL ..DQRN ;;;DQ
003720 004737 000000G JSR PC,..DQRN
1947 003724 103746 BCS 1$
1956 003726 4$:
1958 ;
1959 ;
1960 003726 012703 177761 7$: MOV #IE.ABO,R3 ;;;RETURN ABORTED
1961 003732 CALL ..IODN ;;;FINISH I/O
003732 004737 000000G JSR PC,..IODN
1962 003736 000766 BR 3$ ;;;AND TRY NEXT REQUEST
1963 ;
1964 ; CHECK FOR EVENTS
1965 ;
1966 003740 5$: .ENB0 ;;;ENABLE INTERRUPTS
003740 004737 000000G JSR PC,..ENB0
1967 003744 032700 000400 BIT #EF.TEF,R0 ;CHECK TO SEE IF DONE
1968 003750 001104 BNE IODN
1969 ;
1970 ; MUST BE I/O REQUEST
1971 ;
1972 003752 005737 000000G TST NODADR ;BLOCKED?
1973 003756 001321 BNE FEDRV ;YES -- DON'T DO ANYTHING ON QIO NOW
1974 003760 012700 042506 MOV #"FE,R0 ;DQ FROM FE DRIVER
1975 003764 CALL ..DQRN ;DQ
003764 004737 000000G JSR PC,..DQRN
1976 003770 103714 BCS FEDRV ;NOTHING -- WAIT
1977 003772 052737 004000 000000G BIS #FE.SER,FETBL+0 ;FE0 BEING USED FOR -11 REQUEST
1978 004000 010137 000000G MOV R1,NODADR ;SAVE THE ADDRESS OF THE NODE
1979 004004 010537 000000G MOV R5,ADRSAV ;SAVE THE ADDRESS
1980 004010 010337 000000G MOV R3,BYTESA ;SAVE THE BYTE COUNT
1981 004014 012702 000000G MOV #TO10PK,R2 ;SET UP PACKET ADDRESS
1982 004020 010200 MOV R2,R0 ;SAVE THE ADDRESS OF THE BUFFER
1983 004022 012722 000014 MOV #14,(R2)+ ;STORE SIZE
1984 004026 016122 000000G MOV R.FC(R1),(R2)+ ;SET UP THE FUNCTION CODE
FEDRV MACRO M1113 10-NOV-81 17:28 PAGE 19-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1985 004032 005003 CLR R3 ;FIND THE LUN
1986 004034 156103 000000G BISB R.LU(R1),R3 ;SET UP THE LUT NUMBER
1987 004040 001005 BNE 10$ ;EXEC REQUEST?
1988 004042 012722 041104 MOV #"DB,(R2)+ ;DECLARE DB
1989 004046 013722 000000G MOV .RPUNT,(R2)+ ;SET UNIT NUMBER
1990 004052 000424 BR 77$ ;AND FINISH
1991 004054 016104 000000G 10$: MOV R.AT(R1),R4 ;FIND THE ATL
1992 004060 016404 000000G MOV A.HA(R4),R4 ;FIND THE HEADER ADDRESS
1993 004064 006303 ASL R3 ;MULTIPLY THE LUN BY 2
1994 004066 006303 ASL R3
1995 004070 060304 ADD R3,R4 ;POINT TO CORRECT ENTRY
1996 004072 016404 177776G MOV H.LUT-2(R4),R4 ;FIND THE LUT (FINALLY)
1997 004076 016404 000000G MOV U.RP(R4),R4 ;DO REDIRECT
1998 004102 012422 MOV (R4)+,(R2)+ ;STORE THE DEVICE (ASCII CHARACTER)
1999 004104 011422 MOV (R4),(R2)+ ;STORE THE UNIT
2000 004106 116104 000000G MOVB R.DP(R1),R4 ;FIND THE DPB SIZE
2001 004112 162704 000007 SUB #7,R4 ;SUB PERMINENT ONES
2002 004116 001002 BNE 77$ ;GOT A GOOD BYTE COUNT
2003 004120 005037 000000G CLR BYTESA ;NO CLEAR OUT BYTE COUNT
2004 004124 016122 000006G 77$: MOV R.PB+6(R1),(R2)+ ;STORE THE BLOCK NUMBER
2005 004130 016122 000010G MOV R.PB+10(R1),(R2)+
2006 004134 013722 000000G MOV BYTESA,(R2)+ ;SET BYTE COUNT
2007 004140 001403 BEQ 78$ ;IF MORE DATA MUST GO OUT
2008 004142 052737 040000 000000G BIS #FE.DET,FETBL+0 ;THEN SO INDICATE
2009 004150 78$: CALL SNSTR ;START INDIRECT FUNCTION
004150 004737 004224' JSR PC,SNSTR
2010 004154 005037 000000G CLR STSWD
2011 004160 000620 BR FEDRV ;AND WAIT
2012
2013 004162 013703 000000G IODN: MOV STSWD,R3 ;SET I/O DONE
2014 004166 013704 000002G MOV STSWD+2,R4
2015 004172 013701 000000G MOV NODADR,R1 ;SET NODE ADDRESS
2016 004176 005037 000000G CLR NODADR ;CLEAR INCASE OF ABORT
2017 004202 005037 000000G CLR STSWD ;CLEAR STATUS WORD
2018 004206 CALL ..IODN ;SET I/O DONE
004206 004737 000000G JSR PC,..IODN
2019 004212 042737 064000 000000G BIC #FE.SER!FE.DET!FE.DTE,FETBL+0 ;WE ARE FINISHED WITH -11 REQUEST
2020 004220 000137 003622' JMP FEDRV ;AND RETURN
2021
2022 004224 012701 100000G SNSTR: MOV #BC.STR+100000,R1 ;SET UP STRING DATA
2023 004230 005002 CLR R2 ;NO EVENT FLAG
2024 004232 012703 000000G MOV #D.FEPD,R3 ;FE DEVICE
2025 004236 CALLR ..STIN ;START INDIRECT
004236 000137 000000G JMP ..STIN
FEDRV MACRO M1113 10-NOV-81 17:28 PAGE 20
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
2027 ;
2028 ; THE -10 HAS SENT AN ACK TO US - CONTINUE THE OPERATION
2029 ; IF IT WAS A WRITE.
2030 ;
2031 004242 032712 040000 .FEACK::BIT #FE.DET,(R2) ;IS THERE DATA TO SEND ?
2032 004246 001436 BEQ 30$ ;NO, IGNORE THE ACK.
2033 004250 010046 MOV R0,-(SP) ;SAVE R0
2034 004252 013700 000000G MOV ADRSAV,R0 ;PICK UP THE ADDRESS
2035 004256 012701 000100 MOV #64.,R1 ;SET THE COUNT
2036 004262 020137 000000G CMP R1,BYTESA ;TOO BIG ??
2037 004266 101402 BLOS 10$ ;NO - USE THIS COUNT
2038 004270 013701 000000G MOV BYTESA,R1 ;YES - SEND WHAT'S LEFT
2039 004274 060137 000000G 10$: ADD R1,ADRSAV ;SET NEW ADDRESS
2040 004300 160137 000000G SUB R1,BYTESA ;AND BYTES LEFT
2041 004304 001002 BNE 20$ ;IF NO MORE AFTER THIS
2042 004306 042712 040000 BIC #FE.DET,(R2) ;THEN SO INDICATE
2043 004312 20$: .INH6 ;LOCK OUT INTERRUPTS
004312 013746 177776 MOV @#PS,-(SP)
004316 112737 000300 177776 MOVB #300,@#PS
2044 004324 014046 MOV -(R0),-(SP) ;;;SAVE MEMORY HERE
2045 004326 010110 MOV R1,@R0 ;;;STORE FIRST WORD TO10
2046 004330 CALL SNSTR ;;;START FUNCTION
004330 004737 004224' JSR PC,SNSTR
2047 004334 012610 MOV (SP)+,@R0 ;;;RESTORE FIRST WORD
2048 004336 .ENB6 ;;;ENABLE INTERRUPTS
004336 012637 177776 MOV (SP)+,@#PS
2049 004342 012600 MOV (SP)+,R0 ;RESTORE
2050 004344 30$: RETURN ;RETURN TO CALLER
004344 000207 RTS PC
FEDRV MACRO M1113 10-NOV-81 17:28 PAGE 21
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
2052 ;
2053 ; START FE DEVICE QUEUE ENTRY
2054 ;
2055 ; R0 -> THREAD BLOCK ENTRY
2056 ; R2 -> FETBL ENTRY
2057 ;
2058 004346 122760 000000G 000007 .FEST:: CMPB #BC.STR,7(R0) ;FUNCTION STRING?
2059 004354 001077 BNE IOABT ;NO -- ABORT I/O IN PROGRESS
2060 004356 005005 CLR R5 ;FIND THE BYTE SIZE
2061 004360 156005 000006 BISB 6(R0),R5
2062 004364 016004 000004 MOV 4(R0),R4 ;SET UP THE NODE ADDRESS
2063 004370 032712 020000 BIT #FE.DTE,(R2) ;ARE WE EXPECTING DATA ?
2064 004374 001040 BNE 70$ ;YES, INSERT IN BUFFER.
2065 004376 012401 MOV (R4)+,R1 ;CHECK TO SEE WHICH DIRECTION THIS FUNCTION IS
2066 004400 100102 BPL FCN ;REQUEST TO DO A FUNCTION -- SPECIAL
2067 004402 013703 000000G MOV NODADR,R3 ;A RETURN FUNCTION -
2068 004406 066301 000000G ADD R.FC(R3),R1 ;IS IT THE LAST ONE WE SENT ?
2069 004412 001100 BNE FCNBD ;NO -- ILLEGAL REQUEST -- QUIT
2070 004414 122763 000003 000001G CMPB #IO.ATT/400,R.FC+1(R3) ;ACP FUNCTION CODE?
2071 004422 001006 BNE 40$ ;NO -- LEAVE ADDRESSES ALONE
2072 004424 016337 000012G 000000G MOV R.PB+12(R3),BYTESA ;SET UP TO BYTE COUNT
2073 004432 016337 000004G 000000G MOV R.PB+4(R3),ADRSAV ;ALSO ADDRESS
2074 004440 022424 40$: CMP (R4)+,(R4)+ ;MOVE OVER DEVICE/UNIT
2075 004442 012437 000000G MOV (R4)+,STSWD ;SAVE THE I/O STATUS
2076 004446 012437 000002G MOV (R4)+,STSWD+2 ;BOTH HALVES
2077 004452 052712 020000 BIS #FE.DTE,(R2) ;INDICATE WE ARE EXPECTING DATA
2078 004456 021437 000000G CMP @R4,BYTESA ;BYTESIZE CORRECT?
2079 004462 103002 BHIS 50$ ;YES -- CONTINUE
2080 004464 011437 000000G MOV @R4,BYTESA ;NO -- SET NEW ONE
2081 004470 162705 000014 50$: SUB #14,R5 ;SUBTRACT FIXED HEADER SIZE
2082 004474 001410 BEQ 60$ ;AND QUIT IF NOTHING TO DO
2083 004476 112477 000000G 70$: MOVB (R4)+,@ADRSAV ;MOVE A BYTE
2084 004502 005237 000000G INC ADRSAV ;UPDATE BYTE POINTER
2085 004506 005337 000000G DEC BYTESA ;UPDATE BYTE COUNT
2086 004512 001404 BEQ 65$ ;(IN CASE OF MISCOUNT)
2087 004514 077510 SOB R5,70$ ;AND DO UNTIL DONE
2088 004516 005737 000000G 60$: TST BYTESA ;ANYTHING TO DO?
2089 004522 001005 BNE DONSTR ;YES -- DON'T SET I/O DONE FLAG
2090 004524 042712 020000 65$: BIC #FE.DTE,(R2) ;NO MORE DATA EXPECTED
2091 004530 052737 000400 000020G BIS #EF.TEF,FETSK+A.EF ;SET I/O DONE
2092 004536 DONSTR: CALL ..DECN ; RETURN NODE
004536 004737 000000G JSR PC,..DECN
2093 004542 012703 000000G MOV #D.FEPD,R3 ;ACK THIS FUNCTION
2094 004546 010205 MOV R2,R5
2095 004550 CALLR ..SACK
004550 000137 000000G JMP ..SACK
2096
2097 004554 013701 000000G IOABT: MOV NODADR,R1 ;NODE IN PROGRESS?
2101 004560 001766 BEQ DONSTR ;NO -- CONTINUE
2103 004562 005037 000000G CLR NODADR ;YES -- FIX IT WITH IE.ABO
2104 004566 042737 064000 000000G BIC #FE.SER!FE.DET!FE.DTE,FETBL+0 ;FINISHED WITH -11 REQUEST
2105 004574 012703 177761 MOV #IE.ABO,R3
2106 004600 CALL ..IODN ;QUIT IT
004600 004737 000000G JSR PC,..IODN
2110 004604 000754 BR DONSTR ;AND DECLARE DONE
2111 ;
2112 ; THIS IS A FUNCTION REQUEST FROM THE -10
FEDRV MACRO M1113 10-NOV-81 17:28 PAGE 21-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
2113 ;
2114 004606 022714 042515 FCN: CMP #"ME,(R4) ;IS IT MEMORY?
2115 004612 001401 BEQ MEFCN ;YUP -- MUST BE OK
2116 004614 000004 FCNBD: IOT ;NOPE -- CRASH
2117
2118 004616 052712 002000 MEFCN: BIS #FE.STR,(R2) ;WE ARE SERVICING -10 REQUEST
2119 004622 012737 000014 000000G MOV #14,DNBLK ;INIT RETURN PACKET SIZE
2120 004630 010137 000000G MOV R1,DNFCN ;SET FUNCTION
2121 004634 005437 000000G NEG DNFCN ;AND NEGATE.
2122 004640 012437 000002G MOV (R4)+,DNFCN+2 ;SAVE FUNCTION DEVICE
2123 004644 012737 000001 000000G MOV #IS.SUC,DNSTS ;ASSUME A SUCCESSFUL ACCESS
2124 004652 022424 CMP (R4)+,(R4)+ ;MOVE OVER UNIT AND HIGH ORDER ADDRES
2125 004654 012403 MOV (R4)+,R3 ;PICK UP ADDRESS
2126 004656 012405 MOV (R4)+,R5 ;AND BYTE COUNT
2127 004660 010537 000002G MOV R5,DNSTS+2 ;SAVE BYTE COUNT
2128 004664 .INH ;LOCK OUT INTERRUPTS
004664 013746 177776 MOV PS,-(SP)
004670 112737 000340 177776 MOVB #PR7,@#PS ;;
2129 004676 013746 000004 MOV @#4,-(SP) ;;;SAVE LOC 4
2130 004702 012737 005046' 000004 MOV #90$,@#4 ;;;GO TO ILL MEM ROUTINE
2131 004710 022701 000400 CMP #IO.WLB,R1 ;;;WRITE LOGICAL BLOCK?
2132 004714 001003 BNE 30$ ;;;READ MEMORY REQUEST
2133 004716 112423 20$: MOVB (R4)+,(R3)+ ;;;MOVE BYTES
2134 004720 077502 SOB R5,20$ ;;;UNTIL DONE
2135 004722 000417 BR 60$ ;;;RETURN SUCCESS
2136
2137 004724 122760 000014 000006 30$: CMPB #14,6(R0) ;;;ALL IN THIS PACKET?
2138 004732 001010 BNE 50$ ;;;NO -- BAD FUNCTION
2139 004734 012704 000000G MOV #BLKTT,R4 ;;;SET UP A PACKET TO ADD TO FUNCTION
2140 004740 112324 40$: MOVB (R3)+,(R4)+ ;;;MOVE CORRESPONDING BYTES
2141 004742 077502 SOB R5,40$ ;;;UNTIL DONE
2142 004744 063737 000002G 000000G ADD DNSTS+2,DNBLK ;;;INCLUDE RETURN BYTES IN PACKET
2143 004752 000405 BR 70$ ;;;SET RETURN FUNCTION
2144
2145 004754 012737 177777 000000G 50$: MOV #IE.BAD,DNSTS ;;;RETURN BAD FUNCTION
2146 004762 005037 000002G 60$: CLR DNSTS+2 ;;;NO BYTES TRANSFERRED
2147 004766 012637 000004 70$: MOV (SP)+,@#4 ;;;RESET LOC 4
2148 004772 .ENB ;;;ENABLE INTERRUPTS
004772 012637 177776 MOV (SP)+,@#PS ;;
2149 004776 013737 000002G 000004G MOV DNSTS+2,DNSTS+4 ;RETURN COUNT
2150 005004 010203 MOV R2,R3 ;COMPUTE FE NUMBER
2151 005006 162703 000000G SUB #FETBL,R3
2152 005012 006203 ASR R3 ;AND
2153 005014 110337 000001G MOVB R3,DNBLK+1 ;SET IN RETURN PACKET
2154 005020 010246 MOV R2,-(SP) ;SAVE FETBL POINTER
2155 005022 010046 MOV R0,-(SP) ;AND STRING POINTER
2156 005024 012700 000000G MOV #DNBLK,R0 ;SET DONE BLOCK ADDRESS
2157 005030 CALL SNSTR ;SEND STRING
005030 004737 004224' JSR PC,SNSTR
2158 005034 012600 MOV (SP)+,R0 ;RESTORE
2159 005036 012602 MOV (SP)+,R2
2160 005040 042712 002000 BIC #FE.STR,(R2) ;FINISHED WITH -10 REQUEST
2161 005044 000634 BR DONSTR ;AND QUIT
2162
2163 005046 022626 90$: CMP (SP)+,(SP)+ ;REMOVE TRAP STUFF
2164 005050 012737 177774 000000G MOV #IE.VER,DNSTS ;RETURN RECOVERABLE ERROR
2165 005056 000741 BR 60$
FEDRV MACRO M1113 10-NOV-81 17:28 PAGE 21-2
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
2166
2167 .TITLE LPDRV (LP-20 LINEPRINTER DRIVER FOR RSX10F)
2168 .SBTTL TITLE PAGE
2169 .IDENT /001000/
2170 ;
2171 ; COPYRIGHT (C) 1975, 1978 BY
2172 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
2173 ;
2174 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
2175 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
2176 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
2177 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
2178 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
2179 ;
2180 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
2181 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
2182 ; CORPORATION.
2183 ;
2184 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
2185 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
2186 ;
2187 ; MODULE: COMMON DEFINITIONS
2188 ;
2189 ; VERSION: 01-00
2190 ;
2191 ; AUTHOR: TOM PORCHER
2192 ;
2193 ; DATE: 4-JUN-75
2194 ;
2195 ;
2196 ; THIS MODULE CONTAINS:
2197 ;
2198 ; 1) COMMON PARAMETERS AND MACROS
2199 ;
2200 ; 2) LP-20 DEVICE REGISTER DEFINITIONS
2201 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 22
COMMON PARAMETERS AND MACROS
2203 .SBTTL COMMON PARAMETERS AND MACROS
2204 ;
2205 ; PARAMETERS
2206 ;
2207 ;L$$P20= 2 ;TWO LINEPRINTERS
2208 000214 LPALOC= 140. ;LINE ALLOCATION FOR EACH LP
2209 000012 LPRTRY= 10. ;# RETRYS ON ERRORS AND HUNG
2210 ;
2211 ; EVENT FLAGS
2212 ;
2213 000001 E.FLPD= 1 ;(1) INTERRUPT LEVEL I/O DONE
2214 000001 EF.LPD=BIT0
2215 000002 E.FLPC= 2 ;(2) MARK-TIME
2216 000002 EF.LPC=BIT1
2217 000003 E.FLPQ= 3 ;(3) CTY OUTPUT QUEUE I/O REQUESTS
2218 000004 EF.LPQ=BIT2
2219 ;(4) RESERVED FOR E.NIR (EXEC FLAG)
2220 000005 E.FLPS= 5 ;(5) STATUS REQUEST (LOCAL TO SSTSLP)
2221 000020 EF.LPS=BIT4
2222 000006 E.FLPW= 6 ;(6) WAIT FOR LP-20 TO SETTLE AFTER FLUSH
2223 000040 EF.LPW=BIT5
2224 ;
2225 ; MISC. MCALL'S
2226 ;
2227 .MCALL QIOSY$,ALUN$,MRKT$,QIOW$,SPRA$S,SVTK$S,WSIG$S,WTLO$S,WTSE$S,DIR$
2228 .MCALL $DEF,CALL,RETURN,.INH0,.INH,.ENB0,.ENB,PUSH,POP,.STKM
2229 005060 $DEF
2230 005060 QIOSY$
2231 .ENABLE AMA
2232 .LIST MEB
2233 ;
2234 ; COMMON MACROS
2235 ;
2236 .MACRO SAVE LIST
2237 PUSH <LIST>
2238 .MACRO RESTORE
2239 $$$=0
2240 .IRP ITEM,<LIST>
2241 $$$=$$$+1
2242 .ENDM
2243 .REPT $$$
2244 $$$$=0
2245 .IRP ITEM,<LIST>
2246 $$$$=$$$$+1
2247 .IF EQ $$$$-$$$
2248 POP ITEM
2249 .ENDC
2250 .ENDM
2251 $$$=$$$-1
2252 .ENDR
2253 .ENDM
2254 .ENDM
2255 ;
2256 ; BITS IN T.HCBC WORD IN THREAD BLOCK
2257 ;
2258 100000 TB.DON= BIT15 ;THREAD BLOCK DONE *** MUST BE SIGN BIT ***
2259 040000 TB.ABO= BIT14 ;ABORTED BLOCK
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 22-1
COMMON PARAMETERS AND MACROS
2260 020000 TB.EOF= BIT13 ;BLOCK REPRESENTS EOF
2261 010000 TB.LPC= BIT12 ;LOAD PAGE COUNTER FUNCTION
2262 004000 TB.RMD= BIT11 ;TRANSLATION RAM DATA
2263 002000 TB.VFD= BIT10 ;VFU DATA
2264 036000 TB.SFN= TB.EOF!TB.LPC!TB.RMD!TB.VFD ;SPECIAL FUNCTIONS
2265 ;
2266 ; QUEUE I/O -- THREAD BLOCK VALUES
2267 ;
2268 000004 PBTHRD= 4 ;R.PB+4 IS START OF THREAD BLOCK
2269 ;
2270 177774 T.HEMA= 0-PBTHRD ;(BYTE) EXTENDED MEMORY ADDRESS BITS 4 & 5
2271 177775 T.HVFC= 1-PBTHRD ;(BYTE) VERTICAL FORMAT CONTROL CHARACTER
2272 177776 T.HIBC= 2-PBTHRD ;(WORD) INITIAL BYTE COUNT
2273 ;
2274 ;
2275 ; STUFF THAT SHOULD BE GLOBAL, BUT MACY11 DOESN'T LIKE COMPLEX GLOBALS
2276 ;
2277 000377 LOBYTE= 377
2278 177400 HIBYTE= ^C<LOBYTE>
2279 ;
2280 ;
2281 000074 .CYLTM=^D60
2282 .MACRO .INH4
2283 MOV @#PS,-(SP)
2284 MOVB #PR4,@#PS
2285 .ENDM
2286 .MACRO .ENB4
2287 MOV (SP)+,@#PS
2288 .ENDM
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 23
LP-20 DEVICE REGISTER DEFINITIONS
2290 .SBTTL LP-20 DEVICE REGISTER DEFINITIONS
2291 ;
2292 ;
2293 ; LP-20 DEVICE REGISTER DEFINITIONS
2294 ;
2295 ; *** NOTE THAT ALL OFFSETS AND ADDRESSES ARE RELATIVE TO LPCSRA ***
2296 ;
2297 ;LPEXPA==175400 ;EXTERNAL PAGE ADDRESS OF LPCSRA
2298 ;LPEXPZ==20 ;SIZE OF EXTERNAL PAGE ADDRESSES IN BYTES
2299 ;
2300 000000 LPCSRA==0 ;CONTROL AND STATUS REGISTER A
2301 100000 ERR= BIT15
2302 040000 PAGZRO= BIT14
2303 020000 CHRINT= BIT13
2304 010000 VFURDY= BIT12
2305 004000 ONLINE= BIT11
2306 002000 DELHLD= BIT10
2307 001000 RSTERR= BIT9
2308 000400 LOINIT= BIT8
2309 ;
2310 000200 DONE= BIT7
2311 000100 INTENB= BIT6
2312 000040 BUSA17= BIT5
2313 000020 BUSA16= BIT4
2314 000010 MODE01= BIT3
2315 000004 MODE00= BIT2
2316 000001 TSTMOD= 1
2317 000002 VFULOD= 2
2318 000003 RAMLOD= 3
2319 000002 PARENB= BIT1
2320 000001 GO= BIT0
2321 ;
2322 000002 LPCSRB==2 ;CONTROL AND STATUS REGISTER B
2323 ; BITS 15-13 NOT USED
2324 010000 LPTPBT= BIT12
2325 004000 OPTVFU= BIT11
2326 002000 TEST02= BIT10
2327 001000 TEST01= BIT9
2328 000400 TEST00= BIT8
2329 ;
2330 000200 OFFLIN= BIT7
2331 000100 VFUERR= BIT6
2332 000040 LPTPAR= BIT5
2333 000020 MEMPAR= BIT4
2334 000010 RAMPAR= BIT3
2335 000004 SYNTIM= BIT2
2336 000002 DEMTIM= BIT1
2337 000001 GOERR= BIT0
2338 ;
2339 000004 LPBSAD==4 ;BUS ADDRESS REGISTER
2340 ;
2341 000006 LPBCTR==6 ;BYTE COUNT (2'S COMPLEMENT)
2342 ; BITS 15-12 NOT USED
2343 ; 11-0 BYTE COUNT
2344 ;
2345 000010 LPPCTR==10 ;PAGE COUNTER
2346 ; BITS 15-12 NOT USED
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 23-1
LP-20 DEVICE REGISTER DEFINITIONS
2347 ; 11-0 PAGE COUNT
2348 ;
2349 000012 LPRAMD==12 ;RAM DATA REGISTER
2350 ; BITS 15-13 NOT USED
2351 ; 12 RAM PARITY
2352 ; 11-0 RAM DATA
2353 ;
2354 000014 LPCBUF==14 ;(BYTE) CHARACTER BUFFER REGISTER
2355 000015 LPCCTR==15 ;(BYTE) COLUMN COUNT REGISTER
2356 ;
2357 000016 LPTDAT==16 ;(BYTE) PRINTER DATA REGISTER
2358 000017 LPCKSM==17 ;(BYTE) CHECKSUM REGISTER
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 24
COMMON DEVICE PARAMETER MODULE
2360 .SBTTL COMMON DEVICE PARAMETER MODULE
2361 ;
2362 ; COPYRIGHT (C) 1975, 1978 BY
2363 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
2364 ;
2365 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
2366 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
2367 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
2368 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
2369 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
2370 ;
2371 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
2372 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
2373 ; CORPORATION.
2374 ;
2375 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
2376 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
2377 ;
2378 ;
2379 ; MODULE: COMMON DEVICE PARAMETERS
2380 ;
2381 ; VERSION: 01-00
2382 ;
2383 ; AUTHOR: TOM PORCHER
2384 ;
2385 ; DATE: 25-AUG-75
2386 ;
2387 ;
2388 ; THIS MODULE CONTAINS:
2389 ;
2390 ; 1) DEVICE STATUS BIT DEFINITIONS
2391 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 25
DEVICE STATUS BIT DEFINITIONS
2393 .SBTTL DEVICE STATUS BIT DEFINITIONS
2394 ;
2395 ; GENERAL FORM OF STATUS BLOCK
2396 ;
2397 ; WORD 0 STANDARD STAUS BITS (DV.XXX)
2398 ; 1 DEVICE-DEPENDENT BITS (DD.XXX)
2399 ; 2 (HIGH BYTE) # BYTES OF DEVICE-DEPENDENT INFO TO FOLLOW
2400 ; (LOW BYTE) # BYTES OF DEVICE REGISTERS TO FOLLOW
2401 ; 3-... DEVICE DEPENDENT INFO (# BYTES IN WORD 2)
2402 ; .-... DEVICE REGISTERS (# BYTES IN WORD 2)
2403 ;
2404 ;
2405 ; STANDARD BITS (FIRST WORD OF STATUS)
2406 ;
2407 000001 DV.NXD= BIT0 ;NON-EX DEVICE
2408 000002 DV.OFL= BIT1 ;OFF-LINE
2409 000004 DV.OIR= BIT2 ;HARDWARE ERROR. OPERATOR INTERVENTION REQUIRED.
2410 000010 DV.SCN= BIT3 ;SOFTWARE CONDITON. ACKNOWLEDGE REQUIRED.
2411 000020 DV.IOP= BIT4 ;I/O IN PROGRESS
2412 000040 DV.EOF= BIT5 ;END-OF-FILE ENCOUNTERED
2413 000100 DV.LOG= BIT6 ;ERROR LOGGING REQUIRED
2414 000200 DV.URE= BIT7 ;UN-RECOVERABLE ERROR
2415 000400 DV.F11= BIT8 ;ERROR ON FROM -11 REQUEST
2416 001000 DV.HNG= BIT9 ;DEVICE HUNG
2417 ;
2418 ;
2419 ; DEVICE-DEPENDENT BITS (SECOND WORD OF STATUS)
2420 ;
2421 ; LP-20 LINEPRINTER
2422 ;
2423 000001 DD.PGZ= BIT0 ;PAGE COUNTER PASSED ZERO
2424 000002 DD.CHI= BIT1 ;CHARACTER INTERRUPT (FROM RAM)
2425 000004 DD.VFE= BIT2 ;VFU ERROR-- PAPER RE-ALIGNMENT REQUIRED
2426 000010 DD.LER= BIT3 ;ERROR FINDING/READING VF AND RAM FILE
2427 000020 DD.OVF= BIT4 ;PRINTER HAS OPTICAL VFU (AS OPPOSED TO DAVFU)
2428 000040 DD.RME= BIT5 ;RAM PARITY ERROR-- RELOAD REQUIRED
2429 ;
2430 ; DEVICE DEPNDENT INFO FOR LP-20 (2 BYTES):
2431 ; WORD 3 (LOW BYTE) ACCUMULATED CHECKSUM
2432 ; (HIGH BYTE) RETRY COUNT
2433 ;
2434 ; 4-13 LP-20 DEVICE REGISTERS (16. BYTES)
2435 ;
2436 ;
2437 ; CD-11 CARD READER
2438 ;
2439 000001 DD.RCK= BIT0 ;READ (PHOTO) CHECK
2440 000002 DD.PCK= BIT1 ;PICK CHECK
2441 000004 DD.SCK= BIT2 ;STACK CHECK
2442 000010 DD.HEM= BIT3 ;HOPPER EMPTY
2443 000020 DD.SFL= BIT4 ;STACKER FULL
2444 ;
2445 ; DEVICE-DEPENDENT INFO FOR CD-11 (0 BYTES)
2446 ; WORD 3-6 DEVICE REGISTERS FOR CD-11 (8. BYTES)
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 26
LP-20 COMMON DATA MODULE
2448 .SBTTL LP-20 COMMON DATA MODULE
2449 ;
2450 ; COPYRIGHT (C) 1975, 1978 BY
2451 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
2452 ;
2453 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
2454 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
2455 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
2456 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
2457 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
2458 ;
2459 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
2460 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
2461 ; CORPORATION.
2462 ;
2463 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
2464 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
2465 ;
2466 ; MODULE: LP-20 COMMON DATA
2467 ;
2468 ; VERSION: 01-00
2469 ;
2470 ; AUTHOR: TOM PORCHER
2471 ;
2472 ; DATE: 7-JUN-75
2473 ;
2474 ;
2475 ; THIS MODULE CONTAINS:
2476 ;
2477 ; 1) COMMON VARIABLES
2478 ;
2479 ; 2) DEVICE TABLES
2480 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 27
COMMON VARIABLES
2482 .SBTTL COMMON VARIABLES
2483 ;
2484 ; LP DRIVER TASK HEAD
2485 ;
2486 ;
2487 005060 LPHD:: .STKM 0,0,0,0,0,0,0,LPINI,174000,LPSTK
005126 000000 000000 000000 .WORD 0,0,0,0
005134 000000
005154 174000 005450' 005340' .WORD 174000,LPINI,LPSTK
005210 000005 .WORD 5
005212 000000G .WORD TTPEN
005214 000000 .WORD 0
005216 000000 .WORD 0
005220 000000 .WORD 0
005222 000000 .WORD 0
005224 000000 .WORD 0
005226 000000 .WORD 0
005230 000000 .WORD 0
005232 000000 .WORD 0
005234 000000 .WORD 0
005236 000000 .WORD 0
005340 000000 .WORD 0
005342 000000 .WORD 0
005344 000000 .WORD 0
005346 000000 .WORD 0
005350 000000 .WORD 0
005352 000000 .WORD 0
005354 005450' .WORD LPINI
005356 174000 .WORD 174000
2488 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 28
LP-20 DEVICE TABLES
2490 .SBTTL LP-20 DEVICE TABLES
2491
2492 ;
2493 ; LP-20 STATUS BITS
2494 ;
2495 100000 LP.HNG= BIT15 ;LP DID NOT COMPLETE I/O IN 20 SEC
2496 ;SET BY MARK-TIME REQUEST
2497 ;CLEARED BY ..DOLP
2498 040000 LP.SST= BIT14 ;SEND STATUS OF THIS LP TO -10
2499 ;SET BY INTERRUPT SERVICE
2500 ;CHECKED BY TASK
2501 020000 LP.PZI= BIT13 ;PAGE-ZERO INTERRUPT ENABLE
2502 ;SET FROM RAM/VF LOAD FILE
2503 ;CHECKED ON PAGZRO INTERRUPTS
2504 010000 LP.MCH= BIT12 ;MULTI-CHARACTER PRINT OPERATION IN PROGRESS
2505 ; (ARROW MODE). SET ON UNDCHR INTERRUPT,
2506 ; CLEARED WHEN DONE SET.
2507 004000 LP.WAT= BIT11 ;THIS LP IS WAITING FOR A RESPONSE
2508 ; FROM THE -10, DUE TO PAGZRO, ERROR
2509 ; ON SOMETHING LIKE THAT. SET BY INTERRUPT
2510 ; SERVICE, CLEARED BY 'CONTINUE'
2511 ; FUNCTION FROM -10.
2512 002000 LP.CLR= BIT10 ;CLEAR RAM REQUIRED (DUE TO ERROR)
2513 ; SET BY SSTSLP, CHECKED AND CLEARED BY TESTLP
2514 001000 LP.LIP= BIT9 ;LOAD OF VFU AND RAM IN PROGRESS, SET
2515 ; BY START OF LOAD (IN LPIOD) AND CLEARED BY
2516 ; TRANSFER COMPLETE FOR RAM/VFU DATA.
2517 000400 LP.F10= BIT8 ;FROM-10 REQUEST HAS BEEN QUEUED
2518 ; SET BY ..STLP AND SPECIAL FUNCTIONS
2519 ; CLEARED WHEN QUEUE IS EMPTY OR ..SPLP
2520 000200 LP.EOF= BIT7 ;END-OF-FILE. SET BY EOF FUNCTION ENCOUNTERED
2521 ; IN THREADED LIST BY INTERRUPT SERVICE.
2522 ; CHECKED AND CLEARED BY TESTLP WHEN
2523 ; CHECKSUM IS CLEARED.
2524 000003 LP.UNT= BIT1!BIT0 ;(LOW BITS) UNIT # OF THIS LP.
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 29
LP-20 DRIVER TASK MODULE
2526 .SBTTL LP-20 DRIVER TASK MODULE
2527 ;
2528 ; COPYRIGHT (C) 1975, 1978 BY
2529 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
2530 ;
2531 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
2532 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
2533 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
2534 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
2535 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
2536 ;
2537 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
2538 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
2539 ; CORPORATION.
2540 ;
2541 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
2542 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
2543 ;
2544 ; MODULE: LP-20 DRIVER TASK
2545 ;
2546 ; VERSION: 14-43
2547 ;
2548 ; AUTHOR: TOM PORCHER
2549 ;
2550 ; DATE: 4-JUN-75
2551 ;
2552 ;
2553 ; THIS MODULE CONTAINS:
2554 ;
2555 ; 1) LPINI (LP-20 INITIALIZATION)
2556 ;
2557 ; 2) LPLOOP (LP-20 DRIVER TASK LOOP)
2558 ;
2559 ; MODIFICATIONS:
2560 ;
2561 ; NO. DATE PROGRAMMER REASON
2562 ; --- ---- ---------- ------
2563 ; 001 28-FEB-77 A. PECKHAM CHANGE LENGTH OF VFU RECORDS
2564 ; TO 145 FROM 140
2565 ; TCO 4.1.1105 11-MAR-80 R. BELANGER CHANGE "EF.PR1" RECOGNITION
2566 ; RCO 810804 04-AUG-81 S. LEAPLINE RESET R0 WHEN BUFFER ALLOCATE
2567 ; FAILS
2568 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 30
LPINI (INITIALIZE LP-20 TASK)
2570 .SBTTL LPINI (INITIALIZE LP-20 TASK)
2571 ;
2572 ;+
2573 ;
2574 ; THIS IS THE LP-20 USER-LEVEL TASK. IT HANDLES QIO
2575 ; REQUESTS, OUTPUT ACKNOWLEDGEMNETS, AND HUNG-CHECKING.
2576 ;
2577 ; LPINI IS CALLED WHEN THE TASK IS STARTED. IT RESETS THE
2578 ; LP-20 AND LOADS THE STANDARD VERTICAL FORMAT AND TRANSLATION
2579 ; RAM. THE 10-SECOND MARK-TIME REQUEST IS ALSO ENTERED.
2580 ;
2581 ;-
2582 ;
2583 ;
2584 ; DIRECTIVE PARAMETER BLOCKS
2585 ;
2586 005360 LPMRKT:
2587 005360 MRKT$ E.FLPC,10.*.CYLTM,10.*.CYLTM ;MARK-TIME REQUEST FOR 10 SECONDS
005360 027 005 .BYTE 23.,5
005362 000002 .WORD E.FLPC
005364 001130 .WORD 10.*.CYLTM
005366 001130 .WORD 10.*.CYLTM
005370 000000 .WORD
2588 005372 MKSCDP:
2589 005372 MRKT$ E.FLPW,.CYLTM,0 ;WAIT FOR 1 SECOND
005372 027 005 .BYTE 23.,5
005374 000006 .WORD E.FLPW
005376 000074 .WORD .CYLTM
005400 000000 .WORD 0
005402 000000 .WORD
2590 ;
2591 005404 LPSSTV:
2592 005404 005406' .WORD LPTRP4 ;WHERE TO GO ON TRAP-AT-4
2593 ;
2594 ; HERE ON A TRAP TO 4 (HOPEFULLY AN EXPECTED NON-EX LP)
2595 ;
2596 005406 LPTRP4:
2597 005406 021627 006776' CMP (SP),#LPDINT ;THIS FROM MARK-TIME?
2598 005412 001404 BEQ 10$ ;YES-- OK
2599 005414 021627 010424' CMP (SP),#LPDCLR ;HOW ABOUT INIT?
2600 005420 001401 BEQ 10$ ;YES-- OK
2601 005422 000004 IOT ;***** FATAL-- BAD TRAP AT 4
2602 ;
2603 005424 10$:
2604 005424 005062 000000G CLR LPCSA(R2) ;NON-EX LP-- SAY SO
2605 005430 005003 CLR R3 ; BOTH WAYS
2606 005432 052766 000001 000002 BIS #BIT0,2(SP) ;SET CARRY ON STACK
2607 005440 000002 RTI ;RETURN TO INTERRUPTED ROUTINE
2608 ;
2609 ; HERE ON POWER-RECOVERY AST
2610 ;
2611 005442 LPWRUP:
2612 005442 CALL INITLP ;INIT ALL LP'S
005442 004737 010354' JSR PC,INITLP
2613 005446 000002 RTI ;RETURN FROM AST
2614 ;
2615 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 30-1
LPINI (INITIALIZE LP-20 TASK)
2616 ; LPINI -- INITIALIZE LP'S
2617 ;
2618 005450 LPINI:
2619 005450 013737 000000G 000000G MOV .CRTSK,LPEVFG ;SAVE OUR TASK ADDRESS
2620 005456 062737 000020 000000G ADD #A.EF,LPEVFG ;MAKE THAT ADDR OF OUR EVENT FLAGS
2621 005464 052777 000060 000000G BIS #EF.LPW!EF.LPS,@LPEVFG ;SAY STATUS BUFFER AVAILABLE AND NOT WAITING
2622 005472 DIR$ #LPMRKT ;ENTER MARK-TIME REQUEST FOR 10 SECONDS
005472 012746 005360' MOV #LPMRKT,-(SP)
005476 104375 EMT 375
2623 005500 SVTK$S #LPSSTV,#1 ;ENABLE FOR TRAP-AT-4 RECOGNITION
005500 012746 000001 MOV #1,-(SP)
005504 012746 005404' MOV #LPSSTV,-(SP)
005510 012746 MOV (PC)+,-(SP)
005512 071 003 .BYTE 57.,3
005514 104375 EMT 375
2624 005516 SPRA$S #LPWRUP ;SETUP POWER-UP AST
005516 012746 005442' MOV #LPWRUP,-(SP)
005522 012746 MOV (PC)+,-(SP)
005524 155 002 .BYTE 109.,2
005526 104375 EMT 375
2625 005530 CALL INITLP ;INIT ALL THE LP'S
005530 004737 010354' JSR PC,INITLP
2626 ; BR LPLOOP ;FALL INTO NORMAL PROCESSING LOOP
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 31
LPLOOP (LP-20 DRIVER TASK LOOP)
2628 .SBTTL LPLOOP (LP-20 DRIVER TASK LOOP)
2629 ;
2630 ;+
2631 ;
2632 ; LPLOOP WAITS FOR AND DISPATCHES ON THE LP EVENT FLAGS,
2633 ; EF.LPD (INTERRUPT LEVEL I/O DONE), EF.NIR (QUEUE I/O REQUEST),
2634 ; AND EF.LPC (10 SECOND MARK-TIME REQUEST), IN THAT ORDER.
2635 ;
2636 ;-
2637 ;
2638 ;
2639 005534 LPLOOP:
2640 005534 WTLO$S 1,#EF.LPC!EF.LPD!EF.NIR ;WAIT FOR CLOCK (10 SECONDS)
005534 012746 000000C MOV #EF.LPC!EF.LPD!EF.NIR,-(SP)
005540 012746 000001 MOV #1,-(SP)
005544 012746 MOV (PC)+,-(SP)
005546 053 003 .BYTE 43.,3
005550 104375 EMT 375
2641 ; OR I/O DONE FROM ISR
2642 ; OR QIO REQUEST TO DO.
2643 005552 .INH ;A FLAG SET-- LOCK OUT LP INTERRUPTS
005552 013746 177776 MOV PS,-(SP)
005556 112737 000340 177776 MOVB #PR7,@#PS ;;
2644 005564 017737 000000G 000000G MOV @LPEVFG,LPCEVF ;GET CURRENT EVENT FLAGS
2645 005572 042777 000000C 000000G BIC #EF.LPC!EF.LPD!EF.NIR,@LPEVFG ;CLEAR THE FLAGS WE WAITED FOR
2646 005600 .ENB ;RETORE IRPS
005600 012637 177776 MOV (SP)+,@#PS ;;
2647 005604 005737 000000G TST .LPPFL ;POWER FAIL?
2648 005610 001404 BEQ 10$ ;NO -- CONTINUE
2649 005612 CALL INITLP
005612 004737 010354' JSR PC,INITLP
2650 005616 005037 000000G CLR .LPPFL
2651 005622 10$:
2652 ;
2653 ; BR LPIOD ;TRY FOR EF.IOD (I/O DONE) FIRST
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 32
LPIOD (LP TASK I/O DONE)
2655 .SBTTL LPIOD (LP TASK I/O DONE)
2656 ;
2657 ;+
2658 ;
2659 ; LPIOD IS DISPATCHED TO WHENEVER THE EVENT FLAG EF.LPD IS SET.
2660 ; THIS IS SET BY THE INTERRUPT SEVICE WHENEVER IT IS DONE WITH A BUFFER
2661 ; OR STATUS INFORMATION IS TO BE SENT TO THE -10 (IE. LP JUST CAME
2662 ; ONLINE).
2663 ;
2664 ; EACH LP'S THREADED OUTPUT LIST IS SCANNED FOR DONE BUFFERS
2665 ; (INDICATED BY T.HCBC NEGATIVE). THESE ARE RETURNED TO THE FREE POOL,
2666 ; AND, IN THE CASE OF QUEUE I/O REQUESTS, ..IODN IS CALLED TO TELL
2667 ; THE REQUESTOR THAT I/O HAS BEEN COMPLETED. IF A QUEUE I/O REQUEST
2668 ; IS STOPPED IN THE MIDDLE OF A TRANSFER BECAUSE OF ERROR, THE
2669 ; ERROR INDICATION IS GIVEN TO ..IODN, AND THE REQUEST IS ABORTED.
2670 ;
2671 ; AFTER THE THREADED LIST SCAN, THE LP STATUS IS SENT TO THE
2672 ; -10 (BY CALLING SSTSLP) IF THE LP.SST FLAG IS SET.
2673 ;
2674 ; IF A BUFFER WAS COMPLETED, AND THERE IS EITHER NONE
2675 ; OR ONE BUFFER TO OUTPUT, A REQUEST TO SEND IS SENT TO THE -10
2676 ; (BY CALLING ..SACK).
2677 ;
2678 ;-
2679 ;
2680 005622 LPIOD:
2681 005622 032737 000001 000000G BIT #EF.LPD,LPCEVF ;I/O DONE?
2682 005630 001504 BEQ 99$ ;NO-- TRY NEXT FLAG IN CHAIN
2683 005632 012702 000000G MOV #LPTBL,R2 ;ADDRESS LPTBL (UNIT 0)
2684 005636 PUSH #L$$P20 ;STACK COUNT OF LP'S TO LOOK AT
005636 012746 000002 MOV #L$$P20,-(SP)
2685 005642 10$:
2686 005642 005005 CLR R5 ;AND INDICATE NO BUFFERS DONE
2687 005644 016203 000000G MOV LPCSA(R2),R3 ;GET THE EXT PAGE ADDR OF THIS LP
2688 ;
2689 ; LOOP THROUGH THREADED LIST FOR THIS LP
2690 ;
2691 005650 20$:
2692 005650 016200 000000G MOV LPTHD(R2),R0 ;GET START OF LIST
2693 005654 001411 BEQ 80$ ;DONE-- GO AWAY
2694 ;
2695 ; LOOK AT THIS THREAD BLOCK TO SEE IF DONE
2696 ;
2697 005656 30$:
2698 005656 005760 000000G TST T.HCBC(R0) ;SEE IF DONE
2699 005662 002471 BLT 40$ ;DONE-- PROCESS
2700 005664 005762 000000G TST LPITH(R2) ;IS I/O IN PROGRESS ON THIS BLOCK?
2701 005670 001003 BNE 80$ ;YES-- WE ARE DONE WITH WHAT IS DONE
2702 ;
2703 ; LP STOPPED ON THIS ACTIVE THREAD BLOCK
2704 ;
2705 005672 032712 001000 BIT #LP.LIP,(R2) ;LOAD IN PROGRESS?
2706 005676 001063 BNE 40$ ;YES-- TERMINATE IT, SINCE I/O STOPPED
2707 ;
2708 ; END OF LIST-- SEE IF WE SHOULD SEND STATUS AND/OR ACK
2709 ;
2710 005700 80$:
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 32-1
LPIOD (LP TASK I/O DONE)
2711 005700 032712 040000 BIT #LP.SST,(R2) ;TIME TO SEND STATUS?
2712 005704 001402 BEQ 81$ ;NO-- HOW BOUT ACK?
2713 005706 CALL SSTSLP ;YES-- SEND STATUS TO -10
005706 004737 007164' JSR PC,SSTSLP
2714 005712 81$:
2715 005712 005700 TST R0 ;ANYTHING LEFT TO DO?
2716 005714 001411 BEQ 84$ ;NO-- SEND ACK
2717 005716 032712 004000 BIT #LP.WAT,(R2) ;ARE WE WAITING FOR RESPONSE?
2718 005722 001026 BNE 86$ ;YES-- DON'T START OUPUT
2719 005724 005762 000000G TST LPITH(R2) ;NO-- IS LP GOING ALREADY?
2720 005730 001023 BNE 86$ ;YES-- LEAVE IT GO
2721 005732 CALL TESTLP ;NO-- SEE IF LP CAN BE STARTED
005732 004737 010164' JSR PC,TESTLP
2722 005736 000420 BR 86$ ;SEE IF ACK NEEDED
2723 ;
2724 ; QUEUE IS EMPTY-- RESET ALL FLAGS
2725 ;
2726 005740 84$:
2727 005740 .INH ;;;MAKE SURE DTE DOESN'T GIVE US SOMETHING
005740 013746 177776 MOV PS,-(SP)
005744 112737 000340 177776 MOVB #PR7,@#PS ;;
2728 005752 016200 000000G MOV LPTHD(R2),R0 ;;;GET THREAD POINTER
2729 005756 001006 BNE 85$ ;;;OOPS-- LET'S GO AWAY, WE GOT SOMETHING
2730 005760 032777 000001 000000G BIT #EF.LPD,@LPEVFG ;;;WILL WE BE BACK AGAIN?
2731 005766 001002 BNE 85$ ;;;YES-- CATCH FLAGS NEXT TIME
2732 005770 042712 115400 BIC #LP.F10!LP.WAT!LP.LIP!LP.MCH!LP.HNG,(R2) ;;;SURELY OFF NOW
2733 005774 85$:
2734 005774 .ENB ;RESTORE INTERRUPTS
005774 012637 177776 MOV (SP)+,@#PS ;;
2735 006000 86$:
2736 006000 005705 TST R5 ;DID WE REMOVE A BUFFER?
2737 006002 001412 BEQ 90$ ;NO-- DON'T SEND ACK
2738 006004 005700 TST R0 ;YES-- ANY LEFT?
2739 006006 001402 BEQ 87$ ;NONE-- SEND ACK
2740 006010 005710 TST @R0 ;IS THIS LAST BUFFER?
2741 006012 001006 BNE 90$ ;NO-- SEND NOTHING
2742 006014 87$:
2743 006014 012700 000000G MOV #LPTBL,R0 ;ADDRESS BASE ADDR OF TABLE FOR ..SACK
2744 006020 012703 000000G MOV #D.CLPT,R3 ;SAY LPT DEVICE CODE
2745 006024 CALL ..SACK ;SEND THE ACK
006024 004737 000000G JSR PC,..SACK
2746 ;
2747 ; DONE WITH LP-- GET ANOTHER
2748 ;
2749 006030 90$:
2750 006030 062702 000000G ADD #LPSIZE,R2 ;BUMP TO NEXT LP IN TABLE
2751 006034 005316 DEC (SP) ;DECREMENT COUNT
2752 006036 003301 BGT 10$ ;BACK FOR MORE
2753 006040 005726 TST (SP)+ ;CLEAN STACK
2754 006042 99$:
2755 006042 000137 006502' JMP LPNIR ;DONE-- TRY NEXT EVENT-FLAG
2756 ;
2757 ; THREAD BLOCK DONE-- REMOVE FROM LIST & DEALLOCATE
2758 ;
2759 006046 40$:
2760 006046 005703 TST R3 ;LP EXIST???
2761 006050 001564 BEQ 49$ ;NO-- GIVE UP
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 32-2
LPIOD (LP TASK I/O DONE)
2762 006052 032712 001000 BIT #LP.LIP,(R2) ;LOAD IN PROGRESS (I.E. NOW COMPLETE)
2763 006056 001424 BEQ 41$ ;NO-- GO ON
2764 ;
2765 006060 042712 001000 BIC #LP.LIP,(R2) ;YES-- NO LONGER SO
2766 006064 042713 000014 BIC #MODE00!MODE01,(R3) ;CLEAR LOAD MODE BITS
2767 006070 PUSH <R0,R3> ;SAVE EPA
006070 010046 MOV R0,-(SP)
006072 010346 MOV R3,-(SP)
2768 006074 016200 000000G MOV LPRMA(R2),R0 ;GET RAM BUFFER ADDR
2769 006100 016201 000000G MOV LPRMZ(R2),R1 ; AND DATA SIZE
2770 006104 012703 000000G MOV #.BGBUF,R3 ;WE GOT IT FROM THE BIG BUFFER
2771 006110 CALL ..DEC2 ;RETURN THE BUFFER
006110 004737 000000G JSR PC,..DEC2
2772 006114 POP <R3,R0> ;RESTORE EPA
006114 012603 MOV (SP)+,R3
006116 012600 MOV (SP)+,R0
2773 006120 005062 000000G CLR LPRMA(R2) ;NO LONGER THERE
2774 006124 005062 000000G CLR LPRMC(R2) ; . .
2775 006130 41$:
2776 006130 016004 000000G MOV T.HCBC(R0),R4 ;GET COMPLETION STATUS
2777 006134 032704 040000 BIT #TB.ABO,R4 ;ABORTED?
2778 006140 001130 BNE 49$ ;YES-- LEAVE NOW
2779 006142 032704 036000 BIT #TB.SFN,R4 ;SPECIAL FUNCTION?
2780 006146 001525 BEQ 49$ ;NO-- GO ON
2781 ;
2782 006150 032704 020000 BIT #TB.EOF,R4 ;EOF?
2783 006154 001430 BEQ 42$ ;NO-- JUST GO ON
2784 006156 016260 000000G 000000G MOV LPRMA(R2),T.HCAD(R0) ;RAM/VFU DATA PRESENT?
2785 006164 001003 BNE 411$ ;YES-- DO RAM/VFU LOAD
2786 006166 052712 040200 BIS #LP.EOF!LP.SST,(R2) ;NO-- NOTE THAT EOF HAS OCCURED
2787 006172 000513 BR 49$ ;THAT'S IT FOR EOF IF NO RAM/VFU DATA
2788 006174 411$:
2789 006174 016260 000000G 000000G MOV LPRMC(R2),T.HCBC(R0) ;SET BYTE COUNT= LAST ADDRESS
2790 006202 166060 000000G 000000G SUB T.HCAD(R0),T.HCBC(R0) ;MAKE IT A BYTE COUNT
2791 006210 052712 001000 BIS #LP.LIP,(R2) ;NOTE LOAD NOW IN PRGRESS
2792 006214 052713 000010 BIS #VFULOD*MODE00,(R3) ;ASSUME VFU LOAD
2793 006220 026227 000000G 001000 CMP LPRMZ(R2),#1000 ;TRNASLATION RAM DATA?
2794 006226 001224 BNE 80$ ;NO-- MUST BE VFU DATA
2795 006230 052713 000014 BIS #RAMLOD*MODE00,(R3) ;YES-- SET RAM LOAD MODE
2796 006234 000621 BR 80$ ;START LP GOING ON THIS BLOCK
2797 006236 42$:
2798 006236 032704 010000 BIT #TB.LPC,R4 ;LOAD PAGE COUNTER FUNCTION?
2799 006242 001413 BEQ 43$ ;NO-- GO ON
2800 006244 042712 020000 BIC #LP.PZI,(R2) ;ASSUME NO INTERRUPT ENABLE
2801 006250 016001 000000G MOV T.HCAD(R0),R1 ;GET ADDRESS OF FUNCTION DATA
2802 006254 016163 000002 000010 MOV 2(R1),LPPCTR(R3) ;SET PAGE COUNTER
2803 006262 002057 BGE 49$ ;BIT15=0-- NO INTERRUPT
2804 006264 052712 020000 BIS #LP.PZI,(R2) ;BIT15=1-- INTERRUPT ENABLE
2805 006270 000454 BR 49$ ;ALL DONE
2806 006272 43$:
2807 006272 PUSH <R3,R0> ;SAVE THIS THREAD BLOCK ADDRESS
006272 010346 MOV R3,-(SP)
006274 010046 MOV R0,-(SP)
2808 006276 016201 000000G MOV LPRMC(R2),R1 ;GET CURRENT RAM DATA ADDRESS
2809 006302 001026 BNE 46$ ;GOT IT-- PUT THIS DATA IN THAT BUFFER
2810 006304 012700 000000G 431$: MOV #.BGBUF,R0 ;[RCO 810408] POINT TO BIG BUFFER FOR DATA BLOCK
2811 006310 012701 001000 MOV #1000,R1 ;ASSUME TRANSLATION RAM DATA
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 32-3
LPIOD (LP TASK I/O DONE)
2812 006314 032704 004000 BIT #TB.RMD,R4 ;RAM DATA?
2813 006320 001002 BNE 44$ ;YES-- GOT IT
2814 006322 012701 000444 MOV #<^D<145*2>+2+3>&<-4>,R1 ; +++001 NO-- VFU DATA-- GET MAX LENGTH
2815 006326 44$:
2816 006326 CALL ..ALC2 ;GET A BUFFER
006326 004737 000000G JSR PC,..ALC2
2817 006332 103004 BCC 45$ ;GOT IT-- GO ON
2818 006334 WSIG$S ;NO GOT-- WAIT AN INSTANT
006334 012746 MOV (PC)+,-(SP)
006336 061 001 .BYTE 49.,1
006340 104375 EMT 375
2819 006342 000760 BR 431$ ;[RCO 810804] TRY FOR BUFFER AGAIN
2820 006344 45$:
2821 006344 010162 000000G MOV R1,LPRMZ(R2) ;STORE RAM DATA SIZE
2822 006350 010001 MOV R0,R1 ;COPY THAT BUFFER ADDRESS
2823 006352 010162 000000G MOV R1,LPRMA(R2) ;STORE RAM DATA ADDRESS
2824 006356 011600 MOV (SP),R0 ;RESTORE THREAD BLOCK ADDRESS
2825 006360 46$:
2826 006360 016203 000000G MOV LPRMA(R2),R3 ;COPY ADDRESS WHERE DATA GOES
2827 006364 066203 000000G ADD LPRMZ(R2),R3 ;COMPUTE END OF BUFFER
2828 006370 016000 000000G MOV T.HCAD(R0),R0 ;GET THE RAM DATA ADDRESS
2829 006374 042704 177400 BIC #HIBYTE,R4 ;CLEAR TRASH IN BYTE COUNT
2830 006400 001404 BEQ 48$ ;ALL DONE IF ZERO BYTE COUNT
2831 006402 47$:
2832 006402 020103 CMP R1,R3 ;GOING BEYOND END OF BUFFER?
2833 006404 103002 BHIS 48$ ;YES-- THAT'S ALL THE DATA WE CAN TAKE
2834 006406 112021 MOVB (R0)+,(R1)+ ;STORE A BYTE AWAY
2835 006410 077404 SOB R4,47$ ;LOOP FOR ALL BYTES OF DATA
2836 006412 48$:
2837 006412 POP <R0,R3> ;RESTORE THE THREAD BLOCK POIINTER
006412 012600 MOV (SP)+,R0
006414 012603 MOV (SP)+,R3
2838 006416 010162 000000G MOV R1,LPRMC(R2) ;STORE CURRENT BYTE ADDRESS
2839 006422 49$:
2840 006422 011062 000000G MOV @R0,LPTHD(R2) ;REMOVE THIS BUFFER
2841 006426 016001 000000G MOV T.HBCT(R0),R1 ;GET SIZE OF THIS THREAD BLOCK
2842 006432 001013 BNE 60$ ;NOT QIO-- JUST DEALLOCATE
2843 ;
2844 ; QUEUE I/O REQUEST DONE-- CALL ..IODN
2845 ;
2846 006434 PUSH R3 ;SAVE EPA
006434 010346 MOV R3,-(SP)
2847 006436 110403 MOVB R4,R3 ;GET QUEUE I/O STATUS
2848 006440 016004 177776 MOV T.HIBC(R0),R4 ;GET INITAIL BYTE COUNT AS TRANSFER COUNT
2849 006444 010001 MOV R0,R1 ;COPY THREAD BLOCK ADDRESS
2850 006446 162701 000004G SUB #R.PB+PBTHRD,R1 ;GET ADDRESS OF REAL QUEUE I/O NODE
2851 006452 CALL ..IODN ;SAY I/O DONE
006452 004737 000000G JSR PC,..IODN
2852 006456 POP R3 ;RESTORE EPA
006456 012603 MOV (SP)+,R3
2853 006460 000406 BR 61$ ;ALL DONE
2854 ;
2855 ; ALL DONE WITH THREAD BLOCK-- DEALLOCATE IT
2856 ;
2857 006462 60$:
2858 006462 CALL ..DECB ;DEALLOCATE THE BUFFER
006462 004737 000000G JSR PC,..DECB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 32-4
LPIOD (LP TASK I/O DONE)
2859 006466 032712 000400 BIT #LP.F10,(R2) ;DOES -10 HAVE A REQUEST IN?
2860 006472 001401 BEQ 61$ ;NO-- DON'T FLAG TO ACK
2861 006474 010205 MOV R2,R5 ;NOTE THAT WE DID SOMETHING
2862 006476 61$:
2863 006476 000137 005650' JMP 20$ ;GET NEXT THREAD BLOCK FOR THIS LP
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 33
LPNIR (LP TASK QUEUE I/O REQUEST)
2865 .SBTTL LPNIR (LP TASK QUEUE I/O REQUEST)
2866 ;
2867 ;+
2868 ;
2869 ; LPNIR IS DISPATCHED TO WHENEVER THE EVENT FLAG EF.NIR IS SET.
2870 ; THIS OCCURS WHEN ANOTHER TASK REQUESTS OUTPUT TO ANY LP. ALL LP'S
2871 ; ARE CHECKED FOR A REQUEST WAITING.
2872 ;
2873 ; THE REQUEST IS QUEUED UP IN THE THREADED OUTPUT LIST
2874 ; FOR THIS LP, USING AN EXTENDED THREAD BLOCK. THIS BLOCK IS DISTINGUISHED
2875 ; AS A QUEUE I/O REQUEST BY T.HBCT BEING ZERO (THE LENGTH OF THE BLOCK
2876 ; IS T.HQRS). THE ADDITIONAL INFORMATION IN THIS THREAD BLOCK IS:
2877 ; T.HEMA -- (BYTE) EXTENDED MEMORY ADDRESS BITS (BITS 4 AND 5)
2878 ; T.HVFC -- (BYTE) VERTICAL FORMAT CONTROL CHARACTER
2879 ; T.HIBC -- INITIAL BYTE COUNT
2880 ;
2881 ;-
2882 ;
2883 .ENABLE LSB
2884 006502 LPNIR:
2885 006502 032737 000000G 000000G BIT #EF.NIR,LPCEVF ;A QUEUE I/O REQUEST FOR US?
2886 006510 001514 BEQ 99$ ;NO-- TRY NEXT IN CHAIN
2887 006512 012700 050114 MOV #"LP,R0 ;SAY WE ARE A LP
2888 006516 CALL ..DQRN ;GET A REQUEST
006516 004737 000000G JSR PC,..DQRN
2889 006522 103507 BCS 99$ ;NONE-- DONE
2890 ;
2891 ; GOT QUEUE I/O REQUEST NODE-- ADDR IN R1
2892 ;
2893 ; REGISTERS RETURNED BY ..DQRN
2894 ; R1 -- ADDRESS OF REQUEST NODE
2895 ; R2 -- UNIT # OF REQUESTED DEVICE
2896 ; R3 -- BYTE COUNT OF DATA
2897 ; R4 -- EXTENDED ADDRESS BITS 16 AND 17 (IN BITS 4 AND 5)
2898 ; R5 -- PHYSICAL ADDRESS OF DATA
2899 ;
2900 ; CHECK FOR FUNCTION CODES:
2901 ; IO.WLB OUTPUT BUFFER
2902 ; IO.WVB OUTPUT BUFFER
2903 ; IO.KIL FLUSH OUTPUT (CALL ..SPLP)
2904 ; IO.DAC CLOSE OUTPUT (TYPE <FF>)
2905 ; IO.RVB READ-- ILLEGAL FUNCTION
2906 ; IO.RLB READ-- ILLEGAL FUNCTION
2907 ;
2908 ; ALL OTHER FUNCTIONS ARE IGNORED
2909 ;
2910 006524 006302 ASL R2 ;MAKE UNIT IN WORDS
2911 006526 016202 000000G MOV LPUTBL(R2),R2 ;GET ADDR OF LPTBL ENTRY FOR THIS LP
2912 006532 116100 000001G MOVB R.FC+1(R1),R0 ;GET FUNCTION CODE FROM REQUEST NODE
2913 006536 001430 BEQ 20$ ;EXPRESS FUNCTION-- LOOK AT IT
2914 006540 122700 000001 CMPB #IO.WLB/400,R0 ;WRITE LOGICAL?
2915 006544 001441 BEQ 40$ ;YES-- PRINT
2916 006546 122700 000022 CMPB #IO.WVB/400,R0 ;WRITE VIRTUAL?
2917 006552 001436 BEQ 40$ ;YES-- PRINT ALSO
2918 006554 122700 000002 CMPB #IO.RLB/400,R0 ;READ LOGICAL????
2919 006560 001414 BEQ 15$ ;YES-- ILLEGAL
2920 006562 122700 000021 CMPB #IO.RVB/400,R0 ;READ VIRTUAL????
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 33-1
LPNIR (LP TASK QUEUE I/O REQUEST)
2921 006566 001411 BEQ 15$ ;YES-- ILLEGAL
2922 006570 122700 000020 CMPB #IO.DAC/400,R0 ;CLOSE OUT FILE?
2923 006574 001017 BNE 30$ ;NO-- ASSUME OK, GIVE SUCCESS
2924 ;
2925 ; IO.DAC -- CLOSE OUT FILE, SEND <FF>
2926 ;
2927 006576 012705 006730' MOV #VFCFF,R5 ;SET ADDRESS TO POINT TO FORM-FEED
2928 006602 012703 000001 MOV #1,R3 ;BYTE COUNT= 1
2929 006606 005004 CLR R4 ;NO EMA BITS
2930 006610 000417 BR 40$ ;SEND LIKE QUEUE I/O
2931 ;
2932 ; ILLEGAL FUNCTION
2933 ;
2934 006612 15$:
2935 006612 012703 177776 MOV #IE.IFC,R3 ;SAY ILLEGAL
2936 006616 000410 BR 31$ ;SO SAY IT
2937 ;
2938 ; IO.KIL-- FLUSH OUTPUT
2939 ;
2940 006620 20$:
2941 006620 022761 000012 000000G CMP #IO.KIL,R.FC(R1) ;THIS I/O KILL?
2942 006626 001002 BNE 30$ ;NO-- IGNORE
2943 006630 CALL ..SPLP ;FLUSH OUTPUT
006630 004737 011220' JSR PC,..SPLP
2944 ;
2945 ; IO.ATT, IO.DET-- IGNORE
2946 ;
2947 006634 30$:
2948 006634 012703 000001 MOV #IS.SUC,R3 ;SAY 'SUCCESS' TO ..IODN
2949 006640 31$:
2950 006640 005004 CLR R4 ;NO BYTES TRANSFERRED
2951 006642 CALL ..IODN ;RETURN PACKET TO REQUESTOR
006642 004737 000000G JSR PC,..IODN
2952 006646 000715 BR LPNIR ;DONE-- TRY FOR SOME MORE
2953 ;
2954 ; IO.WLB, IO.WVB-- SEND DATA TO LP
2955 ;
2956 ; ENTER THIS REQUEST IN THREADED OUTPUT LIST
2957 ;
2958 006650 40$:
2959 006650 010100 MOV R1,R0 ;COPY NODE ADDRESS
2960 006652 062700 000004G ADD #R.PB+PBTHRD,R0 ;POINT TO THREAD BLOCK AREA OF R.PB
2964 006656 116101 000004G MOVB R.PB+4(R1),R1 ;GET VERTICAL FORMAT CHARACTER
2965 006662 005060 000000G CLR T.HBCT(R0) ;NOTE THAT THIS IS A QIO REQUEST
2966 006666 010560 000000G MOV R5,T.HCAD(R0) ;SAVE PHYSICAL ADDR OF DATA
2967 006672 010360 000000G MOV R3,T.HCBC(R0) ; AND BYTE COUNT OF DATA
2968 006676 110460 177774 MOVB R4,T.HEMA(R0) ; AND EXTENDED MEMORY ADDR BITS
2969 ;
2970 006702 012705 006726' MOV #VFCTBL,R5 ;YES-- POINT TO TABLE OF FORMAT CONTROL CHARACTERS
2971 006706 55$:
2972 006706 112560 177775 MOVB (R5)+,T.HVFC(R0) ;GET THE CHARCTER TO CONTROL
2973 006712 001402 BEQ 60$ ;END OF TABLE-- GIVE UP WITH NOTHING
2974 006714 122501 CMPB (R5)+,R1 ;MATCH THE VFC CHARACTER?
2975 006716 001373 BNE 55$ ;NO-- LOOP UNTIL WE FIND ONE
2976 006720 60$:
2977 006720 CALL ..PTLP ;START LP ON THIS BUFFER, OR QUEUE UP
006720 004737 011452' JSR PC,..PTLP
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 33-2
LPNIR (LP TASK QUEUE I/O REQUEST)
2978 006724 000666 BR LPNIR ;LOOK FOR ANOTHER REQUEST
2979 ;
2980 ; VERTICAL FORMAT CONTROL CHARACTER TABLE FOR QUEUE I/O REQUESTS
2981 ;
2982 006726 VFCTBL:
2983 006726 012 040 .BYTE 12,' ;<SPACE> NEXT LINE
2984 006730 014 061 VFCFF: .BYTE 14,'1 ;"1" NEXT PAGE
2985 006732 015 053 .BYTE 15,'+ ;"+" OVERPRINT
2986 006734 021 060 .BYTE 21,'0 ;"0" DOUBLE SPACE
2987 006736 012 044 .BYTE 12,'$ ;"$" PROMPTING OUTPUT
2988 006740 000 .BYTE 0 ;END OF TABLE
2989 .EVEN
2990 ;
2991 ;
2992 006742 99$:
2993 ; BR LPMKT ;NEXT IS MARK-TIME REQUESTS
2994 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 34
LPMKT (LP TASK MARK-TIME REQUEST)
2996 .SBTTL LPMKT (LP TASK MARK-TIME REQUEST)
2997 ;
2998 ;+
2999 ; LPMKT IS DISPATCHED TO WHEN THE EF.LPC EVENT FLAG IS SET.
3000 ; THIS OCCURS EVERY 10. SECONDS. EACH LP IS CHECKED TO SEE IF LP.HNG
3001 ; BIT HAS BEEN CLEARED BY ..DOLP (I/O COMPLETION) IF IT IS NOT
3002 ; IDLE. IF LP.HNG IS SET, NO I/O HAS OCCURED IN 10 SECONDS, SO
3003 ; 'GO' IS SET IN LPCSRA TO CONTINUE THE LP. LPHUNG IS INCREMENTED.
3004 ; IN ANY CASE, IF THE LP IS NOT IDLE, LP.HNG IS SET SO IT CAN BE
3005 ; CHECKED IN ANOTHER 10 SECONDS.
3006 ;
3007 ;-
3008 ;
3009 .ENABLE LSB
3010 006742 LPMKT:
3011 006742 032737 000002 000000G BIT #EF.LPC,LPCEVF ;IS MARK-TIME EVENT FLAG SET?
3012 006750 001503 BEQ 99$ ;NO-- CHECK NEXT FLAG
3013 006752 012705 000002 MOV #L$$P20,R5 ;SET UP # LP'S TO CHECK
3014 006756 012702 000000G MOV #LPTBL,R2 ;ADDRESS DATA BLOCK FOR UNIT 0
3015 006762 10$:
3016 006762 016203 000000G MOV LPCSA(R2),R3 ;GET EXTERNAL PAGE ADDR
3017 006766 001407 BEQ 12$ ;NON-EX LP-- SKIP THIS
3018 006770 000241 CLC ;CLEAR CARRY, IN CASE OF TRAP
3019 006772 032713 000100 BIT #INTENB,(R3) ;IS INTERRUPT-ENABLE STILL SET?
3020 006776 LPDINT:
3021 006776 103403 BCS 12$ ;TIME-OUT-- JUST SEND STATUS
3022 007000 001002 BNE 12$ ;YES-- DON'T SET IT
3023 007002 052713 000100 BIS #INTENB,(R3) ;MAKE SURE WE STILL HAVE INTERRUPT ENABLE
3024 007006 12$:
3025 007006 032712 004000 BIT #LP.WAT,(R2) ;WAITING?
3026 007012 001047 BNE 30$ ;YES-- DON7T TRY TO CONTINUE
3027 007014 005762 000000G TST LPTHD(R2) ;ANY ACTIVE REQUESTS?
3028 007020 001453 BEQ 90$ ;NONE-- LP IS IDLE
3029 007022 032712 100000 BIT #LP.HNG,(R2) ;NO I/O IN 10 SEC?
3030 007026 001446 BEQ 80$ ;NO-- I/O CLEARED THIS BIT-- OK
3031 007030 005762 000000G TST LPITH(R2) ;IS I/O SUPPOSED TO BE IN PROGRSS?
3032 007034 001436 BEQ 30$ ;NO-- SEE IF WE JUST CAME ON-LINE
3033 007036 005703 TST R3 ;DEVICE EXIST?
3034 007040 001434 BEQ 30$ ;NON-EX LP-- FLUSH OUTPUT
3035 007042 005237 000000G INC LPHUNG ;COUNT # TIMES WE HAD TO START LP G9OING
3036 007046 005362 000000G DEC LPRTY(R2) ;ONE LESS TIME TO TRY
3037 007052 002427 BLT 30$ ;NONE LEFT-- GIVE UP
3038 007054 .INH4 ;;;LOCK OUT LP INTERRUPTS
007054 013746 177776 MOV @#PS,-(SP)
007060 112737 000200 177776 MOVB #PR4,@#PS
3039 007066 105062 000000G CLRB LPCSM+0(R2) ;;;CLEAR LOW BYTE SO NO CARRY
3040 007072 066362 000016 000000G ADD LPCKSM-1(R3),LPCSM(R2) ;;;ACCUMULATE CHECKSUM (CLEARED BY GO)
3041 007100 005763 000006 TST LPBCTR(R3) ;;;DONE (BYTE COUNT=0)?
3042 007104 001403 BEQ 20$ ;;;YES-- DO NEXT BUFFER
3043 007106 052713 000103 BIS #INTENB+PARENB+GO,(R3) ;;;NO-- JUST SET INT ENB AND GO
3044 007112 000404 BR 29$ ;;;DO ANOTHER LP
3045 ;
3046 007114 20$:
3047 007114 016200 000000G MOV LPITH(R2),R0 ;;;GET CURRENT BUFFER ADDRESS
3048 007120 CALL ..DOL1 ;;;DONE-- DO NEXT BUFFER
007120 004737 011600' JSR PC,..DOL1
3049 007124 29$:
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 34-1
LPMKT (LP TASK MARK-TIME REQUEST)
3050 007124 .ENB4 ;ALLOW LP INTERRUPTS
007124 012637 177776 MOV (SP)+,@#PS
3051 007130 000405 BR 80$ ;DONE WITH LP
3052 ;
3053 007132 30$:
3054 007132 052712 040000 BIS #LP.SST,(R2) ;TIME TO SEND STATUS!!
3055 007136 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;YES-- START IT UP AGAIN
3056 007144 80$:
3057 007144 052712 100000 BIS #LP.HNG,(R2) ;SAY LP NO I/O
3058 ; THIS WILL BE CLEARED WHENEVER
3059 ; ANY I/O IS DONE TO LP
3060 007150 90$:
3061 007150 062702 000000G ADD #LPSIZE,R2 ;BUMP TO NEXT LP IN LPTBL
3062 007154 005305 DEC R5 ;TRY ALL
3063 007156 003301 BGT 10$ ; LP'S
3064 007160 99$:
3065 007160 000137 005534' JMP LPLOOP ;GO BACK TO WAITING
3066 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 35
SSTSLP (SEND LP-20 STATUS TO -10)
3068 .SBTTL SSTSLP (SEND LP-20 STATUS TO -10)
3069 ;
3070 ;+
3071 ;
3072 ; SSTSLP IS CALLED TO SEND THE LP-20 STATUS TO THE -10.
3073 ; IT IS INVOKED BY BOTH A REQUEST FOR STATUS FROM THE -10
3074 ; AND ANY LP-20 ERROR INDICATION, AS WELL AS PAGE COUNT ZERO
3075 ; (IF ENABLED) AND UNDEFINED CHARACTERS IN THE RAM.
3076 ;
3077 ; TWO DEVICE-STSTUS WORDS ARE GENERATED,
3078 ; WITH THE STANDARD BITS (DV.XXX) IN THE FIRST WORD, AND THE
3079 ; FOLLOWING DEVICE-DEPENDENT BITS IN THE SECOND WORD:
3080 ;
3081 ; DD.PGZ PAGE COUNTER REACHED ZERO
3082 ; DD.CHI UNDEFINED CHARACTER IN RAM
3083 ; DD.VFE VFU ERROR (IMPLIES PAPER RE-ALIGNMENT REQUIRED)
3084 ; DD.LER ERROR FINDING/READING VFU AND RAM FILE
3085 ; DD.OVF OPTICAL VERTICAL FORMAT UNIT
3086 ; DD.RME RAM PARITY ERROR-- RELOAD REQUIRED
3087 ;
3088 ; THE STATUS BLOCK SENT TO THE -10 IS IN THE FOLLOWING FORMAT:
3089 ;
3090 ; WORD 0 STATUS WORD 0 (DV.XXX)
3091 ; 1 STATUS WORD 1 (DD.XXX)
3092 ; 2 (HIGH BYTE) # BYTES OF DEVICE DEPENDENT INFO (ALWAYS 2.)
3093 ; (LOW BYTE) # BYTES OF DEVICE REGISTERS (ALWAYS 16.)
3094 ; 3 (LOW BYTE) ACCUMULATED CHECKSUM (HIGH BYTE) RETRY COUNT
3095 ; LP-20 DEVICE REGISTERS
3096 ; 4 LPCSRA
3097 ; 5 LPCSRB
3098 ; 6 LPBSAD
3099 ; 7 LPBCTR
3100 ; 10 LPPCTR
3101 ; 11 LPRAMD
3102 ; 12 LPCBUF/LPCCTR
3103 ; 13 LPTDAT/LPCKSM
3104 ;
3105 ; CALLED AT TASK LEVEL
3106 ;
3107 ; CALLING SEQUENCE:
3108 ; R2 -- POINTER TO LPTBL ENTRY FOR THIS LP
3109 ; R3 -- EXTERNAL PAGE ADDRESS FOR THIS LP
3110 ;
3111 ; EXIT CONDITIONS:
3112 ;
3113 ; NO REGISTERS MODIFIED
3114 ;
3115 ;-
3116 ;
3117 .ENABLE LSB
3118 007164 SSTSLP:
3119 007164 SAVE <R0,R1,R3,R4> ;SAVE USED CARS
007164 010046 MOV R0,-(SP)
007166 010146 MOV R1,-(SP)
007170 010346 MOV R3,-(SP)
007172 010446 MOV R4,-(SP)
3120 007174 042712 040000 BIC #LP.SST,(R2) ;CLEAR 'SEND STATUS' FLAG
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 35-1
SSTSLP (SEND LP-20 STATUS TO -10)
3121 007200 032777 000020 000000G 4$: BIT #EF.LPS,@LPEVFG ;IS OUR BUFFER AVAILABLE?
3122 007206 001006 BNE 5$ ;YES-- DON'T WAIT
3123 007210 WSIG$S ;NO-- WAIT FOR IT
007210 012746 MOV (PC)+,-(SP)
007212 061 001 .BYTE 49.,1
007214 104375 EMT 375
3124 007216 005737 000002G TST .COMEF+2 ; [4.1.1105] IS PRIMARY PROTOCOL RUNNING ?
3125 007222 100766 BMI 4$ ; [4.1.1105] YES-- STILL BUSY...
3126 007224 5$:
3127 007224 012700 000004G MOV #LPSTBK+4,R0 ;GET ADDRES OF BYTE COUNT WORD
3128 007230 005010 CLR (R0) ;CLEAR IT (ASSUME NON-EX DEV)
3129 007232 005040 CLR -(R0) ; AND SECOND WORD OF STATUS
3130 007234 005040 CLR -(R0) ;AND FIRST WORD, WITH R0 POINTING TO IT
3131 007236 005001 CLR R1 ;CLEAR ERROR MESSAGE POINTER, TOO
3132 007240 005703 TST R3 ;GOT A EPA?
3133 007242 001005 BNE 10$ ;GOT IT-- CHECK OUT LP STATUS
3134 007244 052710 000007 BIS #DV.NXD!DV.OIR!DV.OFL,(R0) ;NON-EX LP-- SAY SO
3135 007250 012701 007715' MOV #ERMNXD,R1 ;PRINT ERROR ON CONSOLE, TOO
3136 007254 000537 BR 50$ ;GO SEND THE ERROR
3137 ;
3138 007256 10$:
3139 007256 032712 000200 BIT #LP.EOF,(R2) ;THIS AN EOF ENCOUNTERED?
3140 007262 001402 BEQ 11$ ;NO-- GO ON
3141 007264 052710 000040 BIS #DV.EOF,(R0) ;YES-- SAY SO
3142 007270 11$:
3143 007270 032713 004000 BIT #ONLINE,(R3) ;LP OFF-LINE?
3144 007274 001004 BNE 12$ ;NO-- GO ON
3145 007276 052710 000006 BIS #DV.OFL!DV.OIR,(R0) ;YES-- SAY OFF-LINE
3146 007302 012701 007735' MOV #ERMOFL,R1 ; AND TO CONSOLE
3147 007306 12$:
3148 007306 032713 010000 BIT #VFURDY,(R3) ;VFU NOT READY?
3149 007312 001007 BNE 13$ ;NO-- OK
3150 007314 052760 000004 000002 BIS #DD.VFE,2(R0) ;YES-- SET SO IN DD WORD
3151 007322 012701 007750' MOV #ERMVFE,R1 ;TELL CONSOLE
3152 007326 052712 002000 BIS #LP.CLR,(R2) ;NOTE RAM NEEDS TO BE RESET
3153 007332 13$:
3154 007332 032763 000076 000002 BIT #LPTPAR+MEMPAR+RAMPAR+SYNTIM+DEMTIM,LPCSRB(R3) ;FATAL ERROR?
3155 007340 001404 BEQ 14$ ;NO-- ALL OK
3156 007342 052710 000100 BIS #DV.LOG,(R0) ;YES-- SAY BAD ERROR, AND ERROR-LOG IT
3157 007346 012701 007767' MOV #ERMHER,R1 ;SAY SPLAT TO CONSOLE
3158 007352 14$:
3159 007352 016204 000000G MOV LPTHD(R2),R4 ;IS I/O LEFT TO DO?
3160 007356 001002 BNE 141$ ;YES-- SAY SO
3161 007360 005001 CLR R1 ;NO-- DON'T SEND OFF-LINE/VFE
3162 007362 000436 BR 15$ ;GO ON
3163 ;
3164 007364 141$:
3165 007364 052710 000020 BIS #DV.IOP,(R0) ;SAY I/O IN PROGRESS
3166 007370 005764 000000G TST T.HBCT(R4) ;IS THIS A QUEUE I/O REQUEST?
3167 007374 001002 BNE 142$ ;NO-- GO ON
3168 007376 052710 000400 BIS #DV.F11,(R0) ;YES-- SAY FROM -11
3169 007402 142$:
3170 007402 005762 000000G TST LPRTY(R2) ;IS RETRY COUNT DOWN YET?
3171 007406 002024 BGE 15$ ;NO-- GO ON
3172 007410 052710 000300 BIS #DV.URE!DV.LOG,(R0) ;SAY RETRY COUNT EXHAUSTED
3173 007414 032712 100000 BIT #LP.HNG,(R2) ;WAS DEVICE HUNG, TOO?
3174 007420 001404 BEQ 143$ ;NO-- GO ON
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 35-2
SSTSLP (SEND LP-20 STATUS TO -10)
3175 007422 052710 001004 BIS #DV.HNG!DV.OIR,(R0) ;YES-- SAY THAT TOO
3176 007426 012701 010004' MOV #ERMHNG,R1 ;GET HUNG MESSAGE, TOO
3177 007432 143$:
3178 007432 032763 000010 000002 BIT #RAMPAR,LPCSRB(R3) ;RAM PARITY ERROR?
3179 007440 001405 BEQ 144$ ;NO-- GO ON
3180 007442 052760 000040 000002 BIS #DD.RME,2(R0) ;YES-- NOTE FATAL ERROR
3181 007450 052712 002000 BIS #LP.CLR,(R2) ;NOTE RAM NEEDS TO BE RESET
3182 007454 144$:
3183 007454 CALL ..SPLP ;RETRY COUNT EXHAUSTED-- GIVE UP OUTPUT
007454 004737 011220' JSR PC,..SPLP
3184 007460 15$:
3185 007460 032713 040000 BIT #PAGZRO,(R3) ;PAGE-COUNT ZERO?
3186 007464 001412 BEQ 16$ ;NO-- OK
3187 007466 032712 020000 BIT #LP.PZI,(R2) ;YES-- BUT ENABLED?
3188 007472 001407 BEQ 16$ ;NO-- DON'T TELL HIM
3189 007474 052710 000010 BIS #DV.SCN,(R0) ;TELL -10 WE WANT HIM TO ACK
3190 007500 052760 000001 000002 BIS #DD.PGZ,2(R0) ; FOR PAGE-ZERO
3191 007506 052712 004000 BIS #LP.WAT,(R2) ;REMEMBER TO WAIT
3192 007512 16$:
3193 007512 032713 020000 BIT #CHRINT,(R3) ;UNDEFINED (INTERRUPT) CHARACTER?
3194 007516 001407 BEQ 17$ ;NO-- GO ON
3195 007520 052710 000010 BIS #DV.SCN,(R0) ;NOTE TO WAIT
3196 007524 052760 000002 000002 BIS #DD.CHI,2(R0) ; FOR UNDEF CHAR
3197 007532 052712 004000 BIS #LP.WAT,(R2) ; AND FOR US TO WAIT
3198 007536 17$:
3199 007536 032763 004000 000002 BIT #OPTVFU,LPCSRB(R3) ;THIS LP HAVE OPTICAL VFU?
3200 007544 001403 BEQ 18$ ;NO-- MUST HAVE DAVFU (HOORAY)
3201 007546 052760 000020 000002 BIS #DD.OVF,2(R0) ;YES-- SAY SO
3202 007554 18$:
3203 ;
3204 ; ERROR CODE NOW IN LPSTBK+0 AND LPSTBK+2
3205 ;
3206 007554 50$:
3207 007554 032712 000400 BIT #LP.F10,(R2) ;THIS A FROM-10 REQUEST?
3208 007560 001115 BNE 70$ ;YES-- DON'T PRINT ON CONSOLE
3209 ;
3210 ; NON-10 REQUEST-- SEND CONSOLE A MESSAGE ABOUT OUR STATUS
3211 ;
3212 007562 042712 004000 BIC #LP.WAT,(R2) ;DON'T WAIT FOR NON-10 REQUEST
3213 007566 005701 TST R1 ;TELL OPR?
3214 007570 001511 BEQ 70$ ;NO-- JUST SEND TO -10 ANYWAY
3215 007572 012700 007675' MOV #LPEMSX,R0 ;GET ADDRESS OF END OF MESSAGE SO FAR
3216 007576 51$:
3217 007576 112120 MOVB (R1)+,(R0)+ ;COPY A BYTE OF THE MESSAGE
3218 007600 001376 BNE 51$ ; UNTIL ASCIZZZZZZZZ
3219 007602 162700 007662' SUB #LPEMSG,R0 ;GET LENGTH OF MESSAGE
3220 007606 010037 007656' MOV R0,LPQDPB+Q.IOPL+2 ;SET LENGTH IN QIOW$ DPB
3221 007612 011201 MOV (R2),R1 ;GET UNIT
3222 007614 042701 177774 BIC #^C<LP.UNT>,R1 ; NUMBER OF THIS LP
3223 007620 062701 000060 ADD #'0,R1 ;MAKE IT ASCII
3224 007624 110137 007672' MOVB R1,LPERUN ;SAVE IN MESSAGE STRING
3225 007630 DIR$ #LPQDPB ;DO QUEUE I/O TO CTY
007630 012746 007640' MOV #LPQDPB,-(SP)
007634 104375 EMT 375
3226 007636 000466 BR 70$ ;SEE IF WE CAN CONTINUE
3227 ;
3228 007640 LPQDPB:
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 35-3
SSTSLP (SEND LP-20 STATUS TO -10)
3229 007640 QIOW$ IO.WLB,1,E.FLPQ,1,0,0,<LPEMSG,0,0>
007640 003 011 .BYTE 3,$$$ARG
007642 000400 .WORD IO.WLB
007644 000001 .WORD 1
007646 003 001 .BYTE E.FLPQ,1
007650 000000 .WORD 0
007652 000000 .WORD 0
007654 007662' .WORD LPEMSG
007656 000000 .WORD 0
007660 000000 .WORD 0
3230 007662 LPEMSG:
3231 007662 015 012 052 .ASCII <15><12>/*** LP/
007665 052 052 040
007670 114 120
3232 007672 LPERUN:
3233 007672 060 072 040 .ASCII /0: /
3234 007675 LPEMSX:
3235 007675 .BLKB 16. ;REST OF MESSAGE: MAX OF 16 BYTES
3236 007715 ERMNXD:
3237 007715 116 117 116 .ASCIZ /NON-EX DEVICE/<15><12>
007720 055 105 130
007723 040 104 105
007726 126 111 103
007731 105 015 012
007734 000
3238 007735 ERMOFL:
3239 007735 117 106 106 .ASCIZ /OFF-LINE/<15><12>
007740 055 114 111
007743 116 105 015
007746 012 000
3240 007750 ERMVFE:
3241 007750 106 117 122 .ASCIZ /FORMAT ERROR/<15><12>
007753 115 101 124
007756 040 105 122
007761 122 117 122
007764 015 012 000
3242 007767 ERMHER:
3243 007767 104 101 124 .ASCIZ /DATA ERROR/<15><12>
007772 101 040 105
007775 122 122 117
010000 122 015 012
010003 000
3244 010004 ERMHNG:
3245 010004 110 125 116 .ASCIZ /HUNG/<15><12>
010007 107 015 012
010012 000
3246 .EVEN
3247 ;
3248 ; HERE WE SEND THE STATUS BLOCK TO THE -10, R1= STATE CODE
3249 ;
3250 ;
3251 ; ASSEMBLE DEVICE INFO AND DEVICE REGISTERS
3252 ;
3253 010014 70$:
3254 010014 005703 TST R3 ;NON-EX DEVICE?
3255 010016 001417 BEQ 72$ ;YES-- DON'T STORE NON-EX DEVICE REGISTERS
3256 010020 012700 000004G MOV #LPSTBK+4,R0 ;POINT TO STATUS RETURN BLOCK
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 35-4
SSTSLP (SEND LP-20 STATUS TO -10)
3257 010024 012720 000000C MOV #<2.*BIT8>+<LPEXPZ*BIT0>,(R0)+ ;2 BYTES INFO, + DEV REG'S
3258 010030 116220 000001G MOVB LPCSM+1(R2),(R0)+ ;CHECKSUM
3259 010034 012701 000012 MOV #LPRTRY,R1 ;GET INITIAL RETRY COUNT
3260 010040 166201 000000G SUB LPRTY(R2),R1 ; - CURRENT COUNT= # RETRIES
3261 010044 110120 MOVB R1,(R0)+ ;HIGH BYTE-- # RETRIES
3262 010046 71$:
3263 010046 012320 MOV (R3)+,(R0)+ ;(2) ... LP DEVICE REGISTERS
3264 010050 022700 000000C CMP #LPSTBK+LPSTLN,R0 ;DONE YET?
3265 010054 101374 BHI 71$ ;NO-- KEEP ON LOOPING
3266 ;
3267 ; SET UP REGISTERS FOR ..STIN:
3268 ; R0 -- ADDRESS OF BLOCK (FIRST WORD IS UNIT/BYTE COUNT)
3269 ; R1 -- FUNCTION CODE + BIT15 (FOR INDIRECT FUNCTION)
3270 ; R2 -- EVENT FLAG NUMBER TO BE SET WHEN BLOCK SENT
3271 ; R3 -- DEVICE CODE (D.CLPT FOR THE LP-20)
3272 ;
3273 010056 72$:
3274 010056 012700 000000G MOV #LPSTBK,R0 ;SET UP ADDR FOR ..STIN
3275 010062 011201 MOV (R2),R1 ;GET UNIT NUMBER
3276 010064 042701 177774 BIC #^C<LP.UNT>,R1 ; FROM LPSTS
3277 010070 110140 MOVB R1,-(R0) ;HIGH BYTE HEADER: UNIT #
3278 010072 112740 000002G MOVB #LPSTLN+2,-(R0) ;LOW BYTE HEADER: SIZE OF BLOCK
3279 010076 012701 100000G MOV #BIT15+BC.HDS,R1 ;INDIRECT FUNCTION HERE IS DEVICE STATUS
3280 010102 PUSH R2 ;SAVE LPTBL POINTER
010102 010246 MOV R2,-(SP)
3281 010104 012702 000005 MOV #E.FLPS,R2 ;EVENT FLAG NUMBER
3282 010110 012703 000000G MOV #D.CLPT,R3 ;DEVICE LP
3283 010114 042777 000020 000000G BIC #EF.LPS,@LPEVFG ;CLEAR BUFFER AVAILABLE FLAG
3284 010122 CALL ..STIN ;SAVE FOR NOW
010122 004737 000000G JSR PC,..STIN
3285 010126 POP R2 ;RESTORE LPTBL POINTER
010126 012602 MOV (SP)+,R2
3286 010130 103010 BCC 80$ ;FINISH UP
3287 ;
3288 ; ..STIN GAVE ERROR-- MUST SEND STATUS AGAIN LATER
3289 ;
3290 010132 75$:
3291 010132 052777 000020 000000G BIS #EF.LPS,@LPEVFG ;NOTE BUFFER STILL REALLY AVAILABLE
3292 010140 032712 000400 BIT #LP.F10,(R2) ;THIS A FROM-10 REQUEST
3293 010144 001402 BEQ 80$ ;NO-- IGNORE THE ERROR
3294 010146 052712 040000 BIS #LP.SST,(R2) ;YES-- SEND STATUS AGAIN LATER
3295 ;
3296 ; FINISH UP
3297 ;
3298 010152 80$:
3299 010152 RESTORE ; AND REGISTERS
010152 012604 MOV (SP)+,R4
010154 012603 MOV (SP)+,R3
010156 012601 MOV (SP)+,R1
010160 012600 MOV (SP)+,R0
3300 010162 RETURN ;RETURN FROM SSTSLP
010162 000207 RTS PC
3301 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 36
TESTLP (START LP-20 GOING ON THREADED LIST)
3303 .SBTTL TESTLP (START LP-20 GOING ON THREADED LIST)
3304 ;
3305 ;+
3306 ; TESTLP IS CALLED TO START THE LP-20 ON A THREADED LIST.
3307 ; THE THREAD MUST BE SET UP, WITH THE POINTER BOTH IN R0 AND LPTHD.
3308 ;
3309 ; CALLED FROM TASK LEVEL
3310 ;
3311 ; CALLING SEQUENCE:
3312 ; R0 -- THREAD POINTER (ALSO IN LPTHD)
3313 ; R2 -- LPTBL ENTRY FOR THIS LP
3314 ;
3315 ; EXIT CONDITIONS:
3316 ; R0 -- CURRENT OUTPUT THREAD POINTER
3317 ; R3 -- EXTERNAL PAGE ADDRESS OF THIS LP
3318 ;
3319 ;-
3320 ;
3321 010164 TESTLP:
3322 010164 032713 004000 BIT #ONLINE,(R3) ;OFF-LINE?
3323 010170 001470 BEQ 90$ ;YES-- DO NOTHING
3324 ;
3325 010172 032777 000040 000000G BIT #EF.LPW,@LPEVFG ;SHOULD WE WAIT FOR LP-20?
3326 010200 001011 BNE 10$ ;NO-- GO ON
3327 ;
3328 ; MUST WAIT FOR 1-SEC FOR LP-20 TO SETTLE AFTER DOING AN ABORT TRANSFER
3329 ;
3330 010202 DIR$ #MKSCDP ;SET MARK TIME REQUEST
010202 012746 005372' MOV #MKSCDP,-(SP)
010206 104375 EMT 375
3331 010210 103405 BCS 10$ ;OH, WELL ...
3332 010212 WTSE$S #E.FLPW ;WAIT FOR THE FLAG
010212 012746 000006 MOV #E.FLPW,-(SP)
010216 012746 MOV (PC)+,-(SP)
010220 051 002 .BYTE 41.,2
010222 104375 EMT 375
3333 010224 10$:
3334 010224 032712 002000 BIT #LP.CLR,(R2) ;TIME TO CLEAR THE RAM?
3335 010230 001414 BEQ 30$ ;NO-- JUST GO ON
3336 010232 042712 002000 BIC #LP.CLR,(R2) ;RESET THE FLAG
3337 010236 032712 001000 BIT #LP.LIP,(R2) ;BUT RAM LOAD NOW IN PROGRESS??
3338 010242 001007 BNE 30$ ;YES-- DON'T GO RESET IT
3339 ;
3340 ; RAM MUST BE CLEARED, SINCE WE GOT A RAMPAR/VFU ERROR
3341 ;
3342 010244 105063 000014 CLRB LPCBUF(R3) ;CLEAR RAM ADDRESS REGISTER
3343 010250 20$:
3344 010250 005063 000012 CLR LPRAMD(R3) ;CLEAR A RAM WORD
3345 010254 105263 000014 INCB LPCBUF(R3) ;BUMP TO NEXT RAM ADDRESS
3346 010260 001373 BNE 20$ ;NOT DONE-- GO ON TO NEXT WORD
3347 ;
3348 ; TIME TO START LP GOING
3349 ;
3350 010262 30$:
3351 010262 032712 000200 BIT #LP.EOF,(R2) ;WE AT EOF TIME?
3352 010266 001404 BEQ 32$ ;NO-- GO ON
3353 010270 042712 000200 BIC #LP.EOF,(R2) ;YES-- NO LONGER EOF
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 36-1
TESTLP (START LP-20 GOING ON THREADED LIST)
3354 010274 005062 000000G CLR LPCSM(R2) ;RESET CHECKSUM AT EOF
3355 010300 32$:
3356 010300 032713 040000 BIT #PAGZRO,(R3) ;PAGZRO SET?
3357 010304 001403 BEQ 34$ ;NO-- GO ON
3358 010306 016363 000010 000010 MOV LPPCTR(R3),LPPCTR(R3) ;YES-- RESET PAGZRO
3359 010314 34$:
3360 010314 005713 TST (R3) ;ERROR SET?
3361 010316 100002 BPL 40$ ;NO-- GO ON
3362 010320 052713 001102 BIS #RSTERR+INTENB+PARENB,(R3) ;YES-- RESET IT
3363 010324 40$:
3364 010324 PUSH R0 ;SAVE THREAD POINTER
010324 010046 MOV R0,-(SP)
3365 010326 .INH4 ;;; PREVENT LP INTERRUPTS
010326 013746 177776 MOV @#PS,-(SP)
010332 112737 000200 177776 MOVB #PR4,@#PS
3366 010340 CALL ..DOLP ;;;START LP GOING ON THE LIST
010340 004737 011614' JSR PC,..DOLP
3367 010344 .ENB4 ;;;DONE
010344 012637 177776 MOV (SP)+,@#PS
3368 010350 POP R0 ;RESTORE LPTHD POINTER
010350 012600 MOV (SP)+,R0
3369 ;
3370 ; ALL DONE
3371 ;
3372 010352 90$:
3373 010352 RETURN ;RETURN FROM TESTLP
010352 000207 RTS PC
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 37
INITLP (INITALIZE ALL LP'S)
3375 .SBTTL INITLP (INITALIZE ALL LP'S)
3376 ;
3377 ;+
3378 ; INITLP IS CALLED DURING INITIALIZATION AND ALSO ON POWER
3379 ; RECOVERY.
3380 ;
3381 ; EACH LP IS RESET, AND LP.LDF IS SET TO LOAD THE CURRENT RAM
3382 ; AND VF. LPCSA IS CLEARED FOR NON-EX LP'S
3383 ;
3384 ;-
3385 ;
3386 .ENABLE LSB
3387 010354 INITLP::
3388 010354 SAVE <R2,R3,R5> ;SAVE OUR PRECIOUS REGISTERS
010354 010246 MOV R2,-(SP)
010356 010346 MOV R3,-(SP)
010360 010546 MOV R5,-(SP)
3389 010362 012705 000002 MOV #L$$P20,R5 ;GET # LP'S WE HAVE
3390 010366 012702 000000G MOV #LPTBL,R2 ;ADDRESS LPTBL ENTRY FOR UNIT 0
3391 010372 10$:
3392 010372 011203 MOV (R2),R3 ;GET THE
3393 010374 042703 177774 BIC #^C<LP.UNT>,R3 ; UNIT #
3394 010400 006303 ASL R3 ; *2
3395 010402 006303 ASL R3 ; *4
3396 010404 006303 ASL R3 ; *8
3397 010406 006303 ASL R3 ; *16 BYTES PER UNIT
3398 010410 062703 000000G ADD #LPEXPA,R3 ;GET EXTERNAL PAGE ADDRESS FOR THIS LP
3399 010414 010362 000000G MOV R3,LPCSA(R2) ;SAVE THIS ADDRESS
3400 010420 012713 001102 MOV #RSTERR+INTENB+PARENB,(R3) ;CLEAR LP
3401 010424 LPDCLR:
3402 010424 005062 000000G CLR LPITH(R2) ;CLEAR INT-LEVEL POINTER TO THREADED LIST
3403 010430 90$:
3404 010430 062702 000000G ADD #LPSIZE,R2 ;BUMP TO NEXT LP'S ENTRY
3405 010434 077522 SOB R5,10$ ;LOOP FOR ALL LP'S
3406
3407 010436 052777 000002 000000G BIS #EF.LPC,@LPEVFG ;FORCE A HUNG CHECK NOW
3408 010444 RESTORE ; THE REGISTERS TO THEIR RIGHTFUL (PITIFUL) CONDITION
010444 012605 MOV (SP)+,R5
010446 012603 MOV (SP)+,R3
010450 012602 MOV (SP)+,R2
3409 010452 RETURN ;RETURN FROM INITLP
010452 000207 RTS PC
3410 ;
3411 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 38
LP-20 INTERRUPT SERVICE MODULE
3413 .SBTTL LP-20 INTERRUPT SERVICE MODULE
3414 ;
3415 ; COPYRIGHT (C) 1975, 1978 BY
3416 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
3417 ;
3418 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
3419 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
3420 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
3421 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
3422 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
3423 ;
3424 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
3425 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
3426 ; CORPORATION.
3427 ;
3428 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
3429 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
3430 ;
3431 ; MODULE: LP-20 INTERRUPT SERVICE
3432 ;
3433 ; VERSION: 01-01
3434 ;
3435 ; AUTHOR: TOM PORCHER
3436 ;
3437 ; DATE: 6-JUN-75
3438 ;
3439 ;
3440 ; THIS MODULE CONTAINS:
3441 ;
3442 ; 1) $LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
3443 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 39
$LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
3445 .SBTTL $LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
3446 ;
3447 ;+
3448 ;
3449 ; $LPINT IS CALLED FROM THE INTERRUPT VECTOR FOR
3450 ; ANY OF THE LP-20'S. THE UNIT NUMBER IS SAVED IN THE LOW-ORDER
3451 ; BITS (THE CC'S) OF THE PS IN THE TRAP VECTOR.
3452 ;
3453 ; WHEN A DONE INTERRUPT OCCURS, THE NEXT BUFFER IS STARTED,
3454 ; UNLESS THIS IS A MULTI-CHARACTER OPERATION (IE. 'ARROW' MODE), IN
3455 ; WHICH CASE THE CURRENT BUFFER IS CONTINUED.
3456 ;
3457 ; IF CHRINT (UNDEFINED CHARACTER -- INT BIT SET IN RAM) OCCURS,
3458 ; THE RAM DATA IS EXAMINED. IF IT IS '^', THE CHARACTER + 100,
3459 ; PRECEDED BY '^', IS PRINTED, ELSE OUTPUT IS
3460 ; STOPPED AND THE STATUS SENT TO THE -10 (INTERRUPT).
3461 ;
3462 ; IF PAGZRO (PAGE COUNT REACHED ZERO) OCCURS AND THE LP.PZI
3463 ; (PAGE ZERO INTERRUPT) FLAG IN LPSTS (SET BY RAM/VF LOAD FILE) IS
3464 ; SET, OUTPUT IS STOPPED AND THE STATUS IS SENT TO THE -10. OTHERWISE,
3465 ; OUTPUT IS MERELY RESUMED AND PAGZRO IGNORED.
3466 ;
3467 ; IF THE LP COMES ON-LINE, WHILE WAITING FOR OFF-LINE,
3468 ; OUTPUT IS RESUMED, AND THE NEW STATUS IS SENT TO THE -10.
3469 ;
3470 ;-
3471 ;
3472 010454 $LPINT::
3473 010454 013737 177776 000000G MOV @#PS,LPUNIT ;;;SAVE UNIT #
3474 010462 SAVE <R0,R2,R3> ;;;SAVE REGISTERS
010462 010046 MOV R0,-(SP)
010464 010246 MOV R2,-(SP)
010466 010346 MOV R3,-(SP)
3475 010470 013702 000000G MOV LPUNIT,R2 ;;;GET UNIT # BACK
3476 010474 006302 ASL R2 ;;;MAKE IT WORDS
3477 010476 042702 177774 BIC #^C<LP.UNT>,R2 ;;;CLEAR GARBAGE BITS
3478 010502 016202 000000G MOV LPUTBL(R2),R2 ;;;GET ADDR OF DEVICE STATUS BLOCK FOR THIS LP
3479 010506 016203 000000G MOV LPCSA(R2),R3 ;;;GET EXT PAGE ADDR FOR CURRENT LP
3480 010512 016200 000000G MOV LPITH(R2),R0 ;;;GET CURRENT THREAD BLOCK ADDR
3481 010516 001520 BEQ 80$ ;;;IDLE-- JUST SEND DEVICE STATUS
3482 ;
3483 ; LP NOT IDLE-- SEE IF ERROR, PAGZRO, CHRINT, OR DONE
3484 ;
3485 010520 105062 000000G CLRB LPCSM+0(R2) ;;;INSURE NO CARRY
3486 010524 066362 000016 000000G ADD LPCKSM-1(R3),LPCSM(R2) ;;;ACCUMULATE CHECKSUM
3487 010532 032713 160000 BIT #ERR+PAGZRO+CHRINT,(R3) ;;;ERROR, PAGZRO, OR CHRINT?
3488 010536 001014 BNE 30$ ;;;YES-- STOP I/O AND PROCESS
3489 010540 005763 000006 TST LPBCTR(R3) ;;;DONE (BYTE COUNT=0)?
3490 010544 001003 BNE 20$ ;;;NO-- JUST KEEP IT GOING
3491 010546 CALL ..DOL1 ;;;YES-- START NEXT BUFFER
010546 004737 011600' JSR PC,..DOL1
3492 010552 000511 BR 90$ ;;;EXIT FROM IRP
3493 ;
3494 010554 20$:
3495 010554 005362 000000G DEC LPRTY(R2) ;;;DECREMENT RETRY COUNT
3496 010560 002403 BLT 30$ ;;;RAN OUT-- CHECK FOR A BIT SET, OR ASSUME ERROR
3497 010562 052713 000103 BIS #INTENB+PARENB+GO,(R3) ;;;MAKE SURE LP IS STILL GO-ING
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 39-1
$LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
3498 010566 000503 BR 90$ ;;;AND EXIT
3499 ;
3500 ; ERROR, PAGZRO, OR CHRINT-- SAVE BYTE COUNT AND ADDRESS
3501 ; STOP I/O AND WAIT FOR CONTINUE
3502 ;
3503 010570 30$:
3504 010570 032712 010000 BIT #LP.MCH,(R2) ;;;MULTI-CHAR PRINT OPERATION?
3505 010574 001044 BNE 40$ ;;;YES-- DON'T SAVE BYTE COUNT AND ADDRESS
3506 010576 005463 000006 NEG LPBCTR(R3) ;;;GET # BYTES LEFT TO TRANSMIT
3507 010602 016360 000006 000000G MOV LPBCTR(R3),T.HCBC(R0) ;;; INTO THREAD BLOCK TO CONTINUE
3508 010610 016360 000004 000000G MOV LPBSAD(R3),T.HCAD(R0) ;;;ALSO CURRENT ADDRESS
3509 010616 032713 020000 BIT #CHRINT,(R3) ;;;THIS CHRINT INTERRUPT?
3510 010622 001431 BEQ 40$ ;;;NO-- SEE IF PAGZRO
3511 010624 PUSH R2 ;;;SAVE THE ADDRESS OF LPTBL
010624 010246 MOV R2,-(SP)
3512 010626 062702 000000G ADD #LPMCB,R2 ;;;POINT TO THE MULTI-CHAR BUFFER
3513 010632 010263 000004 MOV R2,LPBSAD(R3) ;;;POINT THE LP20 TO THAT BUFFER
3514 010636 116312 000012 MOVB LPRAMD+0(R3),(R2) ;;;GET RAM DATA CHARACTER
3515 010642 122722 000136 CMPB #'^,(R2)+ ;;;ARROW MODE?
3516 010646 001015 BNE 39$ ;;;NO-- INTERRUPT -10
3517 010650 116312 000014 MOVB LPCBUF(R3),(R2) ;;;YES-- GET THE CAUSING CHARACTER
3518 010654 152712 000100 BISB #100,(R2) ;;;MAKE IT ALPHABETIC
3519 010660 POP R2 ;;;RESTORE LPTBL
010660 012602 MOV (SP)+,R2
3520 010662 052712 010000 BIS #LP.MCH,(R2) ;;;SAY WE ARE DOING MULTI-CHARACTER
3521 010666 012763 177776 000006 MOV #-2,LPBCTR(R3) ;;;SET BYTE COUNT TO TWO CHARACTERS
3522 010674 012713 000103 MOV #PARENB+INTENB+GO,(R3) ;;;START IT GOING ON THESE TWO CHARS
3523 010700 000436 BR 90$ ;;;WAIT FOR DONE
3524 ;
3525 010702 39$: POP R2 ;;;INTERRUPT-- RESTORE LPTBL POINTER
010702 012602 MOV (SP)+,R2
3526 010704 000423 BR 70$ ;;; AND TELL -10
3527 ;
3528 ; ERROR OR PAGZRO
3529 ;
3530 010706 40$:
3531 010706 032713 040000 BIT #PAGZRO,(R3) ;;;PAGZRO?
3532 010712 001411 BEQ 60$ ;;;NO-- MUST BE ERROR
3533 010714 032712 020000 BIT #LP.PZI,(R2) ;;;YES-- IS PAGE ZERO INTERRUPT ENABLED?
3534 010720 001015 BNE 70$ ;;;YES-- INTERRUPT AND WAIT
3535 010722 016363 000010 000010 MOV LPPCTR(R3),LPPCTR(R3) ;;;NO-- RESET PAGZRO
3536 010730 CALL ..DOLP ;;;NO-- JUST CONTINUE
010730 004737 011614' JSR PC,..DOLP
3537 010734 000420 BR 90$ ;;;DONE WITH PAGZRO
3538 ;
3539 ; ERROR-- DECREMENT RETRY COUNT IF ANYTHING BUT OFF-LINE
3540 ;
3541 010736 60$:
3542 010736 032763 000177 000002 BIT #VFUERR+LPTPAR+MEMPAR+RAMPAR+SYNTIM+DEMTIM+GOERR,LPCSRB(R3)
3543 010744 001403 BEQ 70$ ;;;NO ERRORS-- JUST SEND STATUS
3544 010746 012762 177777 000000G MOV #-1,LPRTY(R2) ;;; ABOVE ERRORS ARE NOT RECOVERABLE
3545 ;
3546 ; STOP I/O AND SEND STATUS TO -10
3547 ;
3548 010754 70$:
3549 010754 005062 000000G CLR LPITH(R2) ;;;SAY I/O STOPPED
3550 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 39-2
$LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
3551 ; SEND STATUS TO -10
3552 ;
3553 010760 80$:
3554 010760 052712 040000 BIS #LP.SST,(R2) ;;;SAY SEND STATUS TO TASK
3555 010764 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;;;SAY SOMETHING TO DO
3556 010772 CALL ..DSEV ;;;SAY SIGNIFICANT EVENT
010772 004737 000000G JSR PC,..DSEV
3557 ;
3558 ; ALL DONE WITH INTERRUPT
3559 ;
3560 010776 90$:
3561 010776 RESTORE ;;; SAVED REGISTERS
010776 012603 MOV (SP)+,R3
011000 012602 MOV (SP)+,R2
011002 012600 MOV (SP)+,R0
3562 011004 000137 000000G JMP ..INTX ;;;RETURN FROM LP INTERRUPT
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 40
LP-20 COMMON SUBROUTINES MODULE
3564 .SBTTL LP-20 COMMON SUBROUTINES MODULE
3565 ;
3566 ; COPYRIGHT (C) 1975, 1978 BY
3567 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
3568 ;
3569 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
3570 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
3571 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
3572 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
3573 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
3574 ;
3575 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
3576 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
3577 ; CORPORATION.
3578 ;
3579 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
3580 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
3581 ;
3582 ; MODULE: LP-20 COMMON SUBROUTINES
3583 ;
3584 ; VERSION: 01-00
3585 ;
3586 ; AUTHOR: TOM PORCHER
3587 ;
3588 ; DATE: 7-JUN-75
3589 ;
3590 ;
3591 ; THIS MODULE CONTAINS:
3592 ;
3593 ; 1) ..STLP (START LP-20 OUTPUT)
3594 ;
3595 ; 2) ..SPLP (STOP LP-20 OUTPUT)
3596 ;
3597 ; 3) ..AKLP (ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)
3598 ;
3599 ; 4) ..PTLP (PUT BLOCK IN THREADED OUTPUT LIST)
3600 ;
3601 ; 5) ..DOLP (INITIATE LP-20 TRANSFER)
3602 ;
3603 .SBTTL ..STLP (START LP-20 OUTPUT)
3604 ;
3605 ;+
3606 ;
3607 ; ..STLP IS CALLED ONLY FROM THE QUEUED PROTOCOL
3608 ; TASK TO PERFORM A FUNCTION ON THE SPECIFIED LP. THE
3609 ; FOLLOWING FUNCTIONS ARE RECOGNIZED HERE (FUNCTION CODE
3610 ; IN HIGH BYTE OF T.HCBC OF THREAD BLOCK):
3611 ; BC.STR STRING DATA
3612 ; BC.RDS RETURN DEVICE STATUS
3613 ; BC.HDS HERE IS DEVICE STATUS
3614 ; BC.SDS SPECIAL DEVICE OPERATION, FIRST WORD IS FUNCTION:
3615 ; 1 -- SET PAGE COUNTER
3616 ; BC.LDR LOAD TRANSLATION RAM
3617 ; BC.LDV LOAD VERTICAL FORMAT
3618 ;
3619 ; CALLED FROM TASK LEVEL
3620 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 40-1
..STLP (START LP-20 OUTPUT)
3621 ; CALLING SEQUENCE:
3622 ; R0 -- ADDRESS OF THREAD BLOCK TO PROCESS
3623 ; R2 -- ADDRESS OF LPTBL ENTRY FOR THIS LP
3624 ;
3625 ; EXIT CONDITIONS:
3626 ;
3627 ; NO REGISTERS MODIFIED
3628 ;
3629 ;-
3630 ;
3631 .ENABLE LSB
3632 011010 ..STLP::
3633 011010 SAVE <R1,R3,R4>
011010 010146 MOV R1,-(SP)
011012 010346 MOV R3,-(SP)
011014 010446 MOV R4,-(SP)
3634 011016 022702 000000C CMP #LPTBL+<L$$P20*LPSIZE>,R2 ;THIS ONE OF US?
3635 011022 101434 BLOS 30$ ;NO-- JUST SLIP AWAY
3636 011024 052712 000400 BIS #LP.F10,(R2) ;NOTE THAT THIS IS A FROM-10 REQUEST
3637 011030 116004 000001G MOVB T.HCBC+1(R0),R4 ;GET FUNCTION CODE
3638 011034 105060 000001G CLRB T.HCBC+1(R0) ; AND CLEAR IT
3639 011040 012703 011060' MOV #BCFTAB,R3 ;POINT TO FUNCTION DISPATCH TABLE
3640 011044 10$:
3641 011044 112301 MOVB (R3)+,R1 ;GET A DISPATCH ADDRESS
3642 011046 001413 BEQ BCFILF ;END-- ASSUME RETURN DEVICE STATUS
3643 011050 122304 CMPB (R3)+,R4 ;MATCH FUNCTION?
3644 011052 001374 BNE 10$ ;NO-- LOOP TILL WE FIND FUNCTION
3645 011054 000161 011060' JMP BCFTAB(R1) ;PERFORM FUNCTION
3646 ;
3647 011060 BCFTAB:
3648 011060 124 000G .BYTE BCFSTR-BCFTAB,BC.STR
3649 011062 016 000G .BYTE BCFRDS-BCFTAB,BC.RDS
3650 011064 062 000G .BYTE BCFHDS-BCFTAB,BC.HDS
3651 011066 042 000G .BYTE BCFSDO-BCFTAB,BC.SDS
3652 011070 102 000G .BYTE BCFLDR-BCFTAB,BC.LDR
3653 011072 110 000G .BYTE BCFLDV-BCFTAB,BC.LDV
3654 011074 000 .BYTE 0
3655 .EVEN
3656 ;
3657 ; ILLEGAL FUNCTION
3658 ;
3659 011076 BCFILF:
3660 ; BR BCFRDS ;ILLEGAL FUNCTION-- JUST SEND STATUS FOR NOW
3661 ;
3662 ; RETURN DEVICE STATUS
3663 ;
3664 011076 BCFRDS:
3665 011076 052712 040000 BIS #LP.SST,(R2) ;NOTE TO SEND STATUS NOW
3666 011102 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;TELLL LP TASK TO DO SOMETHING
3667 011110 CALL ..DSEV ;MAKE A SIGNIFICANT EVENT HAPPEN
011110 004737 000000G JSR PC,..DSEV
3668 ;
3669 ; THREAD BLOCK DONE-- DEALLOCATE
3670 ;
3671 011114 30$:
3672 011114 CALL ..DECN ;DEALLOCATE THREAD BLOCK
011114 004737 000000G JSR PC,..DECN
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 40-2
..STLP (START LP-20 OUTPUT)
3673 011120 000433 BR 90$ ;RESTORE AND RETURN
3674 ;
3675 ; SPECIAL DEVICE OPERATION
3676 ;
3677 011122 BCFSDO:
3678 011122 016001 000000G MOV T.HCAD(R0),R1 ;GET DATA ADDRESS
3679 011126 022711 000001 CMP #1,(R1) ;SET PAGE COUNTER?
3680 011132 001361 BNE BCFILF ;NO-- ILLEGAL FUNCTION
3681 011134 012701 010000 MOV #TB.LPC,R1 ;SAY SET PAGE COUNTER
3682 011140 000415 BR 40$ ;QUEUE IT UP
3683 ;
3684 ; HERE IS DEVICE STATUS
3685 ;
3686 011142 BCFHDS:
3687 011142 016001 000000G MOV T.HCAD(R0),R1 ;GET ADDRESS
3688 011146 032711 000040 BIT #DV.EOF,(R1) ;EOF FOR LP?
3689 011152 001751 BEQ BCFILF ;NO-- ILLEGAL STATUS
3690 011154 012701 020000 MOV #TB.EOF,R1 ;YES-- SET FUNCTION
3691 011160 000405 BR 40$ ;SEND IT TO QUEUE
3692 ;
3693 ; TRANSLATION RAM DATA
3694 ;
3695 011162 BCFLDR:
3696 011162 012701 004000 MOV #TB.RMD,R1 ;NOTE RAM DATA
3697 011166 000402 BR 40$ ;SEND TO QUEUE
3698 ;
3699 ; VFU DATA
3700 ;
3701 011170 BCFLDV:
3702 011170 012701 002000 MOV #TB.VFD,R1 ;NOTE RAM DATA
3703 ; BR 40$ ;SEND TO QUEUE
3704 ;
3705 ; SPECIAL QUEUE ENTRY-- MARK BY TB.DON + FLAGS IN T.HCBC OF THREAD BLOCK
3706 ;
3707 011174 40$:
3708 011174 052701 100000 BIS #TB.DON,R1 ;FLAG BLOCK DONE TO INTERRUPT SERVICE
3709 011200 050160 000000G BIS R1,T.HCBC(R0) ;SET SPECIFIED FUNCTION
3710 ; BR BCFSTR ;PUT IN QUEUE
3711 ;
3712 ; QUEUE THREAD BLOCK TO LP-20
3713 ;
3714 011204 BCFSTR:
3715 011204 CALL ..PTLP ;SEND TO LP OR QUEUE UP
011204 004737 011452' JSR PC,..PTLP
3716 ;
3717 ; ALL DONE
3718 ;
3719 011210 90$:
3720 011210 RESTORE ;UN-SAVE REGISTRS
011210 012604 MOV (SP)+,R4
011212 012603 MOV (SP)+,R3
011214 012601 MOV (SP)+,R1
3721 011216 RETURN ; FROM ..STLP
011216 000207 RTS PC
3722 ;
3723 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 41
..SPLP (STOP LP-20 OUTPUT)
3725 .SBTTL ..SPLP (STOP LP-20 OUTPUT)
3726 ;
3727 ;+
3728 ;
3729 ; ..SPLP IS CALLED TO STOP OUTPUT TO THE LP-20 IMMEDIATELY
3730 ; AND RESET THE LP-20. THIS ROUTINE FIRST CLEARS THE LP-20
3731 ; 'GO' BIT (TO STOP OUTPUT), THEN THREADS THROUGH THE OUTPUT LIST
3732 ; AND MARKS THE THREAD BLOCKS AS DONE BY SETTING T.HCBC TO IE.ABO.
3733 ;
3734 ; QUEUE I/O REQUESTS ARE GIVEN THE ERROR RETURN 'IE.ABO'
3735 ; (OPERATION ABORTED) WHEN THE THREAD BLOCKS ARE PROCESSED BY THE TASK.
3736 ;
3737 ; CALLED FROM TASK LEVEL
3738 ;
3739 ; CALLING SEQUENCE:
3740 ; R2 -- POINTER TO LPTBL ENTRY FOR THIS LP
3741 ; CALL ..SPLP
3742 ;
3743 ; EXIT CONDITONS:
3744 ;
3745 ; NO REGISTERS MODIFIED
3746 ;
3747 ;-
3748 ;
3749 011220 ..SPLP::
3750 011220 SAVE <R0,R1,R3> ;SAVE MISC. REGISTERS
011220 010046 MOV R0,-(SP)
011222 010146 MOV R1,-(SP)
011224 010346 MOV R3,-(SP)
3751 011226 022702 000000C CMP #LPTBL+<L$$P20*LPSIZE>,R2 ;THIS ONE OF US?
3752 011232 101453 BLOS 99$ ;NO-- JUST LEAVE
3753 011234 042712 004000 BIC #LP.WAT,(R2) ;NO LONGER WAITING FOR ACK
3754 011240 005762 000000G TST LPRMA(R2) ;RAM DATA LOAD IN PROGRESS??
3755 011244 001402 BEQ 4$ ;NO-- GO ON
3756 011246 052712 001000 BIS #LP.LIP,(R2) ;YES-- FLAG TO REMOVE IT AT LPTASK
3757 011252 4$:
3758 011252 005762 000000G TST LPITH(R2) ;I/O IN PROGRESS?
3759 011256 001403 BEQ 5$ ;NO-- JUST GO ON
3760 011260 042777 000040 000000G BIC #EF.LPW,@LPEVFG ;YES-- MARK TO TIME OUT LP-20 WHEN WE STOP IT
3761 011266 5$:
3762 011266 005062 000000G CLR LPITH(R2) ;CLEAR INTERRUPT LEVEL THREAD PTR
3763 011272 016203 000000G MOV LPCSA(R2),R3 ;GET EXTERNAL PAGE ADDR
3764 011276 001405 BEQ 6$ ;NON-EX LP
3765 011300 012713 001102 MOV #RSTERR+INTENB+PARENB,(R3) ;STOP LP-20
3766 011304 016363 000010 000010 MOV LPPCTR(R3),LPPCTR(R3) ;RESET PAGZRO, TOO
3767 011312 6$:
3768 011312 016201 000000G MOV LPTHD(R2),R1 ;GET POINTER TO CURRENT THREADED LIST
3769 ;
3770 ; LOOP THROUGH THIS LIST AND MARK THE THREAD BLOCKS AS DONE
3771 ;
3772 011316 10$:
3773 011316 010100 MOV R1,R0 ;GET ADDR OF NEXT BLOCK
3774 011320 001413 BEQ 90$ ;THAT'S THE END
3775 011322 011001 MOV @R0,R1 ;GET ADDR OF NEXT NEXT BLOCK
3776 011324 052760 040000 000000G BIS #TB.ABO,T.HCBC(R0) ;MARK BLOCK AS ABORTED
3777 011332 005760 000000G TST T.HCBC(R0) ;THIS THREAD BLOCK ALREADY DONE?
3778 011336 002767 BLT 10$ ;YES-- LEAVE IT ALONE
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 41-1
..SPLP (STOP LP-20 OUTPUT)
3779 011340 012760 140361 000000G MOV #TB.DON!TB.ABO!<IE.ABO&LOBYTE>,T.HCBC(R0) ;MARK AS DONE, ABORTED
3780 011346 000763 BR 10$ ;LOOP FOR ALL THINGS IN LIST
3781 ;
3782 ; ALL DONE WITH LIST
3783 ;
3784 011350 90$:
3785 011350 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;SAY I/O DONE TO LP TASK (RATHER... ABORTED)
3786 011356 CALL ..DSEV ;MAKE A SIGNIFICANT EVENT HAPPEN
011356 004737 000000G JSR PC,..DSEV
3787 011362 99$:
3788 011362 RESTORE ;RESTORE SAVE REGISTERS
011362 012603 MOV (SP)+,R3
011364 012601 MOV (SP)+,R1
011366 012600 MOV (SP)+,R0
3789 011370 RETURN ;RETURN FORM ..SPLP
011370 000207 RTS PC
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 42
..AKLP (ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)
3791 .SBTTL ..AKLP (ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)
3792 ;
3793 ;+
3794 ;
3795 ; ..AKLP IS CALLED BY ACKNOWLDGE OUTPUUT REQUEST FROM THE -10.
3796 ; THE LP.WAT FLAG IS CLEARED, AND THE CONDITION FLAGS CHRINT, PAGZRO
3797 ; ARE RESET. OUTPUT IS RESUMED WHEN LP TASK RUNS.
3798 ;
3799 ; CALLED AT TASK LEVEL
3800 ;
3801 ; CALLING SEQUENCE:
3802 ; R2 -- POINTER TO LPTBL ENTRY FOR THIS LP
3803 ;
3804 ; EXIT CONDITIONS:
3805 ;
3806 ; NO REGISTERS MODIFIED
3807 ;
3808 ;-
3809 ;
3810 011372 ..AKLP::
3811 011372 SAVE <R3> ;SAVE USED R'S
011372 010346 MOV R3,-(SP)
3812 011374 022702 000000C CMP #LPTBL+<L$$P20*LPSIZE>,R2 ;THIS AN LP???
3813 011400 101422 BLOS 90$ ;NO-- JUST LEAVE
3814 011402 042712 004000 BIC #LP.WAT,(R2) ;NO LONGER WAITING
3815 011406 005762 000000G TST LPITH(R2) ;LP GOING?
3816 011412 001015 BNE 90$ ;YES-- JUST GO AWAY
3817 011414 016203 000000G MOV LPCSA(R2),R3 ;GET EXT PAGE ADDR OF THIS LP
3818 011420 001405 BEQ 10$ ;NON-EX LP-- JUST GO AWAY
3819 011422 016363 000010 000010 MOV LPPCTR(R3),LPPCTR(R3) ;RESET PAGZRO
3820 011430 042713 020000 BIC #CHRINT,(R3) ; AND CHRINT
3821 011434 10$:
3822 011434 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;START LP TASK
3823 011442 CALL ..DSEV ; . .
011442 004737 000000G JSR PC,..DSEV
3824 011446 90$:
3825 011446 RESTORE ; USED R'S
011446 012603 MOV (SP)+,R3
3826 011450 RETURN ; FROM ..AKLP
011450 000207 RTS PC
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 43
..PTLP (PUT BLOCK IN THREADED OUTPUT LIST)
3828 .SBTTL ..PTLP (PUT BLOCK IN THREADED OUTPUT LIST)
3829 ;
3830 ;+
3831 ;
3832 ; ..PTLP IS CALLED TO SEND A BUFFER TO THE LP-20. THE
3833 ; BUFFER IS EITHER OUTPUT IMMEDIATELY OR, IF THE LP IS NOT IDLE,
3834 ; ADDED TO THE END OF THIS LP'S THREADED OUTPUT LIST.
3835 ;
3836 ; CALLED FROM TASK LEVEL
3837 ;
3838 ; CALLING SEQUENCE:
3839 ; R0 -- ADDRESS OF THREAD BLOCK FOR THIS BUFFER
3840 ; R2 -- POINTER TO LPTBL FOR THIS LP
3841 ; CALL ..PTLP
3842 ;
3843 ; EXIT CONDITIONS:
3844 ;
3845 ; NO REGISTERS MODIFIED
3846 ;
3847 ;-
3848 ;
3849 011452 ..PTLP::
3850 011452 SAVE <R1,R3> ;SAVE USED REGISTERS
011452 010146 MOV R1,-(SP)
011454 010346 MOV R3,-(SP)
3851 011456 005010 CLR @R0 ;MARK END OF LIST
3852 011460 012762 000012 000000G MOV #LPRTRY,LPRTY(R2) ;RESET RETRY COUNTER
3853 011466 016203 000000G MOV LPCSA(R2),R3 ;GET LP EXTERNAL PAGE ADDRESS
3854 011472 001404 BEQ 5$ ;OOPS-- NON-EX LP
3855 011474 032713 004000 BIT #ONLINE,(R3) ;OFF-LINE?
3856 011500 001006 BNE 7$ ;NO-- JUST GO ON
3857 011502 000403 BR 6$ ;OFF-LINE-- SEND STATUS
3858 ;
3859 011504 5$:
3860 011504 012760 100277 000000G MOV #TB.DON!<IE.OFL&LOBYTE>,T.HCBC(R0) ;NON-EX-LP-- MARK AS DONE, ERROR
3861 011512 6$:
3862 011512 052712 040000 BIS #LP.SST,(R2) ;TIME TO RING THE -10
3863 011516 7$:
3864 011516 .INH0 ;;LOCK OUT QUEUE'D PROTOCOL TASK
011516 013746 177776 MOV @#PS,-(SP)
011522 112737 000140 177776 MOVB #140,@#PS
3865 011530 016201 000000G MOV LPTHD(R2),R1 ;;GET CURRENT POINTER TO THREADED LIST
3866 011534 001405 BEQ 20$ ;;NONE-- START LP GOING
3867 ;
3868 ; LP BUSY-- MUST FIND END OF THREADED LIST AND PUT THIS BUFFER THERE
3869 ;
3870 011536 10$:
3871 011536 010103 MOV R1,R3 ;;COPY ADDR OF THREAD BLOCK
3872 011540 011301 MOV @R3,R1 ;;GET NEXT THREAD
3873 011542 001375 BNE 10$ ;;NOT END-- KEEP ON LOOKING
3874 011544 010013 MOV R0,@R3 ;;END-- STORE CURRENT THREAD BLOCK AT END
3875 011546 000407 BR 90$ ;;ALL DONE
3876 ;
3877 ; LP IDLE-- START IT GOING ON THIS BUFFER
3878 ;
3879 011550 20$:
3880 011550 010062 000000G MOV R0,LPTHD(R2) ;;STORE START OF THREAD
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 43-1
..PTLP (PUT BLOCK IN THREADED OUTPUT LIST)
3881 011554 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;;TELL LP TASK TO START LP GOING
3882 011562 CALL ..DSEV ;; WITH A SIGNIFICANT EVENT
011562 004737 000000G JSR PC,..DSEV
3883 ;
3884 ; ALL DONE
3885 ;
3886 011566 90$:
3887 011566 .ENB0 ;RE-ENABLE IRPS
011566 004737 000000G JSR PC,..ENB0
3888 011572 RESTORE ;RESTORE SAVED REGISTERS
011572 012603 MOV (SP)+,R3
011574 012601 MOV (SP)+,R1
3889 011576 RETURN ;RETURN FROM ..PTLP
011576 000207 RTS PC
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 44
..DOLP (INITIATE LP-20 TRANSFER)
3891 .SBTTL ..DOLP (INITIATE LP-20 TRANSFER)
3892 ;
3893 ;+
3894 ;
3895 ; ..DOLP IS CALLED TO START AN LP GOING ON A SPECIFIED BUFFER.
3896 ; THE DEVICE RGISTERS ARE SET UP AND 'GO' IS SET TO START THE TRANSFER.
3897 ;
3898 ; IF THE THREAD SPECIFIED IS ZERO, NOTHING IS DONE AND THE
3899 ; LP IS LEFT IDLE.
3900 ;
3901 ; ENTER AT ..DOL1 TO OUTPUT NEXT BUFFER, UNLESS LP.MCH IS SET,
3902 ; IN WHICH CASE THE CURRENT BUFFER IS OUTPUT. THIS IS USUALLY ONLY
3903 ; CALLED WHEN 'DONE' IS SET.
3904 ;
3905 ; CALLED AT INTERRUPT LEVEL (OR WITH INTERRUPTS DISABLED)
3906 ;
3907 ; CALLING SEQUENCE:
3908 ; R0 -- ADDR OF THREAD BLOCK TO OUTPUT (ZERO IF END)
3909 ; R2 -- ADDR OF LPTBL ENTRY FOR THIS LP
3910 ; R3 -- EXTERNAL PAGE ADDRESS FOR THIS LP
3911 ;
3912 ; EXIT CONDITIONS:
3913 ; R0 -- ADDR OF CURRENT THREAD BLOCK
3914 ;
3915 ; NO OTHER REGISTERS MODIFIED
3916 ;
3917 ;-
3918 ;
3919 .ENABLE LSB
3920 011600 ..DOL1::
3921 011600 032712 001000 BIT #LP.LIP,(R2) ;;;LOAD SUPPOSED TO BE IN PROGRESS?
3922 011604 001020 BNE 19$ ;;;YES-- GO BACK TO TASK
3923 011606 032712 010000 BIT #LP.MCH,(R2) ;;;MULTI-CHARACTER OPERATION?
3924 011612 001417 BEQ 20$ ;;;NO-- GET NEXT BUFFER
3925 ;;;YES-- GET (CONTINUE) CURRENT BUFFER
3926 011614 ..DOLP::
3927 011614 10$:
3928 011614 042712 114000 BIC #LP.WAT!LP.MCH!LP.HNG,(R2) ;;;NOT WAITING, AND NOT MULTI-CHAR-ING
3929 011620 010062 000000G MOV R0,LPITH(R2) ;;;SAVE CURRENT BUFFER AS OUR INT-LEVEL BUFFER
3930 011624 001463 BEQ 90$ ;;;GIVE UP IF END
3931 011626 016063 000000G 000006 MOV T.HCBC(R0),LPBCTR(R3) ;;;SAVE BYTE COUNT FOR LP (WILL NEG LATER)
3932 011634 003020 BGT 50$ ;;;NOT DONE-- START OUTPUT
3933 ;
3934 011636 032760 036000 000000G BIT #TB.SFN,T.HCBC(R0) ;;;SPECIAL FUNCTION?
3935 011644 001402 BEQ 20$ ;;;NO-- JUST SET DONE
3936 011646 19$:
3937 011646 005000 CLR R0 ;;;YES-- DON'T GET NEXT THREAD BLOCK
3938 011650 000404 BR 30$ ;;;AND STOP I/O, REQUEST TASK LEVEL CODE
3939 ;
3940 ; THIS THREAD BLOCK DONE-- MARK IT BY -VE T.HCBC, SET I/O DONE
3941 ; EVENT FLAG, AND START NEXT BUFFER.
3942 ;
3943 011652 20$:
3944 011652 012760 100001 000000G MOV #TB.DON!<IS.SUC&LOBYTE>,T.HCBC(R0) ;;;NOTE SUCCESS HERE
3945 011660 011000 MOV @R0,R0 ;;;GET ADDR OF NEXT BUFFER
3946 ;
3947 ; SET I/O DONE, GO ON TO NEXT THREAD BLOCK (ADDR IN R0)
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 10-NOV-81 17:28 PAGE 44-1
..DOLP (INITIATE LP-20 TRANSFER)
3948 ;
3949 011662 30$:
3950 011662 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;;;SET LP I/O DONE EVENT FLAGE
3951 011670 CALL ..DSEV ;;;MAKE A SIGNIFICANT EVENT
011670 004737 000000G JSR PC,..DSEV
3952 011674 000747 BR 10$ ;;;DO NEXT BUFFER
3953 ;
3954 ; SET UP -VE BYTE COUNT AND EXTENDED MEMORY ADDRESS BITS
3955 ;
3956 011676 50$:
3957 011676 016063 000000G 000004 MOV T.HCAD(R0),LPBSAD(R3) ;;;SAVE PHYSICAL ADDR FOR LP
3958 011704 005463 000006 NEG LPBCTR(R3) ;;;MAKE -VE # BYTES TO SEND
3959 011710 042713 000060 BIC #BUSA17+BUSA16,(R3) ;;;CLEAR EXTENDED MEMORY ADDR BITS
3960 011714 005760 000000G TST T.HBCT(R0) ;;;THIS QUEUE I/O REQUEST?
3961 011720 001023 BNE 59$ ;;;NO-- ADDRESS IS IN LOW CORE
3962 011722 116062 177775 000000G MOVB T.HVFC(R0),LPMCB(R2) ;;;SET TO PRINT VERTICAL FORMAT CHARACTER
3963 011730 001415 BEQ 58$ ;;;NONE-- JUST START THE LP
3964 011732 105060 177775 CLRB T.HVFC(R0) ;;;YES-- CLEAR IT NOW
3965 011736 012763 000000G 000004 MOV #LPMCB,LPBSAD(R3) ;;;YES-- POINT TO THE FORMAT CHARACTER
3966 011744 060263 000004 ADD R2,LPBSAD(R3) ;;; FOR THIS LP
3967 011750 012763 177777 000006 MOV #-1,LPBCTR(R3) ;;;ONLY 1 CHARACTER
3968 011756 052712 010000 BIS #LP.MCH,(R2) ;;;NOTE THAT WE ARE WORKING FROM LPMCB
3969 011762 000402 BR 59$ ;;;START THE LP GOING
3970 ;
3971 011764 58$:
3972 011764 156013 177774 BISB T.HEMA(R0),(R3) ;;;SET EXTENDED MEMORY BITS
3973 ;
3974 ; SET INTENB, PARENB, AND GO TO START LP GOING ON THIS BUFFER
3975 ;
3976 011770 59$:
3977 011770 052713 000103 BIS #INTENB+PARENB+GO,(R3) ;;;START LP GOING
3978 ;
3979 ; ALL DONE-- RETURN
3980 ;
3981 011774 90$:
3982 011774 RETURN ;;;RETURN FROM ..DOLP/..DOL1
011774 000207 RTS PC
3983 .DSABLE LSB
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 45
..DOLP (INITIATE LP-20 TRANSFER)
3985 .TITLE CRDRV (CD-11 DRIVER FOR RSX10F)
3986 .SBTTL TITLE PAGE
3987 .IDENT /001000/
3988 ;
3989 ; COPYRIGHT (C) 1975, 1978 BY
3990 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
3991 ;
3992 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
3993 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
3994 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
3995 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
3996 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
3997 ;
3998 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
3999 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4000 ; CORPORATION.
4001 ;
4002 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4003 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4004 ;
4005 ; MODULE: COMMON DEFINITIONS
4006 ;
4007 ; VERSION: 01-00
4008 ;
4009 ; AUTHOR: TOM PORCHER
4010 ;
4011 ; DATE: 25-SEP-75
4012 ;
4013 ;
4014 ; THIS MODULE CONTAINS:
4015 ;
4016 ; 1) COMMON PARAMETERS AND MACROS
4017 ;
4018 ; 2) CD-11 DEVICE REGISTER DEFINITIONS
4019 ;
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 46
COMMON PARAMETERS AND MACROS
4021 .SBTTL COMMON PARAMETERS AND MACROS
4022 ;
4023 ; MISC. MCALLS
4024 ;
4025 .MCALL MRKT$,SPRA$S,SVTK$S,WTLO$S,WTSE$S,WSIG$S
4026 .MCALL DIR$,$DEF,CALL,RETURN,.INH,.ENB,PUSH,POP,.STKM
4027 011776 $DEF
4028 .ENABLE AMA
4029 .LIST MEB
4030 ;
4031 ; PARAMETERS
4032 ;
4033 000001 C$$D11= 1 ;ONLY 1 CD-11
4034 ;
4035 ; EVENT FLAGS
4036 ;
4037 000001 E.FCRC= 1 ;CD-11 MARK-TIME REQUEST
4038 000001 EF.CRC=BIT0
4039 000002 E.FCRD= 2 ;I/O DONE FROM INTERRUPT LEVEL
4040 000002 EF.CRD=BIT1
4041 000003 E.FCRS= 3 ;BUFFER AVAILABLE FOR STATUS
4042 000004 EF.CRS=BIT2
4043 000004 E.FCRB= 4 ;DATA BUFFER AVAILABLE
4044 000010 EF.CRB=BIT3
4045 ;
4046 ;
4047 000074 .CYLTM=60.
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 47
CD-11 DEVICE REGISTER BIT DEFINITIONS
4049 .SBTTL CD-11 DEVICE REGISTER BIT DEFINITIONS
4050 ;
4051 ;
4052 ;CDST== 177160 ;CONTROL/STATUS REGISTER
4053 100000 CDSERR= BIT15
4054 040000 CDSRCK= BIT14
4055 020000 CDSEOF= BIT13
4056 010000 CDSOFL= BIT12
4057 004000 CDSDER= BIT11
4058 002000 CDSDLT= BIT10
4059 001000 CDSNXM= BIT9
4060 000400 CDSPWC= BIT8
4061 000200 CDSRDY= BIT7
4062 000100 CDSIEN= BIT6
4063 000040 CDSB17= BIT5
4064 000020 CDSB16= BIT4
4065 000010 CDSTOL= BIT3
4066 000004 CDSHEM= BIT2
4067 000002 CDSPAK= BIT1
4068 000001 CDSRED= BIT0
4069 ;CDCC== 177162 ;COLUMN COUNT REGISTER
4070 ;CDBA== 177164 ;BUS ADDRESS BITS 15-0
4071 ;CDDB== 177166 ;DATA BUFFER REGISTER
4072 ;AFTER DATA TRANSFERS (CDSRDY= 1):
4073 040000 CDBRCK= BIT14
4074 020000 CDBPCK= BIT13
4075 010000 CDBSCK= BIT12
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 48
CD-11 DRIVER COMMON DATA MODULE
4077 .SBTTL CD-11 DRIVER COMMON DATA MODULE
4078 ;
4079 ; COPYRIGHT (C) 1975, 1978 BY
4080 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
4081 ;
4082 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
4083 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
4084 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
4085 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
4086 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
4087 ;
4088 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
4089 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4090 ; CORPORATION.
4091 ;
4092 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4093 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4094 ;
4095 ; MODULE: CD-11 DRIVER COMMON DATA
4096 ;
4097 ; VERSION: 01-00
4098 ;
4099 ; AUTHOR: TOM PORCHER
4100 ;
4101 ; DATE: 25-AUG-75
4102 ;
4103 ;
4104 ; THIS MODULE CONTAINS:
4105 ;
4106 ; 1) COMMON DATABASE DEFINITIONS
4107 ;
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 49
COMMON DATABASE DEFINITIONS
4109 .SBTTL COMMON DATABASE DEFINITIONS
4110 ;
4111 ;
4112 ; CR TASK STACK HEADER
4113 ;
4114 011776 CRHD:: .STKM 0,0,0,0,0,0,0,CRINI,174000,CRSTK
012044 000000 000000 000000 .WORD 0,0,0,0
012052 000000
012072 174000 012360' 012256' .WORD 174000,CRINI,CRSTK
012126 000005 .WORD 5
012130 000000G .WORD TTPEN
012132 000000 .WORD 0
012134 000000 .WORD 0
012136 000000 .WORD 0
012140 000000 .WORD 0
012142 000000 .WORD 0
012144 000000 .WORD 0
012146 000000 .WORD 0
012150 000000 .WORD 0
012152 000000 .WORD 0
012154 000000 .WORD 0
012256 000000 .WORD 0
012260 000000 .WORD 0
012262 000000 .WORD 0
012264 000000 .WORD 0
012266 000000 .WORD 0
012270 000000 .WORD 0
012272 012360' .WORD CRINI
012274 174000 .WORD 174000
4115 ;
4116 ;STATUS BITS:
4117 100000 CR.HNG= BIT15 ;CR IS HUNG, I.E. NO INPUT HAS OCCURED
4118 ; IN 10 SECONDS. SET AND CHECKED BY
4119 ; MARK-TIME SERVICE, CLEARED BY I/O
4120 ; DONE AT INTERRUPT.
4121 040000 CR.SST= BIT14 ;A CHANGE IN DEVICE STATUS HAS OCCURED,
4122 ; OR THE -10 HAS REQUESTED THE STATUS OF
4123 ; THE CR.
4124 020000 CR.IOP= BIT13 ;I/O IN PROGRESS. SET WHEN READ CARD STARTED,
4125 ; CLEARED WHEN DONE INTERRUPT OCCURS.
4126 010000 CR.IOD= BIT12 ;I/O DONE FROM INTERRUPT LEVEL. SET WHEN A
4127 ; DATA BUFFER IS READY TO BE SENT TO THE -10.
4128 004000 CR.ACK= BIT11 ;ACKNOWLEDGE RECEIVED. READ NEXT CARD.
4129 ; SET WHEN ACK RECEIVED FROM -10 (..AKCR).
4130 002000 CR.RHN= BIT10 ;READER HUNG DURING READ. SET BY MKT ROUTINE
4131 ; TESTED AND CLEARED BY SSTSCR
4132 001000 CR.NXD= BIT9 ;NON-EX CD-11. SET BY INITCR, CHECKED
4133 ; BEFORE TRANSFER STARTED.
4134 000400 CR.NSF= BIT8 ;NOT STACKER FULL. SET WHEN ANY OTHER ERROR
4135 ; CONDITION IS SET.
4136 ;
4137 ; DIRECTIVE PARAMETER BLOCKS
4138 ;
4139 012276 CRMRKT: MRKT$ E.FCRC,10.*.CYLTM,10.*.CYLTM ;MARK-TIME REQUEST FOR 10 SECONDS
012276 027 005 .BYTE 23.,5
012300 000001 .WORD E.FCRC
012302 001130 .WORD 10.*.CYLTM
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 49-1
COMMON DATABASE DEFINITIONS
012304 001130 .WORD 10.*.CYLTM
012306 000000 .WORD
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 50
CD-11 DRIVER TASK MODULE
4141 .SBTTL CD-11 DRIVER TASK MODULE
4142 ;
4143 ; COPYRIGHT (C) 1975, 1978 BY
4144 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
4145 ;
4146 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
4147 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
4148 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
4149 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
4150 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
4151 ;
4152 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
4153 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4154 ; CORPORATION.
4155 ;
4156 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4157 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4158 ;
4159 ; MODULE: CD-11 DRIVER TASK
4160 ;
4161 ; VERSION: 14-45
4162 ;
4163 ; AUTHOR: TOM PORCHER
4164 ;
4165 ; DATE: 25-AUG-75
4166 ;
4167 ;
4168 ; THIS MODULE CONTAINS:
4169 ;
4170 ; 1) TASK LEVEL SERVICE FOR CD-11
4171 ;
4172 ; TCO 4.1.1105 11-MAR-80 R. BELANGER CHANGE "EF.PR1" RECOGNITION
4173 ; TCO 5.1566 12-OCT-81 S. LEAPLINE CLEAR CREXP IF DEVICE DOES NOT EXIST
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 51
TASK INITIALIZATION
4175 .SBTTL TASK INITIALIZATION
4176 ;
4177 ; SST VECTOR TABLE
4178 ;
4179 012310 012312' CRSSTV: .WORD CRTRP4 ;WHERE TO GO ON TRAP TO 4
4180 ;
4181 ; HERE ON TRAP TO 4, HOPEFULLY JUST NON-EX CR
4182 ;
4183 012312 021627 013026' CRTRP4: CMP (SP),#CRDINT ;FROM MARK-TIME?
4184 012316 001404 BEQ 10$ ;YES-- OK
4185 012320 021627 013556' CMP (SP),#CRDCLR ;OR FROM INIT?
4186 012324 001401 BEQ 10$ ;YES-- ALSO OK
4187 012326 000004 IOT ;***** NO, NOT OUR T04 *****
4188 ;
4189 012330 005037 000000G 10$: CLR CREXP ; [5.1566] CLEAR THE EXTERNAL PAGE ADDRESS
4190 012334 052737 001000 000000G BIS #CR.NXD,CRSTS ;SAY NON-EX CR
4191 012342 052766 000001 000002 BIS #BIT0,2(SP) ;SET THE CARRY TO THE SST
4192 012350 000002 RTI ;RETURN TO INTERRPUTED ROUTINE
4193 ;
4194 ; HERE ON POWER-UP AST
4195 ;
4196 012352 CRPWUP: CALL INITCR ;RESET THE CR
012352 004737 013542' JSR PC,INITCR
4197 012356 000002 RTI ;RETURN FROM AST
4198 ;
4199 ; HERE TO START CR TASK
4200 ;
4201 012360 013737 000000G 000000G CRINI: MOV .CRTSK,CREVFG ;GET ADDRESS OF OUR TASK'S ENTRY
4202 012366 062737 000020 000000G ADD #A.EF,CREVFG ;MAKE THAT ADDRESS OF OUR EVENT FLAGS
4203 012374 052777 000014 000000G BIS #EF.CRB!EF.CRS,@CREVFG ;SAY OUR BUFFERS ARE AVAILABLE
4204 012402 DIR$ #CRMRKT ;SETUP FOR 10-SECOND MARK-TIME'S
012402 012746 012276' MOV #CRMRKT,-(SP)
012406 104375 EMT 375
4205 012410 SVTK$S #CRSSTV,#1 ;SETUP FOR TRAP-TO-4 RECOGNITION
012410 012746 000001 MOV #1,-(SP)
012414 012746 012310' MOV #CRSSTV,-(SP)
012420 012746 MOV (PC)+,-(SP)
012422 071 003 .BYTE 57.,3
012424 104375 EMT 375
4206 012426 SPRA$S #CRPWUP ;SETUP FOR POWER-UP AST
012426 012746 012352' MOV #CRPWUP,-(SP)
012432 012746 MOV (PC)+,-(SP)
012434 155 002 .BYTE 109.,2
012436 104375 EMT 375
4207 012440 CALL INITCR ;INITIALIZE CD-11 AND TABLES
012440 004737 013542' JSR PC,INITCR
4208 ; BR CRLOOP ;FALL INTO PROCESSING LOOP
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 52
CRLOOP (MAIN PROCESSING LOOP)
4210 .SBTTL CRLOOP (MAIN PROCESSING LOOP)
4211 ;
4212 ; WAIT FOR EVENT FLAGS EF.CRC (10 SEC MARK-TIME), EF.CRD (I/O DONE).
4213 ;
4214 012444 CRLOOP: WTLO$S 1,#EF.CRC!EF.CRD ;WAIT FOR FLAGS
012444 012746 000003 MOV #EF.CRC!EF.CRD,-(SP)
012450 012746 000001 MOV #1,-(SP)
012454 012746 MOV (PC)+,-(SP)
012456 053 003 .BYTE 43.,3
012460 104375 EMT 375
4215 ;
4216 012462 .INH ;;;A FLAG WAS SET-- LOCK OUT INTERRUPTS
012462 013746 177776 MOV PS,-(SP)
012466 112737 000340 177776 MOVB #PR7,@#PS ;;
4217 012474 017737 000000G 000000G MOV @CREVFG,CRCEVF ;;;GET OUR CURRENT EVENT FLAGS
4218 012502 042777 000003 000000G BIC #EF.CRC!EF.CRD,@CREVFG ;;;CLEAR THE FLAGS WE WAITED FOR
4219 012510 .ENB ;INTERRUPTS: ON!
012510 012637 177776 MOV (SP)+,@#PS ;;
4220 012514 005737 000000G TST .CRPFL ;POWER FAIL?
4221 012520 001404 BEQ 10$ ;NO -- FORGET IT
4222 012522 CALL INITCR ;YES -- INIT CR
012522 004737 013542' JSR PC,INITCR
4223 012526 005037 000000G CLR .CRPFL
4224 012532 10$:
4225 ;
4226 ; SEE IF THIS IS EF.CRD (I/O DONE), AND FIND OUT WHY IT WAS SET.
4227 ;
4228 012532 032737 000002 000000G CRIOD: BIT #EF.CRD,CRCEVF ;THIS EF.CRD?
4229 012540 001516 BEQ 90$ ;NO-- TRY FOR MARK-TIME
4230 ;
4231 ; SEE IF A BUFFER IS READY TO BE SENT TO THE -10 (CR.IOD SET BY INTERRUPT SERVICE)
4232 ;
4233 012542 032737 010000 000000G BIT #CR.IOD,CRSTS ;WE FINISH A TRANSFER?
4234 012550 001430 BEQ 20$ ;NO-- GO ON
4235 012552 012700 000000G MOV #CRBUFF,R0 ;YES-- GET ADDRESS OF BUFFER
4236 ;
4237 ; WE MUST SEND A DATA BUFFER TO THE -10. SET UP FOR ..STIN:
4238 ; R0 -- ADDRESS OF BUFFER. FIRST WORD IS (LOW BYTE) BYTE COUNT
4239 ; OF BUFFER (NOT INCLUDING HEADER WORD), (HIGH BYTE) UNIT #.
4240 ; R1 -- BIT15+ FUNCTION CODE (BC.STR-- STRING DATA)
4241 ; R2 -- EVENT FLAG TO SET WHEN DONE
4242 ; R3 -- DEVICE CODE (D.CCDR)
4243 ;
4244 012556 105040 CLRB -(R0) ;HIGH BYTE HEADER: UNIT # (ALWAYS 0)
4245 012560 112740 000000G MOVB #CRBFLN,-(R0) ;LOW BYTE HEADER: SIZE OF BUFFER
4246 012564 012701 100000G MOV #BIT15+BC.STR,R1 ;FUNCTION CODE: STRING DATA (INDIRECT FLAVOR)
4247 012570 012702 000004 MOV #E.FCRB,R2 ;EVENT FLAG TO SET WHEN DONE
4248 012574 012703 000000G MOV #D.CCDR,R3 ;DEVICE CODE: CDR
4249 012600 042777 000010 000000G BIC #EF.CRB,@CREVFG ;ASSUME SUCCESS
4250 012606 CALL ..STIN ;SEND TO -10
012606 004737 000000G JSR PC,..STIN
4251 012612 103404 BCS 10$ ;GIVE UP-- PRIMARY PROTOCOL (DDT)
4252 012614 042737 112400 000000G BIC #CR.IOD!CR.HNG!CR.RHN!CR.NSF,CRSTS ;OK-- NO LONGER BUFFER TO SEND
4253 012622 000403 BR 20$ ;GO ON
4254 ;
4255 012624 052777 000010 000000G 10$: BIS #EF.CRB,@CREVFG ;..STIN FAILED-- BUFFER STILL AVAILABLE
4256 ;
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 52-1
CRLOOP (MAIN PROCESSING LOOP)
4257 ; SEE IF STATUS IS TO BE SENT TO -10, EITHER BECAUSE OF A CHANGE IN
4258 ; DEVICE STATUS OR A REQUEST FROM THE -10.
4259 ;
4260 012632 032737 040000 000000G 20$: BIT #CR.SST,CRSTS ;TIME TO SEND DEVICE STATUS?
4261 012640 001402 BEQ 30$ ;NO-- GO ON
4262 012642 CALL SSTSCR ;YES-- SEND SUCH TO -10
012642 004737 013136' JSR PC,SSTSCR
4263 ;
4264 ; SEE IF -10 WANTS US TO READ NEXT CARD, BY CR.ACK SET.
4265 ;
4266 012646 032737 004000 000000G 30$: BIT #CR.ACK,CRSTS ;-10 WANT A CARD?
4267 012654 001450 BEQ 90$ ;NO-- ALL DONE
4268 012656 032737 030000 000000G BIT #CR.IOP!CR.IOD,CRSTS ;STILL I/O IN PROGRESS?
4269 012664 001044 BNE 90$ ;YES-- COME BACK LATER WHEN WE ARE DONE
4270 012666 042737 106000 000000G BIC #CR.ACK!CR.HNG!CR.RHN,CRSTS ;YES-- NO LONGER WANTING
4271 012674 032737 001000 000000G BIT #CR.NXD,CRSTS ;THIS NON-EX CD-11?
4272 012702 001016 BNE 32$ ;YES-- JUST SEND STATUS
4273 012704 032777 000010 000000G 34$: BIT #EF.CRB,@CREVFG ;BUFFER AVAILABLE TO US YET?
4274 012712 001006 BNE 31$ ;YES-- ALL OK
4275 012714 WSIG$S ;WAIT FOR SOMETHING TO HAPPEN
012714 012746 MOV (PC)+,-(SP)
012716 061 001 .BYTE 49.,1
012720 104375 EMT 375
4276 012722 005737 000002G TST .COMEF+2 ; [4.1.1105] IS PRIMARY PROTOCOL STILL RUNNING ?
4277 012726 100766 BMI 34$ ; [4.1.1105] YES, SEE IF BUFFER IS NOW FREE.
4278 ;
4279 012730 032737 010000 000000G 31$: BIT #CDSOFL,@#CDST ;CD-11 OFF-LINE?
4280 012736 001403 BEQ 33$ ;NO-- LET'S START TRANSFER
4281 012740 32$: CALL SSTSCR ;YES-- TELL -10
012740 004737 013136' JSR PC,SSTSCR
4282 012744 000414 BR 90$ ; AND GO AWAY FOR NOW
4283 ;
4284 ; START TRNSFER OF CARD TO CRBUFF
4285 ;
4286 012746 052737 020000 000000G 33$: BIS #CR.IOP,CRSTS ;SAY I/O NOW IN PROGRESS
4287 012754 012737 000000C 000000G MOV #-<CRBFLN/2>,@#CDCC ;INDICATE TO READ 80. COLUMNS
4288 012762 012737 000000G 000000G MOV #CRBUFF,@#CDBA ; INTO CRBUFF
4289 012770 012737 000101 000000G MOV #CDSIEN!CDSRED,@#CDST ;START CARD GOING
4290 ;
4291 ; ALL DONE WITH EF.CRD
4292 ;
4293 012776 90$:
4294 ;
4295 ; CHECK FOR MARK-TIME REQUEST (EF.CRC SET), THEN DO HUNG CHECK IF SO.
4296 ;
4297 .ENABLE LSB
4298 012776 032737 000001 000000G CRMKT: BIT #EF.CRC,CRCEVF ;MARK-TIME REQUEST EVENT FLAG SET?
4299 013004 001452 BEQ 90$ ;NO-- GO ON
4300 013006 032737 001000 000000G BIT #CR.NXD,CRSTS ;NON-EX CR?
4301 013014 001011 BNE 9$ ;YES-- SKIP INT-ENB STUFF
4302 013016 000241 CLC ;IN CASE OF TRAP
4303 013020 032737 000100 000000G BIT #CDSIEN,@#CDST ;INT-ENB STILL SET?
4304 013026 103404 CRDINT: BCS 9$ ;NON-EX CR-- GO ON
4305 013030 001003 BNE 9$ ;YES-- SKIP THE SET
4306 013032 052737 000100 000000G BIS #CDSIEN,@#CDST ;YES-- MAKE SURE WE STILL HAVE INT-ENB
4307 013040 032737 074000 000000G 9$: BIT #CR.SST!CR.IOD!CR.ACK!CR.IOP,CRSTS ;YES-- STUFF FOR US TO DO?
4308 013046 001426 BEQ 30$ ;NO-- IDLE-- CLEAR HUNG FLAG
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 52-2
CRLOOP (MAIN PROCESSING LOOP)
4309 013050 032737 100000 000000G BIT #CR.HNG,CRSTS ;WE BEEN HERE WITHIN 10 SECONDS?
4310 013056 001416 BEQ 20$ ;NO-- SET HUNG FLAG SO WE WILL IN 10 SEC
4311 013060 032737 020000 000000G BIT #CR.IOP,CRSTS ;YES-- WAS I/O IN PROGRESS
4312 013066 001407 BEQ 10$ ;NO-- JUST PROCESS OTHER FLAGS
4313 013070 052737 042000 000000G BIS #CR.RHN!CR.SST,CRSTS ;YES-- SAY READER HUNG
4314 013076 005237 000000G INC CRHUNG ;COUNT # TIMES HUNG
4315 013102 CALL INITCR ;RESET THE CD-11
013102 004737 013542' JSR PC,INITCR
4316 ;
4317 013106 052777 000002 000000G 10$: BIS #EF.CRD,@CREVFG ;SAY TO LOOK AT THE FLAGS AGAIN
4318 ;
4319 013114 052737 100000 000000G 20$: BIS #CR.HNG,CRSTS ;FLAG TO CHECK THIS AGAIN IN 10 SECONDS
4320 013122 000403 BR 90$ ;ALL DONE
4321 ;
4322 013124 042737 102000 000000G 30$: BIC #CR.HNG!CR.RHN,CRSTS ;NOTHING TO DO-- DON'T SAY WE ARE HUNG
4323 ;
4324 ; ALL DONE WITH EF.CRC
4325 ;
4326 013132 000137 012444' 90$: JMP CRLOOP ;BACK TO MAIN LOOP
4327 .DSABLE LSB
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 53
SSTSCR (SEND CD-11 STATUS TO -10)
4329 .SBTTL SSTSCR (SEND CD-11 STATUS TO -10)
4330 ;
4331 ;+
4332 ;
4333 ; SSTSCR IS CALLED WHEN CR.SST IS SET, EITHER BY A CHANGE IN HARDWARE
4334 ; STATUS, OR ON REQUEST FROM THE -10.
4335 ;
4336 ; THE STATUS PACKET IS ASSEMBLED INTO CRSTBK. THE FORMAT OF THIS BLOCK
4337 ; IS AS FOLLOWS:
4338 ;
4339 ; WORD 0 STANDARD BITS (DV.XXX)
4340 ; 1 DEVICE DEPENDENT BITS (DD.XXX)
4341 ; 2 (HIGH BYTE) # BYTES OF DEVICE DEPENDENT INFO (ALWAYS 0)
4342 ; (LOW BYTE) # BYTES OF DEVICE REGISTERS (ALWAYS 8.)
4343 ; CD-11 DEVICE REGISTERS
4344 ; 3 CDST
4345 ; 4 CDCC
4346 ; 5 CDBA
4347 ; 6 CDDB
4348 ;
4349 ; THE FOLLOWING BITS ARE USED IN THE STATUS WORDS:
4350 ;
4351 ; DV.NXD NON-EX DEVICE
4352 ; DV.OFL OFF-LINE
4353 ; DV.OIR HARD ERROR (DD.RCK, DD.PCK, DD.SCK)
4354 ; DV.IOP I/O IN PROGRESS (READING A CARD)
4355 ; DV.EOF E-O-F BUTTON PUSHED
4356 ; DV.LOG ERROR LOGGING REQUIRED
4357 ; DV.HNG DEVICE HUNG
4358 ;
4359 ; DD.RCK READ CHECK
4360 ; DD.PCK PICK CHECK
4361 ; DD.SCK STACK CHECK
4362 ; DD.HEM HOPPER EMPTY
4363 ; DD.SFL STACKER FULL
4364 ;
4365 ;-
4366 ;
4367 013136 042737 040000 000000G SSTSCR: BIC #CR.SST,CRSTS ;SAY STATUS SENT ALREADY
4368 013144 032777 000004 000000G 60$: BIT #EF.CRS,@CREVFG ;IS STATUS BUFFER AVAILABLE?
4369 013152 001006 BNE 10$ ;YES-- ASSEMBLE STATUS
4370 013154 WSIG$S ;NO-- WAIT FOR IT TO BE THERE
013154 012746 MOV (PC)+,-(SP)
013156 061 001 .BYTE 49.,1
013160 104375 EMT 375
4371 013162 005737 000002G TST .COMEF+2 ; [4.1.1105] IF PRIMARY PROTOCOL IS STILL RUNNING
4372 013166 100766 BMI 60$ ; [4.1.1105] THEN CHECK IF STILL GOING
4373 ;
4374 ; ASSEMBLE STATUS INTO CRSTBK+0 CRSTBK+2
4375 ;
4376 013170 012700 000004G 10$: MOV #CRSTBK+4,R0 ;GET ADDRESS OF STATUS BLOCK
4377 013174 005010 CLR (R0) ;CLEAR BYTE COUNT WORD(ASSUME NON-EX DEV)
4378 013176 005040 CLR -(R0) ; AND SECOND WORD OF STATUS
4379 013200 010001 MOV R0,R1 ;SAVE ADDR OF SECOND WORD
4380 013202 005040 CLR -(R0) ; AND CLEAR FIRST WORD, R0 POINTS TO IT
4381 ;
4382 013204 032737 001000 000000G BIT #CR.NXD,CRSTS ;NON-EX DEVICE?
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 53-1
SSTSCR (SEND CD-11 STATUS TO -10)
4383 013212 001403 BEQ 101$ ;NO-- GET REAL STATUS
4384 013214 052710 000007 BIS #DV.NXD!DV.OFL!DV.OIR,(R0) ;YES-- SAY NOT THERE
4385 013220 000522 BR 50$ ;SEND THIS STATUS
4386 ;
4387 013222 013703 000000G 101$: MOV @#CDST,R3 ;COPY DEVICE STATUS
4388 013226 032703 010000 BIT #CDSOFL,R3 ;CD-11 OFF-LINE?
4389 013232 001402 BEQ 11$ ;NO-- GO ON
4390 013234 052710 000006 BIS #DV.OFL!DV.OIR,(R0) ;YES-- SAY SO
4391 ;
4392 013240 032737 030000 000000G 11$: BIT #CR.IOP!CR.IOD,CRSTS ;I/O STILL IN PROGRESS?
4393 013246 001402 BEQ 12$ ;NO
4394 013250 052710 000020 BIS #DV.IOP,(R0) ;YES-- SAY SO
4395 ;
4396 013254 032703 020000 12$: BIT #CDSEOF,R3 ;E-O-F BUTTON PUSHED?
4397 013260 001402 BEQ 13$ ;NO-- GO ON
4398 013262 052710 000040 BIS #DV.EOF,(R0) ;YES-- SAY EOF
4399 ;
4400 013266 032737 002000 000000G 13$: BIT #CR.RHN,CRSTS ;READER HUNG?
4401 013274 001402 BEQ 14$ ;NO-- GO ON
4402 013276 052710 001104 BIS #DV.HNG!DV.OIR!DV.LOG,(R0) ;YES-- SAY HUNG
4403 ;
4404 013302 032703 003000 14$: BIT #CDSDLT!CDSNXM,R3 ;FATAL ERROR (DATA LATE, NXM)?
4405 013306 001402 BEQ 15$ ;NO-- GO ON
4406 013310 052710 000300 BIS #DV.URE!DV.LOG,(R0) ;YES-- SAY SO
4407 ;
4408 013314 032703 000200 15$: BIT #CDSRDY,R3 ;BUT IS READER READY?
4409 013320 001451 BEQ 30$ ;NO-- BITS ARE NOT VALID-- GO ON
4410 ;
4411 013322 013704 000000G MOV @#CDDB,R4 ;YES-- GET ERROR BITS TO R4
4412 ;
4413 013326 032704 040000 BIT #CDBRCK,R4 ;READ (PHOTO) CHECK?
4414 013332 001402 BEQ 16$ ;NO
4415 013334 052711 000001 BIS #DD.RCK,(R1) ;YES
4416 ;
4417 013340 032704 020000 16$: BIT #CDBPCK,R4 ;PICK CHECK?
4418 013344 001402 BEQ 17$ ;NO
4419 013346 052711 000002 BIS #DD.PCK,(R1) ;YES
4420 ;
4421 013352 032704 010000 17$: BIT #CDBSCK,R4 ;STACK CHECK?
4422 013356 001402 BEQ 18$ ;NO
4423 013360 052711 000004 BIS #DD.SCK,(R1) ;YES
4424 ;
4425 013364 005711 18$: TST (R1) ;FATAL ERRROR DETECTED?
4426 013366 001402 BEQ 19$ ;NO-- GO ON
4427 013370 052710 000100 BIS #DV.LOG,(R0) ;YES-- SAY ERROR LOGGING NEEDED
4428 ;
4429 013374 032703 000004 19$: BIT #CDSHEM,R3 ;HOPPER EMPTY?
4430 013400 001402 BEQ 20$ ;NO-- GO ON
4431 013402 052711 000010 BIS #DD.HEM,(R1) ;YES
4432 ;
4433 013406 005711 20$: TST (R1) ;ANY ERROR BITS SET?
4434 013410 001012 BNE 21$ ;YES-- NOT STACKER FULL
4435 013412 032703 040000 BIT #CDSRCK,R3 ;IS THIS A READER CHECK?
4436 013416 001412 BEQ 23$ ;NO-- CERTAINLY NOT STACKER FULL
4437 013420 032737 000400 000000G BIT #CR.NSF,CRSTS ;WE DECIDE IT WASN'T STACKER FULL BEFORE?
4438 013426 001006 BNE 23$ ;YES-- CAN'T BE STACKER FULL NOW
4439 013430 052711 000020 BIS #DD.SFL,(R1) ;NO-- READER CHECK & NO ERRORS => STACKER FULL
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 53-2
SSTSCR (SEND CD-11 STATUS TO -10)
4440 013434 000403 BR 22$ ;STACKER-FULL-- GO ON
4441 ;
4442 013436 052737 000400 000000G 21$: BIS #CR.NSF,CRSTS ;FLAG THAT IT CAN'T BE STACKER FULL
4443 013444 22$:
4444 013444 23$:
4445 013444 012703 000000G 30$: MOV #CDST,R3 ;ADDRESS CD CSR
4446 013450 005721 TST (R1)+ ;POINT TO FIRST WORD OF DEVICE REGISTERS IN STATUS BLOCK
4447 013452 012721 000000C MOV #<CDDB+2-CDST>,(R1)+ ;SAVE SIZE OF FOLLOWING BLOCK
4448 013456 012321 31$: MOV (R3)+,(R1)+ ;MOVE A REGISTER
4449 013460 022701 000000C CMP #CRSTBK+CRSTLN,R1 ;MOVED 'EM ALL?
4450 013464 101374 BHI 31$ ;NO-- LOOP FOR ALL OF THEM
4451 ;
4452 ; SET UP REGISTERS FOR ..STIN TO SEND BLOCK TO -10:
4453 ; R0 -- POINTER TO STATUS BLOCK
4454 ; FIRST WORD IS HEADER: (HIGH BYTE) UNIT # (LOW BYTE) BYTE COUNT OF BLCOK
4455 ; R1 -- BIT15 (FOR INDIRECT FUNCTION) + FUNCTION CODE (BC.HDS)
4456 ; R2 -- EVENT FLAG TO SET WHEN BLOCK DONE (EF.CRS)
4457 ; R3 -- DEVICE CODE (D.CCDR)
4458 ;
4459 013466 105040 50$: CLRB -(R0) ;HIGH BYTE HEADER: UNIT # (ALWAYS 0)
4460 013470 112740 000000G MOVB #CRSTLN,-(R0) ;LOW BYTE: BYTE COUNT OF BLOCK (NOT INCLUDING HEADER)
4461 013474 012701 100000G MOV #BIT15+BC.HDS,R1 ;FUNCTION: HERE IS DEVICE STATUS (INDIRECT FLAVOR)
4462 013500 012702 000003 MOV #E.FCRS,R2 ;EVENT FLAG TO SET WHEN DONE
4463 013504 012703 000000G MOV #D.CCDR,R3 ;DEVICE CODE: CDR (OF COURSE)
4464 013510 042777 000004 000000G BIC #EF.CRS,@CREVFG ;CLEAR BUFFER AVAILABLE FLAG
4465 013516 CALL ..STIN ;SEND TO -10
013516 004737 000000G JSR PC,..STIN
4466 013522 103006 BCC 90$ ;OK-- DONE
4467 013524 052777 000004 000000G BIS #EF.CRS,@CREVFG ;FAILED-- BUFFER STILL AVAILABLE
4468 013532 052737 040000 000000G BIS #CR.SST,CRSTS ;ERROR-- TRY AGAIN LATER
4469 ;
4470 ; ALL DONE
4471 ;
4472 013540 90$: RETURN ;ALL DONE FORM SSTSCR
013540 000207 RTS PC
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 54
INITCR (INITIALIZE CD-11)
4474 .SBTTL INITCR (INITIALIZE CD-11)
4475 ;
4476 ;+
4477 ;
4478 ; INITCR IS CALLED FROM TASK INITIALIZATION AND FROM POWER-UP
4479 ; ROUTINE TO RESET THE CD-11.
4480 ;
4481 ;-
4482 ;
4483 013542 042737 021000 000000G INITCR::BIC #CR.IOP!CR.NXD,CRSTS ;NO LONGER I/O IN PROGRESS, ASSUME DEVICE EXISTS
4484 013550 012737 000400 000000G MOV #CDSPWC,@#CDST ;DO POWER-CLEAR
4485 013556 052777 000001 000000G CRDCLR: BIS #EF.CRC,@CREVFG ;FORCE HUNG CHECK
4486 013564 RETURN
013564 000207 RTS PC
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 55
CD-11 DRIVER COMMON SUBROUTINES MODULE
4488 .SBTTL CD-11 DRIVER COMMON SUBROUTINES MODULE
4489 ;
4490 ; COPYRIGHT (C) 1975, 1978 BY
4491 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
4492 ;
4493 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
4494 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
4495 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
4496 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
4497 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
4498 ;
4499 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
4500 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4501 ; CORPORATION.
4502 ;
4503 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4504 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4505 ;
4506 ; MODULE: CD-11 DRIVER COMMON SUBROUTINES
4507 ;
4508 ; VERSION: 01-00
4509 ;
4510 ; AUTHOR: TOM PORCHER
4511 ;
4512 ; DATE: 25-AUG-75
4513 ;
4514 ;
4515 ; THIS MODULE CONTAINS:
4516 ;
4517 ; 1) $CDINT (CD-11 INTERRUPT SERVICE ROUTINE)
4518 ;
4519 ; 2) ..STCR (START CD-11)
4520 ;
4521 ; 3) ..SPCR (STOP CD-11)
4522 ;
4523 ; 4) ..AKCR (READ CARD)
4524 ;
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 56
$CDINT (CD-11 INTERRUPT SERVICE)
4526 .SBTTL $CDINT (CD-11 INTERRUPT SERVICE)
4527 ;
4528 ;+
4529 ;
4530 ; $CDINT IS CALLED FROM THE INTERRUPT VECTOR FOR THE CD-11.
4531 ; IT MERELY SAYS THAT I/O IS DONE BY SETTING CR.IOD IF I/O WAS
4532 ; IN PROGRESS (CR.IOP), AND REQUESTS STATUS IF AN ERROR HAS OCCURED.
4533 ;
4534 ;-
4535 ;
4536 013566 105737 000000G $CDINT:: TSTB @#CDST ;;;CD-11 READY?
4537 013572 100025 BPL 90$ ;;;NO-- JUST GO AWAY
4538 013574 032737 020000 000000G BIT #CR.IOP,CRSTS ;;;YES-- WERE WE I/O IN PROGRESS (READING)?
4539 013602 001414 BEQ 10$ ;;;NO-- GO ON (SEE IF ERROR)
4540 013604 042737 020000 000000G BIC #CR.IOP,CRSTS ;;;YES-- MUST BE DONE NOW
4541 013612 005737 000000G TST @#CDCC ;;;DID WE READ A CARD?
4542 013616 001006 BNE 10$ ;;;NO-- MUST BE ERROR-- SEND STATUS NOW
4543 013620 052737 010000 000000G BIS #CR.IOD,CRSTS ;;;SO MAKE TASK KNOW WE ARE DONE
4544 ;
4545 013626 005737 000000G TST @#CDST ;;;WAS THERE AN ERROR?
4546 013632 100003 BPL 20$ ;;;NO-- GO ON
4547 ;
4548 013634 052737 040000 000000G 10$: BIS #CR.SST,CRSTS ;;;YES-- SEND DEVICE STATUS
4549 013642 20$: CALL IODNCR ;;;SAY I/O DONE TO TASK
013642 004737 013732' JSR PC,IODNCR
4550 ;
4551 ; ALL DONE WITH INTERRUPT
4552 ;
4553 013646 000137 000000G 90$: JMP ..INTX ;;;FINISH OFF INTERRUPT
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 57
..STCR (START CD-11)
4555 .SBTTL ..STCR (START CD-11)
4556 ;
4557 ;+
4558 ;
4559 ; ..STCR IS CALLED FROM THE QUEUED PROTOCOL TASK ON A REQUEST
4560 ; FOR STATUS. NO OTHER REQUESTS TO THE CD-11 DRIVER ARE MADE THROUGH
4561 ; ..STCR.
4562 ;
4563 ; THE STATUS IS REQUESTED TO THE CD-11 DRIVER TASK BY SETTING
4564 ; CR.SST AND EF.CRD.
4565 ;
4566 ; CALLING SEQUENCE:
4567 ; R0 -- POINTER TO THREAD BLOCK (WILL JUST BE DEALLOCATED)
4568 ; R2 -- POINTER TO CRTBL (MUST BE CRTBL+0)
4569 ;
4570 ; EXIT CONDITIONS:
4571 ;
4572 ; NO REGISTERS MODIFIED
4573 ;
4574 ;-
4575 ;
4576 .ENABLE LSB
4577 013652 ..STCR::
4578 013652 CALL ..DECN ;DE-ALLOCATE BLOCK
013652 004737 000000G JSR PC,..DECN
4579 013656 020227 000000G CMP R2,#CRTBL+0 ;THIS CR0?
4580 013662 001030 BNE 99$ ;NO-- GO AWAY
4581 013664 052737 040000 000000G BIS #CR.SST,CRSTS ;YES-- MAKE STATUS HAPPEN
4582 013672 000417 BR IODNCR ; AND MAKE TASK RECOGNIZE IT
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 58
..SPCR (STOP CD-11)
4584 .SBTTL ..SPCR (STOP CD-11)
4585 ;
4586 ;+
4587 ;
4588 ; ..SPCR IS CALLED FROM THE QUEUED PROTOCOL TASK TO FLUSH
4589 ; INPUT FROM THE CD-11. ANY I/O THAT IS IN PROGRESS IS STOPPED,
4590 ; AND NO FURTHER DATA IS SENT TO THE -10.
4591 ;
4592 ; CALLING SEQUENCE:
4593 ; R2 -- POINTER TO CRTBL (MUST BE CRTBL+0)
4594 ;
4595 ; EXIT CONDITIONS:
4596 ;
4597 ; NO REGISTERS MODIFIED
4598 ;
4599 ;-
4600 ;
4601 013674 020227 000000G ..SPCR:: CMP R2,#CRTBL+0 ;THIS CR0?????
4602 013700 001021 BNE 99$ ;NO-- GO AWAY
4603 013702 CALL INITCR ;RESET THE CD-11
013702 004737 013542' JSR PC,INITCR
4604 013706 042737 034000 000000G BIC #CR.ACK!CR.IOD!CR.IOP,CRSTS ;SAY WE ARE HAPPY
4605 013714 RETURN
013714 000207 RTS PC
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 10-NOV-81 17:28 PAGE 59
..AKCR (READ CARD)
4607 .SBTTL ..AKCR (READ CARD)
4608 ;
4609 ;+
4610 ;
4611 ; ..AKCR IS CALLED FROM THE QUEUED PROTOCOL TASK ON AN ACKNOWLEDGE
4612 ; REQUEST FROM THE -10. THIS IMPLIES THAT A CARD SHOULD BE READ.
4613 ;
4614 ; CALLING SEQUENCE:
4615 ; R2 -- POINTER TO CRTBL (MUST BE CRTBL+0)
4616 ;
4617 ; EXIT CONDITIONS:
4618 ;
4619 ; NO REGISTERS MODIFIED
4620 ;
4621 ;-
4622 ;
4623 013716 020227 000000G ..AKCR:: CMP R2,#CRTBL+0 ;IS THIS CR0???
4624 013722 001010 BNE 99$ ;NO-- GIVE UP
4625 013724 052737 004000 000000G BIS #CR.ACK,CRSTS ;YES-- SAY TO READ A CARD
4626 ; BR IODNCR ;SET I/O DONE TO SAY SOMETHING TO DO TO TASK
4627 ;
4628 ; HERE TO SET I/O DONE (EF.CRD) TO CR TASK TO INDICATE SOMETHING TO DO.
4629 ; ALSO SIGNIFICANT EVENT TO CAUSE CR TASK TO RUN.
4630 ;
4631 013732 052777 000002 000000G IODNCR: BIS #EF.CRD,@CREVFG ;SET EVENT FLAG
4632 013740 CALL ..DSEV ; AND MAKE SIGN. EVENT TO WAKE TASK
013740 004737 000000G JSR PC,..DSEV
4633 013744 99$: RETURN ; FROM IODNCR
013744 000207 RTS PC
4634 .DSABLE LSB
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 60
..AKCR (READ CARD)
4636 .TITLE INSTAL -- TASK INSTALLER FOR RSX-20F
4637 .SBTTL TITLE PAGE
4638 .IDENT /014440/
4639 ;
4640 ; COPYRIGHT (C) 1975, 1978 BY
4641 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
4642 ;
4643 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
4644 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
4645 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
4646 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
4647 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
4648 ;
4649 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
4650 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4651 ; CORPORATION.
4652 ;
4653 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4654 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4655 ;
4656 ; MODULE: INSTALL TASK FOR RSX-20F
4657 ;
4658 ; VERSION: 14-44
4659 ;
4660 ; AUTHOR: TOM PORCHER
4661 ;
4662 ; DATE: 1-OCT-75
4663 ;
4664 ;
4665 ; THIS MODULE CONTAINS:
4666 ;
4667 ; -- CODE TO INSTALL A TASK IN RSX-20F
4668 ;
4669 ; MODIFICATIONS:
4670 ;
4671 ; NO. DATE PROGRAMMER PURPOSE
4672 ; --- ---- ---------- -------
4673 ; 001 14-MAR-77 R. BELANGER DEFINE THE END OF "INSTAL"
4674 ; TO ALLOW DYNAMIC ALLOCATION
4675 ; OF FREE POOL SPACE
4676 ; 002 30-MAY-78 R. BELANGER MODIFY INSTAL TO MOUNT BOTH
4677 ; DX0: AND DX1: AS SY:
4678 ; 003 18-AUG-81 S. LEAPLINE EXTEND STACK AREA
4679 ; 004 28-AUG-81 S. LEAPLINE MAKE TYPBUF BIGGER
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 61
MACROS AND PARAMETERS
4681 .SBTTL MACROS AND PARAMETERS
4682 ;
4683 ; SETUP ASSEMBLY CONDITIONS
4684 ;
4685 .ENABLE AMA
4686 .LIST MEB
4687 ;
4688 ; MISC. MCALL'S
4689 ;
4690 .MCALL QIOSY$,ALUN$S,QIOW$S,RCVX$S,RQST$S,WSIG$S,.INH0,.ENB0,CALL,RETURN,PUSH,POP,.STKM,$DEF
4691 013746 $DEF
4692 013746 QIOSY$
4693 ;
4694 ; MACROS
4695 ;
4696 .MACRO MSG A,B
4697 .PSECT TEXT
4698 $$$=.
4699 .ASCIZ \B\
4700 .PSECT
4701 PUSH #$$$
4702 CALL TYPMSG
4703 .ENDM MSG
4704 ;
4705 .MACRO ERR A,B
4706 MSG <A>,<B>
4707 .ENDM ERR
4708 ;
4709 .MACRO ERRF A,B
4710 ERR <A>,<B>
4711 BR CLSFIL
4712 .ENDM ERRF
4713 ;
4714 .MACRO ERRN A,B
4715 ERR <A>,<B>
4716 BR RETNOD
4717 .ENDM ERRN
4718 ;
4719 ; PARAMETERS
4720 ;
4721 000062 DEFPRI= 50. ;DEFAULT TASK PRIORITY
4722 ;
4723 000050 U.SZ=50 ;LOCAL DEF OF U.SZ
4724 000001 SF.TA=1 ;LOCAL DEF OF TASK ACTIVE
4725 040000 SF.IR=40000 ;LOCAL DEF FOR INSTAL REQUESTED
4726 ; LOGICAL UNIT NUMBER ASSIGNMENTS
4727 ;
4728 000001 CTYLUN= 1 ;FOR I/O TO THE CTY **** MUST BE UNIT 1 ****
4729 000002 TSKLUN= 2 ;FOR I/O TO TASK IMAGE FILE
4730 ;
4731 ; EVENT FLAGS
4732 ;
4733 000001 E.FQIO= 1 ;WAIT FOR QUEUE I/O TO COMPLETE
4734 000001 EF.QIO=BIT0
4735 ;
4736 ; HEADER BLOCK DEFINITIONS
4737 ;
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 61-1
MACROS AND PARAMETERS
4738 000076 H.IPC= 76 ;INITIAL PC
4739 000100 H.ISP= 100 ;INITIAL SP
4740 000130 H.NLUN= 130 ;NUMBER OF LUNS FOR TASK
4741 000132 H.LUN= 132 ;START OF LUN TABLE AREA
4742 ;
4743 ; LABEL BLOCK DEFINITIONS
4744 ;
4745 000000 L$BTSK= 0 ;TASK NAME IN RAD50 (TWO WORDS)
4746 000004 L$BPAR= 4 ;PARTITION NAME IN RAD50 (TWO WORDS)
4747 000010 L$BFLG= 10 ;FLAG WORD
4748 000012 L$BPRI= 12 ;DEFAULT TASK RUN PRIORITY
4749 000014 L$BLDZ= 14 ;LOAD SIZE OF TASK IMAGE
4750 000016 L$BMXZ= 16 ;MAX SIZE OF TASK
4751 000020 L$BSA= 20 ;BASE ADDRESS OF TASK
4752 000022 L$BHRB= 22 ;HEADER RELATIVE BLOCK IN TASK FILE
4753 000024 L$BBLK= 24 ;# BLOCKS IN LABEL GROUP
4754 ;
4755 ; ACCESS CONTROL BITS
4756 ;
4757 000200 AC.ENA= BIT7 ;ENABLE ACCESS
4758 ;
4759 ; FILENAME BLOCK OFFSETS
4760 ;
4761 000000 N.FID= 0 ;FILE-ID / SEQUENCE #
4762 000006 N.FNAM= 6 ;FILENAME IN RADIX 50 (3 WORDS)
4763 000014 N.FTYP= 14 ;FILE TYPE IN RADIX 50
4764 000016 N.FVER= 16 ;FILE VERSION NUMBER
4765 000020 N.STAT= 20 ;FLAGS
4766 000022 N.NEXT= 22 ;CONTEXT SAVE FOR .FIND
4767 000024 N.DID= 24 ;DIRECTORY ID
4768 000034 S.DRFN=34 ;WORDS OF FILE-NAME BLOCK USED FOR IO.FNA
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 62
TASK DATA
4770 .SBTTL TASK DATA
4771 ;
4772 ; TASK HEADER AND STACK
4773 ;
4774 013746 INSHD:: .STKM 0,0,0,0,0,0,40,INSTAL,174000,INSTK
014014 000000 000000 000000 .WORD 0,0,0,0
014022 000000
014042 174000 014676' 014226' .WORD 174000,INSTAL,INSTK
014076 000005 .WORD 5
014100 000000G .WORD TTPEN
014102 000000 .WORD 0
014104 000000 .WORD 0
014106 000000 .WORD 0
014110 000000 .WORD 0
014112 000000 .WORD 0
014114 000000 .WORD 0
014116 000000 .WORD 0
014120 000000 .WORD 0
014122 000000 .WORD 0
014124 000000 .WORD 0
014226 000000 .WORD 0
014230 000000 .WORD 0
014232 000000 .WORD 0
014234 000000 .WORD 0
014236 000000 .WORD 0
014240 000000 .WORD 0
014242 014676' .WORD INSTAL
014244 174000 .WORD 174000
4775 ;
4776 014246 .BLKW 40
4777 014346 EXSP::
4778 ;
4779 ; LOCAL DATA
4780 ;
4781 014346 000 DXFLAG: .BYTE 0 ; +++002 SECOND DX: MOUNT FLAG
4782 014347 000 SYFLAG: .BYTE 0 ; +++002 SY: MOUNTED FLAG
4783 014350 RCVBLK: .BLKW 2 ;RECEIVE DATA BUFFER: TRASH
4784 014354 REQBLK: .BLKW 13. ;REQUEST BLOCK FROM EXEC
4785 014366' STDADR=REQBLK+12 ;ADDRESS OF OUR SYSTEM TASK DIRECTORY ENTRY
4786 014406 PUDADR: .BLKW 1 ;PUD ENTRY ADDRESS OF DEVICE WHERE TASK FILE WAS FOUND
4787 014410 LBLBLK: .BLKW 1 ;CURRENT VIRTUAL BLOCK NUMBER TO READ LABEL GROUP
4788 014412 LBLNUM: .BLKW 1 ;NUMBER OF BLOCKS IN LABEL GROUP
4789 014414 LBLBUF: .BLKW 1 ;ADDRESS OF LABEL BUFFER
4790 014416 LBLBFE: .BLKW 1 ;ADDRESS OF END OF BUFFER (LBLBUF)+512.
4791 014420 HDRBLK: .BLKW 1 ;CURRENT VIRTUAL BLOCK NUMBER TO READ HEADER
4792 014422 HDRBUF: .BLKW 1 ;ADDRESS OF HEADER BLOCK BUFFER
4793 014424 HDRBFE: .BLKW 1 ;ADDRESS OF END OF HEADER BUFFER
4794 014426 FILBLK: .BLKB S.DRFN ;FILE-NAME BLOCK FOR TASK IMAGE FILE
4795 014462 FILADR: .BLKW 2 ;STATISTISTICS BLOCK: DISK ADDRESS
4796 014466 QIOSTS: .BLKW 2 ;I/O STATUS
4797 014472 TYPBUF: .BLKB 100. ;BUFFER FOR CTY OUTPUT
4798 ;
4799 ; PURE DATA
4800 ;
4801 014636 367 ATCBLK: .BYTE -9. ;ATTIBUTE CONTROL: STATISTICS BLOCK, READ
4802 014637 004 .BYTE 4. ;4 BYTES OF INFO
4803 014640 014462' .WORD FILADR ;WHERE TO INFO TO
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 62-1
TASK DATA
4804 014642 000 000 .BYTE 0,0 ;END OF ATTRIBUTE CONTROL BLOCK
4805 ;
4806 014644 001 MNTBLK: .BYTE 1 ;ACP CONTROL: MOUNT FUNCTION
4807 014645 001 .BYTE 1 ;STRING LENGTH: 1
4808 014646 014650' .WORD 1$ ;ADDRESS OF STRING
4809 014650 072 1$: .ASCII /:/
4810 .EVEN
4811 ;
4812 ; DEVICE CONVERSION TABLE
4813 ;
4814 014652 124 111 124 CNVTBL: .ASCII /TI//TT/
014655 124
4815 014656 103 117 124 .ASCII /CO//TT/
014661 124
4816 014662 103 111 124 .ASCII /CI//TT/
014665 124
4817 014666 103 114 114 .ASCII /CL//LP/
014671 120
4818 014672 000000 000000 .WORD 0,0
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 63
FIND THE TASK FILE
4820 .SBTTL FIND THE TASK FILE
4821 ;
4822 ;
4823 ; HERE ON A REQUEST TO INSTALL A TASK FROM THE EXECUTIVE
4824 ;
4825 ; A SEND DATA PACKET IS SENT TO THIS TASK .INST. IN REQUEST
4826 ; FOR A TASK WHICH IS NOT CURRENTLY INSTALLED. THE PACKET
4827 ; HAS THE FOLLOWING FORMAT:
4828 ;
4829 ; WORD 0 TASK NAME IN RADIX 50 FORMAT
4830 ; 1 (SECOND HALF)
4831 ; 2 PARTITION NAME IN RADIX 50 (IF SPECIFIED, OTHERWISE 0)
4832 ; 3 (SECOND HALF)
4833 ; 4 RUN PRIORITY (IF SPECIFIED, OTHERWISE 0)
4834 ; 5 STD ADDRESS
4835 ;
4836 ;
4837 ; GET THE PACKET, OR EXIT IF NOTHING TO DO
4838 ;
4839 014676 INSTAL::
4840 014676 012706 014346' MOV #EXSP,SP ;;ADD EXTRA STACK SPACE
4841 014702 RCVX$S ,#RCVBLK ;;GET THE REQUEST OR EXIT IF NONE
014702 012746 014350' MOV #RCVBLK,-(SP)
014706 005046 CLR -(SP)
014710 005046 CLR -(SP)
014712 012746 MOV (PC)+,-(SP)
014714 023 004 .BYTE 19.,$$$T1
014716 104375 EMT 375
4842 014720 103766 BCS INSTAL ;OOPS-- TRY AGAIN
4843 ;
4844 014722 CALL CLRBUF ; AND NO BUFFERS ALLOCATED
014722 004737 016472' JSR PC,CLRBUF
4845 014726 105037 014346' CLRB DXFLAG ; +++002 RESET THE RX01 FLAG
4846 ;
4847 ; SETUP TO LOOK ON DEVICE SY FOR THE TASK FIRST
4848 ;
4849 014732 012705 177730G MOV #.PUDBA-U.SZ,R5 ;POINT TO START OF PUD'S TO SCAN IF NOT ON SY
4850 ;MINUS 1 FOR SY
4851 014736 012700 054523 MOV #"SY,R0 ; +++002 DEVICE NAME (U.DN) TO R0
4852 014742 005001 CLR R1 ; +++002 UNIT NUMBER (U.UN) TO R1
4853 ;
4854 014744 MNTSYD: ; +++002
4855 014744 ALUN$S #TSKLUN,R0,R1 ; +++002 ASSIGN DEVICE SY0 TO TASK LUN
014744 010146 MOV R1,-(SP)
014746 010046 MOV R0,-(SP)
014750 012746 000002 MOV #TSKLUN,-(SP)
014754 012746 MOV (PC)+,-(SP)
014756 007 004 .BYTE 7.,4
014760 104375 EMT 375
4856 014762 103557 BCS TASKNF ;NO DICE-- JUST TRY PUD SCAN
4857 ;
4858 014764 013704 000000G MOV .CRTSK,R4 ;GOT IT-- GET ADDRESS
4859 014770 016404 000000G MOV A.HA(R4),R4 ; OF OUR HEADER TO
4860 014774 016404 000136 MOV H.LUN+<4*<TSKLUN-1>>+0(R4),R4 ; FIND PUD ADDRESS OF SY
4861 015000 016404 000000G MOV U.RP(R4),R4 ; BUT GET THE REAL DEVICE PUD ENTRY
4862 015004 010437 014406' MOV R4,PUDADR ;SAVE THIS PUD ADDRESS IN CASE WE DO FIND THE TASK
4863 015010 005764 000000G TST U.VA(R4) ;IS SY MOUNTED?
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 63-1
FIND THE TASK FILE
4864 015014 001031 BNE SYMNTD ; +++002 YES -- DO THE SECOND FLOPPY CHECK
4865 ;
4866 ; SY IS NOT MOUNTED. WE MUST MOUNT IT BEFORE WE CAN FIND ANYTHING
4867 ;
4868 ; NOTE--
4869 ;
4870 ; IF THE SY: DEVICE BEING MOUNTED IS A FLOPPY (DX:) INSTAL WILL
4871 ; ATTEMPT TO MOUNT THE OTHER UNIT AS WELL.
4872 ;
4873 015016 012701 014354' MOV #RCVBLK+4,R1 ;GET A SCRATCH AREA
4874 015022 012741 MOV (PC)+,-(R1) ;STORE
4875 015024 003310 .RAD50 /ACP/ ; THE NAME OF AN ACP
4876 015026 016441 000000G MOV U.DACP(R4),-(R1) ; AND THE NAME OF THE ACP FOR THIS DEVICE
4877 015032 CALL ..FSTD ;FIND THE STD ENTRY ADDRESS OF THE ACP
015032 004737 000000G JSR PC,..FSTD
4878 015036 010264 000000G MOV R2,U.ACP(R4) ;STORE THE STD ADDRESS OF THE ACP
4879 ;
4880 015042 012700 014010 MOV #IO.APV,R0 ;SET TO DO PRIVILEGED ACP CONTROL
4881 015046 005001 CLR R1 ;NO FILE-ID
4882 015050 012702 014644' MOV #MNTBLK,R2 ;ACP CONTROL FUNCTION BLOCK TO MOUNT
4883 015054 005003 CLR R3 ;NO ACCESS
4884 015056 005004 CLR R4 ;NO FILE-NAME BLOCK
4885 015060 CALL FILQIO ;DO A MOUNT ON SY
015060 004737 016772' JSR PC,FILQIO
4886 015064 103005 BCC SYMNTD ;SUCCESS-- SAY WE DID THE MOUNT SO WE DON'T SCARE ANYBODY
4887 015066 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
015066 012746 000000' MOV #$$$,-(SP)
015072 004737 017052' JSR PC,TYPMSG
4888 015076 000511 BR TASKNF ;CERTAINLY NOT FOUND
4889 ;
4890 015100 SYMNTD:
4891 015100 013704 014406' MOV PUDADR,R4 ; +++002 PUD ADDRESS TO R4
4892 015104 016400 000000G MOV U.DN(R4),R0 ; +++002 DEVICE NAME TO R0
4893 015110 016401 000000G MOV U.UN(R4),R1 ; +++002 UNIT NUMBER TO R1
4894 015114 022700 054104 CMP #"DX,R0 ; +++002 DID WE TRY TO MOUNT A FLOPPY??
4895 015120 001011 BNE SYMNT1 ; +++002 NO -- GO ON
4896 015122 105737 014346' TSTB DXFLAG ; +++002 YES -- HAVE WE DONE BOTH??
4897 015126 001006 BNE SYMNT1 ; +++002 YES -- GO ON
4898 015130 105237 014346' INCB DXFLAG ; +++002 NO -- MARK SECOND TIME AROUND
4899 015134 005201 INC R1 ; +++002 SET UP FOR "OTHER" FLOPPY
4900 015136 042701 177776 BIC #^C1,R1 ; +++002 SO
4901 015142 000700 BR MNTSYD ; +++002 AND DO IT...
4902 ;
4903 015144 SYMNT1: ; +++002
4904 015144 105737 014347' TSTB SYFLAG ; +++002 SY: ALREADY MOUNTED??
4905 015150 001006 BNE FNDFIL ; +++002 YES -- GO ON
4906 015152 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 M1113 10-NOV-81 17:28 PAGE 63-2
FIND THE TASK FILE
015152 012746 000020' MOV #$$$,-(SP)
015156 004737 017052' JSR PC,TYPMSG
4907 015162 105237 014347' INCB SYFLAG ; +++002 MARK MOUNT DONE
4908 ;
4909 ; SET UP FILENAME BLOCK TO LOOK FOR [5,5] DIRECTORY IN MFD
4910 ;
4911 015166 FNDFIL:
4912 015166 012702 014434' MOV #FILBLK+N.FNAM,R2 ;POINT TO FILE-NAME BLOCK
4913 015172 012712 MOV (PC)+,(R2) ;SET FILENAME TO
4914 015174 140123 .RAD50 /005/ ; 005005
4915 015176 012222 MOV (R2)+,(R2)+ ; BOTH HALVES
4916 015200 005022 CLR (R2)+ ;ONLY SIX CHARS
4917 015202 012722 MOV (PC)+,(R2)+ ;SET TYPE TO DIRECTORY
4918 015204 015172 .RAD50 /DIR/ ; FILE
4919 015206 005022 CLR (R2)+ ;VERSION, DON'T CARE
4920 015210 005022 CLR (R2)+ ;NO FLAGS
4921 015212 005022 CLR (R2)+ ;UNKOWN STUFF
4922 015214 012712 177777 MOV #-1,(R2) ;DIRECTORY ID:
4923 015220 012222 MOV (R2)+,(R2)+ ; (-1,-1) IS MFD
4924 015222 012722 MOV (PC)+,(R2)+ ;ALSO SET OWNER TO US
4925 015224 005 005 .BYTE 5,5 ;THE UIC
4926 ;
4927 015226 CALL FILFNA ;LOOK UP DIRECTORY FOR [5,5]
015226 004737 016622' JSR PC,FILFNA
4928 015232 103433 BCS TASKNF ;GIVE UP NOW IF NO DIRECTORY FOR US
4929 ;
4930 ; SETUP FILE-NAME BLOCK TO <TASK-NAME>.TSK[5,5]
4931 ;
4932 015234 012701 014354' MOV #REQBLK,R1 ;ADDRESS REQUEST BLOCK
4933 015240 012702 014434' MOV #FILBLK+N.FNAM,R2 ; AND FILE-NAME BLOCK FOR LOOKUP
4934 015244 021127 CMP (R1),(PC)+ ;IS THIS
4935 015246 131574 .RAD50 /.../ ; AN MCR FUNCTION TASK?
4936 015250 001004 BNE 20$ ;NO-- JUST LOOKUP THE TASK NAME
4937 015252 005721 TST (R1)+ ;YES-- SKIP THE DOTS
4938 015254 012122 MOV (R1)+,(R2)+ ;COPY THE LAST THREE CHARACTERS
4939 015256 005022 CLR (R2)+ ; AS THE WHOLE NAME
4940 015260 000402 BR 25$ ;PROCEED.
4941 ;
4942 015262 20$:
4943 015262 012122 MOV (R1)+,(R2)+ ;COPY TASK NAME
4944 015264 012122 MOV (R1)+,(R2)+ ; AS FILE NAME
4945 015266 25$:
4946 015266 005022 CLR (R2)+ ;ONLY SIX CHARACTERS
4947 015270 012722 MOV (PC)+,(R2)+ ;SET FILE TYPE
4948 015272 100003 .RAD50 /TSK/ ; TO A TASK FILE
4949 015274 005022 CLR (R2)+ ;NO VERSION CARE
4950 015276 005022 CLR (R2)+ ;NO FLAGS
4951 015300 005022 CLR (R2)+ ;NO NOTHING
4952 015302 012701 014426' MOV #FILBLK+N.FID,R1 ;POINT TO FILE-ID OF DIRECTORY
4953 015306 012122 MOV (R1)+,(R2)+ ;COPY FILE-ID
4954 015310 012122 MOV (R1)+,(R2)+ ; SEQ #
4955 015312 012122 MOV (R1)+,(R2)+ ; OWNER
4956 ;
4957 ; DO A FIND FILE IN DIRECTORY FUNCTION TO GET FILE ID
4958 ;
4959 015314 CALL FILFNA ;FIND THE TASK (IF IT'S THERE)
015314 004737 016622' JSR PC,FILFNA
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 63-3
FIND THE TASK FILE
4960 015320 103051 BCC TSKFND ;FOUND FILE-- GO READ IT AND CHECK IT OUT
4961 ;
4962 ; THE TASK FILE WAS NOT FOUND ON THIS DEVICE. CONTINUE TO SCAN PUD
4963 ; FOR ALL FILES-11 DEVICES SUCH THAT WE FIND THE TASK.
4964 ;
4965 015322 TASKNF:
4966 015322 062705 000050 ADD #U.SZ,R5 ;BUMP TO NEXT PUD ENTRY
4967 015326 020527 000000G CMP R5,#.PUDEA ;ARE WE AT THE END OF THE PUD?
4968 015332 103027 BHIS TNFERR ;YES-- TASK NOT FOUND
4969 015334 026505 000000G CMP U.RP(R5),R5 ;THIS DEVICE REDIRECTED?
4970 015340 001370 BNE TASKNF ;YES-- WE WILL FIND THE REAL DEVICE
4971 015342 132765 000000G 000000G BITB #UF.TL,U.FB(R5) ;TASK LOADS ALLOWED FROM THIS DEVICE?
4972 015350 001764 BEQ TASKNF ;NO-- DON'T EVEN TRY
4973 015352 005765 000000G TST U.VA(R5) ;VOLUME MOUNTED?
4974 015356 001761 BEQ TASKNF ;NO-- DON'T TRY TO FIND FILE
4975 ;
4976 015360 ALUN$S #TSKLUN,U.DN(R5),U.UN(R5) ;YES-- ASSIGN TH CURRENT DEVICE TO US
015360 016546 000000G MOV U.UN(R5),-(SP)
015364 016546 000000G MOV U.DN(R5),-(SP)
015370 012746 000002 MOV #TSKLUN,-(SP)
015374 012746 MOV (PC)+,-(SP)
015376 007 004 .BYTE 7.,4
015400 104375 EMT 375
4977 015402 103747 BCS TASKNF ;THIS SHOULD REALLY NEVER HAPPN
4978 015404 010537 014406' MOV R5,PUDADR ;OK-- SAVE THIS PUD ADDRESS IN CASE WE FIND THE FILE
4979 015410 000666 BR FNDFIL ;OK-- GO LOOK FOR THE TASK FILE
4980 ;
4981 015412 TNFERR:
4982 015412 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
015412 012746 000033' MOV #$$$,-(SP)
015416 004737 017052' JSR PC,TYPMSG
4983 015422 000137 016326' JMP RETNOD ;GIVE UP
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 64
INITIALIZE TASK FILE
4985 .SBTTL INITIALIZE TASK FILE
4986 ;
4987 ; FILE ERRORS END UP HERE, GOING ON THERE WAY TO THERE
4988 ;
4989 015426 000137 016312' FILERA: JMP FILERR ;OOPS
4990 ;
4991 ; ONE OF THE NODE/BUFFER REQUESTS FAILED-- GIVE ALL OF THEM BACK AND WAIT
4992 ;
4993 015432 BUFAIL: CALL RETBUF ;RETURN ALL BUFFERS
015432 004737 016436' JSR PC,RETBUF
4994 015436 WSIG$S ;WAIT FOR FREE
015436 012746 MOV (PC)+,-(SP)
015440 061 001 .BYTE 49.,1
015442 104375 EMT 375
4995 ;
4996 ; HERE WHEN A TASK FILE FOUND
4997 ;
4998 ; GET TWO BUFFERS FOR THE HEADER AND LABEL BLOCKS
4999 ;
5000 015444 012700 000000G TSKFND: MOV #.BGBUF,R0 ;POINT TO BIG FREE SPACE
5001 015450 012701 001000 MOV #512.,R1 ;SET TO GET A BLOCK
5002 015454 CALL ..ALC2 ;GET ONE
015454 004737 000000G JSR PC,..ALC2
5003 015460 103764 BCS BUFAIL ;FAILED-- RELEASE NODE AND WAIT
5004 015462 010037 014414' MOV R0,LBLBUF ;OK-- STORE THE ADDRESS FOR LABEL BLOCK BUFFER
5005 015466 060100 ADD R1,R0 ;GET END ADDRESS, TOO
5006 015470 010037 014416' MOV R0,LBLBFE ;SAVE THAT AS END OF BLOCK
5007 015474 012700 000000G MOV #.BGBUF,R0 ;POINT TO BIG FREE LIST HEAD
5008 ;
5009 015500 CALL ..ALC2 ;GET A HEADER BUFFER, TOO
015500 004737 000000G JSR PC,..ALC2
5010 015504 103752 BCS BUFAIL ;NONE-- GIVE IT ALL AWAY
5011 015506 010037 014422' MOV R0,HDRBUF ;GOT IT-- SAVE ADDRESS OF BLOCK
5012 015512 060100 ADD R1,R0 ;GET END, TOO
5013 015514 010037 014424' MOV R0,HDRBFE ;SAVE THE END OF HEADER BUFFER
5014 ;
5015 ; DO AN ACCESS FOR READ, WRITE ON THE TASK FILE THAT WE FOUND
5016 ;
5017 015520 012700 007000 MOV #IO.ACW,R0 ;DO AN ACCESS FOR READ,WRITE
5018 015524 012701 014426' MOV #FILBLK+N.FID,R1 ;FILE BLOCK NOW HAS FILE-ID, SEQ# IN IT
5019 015530 012702 014636' MOV #ATCBLK,R2 ;ATTRRIBUTE CONTROL BLOCK TO GET DISK ADDR OF FILE
5020 015534 012703 MOV (PC)+,R3 ;ENABLE
5021 015536 000 200 .BYTE 0,AC.ENA ; ACCESS
5022 015540 005004 CLR R4 ;NO FILE-NAME BLOCK NOW
5023 015542 CALL FILQIO ;DO THE ACCESS
015542 004737 016772' JSR PC,FILQIO
5024 015546 103727 BCS FILERA ;NO DICE-- GIVE UP
5025 ;
5026 ; READ THE FIRST LABEL BLOCK AND THE FIRST BLOCK OF THE TASK HEADER
5027 ;
5028 015550 005037 014410' CLR LBLBLK ;START WITH BLOCK 0 (WILL BUMP TO VBN 1)
5029 015554 CALL REDLBL ;READ THE LABEL BLOCK
015554 004737 016720' JSR PC,REDLBL
5030 015560 103722 BCS FILERA ;ERROR-- REPORT IT
5031 ;
5032 015562 016137 000022 014420' MOV L$BHRB(R1),HDRBLK ;GET FIRST BLOCK OF HEADER
5033 015570 CALL REDHDR ;READ THE FIRST BLOCK OF THE HEADER
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 64-1
INITIALIZE TASK FILE
015570 004737 016656' JSR PC,REDHDR
5034 015574 103714 BCS FILERA ;THAT'S-A-NO-GOOD
5035 ; BR SETSTD ;OK-- SET UP THE STD
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 65
SETUP STD ENTRY
5037 .SBTTL SETUP STD ENTRY
5038 ;
5039 ; WE HAVE THE LABEL BLOCK OF THE TASK FILE AND THE FIRST HEADER BLOCK
5040 ; R1 -- ADDRESS OF LABEL BLOCK BUFFER
5041 ; R2 -- ADDRESS OF HEADER BLOCK BUFFER
5042 ;
5043 015576 013704 014366' SETSTD: MOV STDADR,R4 ;ADDRESS OUR NEW-FOUND STD
5044 ;
5045 015602 012703 014360' MOV #REQBLK+4,R3 ;POINT TO THE REQUEST INFO BLOCK
5046 015606 022424 CMP (R4)+,(R4)+ ;MOVE OVER NAME
5047 015610 022121 CMP (R1)+,(R1)+ ;(L$BTSK+0) (L$BTSK+2) SKIP OVER TASK NAME IN LABEL BLOCK
5048 ;
5049 ; FIND WHICH PARTITION TO INSTALL THE TASK INTO
5050 ; IF REQUEST DID NOT SPECIFY ONE, USE THE ONE SPECIFIED IN THE TASK FILE
5051 ;
5052 015612 005713 TST (R3) ;PARTITION SPECIFIED IN REQUEST?
5053 015614 001001 BNE 20$ ;YES-- LOOK FOR THAT ONE
5054 015616 010103 MOV R1,R3 ;NO-- (L$BPAR) USE PARTITION FROM TASK FILE
5055 ;
5056 ; FIND THE PARTITION WHERE WE BELONG
5057 ;
5058 015620 022121 20$: CMP (R1)+,(R1)+ ;(L$BPAR+0) (L$BPAR+2) SKIP OVER PARTITION NAME IN LABEL
5059 015622 012705 000000G MOV #.TPDBA,R5 ;START AT BEGINNING OF THE TASK PARTITION DIRECTORY
5060 ;
5061 015626 026513 000000G 21$: CMP T.PN+0(R5),(R3) ;FIRST HALF OF NAME MATCH?
5062 015632 001004 BNE 25$ ;NO-- GO ON TO NEXT ENTRY
5063 015634 026563 000002G 000002 CMP T.PN+2(R5),2(R3) ;YES-- SECOND HALF MATCH?
5064 015642 001432 BEQ PARFND ;YES-- WE FOUND THE PARTITION
5065 ;
5066 015644 062705 000000G 25$: ADD #T.SZ,R5 ;NO-- BUMP TO NEXT ENTRY IN TPD
5067 015650 020527 000000G CMP R5,#.TPDEA ;ARE WE AT THE END OF THE DIRECTORY?
5068 015654 103764 BLO 21$ ;NO-- KEEP LOOKING FOR OUR PARTITION
5069 015656 010324 MOV R3,(R4)+ ;YES-- PARTITION NOT FOUND-- SAVE ADDR OF NAME FOR ERR
5070 015660 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
015660 012746 000052' MOV #$$$,-(SP)
015664 004737 017052' JSR PC,TYPMSG
015670 000416 BR CLSFIL
5071 ;
5073 015672 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
015672 012746 000076' MOV #$$$,-(SP)
015676 004737 017052' JSR PC,TYPMSG
015702 000411 BR CLSFIL
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 65-1
SETUP STD ENTRY
5075 ;
5076 015704 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
015704 012746 000125' MOV #$$$,-(SP)
015710 004737 017052' JSR PC,TYPMSG
015714 000404 BR CLSFIL
5077 ;
5078 015716 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
015716 012746 000142' MOV #$$$,-(SP)
015722 004737 017052' JSR PC,TYPMSG
5079 ;
5080 015726 000575 CLSFIL: BR FILERX ;CLOSE FILE IF FILE OPERN & ERROR
5081 ;
5082 ; PARTITION FOUND-- SAVE THE ADDRESS IN THE STD AND CHECK IT OUT
5083 ;
5084 015730 010524 PARFND: MOV R5,(R4)+ ;(S.TD) SET ADDRESS OF TPD ENTRY
5085 ;
5086 015732 022121 CMP (R1)+,(R1)+ ;(L$BFLG) SKIP TASK FLAGS
5087 015734 005724 TST (R4)+ ;(S.TF) FLAG TASK TO RETSTE ON EXIT
5088 ;
5089 015736 112724 000062 MOVB #DEFPRI,(R4)+ ;NONE-- USE DEFAULT
5090 ;
5091 015742 013700 014406' MOV PUDADR,R0 ;GET THE ADDRESS WHERE WE FOUND OUR FILE
5092 015746 012703 177777 MOV #-1,R3 ;START THE COUNT AT ZERO
5093 015752 162700 000000G SUB #.PUDBA,R0 ;MAKE R0 INDEX INTO PUD
5094 015756 005203 30$: INC R3 ;BUMP THE INDEX
5095 015760 162700 000050 SUB #U.SZ,R0 ;DIVIDE PUD ADDRESS
5096 015764 002374 BGE 30$ ; BY THE ENTRY SIZE
5097 015766 110324 MOVB R3,(R4)+ ;(S.DI) SYSTEM DISK INDICATOR
5098 ;
5099 015770 016524 000000G MOV T.BA(R5),(R4)+ ;(S.BA) BASE ADDRESS OF TASK (NO KT-11)
5103 015774 012114 MOV (R1)+,(R4) ;(L$BLDZ) (S.LZ) LOAD SIZE OF TASK
5104 015776 006314 ASL (R4) ;MAKE IT REAL ADDRESS (*64)
5105 016000 006314 ASL (R4) ; . .
5106 016002 006314 ASL (R4) ; . .
5107 016004 006314 ASL (R4) ; . .
5108 016006 006314 ASL (R4) ; . .
5109 016010 006324 ASL (R4)+ ; . .
5111 016012 012114 MOV (R1)+,(R4) ;(L$BMXZ) (S.MZ) MAXIMUM SIZE OF TASK
5113 016014 006314 ASL (R4) ;MAKE REAL ADDRESS (*64)
5114 016016 006314 ASL (R4) ; . .
5115 016020 006314 ASL (R4) ; . .
5116 016022 006314 ASL (R4) ; . .
5117 016024 006314 ASL (R4) ; . .
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 65-2
SETUP STD ENTRY
5118 016026 006314 ASL (R4) ; . .
5120 016030 026524 000000G CMP T.PZ(R5),(R4)+ ;WILL TASK FIT IN PARTITION SPECIFIED?
5121 016034 103723 BLO TTBERR ;NO-- DON'T TRY TO INSTALL IT
5123 016036 026521 000000G CMP T.BA(R5),(R1)+ ;(L$BSA) IS TASK ADDRESS SAME AS PARTITION ADDRESS?
5124 016042 001313 BNE IPAERR ;NO-- DON'T INSTALL IT
5128 ;
5129 016044 016224 000076 MOV H.IPC(R2),(R4)+ ;(S.PC) SET INTIAL PC FROM HEADER
5130 016050 016224 000100 MOV H.ISP(R2),(R4)+ ;(S.SP) ALSO INITIAL SP
5131 016054 022424 CMP (R4)+,(R4)+ ;MOVE OVER SEND/REQUEST LISTHEAD
5132 016056 005024 CLR (R4)+ ;(S.SS) SST VECTOR TABLE ADDRESS
5133 ;
5134 016060 013714 014462' MOV FILADR+0,(R4) ;(S.DL+0) DISK ADDRESS OF TASK IMAGE
5135 016064 012400 MOV (R4)+,R0 ;COPY IT IN CASE IT'S ZERO
5136 016066 013714 014464' MOV FILADR+2,(R4) ;(S.DL+2) SECOND HALF OF DISK ADDRESS
5137 016072 051400 BIS (R4),R0 ;WERE BOTH WORDS ZERO?
5138 016074 001710 BEQ TNCERR ;YES-- TASK FILE IS NOT CONTIGUOUS
5139 016076 062114 ADD (R1)+,(R4) ;(L$BHRB) + RELATIVE BLOCK IN FILE= REAL ADDRESS
5140 016100 005544 ADC -(R4) ;ADD THE CARRY BACK TO HIGH ORDER WORD
5141 ;
5142 016102 012137 014412' MOV (R1)+,LBLNUM ;(L$BBLK) SAVE # BLOCKS IN LABEL GROUP FOR LATER
5143 ; BR SETLUN ;NOW SET UP THE LUN'S
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 66
SETUP LOGICAL UNIT TABLE FOR TASK
5145 .SBTTL SETUP LOGICAL UNIT TABLE FOR TASK
5146 ;
5147 ; LOOP THROUGH SECOND AND THIRD LABEL BLOCKS FOR ALL 255 LUNS
5148 ; R2 -- ADDRESS OF HEADER BLOCK BUFFER
5149 ;
5150 016106 062702 000130 SETLUN: ADD #H.NLUN,R2 ;POINT TO # LUNS, AND LUN TABLE IN HEADER
5151 016112 012205 MOV (R2)+,R5 ;(H.NLUN) GET # LUNS TO SET UP, POINT TO LUN TABLE IN HEADER
5152 016114 001471 BEQ 80$ ;NONE-- JUST CLOSE FILE
5153 016116 013701 014416' MOV LBLBFE,R1 ;FORCE READ OF NEXT LABEL BLOCK
5154 ;
5155 ; SEE IF WE MUST WRITE OUT THIS BLOCK AND READ NEXT BLOCK OF HEADER
5156 ;
5157 016122 10$: CALL NXTHDR ;GO ON TO NEXT BLOCK?
016122 004737 016642' JSR PC,NXTHDR
5158 016126 103471 BCS FILERR ;FAILED
5159 ;
5160 ; SEE IF WE NEED TO READ ANOTHER LABEL BLOCK
5161 ;
5162 016130 020137 014416' 20$: CMP R1,LBLBFE ;HAVE WE FINISHED THIS LABEL BLOCK?
5163 016134 103410 BLO 30$ ;NO-- JUST GET ANOTHER ENTRY FROM IT
5164 016136 005004 CLR R4 ;YES-- ASSUME NO MORE TO DO
5165 016140 023737 014410' 014412' CMP LBLBLK,LBLNUM ;HAVE WE RUN OUT OF LABEL BLOCKS?
5166 016146 002043 BGE 60$ ;YES-- READ NO MORE-- JUST ZERO
5167 016150 CALL REDLBL ;YES-- READ NEXT ONE
016150 004737 016720' JSR PC,REDLBL
5168 016154 103456 BCS FILERR ;SPLAT
5169 ;
5170 ; FIND THE PUD ADDRESS OF THE DEVICE FROM THE LABEL BLOCK
5171 ;
5172 016156 005711 30$: TST (R1) ;IS THIS A ZERO ENTRY?
5173 016160 001434 BEQ 40$ ;YES-- JUST STORE ZERO
5174 016162 013704 014406' MOV PUDADR,R4 ;ASSUME DEVICE OV
5175 016166 022711 053117 CMP #"OV,(R1) ;THIS OVERLAY DEVICE?
5176 016172 001430 BEQ 50$ ;YES-- WE HAVE PUD ADDRESS
5177 ;
5178 016174 012704 000000G 31$: MOV #.PUDBA,R4 ;NO-- START SEARCHING THROUGH THE PUD
5179 ;
5180 016200 021164 000000G 33$: CMP (R1),U.DN(R4) ;THIS OUR DEVICE?
5181 016204 001004 BNE 35$ ;NO-- TRY ANOTHER ONE
5182 016206 126164 000002 000000G CMPB 2(R1),U.UN(R4) ;YES-- RIGHT UNIT #
5183 016214 001417 BEQ 50$ ;YES-- WE HAVE PUD ADDRESS IN R4
5184 ;
5185 016216 062704 000050 35$: ADD #U.SZ,R4 ;NO-- BUMP TO NEXT PUD ENTRY
5186 016222 020427 000000G CMP R4,#.PUDEA ;END OF PUD YET?
5187 016226 103764 BLO 33$ ;NO-- LOOK AT THIS ENTRY
5188 ;
5189 016230 012704 014652' MOV #CNVTBL,R4 ;ENTRY NOT FOUND-- SEE IF CONVERTIBLE DEVICE
5190 ;
5191 016234 022411 37$: CMP (R4)+,(R1) ;DEVICE MATCH?
5192 016236 001403 BEQ 38$ ;YES-- GET THE CONVERTED NAME AND GO AWAY
5193 016240 005724 TST (R4)+ ;NO-- IS THIS END OF TABLE?
5194 016242 001374 BNE 37$ ;NO-- KEEP ON LOOKING
5195 016244 000402 BR 40$ ;YES-- DEVICE NOT FOUND-- STORE 0
5196 ;
5197 016246 011411 38$: MOV (R4),(R1) ;DEVICE FOUND IN CONVERSION TABLE--
5198 016250 000751 BR 31$ ; SAVE AS NEW DEVICE AND SCAN PUD FOR IT
5199 ;
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 66-1
SETUP LOGICAL UNIT TABLE FOR TASK
5200 016252 005004 40$: CLR R4 ;ENTRY NOT FOUND-- CLEAR THE PUD ADDRESS
5201 ;
5202 016254 022121 50$: CMP (R1)+,(R1)+ ;SKIP OVER ENTRY IN LABEL BLOCK
5203 ;
5204 016256 010422 60$: MOV R4,(R2)+ ;STORE THE PUD ADDRESS IN LUT IN HEADER
5205 016260 CALL NXTHDR ;SEE IF WE NEED ANOTHER HEADER BLOCK
016260 004737 016642' JSR PC,NXTHDR
5206 016264 103412 BCS FILERR ;I/O ERROR-- GIVE UP
5207 016266 005022 CLR (R2)+ ;CLEAR SECOND WORD OF HEADER ENTRY
5208 ;
5209 016270 077564 SOB R5,10$ ;LOOP FOR ALL LUNS IN HEADER
5210 016272 CALL WRTHDR ;WRITE OTU THE LAST HEADER BLOCK
016272 004737 016670' JSR PC,WRTHDR
5211 016276 103405 BCS FILERR ;FAILED
5212 ;
5213 ; ALL DONE WITH THE TASK FILE-- CLOSE IT UP
5214 ;
5215 016300 80$: CALL RETBUF ;RETURN THE BUFFERS
016300 004737 016436' JSR PC,RETBUF
5216 016304 CALL FILCLS ;CLOSE THE FILE
016304 004737 016760' JSR PC,FILCLS
5217 016310 103075 BCC REQTSK ;OK-- GO PUT US IN THE STD
5218 ;
5219 ; ALL FILE I/O ERRORS END UP HERE
5220 ;
5221 016312 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
016312 012746 000173' MOV #$$$,-(SP)
016316 004737 017052' JSR PC,TYPMSG
5222 016322 FILERX: CALL FILCLS ;GIVE CLOSE A TRY
016322 004737 016760' JSR PC,FILCLS
5223 ;
5224 016326 012746 016616' RETNOD: MOV #ALLDON,-(SP) ;RETURN ALL BUFFERS AND STD NODE
5225 016332 .INH0 ;;OTHER ERROR-- MUST REMOVE TASK FROM THE STD
016332 013746 177776 MOV @#PS,-(SP)
016336 112737 000140 177776 MOVB #140,@#PS
5226 016344 012701 014354' MOV #REQBLK,R1 ;FIND THE STD OF THIS TASK
5227 016350 CALL ..FSTD
016350 004737 000000G JSR PC,..FSTD
5228 016354 001015 BNE 60$ ;CAN'T FIND IT?????
5229 016356 162737 000002 000000G SUB #2,.STDTZ ;;ONE LESS ENTRY IN THE STD NOW
5230 016364 013705 000000G MOV .STDTZ,R5 ;; SO GET NEW LENGTH
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 66-2
SETUP LOGICAL UNIT TABLE FOR TASK
5231 016370 063705 000000G ADD .STDTA,R5 ;;MAKE ADDRESS OF LAST ENTRY IN THE TABLE
5232 016374 005743 TST -(R3) ;;BACK UP THE POINTER
5233 ;
5234 016376 020305 50$: CMP R3,R5 ;;AT END OF TABLE YET?
5235 016400 101003 BHI 60$ ;;YES-- ALL DONE
5236 016402 016323 000002 MOV 2(R3),(R3)+ ;;NO-- MOVE ANOTHER ENTRY DOWN
5237 016406 000773 BR 50$ ;;LOOP TO MOVE WHOLE TABLE DOWN
5238 ;
5239 016410 60$: .ENB0 ;;RESTORE TASK SWITCHING
016410 004737 000000G JSR PC,..ENB0
5240 ;
5241 ; RETALL -- RETURN ALL BUFFERS AND STD NODE
5242 ;
5243 016414 013701 014366' RETALL: MOV STDADR,R1 ;GET THE STD ADDRESS
5244 016420 001406 BEQ RETBUF ;NONE-- JUST RETURN THE BUFFERS
5245 016422 012704 000000G MOV #.POLLH,R4 ;ADD IT TO THE FREE POOL
5246 016426 CALL ..NADD ;PUT IT BACK
016426 004737 000000G JSR PC,..NADD
5247 016432 005037 014366' CLR STDADR ;NO MORE STD NODE
5248 ;
5249 016436 012701 001000 RETBUF: MOV #512.,R1 ;SET TO RETURN A BLOCK
5250 016442 012703 000000G MOV #.BGBUF,R3 ; TO THE BIG BUFFER LIST HEAD
5251 016446 013700 014414' MOV LBLBUF,R0 ;GET ADDRESS OF LABEL BLOCK BUFFER
5252 016452 001402 BEQ 20$ ;NONE-- TRY HEADER BUFFER
5253 016454 CALL ..DEC2 ;DE-ALLOCATE THE BUFFER
016454 004737 000000G JSR PC,..DEC2
5254 ;
5255 016460 013700 014422' 20$: MOV HDRBUF,R0 ;ALSO THE HEADER BUFFER
5256 016464 001402 BEQ CLRBUF ;NONE-- JUST CLEAN UP
5257 016466 CALL ..DEC2 ;DE-ALLOCATE THE HEADER BUFFER
016466 004737 000000G JSR PC,..DEC2
5258 ;
5259 016472 005037 014414' CLRBUF: CLR LBLBUF ;NO MORE LABEL BUFFER
5260 016476 005037 014422' CLR HDRBUF ; OR HEADER BUFFER
5261 016502 RETURN ;THAT'S IT
016502 000207 RTS PC
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 67
RE-REQUEST TASK
5263 .SBTTL RE-REQUEST TASK
5264 ;
5265 ; TASK REQUEST BLOCK IS STILL SET UP FROM CALL
5266 ;
5267 016504 REQTSK: .INH0 ;INHIBIT TASK SWITCHING
016504 013746 177776 MOV @#PS,-(SP)
016510 112737 000140 177776 MOVB #140,@#PS
5268 016516 013704 014366' MOV STDADR,R4 ;FIND STD ADDRESS
5269 016522 042764 040001 000000G BIC #SF.TA!SF.IR,S.FW(R4) ;CLEAR ACTIVE BIT SO IT CAN BE REQUESTED
5270 016530 012700 014354' MOV #REQBLK,R0
5271 016534 RQST$S R0,,REQBLK+10 ;RE-REQUEST TASK
016534 005046 CLR -(SP)
016536 013746 014364' MOV REQBLK+10,-(SP)
016542 005046 CLR -(SP)
016544 005046 CLR -(SP)
016546 016046 000002 MOV 2(R0),-(SP)
016552 011046 MOV (R0),-(SP)
016554 012746 MOV (PC)+,-(SP)
016556 013 007 .BYTE 11.,7
016560 104375 EMT 375
5272 016562 .ENB0 ;ENABLE TASK SWITCHING
016562 004737 000000G JSR PC,..ENB0
5273 016566 005737 000000G TST $DSW ;SUCCESS/FAILURE?
5274 016572 100011 BPL ALLDON ;SUCCESS -- ALL OK
5275 ;
5276 ; REQUEST FAILED-- IF TASK ALREADY ACTIVE, THAT'S OK
5277 ;
5278 016574 023727 000000G 177771 CMP $DSW,#IE.ACT ;TASK ALREADY ACTIVE?
5279 016602 001405 BEQ ALLDON ;YES-- WE ARE HAPPY
5280 ;
5281 016604 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
016604 012746 000251' MOV #$$$,-(SP)
016610 004737 017052' JSR PC,TYPMSG
016614 000644 BR RETNOD
5282 ;
5283 ; ALL DONE-- GO BACK TO WAITING
5284 ;
5285 016616 000137 014676' ALLDON: JMP INSTAL ;RETURN AND EXIT IF NO MORE TO DO
5286 ;
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 68
TASK FILE I/O ROUTINES
5288 .SBTTL TASK FILE I/O ROUTINES
5289 ;
5290 ; FILFNA -- DO A 'FIND NAME IN DIRECTORY' FUNCTION TO FIND A FILE
5291 ; FILBLK -- FILE-NAME BLOCK SET UP FOR DESIRED FILE
5292 ;
5293 016622 012700 004400 FILFNA: MOV #IO.FNA,R0 ;DO A FIND FILE IN DIRECTORY
5294 016626 005001 CLR R1 ;NO FILE-ID
5295 016630 005002 CLR R2 ;NO ATTRIBUTES
5296 016632 005003 CLR R3 ;NO ACCESS
5297 016634 012704 014426' MOV #FILBLK,R4 ;SET TO DO IT TO THE RIGHT FILE
5298 016640 000454 BR FILQIO ;GO DO IT AND RETURN
5299 ;
5300 ; NXTHDR -- ROUTINE TO WRITE OUT CURRENT HEADER BLOCK AND READ NEXT ONE
5301 ; IF AT END OF BLOCK.
5302 ; R2 -- POINTER TO HEADER BUFFER (HDR). UPDATED TO HDR+0 IF END OF BLOCK
5303 ;
5304 016642 023702 014424' NXTHDR: CMP HDRBFE,R2 ;END OF HEADER BUFFER?
5305 016646 101023 BHI RETXXX ;NO-- JUST RETURN
5306 016650 CALL WRTHDR ;YES-- WRITE OUT OLD HEADER
016650 004737 016670' JSR PC,WRTHDR
5307 016654 103420 BCS RETXXX ;ERROR-- RETURN WITH IT
5308 ; BR REDHDR ;READ THE NEXT ONE
5309 ;
5310 ; REDHDR -- READ NEXT HEADER BLOBK
5311 ;
5312 016656 005237 014420' REDHDR: INC HDRBLK ;BUMP TO NEXT BLOCK OF HEADER
5313 016662 012700 010400 MOV #IO.RVB,R0 ;DO A READ
5314 016666 000402 BR RWRHDR ;DO IT TO HEADER BLOCK
5315 ;
5316 ; WRTHDR -- WRITE CURRENT HEADER BLOCK
5317 ;
5318 016670 012700 011000 WRTHDR: MOV #IO.WVB,R0 ;DO A WRITE
5319 ; BR RWRHDR ;READ/WRITE A BLOCK
5320 ;
5321 ; RWRHDR -- READ/WRITE HEADER BLOCK
5322 ; R0 -- READ/WRTIE FUNCTION CODE
5323 ;
5324 016674 RWRHDR: PUSH R1 ;SAVE THE LABEL POINTER
016674 010146 MOV R1,-(SP)
5325 016676 013701 014422' MOV HDRBUF,R1 ;POINT TO HEADER BUFFER
5326 016702 013703 014420' MOV HDRBLK,R3 ;SET PROPER VBN
5327 016706 CALL RWRBLK ;DO A BLOCK
016706 004737 016752' JSR PC,RWRBLK
5328 016712 010102 MOV R1,R2 ;POINT R2 TO HDR BUFFER
5329 016714 POP R1 ;RESTORE LABEL POINTER
016714 012601 MOV (SP)+,R1
5330 016716 RETXXX: RETURN ;WITH CC-C SET/CLEAR BY RWRBLK
016716 000207 RTS PC
5331 ;
5332 ; REDLBL -- READ NEXT LABEL BLOCK
5333 ;
5334 016720 REDLBL: PUSH R2 ;SAVE THE HEADER POINTER
016720 010246 MOV R2,-(SP)
5335 016722 012700 010400 MOV #IO.RVB,R0 ;DO A READ
5336 016726 013701 014414' MOV LBLBUF,R1 ; TO THE LABEL BUFFER
5337 016732 005237 014410' INC LBLBLK ;BUMP TO NEXT LABEL BLOCK
5338 016736 013703 014410' MOV LBLBLK,R3 ; AND SAVE AS VBN TO READ
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 68-1
TASK FILE I/O ROUTINES
5339 016742 CALL RWRBLK ;READ THE BLOCK
016742 004737 016752' JSR PC,RWRBLK
5340 016746 POP R2 ;RESTORE THE HEADER POINTER
016746 012602 MOV (SP)+,R2
5341 016750 RETURN ;CC-C SET/CLEAR BY RWRBLK, R1 POINTS TO LBL BUFFER
016750 000207 RTS PC
5342 ;
5343 ; RWRBLK -- READ/WRITE A BLOCK
5344 ; R0 -- READ/WRITE FUNCTION CODE
5345 ; R1 -- ADDRESS OF BUFFER
5346 ; R3 -- VIRTUAL BLOCK NUMBER IN TASK FILE
5347 ;
5348 016752 012702 001000 RWRBLK: MOV #512.,R2 ;SET TO READ ONE BLOCK
5349 016756 000405 BR FILQIO ;DO IT TO TASK FILE
5350 ;
5351 ; FILCLS -- DE-ACCESS THE TASK FILE
5352 ;
5353 016760 012700 010000 FILCLS: MOV #IO.DAC,R0 ;DE-ACCESS FUNCTION
5354 016764 005001 CLR R1 ;NO FILE-ID BLOCK
5355 016766 005002 CLR R2 ;NO ATTRIBUTES ALLOWED
5356 016770 005004 CLR R4 ;NO FILE-NAME BLOCK EITHER
5357 ; BR FILQIO ;DO IT TO TASK FILE
5358 ;
5359 ; FILQIO -- PERFORM QUEUE I/O FUNCTION ON THE TASK FILE
5360 ; R0 -- FUNCTION CODE
5361 ; R1 -- PARAMETER #1 (FILE-ID BLOCK OR BUFFER ADDRESS)
5362 ; R2 -- PARAMETER #2 (ATTRIBUTE CONTROL BLOCK OR BUFFER LENGTH)
5363 ; R3 -- PARAMETER #5 (ACCESS CONTROL OR VIRTUAL BLOCK NUMBER)
5364 ; R4 -- PARAMETER #6 (FILENAME BLOCK)
5365 ;
5366 ; CC-C CLEAR IF SUCCESS, SET IF FAILURE.
5367 ;
5368 016772 FILQIO: QIOW$S R0,#TSKLUN,#E.FQIO,,#QIOSTS,,<R1,R2,,,R3,R4>
016772 010446 MOV R4,-(SP)
016774 010346 MOV R3,-(SP)
016776 005046 CLR -(SP)
017000 005046 CLR -(SP)
017002 010246 MOV R2,-(SP)
017004 010146 MOV R1,-(SP)
017006 005046 CLR -(SP)
017010 012746 014466' MOV #QIOSTS,-(SP)
017014 005046 CLR -(SP)
017016 112716 000001 MOVB #E.FQIO,(SP)
017022 012746 000002 MOV #TSKLUN,-(SP)
017026 010046 MOV R0,-(SP)
017030 012746 MOV (PC)+,-(SP)
017032 003 014 .BYTE 3,$$$T1
017034 104375 EMT 375
5369 017036 103404 BCS 90$ ;GIVE UP
5370 ;
5371 017040 105737 014466' 30$: TSTB QIOSTS+0 ;I/O SUCCESSFUL?
5372 017044 002001 BGE 90$ ;YES-- JUST RETURN WITH CC-C CLEAR
5373 ;
5374 017046 000261 80$: SEC ;NO-- RETURN ERROR
5375 017050 90$: RETURN ;RETURN FROM FILQIO
017050 000207 RTS PC
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 69
ERROR PROCESSING
5377 .SBTTL ERROR PROCESSING
5378 ;
5379 ; TYPMSG -- TYPE A MESSAGE
5380 ;
5381 ; CALL: PUSH #<ADDRESS OF ASCIZ TEXT>
5382 ; CALL TYPMSG
5383 ;
5384 017052 TYPMSG: PUSH <R0,R1,R2,R3,R4> ;SAVE USED REGISTERS
017052 010046 MOV R0,-(SP)
017054 010146 MOV R1,-(SP)
017056 010246 MOV R2,-(SP)
017060 010346 MOV R3,-(SP)
017062 010446 MOV R4,-(SP)
5385 017064 012704 014472' MOV #TYPBUF,R4 ;SET ADDRESS OF TYPEOUT BUFFER
5386 017070 012703 017362' MOV #INSMSG,R3 ;GET 'INS --'
5387 017074 CALL PUTSTR ;PUT IT IN STRING
017074 004737 017254' JSR PC,PUTSTR
5388 017100 016603 000014 MOV 14(SP),R3 ;GET ADDRESS OF THE TEXT TO TYPE
5389 017104 CALL PUTSTR ;TYPE IT
017104 004737 017254' JSR PC,PUTSTR
5390 017110 012703 017374' MOV #TSKMSG,R3 ;GET 'TSK= '
5391 017114 CALL PUTSTR ;PUT IT TOO
017114 004737 017254' JSR PC,PUTSTR
5392 017120 012703 014354' MOV #REQBLK,R3 ;POINT TO .RAD50 /TASK-NAME/
5393 017124 CALL PUTR50 ;PUT IT IN THERE, TOO
017124 004737 017264' JSR PC,PUTR50
5394 017130 013702 014366' MOV STDADR,R2 ;GET THE ADDRESS OF THE STD
5395 017134 016202 000000G MOV S.TD(R2),R2 ;GET ADDRESS OF .RAD50/PARTITION/
5396 017140 001407 BEQ 20$ ;NONE-- SKIP THIS
5397 017142 012703 017403' MOV #PARMSG,R3 ;SAY 'PAR= '
5398 017146 CALL PUTSTR ; . .
017146 004737 017254' JSR PC,PUTSTR
5399 017152 010203 MOV R2,R3 ;GET THE NAME ADDRESS
5400 017154 CALL PUTR50 ;PUT IT IN STRING
017154 004737 017264' JSR PC,PUTR50
5401 ;
5402 017160 112724 000012 20$: MOVB #12,(R4)+ ;STORE LF
5403 017164 112724 000015 MOVB #15,(R4)+ ;STORE CR
5404 017170 012700 014472' MOV #TYPBUF,R0 ;GET ADDRESS OF BUFFER BACK
5405 017174 160004 SUB R0,R4 ;COMPUTE LENGTH OF STRING
5406 017176 QIOW$S #IO.WLB,#CTYLUN,#E.FQIO,,,,<R0,R4,#40>
017176 012746 000040 MOV #40,-(SP)
017202 010446 MOV R4,-(SP)
017204 010046 MOV R0,-(SP)
017206 005046 CLR -(SP)
017210 005046 CLR -(SP)
017212 005046 CLR -(SP)
017214 112716 000001 MOVB #E.FQIO,(SP)
017220 012746 000001 MOV #CTYLUN,-(SP)
017224 012746 000400 MOV #IO.WLB,-(SP)
017230 012746 MOV (PC)+,-(SP)
017232 003 011 .BYTE 3,$$$T1
017234 104375 EMT 375
5407 017236 POP <R4,R3,R2,R1,R0> ;RESTORE THE REGISTERS
017236 012604 MOV (SP)+,R4
017240 012603 MOV (SP)+,R3
017242 012602 MOV (SP)+,R2
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 69-1
ERROR PROCESSING
017244 012601 MOV (SP)+,R1
017246 012600 MOV (SP)+,R0
5408 017250 POP (SP) ;RESTORE PC OVER MESSAGE ADDRESS
017250 012616 MOV (SP)+,(SP)
5409 017252 RETURN ;THAT'S IT FOR TYPMSG
017252 000207 RTS PC
5410 ;
5411 ; PUTSTR -- PUT STRING IN TYPE-OUT BUFFER
5412 ; R3 -- ADDRESS OF ASCIZ STRING
5413 ; R4 -- CURRENT POINTER TO TYPE-OUT BUFFER
5414 ;
5415 017254 112324 PUTSTR: MOVB (R3)+,(R4)+ ;COPY A CHARACTER
5416 017256 001376 BNE PUTSTR ; UNTIL ASCIZ
5417 017260 105744 TSTB -(R4) ;BACK OVER ZERO BYTE
5418 017262 RETURN ;RETURN FROM PUTSTR
017262 000207 RTS PC
5419 ;
5420 ; PUTR50 -- PUT RADIX 50 NAME IN TYPE-OUT BUFFER
5421 ; R3 -- ADDRESS OF TWO-WORD RADIX 50 BLOCK
5422 ; R4 -- CURRENT POINTER TO TYPE-OUT BUFFER
5423 ;
5424 017264 012300 PUTR50: MOV (R3)+,R0 ;GET FIRST 3 CHARS
5425 017266 CALL PUTR51 ;TYPE 'EM
017266 004737 017274' JSR PC,PUTR51
5426 017272 012300 MOV (R3)+,R0 ;GET NEXT THREE CHARS
5427 ; BR PUTR51 ;PUT THEM, TOO
5428 ;
5429 ; PUTR51 -- PUT 3 RADIX 50 CHARACTERS IN TYPE-OUT BUFFER
5430 ; R0 -- RADIX 50 TEXT
5431 ; R4 -- CURRENT POINTER TO TYPE-OUT BUFFER
5432 ;
5433 017274 012702 017336' PUTR51: MOV #T50TBL,R2 ;POINT TO TABLE OF DIVISORS
5434 ;
5435 017300 012201 20$: MOV (R2)+,R1 ;GET NEXT DIVISOR
5436 017302 001414 BEQ 90$ ;THREE HAVE BEEN DONE-- RETURN
5437 017304 CALL $DIV ;DIVIDE CURRENT TEXT BY 50**N
017304 004737 000032' JSR PC,$DIV
5438 017310 PUSH R1 ;SAVE THE REMAINDER
017310 010146 MOV R1,-(SP)
5439 017312 012701 017346' MOV #R50TBL,R1 ;POINT TO CONVERSION TABLE
5440 ;
5441 017316 061100 30$: ADD (R1),R0 ;CONVERT THE CHARACTER
5442 017320 105721 TSTB (R1)+ ;SKIP THE BYTE
5443 017322 120021 CMPB R0,(R1)+ ;HAVE WE FOUND THE CHAR YET?
5444 017324 103774 BLO 30$ ;NO-- LOOP UNTIL WE DO
5445 ;
5446 017326 110024 MOVB R0,(R4)+ ;YES-- SAVE THE CHAR IN TEXT
5447 017330 POP R0 ;RESTORE LAST REMAINDER AS NEW DIVIDEND
017330 012600 MOV (SP)+,R0
5448 017332 000762 BR 20$ ;GET ANOTHER CHARACTER
5449 ;
5450 017334 90$: RETURN ;FROM PUTR50/PUTR51
017334 000207 RTS PC
5451 ;
5452 017336 003100 000050 000001 T50TBL: .WORD 50*50,50,1,0 ;TABLE OF DIVISORS
017344 000000
5453 ;
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 69-2
ERROR PROCESSING
5454 017346 022 060 R50TBL: .BYTE <'0-36>-<50-50>,'0 ;36-47: 0-9
5455 017350 366 045 .BYTE <'%-35>-<'0-36>,'% ;35 : %
5456 017352 012 056 .BYTE <'.-34>-<'%-35>,'. ;34 : .
5457 017354 367 044 .BYTE <'$-33>-<'.-34>,'$ ;33 : $
5458 017356 067 101 .BYTE <'A-01>-<'$-33>,'A ;01-32: A-Z
5459 017360 340 040 .BYTE <' -00>-<'A-01>,' ;00 : <SPACE>
5460 .EVEN
5461 ;
5462 017362 015 012 111 INSMSG: .ASCIZ <15><12>/INS -- /
017365 116 123 040
017370 055 055 040
017373 000
5463 017374 040 040 124 TSKMSG: .ASCIZ / TSK=/
017377 123 113 075
017402 000
5464 017403 040 120 101 PARMSG: .ASCIZ / PAR=/
017406 122 075 000
5465 .EVEN
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 70
END STATEMENT
5467 .SBTTL END STATEMENT
5468 000001 .END
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 70-1
SYMBOL TABLE
AC.ENA= 000200 CDSIEN= 000100 DBINI 000512R DRY = 000200 EF.CRC= 000001
ADRSAV= ****** GX CDSNXM= 001000 DBIOD 000370R DR.DTE= 000011 EF.CRD= 000002
ALLDON 016616R CDSOFL= 010000 DCK = 100000 DSEND = 000004 EF.CRS= 000004
AOE = 001000 CDSPAK= 000002 DCOMST= 000001 DS04 = 004000 EF.IOD= ****** GX
ATCBLK 014636R CDSPWC= 000400 DD.CHI= 000002 DS05 = 002000 EF.LPC= 000002
A.EF = 000020 CDSRCK= 040000 DD.HEM= 000010 DS06 = 001000 EF.LPD= 000001
A.HA = ****** GX CDSRDY= 000200 DD.LER= 000010 DTBUF = ****** GX EF.LPQ= 000004
BCFHDS 011142R CDSRED= 000001 DD.OVF= 000020 DTCNT = ****** GX EF.LPS= 000020
BCFILF 011076R CDST = ****** GX DD.PCK= 000002 DTCW2 = ****** GX EF.LPW= 000040
BCFLDR 011162R CDSTOL= 000010 DD.PGZ= 000001 DTCW3 = ****** GX EF.NIR= ****** GX
BCFLDV 011170R CHNPNT= 000001 DD.RCK= 000001 DTE = 010000 EF.QIO= 000001
BCFRDS 011076R CHRINT= 020000 DD.RME= 000040 DTECMD= 000451 EF.SEP= 100000
BCFSDO 011122R CLIOD 000374R DD.SCK= 000004 DTEFLG= 000444 EF.TEF= 000400
BCFSTR 011204R CLRBUF 016472R DD.SFL= 000020 DTEF11= 000450 EPTR = 000000
BCFTAB 011060R CLSFIL 015726R DD.VFE= 000004 DTEMTD= 000455 ERMHER 007767R
BC.HDS= ****** GX CNUPE = 000002 DEFPRI= 000062 DTEMTI= 000456 ERMHNG 010004R
BC.LDR= ****** GX CNVTBL 014652R DELHLD= 002000 DTEXP = 177340 ERMNXD 007715R
BC.LDV= ****** GX CPE = 000010 DEMTIM= 000002 DTHD 002056RG ERMOFL 007735R
BC.RDS= ****** GX CRBFLN= ****** GX DEP = 010000 DTINI 002442R ERMVFE 007750R
BC.SDS= ****** GX CRBUFF= ****** GX DEX = 000400 DTNRM 002366R ERR = 100000
BC.STR= ****** GX CRCEVF= ****** GX DEXDON= 000004 DTOUT 002606R ERR10C= 010000
BIT0 = 000001 CRDCLR 013556R DEXWD1= 174406 DTRTC = ****** GX ERR10S= 020000
BIT1 = 000002 CRDINT 013026R DEXWD2= 174404 DTSTK 002336RG ERR11C= 000001
BIT10 = 002000 CREVFG= ****** GX DEXWD3= 174402 DTTSK = ****** GX ERR11S= 000002
BIT11 = 004000 CREXP = ****** GX DFUNC = 000200 DUNS 000460R EXSP 014346RG
BIT12 = 010000 CRHD 011776RG DF.DMG= 000004 DUPE = 000020 E.FCRB= 000004
BIT13 = 020000 CRHUNG= ****** GX DF.DMN= 000007 DURE = 000004 E.FCRC= 000001
BIT14 = 040000 CRINI 012360R DF.DOR= 000001 DVA = 004000 E.FCRD= 000002
BIT15 = 100000 CRIOD 012532R DF.EHG= 000010 DV.EOF= 000040 E.FCRS= 000003
BIT2 = 000004 CRLOOP 012444R DF.EHM= 000011 DV.F11= 000400 E.FLPC= 000002
BIT3 = 000010 CRMKT 012776R DF.EMG= 000005 DV.HNG= 001000 E.FLPD= 000001
BIT4 = 000020 CRMRKT 012276R DF.EMN= 000006 DV.IOP= 000020 E.FLPQ= 000003
BIT5 = 000040 CRPWUP 012352R DF.KLR= 000012 DV.LOG= 000100 E.FLPS= 000005
BIT6 = 000100 CRSSTV 012310R DF.KLW= 000013 DV.NXD= 000001 E.FLPW= 000006
BIT7 = 000200 CRSTBK= ****** GX DF.KLX= 000014 DV.OFL= 000002 E.FQIO= 000001
BIT8 = 000400 CRSTK 012256RG DF.OFF= 000002 DV.OIR= 000004 E.IOD = ****** GX
BIT9 = 001000 CRSTLN= ****** GX DF.ON = 000003 DV.SCN= 000010 E.NIR = ****** GX
BLKTT = ****** GX CRSTS = ****** GX DF.PDP= 000016 DV.URE= 000200 FCN 004606R
BPARER= 000020 CRTBL = ****** GX DF.PEX= 000015 DXFLAG 014346R FCNBD 004614R
BUFAIL 015432R CRTRP4 012312R DIAG1 = 174430 DXWD1 = 000006 FEDRV 003622R
BUSA16= 000020 CR.ACK= 004000 DIAG2 = 174432 DXWD2 = 000004 FEHD 003322RG
BUSA17= 000040 CR.HNG= 100000 DIAG3 = 174436 DXWD3 = 000002 FER = 000020
BYTESA= ****** GX CR.IOD= 010000 DIKL10= 000010 DXWRD1= 002000 FESTK 003602RG
CDBA = ****** GX CR.IOP= 020000 DLT = 100000 D$$H11= 000010 FETBL = ****** GX
CDBPCK= 020000 CR.NSF= 000400 DLYCNT= 174400 D.CCDR= ****** GX FETSK = ****** GX
CDBRCK= 040000 CR.NXD= 001000 DNBLK = ****** GX D.CLPT= ****** GX FE.DET= 040000
CDBSCK= 010000 CR.RHN= 002000 DNFCN = ****** GX D.FEPD= ****** GX FE.DTE= 020000
CDCC = ****** GX CR.SST= 040000 DNMSG 000442R D1011 = 000040 FE.SER= 004000
CDD = 000020 CS.EXP= 177670 DNSTS = ****** GX EBSEL = 000100 FE.STR= 002000
CDDB = ****** GX CTYLUN= 000001 DONE = 000200 EBUSPC= 000020 FILADR 014462R
CDSB16= 000020 CYCLS = 000002 DONSTR 004536R EBUSPS= 000004 FILBLK 014426R
CDSB17= 000040 C$$D11= 000001 DON10C= 040000 ECCMSK 000504R FILCLS 016760R
CDSDER= 004000 C.LEEF= 000002 DON10S= 100000 ECCWRD 000476R FILERA 015426R
CDSDLT= 002000 DAG1 = 000030 DON11C= 000100 ECH = 000100 FILERR 016312R
CDSEOF= 020000 DAG2 = 000032 DON11S= 000200 ECI = 004000 FILERX 016322R
CDSERR= 100000 DAG3 = 000036 DPS4 = 040000 EDONES= 040000 FILFNA 016622R
CDSHEM= 000004 DATE = 000004 DRESET= 000100 EF.CRB= 000010 FILQIO 016772R
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 70-2
SYMBOL TABLE
FMT22 = 010000 IE.IEF= 177637 INTRON= 000040 IO.RDN= 000022 LOAD11= 000004
FNDFIL 015166R IE.IFC= 177776 INTSON= 000001 IO.REL= 013400 LOBYTE= 000377
FORPRO= 000020 IE.IFU= 177747 INT10S= 000400 IO.RHD= 001010 LOINIT= 000400
GO = 000001 IE.ILL= 177726 INT11C= 002000 IO.RLB= 001000 LPALOC= 000214
GOERR = 000001 IE.ILU= 177640 INT11S= 004000 IO.RLV= 001100 LPBCTR= 000006 G
HCE = 000200 IE.INS= 177776 IOABT 004554R IO.RNA= 005400 LPBSAD= 000004 G
HCI = 002000 IE.IPR= 177641 IODN 004162R IO.RNC= 001004 LPCBUF= 000014 G
HCRC = 000400 IE.ISQ= 177703 IODNCR 013732R IO.RNE= 001020 LPCCTR= 000015 G
HDRBFE 014424R IE.ITI= 177643 IO.ACE= 007400 IO.RTC= 003400 LPCEVF= ****** GX
HDRBLK 014420R IE.ITS= 177770 IO.ACR= 006400 IO.RTI= 016400 LPCKSM= 000017 G
HDRBUF 014422R IE.LCK= 177745 IO.ACW= 007000 IO.RTK= 000060 LPCSA = ****** GX
HIBYTE= 177400 IE.LNL= 177646 IO.ADS= 014000 IO.RVB= 010400 LPCSM = ****** GX
H.IPC = 000076 IE.MBK= 177721 IO.APC= 014000 IO.RWD= 002400 LPCSRA= 000000 G
H.ISP = 000100 IE.MOD= 177753 IO.APV= 014010 IO.RWU= 002540 LPCSRB= 000002 G
H.LUN = 000132 IE.NBF= 177731 IO.ATT= 001400 IO.R1C= 002400 LPDCLR 010424R
H.LUT = ****** GX IE.NBK= 177727 IO.CCI= 014000 IO.SAO= 004000 LPDINT 006776R
H.NLUN= 000130 IE.NFI= 177704 IO.CCT= 002460 IO.SCS= 013000 LPEMSG 007662R
IAE = 002000 IE.NLN= 177733 IO.CLN= 003400 IO.SDI= 013000 LPEMSX 007675R
IE.ABO= 177761 IE.NNC= 177674 IO.CON= 015400 IO.SDO= 012400 LPERUN 007672R
IE.ACT= 177771 IE.NOD= 177751 IO.CRC= 001020 IO.SEC= 002520 LPEVFG= ****** GX
IE.ADP= 177636 IE.NSF= 177746 IO.CRE= 012000 IO.SEM= 002440 LPEXPA= ****** GX
IE.ALN= 177736 IE.OFL= 177677 IO.CTI= 015400 IO.SHT= 002410 LPEXPZ= ****** GX
IE.AST= 177660 IE.ONP= 177773 IO.CTL= 016400 IO.SLO= 005400 LPHD 005060RG
IE.BAD= 177777 IE.OVR= 177756 IO.DAC= 010000 IO.SMO= 002560 LPHUNG= ****** GX
IE.BBE= 177710 IE.PRI= 177760 IO.DCI= 014400 IO.SNM= 002450 LPINI 005450R
IE.BDI= 177714 IE.RAC= 177724 IO.DCT= 002470 IO.SPB= 002420 LPIOD 005622R
IE.BDR= 177716 IE.RAT= 177723 IO.DEL= 012400 IO.SPF= 002440 LPITH = ****** GX
IE.BDV= 177711 IE.RBG= 177730 IO.DET= 002000 IO.SSO= 004400 LPLOOP 005534R
IE.BHD= 177700 IE.RCN= 177722 IO.DIS= 016000 IO.SST= 002430 LPMCB = ****** GX
IE.BLK= 177754 IE.RER= 177740 IO.DTI= 016000 IO.STC= 002500 LPMKT 006742R
IE.BNM= 177712 IE.RNM= 177715 IO.ENA= 006000 IO.STP= 016400 LPMRKT 005360R
IE.BTF= 177675 IE.RSU= 177757 IO.EOF= 003000 IO.SYN= 003040 LPNIR 006502R
IE.BTP= 177725 IE.SDP= 177635 IO.ESA= 002500 IO.TRM= 002410 LPPCTR= 000010 G
IE.BVR= 177701 IE.SNC= 177735 IO.EXT= 011400 IO.UNL= 000042 LPQDPB 007640R
IE.BYT= 177755 IE.SPC= 177772 IO.FDX= 003020 IO.WAT= 013400 LPRAMD= 000012 G
IE.CKP= 177766 IE.SQC= 177734 IO.FNA= 004400 IO.WLB= 000400 LPRMA = ****** GX
IE.CKS= 177742 IE.SRE= 177762 IO.HDX= 003010 IO.WLS= 000410 LPRMC = ****** GX
IE.CLO= 177732 IE.STK= 177706 IO.HIS= 015000 IO.WLV= 000500 LPRMZ = ****** GX
IE.CON= 177752 IE.ULN= 177773 IO.INL= 002400 IO.WVB= 011000 LPRTRY= 000012
IE.DAA= 177770 IE.UPN= 177777 IO.ITI= 017000 IO.XMT= 014400 LPRTY = ****** GX
IE.DAO= 177763 IE.VER= 177774 IO.KIL= 000012 IO.XNA= 014410 LPSIZE= ****** GX
IE.DFU= 177750 IE.WAC= 177743 IO.LED= 012000 IPAERR 015672R LPSSTV 005404R
IE.DNA= 177771 IE.WAT= 177741 IO.LOV= 001010 IQ.Q = 000002 LPSTBK= ****** GX
IE.DNR= 177775 IE.WER= 177737 IO.LTK= 000050 IQ.X = 000001 LPSTK 005340RG
IE.DUN= 177767 IE.WLK= 177764 IO.MCS= 013400 IS.BV = 000005 LPSTLN= ****** GX
IE.DUP= 177707 IE.2DV= 177720 IO.MDA= 016000 IS.CLR= 000000 LPTBL = ****** GX
IE.EBX= 177776 IFLOP = 100000 IO.MDI= 014400 IS.CR = 006401 LPTDAT= 000016 G
IE.EOF= 177766 ILF = 000001 IO.MDO= 015400 IS.ESC= 015401 LPTHD = ****** GX
IE.EOT= 177702 ILR = 000002 IO.MLO= 006000 IS.PND= 000000 LPTPAR= 000040
IE.EOV= 177765 INITCR 013542RG IO.MOD= 003000 IS.RDD= 000002 LPTPBT= 010000
IE.EXP= 177676 INITLP 010354RG IO.MSO= 005000 IS.SET= 000002 LPTRP4 005406R
IE.FEX= 177717 INSHD 013746RG IO.RAL= 001010 IS.SUC= 000001 LPUNIT= ****** GX
IE.FHE= 177705 INSMSG 017362R IO.RAT= 013000 KLPWRF= 000010 LPUTBL= ****** GX
IE.FOP= 177713 INSTAL 014676RG IO.RBC= 003000 LBLBFE 014416R LPWRUP 005442R
IE.HFU= 177744 INSTK 014226RG IO.RCI= 015000 LBLBLK 014410R LP.CLR= 002000
IE.HWR= 177772 INTENB= 000100 IO.RCV= 015000 LBLBUF 014414R LP.EOF= 000200
IE.IDU= 177644 INTROF= 000010 IO.RDB= 001200 LBLNUM 014412R LP.F10= 000400
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 70-3
SYMBOL TABLE
LP.HNG= 100000 PARENB= 000002 RETRY = 000005 SSTSLP 007164R TSKMSG 017374R
LP.LIP= 001000 PARFND 015730R RETXXX 016716R STAT = 174434 TSTMOD= 000001
LP.MCH= 010000 PARMSG 017403R RFMAD0= 100000 STATD = 000034 TTBERR 015704R
LP.PZI= 020000 PBTHRD= 000004 RFMAD1= 040000 STATUS= 000022 TTPEN = ****** GX
LP.SST= 040000 PERCLR= 001000 RFMAD2= 020000 STDADR= 014366R TYPBUF 014472R
LP.UNT= 000003 PGE = 002000 RFMAD3= 010000 STSWD = ****** GX TYPMSG 017052R
LP.WAT= 004000 PGM = 001000 RM = 000010 SWR = 177570 T.BA = ****** GX
L$BBLK= 000024 PHYS = 100000 RMR = 000004 SWSLLT= 100000 T.HBCT= ****** GX
L$BFLG= 000010 PIDENT= 000000 RPAS = 000016 SYFLAG 014347R T.HCAD= ****** GX
L$BHRB= 000022 PRI7 = 000340 RPBA = 000004 SYMNTD 015100R T.HCBC= ****** GX
L$BLDZ= 000014 PROPNT= 000021 RPBUF = ****** GX SYMNT1 015144R T.HEMA= 177774
L$BMXZ= 000016 PRTOFF= 004000 RPCNT = ****** GX SYNTIM= 000004 T.HIBC= 177776
L$BPAR= 000004 PR0 = 000000 RPCS1 = 000000 S.DRFN= 000034 T.HVFC= 177775
L$BPRI= 000012 PR1 = 000040 RPCS2 = 000010 S.FW = ****** GX T.PN = ****** GX
L$BSA = 000020 PR2 = 000100 RPDA = 000006 S.TD = ****** GX T.PZ = ****** GX
L$BTSK= 000000 PR3 = 000140 RPDBR = 000022 TASKNF 015322R T.SZ = ****** GX
L$$P20= 000002 PR4 = 000200 RPDC = 000034 TB.ABO= 040000 T10AD = 000020
MCPE = 020000 PR5 = 000240 RPDS = 000012 TB.DON= 100000 T11AD = 000022
MDPE = 000400 PR6 = 000300 RPDT = 000026 TB.EOF= 020000 T11BC = 000016
MEFCN 004616R PR7 = 000340 RPEC1 = 000044 TB.LPC= 010000 T50TBL 017336R
MEMPAR= 000020 PS = 177776 RPEC2 = 000046 TB.RMD= 004000 UF.TL = ****** GX
MKDNR 000404RG PSWW1 = 000005 RPER1 = 000014 TB.SFN= 036000 UNASG1= 000032
MKSCDP 005372R PSWW10= 000014 RPEXP = 176700 TB.VFD= 002000 UNASG2= 000033
MNTBLK 014644R PSWW11= 000015 RPHD 000070RG TENAD1= 174410 UNASG3= 000034
MNTSYD 014744R PSWW12= 000016 RPLA = 000020 TENAD2= 174412 UNASG4= 000035
MODE00= 000004 PSWW13= 000017 RPMR = 000024 TESTLP 010164R UNASG5= 000036
MODE01= 000010 PSWW2 = 000006 RPOF = 000032 TEST00= 000400 UNASG6= 000037
MOL = 010000 PSWW3 = 000007 RPRNA = ****** GX TEST01= 001000 UNS = 040000
MPE11 = 001000 PSWW4 = 000010 RPRTC = ****** GX TEST02= 002000 UPE = 020000
MRKDT 002406R PSWW5 = 000011 RPSN = 000030 TNAD1 = 000010 U.ACP = ****** GX
MSGDPB 000422R PSWW6 = 000012 RPSTK 000350RG TNAD2 = 000012 U.DACP= ****** GX
MSGSIZ= 000016 PSWW7 = 000013 RPTSK = ****** GX TNCERR 015716R U.DN = ****** GX
MXF = 001000 PUDADR 014406R RPUNIT= ****** GX TNFERR 015412R U.FB = ****** GX
M.KTAE= 000010 PULSE = 000020 RPWC = 000002 TOBM = 000004 U.RP = ****** GX
M.KTEF= 000002 PUTR50 017264R RPWLO 000400R TOD = 000003 U.SZ = 000050
M.KTMG= 000004 PUTR51 017274R RSTERR= 001000 TOIP = 000002 U.UN = ****** GX
M.KTUN= 000006 PUTSTR 017254R RSX$$E= 000045 TOIT = 000001 U.VA = ****** GX
NED = 010000 QIOSTS 014466R RSX$$F= 000101 TO10 = 000200 VFCFF 006730R
NEM = 004000 QSIZE = 000023 RSX$$K= 000126 TO10AD= 174420 VFCTBL 006726R
NODADR= ****** GX Q.IOAE= 000012 RSX$$V= 000014 TO10BC= 174414 VFUERR= 000100
NTRDMS 002424R Q.IOEF= 000006 RWRBLK 016752R TO10BM= 000001 VFULOD= 000002
NTRDSZ= 000016 Q.IOFN= 000002 RWRHDR 016674R TO10DB= 000400 VFURDY= 010000
NULSTP= 000040 Q.IOLU= 000004 R$$E18= 000001 TO10DN= 100000 VV = 000100
NUPE = 000002 Q.IOPL= 000014 R$$11D= 000001 TO10DT= 174424 WCE = 040000
NXTHDR 016642R Q.IOPR= 000007 R.AT = ****** GX TO10ER= 020000 WCF = 000040
N.DID = 000024 Q.IOSB= 000010 R.DP = ****** GX TO10PK= ****** GX WEP = 000010
N.FID = 000000 RAMIS0= 010000 R.FC = ****** GX TO11 = 000100 WFDNR 000416RG
N.FNAM= 000006 RAMLOD= 000003 R.LU = ****** GX TO11AD= 174422 WFDTD 002362R
N.FTYP= 000014 RAMPAR= 000010 R.PB = ****** GX TO11BC= 174416 WFDTQ 002356R
N.FVER= 000016 RCVBLK 014350R R50TBL 017346R TO11BM= 020000 WFEF1 003314R
N.NEXT= 000022 REDHDR 016656R SCD = 000040 TO11DB= 004000 WFMKT 002420R
N.STAT= 000020 REDLBL 016720R SETLUN 016106R TO11DN= 000200 WLE = 004000
OFFLIN= 000200 REQBLK 014354R SETSTD 015576R TO11DT= 174426 WRL = 004000
ONLINE= 004000 REQTSK 016504R SF.IR = 040000 TO11ER= 000002 WRTHDR 016670R
OPI = 020000 RETALL 016414R SF.TA = 000001 TRE = 040000 W.TSEF= 000002
OPTVFU= 004000 RETBUF 016436R SNSTR 004224R TSKFND 015444R ZSTOP = 040000
PAGZRO= 040000 RETNOD 016326R SSTSCR 013136R TSKLUN= 000002 $CDINT 013566RG
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 10-NOV-81 17:28 PAGE 70-4
SYMBOL TABLE
$CD11 = 000001 .BGBUF= ****** GX .LCRM2= 056000 .PUDEA= ****** GX ..AKLP 011372RG
$DBDTE= 000001 .BRCLK= 005000 .LCRM3= 055000 .RCRM1= 147000 ..ALCB= ****** GX
$DH11 = 000001 .CECLK= 004000 .LCRM4= 054000 .RCRM2= 146000 ..ALC2= ****** GX
$DIRAC= 000001 .CLRMR= 006000 .LCRM5= 053000 .RCRM3= 145000 ..DECB= ****** GX
$DIV 000032RG .CLRUN= 010000 .LDAR = 077000 .RCRM4= 144000 ..DECN= ****** GX
$DSW = ****** GX .COMEF= ****** GX .LDBRL= 043000 .RCSPF= 141000 ..DEC2= ****** GX
$DTA = 000001 .CONBT= 012000 .LDBRR= 042000 .RDJ14= 134000 ..DOLP 011614RG
$DTE = 000001 .CRPFL= ****** GX .LDCK1= 046000 .RDJ71= 135000 ..DOL1 011600RG
$DTINT 002774RG .CRTSK= ****** GX .LDCK2= 047000 .RDMAB= 133000 ..DQRN= ****** GX
$FE = 000001 .CSHRG= 164000 .LDDIS= 045000 .RPELC= ****** GX ..DSEV= ****** GX
$F11 = 000001 .CYLTM= 000074 .LDRJD= 064000 .RPELQ= ****** GX ..ENB0= ****** GX
$LPINT 010454RG .DBINT 001236RG .LDRJV= 063000 .RPUNT= ****** GX ..FSTD= ****** GX
$LP20 = 000001 .DRLTC= 015000 .LDRM1= 060000 .SECLK= 003000 ..INTX= ****** GX
$MUL 000000RG .DSACF= 066000 .LDRM2= 061000 .SETMR= 007000 ..IODN= ****** GX
$RP04 = 000001 .DSIOJ= 065000 .LDRM3= 062000 .SETRN= 011000 ..NADD= ****** GX
$TOP10= 000001 .EIOJA= 067000 .LDSEL= 044000 .SSCLK= 002000 ..PTLP 011452RG
$$ = 000037 .FEACK 004242RG .LPPFL= ****** GX .STDTA= ****** GX ..SACK= ****** GX
$$MSG = 000000 .FEST 004346RG .MEMRS= 076000 .STDTZ= ****** GX ..SPCR 013674RG
$$$ = 000251R 002 .GFNR = 102000 .PCAB1= 150000 .STPCL= 000000 ..SPLP 011220RG
$$$ARG= 000003 .INICL= 070000 .PCAB2= 151000 .STRCL= 001000 ..STCR 013652RG
$$$OST= 000012 .IRLTC= 014000 .PCAB3= 152000 .TPDBA= ****** GX ..STIN= ****** GX
$$$T1 = 000011 .LCRDL= 052000 .PCAB4= 153000 .TPDEA= ****** GX ..STLP 011010RG
$$$T2 = 000000 .LCRDR= 051000 .POLLH= ****** GX .WRMBX= 071000 ...GBL= 000000
$$$$ = 000002 .LCRM1= 057000 .PUDBA= ****** GX ..AKCR 013716RG
. ABS. 000000 000
017412 001
TEXT 000275 002
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 12496 WORDS ( 49 PAGES)
DYNAMIC MEMORY: 13382 WORDS ( 51 PAGES)
ELAPSED TIME: 00:02:45
,[100,20]DRIVERS10.LST/-SP/CRF=[100,30]DRIVERS10.TMP
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 1
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
AC.ENA = 000200 #61-4757 64-5021
ADRSAV = ****** GX *19-1979 20-2034 *20-2039 *21-2073 21-2083 *21-2084
ALLDON 016616 R 66-5224 67-5274 67-5279 #67-5285
AOE = 001000 #8-397 10-710 10-721
ATCBLK 014636 R #62-4801 64-5019
A.EF = 000020 *10-763 #11-1227 *11-1329 *11-1430 19-1929 *19-1931 *21-2091 30-2620 51-4202
A.HA = ****** GX 19-1992 63-4859
BCFHDS 011142 R 40-3650 #40-3686
BCFILF 011076 R 40-3642 #40-3659 40-3680 40-3689
BCFLDR 011162 R 40-3652 #40-3695
BCFLDV 011170 R 40-3653 #40-3701
BCFRDS 011076 R 40-3649 #40-3664
BCFSDO 011122 R 40-3651 #40-3677
BCFSTR 011204 R 40-3648 #40-3714
BCFTAB 011060 R 40-3639 40-3645 #40-3647 40-3648 40-3649 40-3650 40-3651 40-3652 40-3653
BC.HDS = ****** GX 35-3279 40-3650 53-4461
BC.LDR = ****** GX 40-3652
BC.LDV = ****** GX 40-3653
BC.RDS = ****** GX 40-3649
BC.SDS = ****** GX 40-3651
BC.STR = ****** GX 19-2022 21-2058 40-3648 52-4246
BIT0 = 000001 #11-1223 22-2214 #22-2229 23-2320 23-2337 25-2407 25-2423 25-2439 28-2524
30-2606 35-3257 #46-4027 46-4038 47-4068 51-4191 #61-4691 61-4734
BIT1 = 000002 #11-1223 22-2216 #22-2229 23-2319 23-2336 25-2408 25-2424 25-2440 28-2524
#46-4027 46-4040 47-4067 #61-4691
BIT10 = 002000 #11-1223 #22-2229 22-2263 23-2306 23-2326 28-2512 #46-4027 47-4058 49-4130
#61-4691
BIT11 = 004000 #11-1223 #22-2229 22-2262 23-2305 23-2325 28-2507 #46-4027 47-4057 49-4128
#61-4691
BIT12 = 010000 #11-1223 #22-2229 22-2261 23-2304 23-2324 28-2504 #46-4027 47-4056 47-4075
49-4126 #61-4691
BIT13 = 020000 #11-1223 #22-2229 22-2260 23-2303 28-2501 #46-4027 47-4055 47-4074 49-4124
#61-4691
BIT14 = 040000 #11-1223 #22-2229 22-2259 23-2302 28-2498 #46-4027 47-4054 47-4073 49-4121
#61-4691
BIT15 = 100000 #11-1223 #22-2229 22-2258 23-2301 28-2495 35-3279 #46-4027 47-4053 49-4117
52-4246 53-4461 #61-4691
BIT2 = 000004 #11-1223 22-2218 #22-2229 23-2315 23-2335 25-2409 25-2425 25-2441 #46-4027
46-4042 47-4066 #61-4691
BIT3 = 000010 #11-1223 #22-2229 23-2314 23-2334 25-2410 25-2426 25-2442 #46-4027 46-4044
47-4065 #61-4691
BIT4 = 000020 #11-1223 22-2221 #22-2229 23-2313 23-2333 25-2411 25-2427 25-2443 #46-4027
47-4064 #61-4691
BIT5 = 000040 #11-1223 22-2223 #22-2229 23-2312 23-2332 25-2412 25-2428 #46-4027 47-4063
#61-4691
BIT6 = 000100 #11-1223 #22-2229 23-2311 23-2331 25-2413 #46-4027 47-4062 #61-4691
BIT7 = 000200 #11-1223 #22-2229 23-2310 23-2330 25-2414 28-2520 #46-4027 47-4061 #61-4691
61-4757
BIT8 = 000400 #11-1223 #22-2229 23-2308 23-2328 25-2415 28-2517 35-3257 #46-4027 47-4060
49-4134 #61-4691
BIT9 = 001000 #11-1223 #22-2229 23-2307 23-2327 25-2416 28-2514 #46-4027 47-4059 49-4132
#61-4691
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 2
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
BLKTT = ****** GX 21-2139
BPARER = 000020 #11-1223 #22-2229 #46-4027 #61-4691
BUFAIL 015432 R #64-4993 64-5003 64-5010
BUSA16 = 000020 #23-2313 44-3959
BUSA17 = 000040 #23-2312 44-3959
BYTESA = ****** GX *19-1980 *19-2003 19-2006 20-2036 20-2038 *20-2040 *21-2072 21-2078 *21-2080
*21-2085 21-2088
CDBA = ****** GX *52-4288
CDBPCK = 020000 #47-4074 53-4417
CDBRCK = 040000 #47-4073 53-4413
CDBSCK = 010000 #47-4075 53-4421
CDCC = ****** GX *52-4287 56-4541
CDD = 000020 #11-1223 #22-2229 #46-4027 #61-4691
CDDB = ****** GX 53-4411 53-4447
CDSB16 = 000020 #47-4064
CDSB17 = 000040 #47-4063
CDSDER = 004000 #47-4057
CDSDLT = 002000 #47-4058 53-4404
CDSEOF = 020000 #47-4055 53-4396
CDSERR = 100000 #47-4053
CDSHEM = 000004 #47-4066 53-4429
CDSIEN = 000100 #47-4062 52-4289 52-4303 52-4306
CDSNXM = 001000 #47-4059 53-4404
CDSOFL = 010000 #47-4056 52-4279 53-4388
CDSPAK = 000002 #47-4067
CDSPWC = 000400 #47-4060 54-4484
CDSRCK = 040000 #47-4054 53-4435
CDSRDY = 000200 #47-4061 53-4408
CDSRED = 000001 #47-4068 52-4289
CDST = ****** GX 52-4279 *52-4289 52-4303 *52-4306 53-4387 53-4445 53-4447 *54-4484 56-4536
56-4545
CDSTOL = 000010 #47-4065
CHNPNT = 000001 #11-1223 #22-2229 #46-4027 #61-4691
CHRINT = 020000 #23-2303 35-3193 39-3487 39-3509 42-3820
CLIOD 000374 R #8-453 9-661
CLRBUF 016472 R 63-4844 63-4844 66-5256 #66-5259
CLSFIL 015726 R 65-5070 65-5073 65-5076 #65-5080
CNUPE = 000002 #11-1223 #22-2229 #46-4027 #61-4691
CNVTBL 014652 R #62-4814 66-5189
CPE = 000010 #8-403
CRBFLN = ****** GX 52-4245 52-4287
CRBUFF = ****** GX 52-4235 52-4288
CRCEVF = ****** GX *52-4217 52-4228 52-4298
CRDCLR 013556 R 51-4185 #54-4485
CRDINT 013026 R 51-4183 #52-4304
CREVFG = ****** GX *51-4201 *51-4202 51-4203 52-4217 52-4218 52-4249 52-4255 52-4273 52-4317
53-4368 53-4464 53-4467 54-4485 59-4631
CREXP = ****** GX *51-4189
CRHD 011776 RG #49-4114
CRHUNG = ****** GX *52-4314
CRINI 012360 R 49-4114 49-4114 #51-4201
CRIOD 012532 R #52-4228
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 3
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
CRLOOP 012444 R #52-4214 52-4326
CRMKT 012776 R #52-4298
CRMRKT 012276 R #49-4139 51-4204
CRPWUP 012352 R #51-4196 51-4206
CRSSTV 012310 R #51-4179 51-4205
CRSTBK = ****** GX 53-4376 53-4449
CRSTK 012256 RG 49-4114 #49-4114
CRSTLN = ****** GX 53-4449 53-4460
CRSTS = ****** GX *51-4190 52-4233 *52-4252 52-4260 52-4266 52-4268 *52-4270 52-4271 *52-4286
52-4300 52-4307 52-4309 52-4311 *52-4313 *52-4319 *52-4322 *53-4367 53-4382
53-4392 53-4400 53-4437 *53-4442 *53-4468 *54-4483 56-4538 *56-4540 *56-4543
*56-4548 *57-4581 *58-4604 *59-4625
CRTBL = ****** GX 57-4579 58-4601 59-4623
CRTRP4 012312 R 51-4179 #51-4183
CR.ACK = 004000 #49-4128 52-4266 52-4270 52-4307 58-4604 59-4625
CR.HNG = 100000 #49-4117 52-4252 52-4270 52-4309 52-4319 52-4322
CR.IOD = 010000 #49-4126 52-4233 52-4252 52-4268 52-4307 53-4392 56-4543 58-4604
CR.IOP = 020000 #49-4124 52-4268 52-4286 52-4307 52-4311 53-4392 54-4483 56-4538 56-4540
58-4604
CR.NSF = 000400 #49-4134 52-4252 53-4437 53-4442
CR.NXD = 001000 #49-4132 51-4190 52-4271 52-4300 53-4382 54-4483
CR.RHN = 002000 #49-4130 52-4252 52-4270 52-4313 52-4322 53-4400
CR.SST = 040000 #49-4121 52-4260 52-4307 52-4313 53-4367 53-4468 56-4548 57-4581
CS.EXP = 177670 #11-1223 #22-2229 #46-4027 #61-4691
CTYLUN = 000001 #61-4728 69-5406
CYCLS = 000002 #11-1223 #22-2229 #46-4027 #61-4691
C$$D11 = 000001 #46-4033
C.LEEF = 000002 #8-454
DAG1 = 000030 #3-125
DAG2 = 000032 #3-124
DAG3 = 000036 #3-122
DATE = 000004 #11-1223 #22-2229 #46-4027 #61-4691
DBINI 000512 R 8-448 8-448 #9-530 9-534 9-667
DBIOD 000370 R #8-450 9-660
DCK = 100000 #8-391
DCOMST = 000001 #11-1223 #22-2229 #46-4027 #61-4691
DD.CHI = 000002 #25-2424 35-3196
DD.HEM = 000010 #25-2442 53-4431
DD.LER = 000010 #25-2426
DD.OVF = 000020 #25-2427 35-3201
DD.PCK = 000002 #25-2440 53-4419
DD.PGZ = 000001 #25-2423 35-3190
DD.RCK = 000001 #25-2439 53-4415
DD.RME = 000040 #25-2428 35-3180
DD.SCK = 000004 #25-2441 53-4423
DD.SFL = 000020 #25-2443 53-4439
DD.VFE = 000004 #25-2425 35-3150
DEFPRI = 000062 #61-4721 65-5089
DELHLD = 002000 #23-2306
DEMTIM = 000002 #23-2336 35-3154 39-3542
DEP = 010000 #11-1223 #22-2229 #46-4027 #61-4691
DEX = 000400 #11-1223 #22-2229 #46-4027 #61-4691
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 4
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DEXDON = 000004 #11-1223 #22-2229 #46-4027 #61-4691
DEXWD1 = 174406 #11-1223 #22-2229 #46-4027 #61-4691
DEXWD2 = 174404 #11-1223 #22-2229 #46-4027 #61-4691
DEXWD3 = 174402 #11-1223 #22-2229 #46-4027 #61-4691
DFUNC = 000200 #11-1223 #22-2229 #46-4027 #61-4691
DF.DMG = 000004 #11-1223 #22-2229 #46-4027 #61-4691
DF.DMN = 000007 #11-1223 #22-2229 #46-4027 #61-4691
DF.DOR = 000001 #11-1223 #22-2229 #46-4027 #61-4691
DF.EHG = 000010 #11-1223 #22-2229 #46-4027 #61-4691
DF.EHM = 000011 #11-1223 #22-2229 #46-4027 #61-4691
DF.EMG = 000005 #11-1223 #22-2229 #46-4027 #61-4691
DF.EMN = 000006 #11-1223 #22-2229 #46-4027 #61-4691
DF.KLR = 000012 #11-1223 #22-2229 #46-4027 #61-4691
DF.KLW = 000013 #11-1223 #22-2229 #46-4027 #61-4691
DF.KLX = 000014 #11-1223 #22-2229 #46-4027 #61-4691
DF.OFF = 000002 #11-1223 #22-2229 #46-4027 #61-4691
DF.ON = 000003 #11-1223 #22-2229 #46-4027 #61-4691
DF.PDP = 000016 #11-1223 #22-2229 #46-4027 #61-4691
DF.PEX = 000015 #11-1223 #22-2229 #46-4027 #61-4691
DIAG1 = 174430 #11-1223 #22-2229 #46-4027 #61-4691
DIAG2 = 174432 #11-1223 #22-2229 #46-4027 #61-4691
DIAG3 = 174436 #11-1223 #22-2229 #46-4027 #61-4691
DIKL10 = 000010 #11-1223 #22-2229 #46-4027 #61-4691
DLT = 100000 #8-367 10-786
DLYCNT = 174400 #11-1223 #22-2229 #46-4027 #61-4691
DNBLK = ****** GX *21-2119 *21-2142 *21-2153 21-2156
DNFCN = ****** GX *21-2120 *21-2121 *21-2122
DNMSG 000442 R #8-468 9-670
DNSTS = ****** GX *21-2123 *21-2127 21-2142 *21-2145 *21-2146 21-2149 *21-2149 *21-2164
DONE = 000200 #23-2310
DONSTR 004536 R 21-2089 #21-2092 21-2101 21-2110 21-2161
DON10C = 040000 #11-1223 #22-2229 #46-4027 #61-4691
DON10S = 100000 #11-1223 #22-2229 #46-4027 #61-4691
DON11C = 000100 #11-1223 #22-2229 #46-4027 #61-4691
DON11S = 000200 #11-1223 #22-2229 #46-4027 #61-4691
DPS4 = 040000 #11-1223 #22-2229 #46-4027 #61-4691
DRESET = 000100 #11-1223 #22-2229 #46-4027 #61-4691
DRY = 000200 #8-384 9-652
DR.DTE = 000011 #11-1223 #22-2229 #46-4027 #61-4691
DSEND = 000004 #11-1223 #22-2229 #46-4027 #61-4691
DS04 = 004000 #11-1223 #22-2229 #46-4027 #61-4691
DS05 = 002000 #11-1223 #22-2229 #46-4027 #61-4691
DS06 = 001000 #11-1223 #22-2229 #46-4027 #61-4691
DTBUF = ****** GX *11-1285 *11-1286 11-1289 11-1318 11-1323 11-1334 11-1384 11-1407 *11-1428
*11-1429
DTCNT = ****** GX *11-1284 11-1319 11-1335 11-1427
DTCW2 = ****** GX *11-1306 11-1386 11-1391 11-1394
DTCW3 = ****** GX *11-1320 *11-1381 *11-1411 11-1414
DTE = 010000 #8-394
DTECMD = 000451 #11-1223 #22-2229 #46-4027 #61-4691
DTEFLG = 000444 #11-1223 #22-2229 #46-4027 #61-4691
DTEF11 = 000450 #11-1223 #22-2229 #46-4027 #61-4691
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 5
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DTEMTD = 000455 #11-1223 #22-2229 #46-4027 #61-4691
DTEMTI = 000456 #11-1223 #22-2229 #46-4027 #61-4691
DTEXP = 177340 #11-1234 *11-1311 11-1317 11-1372 11-1425
DTHD 002056 RG #11-1239
DTINI 002442 R 11-1239 11-1239 #11-1280 11-1283 11-1337
DTNRM 002366 R #11-1245 11-1350
DTOUT 002606 R #11-1311 11-1353
DTRTC = ****** GX *11-1288 *11-1328 *11-1398 *11-1418
DTSTK 002336 RG 11-1239 #11-1239
DTTSK = ****** GX *11-1329 *11-1430
DUNS 000460 R #8-471 9-681
DUPE = 000020 #11-1223 #22-2229 #46-4027 #61-4691
DURE = 000004 #11-1223 #22-2229 #46-4027 #61-4691
DVA = 004000 #8-353 9-618 9-625
DV.EOF = 000040 #25-2412 35-3141 40-3688 53-4398
DV.F11 = 000400 #25-2415 35-3168
DV.HNG = 001000 #25-2416 35-3175 53-4402
DV.IOP = 000020 #25-2411 35-3165 53-4394
DV.LOG = 000100 10-1171 #25-2413 35-3156 35-3172 53-4402 53-4406 53-4427
DV.NXD = 000001 #25-2407 35-3134 53-4384
DV.OFL = 000002 #25-2408 35-3134 35-3145 53-4384 53-4390
DV.OIR = 000004 #25-2409 35-3134 35-3145 35-3175 53-4384 53-4390 53-4402
DV.SCN = 000010 #25-2410 35-3189 35-3195
DV.URE = 000200 10-1171 #25-2414 35-3172 53-4406
DXFLAG 014346 R #62-4781 *63-4845 63-4896 *63-4898
DXWD1 = 000006 #3-131
DXWD2 = 000004 #3-132
DXWD3 = 000002 #3-133
DXWRD1 = 002000 #11-1223 #22-2229 #46-4027 #61-4691
D$$H11 = 000010 #1-43
D.CCDR = ****** GX 52-4248 53-4463
D.CLPT = ****** GX 32-2744 35-3282
D.FEPD = ****** GX 19-2024 21-2093
D1011 = 000040 #11-1223 #22-2229 #46-4027 #61-4691
EBSEL = 000100 #11-1223 #22-2229 #46-4027 #61-4691
EBUSPC = 000020 #11-1223 #22-2229 #46-4027 #61-4691
EBUSPS = 000004 #11-1223 #22-2229 #46-4027 #61-4691
ECCMSK 000504 R #8-502 10-870 10-886
ECCWRD 000476 R #8-500 10-879
ECH = 000100 #8-400 10-801
ECI = 004000 #8-426
EDONES = 040000 #11-1223 #22-2229 #46-4027 #61-4691
EF.CRB = 000010 #46-4044 51-4203 52-4249 52-4255 52-4273
EF.CRC = 000001 #46-4038 52-4214 52-4218 52-4298 54-4485
EF.CRD = 000002 #46-4040 52-4214 52-4218 52-4228 52-4317 59-4631
EF.CRS = 000004 #46-4042 51-4203 53-4368 53-4464 53-4467
EF.IOD = ****** GX 10-763 11-1329 11-1430
EF.LPC = 000002 #22-2216 31-2640 31-2645 34-3011 37-3407
EF.LPD = 000001 #22-2214 31-2640 31-2645 32-2681 32-2730 34-3055 39-3555 40-3666 41-3785
42-3822 43-3881 44-3950
EF.LPQ = 000004 #22-2218
EF.LPS = 000020 #22-2221 30-2621 35-3121 35-3283 35-3291
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 6
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
EF.LPW = 000040 #22-2223 30-2621 36-3325 41-3760
EF.NIR = ****** GX 18-1914 31-2640 31-2645 33-2885
EF.QIO = 000001 #61-4734
EF.SEP = 100000 #18-1909 18-1914
EF.TEF = 000400 #18-1910 18-1914 19-1967 21-2091
EPTR = 000000 #11-1223 #22-2229 #46-4027 #61-4691
ERMHER 007767 R 35-3157 #35-3242
ERMHNG 010004 R 35-3176 #35-3244
ERMNXD 007715 R 35-3135 #35-3236
ERMOFL 007735 R 35-3146 #35-3238
ERMVFE 007750 R 35-3151 #35-3240
ERR = 100000 #8-380 #23-2301 39-3487
ERR10C = 010000 #11-1223 #22-2229 #46-4027 #61-4691
ERR10S = 020000 #11-1223 #22-2229 #46-4027 #61-4691
ERR11C = 000001 #11-1223 #22-2229 #46-4027 #61-4691
ERR11S = 000002 #11-1223 #22-2229 #46-4027 #61-4691
EXSP 014346 RG #62-4777 63-4840
E.FCRB = 000004 #46-4043 52-4247
E.FCRC = 000001 #46-4037 49-4139
E.FCRD = 000002 #46-4039
E.FCRS = 000003 #46-4041 53-4462
E.FLPC = 000002 #22-2215 30-2587
E.FLPD = 000001 #22-2213
E.FLPQ = 000003 #22-2217 35-3229
E.FLPS = 000005 #22-2220 35-3281
E.FLPW = 000006 #22-2222 30-2589 36-3332
E.FQIO = 000001 #61-4733 68-5368 69-5406
E.IOD = ****** GX 8-451 8-454 11-1243
E.NIR = ****** GX 8-457 11-1241
FCN 004606 R 21-2066 #21-2114
FCNBD 004614 R 21-2069 #21-2116
FEDRV 003622 R 18-1925 18-1925 #19-1927 19-1973 19-1976 19-2011 19-2020
FEHD 003322 RG #18-1925
FER = 000020 #8-402
FESTK 003602 RG 18-1925 #18-1925
FETBL = ****** GX *19-1942 *19-1977 *19-2008 *19-2019 *21-2104 21-2151
FETSK = ****** GX 19-1929 *19-1931 *21-2091
FE.DET = 040000 #18-1920 19-1942 19-2008 19-2019 20-2031 20-2042 21-2104
FE.DTE = 020000 #18-1921 19-1942 19-2019 21-2063 21-2077 21-2090 21-2104
FE.SER = 004000 #18-1922 19-1942 19-1977 19-2019 21-2104
FE.STR = 002000 #18-1923 21-2118 21-2160
FILADR 014462 R #62-4795 62-4803 65-5134 65-5136
FILBLK 014426 R #62-4794 63-4912 63-4933 63-4952 64-5018 68-5297
FILCLS 016760 R 66-5216 66-5216 66-5222 66-5222 #68-5353
FILERA 015426 R #64-4989 64-5024 64-5030 64-5034
FILERR 016312 R 64-4989 66-5158 66-5168 66-5206 66-5211 #66-5221
FILERX 016322 R 65-5080 #66-5222
FILFNA 016622 R 63-4927 63-4927 63-4959 63-4959 #68-5293
FILQIO 016772 R 63-4885 63-4885 64-5023 64-5023 68-5298 68-5349 #68-5368
FMT22 = 010000 #8-425
FNDFIL 015166 R 63-4905 #63-4911 63-4979
FORPRO = 000020 #11-1223 #22-2229 #46-4027 #61-4691
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 7
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
GO = 000001 #23-2320 34-3043 39-3497 39-3522 44-3977
GOERR = 000001 #23-2337 39-3542
HCE = 000200 #8-399
HCI = 002000 #8-427
HCRC = 000400 #8-398
HDRBFE 014424 R #62-4793 *64-5013 68-5304
HDRBLK 014420 R #62-4791 *64-5032 *68-5312 68-5326
HDRBUF 014422 R #62-4792 *64-5011 66-5255 *66-5260 68-5325
HDR64 = ****** 65-5100
HIBYTE = 177400 #11-1223 #22-2229 #22-2278 32-2829 #46-4027 #61-4691
H.IPC = 000076 #61-4738 65-5129
H.ISP = 000100 #61-4739 65-5130
H.LUN = 000132 #61-4741 63-4860
H.LUT = ****** GX 19-1996
H.NLUN = 000130 #61-4740 66-5150
IAE = 002000 #8-396 10-710 10-721
IE.ABO = 177761 19-1960 21-2105 41-3779
IE.ACT = 177771 67-5278
IE.BAD = 177777 21-2145
IE.BLK = 177754 10-723 11-1300
IE.DNR = 177775 9-649
IE.IFC = 177776 9-566 11-1338 33-2935
IE.OFL = 177677 43-3860
IE.VER = 177774 10-708 10-851 11-1424 21-2164
IE.WLK = 177764 10-717 11-1421
IFLOP = 100000 #11-1223 #22-2229 #46-4027 #61-4691
ILF = 000001 #8-406 10-710
ILR = 000002 #8-405 10-710
INITCR 013542 RG 51-4196 51-4196 51-4207 51-4207 52-4222 52-4222 52-4315 52-4315 #54-4483
58-4603 58-4603
INITLP 010354 RG 30-2612 30-2612 30-2625 30-2625 31-2649 31-2649 #37-3387
INSHD 013746 RG #62-4774
INSMSG 017362 R 69-5386 #69-5462
INSTAL 014676 RG 62-4774 62-4774 #63-4839 63-4842 67-5285
INSTK 014226 RG 62-4774 #62-4774
INTENB = 000100 #23-2311 34-3019 34-3023 34-3043 36-3362 37-3400 39-3497 39-3522 41-3765
44-3977
INTROF = 000010 #11-1223 #22-2229 #46-4027 #61-4691
INTRON = 000040 #11-1223 #22-2229 #46-4027 #61-4691
INTSON = 000001 #11-1223 #22-2229 #46-4027 #61-4691
INT10S = 000400 #11-1223 #22-2229 #46-4027 #61-4691
INT11C = 002000 #11-1223 #22-2229 #46-4027 #61-4691
INT11S = 004000 #11-1223 #22-2229 #46-4027 #61-4691
IOABT 004554 R 21-2059 #21-2097
IODN 004162 R 19-1968 #19-2013
IODNCR 013732 R 56-4549 56-4549 57-4582 #59-4631
IO.ACW = 007000 64-5017
IO.APV = 014010 63-4880
IO.ATT = 001400 21-2070
IO.DAC = 010000 33-2922 68-5353
IO.FNA = 004400 68-5293
IO.KIL = 000012 33-2941
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 8
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
IO.RLB = 001000 9-562 11-1295 33-2918
IO.RVB = 010400 33-2920 68-5313 68-5335
IO.WLB = 000400 9-564 11-1245 11-1292 21-2131 33-2914 35-3229 69-5406
IO.WLV = 000500 11-1297
IO.WVB = 011000 8-466 33-2916 68-5318
IPAERR 015672 R #65-5073 65-5124
IS.SUC = 000001 10-705 10-959 11-1413 21-2123 33-2948 44-3944
KLPWRF = 000010 #11-1223 #22-2229 #46-4027 #61-4691
KT11 = ****** 65-5072 65-5122
LBLBFE 014416 R #62-4790 *64-5006 66-5153 66-5162
LBLBLK 014410 R #62-4787 *64-5028 66-5165 *68-5337 68-5338
LBLBUF 014414 R #62-4789 *64-5004 66-5251 *66-5259 68-5336
LBLNUM 014412 R #62-4788 *65-5142 66-5165
LOAD11 = 000004 #11-1223 #22-2229 #46-4027 #61-4691
LOBYTE = 000377 #22-2277 22-2278 41-3779 43-3860 44-3944
LOINIT = 000400 #23-2308
LPALOC = 000214 #22-2208
LPBCTR = 000006 G #23-2341 34-3041 39-3489 *39-3506 39-3507 *39-3521 *44-3931 *44-3958 *44-3967
LPBSAD = 000004 G #23-2339 39-3508 *39-3513 *44-3957 *44-3965 *44-3966
LPCBUF = 000014 G #23-2354 *36-3342 *36-3345 39-3517
LPCCTR = 000015 G #23-2355
LPCEVF = ****** GX *31-2644 32-2681 33-2885 34-3011
LPCKSM = 000017 G #23-2358 34-3040 39-3486
LPCSA = ****** GX *30-2604 32-2687 34-3016 *37-3399 39-3479 41-3763 42-3817 43-3853
LPCSM = ****** GX *34-3039 *34-3040 35-3258 *36-3354 *39-3485 *39-3486
LPCSRA = 000000 G #23-2300
LPCSRB = 000002 G #23-2322 35-3154 35-3178 35-3199 39-3542
LPDCLR 010424 R 30-2599 #37-3401
LPDINT 006776 R 30-2597 #34-3020
LPEMSG 007662 R 35-3219 35-3229 #35-3230
LPEMSX 007675 R 35-3215 #35-3234
LPERUN 007672 R *35-3224 #35-3232
LPEVFG = ****** GX *30-2619 *30-2620 30-2621 31-2644 31-2645 32-2730 34-3055 35-3121 35-3283
35-3291 36-3325 37-3407 39-3555 40-3666 41-3760 41-3785 42-3822 43-3881
44-3950
LPEXPA = ****** GX 37-3398
LPEXPZ = ****** GX 35-3257
LPHD 005060 RG #27-2487
LPHUNG = ****** GX *34-3035
LPINI 005450 R 27-2487 27-2487 #30-2618
LPIOD 005622 R #32-2680
LPITH = ****** GX 32-2700 32-2719 34-3031 34-3047 *37-3402 39-3480 *39-3549 41-3758 *41-3762
42-3815 *44-3929
LPLOOP 005534 R #31-2639 34-3065
LPMCB = ****** GX 39-3512 *44-3962 44-3965
LPMKT 006742 R #34-3010
LPMRKT 005360 R #30-2586 30-2622
LPNIR 006502 R 32-2755 #33-2884 33-2952 33-2978
LPPCTR = 000010 G #23-2345 *32-2802 36-3358 *36-3358 39-3535 *39-3535 41-3766 *41-3766 42-3819
*42-3819
LPQDPB 007640 R *35-3220 35-3225 #35-3228
LPRAMD = 000012 G #23-2349 *36-3344 39-3514
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 9
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
LPRMA = ****** GX 32-2768 *32-2773 32-2784 *32-2823 32-2826 41-3754
LPRMC = ****** GX *32-2774 32-2789 32-2808 *32-2838
LPRMZ = ****** GX 32-2769 32-2793 *32-2821 32-2827
LPRTRY = 000012 #22-2209 35-3259 43-3852
LPRTY = ****** GX *34-3036 35-3170 35-3260 *39-3495 *39-3544 *43-3852
LPSIZE = ****** GX 32-2750 34-3061 37-3404 40-3634 41-3751 42-3812
LPSSTV 005404 R #30-2591 30-2623
LPSTBK = ****** GX 35-3127 35-3256 35-3264 35-3274
LPSTK 005340 RG 27-2487 #27-2487
LPSTLN = ****** GX 35-3264 35-3278
LPTBL = ****** GX 32-2683 32-2743 34-3014 37-3390 40-3634 41-3751 42-3812
LPTDAT = 000016 G #23-2357
LPTHD = ****** GX 32-2692 32-2728 *32-2840 34-3027 35-3159 41-3768 43-3865 *43-3880
LPTPAR = 000040 #23-2332 35-3154 39-3542
LPTPBT = 010000 #23-2324
LPTRP4 005406 R 30-2592 #30-2596
LPUNIT = ****** GX *39-3473 39-3475
LPUTBL = ****** GX 33-2911 39-3478
LPWRUP 005442 R #30-2611 30-2624
LP.CLR = 002000 #28-2512 35-3152 35-3181 36-3334 36-3336
LP.EOF = 000200 #28-2520 32-2786 35-3139 36-3351 36-3353
LP.F10 = 000400 #28-2517 32-2732 32-2859 35-3207 35-3292 40-3636
LP.HNG = 100000 #28-2495 32-2732 34-3029 34-3057 35-3173 44-3928
LP.LIP = 001000 #28-2514 32-2705 32-2732 32-2762 32-2765 32-2791 36-3337 41-3756 44-3921
LP.MCH = 010000 #28-2504 32-2732 39-3504 39-3520 44-3923 44-3928 44-3968
LP.PZI = 020000 #28-2501 32-2800 32-2804 35-3187 39-3533
LP.SST = 040000 #28-2498 32-2711 32-2786 34-3054 35-3120 35-3294 39-3554 40-3665 43-3862
LP.UNT = 000003 #28-2524 35-3222 35-3276 37-3393 39-3477
LP.WAT = 004000 #28-2507 32-2717 32-2732 34-3025 35-3191 35-3197 35-3212 41-3753 42-3814
44-3928
L$BBLK = 000024 #61-4753
L$BFLG = 000010 #61-4747
L$BHRB = 000022 #61-4752 64-5032
L$BLDZ = 000014 #61-4749
L$BMXZ = 000016 #61-4750
L$BPAR = 000004 #61-4746
L$BPRI = 000012 #61-4748
L$BSA = 000020 #61-4751
L$BTSK = 000000 #61-4745
L$$P20 = 000002 #1-37 32-2684 34-3013 37-3389 40-3634 41-3751 42-3812
MCPE = 020000 #8-352 10-706
MDPE = 000400 #8-374 10-786
MEFCN 004616 R 21-2115 #21-2118
MEMPAR = 000020 #23-2333 35-3154 39-3542
MKDNR 000404 RG #8-459 9-676
MKSCDP 005372 R #30-2588 36-3330
MNTBLK 014644 R #62-4806 63-4882
MNTSYD 014744 R #63-4854 63-4901
MODE00 = 000004 #23-2315 32-2766 32-2792 32-2795
MODE01 = 000010 #23-2314 32-2766
MOL = 010000 #8-381 9-652
MPE11 = 001000 #11-1223 #22-2229 #46-4027 #61-4691
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 10
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
MRKDT 002406 R #11-1247 11-1351
MSGDPB 000422 R #8-465 *9-670 9-675 *9-681
MSGSIZ = 000016 8-466 #8-475
MXF = 001000 #8-373 10-786
M.KTAE = 000010 #8-460 #11-1247 #30-2587 #30-2589 #49-4139
M.KTEF = 000002 #8-460 #11-1247 #30-2587 #30-2589 #49-4139
M.KTMG = 000004 #8-460 #11-1247 #30-2587 #30-2589 #49-4139
M.KTUN = 000006 #8-460 #11-1247 #30-2587 #30-2589 #49-4139
NED = 010000 #8-370 10-712
NEM = 004000 #8-371 10-712
NODADR = ****** GX 19-1939 *19-1940 19-1972 *19-1978 19-2015 *19-2016 21-2067 21-2097 *21-2103
NTRDMS 002424 R 11-1245 #11-1251 11-1252
NTRDSZ = 000016 11-1245 #11-1252
NULSTP = 000040 #11-1223 #22-2229 #46-4027 #61-4691
NUPE = 000002 #11-1223 #22-2229 #46-4027 #61-4691
NXTHDR 016642 R 66-5157 66-5157 66-5205 66-5205 #68-5304
N.DID = 000024 #61-4767
N.FID = 000000 #61-4761 63-4952 64-5018
N.FNAM = 000006 #61-4762 63-4912 63-4933
N.FTYP = 000014 #61-4763
N.FVER = 000016 #61-4764
N.NEXT = 000022 #61-4766
N.STAT = 000020 #61-4765
OFFLIN = 000200 #23-2330
ONLINE = 004000 #23-2305 35-3143 36-3322 43-3855
OPI = 020000 #8-393
OPTVFU = 004000 #23-2325 35-3199
PAGZRO = 040000 #23-2302 35-3185 36-3356 39-3487 39-3531
PARENB = 000002 #23-2319 34-3043 36-3362 37-3400 39-3497 39-3522 41-3765 44-3977
PARFND 015730 R 65-5064 #65-5084
PARMSG 017403 R 69-5397 #69-5464
PBTHRD = 000004 #22-2268 22-2270 22-2271 22-2272 32-2850 33-2960 33-2961
PERCLR = 001000 #11-1223 #22-2229 #46-4027 #61-4691
PGE = 002000 #8-372 10-786
PGM = 001000 #8-383
PHYS = 100000 #11-1223 #22-2229 #46-4027 #61-4691
PIDENT = 000000 #11-1223 #22-2229 #46-4027 #61-4691
PRI7 = 000340 #11-1223 #22-2229 #46-4027 #61-4691
PROPNT = 000021 #11-1223 #22-2229 #46-4027 #61-4691
PRTOFF = 004000 #11-1223 #22-2229 #46-4027 #61-4691
PR0 = 000000 #11-1223 #22-2229 #46-4027 #61-4691
PR1 = 000040 #11-1223 #22-2229 #46-4027 #61-4691
PR2 = 000100 #11-1223 #22-2229 #46-4027 #61-4691
PR3 = 000140 #11-1223 #22-2229 #46-4027 #61-4691
PR4 = 000200 #11-1223 #22-2229 34-3038 36-3365 #46-4027 #61-4691
PR5 = 000240 #11-1223 #22-2229 #46-4027 #61-4691
PR6 = 000300 #11-1223 #22-2229 #46-4027 #61-4691
PR7 = 000340 #11-1223 21-2128 #22-2229 31-2643 32-2727 #46-4027 52-4216 #61-4691
PS = 177776 9-616 9-658 9-673 #11-1223 11-1331 11-1348 19-1928 *19-1928 20-2043
*20-2043 *20-2048 21-2128 *21-2128 *21-2148 #22-2229 31-2643 *31-2643 *31-2646
32-2727 *32-2727 *32-2734 34-3038 *34-3038 *34-3050 36-3365 *36-3365 *36-3367
39-3473 43-3864 *43-3864 #46-4027 52-4216 *52-4216 *52-4219 #61-4691 66-5225
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 11
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
*66-5225 67-5267 *67-5267
PSWW1 = 000005 #11-1223 #22-2229 #46-4027 #61-4691
PSWW10 = 000014 #11-1223 #22-2229 #46-4027 #61-4691
PSWW11 = 000015 #11-1223 #22-2229 #46-4027 #61-4691
PSWW12 = 000016 #11-1223 #22-2229 #46-4027 #61-4691
PSWW13 = 000017 #11-1223 #22-2229 #46-4027 #61-4691
PSWW2 = 000006 #11-1223 #22-2229 #46-4027 #61-4691
PSWW3 = 000007 #11-1223 #22-2229 #46-4027 #61-4691
PSWW4 = 000010 #11-1223 #22-2229 #46-4027 #61-4691
PSWW5 = 000011 #11-1223 #22-2229 #46-4027 #61-4691
PSWW6 = 000012 #11-1223 #22-2229 #46-4027 #61-4691
PSWW7 = 000013 #11-1223 #22-2229 #46-4027 #61-4691
PUDADR 014406 R #62-4786 *63-4862 63-4891 *63-4978 65-5091 66-5174
PULSE = 000020 #11-1223 #22-2229 #46-4027 #61-4691
PUTR50 017264 R 69-5393 69-5393 69-5400 69-5400 #69-5424
PUTR51 017274 R 69-5425 69-5425 #69-5433
PUTSTR 017254 R 69-5387 69-5387 69-5389 69-5389 69-5391 69-5391 69-5398 69-5398 #69-5415
69-5416
QIOSTS 014466 R #62-4796 68-5368 68-5371
QSIZE = 000023 #11-1223 #22-2229 #46-4027 #61-4691
Q.IOAE = 000012 #8-466 #11-1245 #35-3229
Q.IOEF = 000006 #8-466 #11-1245 #35-3229
Q.IOFN = 000002 #8-466 #11-1245 #35-3229
Q.IOLU = 000004 #8-466 #11-1245 #35-3229
Q.IOPL = 000014 #8-466 *9-670 *9-681 #11-1245 *35-3220 #35-3229
Q.IOPR = 000007 #8-466 #11-1245 #35-3229
Q.IOSB = 000010 #8-466 #11-1245 #35-3229
RAMIS0 = 010000 #11-1223 #22-2229 #46-4027 #61-4691
RAMLOD = 000003 #23-2318 32-2795
RAMPAR = 000010 #23-2334 35-3154 35-3178 39-3542
RCVBLK 014350 R #62-4783 63-4841 63-4873
REDHDR 016656 R 64-5033 64-5033 #68-5312
REDLBL 016720 R 64-5029 64-5029 66-5167 66-5167 #68-5334
REQBLK 014354 R #62-4784 62-4785 63-4932 65-5045 66-5226 67-5270 67-5271 69-5392
REQTSK 016504 R 66-5217 #67-5267
RETALL 016414 R #66-5243
RETBUF 016436 R 64-4993 64-4993 66-5215 66-5215 66-5244 #66-5249
RETNOD 016326 R 63-4983 #66-5224 67-5281
RETRY = 000005 #8-440 9-572 #11-1232 11-1288
RETXXX 016716 R 68-5305 68-5307 #68-5330
RFMAD0 = 100000 #11-1223 #22-2229 #46-4027 #61-4691
RFMAD1 = 040000 #11-1223 #22-2229 #46-4027 #61-4691
RFMAD2 = 020000 #11-1223 #22-2229 #46-4027 #61-4691
RFMAD3 = 010000 #11-1223 #22-2229 #46-4027 #61-4691
RM = 000010 #11-1223 #22-2229 #46-4027 #61-4691
RMR = 000004 #8-404 10-710
RPAS = 000016 #8-410
RPBA = 000004 #8-359
RPBUF = ****** GX *9-555 *9-560 *9-561 *9-570 9-632 9-657 9-663 9-665 *10-761
*10-762 10-765 10-865 10-983
RPCNT = ****** GX *9-553 9-633 10-815
RPCS1 = 000000 #8-349
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 12
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
RPCS2 = 000010 #8-365 9-610 9-629 10-712 10-786
RPDA = 000006 #8-361
RPDBR = 000022 #8-414
RPDC = 000034 #8-430 *9-656
RPDS = 000012 #8-378 9-650
RPDT = 000026 #8-418
RPEC1 = 000044 #8-432 10-849
RPEC2 = 000046 #8-434 10-873
RPER1 = 000014 #8-389 9-654 10-709
RPEXP = 176700 #8-345 9-610 9-613 9-629 10-696 10-1172
RPHD 000070 RG #8-447
RPLA = 000020 #8-412
RPMR = 000024 #8-416
RPOF = 000032 #8-423
RPRNA = ****** GX *9-552 9-628 9-662 10-757
RPRTC = ****** GX *9-572 *10-744
RPSN = 000030 #8-420
RPSTK 000350 RG 8-448 #8-448
RPTSK = ****** GX *10-763
RPUNIT = ****** GX *9-554 9-612 9-630
RPWC = 000002 #8-357 10-813 10-968
RPWLO 000400 R #8-456 9-531
RSTERR = 001000 #23-2307 36-3362 37-3400 41-3765
RSX$$E = 000045 #3-97
RSX$$F = 000101 #3-105 #3-108 3-116
RSX$$K = 000126 #3-101
RSX$$V = 000014 #3-96
RWRBLK 016752 R 68-5327 68-5327 68-5339 68-5339 #68-5348
RWRHDR 016674 R 68-5314 #68-5324
R$$E16 = ****** 10-907 10-1048
R$$E18 = 000001 #8-328 8-498 10-838 10-986
R$$JPO = ****** 8-477 9-574 9-638 10-698 10-817 10-830 10-962 10-1072
R$$11D = 000001 #1-46
R.AT = ****** GX 19-1991
R.DP = ****** GX 19-2000
R.FC = ****** GX 9-562 9-564 11-1292 11-1295 11-1297 19-1984 21-2068 21-2070 33-2912
33-2941
R.LU = ****** GX 19-1986
R.PB = ****** GX 9-582 9-583 *9-597 *9-603 9-631 9-656 10-758 11-1301 11-1304
19-2004 19-2005 21-2072 21-2073 32-2850 33-2960 33-2964
R50TBL 017346 R 69-5439 #69-5454
SCD = 000040 #11-1223 #22-2229 #46-4027 #61-4691
SETLUN 016106 R #66-5150
SETSTD 015576 R #65-5043
SF.IR = 040000 #61-4725 67-5269
SF.TA = 000001 #61-4724 67-5269
SNSTR 004224 R 19-2009 19-2009 #19-2022 20-2046 20-2046 21-2157 21-2157
SSTSCR 013136 R 52-4262 52-4262 52-4281 52-4281 #53-4367
SSTSLP 007164 R 32-2713 32-2713 #35-3118
STAT = 174434 #11-1223 #22-2229 #46-4027 #61-4691
STATD = 000034 #3-123
STATUS = 000022 #11-1223 #22-2229 #46-4027 #61-4691
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 13
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
STDADR = 014366 R #62-4785 65-5043 66-5243 *66-5247 67-5268 69-5394
STSWD = ****** GX *19-1941 *19-2010 19-2013 19-2014 *19-2017 *21-2075 *21-2076
SWR = 177570 #11-1223 #22-2229 #46-4027 #61-4691
SWSLLT = 100000 #11-1223 #22-2229 #46-4027 #61-4691
SYFLAG 014347 R #62-4782 63-4904 *63-4907
SYMNTD 015100 R 63-4864 63-4886 #63-4890
SYMNT1 015144 R 63-4895 63-4897 #63-4903
SYNTIM = 000004 #23-2335 35-3154 39-3542
S.DRFN = 000034 #61-4768 62-4794
S.FW = ****** GX *67-5269
S.TD = ****** GX 69-5395
TASKNF 015322 R 63-4856 63-4888 63-4928 #63-4965 63-4970 63-4972 63-4974 63-4977
TB.ABO = 040000 #22-2259 32-2777 41-3776 41-3779
TB.DON = 100000 #22-2258 40-3708 41-3779 43-3860 44-3944
TB.EOF = 020000 #22-2260 22-2264 32-2782 40-3690
TB.LPC = 010000 #22-2261 22-2264 32-2798 40-3681
TB.RMD = 004000 #22-2262 22-2264 32-2812 40-3696
TB.SFN = 036000 #22-2264 32-2779 44-3934
TB.VFD = 002000 #22-2263 22-2264 40-3702
TENAD1 = 174410 #11-1223 #22-2229 #46-4027 #61-4691
TENAD2 = 174412 #11-1223 #22-2229 #46-4027 #61-4691
TESTLP 010164 R 32-2721 32-2721 #36-3321
TEST00 = 000400 #23-2328
TEST01 = 001000 #23-2327
TEST02 = 002000 #23-2326
TNAD1 = 000010 #3-129
TNAD2 = 000012 #3-130
TNCERR 015716 R #65-5078 65-5138
TNFERR 015412 R 63-4968 #63-4981
TOBM = 000004 #11-1223 #22-2229 #46-4027 #61-4691
TOD = 000003 #11-1223 #22-2229 #46-4027 #61-4691
TOIP = 000002 #11-1223 #22-2229 #46-4027 #61-4691
TOIT = 000001 #11-1223 #22-2229 #46-4027 #61-4691
TO10 = 000200 #11-1223 #22-2229 #46-4027 #61-4691
TO10AD = 174420 #11-1223 #22-2229 #46-4027 #61-4691
TO10BC = 174414 #11-1223 #22-2229 #46-4027 #61-4691
TO10BM = 000001 #11-1223 #22-2229 #46-4027 #61-4691
TO10DB = 000400 #11-1223 #22-2229 #46-4027 #61-4691
TO10DN = 100000 #11-1223 #22-2229 #46-4027 #61-4691
TO10DT = 174424 #11-1223 #22-2229 #46-4027 #61-4691
TO10ER = 020000 #11-1223 #22-2229 #46-4027 #61-4691
TO10PK = ****** GX 19-1981
TO11 = 000100 #11-1223 #22-2229 #46-4027 #61-4691
TO11AD = 174422 #11-1223 #22-2229 #46-4027 #61-4691
TO11BC = 174416 #11-1223 #22-2229 #46-4027 #61-4691
TO11BM = 020000 #11-1223 #22-2229 #46-4027 #61-4691
TO11DB = 004000 #11-1223 #22-2229 #46-4027 #61-4691
TO11DN = 000200 #11-1223 #22-2229 #46-4027 #61-4691
TO11DT = 174426 #11-1223 #22-2229 #46-4027 #61-4691
TO11ER = 000002 #11-1223 #22-2229 #46-4027 #61-4691
TRE = 040000 #8-351 10-706
TSKFND 015444 R 63-4960 #64-5000
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 14
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
TSKLUN = 000002 #61-4729 63-4855 63-4860 63-4976 68-5368
TSKMSG 017374 R 69-5390 #69-5463
TSTMOD = 000001 #23-2316
TTBERR 015704 R #65-5076 65-5121
TTPEN = ****** GX 8-448 11-1239 18-1925 27-2487 49-4114 62-4774
TYPBUF 014472 R #62-4797 69-5385 69-5404
TYPMSG 017052 R 63-4887 63-4887 63-4906 63-4906 63-4982 63-4982 65-5070 65-5070 65-5073
65-5073 65-5076 65-5076 65-5078 65-5078 66-5221 66-5221 67-5281 67-5281
#69-5384
T.BA = ****** GX 65-5099 65-5123
T.HBCT = ****** GX 32-2841 *33-2965 35-3166 44-3960
T.HCAD = ****** GX *32-2784 32-2790 32-2801 32-2828 *33-2966 *39-3508 40-3678 40-3687 44-3957
T.HCBC = ****** GX 32-2698 32-2776 *32-2789 *32-2790 *33-2967 *39-3507 40-3637 *40-3638 *40-3709
*41-3776 41-3777 *41-3779 *43-3860 44-3931 44-3934 *44-3944
T.HEMA = 177774 #22-2270 *33-2968 44-3972
T.HIBC = 177776 #22-2272 32-2848 33-2961
T.HVFC = 177775 #22-2271 *33-2972 44-3962 *44-3964
T.PN = ****** GX 65-5061 65-5063
T.PZ = ****** GX 65-5120
T.SZ = ****** GX 65-5066
T10AD = 000020 #3-127
T11AD = 000022 #3-126
T11BC = 000016 #3-128
T50TBL 017336 R 69-5433 #69-5452
UF.TL = ****** GX 63-4971
UNASG1 = 000032 #11-1223 #22-2229 #46-4027 #61-4691
UNASG2 = 000033 #11-1223 #22-2229 #46-4027 #61-4691
UNASG3 = 000034 #11-1223 #22-2229 #46-4027 #61-4691
UNASG4 = 000035 #11-1223 #22-2229 #46-4027 #61-4691
UNASG5 = 000036 #11-1223 #22-2229 #46-4027 #61-4691
UNASG6 = 000037 #11-1223 #22-2229 #46-4027 #61-4691
UNS = 040000 #8-392 9-654 10-710
UPE = 020000 #8-369 10-786
U.ACP = ****** GX *63-4878
U.DACP = ****** GX 63-4876
U.DN = ****** GX 63-4892 63-4976 66-5180
U.FB = ****** GX 63-4971
U.RP = ****** GX 19-1997 63-4861 63-4969
U.SZ = 000050 #61-4723 63-4849 63-4966 65-5095 66-5185
U.UN = ****** GX 63-4893 63-4976 66-5182
U.VA = ****** GX 63-4863 63-4973
VFCFF 006730 R 33-2927 #33-2984
VFCTBL 006726 R 33-2970 #33-2982
VFUERR = 000100 #23-2331 39-3542
VFULOD = 000002 #23-2317 32-2792
VFURDY = 010000 #23-2304 35-3148
VV = 000100 #8-385 9-652
WCE = 040000 #8-368 10-786
WCF = 000040 #8-401
WEP = 000010 #11-1223 #22-2229 #46-4027 #61-4691
WFDNR 000416 RG #8-462 9-677
WFDTD 002362 R #11-1243 11-1333
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 15
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
WFDTQ 002356 R #11-1241 11-1280
WFEF1 003314 R #18-1914 19-1927
WFMKT 002420 R #11-1249 11-1352
WLE = 004000 #8-395 10-710 10-715
WRL = 004000 #8-382
WRTHDR 016670 R 66-5210 66-5210 68-5306 68-5306 #68-5318
W.TSEF = 000002 #8-451 #8-457 #8-463 #11-1241 #11-1243 #11-1249
ZSTOP = 040000 #11-1223 #22-2229 #46-4027 #61-4691
$CDINT 013566 RG #56-4536
$CD11 = 000001 #1-38
$DBDTE = 000001 #1-44
$DH11 = 000001 #1-42
$DIRAC = 000001 #8-324 9-536 #18-1875 19-1948 21-2098
$DIV 000032 RG #6-259 9-600 9-600 10-855 10-855 69-5437 69-5437
$DSW = ****** GX 67-5273 67-5278
$DTA = 000001 #1-54 10-1181
$DTE = 000001 #1-45
$DTINT 002774 RG #11-1360
$FE = 000001 #1-40
$F11 = 000001 #1-41
$LPINT 010454 RG #39-3472
$LP20 = 000001 #1-36
$MUL 000000 RG #6-232
$RP04 = 000001 #1-39
$RX11 = ****** 12-1441
$TOP10 = 000001 #1-34 1-52 3-106
$TOP20 = ****** 1-60 3-113
$T1091 = ****** 1-48 1-53 3-107
$$ = 000037 #9-533 9-533 #9-600 9-600 #9-666 9-666 #10-764 10-764 #10-767
10-767 #10-855 10-855 #10-874 10-874 #10-884 10-884 #10-890 10-890
#10-891 10-891 #10-892 10-892 #10-899 10-899 #10-1156 10-1156 #11-1282
11-1282 #11-1336 11-1336 #11-1431 11-1431 #19-1946 19-1946 #19-1961 19-1961
#19-1966 19-1966 #19-1975 19-1975 #19-2009 19-2009 #19-2018 19-2018 #20-2046
20-2046 #21-2092 21-2092 #21-2106 21-2106 #21-2157 21-2157 #30-2612 30-2612
#30-2625 30-2625 #31-2649 31-2649 #32-2713 32-2713 #32-2721 32-2721 #32-2745
32-2745 #32-2771 32-2771 #32-2816 32-2816 #32-2851 32-2851 #32-2858 32-2858
#33-2888 33-2888 #33-2943 33-2943 #33-2951 33-2951 #33-2977 33-2977 #34-3048
34-3048 #35-3183 35-3183 #35-3284 35-3284 #36-3366 36-3366 #39-3491 39-3491
#39-3536 39-3536 #39-3556 39-3556 #40-3667 40-3667 #40-3672 40-3672 #40-3715
40-3715 #41-3786 41-3786 #42-3823 42-3823 #43-3882 43-3882 #43-3887 43-3887
#44-3951 44-3951 #51-4196 51-4196 #51-4207 51-4207 #52-4222 52-4222 #52-4250
52-4250 #52-4262 52-4262 #52-4281 52-4281 #52-4315 52-4315 #53-4465 53-4465
#56-4549 56-4549 #57-4578 57-4578 #58-4603 58-4603 #59-4632 59-4632 #63-4844
63-4844 #63-4877 63-4877 #63-4885 63-4885 #63-4887 63-4887 #63-4906 63-4906
#63-4927 63-4927 #63-4959 63-4959 #63-4982 63-4982 #64-4993 64-4993 #64-5002
64-5002 #64-5009 64-5009 #64-5023 64-5023 #64-5029 64-5029 #64-5033 64-5033
#65-5070 65-5070 #65-5073 65-5073 #65-5076 65-5076 #65-5078 65-5078 #66-5157
66-5157 #66-5167 66-5167 #66-5205 66-5205 #66-5210 66-5210 #66-5215 66-5215
#66-5216 66-5216 #66-5221 66-5221 #66-5222 66-5222 #66-5227 66-5227 #66-5239
66-5239 #66-5246 66-5246 #66-5253 66-5253 #66-5257 66-5257 #67-5272 67-5272
#67-5281 67-5281 #68-5306 68-5306 #68-5327 68-5327 #68-5339 68-5339 #69-5387
69-5387 #69-5389 69-5389 #69-5391 69-5391 #69-5393 69-5393 #69-5398 69-5398
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 16
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
#69-5400 69-5400 #69-5425 69-5425 #69-5437 69-5437
$$$ = 000251 R #35-3299 35-3299 #35-3299 35-3299 #35-3299 35-3299 #35-3299 35-3299 #35-3299
35-3299 35-3299 35-3299 35-3299 35-3299 35-3299 #35-3299 35-3299 35-3299
35-3299 35-3299 35-3299 #35-3299 35-3299 35-3299 35-3299 35-3299 35-3299
#35-3299 35-3299 35-3299 35-3299 35-3299 35-3299 #35-3299 #37-3408 37-3408
#37-3408 37-3408 #37-3408 37-3408 #37-3408 37-3408 37-3408 37-3408 37-3408
37-3408 #37-3408 37-3408 37-3408 37-3408 37-3408 #37-3408 37-3408 37-3408
37-3408 37-3408 #37-3408 #39-3561 39-3561 #39-3561 39-3561 #39-3561 39-3561
#39-3561 39-3561 39-3561 39-3561 39-3561 39-3561 #39-3561 39-3561 39-3561
39-3561 39-3561 #39-3561 39-3561 39-3561 39-3561 39-3561 #39-3561 #40-3720
40-3720 #40-3720 40-3720 #40-3720 40-3720 #40-3720 40-3720 40-3720 40-3720
40-3720 40-3720 #40-3720 40-3720 40-3720 40-3720 40-3720 #40-3720 40-3720
40-3720 40-3720 40-3720 #40-3720 #41-3788 41-3788 #41-3788 41-3788 #41-3788
41-3788 #41-3788 41-3788 41-3788 41-3788 41-3788 41-3788 #41-3788 41-3788
41-3788 41-3788 41-3788 #41-3788 41-3788 41-3788 41-3788 41-3788 #41-3788
#42-3825 42-3825 #42-3825 42-3825 42-3825 42-3825 #42-3825 #43-3888 43-3888
#43-3888 43-3888 #43-3888 43-3888 43-3888 43-3888 43-3888 #43-3888 43-3888
43-3888 43-3888 #43-3888 #63-4887 63-4887 #63-4906 63-4906 #63-4982 63-4982
#65-5070 65-5070 #65-5073 65-5073 #65-5076 65-5076 #65-5078 65-5078 #66-5221
66-5221 #67-5281 67-5281
$$$ARG = 000003 #8-466 8-466 #8-466 8-466 #8-466 8-466 #11-1245 11-1245 #11-1245
11-1245 #11-1245 11-1245 #35-3229 35-3229 #35-3229 35-3229 #35-3229 35-3229
#35-3229 35-3229 #63-4855 63-4855 #63-4855 63-4855 #63-4855 63-4855 #63-4855
63-4855 63-4855 63-4855 63-4855 63-4855 63-4855 63-4855 63-4855 63-4855
63-4855 #63-4976 63-4976 #63-4976 63-4976 #63-4976 63-4976 #63-4976 63-4976
63-4976 63-4976 63-4976 63-4976 63-4976 63-4976 63-4976 63-4976 63-4976
#68-5368 68-5368 68-5368 68-5368 68-5368 68-5368 68-5368 68-5368 68-5368
68-5368 68-5368 68-5368 #69-5406 69-5406 69-5406 69-5406 69-5406 69-5406
69-5406 69-5406 69-5406 69-5406 69-5406 69-5406
$$$GLB = ****** 8-451 8-451 8-454 8-454 8-457 8-457 8-460 8-460 8-460
8-460 8-460 8-463 8-463 8-466 8-466 8-466 8-466 8-466
8-466 8-466 8-466 11-1241 11-1241 11-1243 11-1243 11-1245 11-1245
11-1245 11-1245 11-1245 11-1245 11-1245 11-1245 11-1247 11-1247 11-1247
11-1247 11-1247 11-1249 11-1249 18-1914 30-2587 30-2587 30-2587 30-2587
30-2587 30-2589 30-2589 30-2589 30-2589 30-2589 35-3229 35-3229 35-3229
35-3229 35-3229 35-3229 35-3229 35-3229 49-4139 49-4139 49-4139 49-4139
49-4139
$$$OST = 000012 #8-451 8-451 8-451 #8-451 #8-454 8-454 8-454 #8-454 #8-457
8-457 8-457 #8-457 #8-460 8-460 8-460 #8-460 8-460 8-460
#8-460 8-460 8-460 #8-460 8-460 8-460 #8-460 #8-463 8-463
8-463 #8-463 #8-466 8-466 8-466 #8-466 8-466 8-466 #8-466
8-466 8-466 #8-466 8-466 8-466 #8-466 8-466 8-466 #8-466
8-466 8-466 #8-466 8-466 #11-1241 11-1241 11-1241 #11-1241 #11-1243
11-1243 11-1243 #11-1243 #11-1245 11-1245 11-1245 #11-1245 11-1245 11-1245
#11-1245 11-1245 11-1245 #11-1245 11-1245 11-1245 #11-1245 11-1245 11-1245
#11-1245 11-1245 11-1245 #11-1245 11-1245 #11-1247 11-1247 11-1247 #11-1247
11-1247 11-1247 #11-1247 11-1247 11-1247 #11-1247 11-1247 11-1247 #11-1247
#11-1249 11-1249 11-1249 #11-1249 #30-2587 30-2587 30-2587 #30-2587 30-2587
30-2587 #30-2587 30-2587 30-2587 #30-2587 30-2587 30-2587 #30-2587 #30-2589
30-2589 30-2589 #30-2589 30-2589 30-2589 #30-2589 30-2589 30-2589 #30-2589
30-2589 30-2589 #30-2589 #35-3229 35-3229 35-3229 #35-3229 35-3229 35-3229
#35-3229 35-3229 35-3229 #35-3229 35-3229 35-3229 #35-3229 35-3229 35-3229
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 17
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
#35-3229 35-3229 35-3229 #35-3229 35-3229 #49-4139 49-4139 49-4139 #49-4139
49-4139 49-4139 #49-4139 49-4139 49-4139 #49-4139 49-4139 49-4139 #49-4139
$$$T1 = 000011 #63-4841 63-4841 #68-5368 68-5368 #69-5406 69-5406
$$$T2 = 000000 #67-5271 67-5271
$$$$ = 000002 #35-3299 35-3299 #35-3299 35-3299 35-3299 #35-3299 35-3299 35-3299 #35-3299
35-3299 35-3299 #35-3299 35-3299 #35-3299 35-3299 #35-3299 35-3299 35-3299
#35-3299 35-3299 35-3299 #35-3299 35-3299 35-3299 #35-3299 35-3299 #35-3299
35-3299 #35-3299 35-3299 35-3299 #35-3299 35-3299 35-3299 #35-3299 35-3299
35-3299 #35-3299 35-3299 #35-3299 35-3299 #35-3299 35-3299 35-3299 #35-3299
35-3299 35-3299 #35-3299 35-3299 35-3299 #35-3299 35-3299 #37-3408 37-3408
#37-3408 37-3408 37-3408 #37-3408 37-3408 37-3408 #37-3408 37-3408 #37-3408
37-3408 #37-3408 37-3408 37-3408 #37-3408 37-3408 37-3408 #37-3408 37-3408
#37-3408 37-3408 #37-3408 37-3408 37-3408 #37-3408 37-3408 37-3408 #37-3408
37-3408 #39-3561 39-3561 #39-3561 39-3561 39-3561 #39-3561 39-3561 39-3561
#39-3561 39-3561 #39-3561 39-3561 #39-3561 39-3561 39-3561 #39-3561 39-3561
39-3561 #39-3561 39-3561 #39-3561 39-3561 #39-3561 39-3561 39-3561 #39-3561
39-3561 39-3561 #39-3561 39-3561 #40-3720 40-3720 #40-3720 40-3720 40-3720
#40-3720 40-3720 40-3720 #40-3720 40-3720 #40-3720 40-3720 #40-3720 40-3720
40-3720 #40-3720 40-3720 40-3720 #40-3720 40-3720 #40-3720 40-3720 #40-3720
40-3720 40-3720 #40-3720 40-3720 40-3720 #40-3720 40-3720 #41-3788 41-3788
#41-3788 41-3788 41-3788 #41-3788 41-3788 41-3788 #41-3788 41-3788 #41-3788
41-3788 #41-3788 41-3788 41-3788 #41-3788 41-3788 41-3788 #41-3788 41-3788
#41-3788 41-3788 #41-3788 41-3788 41-3788 #41-3788 41-3788 41-3788 #41-3788
41-3788 #42-3825 42-3825 #42-3825 42-3825 #43-3888 43-3888 #43-3888 43-3888
43-3888 #43-3888 43-3888 #43-3888 43-3888 #43-3888 43-3888 43-3888 #43-3888
43-3888
.BGBUF = ****** GX 32-2770 32-2810 64-5000 64-5007 66-5250
.BRCLK = 005000 #11-1223 #22-2229 #46-4027 #61-4691
.CECLK = 004000 #11-1223 #22-2229 #46-4027 #61-4691
.CLRMR = 006000 #11-1223 #22-2229 #46-4027 #61-4691
.CLRUN = 010000 #11-1223 #22-2229 #46-4027 #61-4691
.COMEF = ****** GX 10-1151 19-1932 35-3124 52-4276 53-4371
.CONBT = 012000 #11-1223 #22-2229 #46-4027 #61-4691
.CRPFL = ****** GX 52-4220 *52-4223
.CRTSK = ****** GX 30-2619 51-4201 63-4858
.CSHRG = 164000 #11-1223 #22-2229 #46-4027 #61-4691
.CYLTM = 000074 #22-2281 30-2587 30-2587 30-2589 #46-4047 49-4139 49-4139
.DBINT 001236 RG #10-691
.DRLTC = 015000 #11-1223 #22-2229 #46-4027 #61-4691
.DSACF = 066000 #11-1223 #22-2229 #46-4027 #61-4691
.DSIOJ = 065000 #11-1223 #22-2229 #46-4027 #61-4691
.EIOJA = 067000 #11-1223 #22-2229 #46-4027 #61-4691
.FEACK 004242 RG #20-2031
.FEST 004346 RG #21-2058
.GFNR = 102000 #11-1223 #22-2229 #46-4027 #61-4691
.INICL = 070000 #11-1223 #22-2229 #46-4027 #61-4691
.IRLTC = 014000 #11-1223 #22-2229 #46-4027 #61-4691
.LCRDL = 052000 #11-1223 #22-2229 #46-4027 #61-4691
.LCRDR = 051000 #11-1223 #22-2229 #46-4027 #61-4691
.LCRM1 = 057000 #11-1223 #22-2229 #46-4027 #61-4691
.LCRM2 = 056000 #11-1223 #22-2229 #46-4027 #61-4691
.LCRM3 = 055000 #11-1223 #22-2229 #46-4027 #61-4691
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 18
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
.LCRM4 = 054000 #11-1223 #22-2229 #46-4027 #61-4691
.LCRM5 = 053000 #11-1223 #22-2229 #46-4027 #61-4691
.LDAR = 077000 #11-1223 #22-2229 #46-4027 #61-4691
.LDBRL = 043000 #11-1223 #22-2229 #46-4027 #61-4691
.LDBRR = 042000 #11-1223 #22-2229 #46-4027 #61-4691
.LDCK1 = 046000 #11-1223 #22-2229 #46-4027 #61-4691
.LDCK2 = 047000 #11-1223 #22-2229 #46-4027 #61-4691
.LDDIS = 045000 #11-1223 #22-2229 #46-4027 #61-4691
.LDRJD = 064000 #11-1223 #22-2229 #46-4027 #61-4691
.LDRJV = 063000 #11-1223 #22-2229 #46-4027 #61-4691
.LDRM1 = 060000 #11-1223 #22-2229 #46-4027 #61-4691
.LDRM2 = 061000 #11-1223 #22-2229 #46-4027 #61-4691
.LDRM3 = 062000 #11-1223 #22-2229 #46-4027 #61-4691
.LDSEL = 044000 #11-1223 #22-2229 #46-4027 #61-4691
.LPPFL = ****** GX 31-2647 *31-2650
.MEMRS = 076000 #11-1223 #22-2229 #46-4027 #61-4691
.PCAB1 = 150000 #11-1223 #22-2229 #46-4027 #61-4691
.PCAB2 = 151000 #11-1223 #22-2229 #46-4027 #61-4691
.PCAB3 = 152000 #11-1223 #22-2229 #46-4027 #61-4691
.PCAB4 = 153000 #11-1223 #22-2229 #46-4027 #61-4691
.POLLH = ****** GX 66-5245
.PUDBA = ****** GX 63-4849 65-5093 66-5178
.PUDEA = ****** GX 63-4967 66-5186
.RCRM1 = 147000 #11-1223 #22-2229 #46-4027 #61-4691
.RCRM2 = 146000 #11-1223 #22-2229 #46-4027 #61-4691
.RCRM3 = 145000 #11-1223 #22-2229 #46-4027 #61-4691
.RCRM4 = 144000 #11-1223 #22-2229 #46-4027 #61-4691
.RCSPF = 141000 #11-1223 #22-2229 #46-4027 #61-4691
.RDJ14 = 134000 #11-1223 #22-2229 #46-4027 #61-4691
.RDJ71 = 135000 #11-1223 #22-2229 #46-4027 #61-4691
.RDMAB = 133000 #11-1223 #22-2229 #46-4027 #61-4691
.RPELC = ****** GX 10-1153 *10-1158
.RPELQ = ****** GX 10-1159
.RPUNT = ****** GX 19-1989
.SECLK = 003000 #11-1223 #22-2229 #46-4027 #61-4691
.SETMR = 007000 #11-1223 #22-2229 #46-4027 #61-4691
.SETRN = 011000 #11-1223 #22-2229 #46-4027 #61-4691
.SSCLK = 002000 #11-1223 #22-2229 #46-4027 #61-4691
.STDTA = ****** GX 66-5231
.STDTZ = ****** GX *66-5229 66-5230
.STPCL = 000000 #11-1223 #22-2229 #46-4027 #61-4691
.STRCL = 001000 #11-1223 #22-2229 #46-4027 #61-4691
.TPDBA = ****** GX 65-5059
.TPDEA = ****** GX 65-5067
.WRMBX = 071000 #11-1223 #22-2229 #46-4027 #61-4691
..AKCR 013716 RG #59-4623
..AKLP 011372 RG #42-3810
..ALCB = ****** GX 10-1156 10-1156
..ALC2 = ****** GX 32-2816 32-2816 64-5002 64-5002 64-5009 64-5009
..DECB = ****** GX 32-2858 32-2858
..DECN = ****** GX 21-2092 21-2092 40-3672 40-3672 57-4578 57-4578
..DEC2 = ****** GX 32-2771 32-2771 66-5253 66-5253 66-5257 66-5257
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 19
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
..DOLP 011614 RG 36-3366 36-3366 39-3536 39-3536 #44-3926
..DOL1 011600 RG 34-3048 34-3048 39-3491 39-3491 #44-3920
..DQRN = ****** GX 9-533 9-533 11-1282 11-1282 19-1946 19-1946 19-1975 19-1975 33-2888
33-2888
..DSEV = ****** GX 10-764 10-764 11-1431 11-1431 39-3556 39-3556 40-3667 40-3667 41-3786
41-3786 42-3823 42-3823 43-3882 43-3882 44-3951 44-3951 59-4632 59-4632
..ENB0 = ****** GX 19-1966 19-1966 43-3887 43-3887 66-5239 66-5239 67-5272 67-5272
..FSTD = ****** GX 63-4877 63-4877 66-5227 66-5227
..INTX = ****** GX 10-773 11-1435 39-3562 56-4553
..IODN = ****** GX 9-666 9-666 11-1336 11-1336 19-1961 19-1961 19-2018 19-2018 21-2106
21-2106 32-2851 32-2851 33-2951 33-2951
..NADD = ****** GX 66-5246 66-5246
..PTLP 011452 RG 33-2977 33-2977 40-3715 40-3715 #43-3849
..SACK = ****** GX 21-2095 32-2745 32-2745
..SPCR 013674 RG #58-4601
..SPLP 011220 RG 33-2943 33-2943 35-3183 35-3183 #41-3749
..STCR 013652 RG #57-4577
..STIN = ****** GX 19-2025 35-3284 35-3284 52-4250 52-4250 53-4465 53-4465
..STLP 011010 RG #40-3632
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 20
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
ALUN$ #22-2227
ALUN$S #61-4690 #63-4855 #63-4976
CALL #8-336 9-533 9-600 9-666 10-764 10-767 10-855 10-874 10-884 10-890
10-891 10-892 10-899 10-1156 #11-1222 11-1282 11-1336 11-1431 #18-1905 19-1946
19-1961 19-1966 19-1975 19-2009 19-2018 20-2046 21-2092 21-2106 21-2157 #22-2228
30-2612 30-2625 31-2649 32-2713 32-2721 32-2745 32-2771 32-2816 32-2851 32-2858
33-2888 33-2943 33-2951 33-2977 34-3048 35-3183 35-3284 36-3366 39-3491 39-3536
39-3556 40-3667 40-3672 40-3715 41-3786 42-3823 43-3882 43-3887 44-3951 #46-4026
51-4196 51-4207 52-4222 52-4250 52-4262 52-4281 52-4315 53-4465 56-4549 57-4578
58-4603 59-4632 #61-4690 63-4844 63-4877 63-4885 63-4887 63-4906 63-4927 63-4959
63-4982 64-4993 64-5002 64-5009 64-5023 64-5029 64-5033 65-5070 65-5073 65-5076
65-5078 66-5157 66-5167 66-5205 66-5210 66-5215 66-5216 66-5221 66-5222 66-5227
66-5239 66-5246 66-5253 66-5257 67-5272 67-5281 68-5306 68-5327 68-5339 69-5387
69-5389 69-5391 69-5393 69-5398 69-5400 69-5425 69-5437
CALLR #18-1905 19-2025 21-2095
CLEF$ #8-336 8-454
DIR$ #8-336 #9-531 #9-620 #9-620 #9-660 #9-661 #9-675 #9-676 #9-677 #11-1222
#11-1280 #11-1333 #11-1350 #11-1351 #11-1352 #18-1904 #19-1927 #22-2227 #30-2622 #30-2623
#30-2623 #30-2624 #30-2624 #31-2640 #31-2640 #32-2818 #32-2818 #35-3123 #35-3123 #35-3225
#36-3330 #36-3332 #36-3332 #46-4026 #51-4204 #51-4205 #51-4205 #51-4206 #51-4206 #52-4214
#52-4214 #52-4275 #52-4275 #53-4370 #53-4370 #63-4841 #63-4841 #63-4855 #63-4855 #63-4976
#63-4976 #64-4994 #64-4994 #67-5271 #67-5271 #68-5368 #68-5368 #69-5406 #69-5406
ERR #61-4705 63-4887 63-4982 65-5070 65-5073 65-5076 65-5078 66-5221 67-5281
ERRF #61-4709 65-5070 65-5073 65-5076
ERRN #61-4714 67-5281
ERR$ #9-531 #9-620 #9-660 #9-661 #9-675 #9-676 #9-677 #11-1280 #11-1333 #11-1350
#11-1351 #11-1352 #19-1927 #30-2622 #30-2623 #30-2624 #31-2640 #32-2818 #35-3123 #35-3225
#36-3330 #36-3332 #51-4204 #51-4205 #51-4206 #52-4214 #52-4275 #53-4370 #63-4841 #63-4855
#63-4976 #64-4994 #67-5271 #68-5368 #69-5406
IDENT$ #4-144
MOV$ #30-2623 30-2623 30-2623 #30-2624 30-2624 #31-2640 31-2640 #36-3332 36-3332 #51-4205
51-4205 51-4205 #51-4206 51-4206 #52-4214 52-4214 #63-4841 63-4841 #63-4855 #63-4855
63-4855 63-4855 63-4855 #63-4976 #63-4976 63-4976 63-4976 63-4976 #67-5271 67-5271
#68-5368 #68-5368 68-5368 68-5368 68-5368 68-5368 68-5368 68-5368 68-5368 68-5368
68-5368 68-5368 #69-5406 #69-5406 69-5406 69-5406 69-5406 69-5406 69-5406 69-5406
69-5406
MRKT$ #8-336 #8-460 #11-1222 #11-1247 #22-2227 #30-2587 #30-2589 #46-4025 #49-4139
MSG #61-4696 #63-4887 #63-4906 #63-4982 #65-5070 #65-5073 #65-5076 #65-5078 #66-5221 #67-5281
MVB$ #67-5271 #67-5271 #68-5368 #68-5368 #69-5406 #69-5406
NBL$ #63-4855 #63-4855 #63-4976 #63-4976
OFF$ #8-451 8-451 8-451 #8-454 8-454 8-454 #8-457 8-457 8-457 #8-460
8-460 8-460 8-460 8-460 8-460 #8-463 8-463 8-463 #8-466 8-466
8-466 8-466 8-466 8-466 8-466 8-466 8-466 #11-1241 11-1241 11-1241
#11-1243 11-1243 11-1243 #11-1245 11-1245 11-1245 11-1245 11-1245 11-1245 11-1245
11-1245 11-1245 #11-1247 11-1247 11-1247 11-1247 11-1247 11-1247 #11-1249 11-1249
11-1249 #30-2587 30-2587 30-2587 30-2587 30-2587 30-2587 #30-2589 30-2589 30-2589
30-2589 30-2589 30-2589 #35-3229 35-3229 35-3229 35-3229 35-3229 35-3229 35-3229
35-3229 35-3229 #49-4139 49-4139 49-4139 49-4139 49-4139 49-4139
POP #22-2228 32-2772 32-2837 32-2852 35-3285 35-3299 35-3299 35-3299 35-3299 36-3368
37-3408 37-3408 37-3408 39-3519 39-3525 39-3561 39-3561 39-3561 40-3720 40-3720
40-3720 41-3788 41-3788 41-3788 42-3825 43-3888 43-3888 #46-4026 #61-4690 68-5329
68-5340 69-5407 69-5408 69-5447
DRIVERS10 CREATED BY MACRO ON 10-NOV-81 AT 17:29 PAGE 21
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
PUSH #22-2228 #32-2684 #32-2767 #32-2807 #32-2846 #35-3119 #35-3280 #36-3364 #37-3388 #39-3474
#39-3511 #40-3633 #41-3750 #42-3811 #43-3850 #46-4026 #61-4690 #63-4887 #63-4906 #63-4982
#65-5070 #65-5073 #65-5076 #65-5078 #66-5221 #67-5281 #68-5324 #68-5334 #69-5384 #69-5438
QDPB$ #8-466 #8-466 #11-1245 #11-1245 #35-3229 #35-3229
QDPB$S #68-5368 68-5368 #69-5406 69-5406
QIOSY$ #8-336 #8-338 #11-1221 #11-1224 #22-2227 #22-2230 #61-4690 #61-4692
QIOW$ #8-336 8-466 #11-1222 11-1245 #22-2227 35-3229
QIOW$S #61-4690 68-5368 69-5406
RCVX$S #61-4690 #63-4841
RESTOR #35-3119 #35-3299 #37-3388 #37-3408 #39-3474 #39-3561 #40-3633 #40-3720 #41-3750 #41-3788
#42-3811 #42-3825 #43-3850 #43-3888
RETURN #6-212 #6-271 #8-336 #10-1007 #10-1044 #10-1179 #11-1222 #18-1905 #20-2050 #22-2228
#35-3300 #36-3373 #37-3409 #40-3721 #41-3789 #42-3826 #43-3889 #44-3982 #46-4026 #53-4472
#54-4486 #58-4605 #59-4633 #61-4690 #66-5261 #68-5330 #68-5341 #68-5375 #69-5409 #69-5418
#69-5450
RFA$ #63-4841 63-4841 #67-5271 67-5271 67-5271
RQST$S #61-4690 67-5271
RVP$ #31-2640 #52-4214 #63-4855 63-4855 #63-4976 63-4976 #68-5368 68-5368 #69-5406 69-5406
SAVE #22-2236 #35-3119 #37-3388 #39-3474 #40-3633 #41-3750 #42-3811 #43-3850
SPRA$S #22-2227 30-2624 #46-4025 51-4206
SVTK$S #22-2227 30-2623 #46-4025 51-4205
VDPB$S #63-4841 63-4841
WSIG$S #8-336 9-620 #22-2227 32-2818 35-3123 #46-4025 52-4275 53-4370 #61-4690 64-4994
WTLO$ #18-1904 18-1914
WTLO$S #22-2227 31-2640 #46-4025 52-4214
WTSE$ #8-336 #8-451 #8-457 #8-463 #11-1222 #11-1241 #11-1243 #11-1249
WTSE$S #22-2227 36-3332 #46-4025
$DEF #11-1221 #11-1223 #22-2228 #22-2229 #46-4026 #46-4027 #61-4690 #61-4691
.ENB #18-1904 21-2148 #22-2228 31-2646 32-2734 #46-4026 52-4219
.ENB0 #18-1904 19-1966 #22-2228 43-3887 #61-4690 66-5239 67-5272
.ENB4 #22-2286 #34-3050 #36-3367
.ENB6 #18-1904 20-2048
.INH #18-1904 21-2128 #22-2228 31-2643 32-2727 #46-4026 52-4216
.INH0 #18-1904 19-1928 #22-2228 43-3864 #61-4690 66-5225 67-5267
.INH4 #22-2282 #34-3038 #36-3365
.INH6 #18-1904 20-2043
.STKM #8-336 #8-448 #11-1222 #11-1239 #18-1904 #18-1925 #22-2228 #27-2487 #46-4026 #49-4114
#61-4690 #62-4774