Trailing-Edge
-
PDP-10 Archives
-
bb-x141b-bb
-
driver.l20
There are 3 other files named driver.l20 in the archive. Click here to see a list.
ARITH -- 16 BIT ARITHMETIC SIMU MACRO M1113 03-APR-86 19:04
TABLE OF CONTENTS
6- 192 ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
21- 2179 TITLE PAGE
22- 2214 COMMON PARAMETERS AND MACROS
23- 2301 LP-20 DEVICE REGISTER DEFINITIONS
24- 2373 COMMON DEVICE PARAMETER MODULE
25- 2406 DEVICE STATUS BIT DEFINITIONS
26- 2463 LP-20 COMMON DATA MODULE
27- 2497 COMMON VARIABLES
28- 2505 LP-20 DEVICE TABLES
29- 2543 LP-20 DRIVER TASK MODULE
30- 2587 LPINI (INITIALIZE LP-20 TASK)
31- 2645 LPLOOP (LP-20 DRIVER TASK LOOP)
32- 2672 LPIOD (LP TASK I/O DONE)
33- 2882 LPNIR (LP TASK QUEUE I/O REQUEST)
34- 3013 LPMKT (LP TASK MARK-TIME REQUEST)
35- 3085 SSTSLP (SEND LP-20 STATUS TO -10)
36- 3320 TESTLP (START LP-20 GOING ON THREADED LIST)
37- 3392 INITLP (INITALIZE ALL LP'S)
38- 3431 LP-20 INTERRUPT SERVICE MODULE
39- 3463 $LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
40- 3583 LP-20 COMMON SUBROUTINES MODULE
40- 3622 ..STLP (START LP-20 OUTPUT)
41- 3744 ..SPLP (STOP LP-20 OUTPUT)
42- 3810 ..AKLP (ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)
43- 3847 ..PTLP (PUT BLOCK IN THREADED OUTPUT LIST)
44- 3910 ..DOLP (INITIATE LP-20 TRANSFER)
45- 4006 TITLE PAGE
46- 4041 COMMON PARAMETERS AND MACROS
47- 4069 CD-11 DEVICE REGISTER BIT DEFINITIONS
48- 4098 CD-11 DRIVER COMMON DATA MODULE
49- 4130 COMMON DATABASE DEFINITIONS
50- 4163 CD-11 DRIVER TASK MODULE
51- 4197 TASK INITIALIZATION
52- 4232 CRLOOP (MAIN PROCESSING LOOP)
53- 4351 SSTSCR (SEND CD-11 STATUS TO -10)
54- 4496 INITCR (INITIALIZE CD-11)
55- 4511 CD-11 DRIVER COMMON SUBROUTINES MODULE
56- 4549 $CDINT (CD-11 INTERRUPT SERVICE)
57- 4579 ..STCR (START CD-11)
58- 4608 ..SPCR (STOP CD-11)
59- 4631 ..AKCR (READ CARD)
60- 4662 TITLE PAGE
61- 4706 MACROS AND PARAMETERS
62- 4795 TASK DATA
63- 4845 FIND THE TASK FILE
64- 5010 INITIALIZE TASK FILE
65- 5062 SETUP STD ENTRY
66- 5170 SETUP LOGICAL UNIT TABLE FOR TASK
67- 5288 RE-REQUEST TASK
68- 5313 TASK FILE I/O ROUTINES
69- 5402 ERROR PROCESSING
70- 5492 END STATEMENT
RSXFC -- RSX20F PARAMETER FIL MACRO M1113 03-APR-86 19:04 PAGE 1
1 .TITLE RSXFC -- RSX20F PARAMETER FILE (TOPS-20 SYSTEM DEFINITION)
2 .IDENT /013100/
3 ;
4 ; COPYRIGHT (C) 1977, 1978, 1985 BY
5 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
6 ; ALL RIGHTS RESERVED
7 ;
8 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
9 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
10 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
11 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
12 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
13 ;
14 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
15 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
16 ; CORPORATION.
17 ;
18 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
19 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
20 ;
21 ; VERSION 13-10
22 ;
23 ; ALAN D. PECKHAM 19-APR-77
24 ;
25 ; MODIFIED BY:
26 ;
27 ; R. BELANGER -- ELIMINATE 1090T "ARPA" CONFIGURATTION
28 ; R. BELANGER -- ADD 1091 CONFIGURATION
29 ;
30 ; FUNCTION: THIS MODULE PROVIDES THE PARAMETERS FOR ASSEMBLY OF RSX20F FOR
31 ; THE TOPS-20 SYSTEM.
32 ;
33 ; EQUATED SYMBOLS
34 ;
35 000001 $TOP20 =1 ; DEFINE TOPS-20 OPTION
36
37 000001 $LP20 =1 ; INCLUDE LP20 DRIVER
38 000002 L$$P20 =2 ; INCLUDE 2 LP-20'S
39 000001 $CD11 =1 ; INCLUDE CD11 CARD READER DRIVER
40 000001 $RP04 =1 ; INCLUDE RP04 DISK DRIVER
41 000001 $FE =1 ; INCLUDE FE PSEUDO-DEVICE DRIVER
42 000001 $F11 =1 ; INCLUDE FILES-11 ACP
43 000001 $DH11 =1 ; INCLUDE DH11 DRIVER
44 000010 D$$H11 =8. ; INCLUDE 8 DH-11'S
45 000001 $DBDTE =1 ; INCLUDE DTE20 DEBUGGING CODE
46 000001 $DTE =1 ; INCLUDE DTE20 DTE DRIVER
47 000001 R$$11D =1 ; RSX-11D BASE
48
49 .IF DF $T1091
50 $TOP10 =1 ; DEFINE TOPS-10 BASE FOR 1091
51 .ENDC ; $T1091
52
53 .IF DF $TOP10
54 .IF NDF $T1091
55 $DTA =1 ; INCLUDE DECTAPE DRIVER FOR TOPS-10
56 .IFF
57 $RX11 =1 ; INCLUDE FLOPPY DRIVER FOR TOPS-10/1091
RSXFC -- RSX20F PARAMETER FIL MACRO M1113 03-APR-86 19:04 PAGE 1-1
58 .ENDC ; $T1091
59 .ENDC ; $TOP10
60
61 .IF DF $TOP20
62 000001 $RX11 =1 ; INCLUDE FLOPPY DRIVER
63 .ENDC ; $TOP20
RSXFC -- RSX20F PARAMETER FIL MACRO M1113 03-APR-86 19:04 PAGE 2
65
66 .TITLE RSX20F -- RESIDENT EXECUTIVE (SYSTEM DEFINITION)
67 .IDENT /015500/
68 .ENABL AMA
69 .LIST MEB
70 .NLIST CND
71 ;
72 ; COPYRIGHT (C) 1975, 1984, 1985 BY
73 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
74 ; ALL RIGHTS RESERVED
75 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
76 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
77 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
78 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
79 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
80 ;
81 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
82 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
83 ; CORPORATION.
84 ;
85 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
86 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
87 ;
88 ; R. MCLEAN 19-MAR-75
89 ;
90 ; VERSION 15-50
91 ;
92 ; MODIFIED BY:
93 ;
94 ;
95 ;
RSX20F -- RESIDENT EXECUTIVE ( MACRO M1113 03-APR-86 19:04 PAGE 3
97 ;
98 ; SET VERSION OF RSX20F EXEC HERE
99 ;
100 000015 RSX$$V = 15 ; VERSION 15
101 000050 RSX$$E = 50 ; EDIT 50
102 ;
103 ; RELEASE VERSION
104 ;
105 000126 RSX$$K = 'V ; KEY FOR RELEASE-TYPE
106 ; "X" -- EXPERIMENTAL
107 ; "Y" -- FIELD/LOAD TEST
108 ; "V" -- RELEASE
109 000000 RSX$$F = 0 ; DEFINE FORM AS NULL
118 000102 RSX$$F = 'B ; TOPS-20 FORM OF THE EXEC.
123 ;
124 ; DTE-20 REGISTER OFFSETS
125 ;
126 000036 DAG3 =36
127 000034 STATD =34
128 000032 DAG2 =32
129 000030 DAG1 =30
130 000022 T11AD =22
131 000020 T10AD =20
132 000016 T11BC =16
133 000010 TNAD1 =10
134 000012 TNAD2 =12
135 000006 DXWD1 =6
136 000004 DXWD2 =4
137 000002 DXWD3 =2
RSX20F -- RESIDENT EXECUTIVE ( MACRO M1113 03-APR-86 19:04 PAGE 4
139 ;+
140 ; MACRO TO SET IDENT FOR EXEC MODULES.
141 ; FORMAT OF CALL IS:
142 ; IDENT$ VERSION,EDIT
143 ; OR
144 ; IDENT$ VERSION,EDIT,RSX$$F
145 ; IF MODULE CODING CHANGES WITH DIFFERENT FORMS
146 ;-
147
148 .MACRO IDENT$ VER,EDT,FRM,NUM
149 .IF B,NUM
150 .IF B,FRM
151 IDENT$ \VER,\EDT,0,0
152 .IFF
153 .IF EQ,<FRM-'A>
154 IDENT$ \VER,\EDT,A,0
155 .IFF
156 .IF EQ,<FRM-'B>
157 IDENT$ \VER,\EDT,B,0
158 .IFF
159 IDENT$ \VER,\EDT,E,0
160 .ENDC
161 .ENDC
162 .ENDC
163 .MEXIT
164 .IFF
165 .IF GE,VER-10
166 .IF GE,EDT-10
167 .LIST
168 .IDENT /'FRM'VER'EDT'0/
169 .NLIST
170 .IFF
171 .LIST
172 .IDENT /'FRM'VER'0'EDT'0/
173 .NLIST
174 .ENDC
175 .IFF
176 .IF GE,EDT-10
177 .LIST
178 .IDENT /'FRM'0'VER'EDT'0/
179 .NLIST
180 .IFF
181 .LIST
182 .IDENT /'FRM'0'VER'0'EDT'0/
183 .NLIST
184 .ENDC
185 .ENDC
186 .ENDC
187 .ENDM IDENT$
RSX20F -- RESIDENT EXECUTIVE ( MACRO M1113 03-APR-86 19:04 PAGE 6
190
191 .TITLE ARITH -- 16 BIT ARITHMETIC SIMULATOR
192 .SBTTL ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
193 .IDENT /001000/
194
195 ;
196 ; COPYRIGHT (C) 1972, 1984, 1985 BY
197 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
198 ; ALL RIGHTS RESERVED.
199 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
200 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
201 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
202 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
203 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
204 ;
205 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
206 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
207 ; CORPORATION.
208 ;
209 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
210 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
211 ;
212 ; VERSION 01-00
213 ;
214 ; D. N. CUTLER 10-FEB-72
215
216
217 .MCALL RETURN
218
219
220 ;+
221 ; **-$MUL-INTEGER MULTIPLY MAGNITUDE NUMBERS
222 ;
223 ; INPUTS:
224 ;
225 ; R0=MULTIPLIER.
226 ; R1=MULTIPLICAND.
227 ;
228 ; OUTPUTS:
229 ;
230 ; DOUBLE WORD RESULT IS RETURNED WITH THE
231 ; HIGH PART IN R0 AND THE LOW PART IN R1.
232 ;
233 ; REGISTERS R2, R3, R4, AND R5 ARE PRESERVED ACROSS CALL.
234 ;-
235
236 .ENABL LSB
237 000000 010046 $MUL:: MOV R0,-(SP) ;SAVE R0 FOR ADDS
238 000002 012746 000021 MOV #21,-(SP) ;SET REPEAT COUNT
239 000006 005000 CLR R0 ;CLEAR HIGH PART
240 000010 006000 10$: ROR R0 ;DOUBLE RIGHT SHIFT
241 000012 006001 ROR R1 ;
242 000014 103003 BCC 20$ ;IF CC DO NOT ADD
243 000016 066600 000002 ADD 2(SP),R0 ;
244 000022 000241 CLC ;CLEAR CARRY INDICATOR
245 000024 005316 20$: DEC (SP) ;DECREMENT REPEAT COUNT
246 000026 003370 BGT 10$ ;IF GT MORE TO GO
ARITH -- 16 BIT ARITHMETIC SIMU MACRO M1113 03-APR-86 19:04 PAGE 6-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
247 000030 000415 BR 50$ ;EXIT TO CALLER
248
249 ;+
250 ; **-$DIV-INTEGER DIVIDE MAGNITUDE NUMBERS
251 ;
252 ; INPUTS:
253 ;
254 ; R0=DIVIDEND.
255 ; R1=DIVISOR.
256 ;
257 ; OUTPUTS:
258 ;
259 ; QUOTIENT IS RETURNED IN R0 AND REMAINDER IN R1.
260 ;
261 ; REGISTERS R2, R3, R4, AND R5 ARE PRESERVED ACROSS CALL.
262 ;-
263
264 000032 012746 000020 $DIV:: MOV #20,-(SP) ;SET LOOP COUNT
265 000036 010146 MOV R1,-(SP) ;SAVE DIVISOR FOR SUBTRACTS
266 000040 005001 CLR R1 ;CLEAR REMAINDER
267 000042 006300 30$: ASL R0 ;DOUBLE LEFT SHIFT
268 000044 006101 ROL R1 ;
269 000046 020116 CMP R1,(SP) ;SUBTRACT OUT DIVISOR?
270 000050 103402 BLO 40$ ;IF LO NO
271 000052 161601 SUB (SP),R1 ;SUBTRACT OUT DIVISOR
272 000054 005200 INC R0 ;ADD IN LOW BIT
273 000056 005366 000002 40$: DEC 2(SP) ;DECREMENT REPEAT COUNT
274 000062 003367 BGT 30$ ;IF GT MORE TO GO
275 000064 022626 50$: CMP (SP)+,(SP)+ ;CLEAN STACK
276 000066 RETURN ;
000066 000207 RTS PC
277 .DSABL LSB
ARITH -- 16 BIT ARITHMETIC SIMU MACRO M1113 03-APR-86 19:04 PAGE 7
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
279
280
281 .TITLE DBDRV -- RP04/RP06 DRIVER
282 .IDENT /014440/
283 .LIST MEB
284 ;
285 ;
286 ;
287 ; COPYRIGHT (C) 1974, 1984, 1985 BY
288 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
289 ; ALL RIGHTS RESERVED.
290 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
291 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
292 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
293 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
294 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
295 ;
296 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
297 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
298 ; CORPORATION.
299 ;
300 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
301 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
302 ;
303 ;
304 ;
305 ;
306 ; AUTHOR: D. N. CUTLER
307 ; DATE: 2-JUL-74
308 ; VERSION: 14-44
309 ;
310 ;
311 ;
312 ; MODIFICATIONS:
313 ;
314 ; NO. DATE PROGRAMMER
315 ; --- ---- ----------
316 ; 001 17-JUN-75 R. MCLEAN
317 ; 002 19-JUL-76 J. MASSE
318 ; 003 28-MAR-77 A. PECKHAM FIX POWER FAIL RECOVERY
319 ; 004 27-JUL-77 R. BELANGER ADD 18-BIT ECC CORRECTION
320 ; TCO 5.1003 14-SEP-79 R. BELANGER FIX BUG IN DUAL-PORT LOGIC
321 ; TCO 5.1009 15-0CT-79 R. BELANGER ADD RH-11 ERROR LOGGING
322 ; TCO 4.1.1105 11-MAR-80 R. BELANGER CHANGE "EF.PR1" RECOGNITION
323 ; RCO 5.0000 04-AUG-81 D. DEUFEL/S. LEAPLINE
324 ; FIX BUG IN ECC CORRECTION
325 ;
DBDRV -- RP04/RP06 DRIVER MACRO M1113 03-APR-86 19:04 PAGE 8
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
327 ;
328 ; CONDITIONAL ASSEMBLY SWITCH DEFINITIONS
329 ;
330
331 000001 $DIRAC =1
332
333 ;R$$JPO =1 ; IF DEFINED, INCLUDE TRACK OFFSETTING
334
335 000001 R$$E18 =1 ; +++004 IF DEFINED, INCLUDE 18-BIT ECC CORRECTION
336
337 ;R$$E16 =1 ; +++004 IF DEFINED, INCLUDE 16-BIT ECC CORRECTION
338
339 ;
340 ; MACRO LIBRARY CALLS
341 ;
342
343 .MCALL WTSE$,CLEF$,MRKT$,QIOW$,DIR$,CALL,RETURN,.STKM,QIOSY$,WSIG$S
344
345 000070 QIOSY$
346
347
348
349 ; DEVICE REGISTER AND STATUS BIT DEFINITIONS
350
351
352 176700 RPEXP=176700 ; RPCS1 EXTERNAL PAGE ADDRESS
353
354
355
356 000000 RPCS1=0 ; CONTROL STATUS REGISTER 1
357
358 040000 TRE=40000 ; TRANSFER ERROR
359 020000 MCPE=20000 ; MASSBUS CONTROL PARITY ERROR
360 004000 DVA=4000 ; DRIVE AVAILABLE
361
362
363
364 000002 RPWC=2 ; WORD COUNT REGISTER
365
366 000004 RPBA=4 ; BUFFER ADDRESS REGISTER
367
368 000006 RPDA=6 ; DESIRED TRACK/SECTOR REGISTER
369
370
371
372 000010 RPCS2=10 ; CONTROL STATUS REGISTER 2
373
374 100000 DLT=100000 ; DATA LATE ERROR
375 040000 WCE=40000 ; WRITE CHECK ERROR
376 020000 UPE=20000 ; UNIBUS PARITY ERROR
377 010000 NED=10000 ; NONEXISTENT DISK ERROR
378 004000 NEM=4000 ; NONEXISTENT MEMORY ERROR
379 002000 PGE=2000 ; PROGRAMMING ERROR
380 001000 MXF=1000 ; MISSED TRANSFER ERROR
381 000400 MDPE=400 ; MASSBUS DATA PARITY ERROR
382
383
DBDRV -- RP04/RP06 DRIVER MACRO M1113 03-APR-86 19:04 PAGE 8-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
384
385 000012 RPDS=12 ; DRIVE STATUS REGISTER
386
387 040000 ERR=40000 ; ERROR SUMMARY BIT
388 010000 MOL=10000 ; MEDIUM ONLINE
389 004000 WRL=4000 ; WRITE LOCKED DRIVE
390 001000 PGM=1000 ; PROGRAM MODE
391 000200 DRY=200 ; DRIVE READY
392 000100 VV=100 ; VOLUME VALID
393
394
395
396 000014 RPER1=14 ; ERROR SUMMARY REGISTER
397
398 100000 DCK=100000 ; DATA CHECK ERROR
399 040000 UNS=40000 ; DRIVE UNSAFE
400 020000 OPI=20000 ; OPERATION INCOMPLETE
401 010000 DTE=10000 ; DRIVE TIMING ERROR
402 004000 WLE=4000 ; WRITE LOCK ERROR
403 002000 IAE=2000 ; INVALID DISK ADDRESS
404 001000 AOE=1000 ; ADDRESS OVERFLOW
405 000400 HCRC=400 ; HEADER CRC ERROR
406 000200 HCE=200 ; HEADER COMPARE ERROR
407 000100 ECH=100 ; ECC HARD ERROR
408 000040 WCF=40 ; WRITE CLOCK FAILURE
409 000020 FER=20 ; FORMAT ERROR
410 000010 CPE=10 ; CONTROL BUS PARITY ERROR
411 000004 RMR=4 ; REGISTER MODIFY REFUSED
412 000002 ILR=2 ; ILLEGAL REGISTER
413 000001 ILF=1 ; ILLEGAL FUNCTION
414
415
416
417 000016 RPAS=16 ; ATTENTION SUMMARY REGISTER
418
419 000020 RPLA=20 ; LOOKAHEAD REGISTER
420
421 000022 RPDBR=22 ; DATA BUFFER REGISTER
422
423 000024 RPMR=24 ; MAINTENENCE REGISTER
424
425 000026 RPDT=26 ; DRIVE TYPE REGISTER
426
427 000030 RPSN=30 ; DRIVE SERIAL NUMBER
428
429
430 000032 RPOF=32 ; DRIVE OFFSET REGISTER
431
432 010000 FMT22=10000 ; FORMAT (1=16 BIT)
433 004000 ECI=4000 ; ECC INHIBIT
434 002000 HCI=2000 ; HEADER COMPARE INHIBIT
435
436
437 000034 RPDC=34 ; DESIRED CYLINDER NUMBER
438
439 000044 RPEC1=44 ; ECC POSITION REGISTER
440
DBDRV -- RP04/RP06 DRIVER MACRO M1113 03-APR-86 19:04 PAGE 8-2
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
441 000046 RPEC2=46 ; ECC PATTERN REGISTER
442
443 ;
444 ; ERROR RETRY COUNT
445 ;
446
447 000010 RETRY=8. ; CONTROLLER ERROR RETRY COUNT
448
449
450 ; LOCAL DATA
451 ;
452 ;
453
454 000070 RPHD::
455 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
456
457 000370 DBIOD:
458 000370 WTSE$ E.IOD
000370 051 002 .BYTE 41.,2
000372 000000G .WORD E.IOD
459
460 000374 CLIOD:
461 000374 CLEF$ E.IOD ; CLEAR I/O DONE FLAG
000374 037 002 .BYTE 31.,2
000376 000000G .WORD E.IOD
462
463 000400 RPWLO:
464 000400 WTSE$ E.NIR ; WAIT FOR QIO
000400 051 002 .BYTE 41.,2
000402 000000G .WORD E.NIR
465
466 000404 MKDNR::
467 000404 MRKT$ 1,74.*10,0,0 ; WAIT FOR FIX
000404 027 005 .BYTE 23.,5
DBDRV -- RP04/RP06 DRIVER MACRO M1113 03-APR-86 19:04 PAGE 8-3
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
000406 000001 .WORD 1
000410 001120 .WORD 74.*10
000412 000000 .WORD 0
000414 000000 .WORD 0
468
469 000416 WFDNR::
470 000416 WTSE$ 1 ; WAIT
000416 051 002 .BYTE 41.,2
000420 000001 .WORD 1
471
472 000422 MSGDPB:
473 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
474
475 000442 DNMSG:
476 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
477
478 000460 DUNS:
479 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
480 .EVEN
481
482 000016 MSGSIZ =14. ; MESSAGE SIZE
483
504
506
507 000476 ECCWRD:
508 000476 000000 000000 000000 .WORD 0,0,0
509 000504 ECCMSK:
510 000504 000000 000000 000000 .WORD 0,0,0
511
DBDRV -- RP04/RP06 DRIVER MACRO M1113 03-APR-86 19:04 PAGE 9
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
514 ;
515 ;+
516 ; **-DBINI-RH11-RP04 DISK PACK CONTROLLER INITIATOR
517 ;
518 ; THIS ROUTINE IS ENTERED FROM THE QUEUE I/O DIRECTIVE WHEN AN I/O REQUEST
519 ; IS QUEUED AND AT THE END OF A PREVIOUS I/O OPERATION TO PROPAGATE THE EXECU-
520 ; TION OF THE DRIVER. IF THE SPECIFIED CONTROLLER IS NOT BUSY, THEN AN ATTEMPT
521 ; IS MADE TO DEQUEUE THE NEXT I/O REQUEST. ELSE A RETURN TO THE CALLER IS
522 ; EXECUTED. IF THE DEQUEUE ATTEMPT IS SUCCESSFUL, THEN THE NEXT I/O OPER-
523 ; ATION IS INITIATED. A RETURN TO THE CALLER IS THEN EXECUTED.
524 ;
525 ; INPUTS:
526 ;
527 ;
528 ; OUTPUTS:
529 ;
530 ; IF THE SPECIFIED CONTROLLER IS NOT BUSY AND AN I/O REQUEST IS WAIT-
531 ; ING TO BE PROCESSED, THEN THE REQUEST IS DEQUEUED AND THE I/O OPER-
532 ; ATION IS INITIATED.
533 ;-
534
535 .ENABL LSB
536
537 000512 DBINI:
538 000512 DIR$ #RPWLO ; WAIT FOR SOMETHING TO DO
000512 012746 000400' MOV #RPWLO,-(SP)
000516 104375 EMT 375
539 000520 012700 041104 MOV #"DB,R0 ; DQ THE REQUEST
540 000524 CALL ..DQRN
000524 004737 000000G JSR PC,..DQRN
541 000530 103770 BCS DBINI ; NOTHING GO BACK TO SLEEP
542
557
558 000532 4$:
559 000532 010137 000000G MOV R1,RPRNA ; SAVE THE REQUST NODE ADDRESS
560 000536 010337 000000G MOV R3,RPCNT ; SAVE THE TRANSFER SIZE
561 000542 010237 000000G MOV R2,RPUNIT ; SAVE UNIT NUMBER
562 000546 010537 000002G MOV R5,RPBUF+2 ; SAVE THE XFER ADDRESS
563 000552 006304 ASL R4 ; SHIF TO CORRECT POSITION
564 000554 006304 ASL R4
565 000556 006304 ASL R4
566 000560 006304 ASL R4
567 000562 010437 000000G MOV R4,RPBUF ; SAVE ADDRESS (HIGH ORDER)
568 000566 052737 000171 000000G BIS #171,RPBUF ; ASSUME READ LOGICAL FUNCTION
569 000574 122761 000002 000001G CMPB #IO.RLB/256.,R.FC+1(R1) ; READ LOGICAL FUNCTION?
570 000602 001412 BEQ 10$ ; IF EQ YES
571 000604 122761 000001 000001G CMPB #IO.WLB/256.,R.FC+1(R1)
572 000612 001403 BEQ 5$
573 000614 012703 177776 MOV #IE.IFC,R3
574 000620 000553 BR 46$
575 ;
576 000622 5$:
577 000622 162737 000010 000000G SUB #10,RPBUF ; CONVERT TO WRITE LOGICAL FUNCTION
578 000630 10$:
579 000630 012737 000010 000000G MOV #RETRY,RPRTC ; SET RETRY COUNT
580
587
DBDRV -- RP04/RP06 DRIVER MACRO M1113 03-APR-86 19:04 PAGE 9-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
588 000636 005002 CLR R2
589 000640 156102 000006G BISB R.PB+6(R1),R2
590 000644 016100 000010G MOV R.PB+10(R1),R0
591 000650 010103 MOV R1,R3 ; SAVE NODE ADDRESS
592 000652 012701 000020 MOV #16.,R1
593
594 000656 20$:
595 000656 006300 ASL R0
596 000660 006102 ROL R2 ;
597 000662 020227 000574 CMP R2,#19.*20. ; PARTIAL REMAINDER LARGER THAN DIVISOR?
598 000666 103403 BLO 30$ ; IF LO NO
599 000670 162702 000574 SUB #19.*20.,R2
600 000674 005200 INC R0
601 000676 30$:
602 000676 005301 DEC R1
603 000700 003366 BGT 20$ ; IF GT YES
604 000702 010063 000006G MOV R0,R.PB+6(R3)
605 000706 010200 MOV R2,R0 ; SET DIVIDEND TO TRACK/SECTOR REMAINDER
606 000710 012701 000024 MOV #20.,R1 ; SET DIVISOR TO NUMBER OF SECTORS/TRACK
607 000714 CALL $DIV ; CALCULATE TRACK AND SECTOR
000714 004737 000032' JSR PC,$DIV
608 000720 000300 SWAB R0 ; SWAP TRACK TO HIGH BYTE
609 000722 050100 BIS R1,R0 ; MERGE TRACK
610 000724 010063 000010G MOV R0,R.PB+10(R3)
611
612 ;
613 ; INITIATE I/O OPERATION
614 ;
615
616 000730 40$:
617 000730 012703 176710 MOV #RPEXP+RPCS2,R3 ; GET ADDRESS OF CSR
618 000734 012713 000040 MOV #40,@R3 ; CLEAR RH11+CONTROLLER
619 000740 113713 000000G MOVB RPUNIT,@R3
620 000744 012703 176700 MOV #RPEXP,R3
621 000750 41$:
622 000750 012713 000023 MOV #23,@R3 ; [5.1003] EXECUTE PACK ACK FUNCTION TO SET VV
623 000754 032737 000340 177776 BIT #340,@#PS ; IN INTERRUPT SERVICE?
624 000762 001007 BNE 42$ ; LEAVE IT ALONE -- MUST HAVE PORT HERE
625 000764 032713 004000 BIT #DVA,@R3 ; DRIVE AVAILABLE?
626 000770 001004 BNE 42$ ; YES -- USE IT
627 000772 WSIG$S ; NO -- BETTER WAIT FOR IT
000772 012746 MOV (PC)+,-(SP)
000774 061 001 .BYTE 49.,1
000776 104375 EMT 375
628 001000 000763 BR 41$ ; MAKE ANOTHER TRY
629 ;
630 001002 42$:
631 001002 012713 000023 MOV #23,@R3 ; PACK ACK AGAIN
632 001006 032713 004000 BIT #DVA,@R3 ; WATCH FOR TIMING AND MISSING DRIVE
633 001012 001756 BEQ 41$ ; MISSED IT -- TRY AGAIN
634 001014 43$:
635 001014 013702 000000G MOV RPRNA,R2 ; GET ADDRESS OF I/O PACKET
636 001020 012703 176710 MOV #RPEXP+RPCS2,R3 ; POINT TO SECOND CSR
637 001024 113713 000000G MOVB RPUNIT,@R3 ; SELECT PROPER DRIVE
638 001030 016243 000010G MOV R.PB+10(R2),-(R3) ; INSERT TRACK/SECTOR ADDRESS
639 001034 013743 000002G MOV RPBUF+2,-(R3) ; INSERT BUFFER ADDRESS
640 001040 013743 000000G MOV RPCNT,-(R3) ; INSERT NUMBER OF BYTES TO TRANSFER
DBDRV -- RP04/RP06 DRIVER MACRO M1113 03-APR-86 19:04 PAGE 9-2
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
641 001044 006013 ROR @R3 ; CONVERT TO WORD COUNT
642 001046 005413 NEG @R3 ; MAKE NEGATIVE WORD COUNT
643 001050 005743 TST -(R3) ; POINT TO BEGINNING
644
655
656 001052 012700 000375 MOV #IE.DNR&377,R0 ; ASSUME DRIVE NOT READY
657 001056 016301 000012 MOV RPDS(R3),R1 ; GET CURRENT DRIVE STATUS
658 001062 005101 COM R1 ; COMPLEMENT STATUS
659 001064 032701 010300 BIT #MOL!DRY!VV,R1 ; DRIVE READY?
660 001070 001035 BNE 47$ ; IF NE NO
661 001072 032763 040000 000014 BIT #UNS,RPER1(R3) ; DRIVE UNSAFE?
662 001100 001052 BNE 49$ ; IF NE YES
663 001102 016263 000006G 000034 MOV R.PB+6(R2),RPDC(R3) ; SET DESIRED CYLINDER ADDRESS
664 001110 013713 000000G MOV RPBUF,@R3 ; START FUNCTION
665 001114 032737 000340 177776 BIT #340,@#PS ; CHECK FOR RESTART FROM INTERRUPT SERVICE LEVEL
666 001122 001136 BNE 85$ ; YES -- RETURN FROM INTERRUPT
667 001124 DIR$ #DBIOD ; WAIT FOR I/O DONE
001124 012746 000370' MOV #DBIOD,-(SP)
001130 104375 EMT 375
668 001132 DIR$ #CLIOD ; CLEAR I/O DONE FLAG
001132 012746 000374' MOV #CLIOD,-(SP)
001136 104375 EMT 375
669 001140 013701 000000G MOV RPRNA,R1 ; FIND THE REQUEST NODE
670 001144 013703 000000G MOV RPBUF,R3 ; FIND THE I/O STATUS
671 001150 46$:
672 001150 013704 000002G MOV RPBUF+2,R4 ; BOTH HALVES
673 001154 CALL ..IODN ; FINISH I/O
001154 004737 000000G JSR PC,..IODN
674 001160 000137 000512' JMP DBINI ; WAIT FOR NEXT
675 ;
676 001164 47$:
677 001164 012737 000442' 000436' MOV #DNMSG,MSGDPB+Q.IOPL ; SET FOR NOT READY MESSAGE
678
679 001172 48$:
680 001172 032737 000340 177776 BIT #340,@#PS ; CHECK FOR ENTRY FROM PRI
681 001200 001060 BNE 60$ ; YES -- GO RE-TRY
682 001202 DIR$ #MSGDPB ; COMPLAIN
001202 012746 000422' MOV #MSGDPB,-(SP)
001206 104375 EMT 375
683 001210 DIR$ #MKDNR ; WAIT FOR FIX
001210 012746 000404' MOV #MKDNR,-(SP)
001214 104375 EMT 375
684 001216 DIR$ #WFDNR ; WAIT
001216 012746 000416' MOV #WFDNR,-(SP)
001222 104375 EMT 375
685 001224 000641 BR 40$ ; AND TRY AGAIN
686 ;
687 001226 49$:
688 001226 012737 000460' 000436' MOV #DUNS,MSGDPB+Q.IOPL ; SET FOR UNSAFE MESSAGE
689 001234 000756 BR 48$ ; TYPE MESSAGE
690 ;
DBDRV -- RP04/RP06 DRIVER MACRO M1113 03-APR-86 19:04 PAGE 10
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
692 ;
693 ;+
694 ; **-.DBINT-RH11-RP04 DISK PACK CONTROLLER INTERRUPTS
695 ;-
696 ;
697
698 001236 .DBINT::
699 001236 010046 MOV R0,-(SP) ;;; SAVE REGISTERS
700 001240 010146 MOV R1,-(SP)
701 001242 010246 MOV R2,-(SP)
702 001244 010346 MOV R3,-(SP)
703 001246 012702 176700 MOV #RPEXP,R2 ;;; GET ADDRESS OF CSR
704
711
712 001252 012700 000001 MOV #IS.SUC&377,R0 ;;; ASSUME SUCCESSFUL TRANSFER
713 001256 032712 060000 BIT #TRE!MCPE,@R2 ;;; ANY ERRORS?
714 001262 001432 BEQ 70$ ;;; IF EQ NO
715 001264 012700 000374 MOV #IE.VER&377,R0 ;;; ASSUME UNRECOVERABLE ERROR
716 001270 016201 000014 MOV RPER1(R2),R1 ;;; GET CONTENTS OF ERROR REGISTER
717 001274 032701 047007 BIT #UNS!WLE!IAE!AOE!RMR!ILR!ILF,R1 ;;; HARD ERROR?
718 001300 001004 BNE 50$ ;;; IF NE YES
719 001302 032762 014000 000010 BIT #NED!NEM,RPCS2(R2) ;;; HARD ERROR?
720 001310 001453 BEQ 100$ ;;; IF EQ NO
721 001312 50$:
722 001312 032701 004000 BIT #WLE,R1 ;;; WRITE LOCK ERROR?
723 001316 001403 BEQ 52$ ;;; IF EQ NO
724 001320 012700 000364 MOV #IE.WLK&377,R0 ;;; SET WRITE LOCK ERROR
725 001324 000415 BR 80$ ;;;
726 ;
727 001326 52$:
728 001326 032701 003000 BIT #IAE!AOE,R1 ;;; CHECK FOR ILLEGAL CYL
729 001332 001412 BEQ 80$ ;;; NO -- UNRECOVERABLE ERROR
730 001334 012700 000354 MOV #IE.BLK&377,R0 ;;; SET ILLEGAL BLOCK
731 001340 000407 BR 80$ ;;; AND RETURN
732 ;
744
745 ;
746 ; DEVICE TIMEOUT RESULTS IN THE CURRENT OPERATION BEING REPEATED. TIMEOUTS ARE
747 ; USUALLY CAUSED BY POWERFAILURE BUT MAY ALSO BE THE RESULT OF A HARDWARE FAILURE
748 ;
749
750 001342 60$:
751 001342 105337 000000G DECB RPRTC ;;; RETRY FUNCTION?
752
758
759 001346 003032 BGT 82$ ;;; IF GT YES
760
762
763 001350 70$:
764 001350 013701 000000G MOV RPRNA,R1 ;;; GET ADDRESS OF I/O PACKET
765 001354 016101 000002G MOV R.PB+2(R1),R1 ;;; SET FINAL VALUE OF SECOND STATUS WORD
766 001360 80$: ;;; REF LABEL
767 001360 012712 000013 MOV #13,@R2 ;;; RELEASE DUAL PORT
768 001364 010037 000000G MOV R0,RPBUF ;;; SAVE THE STATUS
769 001370 010137 000002G MOV R1,RPBUF+2
770 001374 052737 000000G 000020G BIS #EF.IOD,RPTSK+A.EF ;;; SET I/O DONE
771 001402 CALL ..DSEV ;;; DECLARE SIG EVENT
DBDRV -- RP04/RP06 DRIVER MACRO M1113 03-APR-86 19:04 PAGE 10-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
001402 004737 000000G JSR PC,..DSEV
772 001406 105737 000000G TSTB RPBUF+0 ;;; [5.1009] DID WE GET AN ERROR??
773 001412 100002 BPL 85$ ;;; [5.1009] NO -- GO ON
774 001414 CALL 300$ ;;; [5.1009] YES -- QUEUE UP AN ERROR LOG REQUEST
001414 004737 001750' JSR PC,300$
775 001420 85$:
776 001420 012603 MOV (SP)+,R3 ;;; RESTORE REGISTERS
777 001422 012602 MOV (SP)+,R2
778 001424 012601 MOV (SP)+,R1
779 001426 012600 MOV (SP)+,R0
780 001430 000137 000000G JMP @#..INTX ;;; RETURN FROM INTERRUPTS
781 ;
782 001434 82$:
783 001434 000137 000730' JMP 40$
784 ;
791
792 001440 100$:
793 001440 032762 163400 000010 BIT #DLT!WCE!UPE!PGE!MXF!MDPE,RPCS2(R2) ;;; CONTROLLER ERROR?
794 001446 001335 BNE 60$ ;;; IF NE YES
795
802
803 001450 005701 TST R1 ;;; DATA CHECK ERROR?
804 001452 100333 BPL 60$ ;;; IF PL NO
805
807
808 001454 032701 000100 BIT #ECH,R1 ;;; ECC HARD ERROR?
809 001460 001330 BNE 60$ ;;; IF NE YES
810
812
813 ;
814 ; START ECC CORRECTION PROCEDURE
815 ;
816 ; FIRST CALCULATE THE BYTE OFFSET TO THE START OF BLOCK TRANSFERED
817 ;
818
819 001462 105$:
820 001462 016203 000002 MOV RPWC(R2),R3 ;;; GET NEGATIVE NUMBER OF WORDS REMAINING
821 001466 006303 ASL R3 ;;; CONVERT TO NEGATIVE BYTES REMAINING
822 001470 063703 000000G ADD RPCNT,R3 ;;; CALCULATE NUMBER OF BYTES TRANSFERED
823
832
833 001474 005303 DEC R3 ;;; CALCULATE OFFSET TO START OF BLOCK
834 001476 107$:
835 001476 042703 000777 BIC #777,R3 ;;; CLEAR RESIDUE
836
844
846
847 ;
848 ; 18-BIT ECC CORRECTION ROUTINES
849 ;
850 ; THE WORD IN ERROR AND THE WORD FOLLOWING IT ARE SET UP AS A TRIPLET
851 ; (TWO 18-BIT WORDS) AS IS THE ECC CORRECTION MASK FROM THE CONTROLLER.
852 ; THE MASK TRIPLET IS POSITIONED OVER THE DATA TRIPLET, CORRECTION IS
853 ; APPLIED, AND THE TWO DATA WORDS RETUNED TO THE BUFFER. THE CURRENT
854 ; OPERATION THEN PROCEEDS NORMALLY.
855 ;
856 001502 016200 000044 MOV RPEC1(R2),R0 ;;; LOOK AT POSITION REGISTER
DBDRV -- RP04/RP06 DRIVER MACRO M1113 03-APR-86 19:04 PAGE 10-2
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
857 001506 001003 BNE 109$ ;;; 5.000 BRANCH IF OK
858 001510 112700 000374 MOVB #IE.VER&377,R0 ;;; 5.000 INDICATE ERROR
859 001514 000721 BR 80$ ;;; AND EXIT
860 001516 005300 109$: DEC R0 ;;; MINUS 1
861 001520 012701 000022 MOV #^D18,R1 ;;; DIVIDE BY 18.
862 001524 CALL $DIV ;;; SO
001524 004737 000032' JSR PC,$DIV
863 ;
864 ; COMPUTE THE ADDRESS OF THE WORD IN ERROR
865 ;
866 ; R0 -- WORD OFFSET IN TRANSFER
867 ; R1 -- SHIFT COUNT FOR ECC MASK
868 ; R2 -- BASE OF CONTROLLER REGISTERS
869 ; R3 -- OFFSET INTO TRANSFER BUFFER
870 ;
871 001530 006300 ASL R0 ;;; CONVERT TO BYTE OFFSET
872 001532 063703 000002G ADD RPBUF+2,R3 ;;; BUFFER ADDRESS TO R3
873 001536 060003 ADD R0,R3 ;;; POINT TO WORD IN ERROR
874 ;
875 ; CONSTRUCT THE CORRECTION MASK TRIPLET
876 ;
877 001540 012700 000512' MOV #ECCMSK+6,R0 ;;; POINT TO THE MASK BUFFER
878 001544 005040 CLR -(R0) ;;; CLEAR IT OUT
879 001546 005040 CLR -(R0) ;;; SO
880 001550 016240 000046 MOV RPEC2(R2),-(R0) ;;; SET THE MASK WORD IN THE BUFFER
881 001554 CALL 141$ ;;; SHIFT IT INTO CORRECT POSITION
001554 004737 001704' JSR PC,141$
882 ;
883 ; CONSTRUCT THE ERROR DATA TRIPLET
884 ;
885 001560 005723 TST (R3)+ ;;; POINT TO THE SECOND ERROR WORD
886 001562 012700 000504' MOV #ECCWRD+6,R0 ;;; POINT TO THE ECC WORD BUFFER
887 001566 005040 CLR -(R0) ;;; CLEAR IT OUT
888 001570 005040 CLR -(R0) ;;; SO
889 001572 011340 MOV (R3),-(R0) ;;; SET SECOND ERROR WORD IN BUFFER
890 001574 012701 000022 MOV #^D18,R1 ;;; SHIFT IT INTO THE HIGH 18. BITS
891 001600 CALL 141$ ;;; SO
001600 004737 001704' JSR PC,141$
892 001604 014310 MOV -(R3),(R0) ;;; SET THE FIRST ERROR WORD IN THE BUFFER
893 001606 012701 000504' MOV #ECCMSK,R1 ;;; POINT TO THE SHIFTED MASK
894 ;
895 ; APPLY CORRECTION TO EACH WORD IN THE DATA TRIPLET
896 ;
897 001612 CALL 130$ ;;; CORRECT BITS 00 THRU 16
001612 004737 001672' JSR PC,130$
898 001616 CALL 130$ ;;; CORRECT BITS 17 THRU 32
001616 004737 001672' JSR PC,130$
899 001622 CALL 130$ ;;; CORRECT BITS 33 THRU 36
001622 004737 001672' JSR PC,130$
900 ;
901 ; REPLACE THE ERROR WORDS WITH THOSE JUST CORRECTED
902 ;
903 001626 162700 000006 SUB #6,R0 ;;; BACK THE POINTER UP
904 001632 011023 MOV (R0),(R3)+ ;;; SET FIRST CORRECTED WORD IN BUFFER
905 001634 012701 177756 MOV #-^D18,R1 ;;; SHIFT COUNT TO R1
906 001640 CALL 141$ ;;; SHIFT SECOND CORRECTED WORD DOWN
001640 004737 001704' JSR PC,141$
DBDRV -- RP04/RP06 DRIVER MACRO M1113 03-APR-86 19:04 PAGE 10-3
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
907 001644 011013 MOV (R0),(R3) ;;; SET SECOND CORRECTED WORD IN BUFFER
908 ;
909 ; CONTINUE OR TERMINATE PREVIOUS OPERATION
910 ;
911
913
961
962 ;
963 ; SIXTH FINISH OR CONTINUE PREVIOUS FUNCTION
964 ;
965
966 001646 012700 000001 MOV #IS.SUC&377,R0 ;;; ASSUME SUCCESSFUL TRANSFER
967 001652 112712 000011 MOVB #11,@R2 ;;; CLEAR DRIVE ERRORS
968
974
975 001656 005762 000002 TST RPWC(R2) ;;; ANY MORE WORDS TO TRANSFER?
976
978
979 001662 001632 BEQ 70$ ;;; IF EQ NO
980
989
990 001664 113712 000000G MOVB RPBUF,@R2 ;;; RESTART PREVIOUS OPERATION
991 001670 000653 BR 85$
992 ;
994
995 ;
996 ; APPLY CORRECTION TO ONE WORD IN THE ERROR TRIPLET
997 ;
998 ; INPUTS:
999 ;
1000 ; R0 POINTS TO WORD IN DATA TRIPLET TO BE CORRECTED
1001 ; R1 POINTS TO WORD IN MASK TRIPLET TO BE APPLIED TO DATA
1002 ;
1003 ; OUTPUTS:
1004 ;
1005 ; R0 POINTS TO THE NEXT WORD IN THE DATA TRIPLET
1006 ; R1 POINTS TO THE NEXT WORD IN THE MASK TRIPLET
1007 ;
1008 001672 130$:
1009 001672 011146 MOV (R1),-(SP) ;;; CURRENT MASK TO STACK
1010 001674 041016 BIC (R0),(SP) ;;; .NOT. MASK .AND. DATA
1011 001676 042110 BIC (R1)+,(R0) ;;; .NOT. DATA .AND. MASK
1012 001700 052620 BIS (SP)+,(R0)+ ;;; DATA .OR. MASK
1013 001702 140$:
1014 001702 RETURN ;;; FOR MORE
001702 000207 RTS PC
1015 ;
1016 ; SHIFT A TRIPLET EITHER RIGHT OR LEFT
1017 ;
1018 ; INPUTS:
1019 ;
1020 ; R0 POINTS TO TRIPLET TO BE SHIFTED
1021 ; R1 HAS SHIFT COUNT -
1022 ; .GT. 0 => SHIFT LEFT
1023 ; .EQ. 0 => NO SHIFT
1024 ; .LT. 0 => SHIFT RIGHT
1025 ;
DBDRV -- RP04/RP06 DRIVER MACRO M1113 03-APR-86 19:04 PAGE 10-4
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1026 ; NO REGISTERS ALTERED
1027 ;
1028 001704 141$:
1029 001704 010146 MOV R1,-(SP) ;;; SAVE SHIFT COUNT
1030 001706 100407 BMI 143$ ;;; SHIFT RIGHT IF NEGATIVE
1031 001710 001415 BEQ 145$ ;;; GO AWAY IF .EQ. 0
1032 001712 142$:
1033 001712 006320 ASL (R0)+ ;;; SHIFT AWAY TO THE LEFT
1034 001714 006120 ROL (R0)+ ;;; PROPAGATE CARRY
1035 001716 006110 ROL (R0) ;;; FOR ALL THREE WORDS
1036 001720 024040 CMP -(R0),-(R0) ;;; BACK THE POINTER UP
1037 001722 077105 SOB R1,142$ ;;; LOOP TILL DONE
1038 001724 000407 BR 145$ ;;; EXIT
1039 ;
1040 001726 143$:
1041 001726 005401 NEG R1 ;;; SO "SOB" WORKS
1042 001730 144$:
1043 001730 022020 CMP (R0)+,(R0)+ ;;; 5.000 ADVANCE THE POINTER
1044 001732 000241 CLC ;;; 5.000 CLEAR THE CARRY BIT
1045 001734 006010 ROR (R0) ;;; 5.000
1046 001736 006040 ROR -(R0) ;;; 5.000
1047 001740 006040 ROR -(R0) ;;; 5.000
1048 001742 077106 SOB R1,144$ ;;; TRY FOR MORE
1049 001744 145$:
1050 001744 012601 MOV (SP)+,R1 ;;; RESTORE SHIFT COUNT
1051 001746 RETURN ;;; TO CALLER
001746 000207 RTS PC
1052
1054
1074
1075 ;
1076 ; OFFSET RECOVERY
1077 ;
1078
1157 001750 300$:
1158 001750 005737 000002G TST .COMEF+2 ;;; [4.1.1105] PRIMARY PROTOCOL RUNNING??
1159 001754 100037 BPL 340$ ;;; [4.1.1105] NO -- JUST EXIT
1160 001756 022737 000002 000000G CMP #2,.RPELC ;;; [5.1009] YES -- IS THERE SPACE IN THE QUEUE
1161 001764 001433 BEQ 340$ ;;; [5.1009] NO -- EXIT
1162 001766 012701 000052 MOV #52,R1 ;;; [5.1009] YES -- ALLOCATE A PACKET
1163 001772 CALL ..ALCB ;;; [5.1009] SO
001772 004737 000000G JSR PC,..ALCB
1164 001776 103426 BCS 340$ ;;; [5.1009] ERROR IF CC-C IS SET
1165 002000 005237 000000G INC .RPELC ;;; [5.1009] COUNT THIS NODE
1166 002004 012702 000000G MOV #.RPELQ,R2 ;;; [5.1009] LISTHEAD POINTER TO R2
1167 002010 310$:
1168 002010 011203 MOV (R2),R3 ;;; [5.1009] FIND THE END OF THE LIST
1169 002012 001402 BEQ 320$ ;;; [5.1009] FOUND IT -- GO ON
1170 002014 010303 MOV R3,R3 ;;; [5.1009] NOT YET
1171 002016 000774 BR 310$ ;;; [5.1009] TRY AGAIN
1172 ;
1173 002020 320$:
1174 002020 010012 MOV R0,(R2) ;;; [5.1009] LINK NEW NODE
1175 002022 005020 CLR (R0)+ ;;; [5.1009] MARK END OF LIST
1176 002024 010120 MOV R1,(R0)+ ;;; [5.1009] SET NODE SIZE
1177 002026 012720 000046 MOV #46,(R0)+ ;;; [5.1009] SET TRANSFER SIZE
1178 002032 012720 000300 MOV #DV.LOG!DV.URE,(R0)+ ;;; [5.1009] SET STANDARD STATUS
DBDRV -- RP04/RP06 DRIVER MACRO M1113 03-APR-86 19:04 PAGE 10-5
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1179 002036 012701 176700 MOV #RPEXP,R1 ;;; [5.1009] POINT TO BASE OF DEVICE REGISTERS
1180 002042 010120 MOV R1,(R0)+ ;;; [5.1009] SET THAT IN PACKET
1181 002044 012702 000020 MOV #20,R2 ;;; [5.1009] SET SIZE OF DEVICE
1182 002050 330$:
1183 002050 012120 MOV (R1)+,(R0)+ ;;; [5.1009] LOAD UP THE PACKET
1184 002052 077202 SOB R2,330$ ;;; [5.1009] SO
1185 002054 340$:
1186 002054 RETURN ;;; [5.1009] TO CALLER
002054 000207 RTS PC
DBDRV -- RP04/RP06 DRIVER MACRO M1113 03-APR-86 19:04 PAGE 12
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1447
1448
1450 .TITLE DXDRV
1451 .IDENT /007000/
1452 ;
1453 ; COPYRIGHT (C) 1975, 1984, 1985 BY
1454 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
1455 ; ALL RIGHTS RESERVED.
1456 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
1457 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
1458 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
1459 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
1460 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
1461 ;
1462 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
1463 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
1464 ; CORPORATION.
1465 ;
1466 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
1467 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
1468 ;
1469 ;
1470 ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
1471 ; OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
1472 ;
1473 ;
1474 ; VERSION: 07-00
1475 ; BY: H. LEV
1476 ; RSX20F -- R. MCLEAN
1477 ; DATE: 16-JUN-75
1478 ;
1479 ;
1480 ; RX01 - RX11 FLOPPY DISK DRIVER
1481 ;
1482 ; FUNCTIONS RECOGNIZED:
1483 ; IO.RPB - READ PHYSICAL BLOCK (MAY READ ANY SECTOR ON DISK)
1484 ; IO.WPB - WRITE PHYSICAL BLOCK (MAY WRITE ANY SECTOR ON DISK)
1485 ; IO.WDD - WRITE DELETED DATA - WRITE ANY SECTOR ON DISK
1486 ; SETTING THE DELETED DATA MARK IN SECTOR HEADER
1487 ; THE FOLLOWING TWO FUNCTION CODES OPERATE ON 256 WORD BLOCKS
1488 ; OF DATA (4 SECTORS) THE DRIVER AUTOMATICALLY INTERLEAVES
1489 ; AND SKEWS SECTORS TO OPTIMIZE THE TRANSFER OF DATA
1490 ; SO THAT A LONG READ/WRITE MAY BE DONE WITHOUT LOOSING
1491 ; A REVOLUTION OF THE DISK. THE INTERLEAVE FACTOR IS 2
1492 ; AND THE SKEW FACTOR IS 6.
1493 ; IO.RLB - READ LOGICAL BLOCKS OF 256. WORDS
1494 ; IO.WLB - WRITE LOGICAL BLOCKS OF 256. WORDS.
1495 ;
1496 ; IF DELETED DATA IS READ, THE STATUS CODE RETURNED WILL
1497 ; BE IS.RDD, OTHERWISE IT IS IS.SUC
1498 ;
1499 ;
1500 ; MODIFICATIONS:
1501 ;
1502 ; NO. DATE PROGRAMMER PURPOSE
1503 ; --- ---- ---------- -------
1504 ; 001 15-MAR-77 R. BELANGER CONDITIONALLY ASSEMBLE
DXDRV MACRO M1113 03-APR-86 19:04 PAGE 12-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1505 ; FLOPPY DRIVER
1506 ; 002 22-OCT-77 R. BELANGER REMOVE CONDITIONALS
DXDRV MACRO M1113 03-APR-86 19:04 PAGE 13
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1508 .MCALL QIOSY$,$DEF
1509 002056 QIOSY$
1510 .MCALL .STKM,WTSE$,DIR$,CALL,RETURN
1511 002056 $DEF
1512 ;
1513 ;
1514 ; EQUATED SYMBOLS
1515 ;
1516 000020 A.EF=20 ;LOCAL DEFINITION BECAUSE OF NO COMPLEX GLOBLS
1517 177170 DXEXP=177170 ;EXTERNAL PAGE ADDRESS
1518 ;
1519 000010 RETRY = 8. ; ERROR RETRY COUNT
1520 000040 PHYBLK = 40 ; PHYSICAL BLOCK SUBFUNCTION CODE
1521 ;
1522 ;
1523 ; RX11 DEVICE REGISTER OFFSETS AND BIT DEFINITIONS
1524 ;
1525 ;
1526 000000 RXCS = 0 ; CONTROL STATUS REGISTER
1527 000002 RXDB = 2 ; DATA BUFFER
1528 000020 UNIT = 20 ; UNIT SELECT BIT
1529 000040 DONE = 40 ; RX11 DONE
1530 000100 INTEBL = 100 ; INTERRUPT ENABLE
1531 000200 TR = 200 ; RX11 TRANSFER READY BIT (CPU-SILO)
1532 040000 INIT = 40000 ; INITIALIZE RX11
1533 ;
1534 ;
1535 ; FUNCTION CODES
1536 ;
1537 000001 GO = 1 ; GO BIT
1538 000001 FILL = 0!GO ; FILL SILO
1539 000003 EMPTY = 2!GO ; EMPTY SILO
1540 000005 WRITE = 4!GO ; WRITE A SECTOR
1541 000007 READ = 6!GO ; READ A SECTOR
1542 000015 WRTDD = 14!GO ; WRITE DELETED DATA
1543 ;
1544 002056 DXHD:: .STKM 0,0,0,0,0,0,0,DXINI,174000,DXSTK
002124 000000 000000 000000 .WORD 0,0,0,0
002132 000000
002152 174000 002366' 002336' .WORD 174000,DXINI,DXSTK
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
DXDRV MACRO M1113 03-APR-86 19:04 PAGE 13-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
002350 000000 .WORD 0
002352 002366' .WORD DXINI
002354 174000 .WORD 174000
1545 ;
1546 002356 WFPKT: WTSE$ E.NIR
002356 051 002 .BYTE 41.,2
002360 000000G .WORD E.NIR
1547 ;
1548 002362 DXIOD: WTSE$ E.IOD
002362 051 002 .BYTE 41.,2
002364 000000G .WORD E.IOD
1549 ;
1550 ;
DXDRV MACRO M1113 03-APR-86 19:04 PAGE 14
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1552 ;+
1553 ; *** - DXINI FLOPPY DISK CONTROLLER INITIATOR
1554 ;
1555 ; THIS ROUTINE IS ENTERED FROM THE QIO DIRECTIVE WHEN AN I/O REQUEST
1556 ; IS QUEUED AND AT THE END OF A PREVIOUS I/O OPERATION TO PROPOGATE THE
1557 ; EXECUTION OF THE DRIVER. IF THE SPECIFIED CONTROLLER IS NOT BUSY,
1558 ; THEN AN ATTEMPT IS MADE TO DEQUEUE THE NEXT I/O REQUEST. OTHERWISE
1559 ; A RETURN TO THE CALLER IS EXECUTED. IF THE DEQUEUE ATTEMPT IS SUCCESSFUL
1560 ; THE NEXT I/O OPERATION IS INITIATED. A RETURN TO THE CALLER IS THEN
1561 ; EXECUTED.
1562 ;
1563 ; INPUTS:
1564 ; R5 - ADDRESS OF UCB WHICH IS ASSOCIATED WITH CONTROLLER TO BE INITIATED
1565 ;
1566 ; OUTPUTS:
1567 ; IF THE CONTROLLER ASSOCIATED WITH THE SPECIFIED UCB IS NOT
1568 ; BUSY AND AN I/O REQUEST IS WAITING TO BE PROCESSED, THE REQUEST
1569 ; IS DEQUEUED AND THE DRIVER INITIATES THE REQUESTED FUNCTION.
1570 ;
1571 ;-
1572 .ENABL LSB
1573 002366 DXINI: DIR$ #WFPKT ;WAIT FOR PACKET TO DO SOME WORK
002366 012746 002356' MOV #WFPKT,-(SP)
002372 104375 EMT 375
1574 002374 012700 054104 5$: MOV #"DX,R0 ;TRY TO DQ
1575 002400 CALL ..DQRN ;DQ A PACKET
002400 004737 000000G JSR PC,..DQRN
1576 002404 103770 BCS DXINI
1577 002406 005702 TST R2
1578 002410 001402 BEQ 7$
1579 002412 012702 000020 MOV #UNIT,R2
1580 002416 010237 000000G 7$: MOV R2,DXUNIT ;SAVE UNIT NUMBER
1581 002422 010537 000000G MOV R5,DXBUF ;SAVE ADDRESS OF BUFFER
1582 002426 010337 000000G MOV R3,DXCNT ;SAVE BYTE COUNT
1583 002432 010137 000000G MOV R1,DXPKT ;SAVE THE PACKET
1584 002436 122761 000002 000001G CMPB #IO.RLB/256.,R.FC+1(R1) ;CHECK FOR VALID FUNCTION
1585 002444 001404 BEQ 6$
1586 002446 122761 000001 000001G CMPB #IO.WLB/256.,R.FC+1(R1)
1587 002454 001062 BNE ILFCD
1588 002456 6$:
1589 ;
1590 ; USAGE OF WORDS IN DXVCB
1591 ; DXVCB+2 - LOGICAL OR PHYSICAL SECTOR NUMBER
1592 ; DXVCB+4 - BYTES TO TRANSFER ON CURRENT SECTOR
1593 ; DXVCB+6 - CURRENT FUNCTION CODE
1594 ; DXVCB+10 - PHYSICAL SECTOR NUMBER(1-26.)
1595 ; DXVCB+11 - PHYSICAL TRACK NUMBER (0-77.)
1596 ; DXVCB+12 - STATUS REGISTER AFTER INTERRUPT
1597 ;
1598 ;
1599 ;
1600 ; INITIALIZE DRIVER
1601 ;
1602 002456 012737 000010 000000G 10$: MOV #RETRY,DXRTC ; SET RETRY COUNT
1603 002464 105761 000006G TSTB R.PB+6(R1) ; HIGH BLOCK SPECIFIED?
1604 002470 001161 BNE 180$ ;NO
1605 ;
DXDRV MACRO M1113 03-APR-86 19:04 PAGE 14-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1606 ; SET UP FIRST BLOCK OR SECTOR NUMBER
1607 ;
1608 002472 016100 000010G 20$: MOV R.PB+10(R1),R0 ; GET PHYSICAL OR LOGICAL BLOCK NUMBER
1609 002476 132761 000040 000000G BITB #PHYBLK,R.FC(R1) ; IS IT READ/WRITE PHYSICAL
1610 002504 001002 BNE 30$ ; YES
1611 002506 006300 ASL R0 ; CONVERT TO LOGICAL SECTOR NUMBER
1612 002510 006300 ASL R0 ; WHICH IS LBN*4
1613 002512 010037 000002G 30$: MOV R0,DXVCB+2 ; STORE IT
1614 002516 016137 000000G 000006G MOV R.FC(R1),DXVCB+6 ; SAVE FUNCTION CODE
1615 002524 012703 177170 35$: MOV #DXEXP,R3 ; GET CSR ADDRESS
1616 002530 CALL TRKSEC ; CONVERT BLOCK NUMBER TO TRACK/SECTOR
002530 004737 003272' JSR PC,TRKSEC
1617 002534 103537 BCS 180$ ; BAD BLOCK NUMBER
1618 002536 012702 000007 MOV #READ,R2 ; ASSUME READ FUNCTION
1619 002542 122737 000001 000007G CMPB #IO.WLB/256.,DXVCB+7 ; WRITE?
1620 002550 001064 BNE 95$ ; NO
1621 ;
1622 ; FILL SILO BEFORE WRITE
1623 ;
1624 002552 CALL SETBUF ; SET UP BUFFER POINTER AND MAPPING REGISTER
002552 004737 003442' JSR PC,SETBUF
1625 002556 010304 MOV R3,R4 ; COPY CSR ADDRESS
1626 002560 012724 000001 MOV #FILL,(R4)+ ; SET FILL BUFFER FUNCTION
1627 002564 005002 70$: CLR R2 ; ASSUME NO DATA TO TRANSFER
1628 002566 005301 DEC R1 ; MORE DATA TO TRANSFER?
1629 002570 002401 BLT 74$ ; NO
1630 002572 112002 MOVB (R0)+,R2 ; YES, GET NEXT BYTE
1631 002574 132713 000240 74$: BITB #TR!DONE,@R3 ; IS CONTROLLER READY FOR NEXT BYTE
1632 002600 100402 BMI 76$ ; YES
1633 002602 001774 BEQ 74$ ; NO, WAIT UNTIL IT IS
1634 002604 000402 BR 90$ ; YES, SILO FULL
1635 002606 110214 76$: MOVB R2,@R4 ; NO, PUT NEXT BYTE IN SILO
1636 002610 000765 BR 70$ ; AND WAIT TILL IT'S ACCEPTED
1637 ;
1638 002612 005701 90$: TST R1 ; TRANSFERED ALL REQUESTED BYTES
1639 002614 100432 BMI 140$ ; YES
1640 002616 000137 003250' JMP DXRTY ;NO, ERROR
1641 ;
1642 002622 012703 000376 ILFCD: MOV #IE.IFC&377,R3 ;NO -- ILLEGAL FUNCTION
1643 002626 000467 BR 157$
1644 ;
1645 ;
1646 ; EMPTY SILO AFTER READ
1647 ;
1648 002630 010304 100$: MOV R3,R4 ; GET CSR ADDRESS
1649 002632 012724 000003 MOV #EMPTY,(R4)+ ; SET EMPTY BUFFER FUNCTION
1650 002636 CALL SETBUF ; SET BUFFER POINTER AND MAPPING REGISTER
002636 004737 003442' JSR PC,SETBUF
1651 002642 132713 000240 110$: BITB #TR!DONE,@R3 ; NEXT BYTE READY FOR US?
1652 002646 100402 BMI 114$ ; YES
1653 002650 001774 BEQ 110$ ; NO, WAIT TILL IT IS
1654 002652 000405 BR 120$ ; NO, SILO IS EMPTY
1655 ;
1656 002654 111402 114$: MOVB @R4,R2 ; GET NEXT BYTE
1657 002656 005301 DEC R1 ; DO WE WANT IT?
1658 002660 002770 BLT 110$ ; NO
1659 002662 110220 MOVB R2,(R0)+ ; YES, PUT IT IN BUFFER
DXDRV MACRO M1113 03-APR-86 19:04 PAGE 14-2
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1660 002664 000766 BR 110$ ; GET NEXT BYTE
1661 ;
1662 002666 005701 120$: TST R1 ; ALL BYTES TRANSFERED?
1663 002670 003167 BGT DXRTY ; NO, ERROR
1664 002672 CALL NXTSEC ; UPDATE TO NEXT SECTOR
002672 004737 003420' JSR PC,NXTSEC
1665 002676 001523 BEQ 193$ ; ALL DONE
1666 002700 000711 BR 35$ ; CONTINUE
1667 ;
1668 ; INITIATE TRANSFER BETWEEN SILO AND DISK
1669 ;
1670 002702 012702 000005 140$: MOV #WRITE,R2 ; DEFAULT WRITE FUNCTION
1671 002706 032737 000004 000006G BIT #4,DXVCB+6 ; WRITE DELETED DATA?
1672 002714 001402 BEQ 150$ ; NO
1673 002716 012702 000015 MOV #WRTDD,R2 ; YES, SET WRITE DELETED DATA
1674 002722 95$:
1675 002722 053702 000000G 150$: BIS DXUNIT,R2 ; YES, SET TO SELECT UNIT
1676 002726 010213 152$: MOV R2,@R3 ; INITIATE FUNCTION
1677 002730 CALL TRWAIT ; WAIT FOR REQUEST FOR SECTOR
002730 004737 003472' JSR PC,TRWAIT
1678 002734 103545 BCS DXRTY ; ERROR
1679 002736 113763 000010G 000002 MOVB DXVCB+10,RXDB(R3) ; GIVE SECTOR NUMBER TO CONTROLLER
1680 002744 CALL TRWAIT ; WAIT
002744 004737 003472' JSR PC,TRWAIT
1681 002750 103537 BCS DXRTY ; ERROR
1682 002752 113763 000011G 000002 MOVB DXVCB+11,RXDB(R3) ; GIVE TRACK NUMBER TO CONTROLLER
1683 002760 155$:
1684 002760 052713 000100 BIS #INTEBL,@R3 ; ENABLE INTERRUPT
1685 ;
1686 002764 032737 000340 177776 BIT #340,@#PS ;AT A PRIORITY?
1687 002772 001116 BNE 220$ ;YES -- THEN EXIT INTERRUPT SERVICE
1688 002774 DIR$ #DXIOD ;WAIT FOR I/O DONE
002774 012746 002362' MOV #DXIOD,-(SP)
003000 104375 EMT 375
1689 003002 013703 000000G MOV DXVCB,R3 ;FIND THE I/O STATUS
1690 003006 013704 000002G 157$: MOV DXVCB+2,R4
1691 003012 013701 000000G MOV DXPKT,R1
1692 003016 CALL ..IODN ;FINISH I/O
003016 004737 000000G JSR PC,..IODN
1693 003022 042737 000000G 000020G BIC #EF.IOD,DXTSK+A.EF ;CLEAR EVENT FLAG
1694 003030 000137 002366' JMP DXINI ;AND TRY AGAIN
1695 ;
1696 003034 012703 000354 180$: MOV #IE.BLK&377,R3 ;SET ILLEGAL BLOCK
1697 003040 032737 000340 177776 185$: BIT #340,@#PS ;FROM INT SERV?
1698 003046 001757 BEQ 157$ ;NO -- RETURN TO CALLER
1699 003050 000456 BR 210$ ;AND REPORT ERROR
1700 ;
1701 003052 012703 000374 190$: MOV #IE.VER&377,R3 ;RETURN UNRECOVERABLE ERROR
1702 003056 000770 BR 185$
1703 ;
DXDRV MACRO M1113 03-APR-86 19:04 PAGE 15
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1705 ;+
1706 ; *** - $DXINT - RX11 FLOPPY DISK INTERRUPT ENTRY POINT
1707 ;
1708 ;-
1709 003060 $DXINT:: ;;;
1710 003060 010046 MOV R0,-(SP) ;;;SAVE REGISTERS
1711 003062 010146 MOV R1,-(SP)
1712 003064 010246 MOV R2,-(SP)
1713 003066 010346 MOV R3,-(SP)
1714 003070 010446 MOV R4,-(SP)
1715 003072 010546 MOV R5,-(SP)
1716 ;
1717 ;
1718 003074 012703 177170 MOV #DXEXP,R3 ;;; GET CSR ADDRESS
1719 003100 016337 000002 000012G MOV 2(R3),DXVCB+12 ;;; SAVE STATUS
1720 003106 042713 000100 BIC #INTEBL,@R3 ;;; DISABLE INTERRUPTS
1721 003112 005713 TST @R3 ; ANY ERRORS?
1722 003114 100455 BMI DXRTY ; YES
1723 003116 106237 000001G ASRB DXRTC+1 ; INITIALIZE IN PROGRESS
1724 003122 103407 BCS 166$ ;YES
1725 003124 122737 000002 000007G 160$: CMPB #IO.RLB/256.,DXVCB+7 ; READ?
1726 003132 001636 BEQ 100$ ; YES, GO EMPTY SILO
1727 003134 CALL NXTSEC ; NO, UPDATE TO NEXT SECTOR
003134 004737 003420' JSR PC,NXTSEC
1728 003140 001414 BEQ 195$ ; ALL DONE
1729 003142 000137 002524' 166$: JMP 35$ ; WRITE MORE DATA
1730 ;
1731 ;
1732 003146 032737 000040 000006G 193$: BIT #PHYBLK,DXVCB+6 ; IS THIS A READ PHYSICAL?
1733 003154 001406 BEQ 195$ ; NO, THEN IGNORE DELETED DATA MARK
1734 003156 012703 000002 MOV #IS.RDD&377,R3 ; YES, DEFAULT ON READ TO DELETED DATA
1735 003162 032737 000100 000012G BIT #100,DXVCB+12 ; WAS DELETED DATA READ?
1736 003170 001002 BNE 200$ ; YES
1737 003172 012703 000001 195$: MOV #IS.SUC&377,R3 ; NO, SET NORMAL SUCCESS
1738 003176 013700 000000G 200$: MOV DXPKT,R0 ; GET I/O PACKET ADDRESS
1739 003202 016000 000002G MOV R.PB+2(R0),R0 ; SET BYTES TRANSFERED
1740 003206 010037 000002G 210$: MOV R0,DXVCB+2 ;SAVE DEVICE STATUS
1741 003212 010337 000000G MOV R3,DXVCB
1742 003216 052737 000000G 000020G BIS #EF.IOD,DXTSK+A.EF ;START TASK
1743 003224 CALL ..DSEV ;DECLARE SIG EVENT
003224 004737 000000G JSR PC,..DSEV
1744 003230 012605 220$: MOV (SP)+,R5
1745 003232 012604 MOV (SP)+,R4
1746 003234 012603 MOV (SP)+,R3 ;RESTORE REGISTERS
1747 003236 012602 MOV (SP)+,R2
1748 003240 012601 MOV (SP)+,R1
1749 003242 012600 MOV (SP)+,R0
1750 003244 000137 000000G JMP @#..INTX
1751 ;
1752 ;
1753 ;
1754 ;
1755 ;
1756 ;
1757 ;
1758 ; RETRY LAST FUNCTION
1759 ;
DXDRV MACRO M1113 03-APR-86 19:04 PAGE 15-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1760 003250 105337 000000G DXRTY: DECB DXRTC ; ANY RETRIES LEFT?
1761 003254 001676 BEQ 190$ ; NO, ERROR
1762 003256 112737 000001 000001G MOVB #1,DXRTC+1 ; YES, SET INITIALIZE IN PROGRESS
1763 003264 012713 040000 MOV #INIT,@R3 ; INITIALIZE RX01 DRIVES
1764 003270 000633 BR 155$ ; AND DO IT
1765 .DSABL LSB
DXDRV MACRO M1113 03-APR-86 19:04 PAGE 16
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1767 ;+
1768 ; *** - TRKSEC - CONVERT LOGICAL OR PHYSICAL BLOCK NUMBER TO
1769 ; TRACK-SECTOR PAIR
1770 ; FROM ALGORITHM BY J GILBERT MODIFIED BY H. JACOBS
1771 ;
1772 ; INPUT:
1773 ; DXVCB+2 - LOGICAL SECTOR OR PHYSICAL SECTOR
1774 ;
1775 ; OUTPUT:
1776 ; DXVCB+10 - SECTOR (1-26.)
1777 ; DXVCB+11 - TRACK (0-77.)
1778 ; C CLEAR - VALID BLOCK
1779 ; C SET - BAD BLOCK NUMBER (PHYSICAL OR LOGICAL)
1780 ;
1781 ;-
1782 003272 013701 000002G TRKSEC: MOV DXVCB+2,R1 ; GET LOGICAL BLOCK OR PHYSICAL BLOCK
1783 003276 012700 000010 MOV #8.,R0 ; SET LOOP COUNT
1784 003302 012702 006400 MOV #6400,R2 ; SET DIVISOR
1785 003306 020201 1$: CMP R2,R1 ; DOES 26 GO INTO DIVIDEND?
1786 003310 101002 BHI 2$ ; BRANCH IF NOT, C CLEAR
1787 003312 160201 SUB R2,R1 ; SUBTRACT 26 FROM DIVIDEND
1788 003314 000261 SEC ; SET CARRY
1789 003316 006101 2$: ROL R1 ; SHIFT DIVIDEND AND QUOTIENT
1790 003320 005300 DEC R0 ; DONE?
1791 003322 003371 BGT 1$ ; NO, LOOP
1792 003324 110100 MOVB R1,R0 ; GET TRACK NUMBER
1793 003326 105001 CLRB R1 ; CLEAR TRACK NUMBER
1794 003330 000301 SWAB R1 ; SHIFT DONE SECTOR NUMBER
1795 003332 032737 000040 000006G BIT #PHYBLK,DXVCB+6 ; IS IT PHYSICAL BLOCK NUMBER?
1796 003340 001016 BNE 10$ ; YES
1797 003342 022701 000014 CMP #12.,R1 ; NO, C=1 IF 13<=R1<=25
1798 003346 006101 ROL R1 ; DOUBLE FOR INTERLEAVE FACTOR
1799 003350 006300 ASL R0 ; ADD TRACK -TRACK SKEW
1800 003352 060001 ADD R0,R1 ; SKEW BY 2*TRACK
1801 003354 060001 ADD R0,R1 ; SKEW BY 4*TRACK
1802 003356 060001 ADD R0,R1 ; SKEW BY 6*TRACK
1803 003360 006200 ASR R0 ; RESTORE TRACK NUMBER
1804 003362 012702 000032 MOV #26.,R2 ; SET MODULUS
1805 003366 160201 5$: SUB R2,R1 ; MODULO SECTOR INTO RANGE -26. TO -1.
1806 003370 002376 BGE 5$ ; LOOP TILL REMAINDER GOES NEG
1807 003372 060201 ADD R2,R1 ; CONVERT TO RANGE 0-25.
1808 003374 005200 INC R0 ; LBN0 STARTS ON TRACK 1
1809 003376 005201 10$: INC R1 ; CONVERT TO RANGE 1-26.
1810 003400 010137 000010G MOV R1,DXVCB+10 ; SAVE SECTOR NUMBER
1811 003404 110037 000011G MOVB R0,DXVCB+11 ; SAVE TRACK NUMBER
1812 003410 022737 046400 000010G CMP #77.*256.,DXVCB+10 ; IS IT VALID TRACK/SECTOR?
1813 003416 RETURN ;
003416 000207 RTS PC
DXDRV MACRO M1113 03-APR-86 19:04 PAGE 17
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1815 ;
1816 ;+
1817 ; *** - NXTSEC - UPDATE BLOCK NUMBER , BUFFER ADDRESS
1818 ; AND BUFFER POINTER
1819 ;
1820 ; INPUT:
1821 ; DXVCB+2 - CURRENT BLOCK NUMBER
1822 ; DXVCB+4 - BYTES TRANSFERRED DURING LAST FUNCTION
1823 ; DXCNT - BYTES LEFT TO TRANSFER
1824 ; DXBUF - BUFFER ADDRESS
1825 ;
1826 ; OUTPUT:
1827 ; DXVCB+2 - UPDATED BLOCK NUMBER
1828 ; DXBUF - UPDATED BY 128. BYTES
1829 ; DXCNT - UPDATED BY NUMBER OF WORDS TRANSFERED
1830 ; Z SET - ALL BYTES TRANSFERED
1831 ; Z CLEAR - MORE BYTES TO TRANSFER
1832 ; C CLEAR - VALID TRACK/SECTOR
1833 ; C SET - BAD BLOCK NUMBER
1834 ;
1835 ;+
1836 003420 005237 000002G NXTSEC: INC DXVCB+2 ; UPDATE BLOCK NUMBER
1837 ;
1838 003424 062737 000200 000000G ADD #128.,DXBUF ; UPDATE BUFFER POINTER
1839 ;
1840 003432 163737 000004G 000000G SUB DXVCB+4,DXCNT ; UPDATE BYTES LEFT TO TRANSFER
1841 003440 RETURN ;
003440 000207 RTS PC
1842 ;
1843 ;+
1844 ; *** - SETBUF - SET UP BUFFER POINTER FOR CPU - SILO TRANSFERS
1845 ;
1846 ; INPUT:
1847 ;
1848 ; OUTPUT:
1849 ; R0 - BUFFER ADDRESS
1850 ; R1 - BYTES TO TRANSFER
1851 ; IF MAPPED SYSTEM KISAR6 IS MAPPED TO BUFFER AND R1 IS BASE 140000
1852 ;
1853 ;-
1854 003442 013700 000000G SETBUF: MOV DXBUF,R0 ; GET BUFFER ADDRESS
1855 003446 012701 000200 MOV #128.,R1 ; DEFAULT TO 128. BYTE TRANSFER
1856 003452 023701 000000G CMP DXCNT,R1 ; 128. BYTES LEFT TO TRANSFER?
1857 003456 103002 BHIS 10$ ; YES
1858 003460 013701 000000G MOV DXCNT,R1 ; NO, GET RESIDUAL COUNT
1859 003464 010137 000004G 10$: MOV R1,DXVCB+4 ; STORE COUNT OF BYTES TO TRANSFER
1860 ;
1861 003470 RETURN ;
003470 000207 RTS PC
1862 ;+
1863 ; *** - WAIT FOR TRANSFER REQUEST AND DONE
1864 ;
1865 ; INPUT:
1866 ;
1867 ; OUTPUT:
1868 ; CC - TRANSFER REQUESTED
1869 ; CS - NO TRANSFER REQUESTED
DXDRV MACRO M1113 03-APR-86 19:04 PAGE 17-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1870 ;
1871 ;-
1872 003472 000241 TRWAIT: CLC ; DEFAULT TO TRANSFER REQUESTED
1873 003474 132713 000240 10$: BITB #TR!DONE,@R3 ; CONTROLLER DONE?
1874 003500 100402 BMI 20$ ; YES, AND TRANSFER REQUEST IS UP
1875 003502 001774 BEQ 10$ ; NO, WAIT
1876 003504 000261 SEC ; SET NO TRANSFER REQUEST
1877 003506 20$: RETURN ;
003506 000207 RTS PC
1878
DXDRV MACRO M1113 03-APR-86 19:04 PAGE 18
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1881
1882
1883 .TITLE FEDRV
1884 .IDENT /014220/
1885 000001 $DIRAC=1
1886 ;
1887 ; COPYRIGHT (C) 1975, 1984, 1985 BY
1888 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
1889 ; ALL RIGHTS RESERVED.
1890 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
1891 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
1892 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
1893 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
1894 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
1895 ;
1896 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
1897 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
1898 ; CORPORATION.
1899 ;
1900 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
1901 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
1902 ;
1903 ; VERSION 14-22
1904 ;
1905 ; R. MCLEAN 25-JUN-75
1906 ; A. PECKHAM 30-NOV-76
1907 ; TCO 4.1.1105 11-MAR-80 R. BELANGER CHANGE "EF.PR1" RECOGNITION
1908 ;
1909 ; FE PSEUDO DRIVER
1910 ;
1911 ; MACRO LIBRARY CALLS
1912 ;
1913 ;
1914 .MCALL .STKM,WTLO$,DIR$,.INH0,.ENB0,.ENB6,.INH6,.ENB,.INH
1915 .MCALL CALL,CALLR,RETURN
1916 ;
1917 ; EQUATED SYMBOLS
1918 ;
1919 100000 EF.SEP=100000 ;SECONDARY PROTOCOL FLAG
1920 000400 EF.TEF=400 ;DONE EVENT FLAG
1921 ;
1922 ; DIRECTIVES
1923 ;
1924 003510 WFEF1: WTLO$ 1,EF.SEP!EF.NIR!EF.TEF ;WAIT FOR SOMETHING TO DO
003510 053 003 .BYTE 43.,3
003512 000001 .WORD 1
003514 000000C .WORD EF.SEP!EF.NIR!EF.TEF
1925 ;
1926 ; DATA AREAS
1927 ;
1928 ; FETBL SWITCHES
1929 ;
1930 040000 FE.DET=040000 ;MORE DATA -11 TO -10 TO BE SENT
1931 020000 FE.DTE=020000 ;MORE DATA -10 TO -11 EXPECTED
1932 004000 FE.SER=004000 ;SERVICING -11 TRANSFER REQUEST
1933 002000 FE.STR=002000 ;SERVICING -10 TRANSFER REQUEST
1934
FEDRV MACRO M1113 03-APR-86 19:04 PAGE 18-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1935 003516 FEHD:: .STKM 0,0,0,0,0,0,0,FEDRV,174000,FESTK
003564 000000 000000 000000 .WORD 0,0,0,0
003572 000000
003612 174000 004016' 003776' .WORD 174000,FEDRV,FESTK
003646 000005 .WORD 5
003650 000000G .WORD TTPEN
003652 000000 .WORD 0
003654 000000 .WORD 0
003656 000000 .WORD 0
003660 000000 .WORD 0
003662 000000 .WORD 0
003664 000000 .WORD 0
003666 000000 .WORD 0
003670 000000 .WORD 0
003672 000000 .WORD 0
003674 000000 .WORD 0
003776 000000 .WORD 0
004000 000000 .WORD 0
004002 000000 .WORD 0
004004 000000 .WORD 0
004006 000000 .WORD 0
004010 000000 .WORD 0
004012 004016' .WORD FEDRV
004014 174000 .WORD 174000
FEDRV MACRO M1113 03-APR-86 19:04 PAGE 19
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1937 004016 FEDRV: DIR$ #WFEF1 ;WAIT TO GET STARTED
004016 012746 003510' MOV #WFEF1,-(SP)
004022 104375 EMT 375
1938 004024 .INH0 ;LOCK OUT DTE INTERRUPTS
004024 013746 177776 MOV @#PS,-(SP)
004030 112737 000140 177776 MOVB #140,@#PS
1939 004036 013700 000020G 1$: MOV FETSK+A.EF,R0 ;;;PICK UP THE EVENT FLAGS
1940 004042 001434 BEQ 5$ ;;;EXIT IF NOTHING
1941 004044 005037 000020G CLR FETSK+A.EF ;;;CLEAR EVENT FLAGS
1942 004050 005737 000002G TST .COMEF+2 ;;; [4.1.1105] PRIMARY PROTOCOL IN USE?
1943 004054 100002 BPL 2$ ;;; [4.1.1105] NO -- BETTER DUMP REQUEST'S
1944 004056 005700 TST R0 ;;;SECONDARY PROTOCOL CHANGE?
1945 004060 100025 BPL 5$ ;;;NO -- CONTINUE
1946 ;
1947 ; PRIMARY PROTOCOL HAS DIED - CLEAR OUT THE REQUEST QUEUE
1948 ;
1949 004062 013701 000000G 2$: MOV NODADR,R1 ;;;GET CURRENT NODE
1950 004066 005037 000000G CLR NODADR ;;;DON'T BLOCK FE DRIVER
1951 004072 005037 000000G CLR STSWD ;;;CLEAR STATUS WORD BLOCK
1952 004076 042737 064000 000000G BIC #FE.SER!FE.DET!FE.DTE,FETBL+0 ;;;NO ACTION ON FE0
1953 004104 005701 TST R1 ;;;WERE WE PROCESSING A NODE ?
1954 004106 001005 BNE 4$ ;;;YES -- DO IT FIRST
1955 004110 012700 042506 3$: MOV #"FE,R0 ;;;PICK A NODE FROM THE QUEUE
1956 004114 CALL ..DQRN ;;;DQ
004114 004737 000000G JSR PC,..DQRN
1957 004120 103746 BCS 1$
1966 004122 4$:
1968 ;
1969 ;
1970 004122 012703 177761 7$: MOV #IE.ABO,R3 ;;;RETURN ABORTED
1971 004126 CALL ..IODN ;;;FINISH I/O
004126 004737 000000G JSR PC,..IODN
1972 004132 000766 BR 3$ ;;;AND TRY NEXT REQUEST
1973 ;
1974 ; CHECK FOR EVENTS
1975 ;
1976 004134 5$: .ENB0 ;;;ENABLE INTERRUPTS
004134 004737 000000G JSR PC,..ENB0
1977 004140 032700 000400 BIT #EF.TEF,R0 ;CHECK TO SEE IF DONE
1978 004144 001104 BNE IODN
1979 ;
1980 ; MUST BE I/O REQUEST
1981 ;
1982 004146 005737 000000G TST NODADR ;BLOCKED?
1983 004152 001321 BNE FEDRV ;YES -- DON'T DO ANYTHING ON QIO NOW
1984 004154 012700 042506 MOV #"FE,R0 ;DQ FROM FE DRIVER
1985 004160 CALL ..DQRN ;DQ
004160 004737 000000G JSR PC,..DQRN
1986 004164 103714 BCS FEDRV ;NOTHING -- WAIT
1987 004166 052737 004000 000000G BIS #FE.SER,FETBL+0 ;FE0 BEING USED FOR -11 REQUEST
1988 004174 010137 000000G MOV R1,NODADR ;SAVE THE ADDRESS OF THE NODE
1989 004200 010537 000000G MOV R5,ADRSAV ;SAVE THE ADDRESS
1990 004204 010337 000000G MOV R3,BYTESA ;SAVE THE BYTE COUNT
1991 004210 012702 000000G MOV #TO10PK,R2 ;SET UP PACKET ADDRESS
1992 004214 010200 MOV R2,R0 ;SAVE THE ADDRESS OF THE BUFFER
1993 004216 012722 000014 MOV #14,(R2)+ ;STORE SIZE
1994 004222 016122 000000G MOV R.FC(R1),(R2)+ ;SET UP THE FUNCTION CODE
FEDRV MACRO M1113 03-APR-86 19:04 PAGE 19-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1995 004226 005003 CLR R3 ;FIND THE LUN
1996 004230 156103 000000G BISB R.LU(R1),R3 ;SET UP THE LUT NUMBER
1997 004234 001005 BNE 10$ ;EXEC REQUEST?
1998 004236 012722 041104 MOV #"DB,(R2)+ ;DECLARE DB
1999 004242 013722 000000G MOV .RPUNT,(R2)+ ;SET UNIT NUMBER
2000 004246 000424 BR 77$ ;AND FINISH
2001 004250 016104 000000G 10$: MOV R.AT(R1),R4 ;FIND THE ATL
2002 004254 016404 000000G MOV A.HA(R4),R4 ;FIND THE HEADER ADDRESS
2003 004260 006303 ASL R3 ;MULTIPLY THE LUN BY 2
2004 004262 006303 ASL R3
2005 004264 060304 ADD R3,R4 ;POINT TO CORRECT ENTRY
2006 004266 016404 177776G MOV H.LUT-2(R4),R4 ;FIND THE LUT (FINALLY)
2007 004272 016404 000000G MOV U.RP(R4),R4 ;DO REDIRECT
2008 004276 012422 MOV (R4)+,(R2)+ ;STORE THE DEVICE (ASCII CHARACTER)
2009 004300 011422 MOV (R4),(R2)+ ;STORE THE UNIT
2010 004302 116104 000000G MOVB R.DP(R1),R4 ;FIND THE DPB SIZE
2011 004306 162704 000007 SUB #7,R4 ;SUB PERMINENT ONES
2012 004312 001002 BNE 77$ ;GOT A GOOD BYTE COUNT
2013 004314 005037 000000G CLR BYTESA ;NO CLEAR OUT BYTE COUNT
2014 004320 016122 000006G 77$: MOV R.PB+6(R1),(R2)+ ;STORE THE BLOCK NUMBER
2015 004324 016122 000010G MOV R.PB+10(R1),(R2)+
2016 004330 013722 000000G MOV BYTESA,(R2)+ ;SET BYTE COUNT
2017 004334 001403 BEQ 78$ ;IF MORE DATA MUST GO OUT
2018 004336 052737 040000 000000G BIS #FE.DET,FETBL+0 ;THEN SO INDICATE
2019 004344 78$: CALL SNSTR ;START INDIRECT FUNCTION
004344 004737 004420' JSR PC,SNSTR
2020 004350 005037 000000G CLR STSWD
2021 004354 000620 BR FEDRV ;AND WAIT
2022
2023 004356 013703 000000G IODN: MOV STSWD,R3 ;SET I/O DONE
2024 004362 013704 000002G MOV STSWD+2,R4
2025 004366 013701 000000G MOV NODADR,R1 ;SET NODE ADDRESS
2026 004372 005037 000000G CLR NODADR ;CLEAR INCASE OF ABORT
2027 004376 005037 000000G CLR STSWD ;CLEAR STATUS WORD
2028 004402 CALL ..IODN ;SET I/O DONE
004402 004737 000000G JSR PC,..IODN
2029 004406 042737 064000 000000G BIC #FE.SER!FE.DET!FE.DTE,FETBL+0 ;WE ARE FINISHED WITH -11 REQUEST
2030 004414 000137 004016' JMP FEDRV ;AND RETURN
2031
2032 004420 012701 100000G SNSTR: MOV #BC.STR+100000,R1 ;SET UP STRING DATA
2033 004424 005002 CLR R2 ;NO EVENT FLAG
2034 004426 012703 000000G MOV #D.FEPD,R3 ;FE DEVICE
2035 004432 CALLR ..STIN ;START INDIRECT
004432 000137 000000G JMP ..STIN
FEDRV MACRO M1113 03-APR-86 19:04 PAGE 20
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
2037 ;
2038 ; THE -10 HAS SENT AN ACK TO US - CONTINUE THE OPERATION
2039 ; IF IT WAS A WRITE.
2040 ;
2041 004436 032712 040000 .FEACK::BIT #FE.DET,(R2) ;IS THERE DATA TO SEND ?
2042 004442 001436 BEQ 30$ ;NO, IGNORE THE ACK.
2043 004444 010046 MOV R0,-(SP) ;SAVE R0
2044 004446 013700 000000G MOV ADRSAV,R0 ;PICK UP THE ADDRESS
2045 004452 012701 000100 MOV #64.,R1 ;SET THE COUNT
2046 004456 020137 000000G CMP R1,BYTESA ;TOO BIG ??
2047 004462 101402 BLOS 10$ ;NO - USE THIS COUNT
2048 004464 013701 000000G MOV BYTESA,R1 ;YES - SEND WHAT'S LEFT
2049 004470 060137 000000G 10$: ADD R1,ADRSAV ;SET NEW ADDRESS
2050 004474 160137 000000G SUB R1,BYTESA ;AND BYTES LEFT
2051 004500 001002 BNE 20$ ;IF NO MORE AFTER THIS
2052 004502 042712 040000 BIC #FE.DET,(R2) ;THEN SO INDICATE
2053 004506 20$: .INH6 ;LOCK OUT INTERRUPTS
004506 013746 177776 MOV @#PS,-(SP)
004512 112737 000300 177776 MOVB #300,@#PS
2054 004520 014046 MOV -(R0),-(SP) ;;;SAVE MEMORY HERE
2055 004522 010110 MOV R1,@R0 ;;;STORE FIRST WORD TO10
2056 004524 CALL SNSTR ;;;START FUNCTION
004524 004737 004420' JSR PC,SNSTR
2057 004530 012610 MOV (SP)+,@R0 ;;;RESTORE FIRST WORD
2058 004532 .ENB6 ;;;ENABLE INTERRUPTS
004532 012637 177776 MOV (SP)+,@#PS
2059 004536 012600 MOV (SP)+,R0 ;RESTORE
2060 004540 30$: RETURN ;RETURN TO CALLER
004540 000207 RTS PC
FEDRV MACRO M1113 03-APR-86 19:04 PAGE 21
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
2062 ;
2063 ; START FE DEVICE QUEUE ENTRY
2064 ;
2065 ; R0 -> THREAD BLOCK ENTRY
2066 ; R2 -> FETBL ENTRY
2067 ;
2068 004542 122760 000000G 000007 .FEST:: CMPB #BC.STR,7(R0) ;FUNCTION STRING?
2069 004550 001077 BNE IOABT ;NO -- ABORT I/O IN PROGRESS
2070 004552 005005 CLR R5 ;FIND THE BYTE SIZE
2071 004554 156005 000006 BISB 6(R0),R5
2072 004560 016004 000004 MOV 4(R0),R4 ;SET UP THE NODE ADDRESS
2073 004564 032712 020000 BIT #FE.DTE,(R2) ;ARE WE EXPECTING DATA ?
2074 004570 001040 BNE 70$ ;YES, INSERT IN BUFFER.
2075 004572 012401 MOV (R4)+,R1 ;CHECK TO SEE WHICH DIRECTION THIS FUNCTION IS
2076 004574 100102 BPL FCN ;REQUEST TO DO A FUNCTION -- SPECIAL
2077 004576 013703 000000G MOV NODADR,R3 ;A RETURN FUNCTION -
2078 004602 066301 000000G ADD R.FC(R3),R1 ;IS IT THE LAST ONE WE SENT ?
2079 004606 001100 BNE FCNBD ;NO -- ILLEGAL REQUEST -- QUIT
2080 004610 122763 000003 000001G CMPB #IO.ATT/400,R.FC+1(R3) ;ACP FUNCTION CODE?
2081 004616 001006 BNE 40$ ;NO -- LEAVE ADDRESSES ALONE
2082 004620 016337 000012G 000000G MOV R.PB+12(R3),BYTESA ;SET UP TO BYTE COUNT
2083 004626 016337 000004G 000000G MOV R.PB+4(R3),ADRSAV ;ALSO ADDRESS
2084 004634 022424 40$: CMP (R4)+,(R4)+ ;MOVE OVER DEVICE/UNIT
2085 004636 012437 000000G MOV (R4)+,STSWD ;SAVE THE I/O STATUS
2086 004642 012437 000002G MOV (R4)+,STSWD+2 ;BOTH HALVES
2087 004646 052712 020000 BIS #FE.DTE,(R2) ;INDICATE WE ARE EXPECTING DATA
2088 004652 021437 000000G CMP @R4,BYTESA ;BYTESIZE CORRECT?
2089 004656 103002 BHIS 50$ ;YES -- CONTINUE
2090 004660 011437 000000G MOV @R4,BYTESA ;NO -- SET NEW ONE
2091 004664 162705 000014 50$: SUB #14,R5 ;SUBTRACT FIXED HEADER SIZE
2092 004670 001410 BEQ 60$ ;AND QUIT IF NOTHING TO DO
2093 004672 112477 000000G 70$: MOVB (R4)+,@ADRSAV ;MOVE A BYTE
2094 004676 005237 000000G INC ADRSAV ;UPDATE BYTE POINTER
2095 004702 005337 000000G DEC BYTESA ;UPDATE BYTE COUNT
2096 004706 001404 BEQ 65$ ;(IN CASE OF MISCOUNT)
2097 004710 077510 SOB R5,70$ ;AND DO UNTIL DONE
2098 004712 005737 000000G 60$: TST BYTESA ;ANYTHING TO DO?
2099 004716 001005 BNE DONSTR ;YES -- DON'T SET I/O DONE FLAG
2100 004720 042712 020000 65$: BIC #FE.DTE,(R2) ;NO MORE DATA EXPECTED
2101 004724 052737 000400 000020G BIS #EF.TEF,FETSK+A.EF ;SET I/O DONE
2102 004732 DONSTR: CALL ..DECN ; RETURN NODE
004732 004737 000000G JSR PC,..DECN
2103 004736 012703 000000G MOV #D.FEPD,R3 ;ACK THIS FUNCTION
2104 004742 010205 MOV R2,R5
2105 004744 CALLR ..SACK
004744 000137 000000G JMP ..SACK
2106
2107 004750 013701 000000G IOABT: MOV NODADR,R1 ;NODE IN PROGRESS?
2111 004754 001766 BEQ DONSTR ;NO -- CONTINUE
2113 004756 005037 000000G CLR NODADR ;YES -- FIX IT WITH IE.ABO
2114 004762 042737 064000 000000G BIC #FE.SER!FE.DET!FE.DTE,FETBL+0 ;FINISHED WITH -11 REQUEST
2115 004770 012703 177761 MOV #IE.ABO,R3
2116 004774 CALL ..IODN ;QUIT IT
004774 004737 000000G JSR PC,..IODN
2120 005000 000754 BR DONSTR ;AND DECLARE DONE
2121 ;
2122 ; THIS IS A FUNCTION REQUEST FROM THE -10
FEDRV MACRO M1113 03-APR-86 19:04 PAGE 21-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
2123 ;
2124 005002 022714 042515 FCN: CMP #"ME,(R4) ;IS IT MEMORY?
2125 005006 001401 BEQ MEFCN ;YUP -- MUST BE OK
2126 005010 000004 FCNBD: IOT ;NOPE -- CRASH
2127
2128 005012 052712 002000 MEFCN: BIS #FE.STR,(R2) ;WE ARE SERVICING -10 REQUEST
2129 005016 012737 000014 000000G MOV #14,DNBLK ;INIT RETURN PACKET SIZE
2130 005024 010137 000000G MOV R1,DNFCN ;SET FUNCTION
2131 005030 005437 000000G NEG DNFCN ;AND NEGATE.
2132 005034 012437 000002G MOV (R4)+,DNFCN+2 ;SAVE FUNCTION DEVICE
2133 005040 012737 000001 000000G MOV #IS.SUC,DNSTS ;ASSUME A SUCCESSFUL ACCESS
2134 005046 022424 CMP (R4)+,(R4)+ ;MOVE OVER UNIT AND HIGH ORDER ADDRES
2135 005050 012403 MOV (R4)+,R3 ;PICK UP ADDRESS
2136 005052 012405 MOV (R4)+,R5 ;AND BYTE COUNT
2137 005054 010537 000002G MOV R5,DNSTS+2 ;SAVE BYTE COUNT
2138 005060 .INH ;LOCK OUT INTERRUPTS
005060 013746 177776 MOV PS,-(SP)
005064 112737 000340 177776 MOVB #PR7,@#PS ;;
2139 005072 013746 000004 MOV @#4,-(SP) ;;;SAVE LOC 4
2140 005076 012737 005242' 000004 MOV #90$,@#4 ;;;GO TO ILL MEM ROUTINE
2141 005104 022701 000400 CMP #IO.WLB,R1 ;;;WRITE LOGICAL BLOCK?
2142 005110 001003 BNE 30$ ;;;READ MEMORY REQUEST
2143 005112 112423 20$: MOVB (R4)+,(R3)+ ;;;MOVE BYTES
2144 005114 077502 SOB R5,20$ ;;;UNTIL DONE
2145 005116 000417 BR 60$ ;;;RETURN SUCCESS
2146
2147 005120 122760 000014 000006 30$: CMPB #14,6(R0) ;;;ALL IN THIS PACKET?
2148 005126 001010 BNE 50$ ;;;NO -- BAD FUNCTION
2149 005130 012704 000000G MOV #BLKTT,R4 ;;;SET UP A PACKET TO ADD TO FUNCTION
2150 005134 112324 40$: MOVB (R3)+,(R4)+ ;;;MOVE CORRESPONDING BYTES
2151 005136 077502 SOB R5,40$ ;;;UNTIL DONE
2152 005140 063737 000002G 000000G ADD DNSTS+2,DNBLK ;;;INCLUDE RETURN BYTES IN PACKET
2153 005146 000405 BR 70$ ;;;SET RETURN FUNCTION
2154
2155 005150 012737 177777 000000G 50$: MOV #IE.BAD,DNSTS ;;;RETURN BAD FUNCTION
2156 005156 005037 000002G 60$: CLR DNSTS+2 ;;;NO BYTES TRANSFERRED
2157 005162 012637 000004 70$: MOV (SP)+,@#4 ;;;RESET LOC 4
2158 005166 .ENB ;;;ENABLE INTERRUPTS
005166 012637 177776 MOV (SP)+,@#PS ;;
2159 005172 013737 000002G 000004G MOV DNSTS+2,DNSTS+4 ;RETURN COUNT
2160 005200 010203 MOV R2,R3 ;COMPUTE FE NUMBER
2161 005202 162703 000000G SUB #FETBL,R3
2162 005206 006203 ASR R3 ;AND
2163 005210 110337 000001G MOVB R3,DNBLK+1 ;SET IN RETURN PACKET
2164 005214 010246 MOV R2,-(SP) ;SAVE FETBL POINTER
2165 005216 010046 MOV R0,-(SP) ;AND STRING POINTER
2166 005220 012700 000000G MOV #DNBLK,R0 ;SET DONE BLOCK ADDRESS
2167 005224 CALL SNSTR ;SEND STRING
005224 004737 004420' JSR PC,SNSTR
2168 005230 012600 MOV (SP)+,R0 ;RESTORE
2169 005232 012602 MOV (SP)+,R2
2170 005234 042712 002000 BIC #FE.STR,(R2) ;FINISHED WITH -10 REQUEST
2171 005240 000634 BR DONSTR ;AND QUIT
2172
2173 005242 022626 90$: CMP (SP)+,(SP)+ ;REMOVE TRAP STUFF
2174 005244 012737 177774 000000G MOV #IE.VER,DNSTS ;RETURN RECOVERABLE ERROR
2175 005252 000741 BR 60$
FEDRV MACRO M1113 03-APR-86 19:04 PAGE 21-2
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
2176
2177
2178 .TITLE LPDRV (LP-20 LINEPRINTER DRIVER FOR RSX10F)
2179 .SBTTL TITLE PAGE
2180 .IDENT /001000/
2181 ;
2182 ; COPYRIGHT (C) 1975, 1984, 1985 BY
2183 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
2184 ; ALL RIGHTS RESERVED.
2185 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
2186 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
2187 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
2188 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
2189 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
2190 ;
2191 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
2192 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
2193 ; CORPORATION.
2194 ;
2195 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
2196 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
2197 ;
2198 ; MODULE: COMMON DEFINITIONS
2199 ;
2200 ; VERSION: 01-00
2201 ;
2202 ; AUTHOR: TOM PORCHER
2203 ;
2204 ; DATE: 4-JUN-75
2205 ;
2206 ;
2207 ; THIS MODULE CONTAINS:
2208 ;
2209 ; 1) COMMON PARAMETERS AND MACROS
2210 ;
2211 ; 2) LP-20 DEVICE REGISTER DEFINITIONS
2212 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 22
COMMON PARAMETERS AND MACROS
2214 .SBTTL COMMON PARAMETERS AND MACROS
2215 ;
2216 ; PARAMETERS
2217 ;
2218 ;L$$P20= 2 ;TWO LINEPRINTERS
2219 000214 LPALOC= 140. ;LINE ALLOCATION FOR EACH LP
2220 000012 LPRTRY= 10. ;# RETRYS ON ERRORS AND HUNG
2221 ;
2222 ; EVENT FLAGS
2223 ;
2224 000001 E.FLPD= 1 ;(1) INTERRUPT LEVEL I/O DONE
2225 000001 EF.LPD=BIT0
2226 000002 E.FLPC= 2 ;(2) MARK-TIME
2227 000002 EF.LPC=BIT1
2228 000003 E.FLPQ= 3 ;(3) CTY OUTPUT QUEUE I/O REQUESTS
2229 000004 EF.LPQ=BIT2
2230 ;(4) RESERVED FOR E.NIR (EXEC FLAG)
2231 000005 E.FLPS= 5 ;(5) STATUS REQUEST (LOCAL TO SSTSLP)
2232 000020 EF.LPS=BIT4
2233 000006 E.FLPW= 6 ;(6) WAIT FOR LP-20 TO SETTLE AFTER FLUSH
2234 000040 EF.LPW=BIT5
2235 ;
2236 ; MISC. MCALL'S
2237 ;
2238 .MCALL QIOSY$,ALUN$,MRKT$,QIOW$,SPRA$S,SVTK$S,WSIG$S,WTLO$S,WTSE$S,DIR$
2239 .MCALL $DEF,CALL,RETURN,.INH0,.INH,.ENB0,.ENB,PUSH,POP,.STKM
2240 005254 $DEF
2241 005254 QIOSY$
2242 .ENABLE AMA
2243 .LIST MEB
2244 ;
2245 ; COMMON MACROS
2246 ;
2247 .MACRO SAVE LIST
2248 PUSH <LIST>
2249 .MACRO RESTORE
2250 $$$=0
2251 .IRP ITEM,<LIST>
2252 $$$=$$$+1
2253 .ENDM
2254 .REPT $$$
2255 $$$$=0
2256 .IRP ITEM,<LIST>
2257 $$$$=$$$$+1
2258 .IF EQ $$$$-$$$
2259 POP ITEM
2260 .ENDC
2261 .ENDM
2262 $$$=$$$-1
2263 .ENDR
2264 .ENDM
2265 .ENDM
2266 ;
2267 ; BITS IN T.HCBC WORD IN THREAD BLOCK
2268 ;
2269 100000 TB.DON= BIT15 ;THREAD BLOCK DONE *** MUST BE SIGN BIT ***
2270 040000 TB.ABO= BIT14 ;ABORTED BLOCK
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 22-1
COMMON PARAMETERS AND MACROS
2271 020000 TB.EOF= BIT13 ;BLOCK REPRESENTS EOF
2272 010000 TB.LPC= BIT12 ;LOAD PAGE COUNTER FUNCTION
2273 004000 TB.RMD= BIT11 ;TRANSLATION RAM DATA
2274 002000 TB.VFD= BIT10 ;VFU DATA
2275 036000 TB.SFN= TB.EOF!TB.LPC!TB.RMD!TB.VFD ;SPECIAL FUNCTIONS
2276 ;
2277 ; QUEUE I/O -- THREAD BLOCK VALUES
2278 ;
2279 000004 PBTHRD= 4 ;R.PB+4 IS START OF THREAD BLOCK
2280 ;
2281 177774 T.HEMA= 0-PBTHRD ;(BYTE) EXTENDED MEMORY ADDRESS BITS 4 & 5
2282 177775 T.HVFC= 1-PBTHRD ;(BYTE) VERTICAL FORMAT CONTROL CHARACTER
2283 177776 T.HIBC= 2-PBTHRD ;(WORD) INITIAL BYTE COUNT
2284 ;
2285 ;
2286 ; STUFF THAT SHOULD BE GLOBAL, BUT MACY11 DOESN'T LIKE COMPLEX GLOBALS
2287 ;
2288 000377 LOBYTE= 377
2289 177400 HIBYTE= ^C<LOBYTE>
2290 ;
2291 ;
2292 000074 .CYLTM=^D60
2293 .MACRO .INH4
2294 MOV @#PS,-(SP)
2295 MOVB #PR4,@#PS
2296 .ENDM
2297 .MACRO .ENB4
2298 MOV (SP)+,@#PS
2299 .ENDM
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 23
LP-20 DEVICE REGISTER DEFINITIONS
2301 .SBTTL LP-20 DEVICE REGISTER DEFINITIONS
2302 ;
2303 ;
2304 ; LP-20 DEVICE REGISTER DEFINITIONS
2305 ;
2306 ; *** NOTE THAT ALL OFFSETS AND ADDRESSES ARE RELATIVE TO LPCSRA ***
2307 ;
2308 ;LPEXPA==175400 ;EXTERNAL PAGE ADDRESS OF LPCSRA
2309 ;LPEXPZ==20 ;SIZE OF EXTERNAL PAGE ADDRESSES IN BYTES
2310 ;
2311 000000 LPCSRA==0 ;CONTROL AND STATUS REGISTER A
2312 100000 ERR= BIT15
2313 040000 PAGZRO= BIT14
2314 020000 CHRINT= BIT13
2315 010000 VFURDY= BIT12
2316 004000 ONLINE= BIT11
2317 002000 DELHLD= BIT10
2318 001000 RSTERR= BIT9
2319 000400 LOINIT= BIT8
2320 ;
2321 000200 DONE= BIT7
2322 000100 INTENB= BIT6
2323 000040 BUSA17= BIT5
2324 000020 BUSA16= BIT4
2325 000010 MODE01= BIT3
2326 000004 MODE00= BIT2
2327 000001 TSTMOD= 1
2328 000002 VFULOD= 2
2329 000003 RAMLOD= 3
2330 000002 PARENB= BIT1
2331 000001 GO= BIT0
2332 ;
2333 000002 LPCSRB==2 ;CONTROL AND STATUS REGISTER B
2334 ; BITS 15-13 NOT USED
2335 010000 LPTPBT= BIT12
2336 004000 OPTVFU= BIT11
2337 002000 TEST02= BIT10
2338 001000 TEST01= BIT9
2339 000400 TEST00= BIT8
2340 ;
2341 000200 OFFLIN= BIT7
2342 000100 VFUERR= BIT6
2343 000040 LPTPAR= BIT5
2344 000020 MEMPAR= BIT4
2345 000010 RAMPAR= BIT3
2346 000004 SYNTIM= BIT2
2347 000002 DEMTIM= BIT1
2348 000001 GOERR= BIT0
2349 ;
2350 000004 LPBSAD==4 ;BUS ADDRESS REGISTER
2351 ;
2352 000006 LPBCTR==6 ;BYTE COUNT (2'S COMPLEMENT)
2353 ; BITS 15-12 NOT USED
2354 ; 11-0 BYTE COUNT
2355 ;
2356 000010 LPPCTR==10 ;PAGE COUNTER
2357 ; BITS 15-12 NOT USED
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 23-1
LP-20 DEVICE REGISTER DEFINITIONS
2358 ; 11-0 PAGE COUNT
2359 ;
2360 000012 LPRAMD==12 ;RAM DATA REGISTER
2361 ; BITS 15-13 NOT USED
2362 ; 12 RAM PARITY
2363 ; 11-0 RAM DATA
2364 ;
2365 000014 LPCBUF==14 ;(BYTE) CHARACTER BUFFER REGISTER
2366 000015 LPCCTR==15 ;(BYTE) COLUMN COUNT REGISTER
2367 ;
2368 000016 LPTDAT==16 ;(BYTE) PRINTER DATA REGISTER
2369 000017 LPCKSM==17 ;(BYTE) CHECKSUM REGISTER
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 24
LP-20 DEVICE REGISTER DEFINITIONS
2371
2372
2373 .SBTTL COMMON DEVICE PARAMETER MODULE
2374 ;
2375 ; COPYRIGHT (C) 1975, 1984, 1985 BY
2376 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
2377 ; ALL RIGHTS RESERVED.
2378 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
2379 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
2380 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
2381 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
2382 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
2383 ;
2384 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
2385 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
2386 ; CORPORATION.
2387 ;
2388 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
2389 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
2390 ;
2391 ;
2392 ; MODULE: COMMON DEVICE PARAMETERS
2393 ;
2394 ; VERSION: 01-00
2395 ;
2396 ; AUTHOR: TOM PORCHER
2397 ;
2398 ; DATE: 25-AUG-75
2399 ;
2400 ;
2401 ; THIS MODULE CONTAINS:
2402 ;
2403 ; 1) DEVICE STATUS BIT DEFINITIONS
2404 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 25
DEVICE STATUS BIT DEFINITIONS
2406 .SBTTL DEVICE STATUS BIT DEFINITIONS
2407 ;
2408 ; GENERAL FORM OF STATUS BLOCK
2409 ;
2410 ; WORD 0 STANDARD STAUS BITS (DV.XXX)
2411 ; 1 DEVICE-DEPENDENT BITS (DD.XXX)
2412 ; 2 (HIGH BYTE) # BYTES OF DEVICE-DEPENDENT INFO TO FOLLOW
2413 ; (LOW BYTE) # BYTES OF DEVICE REGISTERS TO FOLLOW
2414 ; 3-... DEVICE DEPENDENT INFO (# BYTES IN WORD 2)
2415 ; .-... DEVICE REGISTERS (# BYTES IN WORD 2)
2416 ;
2417 ;
2418 ; STANDARD BITS (FIRST WORD OF STATUS)
2419 ;
2420 000001 DV.NXD= BIT0 ;NON-EX DEVICE
2421 000002 DV.OFL= BIT1 ;OFF-LINE
2422 000004 DV.OIR= BIT2 ;HARDWARE ERROR. OPERATOR INTERVENTION REQUIRED.
2423 000010 DV.SCN= BIT3 ;SOFTWARE CONDITON. ACKNOWLEDGE REQUIRED.
2424 000020 DV.IOP= BIT4 ;I/O IN PROGRESS
2425 000040 DV.EOF= BIT5 ;END-OF-FILE ENCOUNTERED
2426 000100 DV.LOG= BIT6 ;ERROR LOGGING REQUIRED
2427 000200 DV.URE= BIT7 ;UN-RECOVERABLE ERROR
2428 000400 DV.F11= BIT8 ;ERROR ON FROM -11 REQUEST
2429 001000 DV.HNG= BIT9 ;DEVICE HUNG
2430 ;
2431 ;
2432 ; DEVICE-DEPENDENT BITS (SECOND WORD OF STATUS)
2433 ;
2434 ; LP-20 LINEPRINTER
2435 ;
2436 000001 DD.PGZ= BIT0 ;PAGE COUNTER PASSED ZERO
2437 000002 DD.CHI= BIT1 ;CHARACTER INTERRUPT (FROM RAM)
2438 000004 DD.VFE= BIT2 ;VFU ERROR-- PAPER RE-ALIGNMENT REQUIRED
2439 000010 DD.LER= BIT3 ;ERROR FINDING/READING VF AND RAM FILE
2440 000020 DD.OVF= BIT4 ;PRINTER HAS OPTICAL VFU (AS OPPOSED TO DAVFU)
2441 000040 DD.RME= BIT5 ;RAM PARITY ERROR-- RELOAD REQUIRED
2442 ;
2443 ; DEVICE DEPNDENT INFO FOR LP-20 (2 BYTES):
2444 ; WORD 3 (LOW BYTE) ACCUMULATED CHECKSUM
2445 ; (HIGH BYTE) RETRY COUNT
2446 ;
2447 ; 4-13 LP-20 DEVICE REGISTERS (16. BYTES)
2448 ;
2449 ;
2450 ; CD-11 CARD READER
2451 ;
2452 000001 DD.RCK= BIT0 ;READ (PHOTO) CHECK
2453 000002 DD.PCK= BIT1 ;PICK CHECK
2454 000004 DD.SCK= BIT2 ;STACK CHECK
2455 000010 DD.HEM= BIT3 ;HOPPER EMPTY
2456 000020 DD.SFL= BIT4 ;STACKER FULL
2457 ;
2458 ; DEVICE-DEPENDENT INFO FOR CD-11 (0 BYTES)
2459 ; WORD 3-6 DEVICE REGISTERS FOR CD-11 (8. BYTES)
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 26
DEVICE STATUS BIT DEFINITIONS
2461
2462
2463 .SBTTL LP-20 COMMON DATA MODULE
2464 ;
2465 ; COPYRIGHT (C) 1975, 1984, 1985 BY
2466 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
2467 ; ALL RIGHTS RESERVED.
2468 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
2469 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
2470 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
2471 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
2472 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
2473 ;
2474 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
2475 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
2476 ; CORPORATION.
2477 ;
2478 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
2479 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
2480 ;
2481 ; MODULE: LP-20 COMMON DATA
2482 ;
2483 ; VERSION: 01-00
2484 ;
2485 ; AUTHOR: TOM PORCHER
2486 ;
2487 ; DATE: 7-JUN-75
2488 ;
2489 ;
2490 ; THIS MODULE CONTAINS:
2491 ;
2492 ; 1) COMMON VARIABLES
2493 ;
2494 ; 2) DEVICE TABLES
2495 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 27
COMMON VARIABLES
2497 .SBTTL COMMON VARIABLES
2498 ;
2499 ; LP DRIVER TASK HEAD
2500 ;
2501 ;
2502 005254 LPHD:: .STKM 0,0,0,0,0,0,0,LPINI,174000,LPSTK
005322 000000 000000 000000 .WORD 0,0,0,0
005330 000000
005350 174000 005644' 005534' .WORD 174000,LPINI,LPSTK
005404 000005 .WORD 5
005406 000000G .WORD TTPEN
005410 000000 .WORD 0
005412 000000 .WORD 0
005414 000000 .WORD 0
005416 000000 .WORD 0
005420 000000 .WORD 0
005422 000000 .WORD 0
005424 000000 .WORD 0
005426 000000 .WORD 0
005430 000000 .WORD 0
005432 000000 .WORD 0
005534 000000 .WORD 0
005536 000000 .WORD 0
005540 000000 .WORD 0
005542 000000 .WORD 0
005544 000000 .WORD 0
005546 000000 .WORD 0
005550 005644' .WORD LPINI
005552 174000 .WORD 174000
2503 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 28
LP-20 DEVICE TABLES
2505 .SBTTL LP-20 DEVICE TABLES
2506
2507 ;
2508 ; LP-20 STATUS BITS
2509 ;
2510 100000 LP.HNG= BIT15 ;LP DID NOT COMPLETE I/O IN 20 SEC
2511 ;SET BY MARK-TIME REQUEST
2512 ;CLEARED BY ..DOLP
2513 040000 LP.SST= BIT14 ;SEND STATUS OF THIS LP TO -10
2514 ;SET BY INTERRUPT SERVICE
2515 ;CHECKED BY TASK
2516 020000 LP.PZI= BIT13 ;PAGE-ZERO INTERRUPT ENABLE
2517 ;SET FROM RAM/VF LOAD FILE
2518 ;CHECKED ON PAGZRO INTERRUPTS
2519 010000 LP.MCH= BIT12 ;MULTI-CHARACTER PRINT OPERATION IN PROGRESS
2520 ; (ARROW MODE). SET ON UNDCHR INTERRUPT,
2521 ; CLEARED WHEN DONE SET.
2522 004000 LP.WAT= BIT11 ;THIS LP IS WAITING FOR A RESPONSE
2523 ; FROM THE -10, DUE TO PAGZRO, ERROR
2524 ; ON SOMETHING LIKE THAT. SET BY INTERRUPT
2525 ; SERVICE, CLEARED BY 'CONTINUE'
2526 ; FUNCTION FROM -10.
2527 002000 LP.CLR= BIT10 ;CLEAR RAM REQUIRED (DUE TO ERROR)
2528 ; SET BY SSTSLP, CHECKED AND CLEARED BY TESTLP
2529 001000 LP.LIP= BIT9 ;LOAD OF VFU AND RAM IN PROGRESS, SET
2530 ; BY START OF LOAD (IN LPIOD) AND CLEARED BY
2531 ; TRANSFER COMPLETE FOR RAM/VFU DATA.
2532 000400 LP.F10= BIT8 ;FROM-10 REQUEST HAS BEEN QUEUED
2533 ; SET BY ..STLP AND SPECIAL FUNCTIONS
2534 ; CLEARED WHEN QUEUE IS EMPTY OR ..SPLP
2535 000200 LP.EOF= BIT7 ;END-OF-FILE. SET BY EOF FUNCTION ENCOUNTERED
2536 ; IN THREADED LIST BY INTERRUPT SERVICE.
2537 ; CHECKED AND CLEARED BY TESTLP WHEN
2538 ; CHECKSUM IS CLEARED.
2539 000003 LP.UNT= BIT1!BIT0 ;(LOW BITS) UNIT # OF THIS LP.
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 29
LP-20 DEVICE TABLES
2541
2542
2543 .SBTTL LP-20 DRIVER TASK MODULE
2544 ;
2545 ; COPYRIGHT (C) 1975, 1984, 1985 BY
2546 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
2547 ; ALL RIGTHS RESERVED.
2548 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
2549 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
2550 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
2551 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
2552 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
2553 ;
2554 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
2555 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
2556 ; CORPORATION.
2557 ;
2558 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
2559 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
2560 ;
2561 ; MODULE: LP-20 DRIVER TASK
2562 ;
2563 ; VERSION: 14-43
2564 ;
2565 ; AUTHOR: TOM PORCHER
2566 ;
2567 ; DATE: 4-JUN-75
2568 ;
2569 ;
2570 ; THIS MODULE CONTAINS:
2571 ;
2572 ; 1) LPINI (LP-20 INITIALIZATION)
2573 ;
2574 ; 2) LPLOOP (LP-20 DRIVER TASK LOOP)
2575 ;
2576 ; MODIFICATIONS:
2577 ;
2578 ; NO. DATE PROGRAMMER REASON
2579 ; --- ---- ---------- ------
2580 ; 001 28-FEB-77 A. PECKHAM CHANGE LENGTH OF VFU RECORDS
2581 ; TO 145 FROM 140
2582 ; TCO 4.1.1105 11-MAR-80 R. BELANGER CHANGE "EF.PR1" RECOGNITION
2583 ; RCO 810804 04-AUG-81 S. LEAPLINE RESET R0 WHEN BUFFER ALLOCATE
2584 ; FAILS
2585 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 30
LPINI (INITIALIZE LP-20 TASK)
2587 .SBTTL LPINI (INITIALIZE LP-20 TASK)
2588 ;
2589 ;+
2590 ;
2591 ; THIS IS THE LP-20 USER-LEVEL TASK. IT HANDLES QIO
2592 ; REQUESTS, OUTPUT ACKNOWLEDGEMNETS, AND HUNG-CHECKING.
2593 ;
2594 ; LPINI IS CALLED WHEN THE TASK IS STARTED. IT RESETS THE
2595 ; LP-20 AND LOADS THE STANDARD VERTICAL FORMAT AND TRANSLATION
2596 ; RAM. THE 10-SECOND MARK-TIME REQUEST IS ALSO ENTERED.
2597 ;
2598 ;-
2599 ;
2600 ;
2601 ; DIRECTIVE PARAMETER BLOCKS
2602 ;
2603 005554 LPMRKT:
2604 005554 MRKT$ E.FLPC,10.*.CYLTM,10.*.CYLTM ;MARK-TIME REQUEST FOR 10 SECONDS
005554 027 005 .BYTE 23.,5
005556 000002 .WORD E.FLPC
005560 001130 .WORD 10.*.CYLTM
005562 001130 .WORD 10.*.CYLTM
005564 000000 .WORD
2605 005566 MKSCDP:
2606 005566 MRKT$ E.FLPW,.CYLTM,0 ;WAIT FOR 1 SECOND
005566 027 005 .BYTE 23.,5
005570 000006 .WORD E.FLPW
005572 000074 .WORD .CYLTM
005574 000000 .WORD 0
005576 000000 .WORD
2607 ;
2608 005600 LPSSTV:
2609 005600 005602' .WORD LPTRP4 ;WHERE TO GO ON TRAP-AT-4
2610 ;
2611 ; HERE ON A TRAP TO 4 (HOPEFULLY AN EXPECTED NON-EX LP)
2612 ;
2613 005602 LPTRP4:
2614 005602 021627 007172' CMP (SP),#LPDINT ;THIS FROM MARK-TIME?
2615 005606 001404 BEQ 10$ ;YES-- OK
2616 005610 021627 010620' CMP (SP),#LPDCLR ;HOW ABOUT INIT?
2617 005614 001401 BEQ 10$ ;YES-- OK
2618 005616 000004 IOT ;***** FATAL-- BAD TRAP AT 4
2619 ;
2620 005620 10$:
2621 005620 005062 000000G CLR LPCSA(R2) ;NON-EX LP-- SAY SO
2622 005624 005003 CLR R3 ; BOTH WAYS
2623 005626 052766 000001 000002 BIS #BIT0,2(SP) ;SET CARRY ON STACK
2624 005634 000002 RTI ;RETURN TO INTERRUPTED ROUTINE
2625 ;
2626 ; HERE ON POWER-RECOVERY AST
2627 ;
2628 005636 LPWRUP:
2629 005636 CALL INITLP ;INIT ALL LP'S
005636 004737 010550' JSR PC,INITLP
2630 005642 000002 RTI ;RETURN FROM AST
2631 ;
2632 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 30-1
LPINI (INITIALIZE LP-20 TASK)
2633 ; LPINI -- INITIALIZE LP'S
2634 ;
2635 005644 LPINI:
2636 005644 013737 000000G 000000G MOV .CRTSK,LPEVFG ;SAVE OUR TASK ADDRESS
2637 005652 062737 000020 000000G ADD #A.EF,LPEVFG ;MAKE THAT ADDR OF OUR EVENT FLAGS
2638 005660 052777 000060 000000G BIS #EF.LPW!EF.LPS,@LPEVFG ;SAY STATUS BUFFER AVAILABLE AND NOT WAITING
2639 005666 DIR$ #LPMRKT ;ENTER MARK-TIME REQUEST FOR 10 SECONDS
005666 012746 005554' MOV #LPMRKT,-(SP)
005672 104375 EMT 375
2640 005674 SVTK$S #LPSSTV,#1 ;ENABLE FOR TRAP-AT-4 RECOGNITION
005674 012746 000001 MOV #1,-(SP)
005700 012746 005600' MOV #LPSSTV,-(SP)
005704 012746 MOV (PC)+,-(SP)
005706 071 003 .BYTE 57.,3
005710 104375 EMT 375
2641 005712 SPRA$S #LPWRUP ;SETUP POWER-UP AST
005712 012746 005636' MOV #LPWRUP,-(SP)
005716 012746 MOV (PC)+,-(SP)
005720 155 002 .BYTE 109.,2
005722 104375 EMT 375
2642 005724 CALL INITLP ;INIT ALL THE LP'S
005724 004737 010550' JSR PC,INITLP
2643 ; BR LPLOOP ;FALL INTO NORMAL PROCESSING LOOP
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 31
LPLOOP (LP-20 DRIVER TASK LOOP)
2645 .SBTTL LPLOOP (LP-20 DRIVER TASK LOOP)
2646 ;
2647 ;+
2648 ;
2649 ; LPLOOP WAITS FOR AND DISPATCHES ON THE LP EVENT FLAGS,
2650 ; EF.LPD (INTERRUPT LEVEL I/O DONE), EF.NIR (QUEUE I/O REQUEST),
2651 ; AND EF.LPC (10 SECOND MARK-TIME REQUEST), IN THAT ORDER.
2652 ;
2653 ;-
2654 ;
2655 ;
2656 005730 LPLOOP:
2657 005730 WTLO$S 1,#EF.LPC!EF.LPD!EF.NIR ;WAIT FOR CLOCK (10 SECONDS)
005730 012746 000000C MOV #EF.LPC!EF.LPD!EF.NIR,-(SP)
005734 012746 000001 MOV #1,-(SP)
005740 012746 MOV (PC)+,-(SP)
005742 053 003 .BYTE 43.,3
005744 104375 EMT 375
2658 ; OR I/O DONE FROM ISR
2659 ; OR QIO REQUEST TO DO.
2660 005746 .INH ;A FLAG SET-- LOCK OUT LP INTERRUPTS
005746 013746 177776 MOV PS,-(SP)
005752 112737 000340 177776 MOVB #PR7,@#PS ;;
2661 005760 017737 000000G 000000G MOV @LPEVFG,LPCEVF ;GET CURRENT EVENT FLAGS
2662 005766 042777 000000C 000000G BIC #EF.LPC!EF.LPD!EF.NIR,@LPEVFG ;CLEAR THE FLAGS WE WAITED FOR
2663 005774 .ENB ;RETORE IRPS
005774 012637 177776 MOV (SP)+,@#PS ;;
2664 006000 005737 000000G TST .LPPFL ;POWER FAIL?
2665 006004 001404 BEQ 10$ ;NO -- CONTINUE
2666 006006 CALL INITLP
006006 004737 010550' JSR PC,INITLP
2667 006012 005037 000000G CLR .LPPFL
2668 006016 10$:
2669 ;
2670 ; BR LPIOD ;TRY FOR EF.IOD (I/O DONE) FIRST
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 32
LPIOD (LP TASK I/O DONE)
2672 .SBTTL LPIOD (LP TASK I/O DONE)
2673 ;
2674 ;+
2675 ;
2676 ; LPIOD IS DISPATCHED TO WHENEVER THE EVENT FLAG EF.LPD IS SET.
2677 ; THIS IS SET BY THE INTERRUPT SEVICE WHENEVER IT IS DONE WITH A BUFFER
2678 ; OR STATUS INFORMATION IS TO BE SENT TO THE -10 (IE. LP JUST CAME
2679 ; ONLINE).
2680 ;
2681 ; EACH LP'S THREADED OUTPUT LIST IS SCANNED FOR DONE BUFFERS
2682 ; (INDICATED BY T.HCBC NEGATIVE). THESE ARE RETURNED TO THE FREE POOL,
2683 ; AND, IN THE CASE OF QUEUE I/O REQUESTS, ..IODN IS CALLED TO TELL
2684 ; THE REQUESTOR THAT I/O HAS BEEN COMPLETED. IF A QUEUE I/O REQUEST
2685 ; IS STOPPED IN THE MIDDLE OF A TRANSFER BECAUSE OF ERROR, THE
2686 ; ERROR INDICATION IS GIVEN TO ..IODN, AND THE REQUEST IS ABORTED.
2687 ;
2688 ; AFTER THE THREADED LIST SCAN, THE LP STATUS IS SENT TO THE
2689 ; -10 (BY CALLING SSTSLP) IF THE LP.SST FLAG IS SET.
2690 ;
2691 ; IF A BUFFER WAS COMPLETED, AND THERE IS EITHER NONE
2692 ; OR ONE BUFFER TO OUTPUT, A REQUEST TO SEND IS SENT TO THE -10
2693 ; (BY CALLING ..SACK).
2694 ;
2695 ;-
2696 ;
2697 006016 LPIOD:
2698 006016 032737 000001 000000G BIT #EF.LPD,LPCEVF ;I/O DONE?
2699 006024 001504 BEQ 99$ ;NO-- TRY NEXT FLAG IN CHAIN
2700 006026 012702 000000G MOV #LPTBL,R2 ;ADDRESS LPTBL (UNIT 0)
2701 006032 PUSH #L$$P20 ;STACK COUNT OF LP'S TO LOOK AT
006032 012746 000002 MOV #L$$P20,-(SP)
2702 006036 10$:
2703 006036 005005 CLR R5 ;AND INDICATE NO BUFFERS DONE
2704 006040 016203 000000G MOV LPCSA(R2),R3 ;GET THE EXT PAGE ADDR OF THIS LP
2705 ;
2706 ; LOOP THROUGH THREADED LIST FOR THIS LP
2707 ;
2708 006044 20$:
2709 006044 016200 000000G MOV LPTHD(R2),R0 ;GET START OF LIST
2710 006050 001411 BEQ 80$ ;DONE-- GO AWAY
2711 ;
2712 ; LOOK AT THIS THREAD BLOCK TO SEE IF DONE
2713 ;
2714 006052 30$:
2715 006052 005760 000000G TST T.HCBC(R0) ;SEE IF DONE
2716 006056 002471 BLT 40$ ;DONE-- PROCESS
2717 006060 005762 000000G TST LPITH(R2) ;IS I/O IN PROGRESS ON THIS BLOCK?
2718 006064 001003 BNE 80$ ;YES-- WE ARE DONE WITH WHAT IS DONE
2719 ;
2720 ; LP STOPPED ON THIS ACTIVE THREAD BLOCK
2721 ;
2722 006066 032712 001000 BIT #LP.LIP,(R2) ;LOAD IN PROGRESS?
2723 006072 001063 BNE 40$ ;YES-- TERMINATE IT, SINCE I/O STOPPED
2724 ;
2725 ; END OF LIST-- SEE IF WE SHOULD SEND STATUS AND/OR ACK
2726 ;
2727 006074 80$:
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 32-1
LPIOD (LP TASK I/O DONE)
2728 006074 032712 040000 BIT #LP.SST,(R2) ;TIME TO SEND STATUS?
2729 006100 001402 BEQ 81$ ;NO-- HOW BOUT ACK?
2730 006102 CALL SSTSLP ;YES-- SEND STATUS TO -10
006102 004737 007360' JSR PC,SSTSLP
2731 006106 81$:
2732 006106 005700 TST R0 ;ANYTHING LEFT TO DO?
2733 006110 001411 BEQ 84$ ;NO-- SEND ACK
2734 006112 032712 004000 BIT #LP.WAT,(R2) ;ARE WE WAITING FOR RESPONSE?
2735 006116 001026 BNE 86$ ;YES-- DON'T START OUPUT
2736 006120 005762 000000G TST LPITH(R2) ;NO-- IS LP GOING ALREADY?
2737 006124 001023 BNE 86$ ;YES-- LEAVE IT GO
2738 006126 CALL TESTLP ;NO-- SEE IF LP CAN BE STARTED
006126 004737 010360' JSR PC,TESTLP
2739 006132 000420 BR 86$ ;SEE IF ACK NEEDED
2740 ;
2741 ; QUEUE IS EMPTY-- RESET ALL FLAGS
2742 ;
2743 006134 84$:
2744 006134 .INH ;;;MAKE SURE DTE DOESN'T GIVE US SOMETHING
006134 013746 177776 MOV PS,-(SP)
006140 112737 000340 177776 MOVB #PR7,@#PS ;;
2745 006146 016200 000000G MOV LPTHD(R2),R0 ;;;GET THREAD POINTER
2746 006152 001006 BNE 85$ ;;;OOPS-- LET'S GO AWAY, WE GOT SOMETHING
2747 006154 032777 000001 000000G BIT #EF.LPD,@LPEVFG ;;;WILL WE BE BACK AGAIN?
2748 006162 001002 BNE 85$ ;;;YES-- CATCH FLAGS NEXT TIME
2749 006164 042712 115400 BIC #LP.F10!LP.WAT!LP.LIP!LP.MCH!LP.HNG,(R2) ;;;SURELY OFF NOW
2750 006170 85$:
2751 006170 .ENB ;RESTORE INTERRUPTS
006170 012637 177776 MOV (SP)+,@#PS ;;
2752 006174 86$:
2753 006174 005705 TST R5 ;DID WE REMOVE A BUFFER?
2754 006176 001412 BEQ 90$ ;NO-- DON'T SEND ACK
2755 006200 005700 TST R0 ;YES-- ANY LEFT?
2756 006202 001402 BEQ 87$ ;NONE-- SEND ACK
2757 006204 005710 TST @R0 ;IS THIS LAST BUFFER?
2758 006206 001006 BNE 90$ ;NO-- SEND NOTHING
2759 006210 87$:
2760 006210 012700 000000G MOV #LPTBL,R0 ;ADDRESS BASE ADDR OF TABLE FOR ..SACK
2761 006214 012703 000000G MOV #D.CLPT,R3 ;SAY LPT DEVICE CODE
2762 006220 CALL ..SACK ;SEND THE ACK
006220 004737 000000G JSR PC,..SACK
2763 ;
2764 ; DONE WITH LP-- GET ANOTHER
2765 ;
2766 006224 90$:
2767 006224 062702 000000G ADD #LPSIZE,R2 ;BUMP TO NEXT LP IN TABLE
2768 006230 005316 DEC (SP) ;DECREMENT COUNT
2769 006232 003301 BGT 10$ ;BACK FOR MORE
2770 006234 005726 TST (SP)+ ;CLEAN STACK
2771 006236 99$:
2772 006236 000137 006676' JMP LPNIR ;DONE-- TRY NEXT EVENT-FLAG
2773 ;
2774 ; THREAD BLOCK DONE-- REMOVE FROM LIST & DEALLOCATE
2775 ;
2776 006242 40$:
2777 006242 005703 TST R3 ;LP EXIST???
2778 006244 001564 BEQ 49$ ;NO-- GIVE UP
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 32-2
LPIOD (LP TASK I/O DONE)
2779 006246 032712 001000 BIT #LP.LIP,(R2) ;LOAD IN PROGRESS (I.E. NOW COMPLETE)
2780 006252 001424 BEQ 41$ ;NO-- GO ON
2781 ;
2782 006254 042712 001000 BIC #LP.LIP,(R2) ;YES-- NO LONGER SO
2783 006260 042713 000014 BIC #MODE00!MODE01,(R3) ;CLEAR LOAD MODE BITS
2784 006264 PUSH <R0,R3> ;SAVE EPA
006264 010046 MOV R0,-(SP)
006266 010346 MOV R3,-(SP)
2785 006270 016200 000000G MOV LPRMA(R2),R0 ;GET RAM BUFFER ADDR
2786 006274 016201 000000G MOV LPRMZ(R2),R1 ; AND DATA SIZE
2787 006300 012703 000000G MOV #.BGBUF,R3 ;WE GOT IT FROM THE BIG BUFFER
2788 006304 CALL ..DEC2 ;RETURN THE BUFFER
006304 004737 000000G JSR PC,..DEC2
2789 006310 POP <R3,R0> ;RESTORE EPA
006310 012603 MOV (SP)+,R3
006312 012600 MOV (SP)+,R0
2790 006314 005062 000000G CLR LPRMA(R2) ;NO LONGER THERE
2791 006320 005062 000000G CLR LPRMC(R2) ; . .
2792 006324 41$:
2793 006324 016004 000000G MOV T.HCBC(R0),R4 ;GET COMPLETION STATUS
2794 006330 032704 040000 BIT #TB.ABO,R4 ;ABORTED?
2795 006334 001130 BNE 49$ ;YES-- LEAVE NOW
2796 006336 032704 036000 BIT #TB.SFN,R4 ;SPECIAL FUNCTION?
2797 006342 001525 BEQ 49$ ;NO-- GO ON
2798 ;
2799 006344 032704 020000 BIT #TB.EOF,R4 ;EOF?
2800 006350 001430 BEQ 42$ ;NO-- JUST GO ON
2801 006352 016260 000000G 000000G MOV LPRMA(R2),T.HCAD(R0) ;RAM/VFU DATA PRESENT?
2802 006360 001003 BNE 411$ ;YES-- DO RAM/VFU LOAD
2803 006362 052712 040200 BIS #LP.EOF!LP.SST,(R2) ;NO-- NOTE THAT EOF HAS OCCURED
2804 006366 000513 BR 49$ ;THAT'S IT FOR EOF IF NO RAM/VFU DATA
2805 006370 411$:
2806 006370 016260 000000G 000000G MOV LPRMC(R2),T.HCBC(R0) ;SET BYTE COUNT= LAST ADDRESS
2807 006376 166060 000000G 000000G SUB T.HCAD(R0),T.HCBC(R0) ;MAKE IT A BYTE COUNT
2808 006404 052712 001000 BIS #LP.LIP,(R2) ;NOTE LOAD NOW IN PRGRESS
2809 006410 052713 000010 BIS #VFULOD*MODE00,(R3) ;ASSUME VFU LOAD
2810 006414 026227 000000G 001000 CMP LPRMZ(R2),#1000 ;TRNASLATION RAM DATA?
2811 006422 001224 BNE 80$ ;NO-- MUST BE VFU DATA
2812 006424 052713 000014 BIS #RAMLOD*MODE00,(R3) ;YES-- SET RAM LOAD MODE
2813 006430 000621 BR 80$ ;START LP GOING ON THIS BLOCK
2814 006432 42$:
2815 006432 032704 010000 BIT #TB.LPC,R4 ;LOAD PAGE COUNTER FUNCTION?
2816 006436 001413 BEQ 43$ ;NO-- GO ON
2817 006440 042712 020000 BIC #LP.PZI,(R2) ;ASSUME NO INTERRUPT ENABLE
2818 006444 016001 000000G MOV T.HCAD(R0),R1 ;GET ADDRESS OF FUNCTION DATA
2819 006450 016163 000002 000010 MOV 2(R1),LPPCTR(R3) ;SET PAGE COUNTER
2820 006456 002057 BGE 49$ ;BIT15=0-- NO INTERRUPT
2821 006460 052712 020000 BIS #LP.PZI,(R2) ;BIT15=1-- INTERRUPT ENABLE
2822 006464 000454 BR 49$ ;ALL DONE
2823 006466 43$:
2824 006466 PUSH <R3,R0> ;SAVE THIS THREAD BLOCK ADDRESS
006466 010346 MOV R3,-(SP)
006470 010046 MOV R0,-(SP)
2825 006472 016201 000000G MOV LPRMC(R2),R1 ;GET CURRENT RAM DATA ADDRESS
2826 006476 001026 BNE 46$ ;GOT IT-- PUT THIS DATA IN THAT BUFFER
2827 006500 012700 000000G 431$: MOV #.BGBUF,R0 ;[RCO 810408] POINT TO BIG BUFFER FOR DATA BLOCK
2828 006504 012701 001000 MOV #1000,R1 ;ASSUME TRANSLATION RAM DATA
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 32-3
LPIOD (LP TASK I/O DONE)
2829 006510 032704 004000 BIT #TB.RMD,R4 ;RAM DATA?
2830 006514 001002 BNE 44$ ;YES-- GOT IT
2831 006516 012701 000444 MOV #<^D<145*2>+2+3>&<-4>,R1 ; +++001 NO-- VFU DATA-- GET MAX LENGTH
2832 006522 44$:
2833 006522 CALL ..ALC2 ;GET A BUFFER
006522 004737 000000G JSR PC,..ALC2
2834 006526 103004 BCC 45$ ;GOT IT-- GO ON
2835 006530 WSIG$S ;NO GOT-- WAIT AN INSTANT
006530 012746 MOV (PC)+,-(SP)
006532 061 001 .BYTE 49.,1
006534 104375 EMT 375
2836 006536 000760 BR 431$ ;[RCO 810804] TRY FOR BUFFER AGAIN
2837 006540 45$:
2838 006540 010162 000000G MOV R1,LPRMZ(R2) ;STORE RAM DATA SIZE
2839 006544 010001 MOV R0,R1 ;COPY THAT BUFFER ADDRESS
2840 006546 010162 000000G MOV R1,LPRMA(R2) ;STORE RAM DATA ADDRESS
2841 006552 011600 MOV (SP),R0 ;RESTORE THREAD BLOCK ADDRESS
2842 006554 46$:
2843 006554 016203 000000G MOV LPRMA(R2),R3 ;COPY ADDRESS WHERE DATA GOES
2844 006560 066203 000000G ADD LPRMZ(R2),R3 ;COMPUTE END OF BUFFER
2845 006564 016000 000000G MOV T.HCAD(R0),R0 ;GET THE RAM DATA ADDRESS
2846 006570 042704 177400 BIC #HIBYTE,R4 ;CLEAR TRASH IN BYTE COUNT
2847 006574 001404 BEQ 48$ ;ALL DONE IF ZERO BYTE COUNT
2848 006576 47$:
2849 006576 020103 CMP R1,R3 ;GOING BEYOND END OF BUFFER?
2850 006600 103002 BHIS 48$ ;YES-- THAT'S ALL THE DATA WE CAN TAKE
2851 006602 112021 MOVB (R0)+,(R1)+ ;STORE A BYTE AWAY
2852 006604 077404 SOB R4,47$ ;LOOP FOR ALL BYTES OF DATA
2853 006606 48$:
2854 006606 POP <R0,R3> ;RESTORE THE THREAD BLOCK POIINTER
006606 012600 MOV (SP)+,R0
006610 012603 MOV (SP)+,R3
2855 006612 010162 000000G MOV R1,LPRMC(R2) ;STORE CURRENT BYTE ADDRESS
2856 006616 49$:
2857 006616 011062 000000G MOV @R0,LPTHD(R2) ;REMOVE THIS BUFFER
2858 006622 016001 000000G MOV T.HBCT(R0),R1 ;GET SIZE OF THIS THREAD BLOCK
2859 006626 001013 BNE 60$ ;NOT QIO-- JUST DEALLOCATE
2860 ;
2861 ; QUEUE I/O REQUEST DONE-- CALL ..IODN
2862 ;
2863 006630 PUSH R3 ;SAVE EPA
006630 010346 MOV R3,-(SP)
2864 006632 110403 MOVB R4,R3 ;GET QUEUE I/O STATUS
2865 006634 016004 177776 MOV T.HIBC(R0),R4 ;GET INITAIL BYTE COUNT AS TRANSFER COUNT
2866 006640 010001 MOV R0,R1 ;COPY THREAD BLOCK ADDRESS
2867 006642 162701 000004G SUB #R.PB+PBTHRD,R1 ;GET ADDRESS OF REAL QUEUE I/O NODE
2868 006646 CALL ..IODN ;SAY I/O DONE
006646 004737 000000G JSR PC,..IODN
2869 006652 POP R3 ;RESTORE EPA
006652 012603 MOV (SP)+,R3
2870 006654 000406 BR 61$ ;ALL DONE
2871 ;
2872 ; ALL DONE WITH THREAD BLOCK-- DEALLOCATE IT
2873 ;
2874 006656 60$:
2875 006656 CALL ..DECB ;DEALLOCATE THE BUFFER
006656 004737 000000G JSR PC,..DECB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 32-4
LPIOD (LP TASK I/O DONE)
2876 006662 032712 000400 BIT #LP.F10,(R2) ;DOES -10 HAVE A REQUEST IN?
2877 006666 001401 BEQ 61$ ;NO-- DON'T FLAG TO ACK
2878 006670 010205 MOV R2,R5 ;NOTE THAT WE DID SOMETHING
2879 006672 61$:
2880 006672 000137 006044' JMP 20$ ;GET NEXT THREAD BLOCK FOR THIS LP
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 33
LPNIR (LP TASK QUEUE I/O REQUEST)
2882 .SBTTL LPNIR (LP TASK QUEUE I/O REQUEST)
2883 ;
2884 ;+
2885 ;
2886 ; LPNIR IS DISPATCHED TO WHENEVER THE EVENT FLAG EF.NIR IS SET.
2887 ; THIS OCCURS WHEN ANOTHER TASK REQUESTS OUTPUT TO ANY LP. ALL LP'S
2888 ; ARE CHECKED FOR A REQUEST WAITING.
2889 ;
2890 ; THE REQUEST IS QUEUED UP IN THE THREADED OUTPUT LIST
2891 ; FOR THIS LP, USING AN EXTENDED THREAD BLOCK. THIS BLOCK IS DISTINGUISHED
2892 ; AS A QUEUE I/O REQUEST BY T.HBCT BEING ZERO (THE LENGTH OF THE BLOCK
2893 ; IS T.HQRS). THE ADDITIONAL INFORMATION IN THIS THREAD BLOCK IS:
2894 ; T.HEMA -- (BYTE) EXTENDED MEMORY ADDRESS BITS (BITS 4 AND 5)
2895 ; T.HVFC -- (BYTE) VERTICAL FORMAT CONTROL CHARACTER
2896 ; T.HIBC -- INITIAL BYTE COUNT
2897 ;
2898 ;-
2899 ;
2900 .ENABLE LSB
2901 006676 LPNIR:
2902 006676 032737 000000G 000000G BIT #EF.NIR,LPCEVF ;A QUEUE I/O REQUEST FOR US?
2903 006704 001514 BEQ 99$ ;NO-- TRY NEXT IN CHAIN
2904 006706 012700 050114 MOV #"LP,R0 ;SAY WE ARE A LP
2905 006712 CALL ..DQRN ;GET A REQUEST
006712 004737 000000G JSR PC,..DQRN
2906 006716 103507 BCS 99$ ;NONE-- DONE
2907 ;
2908 ; GOT QUEUE I/O REQUEST NODE-- ADDR IN R1
2909 ;
2910 ; REGISTERS RETURNED BY ..DQRN
2911 ; R1 -- ADDRESS OF REQUEST NODE
2912 ; R2 -- UNIT # OF REQUESTED DEVICE
2913 ; R3 -- BYTE COUNT OF DATA
2914 ; R4 -- EXTENDED ADDRESS BITS 16 AND 17 (IN BITS 4 AND 5)
2915 ; R5 -- PHYSICAL ADDRESS OF DATA
2916 ;
2917 ; CHECK FOR FUNCTION CODES:
2918 ; IO.WLB OUTPUT BUFFER
2919 ; IO.WVB OUTPUT BUFFER
2920 ; IO.KIL FLUSH OUTPUT (CALL ..SPLP)
2921 ; IO.DAC CLOSE OUTPUT (TYPE <FF>)
2922 ; IO.RVB READ-- ILLEGAL FUNCTION
2923 ; IO.RLB READ-- ILLEGAL FUNCTION
2924 ;
2925 ; ALL OTHER FUNCTIONS ARE IGNORED
2926 ;
2927 006720 006302 ASL R2 ;MAKE UNIT IN WORDS
2928 006722 016202 000000G MOV LPUTBL(R2),R2 ;GET ADDR OF LPTBL ENTRY FOR THIS LP
2929 006726 116100 000001G MOVB R.FC+1(R1),R0 ;GET FUNCTION CODE FROM REQUEST NODE
2930 006732 001430 BEQ 20$ ;EXPRESS FUNCTION-- LOOK AT IT
2931 006734 122700 000001 CMPB #IO.WLB/400,R0 ;WRITE LOGICAL?
2932 006740 001441 BEQ 40$ ;YES-- PRINT
2933 006742 122700 000022 CMPB #IO.WVB/400,R0 ;WRITE VIRTUAL?
2934 006746 001436 BEQ 40$ ;YES-- PRINT ALSO
2935 006750 122700 000002 CMPB #IO.RLB/400,R0 ;READ LOGICAL????
2936 006754 001414 BEQ 15$ ;YES-- ILLEGAL
2937 006756 122700 000021 CMPB #IO.RVB/400,R0 ;READ VIRTUAL????
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 33-1
LPNIR (LP TASK QUEUE I/O REQUEST)
2938 006762 001411 BEQ 15$ ;YES-- ILLEGAL
2939 006764 122700 000020 CMPB #IO.DAC/400,R0 ;CLOSE OUT FILE?
2940 006770 001017 BNE 30$ ;NO-- ASSUME OK, GIVE SUCCESS
2941 ;
2942 ; IO.DAC -- CLOSE OUT FILE, SEND <FF>
2943 ;
2944 006772 012705 007124' MOV #VFCFF,R5 ;SET ADDRESS TO POINT TO FORM-FEED
2945 006776 012703 000001 MOV #1,R3 ;BYTE COUNT= 1
2946 007002 005004 CLR R4 ;NO EMA BITS
2947 007004 000417 BR 40$ ;SEND LIKE QUEUE I/O
2948 ;
2949 ; ILLEGAL FUNCTION
2950 ;
2951 007006 15$:
2952 007006 012703 177776 MOV #IE.IFC,R3 ;SAY ILLEGAL
2953 007012 000410 BR 31$ ;SO SAY IT
2954 ;
2955 ; IO.KIL-- FLUSH OUTPUT
2956 ;
2957 007014 20$:
2958 007014 022761 000012 000000G CMP #IO.KIL,R.FC(R1) ;THIS I/O KILL?
2959 007022 001002 BNE 30$ ;NO-- IGNORE
2960 007024 CALL ..SPLP ;FLUSH OUTPUT
007024 004737 011414' JSR PC,..SPLP
2961 ;
2962 ; IO.ATT, IO.DET-- IGNORE
2963 ;
2964 007030 30$:
2965 007030 012703 000001 MOV #IS.SUC,R3 ;SAY 'SUCCESS' TO ..IODN
2966 007034 31$:
2967 007034 005004 CLR R4 ;NO BYTES TRANSFERRED
2968 007036 CALL ..IODN ;RETURN PACKET TO REQUESTOR
007036 004737 000000G JSR PC,..IODN
2969 007042 000715 BR LPNIR ;DONE-- TRY FOR SOME MORE
2970 ;
2971 ; IO.WLB, IO.WVB-- SEND DATA TO LP
2972 ;
2973 ; ENTER THIS REQUEST IN THREADED OUTPUT LIST
2974 ;
2975 007044 40$:
2976 007044 010100 MOV R1,R0 ;COPY NODE ADDRESS
2977 007046 062700 000004G ADD #R.PB+PBTHRD,R0 ;POINT TO THREAD BLOCK AREA OF R.PB
2981 007052 116101 000004G MOVB R.PB+4(R1),R1 ;GET VERTICAL FORMAT CHARACTER
2982 007056 005060 000000G CLR T.HBCT(R0) ;NOTE THAT THIS IS A QIO REQUEST
2983 007062 010560 000000G MOV R5,T.HCAD(R0) ;SAVE PHYSICAL ADDR OF DATA
2984 007066 010360 000000G MOV R3,T.HCBC(R0) ; AND BYTE COUNT OF DATA
2985 007072 110460 177774 MOVB R4,T.HEMA(R0) ; AND EXTENDED MEMORY ADDR BITS
2986 ;
2987 007076 012705 007122' MOV #VFCTBL,R5 ;YES-- POINT TO TABLE OF FORMAT CONTROL CHARACTERS
2988 007102 55$:
2989 007102 112560 177775 MOVB (R5)+,T.HVFC(R0) ;GET THE CHARCTER TO CONTROL
2990 007106 001402 BEQ 60$ ;END OF TABLE-- GIVE UP WITH NOTHING
2991 007110 122501 CMPB (R5)+,R1 ;MATCH THE VFC CHARACTER?
2992 007112 001373 BNE 55$ ;NO-- LOOP UNTIL WE FIND ONE
2993 007114 60$:
2994 007114 CALL ..PTLP ;START LP ON THIS BUFFER, OR QUEUE UP
007114 004737 011646' JSR PC,..PTLP
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 33-2
LPNIR (LP TASK QUEUE I/O REQUEST)
2995 007120 000666 BR LPNIR ;LOOK FOR ANOTHER REQUEST
2996 ;
2997 ; VERTICAL FORMAT CONTROL CHARACTER TABLE FOR QUEUE I/O REQUESTS
2998 ;
2999 007122 VFCTBL:
3000 007122 012 040 .BYTE 12,' ;<SPACE> NEXT LINE
3001 007124 014 061 VFCFF: .BYTE 14,'1 ;"1" NEXT PAGE
3002 007126 015 053 .BYTE 15,'+ ;"+" OVERPRINT
3003 007130 021 060 .BYTE 21,'0 ;"0" DOUBLE SPACE
3004 007132 012 044 .BYTE 12,'$ ;"$" PROMPTING OUTPUT
3005 007134 000 .BYTE 0 ;END OF TABLE
3006 .EVEN
3007 ;
3008 ;
3009 007136 99$:
3010 ; BR LPMKT ;NEXT IS MARK-TIME REQUESTS
3011 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 34
LPMKT (LP TASK MARK-TIME REQUEST)
3013 .SBTTL LPMKT (LP TASK MARK-TIME REQUEST)
3014 ;
3015 ;+
3016 ; LPMKT IS DISPATCHED TO WHEN THE EF.LPC EVENT FLAG IS SET.
3017 ; THIS OCCURS EVERY 10. SECONDS. EACH LP IS CHECKED TO SEE IF LP.HNG
3018 ; BIT HAS BEEN CLEARED BY ..DOLP (I/O COMPLETION) IF IT IS NOT
3019 ; IDLE. IF LP.HNG IS SET, NO I/O HAS OCCURED IN 10 SECONDS, SO
3020 ; 'GO' IS SET IN LPCSRA TO CONTINUE THE LP. LPHUNG IS INCREMENTED.
3021 ; IN ANY CASE, IF THE LP IS NOT IDLE, LP.HNG IS SET SO IT CAN BE
3022 ; CHECKED IN ANOTHER 10 SECONDS.
3023 ;
3024 ;-
3025 ;
3026 .ENABLE LSB
3027 007136 LPMKT:
3028 007136 032737 000002 000000G BIT #EF.LPC,LPCEVF ;IS MARK-TIME EVENT FLAG SET?
3029 007144 001503 BEQ 99$ ;NO-- CHECK NEXT FLAG
3030 007146 012705 000002 MOV #L$$P20,R5 ;SET UP # LP'S TO CHECK
3031 007152 012702 000000G MOV #LPTBL,R2 ;ADDRESS DATA BLOCK FOR UNIT 0
3032 007156 10$:
3033 007156 016203 000000G MOV LPCSA(R2),R3 ;GET EXTERNAL PAGE ADDR
3034 007162 001407 BEQ 12$ ;NON-EX LP-- SKIP THIS
3035 007164 000241 CLC ;CLEAR CARRY, IN CASE OF TRAP
3036 007166 032713 000100 BIT #INTENB,(R3) ;IS INTERRUPT-ENABLE STILL SET?
3037 007172 LPDINT:
3038 007172 103403 BCS 12$ ;TIME-OUT-- JUST SEND STATUS
3039 007174 001002 BNE 12$ ;YES-- DON'T SET IT
3040 007176 052713 000100 BIS #INTENB,(R3) ;MAKE SURE WE STILL HAVE INTERRUPT ENABLE
3041 007202 12$:
3042 007202 032712 004000 BIT #LP.WAT,(R2) ;WAITING?
3043 007206 001047 BNE 30$ ;YES-- DON7T TRY TO CONTINUE
3044 007210 005762 000000G TST LPTHD(R2) ;ANY ACTIVE REQUESTS?
3045 007214 001453 BEQ 90$ ;NONE-- LP IS IDLE
3046 007216 032712 100000 BIT #LP.HNG,(R2) ;NO I/O IN 10 SEC?
3047 007222 001446 BEQ 80$ ;NO-- I/O CLEARED THIS BIT-- OK
3048 007224 005762 000000G TST LPITH(R2) ;IS I/O SUPPOSED TO BE IN PROGRSS?
3049 007230 001436 BEQ 30$ ;NO-- SEE IF WE JUST CAME ON-LINE
3050 007232 005703 TST R3 ;DEVICE EXIST?
3051 007234 001434 BEQ 30$ ;NON-EX LP-- FLUSH OUTPUT
3052 007236 005237 000000G INC LPHUNG ;COUNT # TIMES WE HAD TO START LP G9OING
3053 007242 005362 000000G DEC LPRTY(R2) ;ONE LESS TIME TO TRY
3054 007246 002427 BLT 30$ ;NONE LEFT-- GIVE UP
3055 007250 .INH4 ;;;LOCK OUT LP INTERRUPTS
007250 013746 177776 MOV @#PS,-(SP)
007254 112737 000200 177776 MOVB #PR4,@#PS
3056 007262 105062 000000G CLRB LPCSM+0(R2) ;;;CLEAR LOW BYTE SO NO CARRY
3057 007266 066362 000016 000000G ADD LPCKSM-1(R3),LPCSM(R2) ;;;ACCUMULATE CHECKSUM (CLEARED BY GO)
3058 007274 005763 000006 TST LPBCTR(R3) ;;;DONE (BYTE COUNT=0)?
3059 007300 001403 BEQ 20$ ;;;YES-- DO NEXT BUFFER
3060 007302 052713 000103 BIS #INTENB+PARENB+GO,(R3) ;;;NO-- JUST SET INT ENB AND GO
3061 007306 000404 BR 29$ ;;;DO ANOTHER LP
3062 ;
3063 007310 20$:
3064 007310 016200 000000G MOV LPITH(R2),R0 ;;;GET CURRENT BUFFER ADDRESS
3065 007314 CALL ..DOL1 ;;;DONE-- DO NEXT BUFFER
007314 004737 011774' JSR PC,..DOL1
3066 007320 29$:
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 34-1
LPMKT (LP TASK MARK-TIME REQUEST)
3067 007320 .ENB4 ;ALLOW LP INTERRUPTS
007320 012637 177776 MOV (SP)+,@#PS
3068 007324 000405 BR 80$ ;DONE WITH LP
3069 ;
3070 007326 30$:
3071 007326 052712 040000 BIS #LP.SST,(R2) ;TIME TO SEND STATUS!!
3072 007332 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;YES-- START IT UP AGAIN
3073 007340 80$:
3074 007340 052712 100000 BIS #LP.HNG,(R2) ;SAY LP NO I/O
3075 ; THIS WILL BE CLEARED WHENEVER
3076 ; ANY I/O IS DONE TO LP
3077 007344 90$:
3078 007344 062702 000000G ADD #LPSIZE,R2 ;BUMP TO NEXT LP IN LPTBL
3079 007350 005305 DEC R5 ;TRY ALL
3080 007352 003301 BGT 10$ ; LP'S
3081 007354 99$:
3082 007354 000137 005730' JMP LPLOOP ;GO BACK TO WAITING
3083 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 35
SSTSLP (SEND LP-20 STATUS TO -10)
3085 .SBTTL SSTSLP (SEND LP-20 STATUS TO -10)
3086 ;
3087 ;+
3088 ;
3089 ; SSTSLP IS CALLED TO SEND THE LP-20 STATUS TO THE -10.
3090 ; IT IS INVOKED BY BOTH A REQUEST FOR STATUS FROM THE -10
3091 ; AND ANY LP-20 ERROR INDICATION, AS WELL AS PAGE COUNT ZERO
3092 ; (IF ENABLED) AND UNDEFINED CHARACTERS IN THE RAM.
3093 ;
3094 ; TWO DEVICE-STSTUS WORDS ARE GENERATED,
3095 ; WITH THE STANDARD BITS (DV.XXX) IN THE FIRST WORD, AND THE
3096 ; FOLLOWING DEVICE-DEPENDENT BITS IN THE SECOND WORD:
3097 ;
3098 ; DD.PGZ PAGE COUNTER REACHED ZERO
3099 ; DD.CHI UNDEFINED CHARACTER IN RAM
3100 ; DD.VFE VFU ERROR (IMPLIES PAPER RE-ALIGNMENT REQUIRED)
3101 ; DD.LER ERROR FINDING/READING VFU AND RAM FILE
3102 ; DD.OVF OPTICAL VERTICAL FORMAT UNIT
3103 ; DD.RME RAM PARITY ERROR-- RELOAD REQUIRED
3104 ;
3105 ; THE STATUS BLOCK SENT TO THE -10 IS IN THE FOLLOWING FORMAT:
3106 ;
3107 ; WORD 0 STATUS WORD 0 (DV.XXX)
3108 ; 1 STATUS WORD 1 (DD.XXX)
3109 ; 2 (HIGH BYTE) # BYTES OF DEVICE DEPENDENT INFO (ALWAYS 2.)
3110 ; (LOW BYTE) # BYTES OF DEVICE REGISTERS (ALWAYS 16.)
3111 ; 3 (LOW BYTE) ACCUMULATED CHECKSUM (HIGH BYTE) RETRY COUNT
3112 ; LP-20 DEVICE REGISTERS
3113 ; 4 LPCSRA
3114 ; 5 LPCSRB
3115 ; 6 LPBSAD
3116 ; 7 LPBCTR
3117 ; 10 LPPCTR
3118 ; 11 LPRAMD
3119 ; 12 LPCBUF/LPCCTR
3120 ; 13 LPTDAT/LPCKSM
3121 ;
3122 ; CALLED AT TASK LEVEL
3123 ;
3124 ; CALLING SEQUENCE:
3125 ; R2 -- POINTER TO LPTBL ENTRY FOR THIS LP
3126 ; R3 -- EXTERNAL PAGE ADDRESS FOR THIS LP
3127 ;
3128 ; EXIT CONDITIONS:
3129 ;
3130 ; NO REGISTERS MODIFIED
3131 ;
3132 ;-
3133 ;
3134 .ENABLE LSB
3135 007360 SSTSLP:
3136 007360 SAVE <R0,R1,R3,R4> ;SAVE USED CARS
007360 010046 MOV R0,-(SP)
007362 010146 MOV R1,-(SP)
007364 010346 MOV R3,-(SP)
007366 010446 MOV R4,-(SP)
3137 007370 042712 040000 BIC #LP.SST,(R2) ;CLEAR 'SEND STATUS' FLAG
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 35-1
SSTSLP (SEND LP-20 STATUS TO -10)
3138 007374 032777 000020 000000G 4$: BIT #EF.LPS,@LPEVFG ;IS OUR BUFFER AVAILABLE?
3139 007402 001006 BNE 5$ ;YES-- DON'T WAIT
3140 007404 WSIG$S ;NO-- WAIT FOR IT
007404 012746 MOV (PC)+,-(SP)
007406 061 001 .BYTE 49.,1
007410 104375 EMT 375
3141 007412 005737 000002G TST .COMEF+2 ; [4.1.1105] IS PRIMARY PROTOCOL RUNNING ?
3142 007416 100766 BMI 4$ ; [4.1.1105] YES-- STILL BUSY...
3143 007420 5$:
3144 007420 012700 000004G MOV #LPSTBK+4,R0 ;GET ADDRES OF BYTE COUNT WORD
3145 007424 005010 CLR (R0) ;CLEAR IT (ASSUME NON-EX DEV)
3146 007426 005040 CLR -(R0) ; AND SECOND WORD OF STATUS
3147 007430 005040 CLR -(R0) ;AND FIRST WORD, WITH R0 POINTING TO IT
3148 007432 005001 CLR R1 ;CLEAR ERROR MESSAGE POINTER, TOO
3149 007434 005703 TST R3 ;GOT A EPA?
3150 007436 001005 BNE 10$ ;GOT IT-- CHECK OUT LP STATUS
3151 007440 052710 000007 BIS #DV.NXD!DV.OIR!DV.OFL,(R0) ;NON-EX LP-- SAY SO
3152 007444 012701 010111' MOV #ERMNXD,R1 ;PRINT ERROR ON CONSOLE, TOO
3153 007450 000537 BR 50$ ;GO SEND THE ERROR
3154 ;
3155 007452 10$:
3156 007452 032712 000200 BIT #LP.EOF,(R2) ;THIS AN EOF ENCOUNTERED?
3157 007456 001402 BEQ 11$ ;NO-- GO ON
3158 007460 052710 000040 BIS #DV.EOF,(R0) ;YES-- SAY SO
3159 007464 11$:
3160 007464 032713 004000 BIT #ONLINE,(R3) ;LP OFF-LINE?
3161 007470 001004 BNE 12$ ;NO-- GO ON
3162 007472 052710 000006 BIS #DV.OFL!DV.OIR,(R0) ;YES-- SAY OFF-LINE
3163 007476 012701 010131' MOV #ERMOFL,R1 ; AND TO CONSOLE
3164 007502 12$:
3165 007502 032713 010000 BIT #VFURDY,(R3) ;VFU NOT READY?
3166 007506 001007 BNE 13$ ;NO-- OK
3167 007510 052760 000004 000002 BIS #DD.VFE,2(R0) ;YES-- SET SO IN DD WORD
3168 007516 012701 010144' MOV #ERMVFE,R1 ;TELL CONSOLE
3169 007522 052712 002000 BIS #LP.CLR,(R2) ;NOTE RAM NEEDS TO BE RESET
3170 007526 13$:
3171 007526 032763 000076 000002 BIT #LPTPAR+MEMPAR+RAMPAR+SYNTIM+DEMTIM,LPCSRB(R3) ;FATAL ERROR?
3172 007534 001404 BEQ 14$ ;NO-- ALL OK
3173 007536 052710 000100 BIS #DV.LOG,(R0) ;YES-- SAY BAD ERROR, AND ERROR-LOG IT
3174 007542 012701 010163' MOV #ERMHER,R1 ;SAY SPLAT TO CONSOLE
3175 007546 14$:
3176 007546 016204 000000G MOV LPTHD(R2),R4 ;IS I/O LEFT TO DO?
3177 007552 001002 BNE 141$ ;YES-- SAY SO
3178 007554 005001 CLR R1 ;NO-- DON'T SEND OFF-LINE/VFE
3179 007556 000436 BR 15$ ;GO ON
3180 ;
3181 007560 141$:
3182 007560 052710 000020 BIS #DV.IOP,(R0) ;SAY I/O IN PROGRESS
3183 007564 005764 000000G TST T.HBCT(R4) ;IS THIS A QUEUE I/O REQUEST?
3184 007570 001002 BNE 142$ ;NO-- GO ON
3185 007572 052710 000400 BIS #DV.F11,(R0) ;YES-- SAY FROM -11
3186 007576 142$:
3187 007576 005762 000000G TST LPRTY(R2) ;IS RETRY COUNT DOWN YET?
3188 007602 002024 BGE 15$ ;NO-- GO ON
3189 007604 052710 000300 BIS #DV.URE!DV.LOG,(R0) ;SAY RETRY COUNT EXHAUSTED
3190 007610 032712 100000 BIT #LP.HNG,(R2) ;WAS DEVICE HUNG, TOO?
3191 007614 001404 BEQ 143$ ;NO-- GO ON
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 35-2
SSTSLP (SEND LP-20 STATUS TO -10)
3192 007616 052710 001004 BIS #DV.HNG!DV.OIR,(R0) ;YES-- SAY THAT TOO
3193 007622 012701 010200' MOV #ERMHNG,R1 ;GET HUNG MESSAGE, TOO
3194 007626 143$:
3195 007626 032763 000010 000002 BIT #RAMPAR,LPCSRB(R3) ;RAM PARITY ERROR?
3196 007634 001405 BEQ 144$ ;NO-- GO ON
3197 007636 052760 000040 000002 BIS #DD.RME,2(R0) ;YES-- NOTE FATAL ERROR
3198 007644 052712 002000 BIS #LP.CLR,(R2) ;NOTE RAM NEEDS TO BE RESET
3199 007650 144$:
3200 007650 CALL ..SPLP ;RETRY COUNT EXHAUSTED-- GIVE UP OUTPUT
007650 004737 011414' JSR PC,..SPLP
3201 007654 15$:
3202 007654 032713 040000 BIT #PAGZRO,(R3) ;PAGE-COUNT ZERO?
3203 007660 001412 BEQ 16$ ;NO-- OK
3204 007662 032712 020000 BIT #LP.PZI,(R2) ;YES-- BUT ENABLED?
3205 007666 001407 BEQ 16$ ;NO-- DON'T TELL HIM
3206 007670 052710 000010 BIS #DV.SCN,(R0) ;TELL -10 WE WANT HIM TO ACK
3207 007674 052760 000001 000002 BIS #DD.PGZ,2(R0) ; FOR PAGE-ZERO
3208 007702 052712 004000 BIS #LP.WAT,(R2) ;REMEMBER TO WAIT
3209 007706 16$:
3210 007706 032713 020000 BIT #CHRINT,(R3) ;UNDEFINED (INTERRUPT) CHARACTER?
3211 007712 001407 BEQ 17$ ;NO-- GO ON
3212 007714 052710 000010 BIS #DV.SCN,(R0) ;NOTE TO WAIT
3213 007720 052760 000002 000002 BIS #DD.CHI,2(R0) ; FOR UNDEF CHAR
3214 007726 052712 004000 BIS #LP.WAT,(R2) ; AND FOR US TO WAIT
3215 007732 17$:
3216 007732 032763 004000 000002 BIT #OPTVFU,LPCSRB(R3) ;THIS LP HAVE OPTICAL VFU?
3217 007740 001403 BEQ 18$ ;NO-- MUST HAVE DAVFU (HOORAY)
3218 007742 052760 000020 000002 BIS #DD.OVF,2(R0) ;YES-- SAY SO
3219 007750 18$:
3220 ;
3221 ; ERROR CODE NOW IN LPSTBK+0 AND LPSTBK+2
3222 ;
3223 007750 50$:
3224 007750 032712 000400 BIT #LP.F10,(R2) ;THIS A FROM-10 REQUEST?
3225 007754 001115 BNE 70$ ;YES-- DON'T PRINT ON CONSOLE
3226 ;
3227 ; NON-10 REQUEST-- SEND CONSOLE A MESSAGE ABOUT OUR STATUS
3228 ;
3229 007756 042712 004000 BIC #LP.WAT,(R2) ;DON'T WAIT FOR NON-10 REQUEST
3230 007762 005701 TST R1 ;TELL OPR?
3231 007764 001511 BEQ 70$ ;NO-- JUST SEND TO -10 ANYWAY
3232 007766 012700 010071' MOV #LPEMSX,R0 ;GET ADDRESS OF END OF MESSAGE SO FAR
3233 007772 51$:
3234 007772 112120 MOVB (R1)+,(R0)+ ;COPY A BYTE OF THE MESSAGE
3235 007774 001376 BNE 51$ ; UNTIL ASCIZZZZZZZZ
3236 007776 162700 010056' SUB #LPEMSG,R0 ;GET LENGTH OF MESSAGE
3237 010002 010037 010052' MOV R0,LPQDPB+Q.IOPL+2 ;SET LENGTH IN QIOW$ DPB
3238 010006 011201 MOV (R2),R1 ;GET UNIT
3239 010010 042701 177774 BIC #^C<LP.UNT>,R1 ; NUMBER OF THIS LP
3240 010014 062701 000060 ADD #'0,R1 ;MAKE IT ASCII
3241 010020 110137 010066' MOVB R1,LPERUN ;SAVE IN MESSAGE STRING
3242 010024 DIR$ #LPQDPB ;DO QUEUE I/O TO CTY
010024 012746 010034' MOV #LPQDPB,-(SP)
010030 104375 EMT 375
3243 010032 000466 BR 70$ ;SEE IF WE CAN CONTINUE
3244 ;
3245 010034 LPQDPB:
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 35-3
SSTSLP (SEND LP-20 STATUS TO -10)
3246 010034 QIOW$ IO.WLB,1,E.FLPQ,1,0,0,<LPEMSG,0,0>
010034 003 011 .BYTE 3,$$$ARG
010036 000400 .WORD IO.WLB
010040 000001 .WORD 1
010042 003 001 .BYTE E.FLPQ,1
010044 000000 .WORD 0
010046 000000 .WORD 0
010050 010056' .WORD LPEMSG
010052 000000 .WORD 0
010054 000000 .WORD 0
3247 010056 LPEMSG:
3248 010056 015 012 052 .ASCII <15><12>/*** LP/
010061 052 052 040
010064 114 120
3249 010066 LPERUN:
3250 010066 060 072 040 .ASCII /0: /
3251 010071 LPEMSX:
3252 010071 .BLKB 16. ;REST OF MESSAGE: MAX OF 16 BYTES
3253 010111 ERMNXD:
3254 010111 116 117 116 .ASCIZ /NON-EX DEVICE/<15><12>
010114 055 105 130
010117 040 104 105
010122 126 111 103
010125 105 015 012
010130 000
3255 010131 ERMOFL:
3256 010131 117 106 106 .ASCIZ /OFF-LINE/<15><12>
010134 055 114 111
010137 116 105 015
010142 012 000
3257 010144 ERMVFE:
3258 010144 106 117 122 .ASCIZ /FORMAT ERROR/<15><12>
010147 115 101 124
010152 040 105 122
010155 122 117 122
010160 015 012 000
3259 010163 ERMHER:
3260 010163 104 101 124 .ASCIZ /DATA ERROR/<15><12>
010166 101 040 105
010171 122 122 117
010174 122 015 012
010177 000
3261 010200 ERMHNG:
3262 010200 110 125 116 .ASCIZ /HUNG/<15><12>
010203 107 015 012
010206 000
3263 .EVEN
3264 ;
3265 ; HERE WE SEND THE STATUS BLOCK TO THE -10, R1= STATE CODE
3266 ;
3267 ;
3268 ; ASSEMBLE DEVICE INFO AND DEVICE REGISTERS
3269 ;
3270 010210 70$:
3271 010210 005703 TST R3 ;NON-EX DEVICE?
3272 010212 001417 BEQ 72$ ;YES-- DON'T STORE NON-EX DEVICE REGISTERS
3273 010214 012700 000004G MOV #LPSTBK+4,R0 ;POINT TO STATUS RETURN BLOCK
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 35-4
SSTSLP (SEND LP-20 STATUS TO -10)
3274 010220 012720 000000C MOV #<2.*BIT8>+<LPEXPZ*BIT0>,(R0)+ ;2 BYTES INFO, + DEV REG'S
3275 010224 116220 000001G MOVB LPCSM+1(R2),(R0)+ ;CHECKSUM
3276 010230 012701 000012 MOV #LPRTRY,R1 ;GET INITIAL RETRY COUNT
3277 010234 166201 000000G SUB LPRTY(R2),R1 ; - CURRENT COUNT= # RETRIES
3278 010240 110120 MOVB R1,(R0)+ ;HIGH BYTE-- # RETRIES
3279 010242 71$:
3280 010242 012320 MOV (R3)+,(R0)+ ;(2) ... LP DEVICE REGISTERS
3281 010244 022700 000000C CMP #LPSTBK+LPSTLN,R0 ;DONE YET?
3282 010250 101374 BHI 71$ ;NO-- KEEP ON LOOPING
3283 ;
3284 ; SET UP REGISTERS FOR ..STIN:
3285 ; R0 -- ADDRESS OF BLOCK (FIRST WORD IS UNIT/BYTE COUNT)
3286 ; R1 -- FUNCTION CODE + BIT15 (FOR INDIRECT FUNCTION)
3287 ; R2 -- EVENT FLAG NUMBER TO BE SET WHEN BLOCK SENT
3288 ; R3 -- DEVICE CODE (D.CLPT FOR THE LP-20)
3289 ;
3290 010252 72$:
3291 010252 012700 000000G MOV #LPSTBK,R0 ;SET UP ADDR FOR ..STIN
3292 010256 011201 MOV (R2),R1 ;GET UNIT NUMBER
3293 010260 042701 177774 BIC #^C<LP.UNT>,R1 ; FROM LPSTS
3294 010264 110140 MOVB R1,-(R0) ;HIGH BYTE HEADER: UNIT #
3295 010266 112740 000002G MOVB #LPSTLN+2,-(R0) ;LOW BYTE HEADER: SIZE OF BLOCK
3296 010272 012701 100000G MOV #BIT15+BC.HDS,R1 ;INDIRECT FUNCTION HERE IS DEVICE STATUS
3297 010276 PUSH R2 ;SAVE LPTBL POINTER
010276 010246 MOV R2,-(SP)
3298 010300 012702 000005 MOV #E.FLPS,R2 ;EVENT FLAG NUMBER
3299 010304 012703 000000G MOV #D.CLPT,R3 ;DEVICE LP
3300 010310 042777 000020 000000G BIC #EF.LPS,@LPEVFG ;CLEAR BUFFER AVAILABLE FLAG
3301 010316 CALL ..STIN ;SAVE FOR NOW
010316 004737 000000G JSR PC,..STIN
3302 010322 POP R2 ;RESTORE LPTBL POINTER
010322 012602 MOV (SP)+,R2
3303 010324 103010 BCC 80$ ;FINISH UP
3304 ;
3305 ; ..STIN GAVE ERROR-- MUST SEND STATUS AGAIN LATER
3306 ;
3307 010326 75$:
3308 010326 052777 000020 000000G BIS #EF.LPS,@LPEVFG ;NOTE BUFFER STILL REALLY AVAILABLE
3309 010334 032712 000400 BIT #LP.F10,(R2) ;THIS A FROM-10 REQUEST
3310 010340 001402 BEQ 80$ ;NO-- IGNORE THE ERROR
3311 010342 052712 040000 BIS #LP.SST,(R2) ;YES-- SEND STATUS AGAIN LATER
3312 ;
3313 ; FINISH UP
3314 ;
3315 010346 80$:
3316 010346 RESTORE ; AND REGISTERS
010346 012604 MOV (SP)+,R4
010350 012603 MOV (SP)+,R3
010352 012601 MOV (SP)+,R1
010354 012600 MOV (SP)+,R0
3317 010356 RETURN ;RETURN FROM SSTSLP
010356 000207 RTS PC
3318 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 36
TESTLP (START LP-20 GOING ON THREADED LIST)
3320 .SBTTL TESTLP (START LP-20 GOING ON THREADED LIST)
3321 ;
3322 ;+
3323 ; TESTLP IS CALLED TO START THE LP-20 ON A THREADED LIST.
3324 ; THE THREAD MUST BE SET UP, WITH THE POINTER BOTH IN R0 AND LPTHD.
3325 ;
3326 ; CALLED FROM TASK LEVEL
3327 ;
3328 ; CALLING SEQUENCE:
3329 ; R0 -- THREAD POINTER (ALSO IN LPTHD)
3330 ; R2 -- LPTBL ENTRY FOR THIS LP
3331 ;
3332 ; EXIT CONDITIONS:
3333 ; R0 -- CURRENT OUTPUT THREAD POINTER
3334 ; R3 -- EXTERNAL PAGE ADDRESS OF THIS LP
3335 ;
3336 ;-
3337 ;
3338 010360 TESTLP:
3339 010360 032713 004000 BIT #ONLINE,(R3) ;OFF-LINE?
3340 010364 001470 BEQ 90$ ;YES-- DO NOTHING
3341 ;
3342 010366 032777 000040 000000G BIT #EF.LPW,@LPEVFG ;SHOULD WE WAIT FOR LP-20?
3343 010374 001011 BNE 10$ ;NO-- GO ON
3344 ;
3345 ; MUST WAIT FOR 1-SEC FOR LP-20 TO SETTLE AFTER DOING AN ABORT TRANSFER
3346 ;
3347 010376 DIR$ #MKSCDP ;SET MARK TIME REQUEST
010376 012746 005566' MOV #MKSCDP,-(SP)
010402 104375 EMT 375
3348 010404 103405 BCS 10$ ;OH, WELL ...
3349 010406 WTSE$S #E.FLPW ;WAIT FOR THE FLAG
010406 012746 000006 MOV #E.FLPW,-(SP)
010412 012746 MOV (PC)+,-(SP)
010414 051 002 .BYTE 41.,2
010416 104375 EMT 375
3350 010420 10$:
3351 010420 032712 002000 BIT #LP.CLR,(R2) ;TIME TO CLEAR THE RAM?
3352 010424 001414 BEQ 30$ ;NO-- JUST GO ON
3353 010426 042712 002000 BIC #LP.CLR,(R2) ;RESET THE FLAG
3354 010432 032712 001000 BIT #LP.LIP,(R2) ;BUT RAM LOAD NOW IN PROGRESS??
3355 010436 001007 BNE 30$ ;YES-- DON'T GO RESET IT
3356 ;
3357 ; RAM MUST BE CLEARED, SINCE WE GOT A RAMPAR/VFU ERROR
3358 ;
3359 010440 105063 000014 CLRB LPCBUF(R3) ;CLEAR RAM ADDRESS REGISTER
3360 010444 20$:
3361 010444 005063 000012 CLR LPRAMD(R3) ;CLEAR A RAM WORD
3362 010450 105263 000014 INCB LPCBUF(R3) ;BUMP TO NEXT RAM ADDRESS
3363 010454 001373 BNE 20$ ;NOT DONE-- GO ON TO NEXT WORD
3364 ;
3365 ; TIME TO START LP GOING
3366 ;
3367 010456 30$:
3368 010456 032712 000200 BIT #LP.EOF,(R2) ;WE AT EOF TIME?
3369 010462 001404 BEQ 32$ ;NO-- GO ON
3370 010464 042712 000200 BIC #LP.EOF,(R2) ;YES-- NO LONGER EOF
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 36-1
TESTLP (START LP-20 GOING ON THREADED LIST)
3371 010470 005062 000000G CLR LPCSM(R2) ;RESET CHECKSUM AT EOF
3372 010474 32$:
3373 010474 032713 040000 BIT #PAGZRO,(R3) ;PAGZRO SET?
3374 010500 001403 BEQ 34$ ;NO-- GO ON
3375 010502 016363 000010 000010 MOV LPPCTR(R3),LPPCTR(R3) ;YES-- RESET PAGZRO
3376 010510 34$:
3377 010510 005713 TST (R3) ;ERROR SET?
3378 010512 100002 BPL 40$ ;NO-- GO ON
3379 010514 052713 001102 BIS #RSTERR+INTENB+PARENB,(R3) ;YES-- RESET IT
3380 010520 40$:
3381 010520 PUSH R0 ;SAVE THREAD POINTER
010520 010046 MOV R0,-(SP)
3382 010522 .INH4 ;;; PREVENT LP INTERRUPTS
010522 013746 177776 MOV @#PS,-(SP)
010526 112737 000200 177776 MOVB #PR4,@#PS
3383 010534 CALL ..DOLP ;;;START LP GOING ON THE LIST
010534 004737 012010' JSR PC,..DOLP
3384 010540 .ENB4 ;;;DONE
010540 012637 177776 MOV (SP)+,@#PS
3385 010544 POP R0 ;RESTORE LPTHD POINTER
010544 012600 MOV (SP)+,R0
3386 ;
3387 ; ALL DONE
3388 ;
3389 010546 90$:
3390 010546 RETURN ;RETURN FROM TESTLP
010546 000207 RTS PC
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 37
INITLP (INITALIZE ALL LP'S)
3392 .SBTTL INITLP (INITALIZE ALL LP'S)
3393 ;
3394 ;+
3395 ; INITLP IS CALLED DURING INITIALIZATION AND ALSO ON POWER
3396 ; RECOVERY.
3397 ;
3398 ; EACH LP IS RESET, AND LP.LDF IS SET TO LOAD THE CURRENT RAM
3399 ; AND VF. LPCSA IS CLEARED FOR NON-EX LP'S
3400 ;
3401 ;-
3402 ;
3403 .ENABLE LSB
3404 010550 INITLP::
3405 010550 SAVE <R2,R3,R5> ;SAVE OUR PRECIOUS REGISTERS
010550 010246 MOV R2,-(SP)
010552 010346 MOV R3,-(SP)
010554 010546 MOV R5,-(SP)
3406 010556 012705 000002 MOV #L$$P20,R5 ;GET # LP'S WE HAVE
3407 010562 012702 000000G MOV #LPTBL,R2 ;ADDRESS LPTBL ENTRY FOR UNIT 0
3408 010566 10$:
3409 010566 011203 MOV (R2),R3 ;GET THE
3410 010570 042703 177774 BIC #^C<LP.UNT>,R3 ; UNIT #
3411 010574 006303 ASL R3 ; *2
3412 010576 006303 ASL R3 ; *4
3413 010600 006303 ASL R3 ; *8
3414 010602 006303 ASL R3 ; *16 BYTES PER UNIT
3415 010604 062703 000000G ADD #LPEXPA,R3 ;GET EXTERNAL PAGE ADDRESS FOR THIS LP
3416 010610 010362 000000G MOV R3,LPCSA(R2) ;SAVE THIS ADDRESS
3417 010614 012713 001102 MOV #RSTERR+INTENB+PARENB,(R3) ;CLEAR LP
3418 010620 LPDCLR:
3419 010620 005062 000000G CLR LPITH(R2) ;CLEAR INT-LEVEL POINTER TO THREADED LIST
3420 010624 90$:
3421 010624 062702 000000G ADD #LPSIZE,R2 ;BUMP TO NEXT LP'S ENTRY
3422 010630 077522 SOB R5,10$ ;LOOP FOR ALL LP'S
3423
3424 010632 052777 000002 000000G BIS #EF.LPC,@LPEVFG ;FORCE A HUNG CHECK NOW
3425 010640 RESTORE ; THE REGISTERS TO THEIR RIGHTFUL (PITIFUL) CONDITION
010640 012605 MOV (SP)+,R5
010642 012603 MOV (SP)+,R3
010644 012602 MOV (SP)+,R2
3426 010646 RETURN ;RETURN FROM INITLP
010646 000207 RTS PC
3427 ;
3428 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 38
INITLP (INITALIZE ALL LP'S)
3430
3431 .SBTTL LP-20 INTERRUPT SERVICE MODULE
3432 ;
3433 ; COPYRIGHT (C) 1975, 1984, 1985 BY
3434 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
3435 ; ALL RIGHTS RESERVED.
3436 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
3437 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
3438 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
3439 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
3440 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
3441 ;
3442 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
3443 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
3444 ; CORPORATION.
3445 ;
3446 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
3447 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
3448 ;
3449 ; MODULE: LP-20 INTERRUPT SERVICE
3450 ;
3451 ; VERSION: 01-01
3452 ;
3453 ; AUTHOR: TOM PORCHER
3454 ;
3455 ; DATE: 6-JUN-75
3456 ;
3457 ;
3458 ; THIS MODULE CONTAINS:
3459 ;
3460 ; 1) $LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
3461 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 39
$LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
3463 .SBTTL $LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
3464 ;
3465 ;+
3466 ;
3467 ; $LPINT IS CALLED FROM THE INTERRUPT VECTOR FOR
3468 ; ANY OF THE LP-20'S. THE UNIT NUMBER IS SAVED IN THE LOW-ORDER
3469 ; BITS (THE CC'S) OF THE PS IN THE TRAP VECTOR.
3470 ;
3471 ; WHEN A DONE INTERRUPT OCCURS, THE NEXT BUFFER IS STARTED,
3472 ; UNLESS THIS IS A MULTI-CHARACTER OPERATION (IE. 'ARROW' MODE), IN
3473 ; WHICH CASE THE CURRENT BUFFER IS CONTINUED.
3474 ;
3475 ; IF CHRINT (UNDEFINED CHARACTER -- INT BIT SET IN RAM) OCCURS,
3476 ; THE RAM DATA IS EXAMINED. IF IT IS '^', THE CHARACTER + 100,
3477 ; PRECEDED BY '^', IS PRINTED, ELSE OUTPUT IS
3478 ; STOPPED AND THE STATUS SENT TO THE -10 (INTERRUPT).
3479 ;
3480 ; IF PAGZRO (PAGE COUNT REACHED ZERO) OCCURS AND THE LP.PZI
3481 ; (PAGE ZERO INTERRUPT) FLAG IN LPSTS (SET BY RAM/VF LOAD FILE) IS
3482 ; SET, OUTPUT IS STOPPED AND THE STATUS IS SENT TO THE -10. OTHERWISE,
3483 ; OUTPUT IS MERELY RESUMED AND PAGZRO IGNORED.
3484 ;
3485 ; IF THE LP COMES ON-LINE, WHILE WAITING FOR OFF-LINE,
3486 ; OUTPUT IS RESUMED, AND THE NEW STATUS IS SENT TO THE -10.
3487 ;
3488 ;-
3489 ;
3490 010650 $LPINT::
3491 010650 013737 177776 000000G MOV @#PS,LPUNIT ;;;SAVE UNIT #
3492 010656 SAVE <R0,R2,R3> ;;;SAVE REGISTERS
010656 010046 MOV R0,-(SP)
010660 010246 MOV R2,-(SP)
010662 010346 MOV R3,-(SP)
3493 010664 013702 000000G MOV LPUNIT,R2 ;;;GET UNIT # BACK
3494 010670 006302 ASL R2 ;;;MAKE IT WORDS
3495 010672 042702 177774 BIC #^C<LP.UNT>,R2 ;;;CLEAR GARBAGE BITS
3496 010676 016202 000000G MOV LPUTBL(R2),R2 ;;;GET ADDR OF DEVICE STATUS BLOCK FOR THIS LP
3497 010702 016203 000000G MOV LPCSA(R2),R3 ;;;GET EXT PAGE ADDR FOR CURRENT LP
3498 010706 016200 000000G MOV LPITH(R2),R0 ;;;GET CURRENT THREAD BLOCK ADDR
3499 010712 001520 BEQ 80$ ;;;IDLE-- JUST SEND DEVICE STATUS
3500 ;
3501 ; LP NOT IDLE-- SEE IF ERROR, PAGZRO, CHRINT, OR DONE
3502 ;
3503 010714 105062 000000G CLRB LPCSM+0(R2) ;;;INSURE NO CARRY
3504 010720 066362 000016 000000G ADD LPCKSM-1(R3),LPCSM(R2) ;;;ACCUMULATE CHECKSUM
3505 010726 032713 160000 BIT #ERR+PAGZRO+CHRINT,(R3) ;;;ERROR, PAGZRO, OR CHRINT?
3506 010732 001014 BNE 30$ ;;;YES-- STOP I/O AND PROCESS
3507 010734 005763 000006 TST LPBCTR(R3) ;;;DONE (BYTE COUNT=0)?
3508 010740 001003 BNE 20$ ;;;NO-- JUST KEEP IT GOING
3509 010742 CALL ..DOL1 ;;;YES-- START NEXT BUFFER
010742 004737 011774' JSR PC,..DOL1
3510 010746 000511 BR 90$ ;;;EXIT FROM IRP
3511 ;
3512 010750 20$:
3513 010750 005362 000000G DEC LPRTY(R2) ;;;DECREMENT RETRY COUNT
3514 010754 002403 BLT 30$ ;;;RAN OUT-- CHECK FOR A BIT SET, OR ASSUME ERROR
3515 010756 052713 000103 BIS #INTENB+PARENB+GO,(R3) ;;;MAKE SURE LP IS STILL GO-ING
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 39-1
$LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
3516 010762 000503 BR 90$ ;;;AND EXIT
3517 ;
3518 ; ERROR, PAGZRO, OR CHRINT-- SAVE BYTE COUNT AND ADDRESS
3519 ; STOP I/O AND WAIT FOR CONTINUE
3520 ;
3521 010764 30$:
3522 010764 032712 010000 BIT #LP.MCH,(R2) ;;;MULTI-CHAR PRINT OPERATION?
3523 010770 001044 BNE 40$ ;;;YES-- DON'T SAVE BYTE COUNT AND ADDRESS
3524 010772 005463 000006 NEG LPBCTR(R3) ;;;GET # BYTES LEFT TO TRANSMIT
3525 010776 016360 000006 000000G MOV LPBCTR(R3),T.HCBC(R0) ;;; INTO THREAD BLOCK TO CONTINUE
3526 011004 016360 000004 000000G MOV LPBSAD(R3),T.HCAD(R0) ;;;ALSO CURRENT ADDRESS
3527 011012 032713 020000 BIT #CHRINT,(R3) ;;;THIS CHRINT INTERRUPT?
3528 011016 001431 BEQ 40$ ;;;NO-- SEE IF PAGZRO
3529 011020 PUSH R2 ;;;SAVE THE ADDRESS OF LPTBL
011020 010246 MOV R2,-(SP)
3530 011022 062702 000000G ADD #LPMCB,R2 ;;;POINT TO THE MULTI-CHAR BUFFER
3531 011026 010263 000004 MOV R2,LPBSAD(R3) ;;;POINT THE LP20 TO THAT BUFFER
3532 011032 116312 000012 MOVB LPRAMD+0(R3),(R2) ;;;GET RAM DATA CHARACTER
3533 011036 122722 000136 CMPB #'^,(R2)+ ;;;ARROW MODE?
3534 011042 001015 BNE 39$ ;;;NO-- INTERRUPT -10
3535 011044 116312 000014 MOVB LPCBUF(R3),(R2) ;;;YES-- GET THE CAUSING CHARACTER
3536 011050 152712 000100 BISB #100,(R2) ;;;MAKE IT ALPHABETIC
3537 011054 POP R2 ;;;RESTORE LPTBL
011054 012602 MOV (SP)+,R2
3538 011056 052712 010000 BIS #LP.MCH,(R2) ;;;SAY WE ARE DOING MULTI-CHARACTER
3539 011062 012763 177776 000006 MOV #-2,LPBCTR(R3) ;;;SET BYTE COUNT TO TWO CHARACTERS
3540 011070 012713 000103 MOV #PARENB+INTENB+GO,(R3) ;;;START IT GOING ON THESE TWO CHARS
3541 011074 000436 BR 90$ ;;;WAIT FOR DONE
3542 ;
3543 011076 39$: POP R2 ;;;INTERRUPT-- RESTORE LPTBL POINTER
011076 012602 MOV (SP)+,R2
3544 011100 000423 BR 70$ ;;; AND TELL -10
3545 ;
3546 ; ERROR OR PAGZRO
3547 ;
3548 011102 40$:
3549 011102 032713 040000 BIT #PAGZRO,(R3) ;;;PAGZRO?
3550 011106 001411 BEQ 60$ ;;;NO-- MUST BE ERROR
3551 011110 032712 020000 BIT #LP.PZI,(R2) ;;;YES-- IS PAGE ZERO INTERRUPT ENABLED?
3552 011114 001015 BNE 70$ ;;;YES-- INTERRUPT AND WAIT
3553 011116 016363 000010 000010 MOV LPPCTR(R3),LPPCTR(R3) ;;;NO-- RESET PAGZRO
3554 011124 CALL ..DOLP ;;;NO-- JUST CONTINUE
011124 004737 012010' JSR PC,..DOLP
3555 011130 000420 BR 90$ ;;;DONE WITH PAGZRO
3556 ;
3557 ; ERROR-- DECREMENT RETRY COUNT IF ANYTHING BUT OFF-LINE
3558 ;
3559 011132 60$:
3560 011132 032763 000177 000002 BIT #VFUERR+LPTPAR+MEMPAR+RAMPAR+SYNTIM+DEMTIM+GOERR,LPCSRB(R3)
3561 011140 001403 BEQ 70$ ;;;NO ERRORS-- JUST SEND STATUS
3562 011142 012762 177777 000000G MOV #-1,LPRTY(R2) ;;; ABOVE ERRORS ARE NOT RECOVERABLE
3563 ;
3564 ; STOP I/O AND SEND STATUS TO -10
3565 ;
3566 011150 70$:
3567 011150 005062 000000G CLR LPITH(R2) ;;;SAY I/O STOPPED
3568 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 39-2
$LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
3569 ; SEND STATUS TO -10
3570 ;
3571 011154 80$:
3572 011154 052712 040000 BIS #LP.SST,(R2) ;;;SAY SEND STATUS TO TASK
3573 011160 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;;;SAY SOMETHING TO DO
3574 011166 CALL ..DSEV ;;;SAY SIGNIFICANT EVENT
011166 004737 000000G JSR PC,..DSEV
3575 ;
3576 ; ALL DONE WITH INTERRUPT
3577 ;
3578 011172 90$:
3579 011172 RESTORE ;;; SAVED REGISTERS
011172 012603 MOV (SP)+,R3
011174 012602 MOV (SP)+,R2
011176 012600 MOV (SP)+,R0
3580 011200 000137 000000G JMP ..INTX ;;;RETURN FROM LP INTERRUPT
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 40
$LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
3582
3583 .SBTTL LP-20 COMMON SUBROUTINES MODULE
3584 ;
3585 ; COPYRIGHT (C) 1975, 1984, 1985 BY
3586 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
3587 ; ALL RIGHTS RESERVED.
3588 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
3589 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
3590 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
3591 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
3592 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
3593 ;
3594 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
3595 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
3596 ; CORPORATION.
3597 ;
3598 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
3599 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
3600 ;
3601 ; MODULE: LP-20 COMMON SUBROUTINES
3602 ;
3603 ; VERSION: 01-00
3604 ;
3605 ; AUTHOR: TOM PORCHER
3606 ;
3607 ; DATE: 7-JUN-75
3608 ;
3609 ;
3610 ; THIS MODULE CONTAINS:
3611 ;
3612 ; 1) ..STLP (START LP-20 OUTPUT)
3613 ;
3614 ; 2) ..SPLP (STOP LP-20 OUTPUT)
3615 ;
3616 ; 3) ..AKLP (ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)
3617 ;
3618 ; 4) ..PTLP (PUT BLOCK IN THREADED OUTPUT LIST)
3619 ;
3620 ; 5) ..DOLP (INITIATE LP-20 TRANSFER)
3621 ;
3622 .SBTTL ..STLP (START LP-20 OUTPUT)
3623 ;
3624 ;+
3625 ;
3626 ; ..STLP IS CALLED ONLY FROM THE QUEUED PROTOCOL
3627 ; TASK TO PERFORM A FUNCTION ON THE SPECIFIED LP. THE
3628 ; FOLLOWING FUNCTIONS ARE RECOGNIZED HERE (FUNCTION CODE
3629 ; IN HIGH BYTE OF T.HCBC OF THREAD BLOCK):
3630 ; BC.STR STRING DATA
3631 ; BC.RDS RETURN DEVICE STATUS
3632 ; BC.HDS HERE IS DEVICE STATUS
3633 ; BC.SDS SPECIAL DEVICE OPERATION, FIRST WORD IS FUNCTION:
3634 ; 1 -- SET PAGE COUNTER
3635 ; BC.LDR LOAD TRANSLATION RAM
3636 ; BC.LDV LOAD VERTICAL FORMAT
3637 ;
3638 ; CALLED FROM TASK LEVEL
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 40-1
..STLP (START LP-20 OUTPUT)
3639 ;
3640 ; CALLING SEQUENCE:
3641 ; R0 -- ADDRESS OF THREAD BLOCK TO PROCESS
3642 ; R2 -- ADDRESS OF LPTBL ENTRY FOR THIS LP
3643 ;
3644 ; EXIT CONDITIONS:
3645 ;
3646 ; NO REGISTERS MODIFIED
3647 ;
3648 ;-
3649 ;
3650 .ENABLE LSB
3651 011204 ..STLP::
3652 011204 SAVE <R1,R3,R4>
011204 010146 MOV R1,-(SP)
011206 010346 MOV R3,-(SP)
011210 010446 MOV R4,-(SP)
3653 011212 022702 000000C CMP #LPTBL+<L$$P20*LPSIZE>,R2 ;THIS ONE OF US?
3654 011216 101434 BLOS 30$ ;NO-- JUST SLIP AWAY
3655 011220 052712 000400 BIS #LP.F10,(R2) ;NOTE THAT THIS IS A FROM-10 REQUEST
3656 011224 116004 000001G MOVB T.HCBC+1(R0),R4 ;GET FUNCTION CODE
3657 011230 105060 000001G CLRB T.HCBC+1(R0) ; AND CLEAR IT
3658 011234 012703 011254' MOV #BCFTAB,R3 ;POINT TO FUNCTION DISPATCH TABLE
3659 011240 10$:
3660 011240 112301 MOVB (R3)+,R1 ;GET A DISPATCH ADDRESS
3661 011242 001413 BEQ BCFILF ;END-- ASSUME RETURN DEVICE STATUS
3662 011244 122304 CMPB (R3)+,R4 ;MATCH FUNCTION?
3663 011246 001374 BNE 10$ ;NO-- LOOP TILL WE FIND FUNCTION
3664 011250 000161 011254' JMP BCFTAB(R1) ;PERFORM FUNCTION
3665 ;
3666 011254 BCFTAB:
3667 011254 124 000G .BYTE BCFSTR-BCFTAB,BC.STR
3668 011256 016 000G .BYTE BCFRDS-BCFTAB,BC.RDS
3669 011260 062 000G .BYTE BCFHDS-BCFTAB,BC.HDS
3670 011262 042 000G .BYTE BCFSDO-BCFTAB,BC.SDS
3671 011264 102 000G .BYTE BCFLDR-BCFTAB,BC.LDR
3672 011266 110 000G .BYTE BCFLDV-BCFTAB,BC.LDV
3673 011270 000 .BYTE 0
3674 .EVEN
3675 ;
3676 ; ILLEGAL FUNCTION
3677 ;
3678 011272 BCFILF:
3679 ; BR BCFRDS ;ILLEGAL FUNCTION-- JUST SEND STATUS FOR NOW
3680 ;
3681 ; RETURN DEVICE STATUS
3682 ;
3683 011272 BCFRDS:
3684 011272 052712 040000 BIS #LP.SST,(R2) ;NOTE TO SEND STATUS NOW
3685 011276 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;TELLL LP TASK TO DO SOMETHING
3686 011304 CALL ..DSEV ;MAKE A SIGNIFICANT EVENT HAPPEN
011304 004737 000000G JSR PC,..DSEV
3687 ;
3688 ; THREAD BLOCK DONE-- DEALLOCATE
3689 ;
3690 011310 30$:
3691 011310 CALL ..DECN ;DEALLOCATE THREAD BLOCK
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 40-2
..STLP (START LP-20 OUTPUT)
011310 004737 000000G JSR PC,..DECN
3692 011314 000433 BR 90$ ;RESTORE AND RETURN
3693 ;
3694 ; SPECIAL DEVICE OPERATION
3695 ;
3696 011316 BCFSDO:
3697 011316 016001 000000G MOV T.HCAD(R0),R1 ;GET DATA ADDRESS
3698 011322 022711 000001 CMP #1,(R1) ;SET PAGE COUNTER?
3699 011326 001361 BNE BCFILF ;NO-- ILLEGAL FUNCTION
3700 011330 012701 010000 MOV #TB.LPC,R1 ;SAY SET PAGE COUNTER
3701 011334 000415 BR 40$ ;QUEUE IT UP
3702 ;
3703 ; HERE IS DEVICE STATUS
3704 ;
3705 011336 BCFHDS:
3706 011336 016001 000000G MOV T.HCAD(R0),R1 ;GET ADDRESS
3707 011342 032711 000040 BIT #DV.EOF,(R1) ;EOF FOR LP?
3708 011346 001751 BEQ BCFILF ;NO-- ILLEGAL STATUS
3709 011350 012701 020000 MOV #TB.EOF,R1 ;YES-- SET FUNCTION
3710 011354 000405 BR 40$ ;SEND IT TO QUEUE
3711 ;
3712 ; TRANSLATION RAM DATA
3713 ;
3714 011356 BCFLDR:
3715 011356 012701 004000 MOV #TB.RMD,R1 ;NOTE RAM DATA
3716 011362 000402 BR 40$ ;SEND TO QUEUE
3717 ;
3718 ; VFU DATA
3719 ;
3720 011364 BCFLDV:
3721 011364 012701 002000 MOV #TB.VFD,R1 ;NOTE RAM DATA
3722 ; BR 40$ ;SEND TO QUEUE
3723 ;
3724 ; SPECIAL QUEUE ENTRY-- MARK BY TB.DON + FLAGS IN T.HCBC OF THREAD BLOCK
3725 ;
3726 011370 40$:
3727 011370 052701 100000 BIS #TB.DON,R1 ;FLAG BLOCK DONE TO INTERRUPT SERVICE
3728 011374 050160 000000G BIS R1,T.HCBC(R0) ;SET SPECIFIED FUNCTION
3729 ; BR BCFSTR ;PUT IN QUEUE
3730 ;
3731 ; QUEUE THREAD BLOCK TO LP-20
3732 ;
3733 011400 BCFSTR:
3734 011400 CALL ..PTLP ;SEND TO LP OR QUEUE UP
011400 004737 011646' JSR PC,..PTLP
3735 ;
3736 ; ALL DONE
3737 ;
3738 011404 90$:
3739 011404 RESTORE ;UN-SAVE REGISTRS
011404 012604 MOV (SP)+,R4
011406 012603 MOV (SP)+,R3
011410 012601 MOV (SP)+,R1
3740 011412 RETURN ; FROM ..STLP
011412 000207 RTS PC
3741 ;
3742 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 41
..SPLP (STOP LP-20 OUTPUT)
3744 .SBTTL ..SPLP (STOP LP-20 OUTPUT)
3745 ;
3746 ;+
3747 ;
3748 ; ..SPLP IS CALLED TO STOP OUTPUT TO THE LP-20 IMMEDIATELY
3749 ; AND RESET THE LP-20. THIS ROUTINE FIRST CLEARS THE LP-20
3750 ; 'GO' BIT (TO STOP OUTPUT), THEN THREADS THROUGH THE OUTPUT LIST
3751 ; AND MARKS THE THREAD BLOCKS AS DONE BY SETTING T.HCBC TO IE.ABO.
3752 ;
3753 ; QUEUE I/O REQUESTS ARE GIVEN THE ERROR RETURN 'IE.ABO'
3754 ; (OPERATION ABORTED) WHEN THE THREAD BLOCKS ARE PROCESSED BY THE TASK.
3755 ;
3756 ; CALLED FROM TASK LEVEL
3757 ;
3758 ; CALLING SEQUENCE:
3759 ; R2 -- POINTER TO LPTBL ENTRY FOR THIS LP
3760 ; CALL ..SPLP
3761 ;
3762 ; EXIT CONDITONS:
3763 ;
3764 ; NO REGISTERS MODIFIED
3765 ;
3766 ;-
3767 ;
3768 011414 ..SPLP::
3769 011414 SAVE <R0,R1,R3> ;SAVE MISC. REGISTERS
011414 010046 MOV R0,-(SP)
011416 010146 MOV R1,-(SP)
011420 010346 MOV R3,-(SP)
3770 011422 022702 000000C CMP #LPTBL+<L$$P20*LPSIZE>,R2 ;THIS ONE OF US?
3771 011426 101453 BLOS 99$ ;NO-- JUST LEAVE
3772 011430 042712 004000 BIC #LP.WAT,(R2) ;NO LONGER WAITING FOR ACK
3773 011434 005762 000000G TST LPRMA(R2) ;RAM DATA LOAD IN PROGRESS??
3774 011440 001402 BEQ 4$ ;NO-- GO ON
3775 011442 052712 001000 BIS #LP.LIP,(R2) ;YES-- FLAG TO REMOVE IT AT LPTASK
3776 011446 4$:
3777 011446 005762 000000G TST LPITH(R2) ;I/O IN PROGRESS?
3778 011452 001403 BEQ 5$ ;NO-- JUST GO ON
3779 011454 042777 000040 000000G BIC #EF.LPW,@LPEVFG ;YES-- MARK TO TIME OUT LP-20 WHEN WE STOP IT
3780 011462 5$:
3781 011462 005062 000000G CLR LPITH(R2) ;CLEAR INTERRUPT LEVEL THREAD PTR
3782 011466 016203 000000G MOV LPCSA(R2),R3 ;GET EXTERNAL PAGE ADDR
3783 011472 001405 BEQ 6$ ;NON-EX LP
3784 011474 012713 001102 MOV #RSTERR+INTENB+PARENB,(R3) ;STOP LP-20
3785 011500 016363 000010 000010 MOV LPPCTR(R3),LPPCTR(R3) ;RESET PAGZRO, TOO
3786 011506 6$:
3787 011506 016201 000000G MOV LPTHD(R2),R1 ;GET POINTER TO CURRENT THREADED LIST
3788 ;
3789 ; LOOP THROUGH THIS LIST AND MARK THE THREAD BLOCKS AS DONE
3790 ;
3791 011512 10$:
3792 011512 010100 MOV R1,R0 ;GET ADDR OF NEXT BLOCK
3793 011514 001413 BEQ 90$ ;THAT'S THE END
3794 011516 011001 MOV @R0,R1 ;GET ADDR OF NEXT NEXT BLOCK
3795 011520 052760 040000 000000G BIS #TB.ABO,T.HCBC(R0) ;MARK BLOCK AS ABORTED
3796 011526 005760 000000G TST T.HCBC(R0) ;THIS THREAD BLOCK ALREADY DONE?
3797 011532 002767 BLT 10$ ;YES-- LEAVE IT ALONE
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 41-1
..SPLP (STOP LP-20 OUTPUT)
3798 011534 012760 140361 000000G MOV #TB.DON!TB.ABO!<IE.ABO&LOBYTE>,T.HCBC(R0) ;MARK AS DONE, ABORTED
3799 011542 000763 BR 10$ ;LOOP FOR ALL THINGS IN LIST
3800 ;
3801 ; ALL DONE WITH LIST
3802 ;
3803 011544 90$:
3804 011544 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;SAY I/O DONE TO LP TASK (RATHER... ABORTED)
3805 011552 CALL ..DSEV ;MAKE A SIGNIFICANT EVENT HAPPEN
011552 004737 000000G JSR PC,..DSEV
3806 011556 99$:
3807 011556 RESTORE ;RESTORE SAVE REGISTERS
011556 012603 MOV (SP)+,R3
011560 012601 MOV (SP)+,R1
011562 012600 MOV (SP)+,R0
3808 011564 RETURN ;RETURN FORM ..SPLP
011564 000207 RTS PC
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 42
..AKLP (ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)
3810 .SBTTL ..AKLP (ACKNOWLEDGE (CONTINUE) LP-20 OUTPUT)
3811 ;
3812 ;+
3813 ;
3814 ; ..AKLP IS CALLED BY ACKNOWLDGE OUTPUUT REQUEST FROM THE -10.
3815 ; THE LP.WAT FLAG IS CLEARED, AND THE CONDITION FLAGS CHRINT, PAGZRO
3816 ; ARE RESET. OUTPUT IS RESUMED WHEN LP TASK RUNS.
3817 ;
3818 ; CALLED AT TASK LEVEL
3819 ;
3820 ; CALLING SEQUENCE:
3821 ; R2 -- POINTER TO LPTBL ENTRY FOR THIS LP
3822 ;
3823 ; EXIT CONDITIONS:
3824 ;
3825 ; NO REGISTERS MODIFIED
3826 ;
3827 ;-
3828 ;
3829 011566 ..AKLP::
3830 011566 SAVE <R3> ;SAVE USED R'S
011566 010346 MOV R3,-(SP)
3831 011570 022702 000000C CMP #LPTBL+<L$$P20*LPSIZE>,R2 ;THIS AN LP???
3832 011574 101422 BLOS 90$ ;NO-- JUST LEAVE
3833 011576 042712 004000 BIC #LP.WAT,(R2) ;NO LONGER WAITING
3834 011602 005762 000000G TST LPITH(R2) ;LP GOING?
3835 011606 001015 BNE 90$ ;YES-- JUST GO AWAY
3836 011610 016203 000000G MOV LPCSA(R2),R3 ;GET EXT PAGE ADDR OF THIS LP
3837 011614 001405 BEQ 10$ ;NON-EX LP-- JUST GO AWAY
3838 011616 016363 000010 000010 MOV LPPCTR(R3),LPPCTR(R3) ;RESET PAGZRO
3839 011624 042713 020000 BIC #CHRINT,(R3) ; AND CHRINT
3840 011630 10$:
3841 011630 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;START LP TASK
3842 011636 CALL ..DSEV ; . .
011636 004737 000000G JSR PC,..DSEV
3843 011642 90$:
3844 011642 RESTORE ; USED R'S
011642 012603 MOV (SP)+,R3
3845 011644 RETURN ; FROM ..AKLP
011644 000207 RTS PC
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 43
..PTLP (PUT BLOCK IN THREADED OUTPUT LIST)
3847 .SBTTL ..PTLP (PUT BLOCK IN THREADED OUTPUT LIST)
3848 ;
3849 ;+
3850 ;
3851 ; ..PTLP IS CALLED TO SEND A BUFFER TO THE LP-20. THE
3852 ; BUFFER IS EITHER OUTPUT IMMEDIATELY OR, IF THE LP IS NOT IDLE,
3853 ; ADDED TO THE END OF THIS LP'S THREADED OUTPUT LIST.
3854 ;
3855 ; CALLED FROM TASK LEVEL
3856 ;
3857 ; CALLING SEQUENCE:
3858 ; R0 -- ADDRESS OF THREAD BLOCK FOR THIS BUFFER
3859 ; R2 -- POINTER TO LPTBL FOR THIS LP
3860 ; CALL ..PTLP
3861 ;
3862 ; EXIT CONDITIONS:
3863 ;
3864 ; NO REGISTERS MODIFIED
3865 ;
3866 ;-
3867 ;
3868 011646 ..PTLP::
3869 011646 SAVE <R1,R3> ;SAVE USED REGISTERS
011646 010146 MOV R1,-(SP)
011650 010346 MOV R3,-(SP)
3870 011652 005010 CLR @R0 ;MARK END OF LIST
3871 011654 012762 000012 000000G MOV #LPRTRY,LPRTY(R2) ;RESET RETRY COUNTER
3872 011662 016203 000000G MOV LPCSA(R2),R3 ;GET LP EXTERNAL PAGE ADDRESS
3873 011666 001404 BEQ 5$ ;OOPS-- NON-EX LP
3874 011670 032713 004000 BIT #ONLINE,(R3) ;OFF-LINE?
3875 011674 001006 BNE 7$ ;NO-- JUST GO ON
3876 011676 000403 BR 6$ ;OFF-LINE-- SEND STATUS
3877 ;
3878 011700 5$:
3879 011700 012760 100277 000000G MOV #TB.DON!<IE.OFL&LOBYTE>,T.HCBC(R0) ;NON-EX-LP-- MARK AS DONE, ERROR
3880 011706 6$:
3881 011706 052712 040000 BIS #LP.SST,(R2) ;TIME TO RING THE -10
3882 011712 7$:
3883 011712 .INH0 ;;LOCK OUT QUEUE'D PROTOCOL TASK
011712 013746 177776 MOV @#PS,-(SP)
011716 112737 000140 177776 MOVB #140,@#PS
3884 011724 016201 000000G MOV LPTHD(R2),R1 ;;GET CURRENT POINTER TO THREADED LIST
3885 011730 001405 BEQ 20$ ;;NONE-- START LP GOING
3886 ;
3887 ; LP BUSY-- MUST FIND END OF THREADED LIST AND PUT THIS BUFFER THERE
3888 ;
3889 011732 10$:
3890 011732 010103 MOV R1,R3 ;;COPY ADDR OF THREAD BLOCK
3891 011734 011301 MOV @R3,R1 ;;GET NEXT THREAD
3892 011736 001375 BNE 10$ ;;NOT END-- KEEP ON LOOKING
3893 011740 010013 MOV R0,@R3 ;;END-- STORE CURRENT THREAD BLOCK AT END
3894 011742 000407 BR 90$ ;;ALL DONE
3895 ;
3896 ; LP IDLE-- START IT GOING ON THIS BUFFER
3897 ;
3898 011744 20$:
3899 011744 010062 000000G MOV R0,LPTHD(R2) ;;STORE START OF THREAD
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 43-1
..PTLP (PUT BLOCK IN THREADED OUTPUT LIST)
3900 011750 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;;TELL LP TASK TO START LP GOING
3901 011756 CALL ..DSEV ;; WITH A SIGNIFICANT EVENT
011756 004737 000000G JSR PC,..DSEV
3902 ;
3903 ; ALL DONE
3904 ;
3905 011762 90$:
3906 011762 .ENB0 ;RE-ENABLE IRPS
011762 004737 000000G JSR PC,..ENB0
3907 011766 RESTORE ;RESTORE SAVED REGISTERS
011766 012603 MOV (SP)+,R3
011770 012601 MOV (SP)+,R1
3908 011772 RETURN ;RETURN FROM ..PTLP
011772 000207 RTS PC
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 44
..DOLP (INITIATE LP-20 TRANSFER)
3910 .SBTTL ..DOLP (INITIATE LP-20 TRANSFER)
3911 ;
3912 ;+
3913 ;
3914 ; ..DOLP IS CALLED TO START AN LP GOING ON A SPECIFIED BUFFER.
3915 ; THE DEVICE RGISTERS ARE SET UP AND 'GO' IS SET TO START THE TRANSFER.
3916 ;
3917 ; IF THE THREAD SPECIFIED IS ZERO, NOTHING IS DONE AND THE
3918 ; LP IS LEFT IDLE.
3919 ;
3920 ; ENTER AT ..DOL1 TO OUTPUT NEXT BUFFER, UNLESS LP.MCH IS SET,
3921 ; IN WHICH CASE THE CURRENT BUFFER IS OUTPUT. THIS IS USUALLY ONLY
3922 ; CALLED WHEN 'DONE' IS SET.
3923 ;
3924 ; CALLED AT INTERRUPT LEVEL (OR WITH INTERRUPTS DISABLED)
3925 ;
3926 ; CALLING SEQUENCE:
3927 ; R0 -- ADDR OF THREAD BLOCK TO OUTPUT (ZERO IF END)
3928 ; R2 -- ADDR OF LPTBL ENTRY FOR THIS LP
3929 ; R3 -- EXTERNAL PAGE ADDRESS FOR THIS LP
3930 ;
3931 ; EXIT CONDITIONS:
3932 ; R0 -- ADDR OF CURRENT THREAD BLOCK
3933 ;
3934 ; NO OTHER REGISTERS MODIFIED
3935 ;
3936 ;-
3937 ;
3938 .ENABLE LSB
3939 011774 ..DOL1::
3940 011774 032712 001000 BIT #LP.LIP,(R2) ;;;LOAD SUPPOSED TO BE IN PROGRESS?
3941 012000 001020 BNE 19$ ;;;YES-- GO BACK TO TASK
3942 012002 032712 010000 BIT #LP.MCH,(R2) ;;;MULTI-CHARACTER OPERATION?
3943 012006 001417 BEQ 20$ ;;;NO-- GET NEXT BUFFER
3944 ;;;YES-- GET (CONTINUE) CURRENT BUFFER
3945 012010 ..DOLP::
3946 012010 10$:
3947 012010 042712 114000 BIC #LP.WAT!LP.MCH!LP.HNG,(R2) ;;;NOT WAITING, AND NOT MULTI-CHAR-ING
3948 012014 010062 000000G MOV R0,LPITH(R2) ;;;SAVE CURRENT BUFFER AS OUR INT-LEVEL BUFFER
3949 012020 001463 BEQ 90$ ;;;GIVE UP IF END
3950 012022 016063 000000G 000006 MOV T.HCBC(R0),LPBCTR(R3) ;;;SAVE BYTE COUNT FOR LP (WILL NEG LATER)
3951 012030 003020 BGT 50$ ;;;NOT DONE-- START OUTPUT
3952 ;
3953 012032 032760 036000 000000G BIT #TB.SFN,T.HCBC(R0) ;;;SPECIAL FUNCTION?
3954 012040 001402 BEQ 20$ ;;;NO-- JUST SET DONE
3955 012042 19$:
3956 012042 005000 CLR R0 ;;;YES-- DON'T GET NEXT THREAD BLOCK
3957 012044 000404 BR 30$ ;;;AND STOP I/O, REQUEST TASK LEVEL CODE
3958 ;
3959 ; THIS THREAD BLOCK DONE-- MARK IT BY -VE T.HCBC, SET I/O DONE
3960 ; EVENT FLAG, AND START NEXT BUFFER.
3961 ;
3962 012046 20$:
3963 012046 012760 100001 000000G MOV #TB.DON!<IS.SUC&LOBYTE>,T.HCBC(R0) ;;;NOTE SUCCESS HERE
3964 012054 011000 MOV @R0,R0 ;;;GET ADDR OF NEXT BUFFER
3965 ;
3966 ; SET I/O DONE, GO ON TO NEXT THREAD BLOCK (ADDR IN R0)
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 44-1
..DOLP (INITIATE LP-20 TRANSFER)
3967 ;
3968 012056 30$:
3969 012056 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;;;SET LP I/O DONE EVENT FLAGE
3970 012064 CALL ..DSEV ;;;MAKE A SIGNIFICANT EVENT
012064 004737 000000G JSR PC,..DSEV
3971 012070 000747 BR 10$ ;;;DO NEXT BUFFER
3972 ;
3973 ; SET UP -VE BYTE COUNT AND EXTENDED MEMORY ADDRESS BITS
3974 ;
3975 012072 50$:
3976 012072 016063 000000G 000004 MOV T.HCAD(R0),LPBSAD(R3) ;;;SAVE PHYSICAL ADDR FOR LP
3977 012100 005463 000006 NEG LPBCTR(R3) ;;;MAKE -VE # BYTES TO SEND
3978 012104 042713 000060 BIC #BUSA17+BUSA16,(R3) ;;;CLEAR EXTENDED MEMORY ADDR BITS
3979 012110 005760 000000G TST T.HBCT(R0) ;;;THIS QUEUE I/O REQUEST?
3980 012114 001023 BNE 59$ ;;;NO-- ADDRESS IS IN LOW CORE
3981 012116 116062 177775 000000G MOVB T.HVFC(R0),LPMCB(R2) ;;;SET TO PRINT VERTICAL FORMAT CHARACTER
3982 012124 001415 BEQ 58$ ;;;NONE-- JUST START THE LP
3983 012126 105060 177775 CLRB T.HVFC(R0) ;;;YES-- CLEAR IT NOW
3984 012132 012763 000000G 000004 MOV #LPMCB,LPBSAD(R3) ;;;YES-- POINT TO THE FORMAT CHARACTER
3985 012140 060263 000004 ADD R2,LPBSAD(R3) ;;; FOR THIS LP
3986 012144 012763 177777 000006 MOV #-1,LPBCTR(R3) ;;;ONLY 1 CHARACTER
3987 012152 052712 010000 BIS #LP.MCH,(R2) ;;;NOTE THAT WE ARE WORKING FROM LPMCB
3988 012156 000402 BR 59$ ;;;START THE LP GOING
3989 ;
3990 012160 58$:
3991 012160 156013 177774 BISB T.HEMA(R0),(R3) ;;;SET EXTENDED MEMORY BITS
3992 ;
3993 ; SET INTENB, PARENB, AND GO TO START LP GOING ON THIS BUFFER
3994 ;
3995 012164 59$:
3996 012164 052713 000103 BIS #INTENB+PARENB+GO,(R3) ;;;START LP GOING
3997 ;
3998 ; ALL DONE-- RETURN
3999 ;
4000 012170 90$:
4001 012170 RETURN ;;;RETURN FROM ..DOLP/..DOL1
012170 000207 RTS PC
4002 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 19:04 PAGE 45
..DOLP (INITIATE LP-20 TRANSFER)
4004
4005 .TITLE CRDRV (CD-11 DRIVER FOR RSX10F)
4006 .SBTTL TITLE PAGE
4007 .IDENT /001000/
4008 ;
4009 ; COPYRIGHT (C) 1975, 1984, 1985 BY
4010 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
4011 ; ALL RIGHTS RESERVED.
4012 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
4013 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
4014 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
4015 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
4016 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
4017 ;
4018 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
4019 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4020 ; CORPORATION.
4021 ;
4022 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4023 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4024 ;
4025 ; MODULE: COMMON DEFINITIONS
4026 ;
4027 ; VERSION: 01-00
4028 ;
4029 ; AUTHOR: TOM PORCHER
4030 ;
4031 ; DATE: 25-SEP-75
4032 ;
4033 ;
4034 ; THIS MODULE CONTAINS:
4035 ;
4036 ; 1) COMMON PARAMETERS AND MACROS
4037 ;
4038 ; 2) CD-11 DEVICE REGISTER DEFINITIONS
4039 ;
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 46
COMMON PARAMETERS AND MACROS
4041 .SBTTL COMMON PARAMETERS AND MACROS
4042 ;
4043 ; MISC. MCALLS
4044 ;
4045 .MCALL MRKT$,SPRA$S,SVTK$S,WTLO$S,WTSE$S,WSIG$S
4046 .MCALL DIR$,$DEF,CALL,RETURN,.INH,.ENB,PUSH,POP,.STKM
4047 012172 $DEF
4048 .ENABLE AMA
4049 .LIST MEB
4050 ;
4051 ; PARAMETERS
4052 ;
4053 000001 C$$D11= 1 ;ONLY 1 CD-11
4054 ;
4055 ; EVENT FLAGS
4056 ;
4057 000001 E.FCRC= 1 ;CD-11 MARK-TIME REQUEST
4058 000001 EF.CRC=BIT0
4059 000002 E.FCRD= 2 ;I/O DONE FROM INTERRUPT LEVEL
4060 000002 EF.CRD=BIT1
4061 000003 E.FCRS= 3 ;BUFFER AVAILABLE FOR STATUS
4062 000004 EF.CRS=BIT2
4063 000004 E.FCRB= 4 ;DATA BUFFER AVAILABLE
4064 000010 EF.CRB=BIT3
4065 ;
4066 ;
4067 000074 .CYLTM=60.
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 47
CD-11 DEVICE REGISTER BIT DEFINITIONS
4069 .SBTTL CD-11 DEVICE REGISTER BIT DEFINITIONS
4070 ;
4071 ;
4072 ;CDST== 177160 ;CONTROL/STATUS REGISTER
4073 100000 CDSERR= BIT15
4074 040000 CDSRCK= BIT14
4075 020000 CDSEOF= BIT13
4076 010000 CDSOFL= BIT12
4077 004000 CDSDER= BIT11
4078 002000 CDSDLT= BIT10
4079 001000 CDSNXM= BIT9
4080 000400 CDSPWC= BIT8
4081 000200 CDSRDY= BIT7
4082 000100 CDSIEN= BIT6
4083 000040 CDSB17= BIT5
4084 000020 CDSB16= BIT4
4085 000010 CDSTOL= BIT3
4086 000004 CDSHEM= BIT2
4087 000002 CDSPAK= BIT1
4088 000001 CDSRED= BIT0
4089 ;CDCC== 177162 ;COLUMN COUNT REGISTER
4090 ;CDBA== 177164 ;BUS ADDRESS BITS 15-0
4091 ;CDDB== 177166 ;DATA BUFFER REGISTER
4092 ;AFTER DATA TRANSFERS (CDSRDY= 1):
4093 040000 CDBRCK= BIT14
4094 020000 CDBPCK= BIT13
4095 010000 CDBSCK= BIT12
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 48
CD-11 DEVICE REGISTER BIT DEFINITIONS
4097
4098 .SBTTL CD-11 DRIVER COMMON DATA MODULE
4099 ;
4100 ; COPYRIGHT (C) 1975, 1984, 1985 BY
4101 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
4102 ; ALL RIGHTS RESERVED.
4103 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
4104 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
4105 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
4106 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
4107 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
4108 ;
4109 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
4110 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4111 ; CORPORATION.
4112 ;
4113 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4114 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4115 ;
4116 ; MODULE: CD-11 DRIVER COMMON DATA
4117 ;
4118 ; VERSION: 01-00
4119 ;
4120 ; AUTHOR: TOM PORCHER
4121 ;
4122 ; DATE: 25-AUG-75
4123 ;
4124 ;
4125 ; THIS MODULE CONTAINS:
4126 ;
4127 ; 1) COMMON DATABASE DEFINITIONS
4128 ;
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 49
COMMON DATABASE DEFINITIONS
4130 .SBTTL COMMON DATABASE DEFINITIONS
4131 ;
4132 ;
4133 ; CR TASK STACK HEADER
4134 ;
4135 012172 CRHD:: .STKM 0,0,0,0,0,0,0,CRINI,174000,CRSTK
012240 000000 000000 000000 .WORD 0,0,0,0
012246 000000
012266 174000 012554' 012452' .WORD 174000,CRINI,CRSTK
012322 000005 .WORD 5
012324 000000G .WORD TTPEN
012326 000000 .WORD 0
012330 000000 .WORD 0
012332 000000 .WORD 0
012334 000000 .WORD 0
012336 000000 .WORD 0
012340 000000 .WORD 0
012342 000000 .WORD 0
012344 000000 .WORD 0
012346 000000 .WORD 0
012350 000000 .WORD 0
012452 000000 .WORD 0
012454 000000 .WORD 0
012456 000000 .WORD 0
012460 000000 .WORD 0
012462 000000 .WORD 0
012464 000000 .WORD 0
012466 012554' .WORD CRINI
012470 174000 .WORD 174000
4136 ;
4137 ;STATUS BITS:
4138 100000 CR.HNG= BIT15 ;CR IS HUNG, I.E. NO INPUT HAS OCCURED
4139 ; IN 10 SECONDS. SET AND CHECKED BY
4140 ; MARK-TIME SERVICE, CLEARED BY I/O
4141 ; DONE AT INTERRUPT.
4142 040000 CR.SST= BIT14 ;A CHANGE IN DEVICE STATUS HAS OCCURED,
4143 ; OR THE -10 HAS REQUESTED THE STATUS OF
4144 ; THE CR.
4145 020000 CR.IOP= BIT13 ;I/O IN PROGRESS. SET WHEN READ CARD STARTED,
4146 ; CLEARED WHEN DONE INTERRUPT OCCURS.
4147 010000 CR.IOD= BIT12 ;I/O DONE FROM INTERRUPT LEVEL. SET WHEN A
4148 ; DATA BUFFER IS READY TO BE SENT TO THE -10.
4149 004000 CR.ACK= BIT11 ;ACKNOWLEDGE RECEIVED. READ NEXT CARD.
4150 ; SET WHEN ACK RECEIVED FROM -10 (..AKCR).
4151 002000 CR.RHN= BIT10 ;READER HUNG DURING READ. SET BY MKT ROUTINE
4152 ; TESTED AND CLEARED BY SSTSCR
4153 001000 CR.NXD= BIT9 ;NON-EX CD-11. SET BY INITCR, CHECKED
4154 ; BEFORE TRANSFER STARTED.
4155 000400 CR.NSF= BIT8 ;NOT STACKER FULL. SET WHEN ANY OTHER ERROR
4156 ; CONDITION IS SET.
4157 ;
4158 ; DIRECTIVE PARAMETER BLOCKS
4159 ;
4160 012472 CRMRKT: MRKT$ E.FCRC,10.*.CYLTM,10.*.CYLTM ;MARK-TIME REQUEST FOR 10 SECONDS
012472 027 005 .BYTE 23.,5
012474 000001 .WORD E.FCRC
012476 001130 .WORD 10.*.CYLTM
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 49-1
COMMON DATABASE DEFINITIONS
012500 001130 .WORD 10.*.CYLTM
012502 000000 .WORD
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 50
COMMON DATABASE DEFINITIONS
4162
4163 .SBTTL CD-11 DRIVER TASK MODULE
4164 ;
4165 ; COPYRIGHT (C) 1975, 1984, 1985 BY
4166 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
4167 ; ALL RIGHTS RESERVED.
4168 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
4169 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
4170 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
4171 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
4172 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
4173 ;
4174 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
4175 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4176 ; CORPORATION.
4177 ;
4178 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4179 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4180 ;
4181 ; MODULE: CD-11 DRIVER TASK
4182 ;
4183 ; VERSION: 14-45
4184 ;
4185 ; AUTHOR: TOM PORCHER
4186 ;
4187 ; DATE: 25-AUG-75
4188 ;
4189 ;
4190 ; THIS MODULE CONTAINS:
4191 ;
4192 ; 1) TASK LEVEL SERVICE FOR CD-11
4193 ;
4194 ; TCO 4.1.1105 11-MAR-80 R. BELANGER CHANGE "EF.PR1" RECOGNITION
4195 ; TCO 5.1566 12-OCT-81 S. LEAPLINE CLEAR CREXP IF DEVICE DOES NOT EXIST
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 51
TASK INITIALIZATION
4197 .SBTTL TASK INITIALIZATION
4198 ;
4199 ; SST VECTOR TABLE
4200 ;
4201 012504 012506' CRSSTV: .WORD CRTRP4 ;WHERE TO GO ON TRAP TO 4
4202 ;
4203 ; HERE ON TRAP TO 4, HOPEFULLY JUST NON-EX CR
4204 ;
4205 012506 021627 013222' CRTRP4: CMP (SP),#CRDINT ;FROM MARK-TIME?
4206 012512 001404 BEQ 10$ ;YES-- OK
4207 012514 021627 013752' CMP (SP),#CRDCLR ;OR FROM INIT?
4208 012520 001401 BEQ 10$ ;YES-- ALSO OK
4209 012522 000004 IOT ;***** NO, NOT OUR T04 *****
4210 ;
4211 012524 005037 000000G 10$: CLR CREXP ; [5.1566] CLEAR THE EXTERNAL PAGE ADDRESS
4212 012530 052737 001000 000000G BIS #CR.NXD,CRSTS ;SAY NON-EX CR
4213 012536 052766 000001 000002 BIS #BIT0,2(SP) ;SET THE CARRY TO THE SST
4214 012544 000002 RTI ;RETURN TO INTERRPUTED ROUTINE
4215 ;
4216 ; HERE ON POWER-UP AST
4217 ;
4218 012546 CRPWUP: CALL INITCR ;RESET THE CR
012546 004737 013736' JSR PC,INITCR
4219 012552 000002 RTI ;RETURN FROM AST
4220 ;
4221 ; HERE TO START CR TASK
4222 ;
4223 012554 013737 000000G 000000G CRINI: MOV .CRTSK,CREVFG ;GET ADDRESS OF OUR TASK'S ENTRY
4224 012562 062737 000020 000000G ADD #A.EF,CREVFG ;MAKE THAT ADDRESS OF OUR EVENT FLAGS
4225 012570 052777 000014 000000G BIS #EF.CRB!EF.CRS,@CREVFG ;SAY OUR BUFFERS ARE AVAILABLE
4226 012576 DIR$ #CRMRKT ;SETUP FOR 10-SECOND MARK-TIME'S
012576 012746 012472' MOV #CRMRKT,-(SP)
012602 104375 EMT 375
4227 012604 SVTK$S #CRSSTV,#1 ;SETUP FOR TRAP-TO-4 RECOGNITION
012604 012746 000001 MOV #1,-(SP)
012610 012746 012504' MOV #CRSSTV,-(SP)
012614 012746 MOV (PC)+,-(SP)
012616 071 003 .BYTE 57.,3
012620 104375 EMT 375
4228 012622 SPRA$S #CRPWUP ;SETUP FOR POWER-UP AST
012622 012746 012546' MOV #CRPWUP,-(SP)
012626 012746 MOV (PC)+,-(SP)
012630 155 002 .BYTE 109.,2
012632 104375 EMT 375
4229 012634 CALL INITCR ;INITIALIZE CD-11 AND TABLES
012634 004737 013736' JSR PC,INITCR
4230 ; BR CRLOOP ;FALL INTO PROCESSING LOOP
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 52
CRLOOP (MAIN PROCESSING LOOP)
4232 .SBTTL CRLOOP (MAIN PROCESSING LOOP)
4233 ;
4234 ; WAIT FOR EVENT FLAGS EF.CRC (10 SEC MARK-TIME), EF.CRD (I/O DONE).
4235 ;
4236 012640 CRLOOP: WTLO$S 1,#EF.CRC!EF.CRD ;WAIT FOR FLAGS
012640 012746 000003 MOV #EF.CRC!EF.CRD,-(SP)
012644 012746 000001 MOV #1,-(SP)
012650 012746 MOV (PC)+,-(SP)
012652 053 003 .BYTE 43.,3
012654 104375 EMT 375
4237 ;
4238 012656 .INH ;;;A FLAG WAS SET-- LOCK OUT INTERRUPTS
012656 013746 177776 MOV PS,-(SP)
012662 112737 000340 177776 MOVB #PR7,@#PS ;;
4239 012670 017737 000000G 000000G MOV @CREVFG,CRCEVF ;;;GET OUR CURRENT EVENT FLAGS
4240 012676 042777 000003 000000G BIC #EF.CRC!EF.CRD,@CREVFG ;;;CLEAR THE FLAGS WE WAITED FOR
4241 012704 .ENB ;INTERRUPTS: ON!
012704 012637 177776 MOV (SP)+,@#PS ;;
4242 012710 005737 000000G TST .CRPFL ;POWER FAIL?
4243 012714 001404 BEQ 10$ ;NO -- FORGET IT
4244 012716 CALL INITCR ;YES -- INIT CR
012716 004737 013736' JSR PC,INITCR
4245 012722 005037 000000G CLR .CRPFL
4246 012726 10$:
4247 ;
4248 ; SEE IF THIS IS EF.CRD (I/O DONE), AND FIND OUT WHY IT WAS SET.
4249 ;
4250 012726 032737 000002 000000G CRIOD: BIT #EF.CRD,CRCEVF ;THIS EF.CRD?
4251 012734 001516 BEQ 90$ ;NO-- TRY FOR MARK-TIME
4252 ;
4253 ; SEE IF A BUFFER IS READY TO BE SENT TO THE -10 (CR.IOD SET BY INTERRUPT SERVICE)
4254 ;
4255 012736 032737 010000 000000G BIT #CR.IOD,CRSTS ;WE FINISH A TRANSFER?
4256 012744 001430 BEQ 20$ ;NO-- GO ON
4257 012746 012700 000000G MOV #CRBUFF,R0 ;YES-- GET ADDRESS OF BUFFER
4258 ;
4259 ; WE MUST SEND A DATA BUFFER TO THE -10. SET UP FOR ..STIN:
4260 ; R0 -- ADDRESS OF BUFFER. FIRST WORD IS (LOW BYTE) BYTE COUNT
4261 ; OF BUFFER (NOT INCLUDING HEADER WORD), (HIGH BYTE) UNIT #.
4262 ; R1 -- BIT15+ FUNCTION CODE (BC.STR-- STRING DATA)
4263 ; R2 -- EVENT FLAG TO SET WHEN DONE
4264 ; R3 -- DEVICE CODE (D.CCDR)
4265 ;
4266 012752 105040 CLRB -(R0) ;HIGH BYTE HEADER: UNIT # (ALWAYS 0)
4267 012754 112740 000000G MOVB #CRBFLN,-(R0) ;LOW BYTE HEADER: SIZE OF BUFFER
4268 012760 012701 100000G MOV #BIT15+BC.STR,R1 ;FUNCTION CODE: STRING DATA (INDIRECT FLAVOR)
4269 012764 012702 000004 MOV #E.FCRB,R2 ;EVENT FLAG TO SET WHEN DONE
4270 012770 012703 000000G MOV #D.CCDR,R3 ;DEVICE CODE: CDR
4271 012774 042777 000010 000000G BIC #EF.CRB,@CREVFG ;ASSUME SUCCESS
4272 013002 CALL ..STIN ;SEND TO -10
013002 004737 000000G JSR PC,..STIN
4273 013006 103404 BCS 10$ ;GIVE UP-- PRIMARY PROTOCOL (DDT)
4274 013010 042737 112400 000000G BIC #CR.IOD!CR.HNG!CR.RHN!CR.NSF,CRSTS ;OK-- NO LONGER BUFFER TO SEND
4275 013016 000403 BR 20$ ;GO ON
4276 ;
4277 013020 052777 000010 000000G 10$: BIS #EF.CRB,@CREVFG ;..STIN FAILED-- BUFFER STILL AVAILABLE
4278 ;
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 52-1
CRLOOP (MAIN PROCESSING LOOP)
4279 ; SEE IF STATUS IS TO BE SENT TO -10, EITHER BECAUSE OF A CHANGE IN
4280 ; DEVICE STATUS OR A REQUEST FROM THE -10.
4281 ;
4282 013026 032737 040000 000000G 20$: BIT #CR.SST,CRSTS ;TIME TO SEND DEVICE STATUS?
4283 013034 001402 BEQ 30$ ;NO-- GO ON
4284 013036 CALL SSTSCR ;YES-- SEND SUCH TO -10
013036 004737 013332' JSR PC,SSTSCR
4285 ;
4286 ; SEE IF -10 WANTS US TO READ NEXT CARD, BY CR.ACK SET.
4287 ;
4288 013042 032737 004000 000000G 30$: BIT #CR.ACK,CRSTS ;-10 WANT A CARD?
4289 013050 001450 BEQ 90$ ;NO-- ALL DONE
4290 013052 032737 030000 000000G BIT #CR.IOP!CR.IOD,CRSTS ;STILL I/O IN PROGRESS?
4291 013060 001044 BNE 90$ ;YES-- COME BACK LATER WHEN WE ARE DONE
4292 013062 042737 106000 000000G BIC #CR.ACK!CR.HNG!CR.RHN,CRSTS ;YES-- NO LONGER WANTING
4293 013070 032737 001000 000000G BIT #CR.NXD,CRSTS ;THIS NON-EX CD-11?
4294 013076 001016 BNE 32$ ;YES-- JUST SEND STATUS
4295 013100 032777 000010 000000G 34$: BIT #EF.CRB,@CREVFG ;BUFFER AVAILABLE TO US YET?
4296 013106 001006 BNE 31$ ;YES-- ALL OK
4297 013110 WSIG$S ;WAIT FOR SOMETHING TO HAPPEN
013110 012746 MOV (PC)+,-(SP)
013112 061 001 .BYTE 49.,1
013114 104375 EMT 375
4298 013116 005737 000002G TST .COMEF+2 ; [4.1.1105] IS PRIMARY PROTOCOL STILL RUNNING ?
4299 013122 100766 BMI 34$ ; [4.1.1105] YES, SEE IF BUFFER IS NOW FREE.
4300 ;
4301 013124 032737 010000 000000G 31$: BIT #CDSOFL,@#CDST ;CD-11 OFF-LINE?
4302 013132 001403 BEQ 33$ ;NO-- LET'S START TRANSFER
4303 013134 32$: CALL SSTSCR ;YES-- TELL -10
013134 004737 013332' JSR PC,SSTSCR
4304 013140 000414 BR 90$ ; AND GO AWAY FOR NOW
4305 ;
4306 ; START TRNSFER OF CARD TO CRBUFF
4307 ;
4308 013142 052737 020000 000000G 33$: BIS #CR.IOP,CRSTS ;SAY I/O NOW IN PROGRESS
4309 013150 012737 000000C 000000G MOV #-<CRBFLN/2>,@#CDCC ;INDICATE TO READ 80. COLUMNS
4310 013156 012737 000000G 000000G MOV #CRBUFF,@#CDBA ; INTO CRBUFF
4311 013164 012737 000101 000000G MOV #CDSIEN!CDSRED,@#CDST ;START CARD GOING
4312 ;
4313 ; ALL DONE WITH EF.CRD
4314 ;
4315 013172 90$:
4316 ;
4317 ; CHECK FOR MARK-TIME REQUEST (EF.CRC SET), THEN DO HUNG CHECK IF SO.
4318 ;
4319 .ENABLE LSB
4320 013172 032737 000001 000000G CRMKT: BIT #EF.CRC,CRCEVF ;MARK-TIME REQUEST EVENT FLAG SET?
4321 013200 001452 BEQ 90$ ;NO-- GO ON
4322 013202 032737 001000 000000G BIT #CR.NXD,CRSTS ;NON-EX CR?
4323 013210 001011 BNE 9$ ;YES-- SKIP INT-ENB STUFF
4324 013212 000241 CLC ;IN CASE OF TRAP
4325 013214 032737 000100 000000G BIT #CDSIEN,@#CDST ;INT-ENB STILL SET?
4326 013222 103404 CRDINT: BCS 9$ ;NON-EX CR-- GO ON
4327 013224 001003 BNE 9$ ;YES-- SKIP THE SET
4328 013226 052737 000100 000000G BIS #CDSIEN,@#CDST ;YES-- MAKE SURE WE STILL HAVE INT-ENB
4329 013234 032737 074000 000000G 9$: BIT #CR.SST!CR.IOD!CR.ACK!CR.IOP,CRSTS ;YES-- STUFF FOR US TO DO?
4330 013242 001426 BEQ 30$ ;NO-- IDLE-- CLEAR HUNG FLAG
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 52-2
CRLOOP (MAIN PROCESSING LOOP)
4331 013244 032737 100000 000000G BIT #CR.HNG,CRSTS ;WE BEEN HERE WITHIN 10 SECONDS?
4332 013252 001416 BEQ 20$ ;NO-- SET HUNG FLAG SO WE WILL IN 10 SEC
4333 013254 032737 020000 000000G BIT #CR.IOP,CRSTS ;YES-- WAS I/O IN PROGRESS
4334 013262 001407 BEQ 10$ ;NO-- JUST PROCESS OTHER FLAGS
4335 013264 052737 042000 000000G BIS #CR.RHN!CR.SST,CRSTS ;YES-- SAY READER HUNG
4336 013272 005237 000000G INC CRHUNG ;COUNT # TIMES HUNG
4337 013276 CALL INITCR ;RESET THE CD-11
013276 004737 013736' JSR PC,INITCR
4338 ;
4339 013302 052777 000002 000000G 10$: BIS #EF.CRD,@CREVFG ;SAY TO LOOK AT THE FLAGS AGAIN
4340 ;
4341 013310 052737 100000 000000G 20$: BIS #CR.HNG,CRSTS ;FLAG TO CHECK THIS AGAIN IN 10 SECONDS
4342 013316 000403 BR 90$ ;ALL DONE
4343 ;
4344 013320 042737 102000 000000G 30$: BIC #CR.HNG!CR.RHN,CRSTS ;NOTHING TO DO-- DON'T SAY WE ARE HUNG
4345 ;
4346 ; ALL DONE WITH EF.CRC
4347 ;
4348 013326 000137 012640' 90$: JMP CRLOOP ;BACK TO MAIN LOOP
4349 .DSABLE LSB
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 53
SSTSCR (SEND CD-11 STATUS TO -10)
4351 .SBTTL SSTSCR (SEND CD-11 STATUS TO -10)
4352 ;
4353 ;+
4354 ;
4355 ; SSTSCR IS CALLED WHEN CR.SST IS SET, EITHER BY A CHANGE IN HARDWARE
4356 ; STATUS, OR ON REQUEST FROM THE -10.
4357 ;
4358 ; THE STATUS PACKET IS ASSEMBLED INTO CRSTBK. THE FORMAT OF THIS BLOCK
4359 ; IS AS FOLLOWS:
4360 ;
4361 ; WORD 0 STANDARD BITS (DV.XXX)
4362 ; 1 DEVICE DEPENDENT BITS (DD.XXX)
4363 ; 2 (HIGH BYTE) # BYTES OF DEVICE DEPENDENT INFO (ALWAYS 0)
4364 ; (LOW BYTE) # BYTES OF DEVICE REGISTERS (ALWAYS 8.)
4365 ; CD-11 DEVICE REGISTERS
4366 ; 3 CDST
4367 ; 4 CDCC
4368 ; 5 CDBA
4369 ; 6 CDDB
4370 ;
4371 ; THE FOLLOWING BITS ARE USED IN THE STATUS WORDS:
4372 ;
4373 ; DV.NXD NON-EX DEVICE
4374 ; DV.OFL OFF-LINE
4375 ; DV.OIR HARD ERROR (DD.RCK, DD.PCK, DD.SCK)
4376 ; DV.IOP I/O IN PROGRESS (READING A CARD)
4377 ; DV.EOF E-O-F BUTTON PUSHED
4378 ; DV.LOG ERROR LOGGING REQUIRED
4379 ; DV.HNG DEVICE HUNG
4380 ;
4381 ; DD.RCK READ CHECK
4382 ; DD.PCK PICK CHECK
4383 ; DD.SCK STACK CHECK
4384 ; DD.HEM HOPPER EMPTY
4385 ; DD.SFL STACKER FULL
4386 ;
4387 ;-
4388 ;
4389 013332 042737 040000 000000G SSTSCR: BIC #CR.SST,CRSTS ;SAY STATUS SENT ALREADY
4390 013340 032777 000004 000000G 60$: BIT #EF.CRS,@CREVFG ;IS STATUS BUFFER AVAILABLE?
4391 013346 001006 BNE 10$ ;YES-- ASSEMBLE STATUS
4392 013350 WSIG$S ;NO-- WAIT FOR IT TO BE THERE
013350 012746 MOV (PC)+,-(SP)
013352 061 001 .BYTE 49.,1
013354 104375 EMT 375
4393 013356 005737 000002G TST .COMEF+2 ; [4.1.1105] IF PRIMARY PROTOCOL IS STILL RUNNING
4394 013362 100766 BMI 60$ ; [4.1.1105] THEN CHECK IF STILL GOING
4395 ;
4396 ; ASSEMBLE STATUS INTO CRSTBK+0 CRSTBK+2
4397 ;
4398 013364 012700 000004G 10$: MOV #CRSTBK+4,R0 ;GET ADDRESS OF STATUS BLOCK
4399 013370 005010 CLR (R0) ;CLEAR BYTE COUNT WORD(ASSUME NON-EX DEV)
4400 013372 005040 CLR -(R0) ; AND SECOND WORD OF STATUS
4401 013374 010001 MOV R0,R1 ;SAVE ADDR OF SECOND WORD
4402 013376 005040 CLR -(R0) ; AND CLEAR FIRST WORD, R0 POINTS TO IT
4403 ;
4404 013400 032737 001000 000000G BIT #CR.NXD,CRSTS ;NON-EX DEVICE?
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 53-1
SSTSCR (SEND CD-11 STATUS TO -10)
4405 013406 001403 BEQ 101$ ;NO-- GET REAL STATUS
4406 013410 052710 000007 BIS #DV.NXD!DV.OFL!DV.OIR,(R0) ;YES-- SAY NOT THERE
4407 013414 000522 BR 50$ ;SEND THIS STATUS
4408 ;
4409 013416 013703 000000G 101$: MOV @#CDST,R3 ;COPY DEVICE STATUS
4410 013422 032703 010000 BIT #CDSOFL,R3 ;CD-11 OFF-LINE?
4411 013426 001402 BEQ 11$ ;NO-- GO ON
4412 013430 052710 000006 BIS #DV.OFL!DV.OIR,(R0) ;YES-- SAY SO
4413 ;
4414 013434 032737 030000 000000G 11$: BIT #CR.IOP!CR.IOD,CRSTS ;I/O STILL IN PROGRESS?
4415 013442 001402 BEQ 12$ ;NO
4416 013444 052710 000020 BIS #DV.IOP,(R0) ;YES-- SAY SO
4417 ;
4418 013450 032703 020000 12$: BIT #CDSEOF,R3 ;E-O-F BUTTON PUSHED?
4419 013454 001402 BEQ 13$ ;NO-- GO ON
4420 013456 052710 000040 BIS #DV.EOF,(R0) ;YES-- SAY EOF
4421 ;
4422 013462 032737 002000 000000G 13$: BIT #CR.RHN,CRSTS ;READER HUNG?
4423 013470 001402 BEQ 14$ ;NO-- GO ON
4424 013472 052710 001104 BIS #DV.HNG!DV.OIR!DV.LOG,(R0) ;YES-- SAY HUNG
4425 ;
4426 013476 032703 003000 14$: BIT #CDSDLT!CDSNXM,R3 ;FATAL ERROR (DATA LATE, NXM)?
4427 013502 001402 BEQ 15$ ;NO-- GO ON
4428 013504 052710 000300 BIS #DV.URE!DV.LOG,(R0) ;YES-- SAY SO
4429 ;
4430 013510 032703 000200 15$: BIT #CDSRDY,R3 ;BUT IS READER READY?
4431 013514 001451 BEQ 30$ ;NO-- BITS ARE NOT VALID-- GO ON
4432 ;
4433 013516 013704 000000G MOV @#CDDB,R4 ;YES-- GET ERROR BITS TO R4
4434 ;
4435 013522 032704 040000 BIT #CDBRCK,R4 ;READ (PHOTO) CHECK?
4436 013526 001402 BEQ 16$ ;NO
4437 013530 052711 000001 BIS #DD.RCK,(R1) ;YES
4438 ;
4439 013534 032704 020000 16$: BIT #CDBPCK,R4 ;PICK CHECK?
4440 013540 001402 BEQ 17$ ;NO
4441 013542 052711 000002 BIS #DD.PCK,(R1) ;YES
4442 ;
4443 013546 032704 010000 17$: BIT #CDBSCK,R4 ;STACK CHECK?
4444 013552 001402 BEQ 18$ ;NO
4445 013554 052711 000004 BIS #DD.SCK,(R1) ;YES
4446 ;
4447 013560 005711 18$: TST (R1) ;FATAL ERRROR DETECTED?
4448 013562 001402 BEQ 19$ ;NO-- GO ON
4449 013564 052710 000100 BIS #DV.LOG,(R0) ;YES-- SAY ERROR LOGGING NEEDED
4450 ;
4451 013570 032703 000004 19$: BIT #CDSHEM,R3 ;HOPPER EMPTY?
4452 013574 001402 BEQ 20$ ;NO-- GO ON
4453 013576 052711 000010 BIS #DD.HEM,(R1) ;YES
4454 ;
4455 013602 005711 20$: TST (R1) ;ANY ERROR BITS SET?
4456 013604 001012 BNE 21$ ;YES-- NOT STACKER FULL
4457 013606 032703 040000 BIT #CDSRCK,R3 ;IS THIS A READER CHECK?
4458 013612 001412 BEQ 23$ ;NO-- CERTAINLY NOT STACKER FULL
4459 013614 032737 000400 000000G BIT #CR.NSF,CRSTS ;WE DECIDE IT WASN'T STACKER FULL BEFORE?
4460 013622 001006 BNE 23$ ;YES-- CAN'T BE STACKER FULL NOW
4461 013624 052711 000020 BIS #DD.SFL,(R1) ;NO-- READER CHECK & NO ERRORS => STACKER FULL
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 53-2
SSTSCR (SEND CD-11 STATUS TO -10)
4462 013630 000403 BR 22$ ;STACKER-FULL-- GO ON
4463 ;
4464 013632 052737 000400 000000G 21$: BIS #CR.NSF,CRSTS ;FLAG THAT IT CAN'T BE STACKER FULL
4465 013640 22$:
4466 013640 23$:
4467 013640 012703 000000G 30$: MOV #CDST,R3 ;ADDRESS CD CSR
4468 013644 005721 TST (R1)+ ;POINT TO FIRST WORD OF DEVICE REGISTERS IN STATUS BLOCK
4469 013646 012721 000000C MOV #<CDDB+2-CDST>,(R1)+ ;SAVE SIZE OF FOLLOWING BLOCK
4470 013652 012321 31$: MOV (R3)+,(R1)+ ;MOVE A REGISTER
4471 013654 022701 000000C CMP #CRSTBK+CRSTLN,R1 ;MOVED 'EM ALL?
4472 013660 101374 BHI 31$ ;NO-- LOOP FOR ALL OF THEM
4473 ;
4474 ; SET UP REGISTERS FOR ..STIN TO SEND BLOCK TO -10:
4475 ; R0 -- POINTER TO STATUS BLOCK
4476 ; FIRST WORD IS HEADER: (HIGH BYTE) UNIT # (LOW BYTE) BYTE COUNT OF BLCOK
4477 ; R1 -- BIT15 (FOR INDIRECT FUNCTION) + FUNCTION CODE (BC.HDS)
4478 ; R2 -- EVENT FLAG TO SET WHEN BLOCK DONE (EF.CRS)
4479 ; R3 -- DEVICE CODE (D.CCDR)
4480 ;
4481 013662 105040 50$: CLRB -(R0) ;HIGH BYTE HEADER: UNIT # (ALWAYS 0)
4482 013664 112740 000000G MOVB #CRSTLN,-(R0) ;LOW BYTE: BYTE COUNT OF BLOCK (NOT INCLUDING HEADER)
4483 013670 012701 100000G MOV #BIT15+BC.HDS,R1 ;FUNCTION: HERE IS DEVICE STATUS (INDIRECT FLAVOR)
4484 013674 012702 000003 MOV #E.FCRS,R2 ;EVENT FLAG TO SET WHEN DONE
4485 013700 012703 000000G MOV #D.CCDR,R3 ;DEVICE CODE: CDR (OF COURSE)
4486 013704 042777 000004 000000G BIC #EF.CRS,@CREVFG ;CLEAR BUFFER AVAILABLE FLAG
4487 013712 CALL ..STIN ;SEND TO -10
013712 004737 000000G JSR PC,..STIN
4488 013716 103006 BCC 90$ ;OK-- DONE
4489 013720 052777 000004 000000G BIS #EF.CRS,@CREVFG ;FAILED-- BUFFER STILL AVAILABLE
4490 013726 052737 040000 000000G BIS #CR.SST,CRSTS ;ERROR-- TRY AGAIN LATER
4491 ;
4492 ; ALL DONE
4493 ;
4494 013734 90$: RETURN ;ALL DONE FORM SSTSCR
013734 000207 RTS PC
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 54
INITCR (INITIALIZE CD-11)
4496 .SBTTL INITCR (INITIALIZE CD-11)
4497 ;
4498 ;+
4499 ;
4500 ; INITCR IS CALLED FROM TASK INITIALIZATION AND FROM POWER-UP
4501 ; ROUTINE TO RESET THE CD-11.
4502 ;
4503 ;-
4504 ;
4505 013736 042737 021000 000000G INITCR::BIC #CR.IOP!CR.NXD,CRSTS ;NO LONGER I/O IN PROGRESS, ASSUME DEVICE EXISTS
4506 013744 012737 000400 000000G MOV #CDSPWC,@#CDST ;DO POWER-CLEAR
4507 013752 052777 000001 000000G CRDCLR: BIS #EF.CRC,@CREVFG ;FORCE HUNG CHECK
4508 013760 RETURN
013760 000207 RTS PC
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 55
INITCR (INITIALIZE CD-11)
4510
4511 .SBTTL CD-11 DRIVER COMMON SUBROUTINES MODULE
4512 ;
4513 ; COPYRIGHT (C) 1975, 1984, 1985 BY
4514 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
4515 ; ALL RIGHTS RESERVED.
4516 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
4517 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
4518 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
4519 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
4520 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
4521 ;
4522 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
4523 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4524 ; CORPORATION.
4525 ;
4526 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4527 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4528 ;
4529 ; MODULE: CD-11 DRIVER COMMON SUBROUTINES
4530 ;
4531 ; VERSION: 01-00
4532 ;
4533 ; AUTHOR: TOM PORCHER
4534 ;
4535 ; DATE: 25-AUG-75
4536 ;
4537 ;
4538 ; THIS MODULE CONTAINS:
4539 ;
4540 ; 1) $CDINT (CD-11 INTERRUPT SERVICE ROUTINE)
4541 ;
4542 ; 2) ..STCR (START CD-11)
4543 ;
4544 ; 3) ..SPCR (STOP CD-11)
4545 ;
4546 ; 4) ..AKCR (READ CARD)
4547 ;
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 56
$CDINT (CD-11 INTERRUPT SERVICE)
4549 .SBTTL $CDINT (CD-11 INTERRUPT SERVICE)
4550 ;
4551 ;+
4552 ;
4553 ; $CDINT IS CALLED FROM THE INTERRUPT VECTOR FOR THE CD-11.
4554 ; IT MERELY SAYS THAT I/O IS DONE BY SETTING CR.IOD IF I/O WAS
4555 ; IN PROGRESS (CR.IOP), AND REQUESTS STATUS IF AN ERROR HAS OCCURED.
4556 ;
4557 ;-
4558 ;
4559 013762 105737 000000G $CDINT:: TSTB @#CDST ;;;CD-11 READY?
4560 013766 100026 BPL 90$ ;;;NO-- JUST GO AWAY
4561 013770 032737 020000 000000G BIT #CR.IOP,CRSTS ;;;YES-- WERE WE I/O IN PROGRESS (READING)?
4562 013776 001415 BEQ 10$ ;;;NO-- GO ON (SEE IF ERROR)
4563 014000 042737 020000 000000G BIC #CR.IOP,CRSTS ;;;YES-- MUST BE DONE NOW
4564 014006 005737 000000G TST @#CDST ;;;[**]
4565 014012 100407 BMI 10$ ;;;[**]
4566 014014 005737 000000G TST @#CDCC ;;;DID WE READ A CARD?
4567 014020 001004 BNE 10$ ;;;NO-- MUST BE ERROR-- SEND STATUS NOW
4568 014022 052737 010000 000000G BIS #CR.IOD,CRSTS ;;;SO MAKE TASK KNOW WE ARE DONE
4569 ;
4570 014030 000403 BR 20$ ;;;[**]
4571 ;
4572 014032 052737 040000 000000G 10$: BIS #CR.SST,CRSTS ;;;YES-- SEND DEVICE STATUS
4573 014040 20$: CALL IODNCR ;;;SAY I/O DONE TO TASK
014040 004737 014130' JSR PC,IODNCR
4574 ;
4575 ; ALL DONE WITH INTERRUPT
4576 ;
4577 014044 000137 000000G 90$: JMP ..INTX ;;;FINISH OFF INTERRUPT
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 57
..STCR (START CD-11)
4579 .SBTTL ..STCR (START CD-11)
4580 ;
4581 ;+
4582 ;
4583 ; ..STCR IS CALLED FROM THE QUEUED PROTOCOL TASK ON A REQUEST
4584 ; FOR STATUS. NO OTHER REQUESTS TO THE CD-11 DRIVER ARE MADE THROUGH
4585 ; ..STCR.
4586 ;
4587 ; THE STATUS IS REQUESTED TO THE CD-11 DRIVER TASK BY SETTING
4588 ; CR.SST AND EF.CRD.
4589 ;
4590 ; CALLING SEQUENCE:
4591 ; R0 -- POINTER TO THREAD BLOCK (WILL JUST BE DEALLOCATED)
4592 ; R2 -- POINTER TO CRTBL (MUST BE CRTBL+0)
4593 ;
4594 ; EXIT CONDITIONS:
4595 ;
4596 ; NO REGISTERS MODIFIED
4597 ;
4598 ;-
4599 ;
4600 .ENABLE LSB
4601 014050 ..STCR::
4602 014050 CALL ..DECN ;DE-ALLOCATE BLOCK
014050 004737 000000G JSR PC,..DECN
4603 014054 020227 000000G CMP R2,#CRTBL+0 ;THIS CR0?
4604 014060 001030 BNE 99$ ;NO-- GO AWAY
4605 014062 052737 040000 000000G BIS #CR.SST,CRSTS ;YES-- MAKE STATUS HAPPEN
4606 014070 000417 BR IODNCR ; AND MAKE TASK RECOGNIZE IT
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 58
..SPCR (STOP CD-11)
4608 .SBTTL ..SPCR (STOP CD-11)
4609 ;
4610 ;+
4611 ;
4612 ; ..SPCR IS CALLED FROM THE QUEUED PROTOCOL TASK TO FLUSH
4613 ; INPUT FROM THE CD-11. ANY I/O THAT IS IN PROGRESS IS STOPPED,
4614 ; AND NO FURTHER DATA IS SENT TO THE -10.
4615 ;
4616 ; CALLING SEQUENCE:
4617 ; R2 -- POINTER TO CRTBL (MUST BE CRTBL+0)
4618 ;
4619 ; EXIT CONDITIONS:
4620 ;
4621 ; NO REGISTERS MODIFIED
4622 ;
4623 ;-
4624 ;
4625 014072 020227 000000G ..SPCR:: CMP R2,#CRTBL+0 ;THIS CR0?????
4626 014076 001021 BNE 99$ ;NO-- GO AWAY
4627 014100 CALL INITCR ;RESET THE CD-11
014100 004737 013736' JSR PC,INITCR
4628 014104 042737 034000 000000G BIC #CR.ACK!CR.IOD!CR.IOP,CRSTS ;SAY WE ARE HAPPY
4629 014112 RETURN
014112 000207 RTS PC
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 59
..AKCR (READ CARD)
4631 .SBTTL ..AKCR (READ CARD)
4632 ;
4633 ;+
4634 ;
4635 ; ..AKCR IS CALLED FROM THE QUEUED PROTOCOL TASK ON AN ACKNOWLEDGE
4636 ; REQUEST FROM THE -10. THIS IMPLIES THAT A CARD SHOULD BE READ.
4637 ;
4638 ; CALLING SEQUENCE:
4639 ; R2 -- POINTER TO CRTBL (MUST BE CRTBL+0)
4640 ;
4641 ; EXIT CONDITIONS:
4642 ;
4643 ; NO REGISTERS MODIFIED
4644 ;
4645 ;-
4646 ;
4647 014114 020227 000000G ..AKCR:: CMP R2,#CRTBL+0 ;IS THIS CR0???
4648 014120 001010 BNE 99$ ;NO-- GIVE UP
4649 014122 052737 004000 000000G BIS #CR.ACK,CRSTS ;YES-- SAY TO READ A CARD
4650 ; BR IODNCR ;SET I/O DONE TO SAY SOMETHING TO DO TO TASK
4651 ;
4652 ; HERE TO SET I/O DONE (EF.CRD) TO CR TASK TO INDICATE SOMETHING TO DO.
4653 ; ALSO SIGNIFICANT EVENT TO CAUSE CR TASK TO RUN.
4654 ;
4655 014130 052777 000002 000000G IODNCR: BIS #EF.CRD,@CREVFG ;SET EVENT FLAG
4656 014136 CALL ..DSEV ; AND MAKE SIGN. EVENT TO WAKE TASK
014136 004737 000000G JSR PC,..DSEV
4657 014142 99$: RETURN ; FROM IODNCR
014142 000207 RTS PC
4658 .DSABLE LSB
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 19:04 PAGE 60
..AKCR (READ CARD)
4660
4661 .TITLE INSTAL -- TASK INSTALLER FOR RSX-20F
4662 .SBTTL TITLE PAGE
4663 .IDENT /014440/
4664 ;
4665 ; COPYRIGHT (C) 1975, 1984, 1985 BY
4666 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
4667 ; ALL RIGHTS RESERVED.
4668 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
4669 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
4670 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
4671 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
4672 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
4673 ;
4674 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
4675 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
4676 ; CORPORATION.
4677 ;
4678 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
4679 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
4680 ;
4681 ; MODULE: INSTALL TASK FOR RSX-20F
4682 ;
4683 ; VERSION: 14-44
4684 ;
4685 ; AUTHOR: TOM PORCHER
4686 ;
4687 ; DATE: 1-OCT-75
4688 ;
4689 ;
4690 ; THIS MODULE CONTAINS:
4691 ;
4692 ; -- CODE TO INSTALL A TASK IN RSX-20F
4693 ;
4694 ; MODIFICATIONS:
4695 ;
4696 ; NO. DATE PROGRAMMER PURPOSE
4697 ; --- ---- ---------- -------
4698 ; 001 14-MAR-77 R. BELANGER DEFINE THE END OF "INSTAL"
4699 ; TO ALLOW DYNAMIC ALLOCATION
4700 ; OF FREE POOL SPACE
4701 ; 002 30-MAY-78 R. BELANGER MODIFY INSTAL TO MOUNT BOTH
4702 ; DX0: AND DX1: AS SY:
4703 ; 003 18-AUG-81 S. LEAPLINE EXTEND STACK AREA
4704 ; 004 28-AUG-81 S. LEAPLINE MAKE TYPBUF BIGGER
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 61
MACROS AND PARAMETERS
4706 .SBTTL MACROS AND PARAMETERS
4707 ;
4708 ; SETUP ASSEMBLY CONDITIONS
4709 ;
4710 .ENABLE AMA
4711 .LIST MEB
4712 ;
4713 ; MISC. MCALL'S
4714 ;
4715 .MCALL QIOSY$,ALUN$S,QIOW$S,RCVX$S,RQST$S,WSIG$S,.INH0,.ENB0,CALL,RETURN,PUSH,POP,.STKM,$DEF
4716 014144 $DEF
4717 014144 QIOSY$
4718 ;
4719 ; MACROS
4720 ;
4721 .MACRO MSG A,B
4722 .PSECT TEXT
4723 $$$=.
4724 .ASCIZ \B\
4725 .PSECT
4726 PUSH #$$$
4727 CALL TYPMSG
4728 .ENDM MSG
4729 ;
4730 .MACRO ERR A,B
4731 MSG <A>,<B>
4732 .ENDM ERR
4733 ;
4734 .MACRO ERRF A,B
4735 ERR <A>,<B>
4736 BR CLSFIL
4737 .ENDM ERRF
4738 ;
4739 .MACRO ERRN A,B
4740 ERR <A>,<B>
4741 BR RETNOD
4742 .ENDM ERRN
4743 ;
4744 ; PARAMETERS
4745 ;
4746 000062 DEFPRI= 50. ;DEFAULT TASK PRIORITY
4747 ;
4748 000050 U.SZ=50 ;LOCAL DEF OF U.SZ
4749 000001 SF.TA=1 ;LOCAL DEF OF TASK ACTIVE
4750 040000 SF.IR=40000 ;LOCAL DEF FOR INSTAL REQUESTED
4751 ; LOGICAL UNIT NUMBER ASSIGNMENTS
4752 ;
4753 000001 CTYLUN= 1 ;FOR I/O TO THE CTY **** MUST BE UNIT 1 ****
4754 000002 TSKLUN= 2 ;FOR I/O TO TASK IMAGE FILE
4755 ;
4756 ; EVENT FLAGS
4757 ;
4758 000001 E.FQIO= 1 ;WAIT FOR QUEUE I/O TO COMPLETE
4759 000001 EF.QIO=BIT0
4760 ;
4761 ; HEADER BLOCK DEFINITIONS
4762 ;
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 61-1
MACROS AND PARAMETERS
4763 000076 H.IPC= 76 ;INITIAL PC
4764 000100 H.ISP= 100 ;INITIAL SP
4765 000130 H.NLUN= 130 ;NUMBER OF LUNS FOR TASK
4766 000132 H.LUN= 132 ;START OF LUN TABLE AREA
4767 ;
4768 ; LABEL BLOCK DEFINITIONS
4769 ;
4770 000000 L$BTSK= 0 ;TASK NAME IN RAD50 (TWO WORDS)
4771 000004 L$BPAR= 4 ;PARTITION NAME IN RAD50 (TWO WORDS)
4772 000010 L$BFLG= 10 ;FLAG WORD
4773 000012 L$BPRI= 12 ;DEFAULT TASK RUN PRIORITY
4774 000014 L$BLDZ= 14 ;LOAD SIZE OF TASK IMAGE
4775 000016 L$BMXZ= 16 ;MAX SIZE OF TASK
4776 000020 L$BSA= 20 ;BASE ADDRESS OF TASK
4777 000022 L$BHRB= 22 ;HEADER RELATIVE BLOCK IN TASK FILE
4778 000024 L$BBLK= 24 ;# BLOCKS IN LABEL GROUP
4779 ;
4780 ; ACCESS CONTROL BITS
4781 ;
4782 000200 AC.ENA= BIT7 ;ENABLE ACCESS
4783 ;
4784 ; FILENAME BLOCK OFFSETS
4785 ;
4786 000000 N.FID= 0 ;FILE-ID / SEQUENCE #
4787 000006 N.FNAM= 6 ;FILENAME IN RADIX 50 (3 WORDS)
4788 000014 N.FTYP= 14 ;FILE TYPE IN RADIX 50
4789 000016 N.FVER= 16 ;FILE VERSION NUMBER
4790 000020 N.STAT= 20 ;FLAGS
4791 000022 N.NEXT= 22 ;CONTEXT SAVE FOR .FIND
4792 000024 N.DID= 24 ;DIRECTORY ID
4793 000034 S.DRFN=34 ;WORDS OF FILE-NAME BLOCK USED FOR IO.FNA
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 62
TASK DATA
4795 .SBTTL TASK DATA
4796 ;
4797 ; TASK HEADER AND STACK
4798 ;
4799 014144 INSHD:: .STKM 0,0,0,0,0,0,40,INSTAL,174000,INSTK
014212 000000 000000 000000 .WORD 0,0,0,0
014220 000000
014240 174000 015074' 014424' .WORD 174000,INSTAL,INSTK
014274 000005 .WORD 5
014276 000000G .WORD TTPEN
014300 000000 .WORD 0
014302 000000 .WORD 0
014304 000000 .WORD 0
014306 000000 .WORD 0
014310 000000 .WORD 0
014312 000000 .WORD 0
014314 000000 .WORD 0
014316 000000 .WORD 0
014320 000000 .WORD 0
014322 000000 .WORD 0
014424 000000 .WORD 0
014426 000000 .WORD 0
014430 000000 .WORD 0
014432 000000 .WORD 0
014434 000000 .WORD 0
014436 000000 .WORD 0
014440 015074' .WORD INSTAL
014442 174000 .WORD 174000
4800 ;
4801 014444 .BLKW 40
4802 014544 EXSP::
4803 ;
4804 ; LOCAL DATA
4805 ;
4806 014544 000 DXFLAG: .BYTE 0 ; +++002 SECOND DX: MOUNT FLAG
4807 014545 000 SYFLAG: .BYTE 0 ; +++002 SY: MOUNTED FLAG
4808 014546 RCVBLK: .BLKW 2 ;RECEIVE DATA BUFFER: TRASH
4809 014552 REQBLK: .BLKW 13. ;REQUEST BLOCK FROM EXEC
4810 014564' STDADR=REQBLK+12 ;ADDRESS OF OUR SYSTEM TASK DIRECTORY ENTRY
4811 014604 PUDADR: .BLKW 1 ;PUD ENTRY ADDRESS OF DEVICE WHERE TASK FILE WAS FOUND
4812 014606 LBLBLK: .BLKW 1 ;CURRENT VIRTUAL BLOCK NUMBER TO READ LABEL GROUP
4813 014610 LBLNUM: .BLKW 1 ;NUMBER OF BLOCKS IN LABEL GROUP
4814 014612 LBLBUF: .BLKW 1 ;ADDRESS OF LABEL BUFFER
4815 014614 LBLBFE: .BLKW 1 ;ADDRESS OF END OF BUFFER (LBLBUF)+512.
4816 014616 HDRBLK: .BLKW 1 ;CURRENT VIRTUAL BLOCK NUMBER TO READ HEADER
4817 014620 HDRBUF: .BLKW 1 ;ADDRESS OF HEADER BLOCK BUFFER
4818 014622 HDRBFE: .BLKW 1 ;ADDRESS OF END OF HEADER BUFFER
4819 014624 FILBLK: .BLKB S.DRFN ;FILE-NAME BLOCK FOR TASK IMAGE FILE
4820 014660 FILADR: .BLKW 2 ;STATISTISTICS BLOCK: DISK ADDRESS
4821 014664 QIOSTS: .BLKW 2 ;I/O STATUS
4822 014670 TYPBUF: .BLKB 100. ;BUFFER FOR CTY OUTPUT
4823 ;
4824 ; PURE DATA
4825 ;
4826 015034 367 ATCBLK: .BYTE -9. ;ATTIBUTE CONTROL: STATISTICS BLOCK, READ
4827 015035 004 .BYTE 4. ;4 BYTES OF INFO
4828 015036 014660' .WORD FILADR ;WHERE TO INFO TO
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 62-1
TASK DATA
4829 015040 000 000 .BYTE 0,0 ;END OF ATTRIBUTE CONTROL BLOCK
4830 ;
4831 015042 001 MNTBLK: .BYTE 1 ;ACP CONTROL: MOUNT FUNCTION
4832 015043 001 .BYTE 1 ;STRING LENGTH: 1
4833 015044 015046' .WORD 1$ ;ADDRESS OF STRING
4834 015046 072 1$: .ASCII /:/
4835 .EVEN
4836 ;
4837 ; DEVICE CONVERSION TABLE
4838 ;
4839 015050 124 111 124 CNVTBL: .ASCII /TI//TT/
015053 124
4840 015054 103 117 124 .ASCII /CO//TT/
015057 124
4841 015060 103 111 124 .ASCII /CI//TT/
015063 124
4842 015064 103 114 114 .ASCII /CL//LP/
015067 120
4843 015070 000000 000000 .WORD 0,0
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 63
FIND THE TASK FILE
4845 .SBTTL FIND THE TASK FILE
4846 ;
4847 ;
4848 ; HERE ON A REQUEST TO INSTALL A TASK FROM THE EXECUTIVE
4849 ;
4850 ; A SEND DATA PACKET IS SENT TO THIS TASK .INST. IN REQUEST
4851 ; FOR A TASK WHICH IS NOT CURRENTLY INSTALLED. THE PACKET
4852 ; HAS THE FOLLOWING FORMAT:
4853 ;
4854 ; WORD 0 TASK NAME IN RADIX 50 FORMAT
4855 ; 1 (SECOND HALF)
4856 ; 2 PARTITION NAME IN RADIX 50 (IF SPECIFIED, OTHERWISE 0)
4857 ; 3 (SECOND HALF)
4858 ; 4 RUN PRIORITY (IF SPECIFIED, OTHERWISE 0)
4859 ; 5 STD ADDRESS
4860 ;
4861 ;
4862 ; GET THE PACKET, OR EXIT IF NOTHING TO DO
4863 ;
4864 015074 INSTAL::
4865 015074 012706 014544' MOV #EXSP,SP ;;ADD EXTRA STACK SPACE
4866 015100 RCVX$S ,#RCVBLK ;;GET THE REQUEST OR EXIT IF NONE
015100 012746 014546' MOV #RCVBLK,-(SP)
015104 005046 CLR -(SP)
015106 005046 CLR -(SP)
015110 012746 MOV (PC)+,-(SP)
015112 023 004 .BYTE 19.,$$$T1
015114 104375 EMT 375
4867 015116 103766 BCS INSTAL ;OOPS-- TRY AGAIN
4868 ;
4869 015120 CALL CLRBUF ; AND NO BUFFERS ALLOCATED
015120 004737 016670' JSR PC,CLRBUF
4870 015124 105037 014544' CLRB DXFLAG ; +++002 RESET THE RX01 FLAG
4871 ;
4872 ; SETUP TO LOOK ON DEVICE SY FOR THE TASK FIRST
4873 ;
4874 015130 012705 177730G MOV #.PUDBA-U.SZ,R5 ;POINT TO START OF PUD'S TO SCAN IF NOT ON SY
4875 ;MINUS 1 FOR SY
4876 015134 012700 054523 MOV #"SY,R0 ; +++002 DEVICE NAME (U.DN) TO R0
4877 015140 005001 CLR R1 ; +++002 UNIT NUMBER (U.UN) TO R1
4878 ;
4879 015142 MNTSYD: ; +++002
4880 015142 ALUN$S #TSKLUN,R0,R1 ; +++002 ASSIGN DEVICE SY0 TO TASK LUN
015142 010146 MOV R1,-(SP)
015144 010046 MOV R0,-(SP)
015146 012746 000002 MOV #TSKLUN,-(SP)
015152 012746 MOV (PC)+,-(SP)
015154 007 004 .BYTE 7.,4
015156 104375 EMT 375
4881 015160 103557 BCS TASKNF ;NO DICE-- JUST TRY PUD SCAN
4882 ;
4883 015162 013704 000000G MOV .CRTSK,R4 ;GOT IT-- GET ADDRESS
4884 015166 016404 000000G MOV A.HA(R4),R4 ; OF OUR HEADER TO
4885 015172 016404 000136 MOV H.LUN+<4*<TSKLUN-1>>+0(R4),R4 ; FIND PUD ADDRESS OF SY
4886 015176 016404 000000G MOV U.RP(R4),R4 ; BUT GET THE REAL DEVICE PUD ENTRY
4887 015202 010437 014604' MOV R4,PUDADR ;SAVE THIS PUD ADDRESS IN CASE WE DO FIND THE TASK
4888 015206 005764 000000G TST U.VA(R4) ;IS SY MOUNTED?
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 63-1
FIND THE TASK FILE
4889 015212 001031 BNE SYMNTD ; +++002 YES -- DO THE SECOND FLOPPY CHECK
4890 ;
4891 ; SY IS NOT MOUNTED. WE MUST MOUNT IT BEFORE WE CAN FIND ANYTHING
4892 ;
4893 ; NOTE--
4894 ;
4895 ; IF THE SY: DEVICE BEING MOUNTED IS A FLOPPY (DX:) INSTAL WILL
4896 ; ATTEMPT TO MOUNT THE OTHER UNIT AS WELL.
4897 ;
4898 015214 012701 014552' MOV #RCVBLK+4,R1 ;GET A SCRATCH AREA
4899 015220 012741 MOV (PC)+,-(R1) ;STORE
4900 015222 003310 .RAD50 /ACP/ ; THE NAME OF AN ACP
4901 015224 016441 000000G MOV U.DACP(R4),-(R1) ; AND THE NAME OF THE ACP FOR THIS DEVICE
4902 015230 CALL ..FSTD ;FIND THE STD ENTRY ADDRESS OF THE ACP
015230 004737 000000G JSR PC,..FSTD
4903 015234 010264 000000G MOV R2,U.ACP(R4) ;STORE THE STD ADDRESS OF THE ACP
4904 ;
4905 015240 012700 014010 MOV #IO.APV,R0 ;SET TO DO PRIVILEGED ACP CONTROL
4906 015244 005001 CLR R1 ;NO FILE-ID
4907 015246 012702 015042' MOV #MNTBLK,R2 ;ACP CONTROL FUNCTION BLOCK TO MOUNT
4908 015252 005003 CLR R3 ;NO ACCESS
4909 015254 005004 CLR R4 ;NO FILE-NAME BLOCK
4910 015256 CALL FILQIO ;DO A MOUNT ON SY
015256 004737 017170' JSR PC,FILQIO
4911 015262 103005 BCC SYMNTD ;SUCCESS-- SAY WE DID THE MOUNT SO WE DON'T SCARE ANYBODY
4912 015264 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
015264 012746 000000' MOV #$$$,-(SP)
015270 004737 017250' JSR PC,TYPMSG
4913 015274 000511 BR TASKNF ;CERTAINLY NOT FOUND
4914 ;
4915 015276 SYMNTD:
4916 015276 013704 014604' MOV PUDADR,R4 ; +++002 PUD ADDRESS TO R4
4917 015302 016400 000000G MOV U.DN(R4),R0 ; +++002 DEVICE NAME TO R0
4918 015306 016401 000000G MOV U.UN(R4),R1 ; +++002 UNIT NUMBER TO R1
4919 015312 022700 054104 CMP #"DX,R0 ; +++002 DID WE TRY TO MOUNT A FLOPPY??
4920 015316 001011 BNE SYMNT1 ; +++002 NO -- GO ON
4921 015320 105737 014544' TSTB DXFLAG ; +++002 YES -- HAVE WE DONE BOTH??
4922 015324 001006 BNE SYMNT1 ; +++002 YES -- GO ON
4923 015326 105237 014544' INCB DXFLAG ; +++002 NO -- MARK SECOND TIME AROUND
4924 015332 005201 INC R1 ; +++002 SET UP FOR "OTHER" FLOPPY
4925 015334 042701 177776 BIC #^C1,R1 ; +++002 SO
4926 015340 000700 BR MNTSYD ; +++002 AND DO IT...
4927 ;
4928 015342 SYMNT1: ; +++002
4929 015342 105737 014545' TSTB SYFLAG ; +++002 SY: ALREADY MOUNTED??
4930 015346 001006 BNE FNDFIL ; +++002 YES -- GO ON
4931 015350 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 03-APR-86 19:04 PAGE 63-2
FIND THE TASK FILE
015350 012746 000020' MOV #$$$,-(SP)
015354 004737 017250' JSR PC,TYPMSG
4932 015360 105237 014545' INCB SYFLAG ; +++002 MARK MOUNT DONE
4933 ;
4934 ; SET UP FILENAME BLOCK TO LOOK FOR [5,5] DIRECTORY IN MFD
4935 ;
4936 015364 FNDFIL:
4937 015364 012702 014632' MOV #FILBLK+N.FNAM,R2 ;POINT TO FILE-NAME BLOCK
4938 015370 012712 MOV (PC)+,(R2) ;SET FILENAME TO
4939 015372 140123 .RAD50 /005/ ; 005005
4940 015374 012222 MOV (R2)+,(R2)+ ; BOTH HALVES
4941 015376 005022 CLR (R2)+ ;ONLY SIX CHARS
4942 015400 012722 MOV (PC)+,(R2)+ ;SET TYPE TO DIRECTORY
4943 015402 015172 .RAD50 /DIR/ ; FILE
4944 015404 005022 CLR (R2)+ ;VERSION, DON'T CARE
4945 015406 005022 CLR (R2)+ ;NO FLAGS
4946 015410 005022 CLR (R2)+ ;UNKOWN STUFF
4947 015412 012712 177777 MOV #-1,(R2) ;DIRECTORY ID:
4948 015416 012222 MOV (R2)+,(R2)+ ; (-1,-1) IS MFD
4949 015420 012722 MOV (PC)+,(R2)+ ;ALSO SET OWNER TO US
4950 015422 005 005 .BYTE 5,5 ;THE UIC
4951 ;
4952 015424 CALL FILFNA ;LOOK UP DIRECTORY FOR [5,5]
015424 004737 017020' JSR PC,FILFNA
4953 015430 103433 BCS TASKNF ;GIVE UP NOW IF NO DIRECTORY FOR US
4954 ;
4955 ; SETUP FILE-NAME BLOCK TO <TASK-NAME>.TSK[5,5]
4956 ;
4957 015432 012701 014552' MOV #REQBLK,R1 ;ADDRESS REQUEST BLOCK
4958 015436 012702 014632' MOV #FILBLK+N.FNAM,R2 ; AND FILE-NAME BLOCK FOR LOOKUP
4959 015442 021127 CMP (R1),(PC)+ ;IS THIS
4960 015444 131574 .RAD50 /.../ ; AN MCR FUNCTION TASK?
4961 015446 001004 BNE 20$ ;NO-- JUST LOOKUP THE TASK NAME
4962 015450 005721 TST (R1)+ ;YES-- SKIP THE DOTS
4963 015452 012122 MOV (R1)+,(R2)+ ;COPY THE LAST THREE CHARACTERS
4964 015454 005022 CLR (R2)+ ; AS THE WHOLE NAME
4965 015456 000402 BR 25$ ;PROCEED.
4966 ;
4967 015460 20$:
4968 015460 012122 MOV (R1)+,(R2)+ ;COPY TASK NAME
4969 015462 012122 MOV (R1)+,(R2)+ ; AS FILE NAME
4970 015464 25$:
4971 015464 005022 CLR (R2)+ ;ONLY SIX CHARACTERS
4972 015466 012722 MOV (PC)+,(R2)+ ;SET FILE TYPE
4973 015470 100003 .RAD50 /TSK/ ; TO A TASK FILE
4974 015472 005022 CLR (R2)+ ;NO VERSION CARE
4975 015474 005022 CLR (R2)+ ;NO FLAGS
4976 015476 005022 CLR (R2)+ ;NO NOTHING
4977 015500 012701 014624' MOV #FILBLK+N.FID,R1 ;POINT TO FILE-ID OF DIRECTORY
4978 015504 012122 MOV (R1)+,(R2)+ ;COPY FILE-ID
4979 015506 012122 MOV (R1)+,(R2)+ ; SEQ #
4980 015510 012122 MOV (R1)+,(R2)+ ; OWNER
4981 ;
4982 ; DO A FIND FILE IN DIRECTORY FUNCTION TO GET FILE ID
4983 ;
4984 015512 CALL FILFNA ;FIND THE TASK (IF IT'S THERE)
015512 004737 017020' JSR PC,FILFNA
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 63-3
FIND THE TASK FILE
4985 015516 103051 BCC TSKFND ;FOUND FILE-- GO READ IT AND CHECK IT OUT
4986 ;
4987 ; THE TASK FILE WAS NOT FOUND ON THIS DEVICE. CONTINUE TO SCAN PUD
4988 ; FOR ALL FILES-11 DEVICES SUCH THAT WE FIND THE TASK.
4989 ;
4990 015520 TASKNF:
4991 015520 062705 000050 ADD #U.SZ,R5 ;BUMP TO NEXT PUD ENTRY
4992 015524 020527 000000G CMP R5,#.PUDEA ;ARE WE AT THE END OF THE PUD?
4993 015530 103027 BHIS TNFERR ;YES-- TASK NOT FOUND
4994 015532 026505 000000G CMP U.RP(R5),R5 ;THIS DEVICE REDIRECTED?
4995 015536 001370 BNE TASKNF ;YES-- WE WILL FIND THE REAL DEVICE
4996 015540 132765 000000G 000000G BITB #UF.TL,U.FB(R5) ;TASK LOADS ALLOWED FROM THIS DEVICE?
4997 015546 001764 BEQ TASKNF ;NO-- DON'T EVEN TRY
4998 015550 005765 000000G TST U.VA(R5) ;VOLUME MOUNTED?
4999 015554 001761 BEQ TASKNF ;NO-- DON'T TRY TO FIND FILE
5000 ;
5001 015556 ALUN$S #TSKLUN,U.DN(R5),U.UN(R5) ;YES-- ASSIGN TH CURRENT DEVICE TO US
015556 016546 000000G MOV U.UN(R5),-(SP)
015562 016546 000000G MOV U.DN(R5),-(SP)
015566 012746 000002 MOV #TSKLUN,-(SP)
015572 012746 MOV (PC)+,-(SP)
015574 007 004 .BYTE 7.,4
015576 104375 EMT 375
5002 015600 103747 BCS TASKNF ;THIS SHOULD REALLY NEVER HAPPN
5003 015602 010537 014604' MOV R5,PUDADR ;OK-- SAVE THIS PUD ADDRESS IN CASE WE FIND THE FILE
5004 015606 000666 BR FNDFIL ;OK-- GO LOOK FOR THE TASK FILE
5005 ;
5006 015610 TNFERR:
5007 015610 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
015610 012746 000033' MOV #$$$,-(SP)
015614 004737 017250' JSR PC,TYPMSG
5008 015620 000137 016524' JMP RETNOD ;GIVE UP
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 64
INITIALIZE TASK FILE
5010 .SBTTL INITIALIZE TASK FILE
5011 ;
5012 ; FILE ERRORS END UP HERE, GOING ON THERE WAY TO THERE
5013 ;
5014 015624 000137 016510' FILERA: JMP FILERR ;OOPS
5015 ;
5016 ; ONE OF THE NODE/BUFFER REQUESTS FAILED-- GIVE ALL OF THEM BACK AND WAIT
5017 ;
5018 015630 BUFAIL: CALL RETBUF ;RETURN ALL BUFFERS
015630 004737 016634' JSR PC,RETBUF
5019 015634 WSIG$S ;WAIT FOR FREE
015634 012746 MOV (PC)+,-(SP)
015636 061 001 .BYTE 49.,1
015640 104375 EMT 375
5020 ;
5021 ; HERE WHEN A TASK FILE FOUND
5022 ;
5023 ; GET TWO BUFFERS FOR THE HEADER AND LABEL BLOCKS
5024 ;
5025 015642 012700 000000G TSKFND: MOV #.BGBUF,R0 ;POINT TO BIG FREE SPACE
5026 015646 012701 001000 MOV #512.,R1 ;SET TO GET A BLOCK
5027 015652 CALL ..ALC2 ;GET ONE
015652 004737 000000G JSR PC,..ALC2
5028 015656 103764 BCS BUFAIL ;FAILED-- RELEASE NODE AND WAIT
5029 015660 010037 014612' MOV R0,LBLBUF ;OK-- STORE THE ADDRESS FOR LABEL BLOCK BUFFER
5030 015664 060100 ADD R1,R0 ;GET END ADDRESS, TOO
5031 015666 010037 014614' MOV R0,LBLBFE ;SAVE THAT AS END OF BLOCK
5032 015672 012700 000000G MOV #.BGBUF,R0 ;POINT TO BIG FREE LIST HEAD
5033 ;
5034 015676 CALL ..ALC2 ;GET A HEADER BUFFER, TOO
015676 004737 000000G JSR PC,..ALC2
5035 015702 103752 BCS BUFAIL ;NONE-- GIVE IT ALL AWAY
5036 015704 010037 014620' MOV R0,HDRBUF ;GOT IT-- SAVE ADDRESS OF BLOCK
5037 015710 060100 ADD R1,R0 ;GET END, TOO
5038 015712 010037 014622' MOV R0,HDRBFE ;SAVE THE END OF HEADER BUFFER
5039 ;
5040 ; DO AN ACCESS FOR READ, WRITE ON THE TASK FILE THAT WE FOUND
5041 ;
5042 015716 012700 007000 MOV #IO.ACW,R0 ;DO AN ACCESS FOR READ,WRITE
5043 015722 012701 014624' MOV #FILBLK+N.FID,R1 ;FILE BLOCK NOW HAS FILE-ID, SEQ# IN IT
5044 015726 012702 015034' MOV #ATCBLK,R2 ;ATTRRIBUTE CONTROL BLOCK TO GET DISK ADDR OF FILE
5045 015732 012703 MOV (PC)+,R3 ;ENABLE
5046 015734 000 200 .BYTE 0,AC.ENA ; ACCESS
5047 015736 005004 CLR R4 ;NO FILE-NAME BLOCK NOW
5048 015740 CALL FILQIO ;DO THE ACCESS
015740 004737 017170' JSR PC,FILQIO
5049 015744 103727 BCS FILERA ;NO DICE-- GIVE UP
5050 ;
5051 ; READ THE FIRST LABEL BLOCK AND THE FIRST BLOCK OF THE TASK HEADER
5052 ;
5053 015746 005037 014606' CLR LBLBLK ;START WITH BLOCK 0 (WILL BUMP TO VBN 1)
5054 015752 CALL REDLBL ;READ THE LABEL BLOCK
015752 004737 017116' JSR PC,REDLBL
5055 015756 103722 BCS FILERA ;ERROR-- REPORT IT
5056 ;
5057 015760 016137 000022 014616' MOV L$BHRB(R1),HDRBLK ;GET FIRST BLOCK OF HEADER
5058 015766 CALL REDHDR ;READ THE FIRST BLOCK OF THE HEADER
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 64-1
INITIALIZE TASK FILE
015766 004737 017054' JSR PC,REDHDR
5059 015772 103714 BCS FILERA ;THAT'S-A-NO-GOOD
5060 ; BR SETSTD ;OK-- SET UP THE STD
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 65
SETUP STD ENTRY
5062 .SBTTL SETUP STD ENTRY
5063 ;
5064 ; WE HAVE THE LABEL BLOCK OF THE TASK FILE AND THE FIRST HEADER BLOCK
5065 ; R1 -- ADDRESS OF LABEL BLOCK BUFFER
5066 ; R2 -- ADDRESS OF HEADER BLOCK BUFFER
5067 ;
5068 015774 013704 014564' SETSTD: MOV STDADR,R4 ;ADDRESS OUR NEW-FOUND STD
5069 ;
5070 016000 012703 014556' MOV #REQBLK+4,R3 ;POINT TO THE REQUEST INFO BLOCK
5071 016004 022424 CMP (R4)+,(R4)+ ;MOVE OVER NAME
5072 016006 022121 CMP (R1)+,(R1)+ ;(L$BTSK+0) (L$BTSK+2) SKIP OVER TASK NAME IN LABEL BLOCK
5073 ;
5074 ; FIND WHICH PARTITION TO INSTALL THE TASK INTO
5075 ; IF REQUEST DID NOT SPECIFY ONE, USE THE ONE SPECIFIED IN THE TASK FILE
5076 ;
5077 016010 005713 TST (R3) ;PARTITION SPECIFIED IN REQUEST?
5078 016012 001001 BNE 20$ ;YES-- LOOK FOR THAT ONE
5079 016014 010103 MOV R1,R3 ;NO-- (L$BPAR) USE PARTITION FROM TASK FILE
5080 ;
5081 ; FIND THE PARTITION WHERE WE BELONG
5082 ;
5083 016016 022121 20$: CMP (R1)+,(R1)+ ;(L$BPAR+0) (L$BPAR+2) SKIP OVER PARTITION NAME IN LABEL
5084 016020 012705 000000G MOV #.TPDBA,R5 ;START AT BEGINNING OF THE TASK PARTITION DIRECTORY
5085 ;
5086 016024 026513 000000G 21$: CMP T.PN+0(R5),(R3) ;FIRST HALF OF NAME MATCH?
5087 016030 001004 BNE 25$ ;NO-- GO ON TO NEXT ENTRY
5088 016032 026563 000002G 000002 CMP T.PN+2(R5),2(R3) ;YES-- SECOND HALF MATCH?
5089 016040 001432 BEQ PARFND ;YES-- WE FOUND THE PARTITION
5090 ;
5091 016042 062705 000000G 25$: ADD #T.SZ,R5 ;NO-- BUMP TO NEXT ENTRY IN TPD
5092 016046 020527 000000G CMP R5,#.TPDEA ;ARE WE AT THE END OF THE DIRECTORY?
5093 016052 103764 BLO 21$ ;NO-- KEEP LOOKING FOR OUR PARTITION
5094 016054 010324 MOV R3,(R4)+ ;YES-- PARTITION NOT FOUND-- SAVE ADDR OF NAME FOR ERR
5095 016056 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
016056 012746 000052' MOV #$$$,-(SP)
016062 004737 017250' JSR PC,TYPMSG
016066 000416 BR CLSFIL
5096 ;
5098 016070 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
016070 012746 000076' MOV #$$$,-(SP)
016074 004737 017250' JSR PC,TYPMSG
016100 000411 BR CLSFIL
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 65-1
SETUP STD ENTRY
5100 ;
5101 016102 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
016102 012746 000125' MOV #$$$,-(SP)
016106 004737 017250' JSR PC,TYPMSG
016112 000404 BR CLSFIL
5102 ;
5103 016114 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
016114 012746 000142' MOV #$$$,-(SP)
016120 004737 017250' JSR PC,TYPMSG
5104 ;
5105 016124 000575 CLSFIL: BR FILERX ;CLOSE FILE IF FILE OPERN & ERROR
5106 ;
5107 ; PARTITION FOUND-- SAVE THE ADDRESS IN THE STD AND CHECK IT OUT
5108 ;
5109 016126 010524 PARFND: MOV R5,(R4)+ ;(S.TD) SET ADDRESS OF TPD ENTRY
5110 ;
5111 016130 022121 CMP (R1)+,(R1)+ ;(L$BFLG) SKIP TASK FLAGS
5112 016132 005724 TST (R4)+ ;(S.TF) FLAG TASK TO RETSTE ON EXIT
5113 ;
5114 016134 112724 000062 MOVB #DEFPRI,(R4)+ ;NONE-- USE DEFAULT
5115 ;
5116 016140 013700 014604' MOV PUDADR,R0 ;GET THE ADDRESS WHERE WE FOUND OUR FILE
5117 016144 012703 177777 MOV #-1,R3 ;START THE COUNT AT ZERO
5118 016150 162700 000000G SUB #.PUDBA,R0 ;MAKE R0 INDEX INTO PUD
5119 016154 005203 30$: INC R3 ;BUMP THE INDEX
5120 016156 162700 000050 SUB #U.SZ,R0 ;DIVIDE PUD ADDRESS
5121 016162 002374 BGE 30$ ; BY THE ENTRY SIZE
5122 016164 110324 MOVB R3,(R4)+ ;(S.DI) SYSTEM DISK INDICATOR
5123 ;
5124 016166 016524 000000G MOV T.BA(R5),(R4)+ ;(S.BA) BASE ADDRESS OF TASK (NO KT-11)
5128 016172 012114 MOV (R1)+,(R4) ;(L$BLDZ) (S.LZ) LOAD SIZE OF TASK
5129 016174 006314 ASL (R4) ;MAKE IT REAL ADDRESS (*64)
5130 016176 006314 ASL (R4) ; . .
5131 016200 006314 ASL (R4) ; . .
5132 016202 006314 ASL (R4) ; . .
5133 016204 006314 ASL (R4) ; . .
5134 016206 006324 ASL (R4)+ ; . .
5136 016210 012114 MOV (R1)+,(R4) ;(L$BMXZ) (S.MZ) MAXIMUM SIZE OF TASK
5138 016212 006314 ASL (R4) ;MAKE REAL ADDRESS (*64)
5139 016214 006314 ASL (R4) ; . .
5140 016216 006314 ASL (R4) ; . .
5141 016220 006314 ASL (R4) ; . .
5142 016222 006314 ASL (R4) ; . .
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 65-2
SETUP STD ENTRY
5143 016224 006314 ASL (R4) ; . .
5145 016226 026524 000000G CMP T.PZ(R5),(R4)+ ;WILL TASK FIT IN PARTITION SPECIFIED?
5146 016232 103723 BLO TTBERR ;NO-- DON'T TRY TO INSTALL IT
5148 016234 026521 000000G CMP T.BA(R5),(R1)+ ;(L$BSA) IS TASK ADDRESS SAME AS PARTITION ADDRESS?
5149 016240 001313 BNE IPAERR ;NO-- DON'T INSTALL IT
5153 ;
5154 016242 016224 000076 MOV H.IPC(R2),(R4)+ ;(S.PC) SET INTIAL PC FROM HEADER
5155 016246 016224 000100 MOV H.ISP(R2),(R4)+ ;(S.SP) ALSO INITIAL SP
5156 016252 022424 CMP (R4)+,(R4)+ ;MOVE OVER SEND/REQUEST LISTHEAD
5157 016254 005024 CLR (R4)+ ;(S.SS) SST VECTOR TABLE ADDRESS
5158 ;
5159 016256 013714 014660' MOV FILADR+0,(R4) ;(S.DL+0) DISK ADDRESS OF TASK IMAGE
5160 016262 012400 MOV (R4)+,R0 ;COPY IT IN CASE IT'S ZERO
5161 016264 013714 014662' MOV FILADR+2,(R4) ;(S.DL+2) SECOND HALF OF DISK ADDRESS
5162 016270 051400 BIS (R4),R0 ;WERE BOTH WORDS ZERO?
5163 016272 001710 BEQ TNCERR ;YES-- TASK FILE IS NOT CONTIGUOUS
5164 016274 062114 ADD (R1)+,(R4) ;(L$BHRB) + RELATIVE BLOCK IN FILE= REAL ADDRESS
5165 016276 005544 ADC -(R4) ;ADD THE CARRY BACK TO HIGH ORDER WORD
5166 ;
5167 016300 012137 014610' MOV (R1)+,LBLNUM ;(L$BBLK) SAVE # BLOCKS IN LABEL GROUP FOR LATER
5168 ; BR SETLUN ;NOW SET UP THE LUN'S
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 66
SETUP LOGICAL UNIT TABLE FOR TASK
5170 .SBTTL SETUP LOGICAL UNIT TABLE FOR TASK
5171 ;
5172 ; LOOP THROUGH SECOND AND THIRD LABEL BLOCKS FOR ALL 255 LUNS
5173 ; R2 -- ADDRESS OF HEADER BLOCK BUFFER
5174 ;
5175 016304 062702 000130 SETLUN: ADD #H.NLUN,R2 ;POINT TO # LUNS, AND LUN TABLE IN HEADER
5176 016310 012205 MOV (R2)+,R5 ;(H.NLUN) GET # LUNS TO SET UP, POINT TO LUN TABLE IN HEADER
5177 016312 001471 BEQ 80$ ;NONE-- JUST CLOSE FILE
5178 016314 013701 014614' MOV LBLBFE,R1 ;FORCE READ OF NEXT LABEL BLOCK
5179 ;
5180 ; SEE IF WE MUST WRITE OUT THIS BLOCK AND READ NEXT BLOCK OF HEADER
5181 ;
5182 016320 10$: CALL NXTHDR ;GO ON TO NEXT BLOCK?
016320 004737 017040' JSR PC,NXTHDR
5183 016324 103471 BCS FILERR ;FAILED
5184 ;
5185 ; SEE IF WE NEED TO READ ANOTHER LABEL BLOCK
5186 ;
5187 016326 020137 014614' 20$: CMP R1,LBLBFE ;HAVE WE FINISHED THIS LABEL BLOCK?
5188 016332 103410 BLO 30$ ;NO-- JUST GET ANOTHER ENTRY FROM IT
5189 016334 005004 CLR R4 ;YES-- ASSUME NO MORE TO DO
5190 016336 023737 014606' 014610' CMP LBLBLK,LBLNUM ;HAVE WE RUN OUT OF LABEL BLOCKS?
5191 016344 002043 BGE 60$ ;YES-- READ NO MORE-- JUST ZERO
5192 016346 CALL REDLBL ;YES-- READ NEXT ONE
016346 004737 017116' JSR PC,REDLBL
5193 016352 103456 BCS FILERR ;SPLAT
5194 ;
5195 ; FIND THE PUD ADDRESS OF THE DEVICE FROM THE LABEL BLOCK
5196 ;
5197 016354 005711 30$: TST (R1) ;IS THIS A ZERO ENTRY?
5198 016356 001434 BEQ 40$ ;YES-- JUST STORE ZERO
5199 016360 013704 014604' MOV PUDADR,R4 ;ASSUME DEVICE OV
5200 016364 022711 053117 CMP #"OV,(R1) ;THIS OVERLAY DEVICE?
5201 016370 001430 BEQ 50$ ;YES-- WE HAVE PUD ADDRESS
5202 ;
5203 016372 012704 000000G 31$: MOV #.PUDBA,R4 ;NO-- START SEARCHING THROUGH THE PUD
5204 ;
5205 016376 021164 000000G 33$: CMP (R1),U.DN(R4) ;THIS OUR DEVICE?
5206 016402 001004 BNE 35$ ;NO-- TRY ANOTHER ONE
5207 016404 126164 000002 000000G CMPB 2(R1),U.UN(R4) ;YES-- RIGHT UNIT #
5208 016412 001417 BEQ 50$ ;YES-- WE HAVE PUD ADDRESS IN R4
5209 ;
5210 016414 062704 000050 35$: ADD #U.SZ,R4 ;NO-- BUMP TO NEXT PUD ENTRY
5211 016420 020427 000000G CMP R4,#.PUDEA ;END OF PUD YET?
5212 016424 103764 BLO 33$ ;NO-- LOOK AT THIS ENTRY
5213 ;
5214 016426 012704 015050' MOV #CNVTBL,R4 ;ENTRY NOT FOUND-- SEE IF CONVERTIBLE DEVICE
5215 ;
5216 016432 022411 37$: CMP (R4)+,(R1) ;DEVICE MATCH?
5217 016434 001403 BEQ 38$ ;YES-- GET THE CONVERTED NAME AND GO AWAY
5218 016436 005724 TST (R4)+ ;NO-- IS THIS END OF TABLE?
5219 016440 001374 BNE 37$ ;NO-- KEEP ON LOOKING
5220 016442 000402 BR 40$ ;YES-- DEVICE NOT FOUND-- STORE 0
5221 ;
5222 016444 011411 38$: MOV (R4),(R1) ;DEVICE FOUND IN CONVERSION TABLE--
5223 016446 000751 BR 31$ ; SAVE AS NEW DEVICE AND SCAN PUD FOR IT
5224 ;
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 66-1
SETUP LOGICAL UNIT TABLE FOR TASK
5225 016450 005004 40$: CLR R4 ;ENTRY NOT FOUND-- CLEAR THE PUD ADDRESS
5226 ;
5227 016452 022121 50$: CMP (R1)+,(R1)+ ;SKIP OVER ENTRY IN LABEL BLOCK
5228 ;
5229 016454 010422 60$: MOV R4,(R2)+ ;STORE THE PUD ADDRESS IN LUT IN HEADER
5230 016456 CALL NXTHDR ;SEE IF WE NEED ANOTHER HEADER BLOCK
016456 004737 017040' JSR PC,NXTHDR
5231 016462 103412 BCS FILERR ;I/O ERROR-- GIVE UP
5232 016464 005022 CLR (R2)+ ;CLEAR SECOND WORD OF HEADER ENTRY
5233 ;
5234 016466 077564 SOB R5,10$ ;LOOP FOR ALL LUNS IN HEADER
5235 016470 CALL WRTHDR ;WRITE OTU THE LAST HEADER BLOCK
016470 004737 017066' JSR PC,WRTHDR
5236 016474 103405 BCS FILERR ;FAILED
5237 ;
5238 ; ALL DONE WITH THE TASK FILE-- CLOSE IT UP
5239 ;
5240 016476 80$: CALL RETBUF ;RETURN THE BUFFERS
016476 004737 016634' JSR PC,RETBUF
5241 016502 CALL FILCLS ;CLOSE THE FILE
016502 004737 017156' JSR PC,FILCLS
5242 016506 103075 BCC REQTSK ;OK-- GO PUT US IN THE STD
5243 ;
5244 ; ALL FILE I/O ERRORS END UP HERE
5245 ;
5246 016510 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
016510 012746 000173' MOV #$$$,-(SP)
016514 004737 017250' JSR PC,TYPMSG
5247 016520 FILERX: CALL FILCLS ;GIVE CLOSE A TRY
016520 004737 017156' JSR PC,FILCLS
5248 ;
5249 016524 012746 017014' RETNOD: MOV #ALLDON,-(SP) ;RETURN ALL BUFFERS AND STD NODE
5250 016530 .INH0 ;;OTHER ERROR-- MUST REMOVE TASK FROM THE STD
016530 013746 177776 MOV @#PS,-(SP)
016534 112737 000140 177776 MOVB #140,@#PS
5251 016542 012701 014552' MOV #REQBLK,R1 ;FIND THE STD OF THIS TASK
5252 016546 CALL ..FSTD
016546 004737 000000G JSR PC,..FSTD
5253 016552 001015 BNE 60$ ;CAN'T FIND IT?????
5254 016554 162737 000002 000000G SUB #2,.STDTZ ;;ONE LESS ENTRY IN THE STD NOW
5255 016562 013705 000000G MOV .STDTZ,R5 ;; SO GET NEW LENGTH
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 66-2
SETUP LOGICAL UNIT TABLE FOR TASK
5256 016566 063705 000000G ADD .STDTA,R5 ;;MAKE ADDRESS OF LAST ENTRY IN THE TABLE
5257 016572 005743 TST -(R3) ;;BACK UP THE POINTER
5258 ;
5259 016574 020305 50$: CMP R3,R5 ;;AT END OF TABLE YET?
5260 016576 101003 BHI 60$ ;;YES-- ALL DONE
5261 016600 016323 000002 MOV 2(R3),(R3)+ ;;NO-- MOVE ANOTHER ENTRY DOWN
5262 016604 000773 BR 50$ ;;LOOP TO MOVE WHOLE TABLE DOWN
5263 ;
5264 016606 60$: .ENB0 ;;RESTORE TASK SWITCHING
016606 004737 000000G JSR PC,..ENB0
5265 ;
5266 ; RETALL -- RETURN ALL BUFFERS AND STD NODE
5267 ;
5268 016612 013701 014564' RETALL: MOV STDADR,R1 ;GET THE STD ADDRESS
5269 016616 001406 BEQ RETBUF ;NONE-- JUST RETURN THE BUFFERS
5270 016620 012704 000000G MOV #.POLLH,R4 ;ADD IT TO THE FREE POOL
5271 016624 CALL ..NADD ;PUT IT BACK
016624 004737 000000G JSR PC,..NADD
5272 016630 005037 014564' CLR STDADR ;NO MORE STD NODE
5273 ;
5274 016634 012701 001000 RETBUF: MOV #512.,R1 ;SET TO RETURN A BLOCK
5275 016640 012703 000000G MOV #.BGBUF,R3 ; TO THE BIG BUFFER LIST HEAD
5276 016644 013700 014612' MOV LBLBUF,R0 ;GET ADDRESS OF LABEL BLOCK BUFFER
5277 016650 001402 BEQ 20$ ;NONE-- TRY HEADER BUFFER
5278 016652 CALL ..DEC2 ;DE-ALLOCATE THE BUFFER
016652 004737 000000G JSR PC,..DEC2
5279 ;
5280 016656 013700 014620' 20$: MOV HDRBUF,R0 ;ALSO THE HEADER BUFFER
5281 016662 001402 BEQ CLRBUF ;NONE-- JUST CLEAN UP
5282 016664 CALL ..DEC2 ;DE-ALLOCATE THE HEADER BUFFER
016664 004737 000000G JSR PC,..DEC2
5283 ;
5284 016670 005037 014612' CLRBUF: CLR LBLBUF ;NO MORE LABEL BUFFER
5285 016674 005037 014620' CLR HDRBUF ; OR HEADER BUFFER
5286 016700 RETURN ;THAT'S IT
016700 000207 RTS PC
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 67
RE-REQUEST TASK
5288 .SBTTL RE-REQUEST TASK
5289 ;
5290 ; TASK REQUEST BLOCK IS STILL SET UP FROM CALL
5291 ;
5292 016702 REQTSK: .INH0 ;INHIBIT TASK SWITCHING
016702 013746 177776 MOV @#PS,-(SP)
016706 112737 000140 177776 MOVB #140,@#PS
5293 016714 013704 014564' MOV STDADR,R4 ;FIND STD ADDRESS
5294 016720 042764 040001 000000G BIC #SF.TA!SF.IR,S.FW(R4) ;CLEAR ACTIVE BIT SO IT CAN BE REQUESTED
5295 016726 012700 014552' MOV #REQBLK,R0
5296 016732 RQST$S R0,,REQBLK+10 ;RE-REQUEST TASK
016732 005046 CLR -(SP)
016734 013746 014562' MOV REQBLK+10,-(SP)
016740 005046 CLR -(SP)
016742 005046 CLR -(SP)
016744 016046 000002 MOV 2(R0),-(SP)
016750 011046 MOV (R0),-(SP)
016752 012746 MOV (PC)+,-(SP)
016754 013 007 .BYTE 11.,7
016756 104375 EMT 375
5297 016760 .ENB0 ;ENABLE TASK SWITCHING
016760 004737 000000G JSR PC,..ENB0
5298 016764 005737 000000G TST $DSW ;SUCCESS/FAILURE?
5299 016770 100011 BPL ALLDON ;SUCCESS -- ALL OK
5300 ;
5301 ; REQUEST FAILED-- IF TASK ALREADY ACTIVE, THAT'S OK
5302 ;
5303 016772 023727 000000G 177771 CMP $DSW,#IE.ACT ;TASK ALREADY ACTIVE?
5304 017000 001405 BEQ ALLDON ;YES-- WE ARE HAPPY
5305 ;
5306 017002 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
017002 012746 000251' MOV #$$$,-(SP)
017006 004737 017250' JSR PC,TYPMSG
017012 000644 BR RETNOD
5307 ;
5308 ; ALL DONE-- GO BACK TO WAITING
5309 ;
5310 017014 000137 015074' ALLDON: JMP INSTAL ;RETURN AND EXIT IF NO MORE TO DO
5311 ;
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 68
TASK FILE I/O ROUTINES
5313 .SBTTL TASK FILE I/O ROUTINES
5314 ;
5315 ; FILFNA -- DO A 'FIND NAME IN DIRECTORY' FUNCTION TO FIND A FILE
5316 ; FILBLK -- FILE-NAME BLOCK SET UP FOR DESIRED FILE
5317 ;
5318 017020 012700 004400 FILFNA: MOV #IO.FNA,R0 ;DO A FIND FILE IN DIRECTORY
5319 017024 005001 CLR R1 ;NO FILE-ID
5320 017026 005002 CLR R2 ;NO ATTRIBUTES
5321 017030 005003 CLR R3 ;NO ACCESS
5322 017032 012704 014624' MOV #FILBLK,R4 ;SET TO DO IT TO THE RIGHT FILE
5323 017036 000454 BR FILQIO ;GO DO IT AND RETURN
5324 ;
5325 ; NXTHDR -- ROUTINE TO WRITE OUT CURRENT HEADER BLOCK AND READ NEXT ONE
5326 ; IF AT END OF BLOCK.
5327 ; R2 -- POINTER TO HEADER BUFFER (HDR). UPDATED TO HDR+0 IF END OF BLOCK
5328 ;
5329 017040 023702 014622' NXTHDR: CMP HDRBFE,R2 ;END OF HEADER BUFFER?
5330 017044 101023 BHI RETXXX ;NO-- JUST RETURN
5331 017046 CALL WRTHDR ;YES-- WRITE OUT OLD HEADER
017046 004737 017066' JSR PC,WRTHDR
5332 017052 103420 BCS RETXXX ;ERROR-- RETURN WITH IT
5333 ; BR REDHDR ;READ THE NEXT ONE
5334 ;
5335 ; REDHDR -- READ NEXT HEADER BLOBK
5336 ;
5337 017054 005237 014616' REDHDR: INC HDRBLK ;BUMP TO NEXT BLOCK OF HEADER
5338 017060 012700 010400 MOV #IO.RVB,R0 ;DO A READ
5339 017064 000402 BR RWRHDR ;DO IT TO HEADER BLOCK
5340 ;
5341 ; WRTHDR -- WRITE CURRENT HEADER BLOCK
5342 ;
5343 017066 012700 011000 WRTHDR: MOV #IO.WVB,R0 ;DO A WRITE
5344 ; BR RWRHDR ;READ/WRITE A BLOCK
5345 ;
5346 ; RWRHDR -- READ/WRITE HEADER BLOCK
5347 ; R0 -- READ/WRTIE FUNCTION CODE
5348 ;
5349 017072 RWRHDR: PUSH R1 ;SAVE THE LABEL POINTER
017072 010146 MOV R1,-(SP)
5350 017074 013701 014620' MOV HDRBUF,R1 ;POINT TO HEADER BUFFER
5351 017100 013703 014616' MOV HDRBLK,R3 ;SET PROPER VBN
5352 017104 CALL RWRBLK ;DO A BLOCK
017104 004737 017150' JSR PC,RWRBLK
5353 017110 010102 MOV R1,R2 ;POINT R2 TO HDR BUFFER
5354 017112 POP R1 ;RESTORE LABEL POINTER
017112 012601 MOV (SP)+,R1
5355 017114 RETXXX: RETURN ;WITH CC-C SET/CLEAR BY RWRBLK
017114 000207 RTS PC
5356 ;
5357 ; REDLBL -- READ NEXT LABEL BLOCK
5358 ;
5359 017116 REDLBL: PUSH R2 ;SAVE THE HEADER POINTER
017116 010246 MOV R2,-(SP)
5360 017120 012700 010400 MOV #IO.RVB,R0 ;DO A READ
5361 017124 013701 014612' MOV LBLBUF,R1 ; TO THE LABEL BUFFER
5362 017130 005237 014606' INC LBLBLK ;BUMP TO NEXT LABEL BLOCK
5363 017134 013703 014606' MOV LBLBLK,R3 ; AND SAVE AS VBN TO READ
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 68-1
TASK FILE I/O ROUTINES
5364 017140 CALL RWRBLK ;READ THE BLOCK
017140 004737 017150' JSR PC,RWRBLK
5365 017144 POP R2 ;RESTORE THE HEADER POINTER
017144 012602 MOV (SP)+,R2
5366 017146 RETURN ;CC-C SET/CLEAR BY RWRBLK, R1 POINTS TO LBL BUFFER
017146 000207 RTS PC
5367 ;
5368 ; RWRBLK -- READ/WRITE A BLOCK
5369 ; R0 -- READ/WRITE FUNCTION CODE
5370 ; R1 -- ADDRESS OF BUFFER
5371 ; R3 -- VIRTUAL BLOCK NUMBER IN TASK FILE
5372 ;
5373 017150 012702 001000 RWRBLK: MOV #512.,R2 ;SET TO READ ONE BLOCK
5374 017154 000405 BR FILQIO ;DO IT TO TASK FILE
5375 ;
5376 ; FILCLS -- DE-ACCESS THE TASK FILE
5377 ;
5378 017156 012700 010000 FILCLS: MOV #IO.DAC,R0 ;DE-ACCESS FUNCTION
5379 017162 005001 CLR R1 ;NO FILE-ID BLOCK
5380 017164 005002 CLR R2 ;NO ATTRIBUTES ALLOWED
5381 017166 005004 CLR R4 ;NO FILE-NAME BLOCK EITHER
5382 ; BR FILQIO ;DO IT TO TASK FILE
5383 ;
5384 ; FILQIO -- PERFORM QUEUE I/O FUNCTION ON THE TASK FILE
5385 ; R0 -- FUNCTION CODE
5386 ; R1 -- PARAMETER #1 (FILE-ID BLOCK OR BUFFER ADDRESS)
5387 ; R2 -- PARAMETER #2 (ATTRIBUTE CONTROL BLOCK OR BUFFER LENGTH)
5388 ; R3 -- PARAMETER #5 (ACCESS CONTROL OR VIRTUAL BLOCK NUMBER)
5389 ; R4 -- PARAMETER #6 (FILENAME BLOCK)
5390 ;
5391 ; CC-C CLEAR IF SUCCESS, SET IF FAILURE.
5392 ;
5393 017170 FILQIO: QIOW$S R0,#TSKLUN,#E.FQIO,,#QIOSTS,,<R1,R2,,,R3,R4>
017170 010446 MOV R4,-(SP)
017172 010346 MOV R3,-(SP)
017174 005046 CLR -(SP)
017176 005046 CLR -(SP)
017200 010246 MOV R2,-(SP)
017202 010146 MOV R1,-(SP)
017204 005046 CLR -(SP)
017206 012746 014664' MOV #QIOSTS,-(SP)
017212 005046 CLR -(SP)
017214 112716 000001 MOVB #E.FQIO,(SP)
017220 012746 000002 MOV #TSKLUN,-(SP)
017224 010046 MOV R0,-(SP)
017226 012746 MOV (PC)+,-(SP)
017230 003 014 .BYTE 3,$$$T1
017232 104375 EMT 375
5394 017234 103404 BCS 90$ ;GIVE UP
5395 ;
5396 017236 105737 014664' 30$: TSTB QIOSTS+0 ;I/O SUCCESSFUL?
5397 017242 002001 BGE 90$ ;YES-- JUST RETURN WITH CC-C CLEAR
5398 ;
5399 017244 000261 80$: SEC ;NO-- RETURN ERROR
5400 017246 90$: RETURN ;RETURN FROM FILQIO
017246 000207 RTS PC
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 69
ERROR PROCESSING
5402 .SBTTL ERROR PROCESSING
5403 ;
5404 ; TYPMSG -- TYPE A MESSAGE
5405 ;
5406 ; CALL: PUSH #<ADDRESS OF ASCIZ TEXT>
5407 ; CALL TYPMSG
5408 ;
5409 017250 TYPMSG: PUSH <R0,R1,R2,R3,R4> ;SAVE USED REGISTERS
017250 010046 MOV R0,-(SP)
017252 010146 MOV R1,-(SP)
017254 010246 MOV R2,-(SP)
017256 010346 MOV R3,-(SP)
017260 010446 MOV R4,-(SP)
5410 017262 012704 014670' MOV #TYPBUF,R4 ;SET ADDRESS OF TYPEOUT BUFFER
5411 017266 012703 017560' MOV #INSMSG,R3 ;GET 'INS --'
5412 017272 CALL PUTSTR ;PUT IT IN STRING
017272 004737 017452' JSR PC,PUTSTR
5413 017276 016603 000014 MOV 14(SP),R3 ;GET ADDRESS OF THE TEXT TO TYPE
5414 017302 CALL PUTSTR ;TYPE IT
017302 004737 017452' JSR PC,PUTSTR
5415 017306 012703 017572' MOV #TSKMSG,R3 ;GET 'TSK= '
5416 017312 CALL PUTSTR ;PUT IT TOO
017312 004737 017452' JSR PC,PUTSTR
5417 017316 012703 014552' MOV #REQBLK,R3 ;POINT TO .RAD50 /TASK-NAME/
5418 017322 CALL PUTR50 ;PUT IT IN THERE, TOO
017322 004737 017462' JSR PC,PUTR50
5419 017326 013702 014564' MOV STDADR,R2 ;GET THE ADDRESS OF THE STD
5420 017332 016202 000000G MOV S.TD(R2),R2 ;GET ADDRESS OF .RAD50/PARTITION/
5421 017336 001407 BEQ 20$ ;NONE-- SKIP THIS
5422 017340 012703 017601' MOV #PARMSG,R3 ;SAY 'PAR= '
5423 017344 CALL PUTSTR ; . .
017344 004737 017452' JSR PC,PUTSTR
5424 017350 010203 MOV R2,R3 ;GET THE NAME ADDRESS
5425 017352 CALL PUTR50 ;PUT IT IN STRING
017352 004737 017462' JSR PC,PUTR50
5426 ;
5427 017356 112724 000012 20$: MOVB #12,(R4)+ ;STORE LF
5428 017362 112724 000015 MOVB #15,(R4)+ ;STORE CR
5429 017366 012700 014670' MOV #TYPBUF,R0 ;GET ADDRESS OF BUFFER BACK
5430 017372 160004 SUB R0,R4 ;COMPUTE LENGTH OF STRING
5431 017374 QIOW$S #IO.WLB,#CTYLUN,#E.FQIO,,,,<R0,R4,#40>
017374 012746 000040 MOV #40,-(SP)
017400 010446 MOV R4,-(SP)
017402 010046 MOV R0,-(SP)
017404 005046 CLR -(SP)
017406 005046 CLR -(SP)
017410 005046 CLR -(SP)
017412 112716 000001 MOVB #E.FQIO,(SP)
017416 012746 000001 MOV #CTYLUN,-(SP)
017422 012746 000400 MOV #IO.WLB,-(SP)
017426 012746 MOV (PC)+,-(SP)
017430 003 011 .BYTE 3,$$$T1
017432 104375 EMT 375
5432 017434 POP <R4,R3,R2,R1,R0> ;RESTORE THE REGISTERS
017434 012604 MOV (SP)+,R4
017436 012603 MOV (SP)+,R3
017440 012602 MOV (SP)+,R2
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 69-1
ERROR PROCESSING
017442 012601 MOV (SP)+,R1
017444 012600 MOV (SP)+,R0
5433 017446 POP (SP) ;RESTORE PC OVER MESSAGE ADDRESS
017446 012616 MOV (SP)+,(SP)
5434 017450 RETURN ;THAT'S IT FOR TYPMSG
017450 000207 RTS PC
5435 ;
5436 ; PUTSTR -- PUT STRING IN TYPE-OUT BUFFER
5437 ; R3 -- ADDRESS OF ASCIZ STRING
5438 ; R4 -- CURRENT POINTER TO TYPE-OUT BUFFER
5439 ;
5440 017452 112324 PUTSTR: MOVB (R3)+,(R4)+ ;COPY A CHARACTER
5441 017454 001376 BNE PUTSTR ; UNTIL ASCIZ
5442 017456 105744 TSTB -(R4) ;BACK OVER ZERO BYTE
5443 017460 RETURN ;RETURN FROM PUTSTR
017460 000207 RTS PC
5444 ;
5445 ; PUTR50 -- PUT RADIX 50 NAME IN TYPE-OUT BUFFER
5446 ; R3 -- ADDRESS OF TWO-WORD RADIX 50 BLOCK
5447 ; R4 -- CURRENT POINTER TO TYPE-OUT BUFFER
5448 ;
5449 017462 012300 PUTR50: MOV (R3)+,R0 ;GET FIRST 3 CHARS
5450 017464 CALL PUTR51 ;TYPE 'EM
017464 004737 017472' JSR PC,PUTR51
5451 017470 012300 MOV (R3)+,R0 ;GET NEXT THREE CHARS
5452 ; BR PUTR51 ;PUT THEM, TOO
5453 ;
5454 ; PUTR51 -- PUT 3 RADIX 50 CHARACTERS IN TYPE-OUT BUFFER
5455 ; R0 -- RADIX 50 TEXT
5456 ; R4 -- CURRENT POINTER TO TYPE-OUT BUFFER
5457 ;
5458 017472 012702 017534' PUTR51: MOV #T50TBL,R2 ;POINT TO TABLE OF DIVISORS
5459 ;
5460 017476 012201 20$: MOV (R2)+,R1 ;GET NEXT DIVISOR
5461 017500 001414 BEQ 90$ ;THREE HAVE BEEN DONE-- RETURN
5462 017502 CALL $DIV ;DIVIDE CURRENT TEXT BY 50**N
017502 004737 000032' JSR PC,$DIV
5463 017506 PUSH R1 ;SAVE THE REMAINDER
017506 010146 MOV R1,-(SP)
5464 017510 012701 017544' MOV #R50TBL,R1 ;POINT TO CONVERSION TABLE
5465 ;
5466 017514 061100 30$: ADD (R1),R0 ;CONVERT THE CHARACTER
5467 017516 105721 TSTB (R1)+ ;SKIP THE BYTE
5468 017520 120021 CMPB R0,(R1)+ ;HAVE WE FOUND THE CHAR YET?
5469 017522 103774 BLO 30$ ;NO-- LOOP UNTIL WE DO
5470 ;
5471 017524 110024 MOVB R0,(R4)+ ;YES-- SAVE THE CHAR IN TEXT
5472 017526 POP R0 ;RESTORE LAST REMAINDER AS NEW DIVIDEND
017526 012600 MOV (SP)+,R0
5473 017530 000762 BR 20$ ;GET ANOTHER CHARACTER
5474 ;
5475 017532 90$: RETURN ;FROM PUTR50/PUTR51
017532 000207 RTS PC
5476 ;
5477 017534 003100 000050 000001 T50TBL: .WORD 50*50,50,1,0 ;TABLE OF DIVISORS
017542 000000
5478 ;
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 69-2
ERROR PROCESSING
5479 017544 022 060 R50TBL: .BYTE <'0-36>-<50-50>,'0 ;36-47: 0-9
5480 017546 366 045 .BYTE <'%-35>-<'0-36>,'% ;35 : %
5481 017550 012 056 .BYTE <'.-34>-<'%-35>,'. ;34 : .
5482 017552 367 044 .BYTE <'$-33>-<'.-34>,'$ ;33 : $
5483 017554 067 101 .BYTE <'A-01>-<'$-33>,'A ;01-32: A-Z
5484 017556 340 040 .BYTE <' -00>-<'A-01>,' ;00 : <SPACE>
5485 .EVEN
5486 ;
5487 017560 015 012 111 INSMSG: .ASCIZ <15><12>/INS -- /
017563 116 123 040
017566 055 055 040
017571 000
5488 017572 040 040 124 TSKMSG: .ASCIZ / TSK=/
017575 123 113 075
017600 000
5489 017601 040 120 101 PARMSG: .ASCIZ / PAR=/
017604 122 075 000
5490 .EVEN
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 70
END STATEMENT
5492 .SBTTL END STATEMENT
5493 000001 .END
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 70-1
SYMBOL TABLE
AC.ENA= 000200 CDSIEN= 000100 DBIOD 000370R DR.DTE= 000011 EF.CRC= 000001
ADRSAV= ****** GX CDSNXM= 001000 DCK = 100000 DSEND = 000004 EF.CRD= 000002
ALLDON 017014R CDSOFL= 010000 DCOMST= 000001 DS04 = 004000 EF.CRS= 000004
AOE = 001000 CDSPAK= 000002 DD.CHI= 000002 DS05 = 002000 EF.IOD= ****** GX
ATCBLK 015034R CDSPWC= 000400 DD.HEM= 000010 DS06 = 001000 EF.LPC= 000002
A.EF = 000020 CDSRCK= 040000 DD.LER= 000010 DTE = 010000 EF.LPD= 000001
A.HA = ****** GX CDSRDY= 000200 DD.OVF= 000020 DTECMD= 000451 EF.LPQ= 000004
BCFHDS 011336R CDSRED= 000001 DD.PCK= 000002 DTEFLG= 000444 EF.LPS= 000020
BCFILF 011272R CDST = ****** GX DD.PGZ= 000001 DTEF11= 000450 EF.LPW= 000040
BCFLDR 011356R CDSTOL= 000010 DD.RCK= 000001 DTEMTD= 000455 EF.NIR= ****** GX
BCFLDV 011364R CHNPNT= 000001 DD.RME= 000040 DTEMTI= 000456 EF.QIO= 000001
BCFRDS 011272R CHRINT= 020000 DD.SCK= 000004 DUNS 000460R EF.SEP= 100000
BCFSDO 011316R CLIOD 000374R DD.SFL= 000020 DUPE = 000020 EF.TEF= 000400
BCFSTR 011400R CLRBUF 016670R DD.VFE= 000004 DURE = 000004 EMPTY = 000003
BCFTAB 011254R CLSFIL 016124R DEFPRI= 000062 DVA = 004000 EPTR = 000000
BC.HDS= ****** GX CNUPE = 000002 DELHLD= 002000 DV.EOF= 000040 ERMHER 010163R
BC.LDR= ****** GX CNVTBL 015050R DEMTIM= 000002 DV.F11= 000400 ERMHNG 010200R
BC.LDV= ****** GX CPE = 000010 DEP = 010000 DV.HNG= 001000 ERMNXD 010111R
BC.RDS= ****** GX CPUNUM= 000002 DEX = 000400 DV.IOP= 000020 ERMOFL 010131R
BC.SDS= ****** GX CRBFLN= ****** GX DEXDON= 000004 DV.LOG= 000100 ERMVFE 010144R
BC.STR= ****** GX CRBUFF= ****** GX DEXWD1= 174406 DV.NXD= 000001 ERR = 100000
BIT0 = 000001 CRCEVF= ****** GX DEXWD2= 174404 DV.OFL= 000002 ERR10C= 010000
BIT1 = 000002 CRDCLR 013752R DEXWD3= 174402 DV.OIR= 000004 ERR10S= 020000
BIT10 = 002000 CRDINT 013222R DFUNC = 000200 DV.SCN= 000010 ERR11C= 000001
BIT11 = 004000 CREVFG= ****** GX DF.DMG= 000004 DV.URE= 000200 ERR11S= 000002
BIT12 = 010000 CREXP = ****** GX DF.DMN= 000007 DXBUF = ****** GX EXSP 014544RG
BIT13 = 020000 CRHD 012172RG DF.DOR= 000001 DXCNT = ****** GX E.FCRB= 000004
BIT14 = 040000 CRHUNG= ****** GX DF.EHG= 000010 DXEXP = 177170 E.FCRC= 000001
BIT15 = 100000 CRINI 012554R DF.EHM= 000011 DXFLAG 014544R E.FCRD= 000002
BIT2 = 000004 CRIOD 012726R DF.EMG= 000005 DXHD 002056RG E.FCRS= 000003
BIT3 = 000010 CRLOOP 012640R DF.EMN= 000006 DXINI 002366R E.FLPC= 000002
BIT4 = 000020 CRMKT 013172R DF.KLR= 000012 DXIOD 002362R E.FLPD= 000001
BIT5 = 000040 CRMRKT 012472R DF.KLW= 000013 DXPKT = ****** GX E.FLPQ= 000003
BIT6 = 000100 CRPWUP 012546R DF.KLX= 000014 DXRTC = ****** GX E.FLPS= 000005
BIT7 = 000200 CRSSTV 012504R DF.OFF= 000002 DXRTY 003250R E.FLPW= 000006
BIT8 = 000400 CRSTBK= ****** GX DF.ON = 000003 DXSTK 002336RG E.FQIO= 000001
BIT9 = 001000 CRSTK 012452RG DF.PDP= 000016 DXTSK = ****** GX E.IOD = ****** GX
BLKTT = ****** GX CRSTLN= ****** GX DF.PEX= 000015 DXUNIT= ****** GX E.NIR = ****** GX
BPARER= 000020 CRSTS = ****** GX DIAG1 = 174430 DXVCB = ****** GX FCN 005002R
BUFAIL 015630R CRTBL = ****** GX DIAG2 = 174432 DXWD1 = 000006 FCNBD 005010R
BUSA16= 000020 CRTRP4 012506R DIAG3 = 174436 DXWD2 = 000004 FEDRV 004016R
BUSA17= 000040 CR.ACK= 004000 DIKL10= 000010 DXWD3 = 000002 FEHD 003516RG
BYTESA= ****** GX CR.HNG= 100000 DLT = 100000 DXWRD1= 002000 FER = 000020
CDBA = ****** GX CR.IOD= 010000 DLYCNT= 174400 D$$H11= 000010 FESTK 003776RG
CDBPCK= 020000 CR.IOP= 020000 DNBLK = ****** GX D.CCDR= ****** GX FETBL = ****** GX
CDBRCK= 040000 CR.NSF= 000400 DNFCN = ****** GX D.CLPT= ****** GX FETSK = ****** GX
CDBSCK= 010000 CR.NXD= 001000 DNMSG 000442R D.FEPD= ****** GX FE.DET= 040000
CDCC = ****** GX CR.RHN= 002000 DNSTS = ****** GX D1011 = 000040 FE.DTE= 020000
CDD = 000020 CR.SST= 040000 DONE = 000200 EBSEL = 000100 FE.SER= 004000
CDDB = ****** GX CS.EXP= 177670 DONSTR 004732R EBUSPC= 000020 FE.STR= 002000
CDSB16= 000020 CTYLUN= 000001 DON10C= 040000 EBUSPS= 000004 FILADR 014660R
CDSB17= 000040 C$$D11= 000001 DON10S= 100000 ECCMSK 000504R FILBLK 014624R
CDSDER= 004000 C.LEEF= 000002 DON11C= 000100 ECCWRD 000476R FILCLS 017156R
CDSDLT= 002000 DAG1 = 000030 DON11S= 000200 ECH = 000100 FILERA 015624R
CDSEOF= 020000 DAG2 = 000032 DPS4 = 040000 ECI = 004000 FILERR 016510R
CDSERR= 100000 DAG3 = 000036 DRESET= 000100 EDONES= 040000 FILERX 016520R
CDSHEM= 000004 DBINI 000512R DRY = 000200 EF.CRB= 000010 FILFNA 017020R
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 70-2
SYMBOL TABLE
FILL = 000001 IE.HWR= 177772 INSTAL 015074RG IO.RAT= 013000 KLPWRF= 000010
FILQIO 017170R IE.IDU= 177644 INSTK 014424RG IO.RBC= 003000 LBLBFE 014614R
FMT22 = 010000 IE.IEF= 177637 INTEBL= 000100 IO.RCI= 015000 LBLBLK 014606R
FNDFIL 015364R IE.IFC= 177776 INTENB= 000100 IO.RCV= 015000 LBLBUF 014612R
FORPRO= 000020 IE.IFU= 177747 INTROF= 000010 IO.RDB= 001200 LBLNUM 014610R
GO = 000001 IE.ILL= 177726 INTRON= 000040 IO.RDN= 000022 LOAD11= 000004
GOERR = 000001 IE.ILU= 177640 INTSON= 000001 IO.REL= 013400 LOBYTE= 000377
HCE = 000200 IE.INS= 177776 INT10S= 000400 IO.RHD= 001010 LOINIT= 000400
HCI = 002000 IE.IPR= 177641 INT11C= 002000 IO.RLB= 001000 LPALOC= 000214
HCRC = 000400 IE.ISQ= 177703 INT11S= 004000 IO.RLV= 001100 LPBCTR= 000006 G
HDRBFE 014622R IE.ITI= 177643 IOABT 004750R IO.RNA= 005400 LPBSAD= 000004 G
HDRBLK 014616R IE.ITS= 177770 IODN 004356R IO.RNC= 001004 LPCBUF= 000014 G
HDRBUF 014620R IE.LCK= 177745 IODNCR 014130R IO.RNE= 001020 LPCCTR= 000015 G
HIBYTE= 177400 IE.LNL= 177646 IO.ACE= 007400 IO.RTC= 003400 LPCEVF= ****** GX
H.IPC = 000076 IE.MBK= 177721 IO.ACR= 006400 IO.RTI= 016400 LPCKSM= 000017 G
H.ISP = 000100 IE.MOD= 177753 IO.ACW= 007000 IO.RTK= 000060 LPCSA = ****** GX
H.LUN = 000132 IE.NBF= 177731 IO.ADS= 014000 IO.RVB= 010400 LPCSM = ****** GX
H.LUT = ****** GX IE.NBK= 177727 IO.APC= 014000 IO.RWD= 002400 LPCSRA= 000000 G
H.NLUN= 000130 IE.NFI= 177704 IO.APV= 014010 IO.RWU= 002540 LPCSRB= 000002 G
IAE = 002000 IE.NLN= 177733 IO.ATT= 001400 IO.R1C= 002400 LPDCLR 010620R
IE.ABO= 177761 IE.NNC= 177674 IO.CCI= 014000 IO.SAO= 004000 LPDINT 007172R
IE.ACT= 177771 IE.NOD= 177751 IO.CCT= 002460 IO.SCS= 013000 LPEMSG 010056R
IE.ADP= 177636 IE.NSF= 177746 IO.CLN= 003400 IO.SDI= 013000 LPEMSX 010071R
IE.ALN= 177736 IE.OFL= 177677 IO.CON= 015400 IO.SDO= 012400 LPERUN 010066R
IE.AST= 177660 IE.ONP= 177773 IO.CRC= 001020 IO.SEC= 002520 LPEVFG= ****** GX
IE.BAD= 177777 IE.OVR= 177756 IO.CRE= 012000 IO.SEM= 002440 LPEXPA= ****** GX
IE.BBE= 177710 IE.PRI= 177760 IO.CTI= 015400 IO.SHT= 002410 LPEXPZ= ****** GX
IE.BDI= 177714 IE.RAC= 177724 IO.CTL= 016400 IO.SLO= 005400 LPHD 005254RG
IE.BDR= 177716 IE.RAT= 177723 IO.DAC= 010000 IO.SMO= 002560 LPHUNG= ****** GX
IE.BDV= 177711 IE.RBG= 177730 IO.DCI= 014400 IO.SNM= 002450 LPINI 005644R
IE.BHD= 177700 IE.RCN= 177722 IO.DCT= 002470 IO.SPB= 002420 LPIOD 006016R
IE.BLK= 177754 IE.RER= 177740 IO.DEL= 012400 IO.SPF= 002440 LPITH = ****** GX
IE.BNM= 177712 IE.RNM= 177715 IO.DET= 002000 IO.SSO= 004400 LPLOOP 005730R
IE.BTF= 177675 IE.RSU= 177757 IO.DIS= 016000 IO.SST= 002430 LPMCB = ****** GX
IE.BTP= 177725 IE.SDP= 177635 IO.DTI= 016000 IO.STC= 002500 LPMKT 007136R
IE.BVR= 177701 IE.SNC= 177735 IO.ENA= 006000 IO.STP= 016400 LPMRKT 005554R
IE.BYT= 177755 IE.SPC= 177772 IO.EOF= 003000 IO.SYN= 003040 LPNIR 006676R
IE.CKP= 177766 IE.SQC= 177734 IO.ESA= 002500 IO.TRM= 002410 LPPCTR= 000010 G
IE.CKS= 177742 IE.SRE= 177762 IO.EXT= 011400 IO.UNL= 000042 LPQDPB 010034R
IE.CLO= 177732 IE.STK= 177706 IO.FDX= 003020 IO.WAT= 013400 LPRAMD= 000012 G
IE.CON= 177752 IE.ULN= 177773 IO.FNA= 004400 IO.WLB= 000400 LPRMA = ****** GX
IE.DAA= 177770 IE.UPN= 177777 IO.HDX= 003010 IO.WLS= 000410 LPRMC = ****** GX
IE.DAO= 177763 IE.VER= 177774 IO.HIS= 015000 IO.WLV= 000500 LPRMZ = ****** GX
IE.DFU= 177750 IE.WAC= 177743 IO.INL= 002400 IO.WVB= 011000 LPRTRY= 000012
IE.DNA= 177771 IE.WAT= 177741 IO.ITI= 017000 IO.XMT= 014400 LPRTY = ****** GX
IE.DNR= 177775 IE.WER= 177737 IO.KIL= 000012 IO.XNA= 014410 LPSIZE= ****** GX
IE.DUN= 177767 IE.WLK= 177764 IO.LED= 012000 IPAERR 016070R LPSSTV 005600R
IE.DUP= 177707 IE.2DV= 177720 IO.LOV= 001010 IQ.Q = 000002 LPSTBK= ****** GX
IE.EBX= 177776 IFLOP = 100000 IO.LTK= 000050 IQ.X = 000001 LPSTK 005534RG
IE.EOF= 177766 ILF = 000001 IO.MCS= 013400 IS.BV = 000005 LPSTLN= ****** GX
IE.EOT= 177702 ILFCD 002622R IO.MDA= 016000 IS.CLR= 000000 LPTBL = ****** GX
IE.EOV= 177765 ILR = 000002 IO.MDI= 014400 IS.CR = 006401 LPTDAT= 000016 G
IE.EXP= 177676 INIT = 040000 IO.MDO= 015400 IS.ESC= 015401 LPTHD = ****** GX
IE.FEX= 177717 INITCR 013736RG IO.MLO= 006000 IS.PND= 000000 LPTPAR= 000040
IE.FHE= 177705 INITLP 010550RG IO.MOD= 003000 IS.RDD= 000002 LPTPBT= 010000
IE.FOP= 177713 INSHD 014144RG IO.MSO= 005000 IS.SET= 000002 LPTRP4 005602R
IE.HFU= 177744 INSMSG 017560R IO.RAL= 001010 IS.SUC= 000001 LPUNIT= ****** GX
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 70-3
SYMBOL TABLE
LPUTBL= ****** GX OPI = 020000 REQBLK 014552R SCD = 000040 TO11DB= 004000
LPWRUP 005636R OPTVFU= 004000 REQTSK 016702R SETBUF 003442R TO11DN= 000200
LP.CLR= 002000 PAGZRO= 040000 RETALL 016612R SETLUN 016304R TO11DT= 174426
LP.EOF= 000200 PARENB= 000002 RETBUF 016634R SETSTD 015774R TO11ER= 000002
LP.F10= 000400 PARFND 016126R RETNOD 016524R SF.IR = 040000 TR = 000200
LP.HNG= 100000 PARMSG 017601R RETRY = 000010 SF.TA = 000001 TRE = 040000
LP.LIP= 001000 PBTHRD= 000004 RETXXX 017114R SNSTR 004420R TRKSEC 003272R
LP.MCH= 010000 PERCLR= 001000 RFMAD0= 100000 SSTSCR 013332R TRWAIT 003472R
LP.PZI= 020000 PGE = 002000 RFMAD1= 040000 SSTSLP 007360R TSKFND 015642R
LP.SST= 040000 PGM = 001000 RFMAD2= 020000 STAT = 174434 TSKLUN= 000002
LP.UNT= 000003 PHYBLK= 000040 RFMAD3= 010000 STATD = 000034 TSKMSG 017572R
LP.WAT= 004000 PHYS = 100000 RM = 000010 STATUS= 000022 TSTMOD= 000001
L$BBLK= 000024 PIDENT= 000000 RMR = 000004 STDADR= 014564R TTBERR 016102R
L$BFLG= 000010 PRI7 = 000340 RPAS = 000016 STSWD = ****** GX TTPEN = ****** GX
L$BHRB= 000022 PROPNT= 000021 RPBA = 000004 SWR = 177570 TYPBUF 014670R
L$BLDZ= 000014 PRTOFF= 004000 RPBUF = ****** GX SWSLLT= 100000 TYPMSG 017250R
L$BMXZ= 000016 PR0 = 000000 RPCNT = ****** GX SYFLAG 014545R T.BA = ****** GX
L$BPAR= 000004 PR1 = 000040 RPCS1 = 000000 SYMNTD 015276R T.HBCT= ****** GX
L$BPRI= 000012 PR2 = 000100 RPCS2 = 000010 SYMNT1 015342R T.HCAD= ****** GX
L$BSA = 000020 PR3 = 000140 RPDA = 000006 SYNTIM= 000004 T.HCBC= ****** GX
L$BTSK= 000000 PR4 = 000200 RPDBR = 000022 S.DRFN= 000034 T.HEMA= 177774
L$$P20= 000002 PR5 = 000240 RPDC = 000034 S.FW = ****** GX T.HIBC= 177776
MCPE = 020000 PR6 = 000300 RPDS = 000012 S.TD = ****** GX T.HVFC= 177775
MDPE = 000400 PR7 = 000340 RPDT = 000026 TASKNF 015520R T.PN = ****** GX
MEFCN 005012R PS = 177776 RPEC1 = 000044 TB.ABO= 040000 T.PZ = ****** GX
MEMPAR= 000020 PSWW1 = 000005 RPEC2 = 000046 TB.DON= 100000 T.SZ = ****** GX
MKDNR 000404RG PSWW10= 000014 RPER1 = 000014 TB.EOF= 020000 T10AD = 000020
MKSCDP 005566R PSWW11= 000015 RPEXP = 176700 TB.LPC= 010000 T11AD = 000022
MNTBLK 015042R PSWW12= 000016 RPHD 000070RG TB.RMD= 004000 T11BC = 000016
MNTSYD 015142R PSWW13= 000017 RPLA = 000020 TB.SFN= 036000 T50TBL 017534R
MODE00= 000004 PSWW2 = 000006 RPMR = 000024 TB.VFD= 002000 UF.TL = ****** GX
MODE01= 000010 PSWW3 = 000007 RPOF = 000032 TENAD1= 174410 UNASG1= 000032
MOL = 010000 PSWW4 = 000010 RPRNA = ****** GX TENAD2= 174412 UNASG2= 000033
MPE11 = 001000 PSWW5 = 000011 RPRTC = ****** GX TESTLP 010360R UNASG3= 000034
MSGDPB 000422R PSWW6 = 000012 RPSN = 000030 TEST00= 000400 UNASG4= 000035
MSGSIZ= 000016 PSWW7 = 000013 RPSTK 000350RG TEST01= 001000 UNASG5= 000036
MXF = 001000 PUDADR 014604R RPTSK = ****** GX TEST02= 002000 UNASG6= 000037
M.KTAE= 000010 PULSE = 000020 RPUNIT= ****** GX TNAD1 = 000010 UNIT = 000020
M.KTEF= 000002 PUTR50 017462R RPWC = 000002 TNAD2 = 000012 UNS = 040000
M.KTMG= 000004 PUTR51 017472R RPWLO 000400R TNCERR 016114R UPE = 020000
M.KTUN= 000006 PUTSTR 017452R RSTERR= 001000 TNFERR 015610R U.ACP = ****** GX
NED = 010000 QIOSTS 014664R RSX$$E= 000050 TOBM = 000004 U.DACP= ****** GX
NEM = 004000 QSIZE = 000023 RSX$$F= 000102 TOIP = 000002 U.DN = ****** GX
NODADR= ****** GX Q.IOAE= 000012 RSX$$K= 000126 TOIT = 000001 U.FB = ****** GX
NULSTP= 000040 Q.IOEF= 000006 RSX$$V= 000015 TO10 = 000200 U.RP = ****** GX
NUPE = 000002 Q.IOFN= 000002 RWRBLK 017150R TO10AD= 174420 U.SZ = 000050
NXTHDR 017040R Q.IOLU= 000004 RWRHDR 017072R TO10BC= 174414 U.UN = ****** GX
NXTSEC 003420R Q.IOPL= 000014 RXCS = 000000 TO10BM= 000001 U.VA = ****** GX
N.DID = 000024 Q.IOPR= 000007 RXDB = 000002 TO10DB= 000400 VFCFF 007124R
N.FID = 000000 Q.IOSB= 000010 R$$E18= 000001 TO10DN= 100000 VFCTBL 007122R
N.FNAM= 000006 RAMIS0= 010000 R$$11D= 000001 TO10DT= 174424 VFUERR= 000100
N.FTYP= 000014 RAMLOD= 000003 R.AT = ****** GX TO10ER= 020000 VFULOD= 000002
N.FVER= 000016 RAMPAR= 000010 R.DP = ****** GX TO10PK= ****** GX VFURDY= 010000
N.NEXT= 000022 RCVBLK 014546R R.FC = ****** GX TO11 = 000100 VV = 000100
N.STAT= 000020 READ = 000007 R.LU = ****** GX TO11AD= 174422 WCE = 040000
OFFLIN= 000200 REDHDR 017054R R.PB = ****** GX TO11BC= 174416 WCF = 000040
ONLINE= 004000 REDLBL 017116R R50TBL 017544R TO11BM= 020000 WEP = 000010
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 19:04 PAGE 70-4
SYMBOL TABLE
WFDNR 000416RG $TOP20= 000001 .FEST 004542RG .PCAB2= 151000 .TPDEA= ****** GX
WFEF1 003510R $$ = 000037 .GFNR = 102000 .PCAB3= 152000 .WRMBX= 071000
WFPKT 002356R $$MSG = 000000 .INICL= 070000 .PCAB4= 153000 ..AKCR 014114RG
WLE = 004000 $$$ = 000251R 002 .IRLTC= 014000 .POLLH= ****** GX ..AKLP 011566RG
WRITE = 000005 $$$ARG= 000003 .LCRDL= 052000 .PUDBA= ****** GX ..ALCB= ****** GX
WRL = 004000 $$$OST= 000012 .LCRDR= 051000 .PUDEA= ****** GX ..ALC2= ****** GX
WRTDD = 000015 $$$T1 = 000011 .LCRM1= 057000 .RCRM1= 147000 ..DECB= ****** GX
WRTHDR 017066R $$$T2 = 000000 .LCRM2= 056000 .RCRM2= 146000 ..DECN= ****** GX
W.TSEF= 000002 $$$$ = 000002 .LCRM3= 055000 .RCRM3= 145000 ..DEC2= ****** GX
ZSTOP = 040000 .BGBUF= ****** GX .LCRM4= 054000 .RCRM4= 144000 ..DOLP 012010RG
$CDINT 013762RG .BRCLK= 005000 .LCRM5= 053000 .RCSPF= 141000 ..DOL1 011774RG
$CD11 = 000001 .CECLK= 004000 .LDAR = 077000 .RDJ14= 134000 ..DQRN= ****** GX
$DBDTE= 000001 .CLRMR= 006000 .LDBRL= 043000 .RDJ71= 135000 ..DSEV= ****** GX
$DH11 = 000001 .CLRUN= 010000 .LDBRR= 042000 .RDMAB= 133000 ..ENB0= ****** GX
$DIRAC= 000001 .COMEF= ****** GX .LDCK1= 046000 .RPELC= ****** GX ..FSTD= ****** GX
$DIV 000032RG .CONBT= 012000 .LDCK2= 047000 .RPELQ= ****** GX ..INTX= ****** GX
$DSW = ****** GX .CRPFL= ****** GX .LDDIS= 045000 .RPUNT= ****** GX ..IODN= ****** GX
$DTE = 000001 .CRTSK= ****** GX .LDRJD= 064000 .SECLK= 003000 ..NADD= ****** GX
$DXINT 003060RG .CSHRG= 164000 .LDRJV= 063000 .SETMR= 007000 ..PTLP 011646RG
$FE = 000001 .CYLTM= 000074 .LDRM1= 060000 .SETRN= 011000 ..SACK= ****** GX
$F11 = 000001 .DBINT 001236RG .LDRM2= 061000 .SSCLK= 002000 ..SPCR 014072RG
$LPINT 010650RG .DRLTC= 015000 .LDRM3= 062000 .STDTA= ****** GX ..SPLP 011414RG
$LP20 = 000001 .DSACF= 066000 .LDSEL= 044000 .STDTZ= ****** GX ..STCR 014050RG
$MUL 000000RG .DSIOJ= 065000 .LPPFL= ****** GX .STPCL= 000000 ..STIN= ****** GX
$RP04 = 000001 .EIOJA= 067000 .MEMRS= 076000 .STRCL= 001000 ..STLP 011204RG
$RX11 = 000001 .FEACK 004436RG .PCAB1= 150000 .TPDBA= ****** GX ...GBL= 000000
. ABS. 000000 000
017610 001
TEXT 000275 002
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 12624 WORDS ( 50 PAGES)
DYNAMIC MEMORY: 14438 WORDS ( 55 PAGES)
ELAPSED TIME: 00:04:08
,[100,20]DRIVERS20.LST/-SP/CRF=[100,30]DRIVERS20.TMP
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 1
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
AC.ENA = 000200 #61-4782 64-5046
ADRSAV = ****** GX *19-1989 20-2044 *20-2049 *21-2083 21-2093 *21-2094
ALLDON 017014 R 66-5249 67-5299 67-5304 #67-5310
AOE = 001000 #8-404 10-717 10-728
ATCBLK 015034 R #62-4826 64-5044
A.EF = 000020 *10-770 #13-1516 *14-1693 *15-1742 19-1939 *19-1941 *21-2101 30-2637 51-4224
A.HA = ****** GX 19-2002 63-4884
BCFHDS 011336 R 40-3669 #40-3705
BCFILF 011272 R 40-3661 #40-3678 40-3699 40-3708
BCFLDR 011356 R 40-3671 #40-3714
BCFLDV 011364 R 40-3672 #40-3720
BCFRDS 011272 R 40-3668 #40-3683
BCFSDO 011316 R 40-3670 #40-3696
BCFSTR 011400 R 40-3667 #40-3733
BCFTAB 011254 R 40-3658 40-3664 #40-3666 40-3667 40-3668 40-3669 40-3670 40-3671 40-3672
BC.HDS = ****** GX 35-3296 40-3669 53-4483
BC.LDR = ****** GX 40-3671
BC.LDV = ****** GX 40-3672
BC.RDS = ****** GX 40-3668
BC.SDS = ****** GX 40-3670
BC.STR = ****** GX 19-2032 21-2068 40-3667 52-4268
BIT0 = 000001 #13-1511 22-2225 #22-2240 23-2331 23-2348 25-2420 25-2436 25-2452 28-2539
30-2623 35-3274 #46-4047 46-4058 47-4088 51-4213 #61-4716 61-4759
BIT1 = 000002 #13-1511 22-2227 #22-2240 23-2330 23-2347 25-2421 25-2437 25-2453 28-2539
#46-4047 46-4060 47-4087 #61-4716
BIT10 = 002000 #13-1511 #22-2240 22-2274 23-2317 23-2337 28-2527 #46-4047 47-4078 49-4151
#61-4716
BIT11 = 004000 #13-1511 #22-2240 22-2273 23-2316 23-2336 28-2522 #46-4047 47-4077 49-4149
#61-4716
BIT12 = 010000 #13-1511 #22-2240 22-2272 23-2315 23-2335 28-2519 #46-4047 47-4076 47-4095
49-4147 #61-4716
BIT13 = 020000 #13-1511 #22-2240 22-2271 23-2314 28-2516 #46-4047 47-4075 47-4094 49-4145
#61-4716
BIT14 = 040000 #13-1511 #22-2240 22-2270 23-2313 28-2513 #46-4047 47-4074 47-4093 49-4142
#61-4716
BIT15 = 100000 #13-1511 #22-2240 22-2269 23-2312 28-2510 35-3296 #46-4047 47-4073 49-4138
52-4268 53-4483 #61-4716
BIT2 = 000004 #13-1511 22-2229 #22-2240 23-2326 23-2346 25-2422 25-2438 25-2454 #46-4047
46-4062 47-4086 #61-4716
BIT3 = 000010 #13-1511 #22-2240 23-2325 23-2345 25-2423 25-2439 25-2455 #46-4047 46-4064
47-4085 #61-4716
BIT4 = 000020 #13-1511 22-2232 #22-2240 23-2324 23-2344 25-2424 25-2440 25-2456 #46-4047
47-4084 #61-4716
BIT5 = 000040 #13-1511 22-2234 #22-2240 23-2323 23-2343 25-2425 25-2441 #46-4047 47-4083
#61-4716
BIT6 = 000100 #13-1511 #22-2240 23-2322 23-2342 25-2426 #46-4047 47-4082 #61-4716
BIT7 = 000200 #13-1511 #22-2240 23-2321 23-2341 25-2427 28-2535 #46-4047 47-4081 #61-4716
61-4782
BIT8 = 000400 #13-1511 #22-2240 23-2319 23-2339 25-2428 28-2532 35-3274 #46-4047 47-4080
49-4155 #61-4716
BIT9 = 001000 #13-1511 #22-2240 23-2318 23-2338 25-2429 28-2529 #46-4047 47-4079 49-4153
#61-4716
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 2
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
BLKTT = ****** GX 21-2149
BPARER = 000020 #13-1511 #22-2240 #46-4047 #61-4716
BUFAIL 015630 R #64-5018 64-5028 64-5035
BUSA16 = 000020 #23-2324 44-3978
BUSA17 = 000040 #23-2323 44-3978
BYTESA = ****** GX *19-1990 *19-2013 19-2016 20-2046 20-2048 *20-2050 *21-2082 21-2088 *21-2090
*21-2095 21-2098
CDBA = ****** GX *52-4310
CDBPCK = 020000 #47-4094 53-4439
CDBRCK = 040000 #47-4093 53-4435
CDBSCK = 010000 #47-4095 53-4443
CDCC = ****** GX *52-4309 56-4566
CDD = 000020 #13-1511 #22-2240 #46-4047 #61-4716
CDDB = ****** GX 53-4433 53-4469
CDSB16 = 000020 #47-4084
CDSB17 = 000040 #47-4083
CDSDER = 004000 #47-4077
CDSDLT = 002000 #47-4078 53-4426
CDSEOF = 020000 #47-4075 53-4418
CDSERR = 100000 #47-4073
CDSHEM = 000004 #47-4086 53-4451
CDSIEN = 000100 #47-4082 52-4311 52-4325 52-4328
CDSNXM = 001000 #47-4079 53-4426
CDSOFL = 010000 #47-4076 52-4301 53-4410
CDSPAK = 000002 #47-4087
CDSPWC = 000400 #47-4080 54-4506
CDSRCK = 040000 #47-4074 53-4457
CDSRDY = 000200 #47-4081 53-4430
CDSRED = 000001 #47-4088 52-4311
CDST = ****** GX 52-4301 *52-4311 52-4325 *52-4328 53-4409 53-4467 53-4469 *54-4506 56-4559
56-4564
CDSTOL = 000010 #47-4085
CHNPNT = 000001 #13-1511 #22-2240 #46-4047 #61-4716
CHRINT = 020000 #23-2314 35-3210 39-3505 39-3527 42-3839
CLIOD 000374 R #8-460 9-668
CLRBUF 016670 R 63-4869 63-4869 66-5281 #66-5284
CLSFIL 016124 R 65-5095 65-5098 65-5101 #65-5105
CNUPE = 000002 #13-1511 #22-2240 #46-4047 #61-4716
CNVTBL 015050 R #62-4839 66-5214
CPE = 000010 #8-410
CPUNUM = 000002 #13-1511 #22-2240 #46-4047 #61-4716
CRBFLN = ****** GX 52-4267 52-4309
CRBUFF = ****** GX 52-4257 52-4310
CRCEVF = ****** GX *52-4239 52-4250 52-4320
CRDCLR 013752 R 51-4207 #54-4507
CRDINT 013222 R 51-4205 #52-4326
CREVFG = ****** GX *51-4223 *51-4224 51-4225 52-4239 52-4240 52-4271 52-4277 52-4295 52-4339
53-4390 53-4486 53-4489 54-4507 59-4655
CREXP = ****** GX *51-4211
CRHD 012172 RG #49-4135
CRHUNG = ****** GX *52-4336
CRINI 012554 R 49-4135 49-4135 #51-4223
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 3
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
CRIOD 012726 R #52-4250
CRLOOP 012640 R #52-4236 52-4348
CRMKT 013172 R #52-4320
CRMRKT 012472 R #49-4160 51-4226
CRPWUP 012546 R #51-4218 51-4228
CRSSTV 012504 R #51-4201 51-4227
CRSTBK = ****** GX 53-4398 53-4471
CRSTK 012452 RG 49-4135 #49-4135
CRSTLN = ****** GX 53-4471 53-4482
CRSTS = ****** GX *51-4212 52-4255 *52-4274 52-4282 52-4288 52-4290 *52-4292 52-4293 *52-4308
52-4322 52-4329 52-4331 52-4333 *52-4335 *52-4341 *52-4344 *53-4389 53-4404
53-4414 53-4422 53-4459 *53-4464 *53-4490 *54-4505 56-4561 *56-4563 *56-4568
*56-4572 *57-4605 *58-4628 *59-4649
CRTBL = ****** GX 57-4603 58-4625 59-4647
CRTRP4 012506 R 51-4201 #51-4205
CR.ACK = 004000 #49-4149 52-4288 52-4292 52-4329 58-4628 59-4649
CR.HNG = 100000 #49-4138 52-4274 52-4292 52-4331 52-4341 52-4344
CR.IOD = 010000 #49-4147 52-4255 52-4274 52-4290 52-4329 53-4414 56-4568 58-4628
CR.IOP = 020000 #49-4145 52-4290 52-4308 52-4329 52-4333 53-4414 54-4505 56-4561 56-4563
58-4628
CR.NSF = 000400 #49-4155 52-4274 53-4459 53-4464
CR.NXD = 001000 #49-4153 51-4212 52-4293 52-4322 53-4404 54-4505
CR.RHN = 002000 #49-4151 52-4274 52-4292 52-4335 52-4344 53-4422
CR.SST = 040000 #49-4142 52-4282 52-4329 52-4335 53-4389 53-4490 56-4572 57-4605
CS.EXP = 177670 #13-1511 #22-2240 #46-4047 #61-4716
CTYLUN = 000001 #61-4753 69-5431
C$$D11 = 000001 #46-4053
C.LEEF = 000002 #8-461
DAG1 = 000030 #3-129
DAG2 = 000032 #3-128
DAG3 = 000036 #3-126
DBINI 000512 R 8-455 8-455 #9-537 9-541 9-674
DBIOD 000370 R #8-457 9-667
DCK = 100000 #8-398
DCOMST = 000001 #13-1511 #22-2240 #46-4047 #61-4716
DD.CHI = 000002 #25-2437 35-3213
DD.HEM = 000010 #25-2455 53-4453
DD.LER = 000010 #25-2439
DD.OVF = 000020 #25-2440 35-3218
DD.PCK = 000002 #25-2453 53-4441
DD.PGZ = 000001 #25-2436 35-3207
DD.RCK = 000001 #25-2452 53-4437
DD.RME = 000040 #25-2441 35-3197
DD.SCK = 000004 #25-2454 53-4445
DD.SFL = 000020 #25-2456 53-4461
DD.VFE = 000004 #25-2438 35-3167
DEFPRI = 000062 #61-4746 65-5114
DELHLD = 002000 #23-2317
DEMTIM = 000002 #23-2347 35-3171 39-3560
DEP = 010000 #13-1511 #22-2240 #46-4047 #61-4716
DEX = 000400 #13-1511 #22-2240 #46-4047 #61-4716
DEXDON = 000004 #13-1511 #22-2240 #46-4047 #61-4716
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 4
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DEXWD1 = 174406 #13-1511 #22-2240 #46-4047 #61-4716
DEXWD2 = 174404 #13-1511 #22-2240 #46-4047 #61-4716
DEXWD3 = 174402 #13-1511 #22-2240 #46-4047 #61-4716
DFUNC = 000200 #13-1511 #22-2240 #46-4047 #61-4716
DF.DMG = 000004 #13-1511 #22-2240 #46-4047 #61-4716
DF.DMN = 000007 #13-1511 #22-2240 #46-4047 #61-4716
DF.DOR = 000001 #13-1511 #22-2240 #46-4047 #61-4716
DF.EHG = 000010 #13-1511 #22-2240 #46-4047 #61-4716
DF.EHM = 000011 #13-1511 #22-2240 #46-4047 #61-4716
DF.EMG = 000005 #13-1511 #22-2240 #46-4047 #61-4716
DF.EMN = 000006 #13-1511 #22-2240 #46-4047 #61-4716
DF.KLR = 000012 #13-1511 #22-2240 #46-4047 #61-4716
DF.KLW = 000013 #13-1511 #22-2240 #46-4047 #61-4716
DF.KLX = 000014 #13-1511 #22-2240 #46-4047 #61-4716
DF.OFF = 000002 #13-1511 #22-2240 #46-4047 #61-4716
DF.ON = 000003 #13-1511 #22-2240 #46-4047 #61-4716
DF.PDP = 000016 #13-1511 #22-2240 #46-4047 #61-4716
DF.PEX = 000015 #13-1511 #22-2240 #46-4047 #61-4716
DIAG1 = 174430 #13-1511 #22-2240 #46-4047 #61-4716
DIAG2 = 174432 #13-1511 #22-2240 #46-4047 #61-4716
DIAG3 = 174436 #13-1511 #22-2240 #46-4047 #61-4716
DIKL10 = 000010 #13-1511 #22-2240 #46-4047 #61-4716
DLT = 100000 #8-374 10-793
DLYCNT = 174400 #13-1511 #22-2240 #46-4047 #61-4716
DNBLK = ****** GX *21-2129 *21-2152 *21-2163 21-2166
DNFCN = ****** GX *21-2130 *21-2131 *21-2132
DNMSG 000442 R #8-475 9-677
DNSTS = ****** GX *21-2133 *21-2137 21-2152 *21-2155 *21-2156 21-2159 *21-2159 *21-2174
DONE = 000200 #13-1529 14-1631 14-1651 17-1873 #23-2321
DONSTR 004732 R 21-2099 #21-2102 21-2111 21-2120 21-2171
DON10C = 040000 #13-1511 #22-2240 #46-4047 #61-4716
DON10S = 100000 #13-1511 #22-2240 #46-4047 #61-4716
DON11C = 000100 #13-1511 #22-2240 #46-4047 #61-4716
DON11S = 000200 #13-1511 #22-2240 #46-4047 #61-4716
DPS4 = 040000 #13-1511 #22-2240 #46-4047 #61-4716
DRESET = 000100 #13-1511 #22-2240 #46-4047 #61-4716
DRY = 000200 #8-391 9-659
DR.DTE = 000011 #13-1511 #22-2240 #46-4047 #61-4716
DSEND = 000004 #13-1511 #22-2240 #46-4047 #61-4716
DS04 = 004000 #13-1511 #22-2240 #46-4047 #61-4716
DS05 = 002000 #13-1511 #22-2240 #46-4047 #61-4716
DS06 = 001000 #13-1511 #22-2240 #46-4047 #61-4716
DTE = 010000 #8-401
DTECMD = 000451 #13-1511 #22-2240 #46-4047 #61-4716
DTEFLG = 000444 #13-1511 #22-2240 #46-4047 #61-4716
DTEF11 = 000450 #13-1511 #22-2240 #46-4047 #61-4716
DTEMTD = 000455 #13-1511 #22-2240 #46-4047 #61-4716
DTEMTI = 000456 #13-1511 #22-2240 #46-4047 #61-4716
DUNS 000460 R #8-478 9-688
DUPE = 000020 #13-1511 #22-2240 #46-4047 #61-4716
DURE = 000004 #13-1511 #22-2240 #46-4047 #61-4716
DVA = 004000 #8-360 9-625 9-632
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 5
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DV.EOF = 000040 #25-2425 35-3158 40-3707 53-4420
DV.F11 = 000400 #25-2428 35-3185
DV.HNG = 001000 #25-2429 35-3192 53-4424
DV.IOP = 000020 #25-2424 35-3182 53-4416
DV.LOG = 000100 10-1178 #25-2426 35-3173 35-3189 53-4424 53-4428 53-4449
DV.NXD = 000001 #25-2420 35-3151 53-4406
DV.OFL = 000002 #25-2421 35-3151 35-3162 53-4406 53-4412
DV.OIR = 000004 #25-2422 35-3151 35-3162 35-3192 53-4406 53-4412 53-4424
DV.SCN = 000010 #25-2423 35-3206 35-3212
DV.URE = 000200 10-1178 #25-2427 35-3189 53-4428
DXBUF = ****** GX *14-1581 *17-1838 17-1854
DXCNT = ****** GX *14-1582 *17-1840 17-1856 17-1858
DXEXP = 177170 #13-1517 14-1615 15-1718
DXFLAG 014544 R #62-4806 *63-4870 63-4921 *63-4923
DXHD 002056 RG #13-1544
DXINI 002366 R 13-1544 13-1544 #14-1573 14-1576 14-1694
DXIOD 002362 R #13-1548 14-1688
DXPKT = ****** GX *14-1583 14-1691 15-1738
DXRTC = ****** GX *14-1602 *15-1723 *15-1760 *15-1762
DXRTY 003250 R 14-1640 14-1663 14-1678 14-1681 15-1722 #15-1760
DXSTK 002336 RG 13-1544 #13-1544
DXTSK = ****** GX *14-1693 *15-1742
DXUNIT = ****** GX *14-1580 14-1675
DXVCB = ****** GX *14-1613 *14-1614 14-1619 14-1671 14-1679 14-1682 14-1689 14-1690 *15-1719
15-1725 15-1732 15-1735 *15-1740 *15-1741 16-1782 16-1795 *16-1810 *16-1811
16-1812 *17-1836 17-1840 *17-1859
DXWD1 = 000006 #3-135
DXWD2 = 000004 #3-136
DXWD3 = 000002 #3-137
DXWRD1 = 002000 #13-1511 #22-2240 #46-4047 #61-4716
D$$H11 = 000010 #1-44
D.CCDR = ****** GX 52-4270 53-4485
D.CLPT = ****** GX 32-2761 35-3299
D.FEPD = ****** GX 19-2034 21-2103
D1011 = 000040 #13-1511 #22-2240 #46-4047 #61-4716
EBSEL = 000100 #13-1511 #22-2240 #46-4047 #61-4716
EBUSPC = 000020 #13-1511 #22-2240 #46-4047 #61-4716
EBUSPS = 000004 #13-1511 #22-2240 #46-4047 #61-4716
ECCMSK 000504 R #8-509 10-877 10-893
ECCWRD 000476 R #8-507 10-886
ECH = 000100 #8-407 10-808
ECI = 004000 #8-433
EDONES = 040000 #13-1511 #22-2240 #46-4047 #61-4716
EF.CRB = 000010 #46-4064 51-4225 52-4271 52-4277 52-4295
EF.CRC = 000001 #46-4058 52-4236 52-4240 52-4320 54-4507
EF.CRD = 000002 #46-4060 52-4236 52-4240 52-4250 52-4339 59-4655
EF.CRS = 000004 #46-4062 51-4225 53-4390 53-4486 53-4489
EF.IOD = ****** GX 10-770 14-1693 15-1742
EF.LPC = 000002 #22-2227 31-2657 31-2662 34-3028 37-3424
EF.LPD = 000001 #22-2225 31-2657 31-2662 32-2698 32-2747 34-3072 39-3573 40-3685 41-3804
42-3841 43-3900 44-3969
EF.LPQ = 000004 #22-2229
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 6
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
EF.LPS = 000020 #22-2232 30-2638 35-3138 35-3300 35-3308
EF.LPW = 000040 #22-2234 30-2638 36-3342 41-3779
EF.NIR = ****** GX 18-1924 31-2657 31-2662 33-2902
EF.QIO = 000001 #61-4759
EF.SEP = 100000 #18-1919 18-1924
EF.TEF = 000400 #18-1920 18-1924 19-1977 21-2101
EMPTY = 000003 #13-1539 14-1649
EPTR = 000000 #13-1511 #22-2240 #46-4047 #61-4716
ERMHER 010163 R 35-3174 #35-3259
ERMHNG 010200 R 35-3193 #35-3261
ERMNXD 010111 R 35-3152 #35-3253
ERMOFL 010131 R 35-3163 #35-3255
ERMVFE 010144 R 35-3168 #35-3257
ERR = 100000 #8-387 #23-2312 39-3505
ERR10C = 010000 #13-1511 #22-2240 #46-4047 #61-4716
ERR10S = 020000 #13-1511 #22-2240 #46-4047 #61-4716
ERR11C = 000001 #13-1511 #22-2240 #46-4047 #61-4716
ERR11S = 000002 #13-1511 #22-2240 #46-4047 #61-4716
EXSP 014544 RG #62-4802 63-4865
E.FCRB = 000004 #46-4063 52-4269
E.FCRC = 000001 #46-4057 49-4160
E.FCRD = 000002 #46-4059
E.FCRS = 000003 #46-4061 53-4484
E.FLPC = 000002 #22-2226 30-2604
E.FLPD = 000001 #22-2224
E.FLPQ = 000003 #22-2228 35-3246
E.FLPS = 000005 #22-2231 35-3298
E.FLPW = 000006 #22-2233 30-2606 36-3349
E.FQIO = 000001 #61-4758 68-5393 69-5431
E.IOD = ****** GX 8-458 8-461 13-1548
E.NIR = ****** GX 8-464 13-1546
FCN 005002 R 21-2076 #21-2124
FCNBD 005010 R 21-2079 #21-2126
FEDRV 004016 R 18-1935 18-1935 #19-1937 19-1983 19-1986 19-2021 19-2030
FEHD 003516 RG #18-1935
FER = 000020 #8-409
FESTK 003776 RG 18-1935 #18-1935
FETBL = ****** GX *19-1952 *19-1987 *19-2018 *19-2029 *21-2114 21-2161
FETSK = ****** GX 19-1939 *19-1941 *21-2101
FE.DET = 040000 #18-1930 19-1952 19-2018 19-2029 20-2041 20-2052 21-2114
FE.DTE = 020000 #18-1931 19-1952 19-2029 21-2073 21-2087 21-2100 21-2114
FE.SER = 004000 #18-1932 19-1952 19-1987 19-2029 21-2114
FE.STR = 002000 #18-1933 21-2128 21-2170
FILADR 014660 R #62-4820 62-4828 65-5159 65-5161
FILBLK 014624 R #62-4819 63-4937 63-4958 63-4977 64-5043 68-5322
FILCLS 017156 R 66-5241 66-5241 66-5247 66-5247 #68-5378
FILERA 015624 R #64-5014 64-5049 64-5055 64-5059
FILERR 016510 R 64-5014 66-5183 66-5193 66-5231 66-5236 #66-5246
FILERX 016520 R 65-5105 #66-5247
FILFNA 017020 R 63-4952 63-4952 63-4984 63-4984 #68-5318
FILL = 000001 #13-1538 14-1626
FILQIO 017170 R 63-4910 63-4910 64-5048 64-5048 68-5323 68-5374 #68-5393
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 7
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
FMT22 = 010000 #8-432
FNDFIL 015364 R 63-4930 #63-4936 63-5004
FORPRO = 000020 #13-1511 #22-2240 #46-4047 #61-4716
GO = 000001 #13-1537 13-1538 13-1539 13-1540 13-1541 13-1542 #23-2331 34-3060 39-3515
39-3540 44-3996
GOERR = 000001 #23-2348 39-3560
HCE = 000200 #8-406
HCI = 002000 #8-434
HCRC = 000400 #8-405
HDRBFE 014622 R #62-4818 *64-5038 68-5329
HDRBLK 014616 R #62-4816 *64-5057 *68-5337 68-5351
HDRBUF 014620 R #62-4817 *64-5036 66-5280 *66-5285 68-5350
HDR64 = ****** 65-5125
HIBYTE = 177400 #13-1511 #22-2240 #22-2289 32-2846 #46-4047 #61-4716
H.IPC = 000076 #61-4763 65-5154
H.ISP = 000100 #61-4764 65-5155
H.LUN = 000132 #61-4766 63-4885
H.LUT = ****** GX 19-2006
H.NLUN = 000130 #61-4765 66-5175
IAE = 002000 #8-403 10-717 10-728
IE.ABO = 177761 19-1970 21-2115 41-3798
IE.ACT = 177771 67-5303
IE.BAD = 177777 21-2155
IE.BLK = 177754 10-730 14-1696
IE.DNR = 177775 9-656
IE.IFC = 177776 9-573 14-1642 33-2952
IE.OFL = 177677 43-3879
IE.VER = 177774 10-715 10-858 14-1701 21-2174
IE.WLK = 177764 10-724
IFLOP = 100000 #13-1511 #22-2240 #46-4047 #61-4716
ILF = 000001 #8-413 10-717
ILFCD 002622 R 14-1587 #14-1642
ILR = 000002 #8-412 10-717
INIT = 040000 #13-1532 15-1763
INITCR 013736 RG 51-4218 51-4218 51-4229 51-4229 52-4244 52-4244 52-4337 52-4337 #54-4505
58-4627 58-4627
INITLP 010550 RG 30-2629 30-2629 30-2642 30-2642 31-2666 31-2666 #37-3404
INSHD 014144 RG #62-4799
INSMSG 017560 R 69-5411 #69-5487
INSTAL 015074 RG 62-4799 62-4799 #63-4864 63-4867 67-5310
INSTK 014424 RG 62-4799 #62-4799
INTEBL = 000100 #13-1530 14-1684 15-1720
INTENB = 000100 #23-2322 34-3036 34-3040 34-3060 36-3379 37-3417 39-3515 39-3540 41-3784
44-3996
INTROF = 000010 #13-1511 #22-2240 #46-4047 #61-4716
INTRON = 000040 #13-1511 #22-2240 #46-4047 #61-4716
INTSON = 000001 #13-1511 #22-2240 #46-4047 #61-4716
INT10S = 000400 #13-1511 #22-2240 #46-4047 #61-4716
INT11C = 002000 #13-1511 #22-2240 #46-4047 #61-4716
INT11S = 004000 #13-1511 #22-2240 #46-4047 #61-4716
IOABT 004750 R 21-2069 #21-2107
IODN 004356 R 19-1978 #19-2023
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 8
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
IODNCR 014130 R 56-4573 56-4573 57-4606 #59-4655
IO.ACW = 007000 64-5042
IO.APV = 014010 63-4905
IO.ATT = 001400 21-2080
IO.DAC = 010000 33-2939 68-5378
IO.FNA = 004400 68-5318
IO.KIL = 000012 33-2958
IO.RLB = 001000 9-569 14-1584 15-1725 33-2935
IO.RVB = 010400 33-2937 68-5338 68-5360
IO.WLB = 000400 9-571 14-1586 14-1619 21-2141 33-2931 35-3246 69-5431
IO.WVB = 011000 8-473 33-2933 68-5343
IPAERR 016070 R #65-5098 65-5149
IS.RDD = 000002 15-1734
IS.SUC = 000001 10-712 10-966 15-1737 21-2133 33-2965 44-3963
KLPWRF = 000010 #13-1511 #22-2240 #46-4047 #61-4716
KT11 = ****** 65-5097 65-5147
LBLBFE 014614 R #62-4815 *64-5031 66-5178 66-5187
LBLBLK 014606 R #62-4812 *64-5053 66-5190 *68-5362 68-5363
LBLBUF 014612 R #62-4814 *64-5029 66-5276 *66-5284 68-5361
LBLNUM 014610 R #62-4813 *65-5167 66-5190
LOAD11 = 000004 #13-1511 #22-2240 #46-4047 #61-4716
LOBYTE = 000377 #22-2288 22-2289 41-3798 43-3879 44-3963
LOINIT = 000400 #23-2319
LPALOC = 000214 #22-2219
LPBCTR = 000006 G #23-2352 34-3058 39-3507 *39-3524 39-3525 *39-3539 *44-3950 *44-3977 *44-3986
LPBSAD = 000004 G #23-2350 39-3526 *39-3531 *44-3976 *44-3984 *44-3985
LPCBUF = 000014 G #23-2365 *36-3359 *36-3362 39-3535
LPCCTR = 000015 G #23-2366
LPCEVF = ****** GX *31-2661 32-2698 33-2902 34-3028
LPCKSM = 000017 G #23-2369 34-3057 39-3504
LPCSA = ****** GX *30-2621 32-2704 34-3033 *37-3416 39-3497 41-3782 42-3836 43-3872
LPCSM = ****** GX *34-3056 *34-3057 35-3275 *36-3371 *39-3503 *39-3504
LPCSRA = 000000 G #23-2311
LPCSRB = 000002 G #23-2333 35-3171 35-3195 35-3216 39-3560
LPDCLR 010620 R 30-2616 #37-3418
LPDINT 007172 R 30-2614 #34-3037
LPEMSG 010056 R 35-3236 35-3246 #35-3247
LPEMSX 010071 R 35-3232 #35-3251
LPERUN 010066 R *35-3241 #35-3249
LPEVFG = ****** GX *30-2636 *30-2637 30-2638 31-2661 31-2662 32-2747 34-3072 35-3138 35-3300
35-3308 36-3342 37-3424 39-3573 40-3685 41-3779 41-3804 42-3841 43-3900
44-3969
LPEXPA = ****** GX 37-3415
LPEXPZ = ****** GX 35-3274
LPHD 005254 RG #27-2502
LPHUNG = ****** GX *34-3052
LPINI 005644 R 27-2502 27-2502 #30-2635
LPIOD 006016 R #32-2697
LPITH = ****** GX 32-2717 32-2736 34-3048 34-3064 *37-3419 39-3498 *39-3567 41-3777 *41-3781
42-3834 *44-3948
LPLOOP 005730 R #31-2656 34-3082
LPMCB = ****** GX 39-3530 *44-3981 44-3984
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 9
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
LPMKT 007136 R #34-3027
LPMRKT 005554 R #30-2603 30-2639
LPNIR 006676 R 32-2772 #33-2901 33-2969 33-2995
LPPCTR = 000010 G #23-2356 *32-2819 36-3375 *36-3375 39-3553 *39-3553 41-3785 *41-3785 42-3838
*42-3838
LPQDPB 010034 R *35-3237 35-3242 #35-3245
LPRAMD = 000012 G #23-2360 *36-3361 39-3532
LPRMA = ****** GX 32-2785 *32-2790 32-2801 *32-2840 32-2843 41-3773
LPRMC = ****** GX *32-2791 32-2806 32-2825 *32-2855
LPRMZ = ****** GX 32-2786 32-2810 *32-2838 32-2844
LPRTRY = 000012 #22-2220 35-3276 43-3871
LPRTY = ****** GX *34-3053 35-3187 35-3277 *39-3513 *39-3562 *43-3871
LPSIZE = ****** GX 32-2767 34-3078 37-3421 40-3653 41-3770 42-3831
LPSSTV 005600 R #30-2608 30-2640
LPSTBK = ****** GX 35-3144 35-3273 35-3281 35-3291
LPSTK 005534 RG 27-2502 #27-2502
LPSTLN = ****** GX 35-3281 35-3295
LPTBL = ****** GX 32-2700 32-2760 34-3031 37-3407 40-3653 41-3770 42-3831
LPTDAT = 000016 G #23-2368
LPTHD = ****** GX 32-2709 32-2745 *32-2857 34-3044 35-3176 41-3787 43-3884 *43-3899
LPTPAR = 000040 #23-2343 35-3171 39-3560
LPTPBT = 010000 #23-2335
LPTRP4 005602 R 30-2609 #30-2613
LPUNIT = ****** GX *39-3491 39-3493
LPUTBL = ****** GX 33-2928 39-3496
LPWRUP 005636 R #30-2628 30-2641
LP.CLR = 002000 #28-2527 35-3169 35-3198 36-3351 36-3353
LP.EOF = 000200 #28-2535 32-2803 35-3156 36-3368 36-3370
LP.F10 = 000400 #28-2532 32-2749 32-2876 35-3224 35-3309 40-3655
LP.HNG = 100000 #28-2510 32-2749 34-3046 34-3074 35-3190 44-3947
LP.LIP = 001000 #28-2529 32-2722 32-2749 32-2779 32-2782 32-2808 36-3354 41-3775 44-3940
LP.MCH = 010000 #28-2519 32-2749 39-3522 39-3538 44-3942 44-3947 44-3987
LP.PZI = 020000 #28-2516 32-2817 32-2821 35-3204 39-3551
LP.SST = 040000 #28-2513 32-2728 32-2803 34-3071 35-3137 35-3311 39-3572 40-3684 43-3881
LP.UNT = 000003 #28-2539 35-3239 35-3293 37-3410 39-3495
LP.WAT = 004000 #28-2522 32-2734 32-2749 34-3042 35-3208 35-3214 35-3229 41-3772 42-3833
44-3947
L$BBLK = 000024 #61-4778
L$BFLG = 000010 #61-4772
L$BHRB = 000022 #61-4777 64-5057
L$BLDZ = 000014 #61-4774
L$BMXZ = 000016 #61-4775
L$BPAR = 000004 #61-4771
L$BPRI = 000012 #61-4773
L$BSA = 000020 #61-4776
L$BTSK = 000000 #61-4770
L$$P20 = 000002 #1-38 32-2701 34-3030 37-3406 40-3653 41-3770 42-3831
MCPE = 020000 #8-359 10-713
MDPE = 000400 #8-381 10-793
MEFCN 005012 R 21-2125 #21-2128
MEMPAR = 000020 #23-2344 35-3171 39-3560
MKDNR 000404 RG #8-466 9-683
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 10
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
MKSCDP 005566 R #30-2605 36-3347
MNTBLK 015042 R #62-4831 63-4907
MNTSYD 015142 R #63-4879 63-4926
MODE00 = 000004 #23-2326 32-2783 32-2809 32-2812
MODE01 = 000010 #23-2325 32-2783
MOL = 010000 #8-388 9-659
MPE11 = 001000 #13-1511 #22-2240 #46-4047 #61-4716
MSGDPB 000422 R #8-472 *9-677 9-682 *9-688
MSGSIZ = 000016 8-473 #8-482
MXF = 001000 #8-380 10-793
M.KTAE = 000010 #8-467 #30-2604 #30-2606 #49-4160
M.KTEF = 000002 #8-467 #30-2604 #30-2606 #49-4160
M.KTMG = 000004 #8-467 #30-2604 #30-2606 #49-4160
M.KTUN = 000006 #8-467 #30-2604 #30-2606 #49-4160
NED = 010000 #8-377 10-719
NEM = 004000 #8-378 10-719
NODADR = ****** GX 19-1949 *19-1950 19-1982 *19-1988 19-2025 *19-2026 21-2077 21-2107 *21-2113
NULSTP = 000040 #13-1511 #22-2240 #46-4047 #61-4716
NUPE = 000002 #13-1511 #22-2240 #46-4047 #61-4716
NXTHDR 017040 R 66-5182 66-5182 66-5230 66-5230 #68-5329
NXTSEC 003420 R 14-1664 14-1664 15-1727 15-1727 #17-1836
N.DID = 000024 #61-4792
N.FID = 000000 #61-4786 63-4977 64-5043
N.FNAM = 000006 #61-4787 63-4937 63-4958
N.FTYP = 000014 #61-4788
N.FVER = 000016 #61-4789
N.NEXT = 000022 #61-4791
N.STAT = 000020 #61-4790
OFFLIN = 000200 #23-2341
ONLINE = 004000 #23-2316 35-3160 36-3339 43-3874
OPI = 020000 #8-400
OPTVFU = 004000 #23-2336 35-3216
PAGZRO = 040000 #23-2313 35-3202 36-3373 39-3505 39-3549
PARENB = 000002 #23-2330 34-3060 36-3379 37-3417 39-3515 39-3540 41-3784 44-3996
PARFND 016126 R 65-5089 #65-5109
PARMSG 017601 R 69-5422 #69-5489
PBTHRD = 000004 #22-2279 22-2281 22-2282 22-2283 32-2867 33-2977 33-2978
PERCLR = 001000 #13-1511 #22-2240 #46-4047 #61-4716
PGE = 002000 #8-379 10-793
PGM = 001000 #8-390
PHYBLK = 000040 #13-1520 14-1609 15-1732 16-1795
PHYS = 100000 #13-1511 #22-2240 #46-4047 #61-4716
PIDENT = 000000 #13-1511 #22-2240 #46-4047 #61-4716
PRI7 = 000340 #13-1511 #22-2240 #46-4047 #61-4716
PROPNT = 000021 #13-1511 #22-2240 #46-4047 #61-4716
PRTOFF = 004000 #13-1511 #22-2240 #46-4047 #61-4716
PR0 = 000000 #13-1511 #22-2240 #46-4047 #61-4716
PR1 = 000040 #13-1511 #22-2240 #46-4047 #61-4716
PR2 = 000100 #13-1511 #22-2240 #46-4047 #61-4716
PR3 = 000140 #13-1511 #22-2240 #46-4047 #61-4716
PR4 = 000200 #13-1511 #22-2240 34-3055 36-3382 #46-4047 #61-4716
PR5 = 000240 #13-1511 #22-2240 #46-4047 #61-4716
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 11
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
PR6 = 000300 #13-1511 #22-2240 #46-4047 #61-4716
PR7 = 000340 #13-1511 21-2138 #22-2240 31-2660 32-2744 #46-4047 52-4238 #61-4716
PS = 177776 9-623 9-665 9-680 #13-1511 14-1686 14-1697 19-1938 *19-1938 20-2053
*20-2053 *20-2058 21-2138 *21-2138 *21-2158 #22-2240 31-2660 *31-2660 *31-2663
32-2744 *32-2744 *32-2751 34-3055 *34-3055 *34-3067 36-3382 *36-3382 *36-3384
39-3491 43-3883 *43-3883 #46-4047 52-4238 *52-4238 *52-4241 #61-4716 66-5250
*66-5250 67-5292 *67-5292
PSWW1 = 000005 #13-1511 #22-2240 #46-4047 #61-4716
PSWW10 = 000014 #13-1511 #22-2240 #46-4047 #61-4716
PSWW11 = 000015 #13-1511 #22-2240 #46-4047 #61-4716
PSWW12 = 000016 #13-1511 #22-2240 #46-4047 #61-4716
PSWW13 = 000017 #13-1511 #22-2240 #46-4047 #61-4716
PSWW2 = 000006 #13-1511 #22-2240 #46-4047 #61-4716
PSWW3 = 000007 #13-1511 #22-2240 #46-4047 #61-4716
PSWW4 = 000010 #13-1511 #22-2240 #46-4047 #61-4716
PSWW5 = 000011 #13-1511 #22-2240 #46-4047 #61-4716
PSWW6 = 000012 #13-1511 #22-2240 #46-4047 #61-4716
PSWW7 = 000013 #13-1511 #22-2240 #46-4047 #61-4716
PUDADR 014604 R #62-4811 *63-4887 63-4916 *63-5003 65-5116 66-5199
PULSE = 000020 #13-1511 #22-2240 #46-4047 #61-4716
PUTR50 017462 R 69-5418 69-5418 69-5425 69-5425 #69-5449
PUTR51 017472 R 69-5450 69-5450 #69-5458
PUTSTR 017452 R 69-5412 69-5412 69-5414 69-5414 69-5416 69-5416 69-5423 69-5423 #69-5440
69-5441
QIOSTS 014664 R #62-4821 68-5393 68-5396
QSIZE = 000023 #13-1511 #22-2240 #46-4047 #61-4716
Q.IOAE = 000012 #8-473 #35-3246
Q.IOEF = 000006 #8-473 #35-3246
Q.IOFN = 000002 #8-473 #35-3246
Q.IOLU = 000004 #8-473 #35-3246
Q.IOPL = 000014 #8-473 *9-677 *9-688 *35-3237 #35-3246
Q.IOPR = 000007 #8-473 #35-3246
Q.IOSB = 000010 #8-473 #35-3246
RAMIS0 = 010000 #13-1511 #22-2240 #46-4047 #61-4716
RAMLOD = 000003 #23-2329 32-2812
RAMPAR = 000010 #23-2345 35-3171 35-3195 39-3560
RCVBLK 014546 R #62-4808 63-4866 63-4898
READ = 000007 #13-1541 14-1618
REDHDR 017054 R 64-5058 64-5058 #68-5337
REDLBL 017116 R 64-5054 64-5054 66-5192 66-5192 #68-5359
REQBLK 014552 R #62-4809 62-4810 63-4957 65-5070 66-5251 67-5295 67-5296 69-5417
REQTSK 016702 R 66-5242 #67-5292
RETALL 016612 R #66-5268
RETBUF 016634 R 64-5018 64-5018 66-5240 66-5240 66-5269 #66-5274
RETNOD 016524 R 63-5008 #66-5249 67-5306
RETRY = 000010 #8-447 9-579 #13-1519 14-1602
RETXXX 017114 R 68-5330 68-5332 #68-5355
RFMAD0 = 100000 #13-1511 #22-2240 #46-4047 #61-4716
RFMAD1 = 040000 #13-1511 #22-2240 #46-4047 #61-4716
RFMAD2 = 020000 #13-1511 #22-2240 #46-4047 #61-4716
RFMAD3 = 010000 #13-1511 #22-2240 #46-4047 #61-4716
RM = 000010 #13-1511 #22-2240 #46-4047 #61-4716
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 12
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
RMR = 000004 #8-411 10-717
RPAS = 000016 #8-417
RPBA = 000004 #8-366
RPBUF = ****** GX *9-562 *9-567 *9-568 *9-577 9-639 9-664 9-670 9-672 *10-768
*10-769 10-772 10-872 10-990
RPCNT = ****** GX *9-560 9-640 10-822
RPCS1 = 000000 #8-356
RPCS2 = 000010 #8-372 9-617 9-636 10-719 10-793
RPDA = 000006 #8-368
RPDBR = 000022 #8-421
RPDC = 000034 #8-437 *9-663
RPDS = 000012 #8-385 9-657
RPDT = 000026 #8-425
RPEC1 = 000044 #8-439 10-856
RPEC2 = 000046 #8-441 10-880
RPER1 = 000014 #8-396 9-661 10-716
RPEXP = 176700 #8-352 9-617 9-620 9-636 10-703 10-1179
RPHD 000070 RG #8-454
RPLA = 000020 #8-419
RPMR = 000024 #8-423
RPOF = 000032 #8-430
RPRNA = ****** GX *9-559 9-635 9-669 10-764
RPRTC = ****** GX *9-579 *10-751
RPSN = 000030 #8-427
RPSTK 000350 RG 8-455 #8-455
RPTSK = ****** GX *10-770
RPUNIT = ****** GX *9-561 9-619 9-637
RPWC = 000002 #8-364 10-820 10-975
RPWLO 000400 R #8-463 9-538
RSTERR = 001000 #23-2318 36-3379 37-3417 41-3784
RSX$$E = 000050 #3-101
RSX$$F = 000102 #3-109 #3-118 3-120
RSX$$K = 000126 #3-105
RSX$$V = 000015 #3-100
RWRBLK 017150 R 68-5352 68-5352 68-5364 68-5364 #68-5373
RWRHDR 017072 R 68-5339 #68-5349
RXCS = 000000 #13-1526
RXDB = 000002 #13-1527 *14-1679 *14-1682
R$$E16 = ****** 10-914 10-1055
R$$E18 = 000001 #8-335 8-505 10-845 10-993
R$$JPO = ****** 8-484 9-581 9-645 10-705 10-824 10-837 10-969 10-1079
R$$11D = 000001 #1-47
R.AT = ****** GX 19-2001
R.DP = ****** GX 19-2010
R.FC = ****** GX 9-569 9-571 14-1584 14-1586 14-1609 14-1614 19-1994 21-2078 21-2080
33-2929 33-2958
R.LU = ****** GX 19-1996
R.PB = ****** GX 9-589 9-590 *9-604 *9-610 9-638 9-663 10-765 14-1603 14-1608
15-1739 19-2014 19-2015 21-2082 21-2083 32-2867 33-2977 33-2981
R50TBL 017544 R 69-5464 #69-5479
SCD = 000040 #13-1511 #22-2240 #46-4047 #61-4716
SETBUF 003442 R 14-1624 14-1624 14-1650 14-1650 #17-1854
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 13
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
SETLUN 016304 R #66-5175
SETSTD 015774 R #65-5068
SF.IR = 040000 #61-4750 67-5294
SF.TA = 000001 #61-4749 67-5294
SNSTR 004420 R 19-2019 19-2019 #19-2032 20-2056 20-2056 21-2167 21-2167
SSTSCR 013332 R 52-4284 52-4284 52-4303 52-4303 #53-4389
SSTSLP 007360 R 32-2730 32-2730 #35-3135
STAT = 174434 #13-1511 #22-2240 #46-4047 #61-4716
STATD = 000034 #3-127
STATUS = 000022 #13-1511 #22-2240 #46-4047 #61-4716
STDADR = 014564 R #62-4810 65-5068 66-5268 *66-5272 67-5293 69-5419
STSWD = ****** GX *19-1951 *19-2020 19-2023 19-2024 *19-2027 *21-2085 *21-2086
SWR = 177570 #13-1511 #22-2240 #46-4047 #61-4716
SWSLLT = 100000 #13-1511 #22-2240 #46-4047 #61-4716
SYFLAG 014545 R #62-4807 63-4929 *63-4932
SYMNTD 015276 R 63-4889 63-4911 #63-4915
SYMNT1 015342 R 63-4920 63-4922 #63-4928
SYNTIM = 000004 #23-2346 35-3171 39-3560
S.DRFN = 000034 #61-4793 62-4819
S.FW = ****** GX *67-5294
S.TD = ****** GX 69-5420
TASKNF 015520 R 63-4881 63-4913 63-4953 #63-4990 63-4995 63-4997 63-4999 63-5002
TB.ABO = 040000 #22-2270 32-2794 41-3795 41-3798
TB.DON = 100000 #22-2269 40-3727 41-3798 43-3879 44-3963
TB.EOF = 020000 #22-2271 22-2275 32-2799 40-3709
TB.LPC = 010000 #22-2272 22-2275 32-2815 40-3700
TB.RMD = 004000 #22-2273 22-2275 32-2829 40-3715
TB.SFN = 036000 #22-2275 32-2796 44-3953
TB.VFD = 002000 #22-2274 22-2275 40-3721
TENAD1 = 174410 #13-1511 #22-2240 #46-4047 #61-4716
TENAD2 = 174412 #13-1511 #22-2240 #46-4047 #61-4716
TESTLP 010360 R 32-2738 32-2738 #36-3338
TEST00 = 000400 #23-2339
TEST01 = 001000 #23-2338
TEST02 = 002000 #23-2337
TNAD1 = 000010 #3-133
TNAD2 = 000012 #3-134
TNCERR 016114 R #65-5103 65-5163
TNFERR 015610 R 63-4993 #63-5006
TOBM = 000004 #13-1511 #22-2240 #46-4047 #61-4716
TOIP = 000002 #13-1511 #22-2240 #46-4047 #61-4716
TOIT = 000001 #13-1511 #22-2240 #46-4047 #61-4716
TO10 = 000200 #13-1511 #22-2240 #46-4047 #61-4716
TO10AD = 174420 #13-1511 #22-2240 #46-4047 #61-4716
TO10BC = 174414 #13-1511 #22-2240 #46-4047 #61-4716
TO10BM = 000001 #13-1511 #22-2240 #46-4047 #61-4716
TO10DB = 000400 #13-1511 #22-2240 #46-4047 #61-4716
TO10DN = 100000 #13-1511 #22-2240 #46-4047 #61-4716
TO10DT = 174424 #13-1511 #22-2240 #46-4047 #61-4716
TO10ER = 020000 #13-1511 #22-2240 #46-4047 #61-4716
TO10PK = ****** GX 19-1991
TO11 = 000100 #13-1511 #22-2240 #46-4047 #61-4716
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 14
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
TO11AD = 174422 #13-1511 #22-2240 #46-4047 #61-4716
TO11BC = 174416 #13-1511 #22-2240 #46-4047 #61-4716
TO11BM = 020000 #13-1511 #22-2240 #46-4047 #61-4716
TO11DB = 004000 #13-1511 #22-2240 #46-4047 #61-4716
TO11DN = 000200 #13-1511 #22-2240 #46-4047 #61-4716
TO11DT = 174426 #13-1511 #22-2240 #46-4047 #61-4716
TO11ER = 000002 #13-1511 #22-2240 #46-4047 #61-4716
TR = 000200 #13-1531 14-1631 14-1651 17-1873
TRE = 040000 #8-358 10-713
TRKSEC 003272 R 14-1616 14-1616 #16-1782
TRWAIT 003472 R 14-1677 14-1677 14-1680 14-1680 #17-1872
TSKFND 015642 R 63-4985 #64-5025
TSKLUN = 000002 #61-4754 63-4880 63-4885 63-5001 68-5393
TSKMSG 017572 R 69-5415 #69-5488
TSTMOD = 000001 #23-2327
TTBERR 016102 R #65-5101 65-5146
TTPEN = ****** GX 8-455 13-1544 18-1935 27-2502 49-4135 62-4799
TYPBUF 014670 R #62-4822 69-5410 69-5429
TYPMSG 017250 R 63-4912 63-4912 63-4931 63-4931 63-5007 63-5007 65-5095 65-5095 65-5098
65-5098 65-5101 65-5101 65-5103 65-5103 66-5246 66-5246 67-5306 67-5306
#69-5409
T.BA = ****** GX 65-5124 65-5148
T.HBCT = ****** GX 32-2858 *33-2982 35-3183 44-3979
T.HCAD = ****** GX *32-2801 32-2807 32-2818 32-2845 *33-2983 *39-3526 40-3697 40-3706 44-3976
T.HCBC = ****** GX 32-2715 32-2793 *32-2806 *32-2807 *33-2984 *39-3525 40-3656 *40-3657 *40-3728
*41-3795 41-3796 *41-3798 *43-3879 44-3950 44-3953 *44-3963
T.HEMA = 177774 #22-2281 *33-2985 44-3991
T.HIBC = 177776 #22-2283 32-2865 33-2978
T.HVFC = 177775 #22-2282 *33-2989 44-3981 *44-3983
T.PN = ****** GX 65-5086 65-5088
T.PZ = ****** GX 65-5145
T.SZ = ****** GX 65-5091
T10AD = 000020 #3-131
T11AD = 000022 #3-130
T11BC = 000016 #3-132
T50TBL 017534 R 69-5458 #69-5477
UF.TL = ****** GX 63-4996
UNASG1 = 000032 #13-1511 #22-2240 #46-4047 #61-4716
UNASG2 = 000033 #13-1511 #22-2240 #46-4047 #61-4716
UNASG3 = 000034 #13-1511 #22-2240 #46-4047 #61-4716
UNASG4 = 000035 #13-1511 #22-2240 #46-4047 #61-4716
UNASG5 = 000036 #13-1511 #22-2240 #46-4047 #61-4716
UNASG6 = 000037 #13-1511 #22-2240 #46-4047 #61-4716
UNIT = 000020 #13-1528 14-1579
UNS = 040000 #8-399 9-661 10-717
UPE = 020000 #8-376 10-793
U.ACP = ****** GX *63-4903
U.DACP = ****** GX 63-4901
U.DN = ****** GX 63-4917 63-5001 66-5205
U.FB = ****** GX 63-4996
U.RP = ****** GX 19-2007 63-4886 63-4994
U.SZ = 000050 #61-4748 63-4874 63-4991 65-5120 66-5210
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 15
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
U.UN = ****** GX 63-4918 63-5001 66-5207
U.VA = ****** GX 63-4888 63-4998
VFCFF 007124 R 33-2944 #33-3001
VFCTBL 007122 R 33-2987 #33-2999
VFUERR = 000100 #23-2342 39-3560
VFULOD = 000002 #23-2328 32-2809
VFURDY = 010000 #23-2315 35-3165
VV = 000100 #8-392 9-659
WCE = 040000 #8-375 10-793
WCF = 000040 #8-408
WEP = 000010 #13-1511 #22-2240 #46-4047 #61-4716
WFDNR 000416 RG #8-469 9-684
WFEF1 003510 R #18-1924 19-1937
WFPKT 002356 R #13-1546 14-1573
WLE = 004000 #8-402 10-717 10-722
WRITE = 000005 #13-1540 14-1670
WRL = 004000 #8-389
WRTDD = 000015 #13-1542 14-1673
WRTHDR 017066 R 66-5235 66-5235 68-5331 68-5331 #68-5343
W.TSEF = 000002 #8-458 #8-464 #8-470 #13-1546 #13-1548
ZSTOP = 040000 #13-1511 #22-2240 #46-4047 #61-4716
$CDINT 013762 RG #56-4559
$CD11 = 000001 #1-39
$DBDTE = 000001 #1-45
$DH11 = 000001 #1-43
$DIRAC = 000001 #8-331 9-543 #18-1885 19-1958 21-2108
$DIV 000032 RG #6-264 9-607 9-607 10-862 10-862 69-5462 69-5462
$DSW = ****** GX 67-5298 67-5303
$DTA = ****** 10-1187
$DTE = 000001 #1-46
$DXINT 003060 RG #15-1709
$FE = 000001 #1-41
$F11 = 000001 #1-42
$LPINT 010650 RG #39-3490
$LP20 = 000001 #1-37
$MUL 000000 RG #6-237
$RP04 = 000001 #1-40
$RX11 = 000001 #1-62 12-1449
$TOP10 = ****** 1-53 3-110
$TOP20 = 000001 #1-35 1-61 3-117
$T1091 = ****** 1-49
$$ = 000037 #9-540 9-540 #9-607 9-607 #9-673 9-673 #10-771 10-771 #10-774
10-774 #10-862 10-862 #10-881 10-881 #10-891 10-891 #10-897 10-897
#10-898 10-898 #10-899 10-899 #10-906 10-906 #10-1163 10-1163 #14-1575
14-1575 #14-1616 14-1616 #14-1624 14-1624 #14-1650 14-1650 #14-1664 14-1664
#14-1677 14-1677 #14-1680 14-1680 #14-1692 14-1692 #15-1727 15-1727 #15-1743
15-1743 #19-1956 19-1956 #19-1971 19-1971 #19-1976 19-1976 #19-1985 19-1985
#19-2019 19-2019 #19-2028 19-2028 #20-2056 20-2056 #21-2102 21-2102 #21-2116
21-2116 #21-2167 21-2167 #30-2629 30-2629 #30-2642 30-2642 #31-2666 31-2666
#32-2730 32-2730 #32-2738 32-2738 #32-2762 32-2762 #32-2788 32-2788 #32-2833
32-2833 #32-2868 32-2868 #32-2875 32-2875 #33-2905 33-2905 #33-2960 33-2960
#33-2968 33-2968 #33-2994 33-2994 #34-3065 34-3065 #35-3200 35-3200 #35-3301
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 16
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
35-3301 #36-3383 36-3383 #39-3509 39-3509 #39-3554 39-3554 #39-3574 39-3574
#40-3686 40-3686 #40-3691 40-3691 #40-3734 40-3734 #41-3805 41-3805 #42-3842
42-3842 #43-3901 43-3901 #43-3906 43-3906 #44-3970 44-3970 #51-4218 51-4218
#51-4229 51-4229 #52-4244 52-4244 #52-4272 52-4272 #52-4284 52-4284 #52-4303
52-4303 #52-4337 52-4337 #53-4487 53-4487 #56-4573 56-4573 #57-4602 57-4602
#58-4627 58-4627 #59-4656 59-4656 #63-4869 63-4869 #63-4902 63-4902 #63-4910
63-4910 #63-4912 63-4912 #63-4931 63-4931 #63-4952 63-4952 #63-4984 63-4984
#63-5007 63-5007 #64-5018 64-5018 #64-5027 64-5027 #64-5034 64-5034 #64-5048
64-5048 #64-5054 64-5054 #64-5058 64-5058 #65-5095 65-5095 #65-5098 65-5098
#65-5101 65-5101 #65-5103 65-5103 #66-5182 66-5182 #66-5192 66-5192 #66-5230
66-5230 #66-5235 66-5235 #66-5240 66-5240 #66-5241 66-5241 #66-5246 66-5246
#66-5247 66-5247 #66-5252 66-5252 #66-5264 66-5264 #66-5271 66-5271 #66-5278
66-5278 #66-5282 66-5282 #67-5297 67-5297 #67-5306 67-5306 #68-5331 68-5331
#68-5352 68-5352 #68-5364 68-5364 #69-5412 69-5412 #69-5414 69-5414 #69-5416
69-5416 #69-5418 69-5418 #69-5423 69-5423 #69-5425 69-5425 #69-5450 69-5450
#69-5462 69-5462
$$$ = 000251 R #35-3316 35-3316 #35-3316 35-3316 #35-3316 35-3316 #35-3316 35-3316 #35-3316
35-3316 35-3316 35-3316 35-3316 35-3316 35-3316 #35-3316 35-3316 35-3316
35-3316 35-3316 35-3316 #35-3316 35-3316 35-3316 35-3316 35-3316 35-3316
#35-3316 35-3316 35-3316 35-3316 35-3316 35-3316 #35-3316 #37-3425 37-3425
#37-3425 37-3425 #37-3425 37-3425 #37-3425 37-3425 37-3425 37-3425 37-3425
37-3425 #37-3425 37-3425 37-3425 37-3425 37-3425 #37-3425 37-3425 37-3425
37-3425 37-3425 #37-3425 #39-3579 39-3579 #39-3579 39-3579 #39-3579 39-3579
#39-3579 39-3579 39-3579 39-3579 39-3579 39-3579 #39-3579 39-3579 39-3579
39-3579 39-3579 #39-3579 39-3579 39-3579 39-3579 39-3579 #39-3579 #40-3739
40-3739 #40-3739 40-3739 #40-3739 40-3739 #40-3739 40-3739 40-3739 40-3739
40-3739 40-3739 #40-3739 40-3739 40-3739 40-3739 40-3739 #40-3739 40-3739
40-3739 40-3739 40-3739 #40-3739 #41-3807 41-3807 #41-3807 41-3807 #41-3807
41-3807 #41-3807 41-3807 41-3807 41-3807 41-3807 41-3807 #41-3807 41-3807
41-3807 41-3807 41-3807 #41-3807 41-3807 41-3807 41-3807 41-3807 #41-3807
#42-3844 42-3844 #42-3844 42-3844 42-3844 42-3844 #42-3844 #43-3907 43-3907
#43-3907 43-3907 #43-3907 43-3907 43-3907 43-3907 43-3907 #43-3907 43-3907
43-3907 43-3907 #43-3907 #63-4912 63-4912 #63-4931 63-4931 #63-5007 63-5007
#65-5095 65-5095 #65-5098 65-5098 #65-5101 65-5101 #65-5103 65-5103 #66-5246
66-5246 #67-5306 67-5306
$$$ARG = 000003 #8-473 8-473 #8-473 8-473 #8-473 8-473 #35-3246 35-3246 #35-3246
35-3246 #35-3246 35-3246 #35-3246 35-3246 #63-4880 63-4880 #63-4880 63-4880
#63-4880 63-4880 #63-4880 63-4880 63-4880 63-4880 63-4880 63-4880 63-4880
63-4880 63-4880 63-4880 63-4880 #63-5001 63-5001 #63-5001 63-5001 #63-5001
63-5001 #63-5001 63-5001 63-5001 63-5001 63-5001 63-5001 63-5001 63-5001
63-5001 63-5001 63-5001 #68-5393 68-5393 68-5393 68-5393 68-5393 68-5393
68-5393 68-5393 68-5393 68-5393 68-5393 68-5393 #69-5431 69-5431 69-5431
69-5431 69-5431 69-5431 69-5431 69-5431 69-5431 69-5431 69-5431 69-5431
$$$GLB = ****** 8-458 8-458 8-461 8-461 8-464 8-464 8-467 8-467 8-467
8-467 8-467 8-470 8-470 8-473 8-473 8-473 8-473 8-473
8-473 8-473 8-473 13-1546 13-1546 13-1548 13-1548 18-1924 30-2604
30-2604 30-2604 30-2604 30-2604 30-2606 30-2606 30-2606 30-2606 30-2606
35-3246 35-3246 35-3246 35-3246 35-3246 35-3246 35-3246 35-3246 49-4160
49-4160 49-4160 49-4160 49-4160
$$$OST = 000012 #8-458 8-458 8-458 #8-458 #8-461 8-461 8-461 #8-461 #8-464
8-464 8-464 #8-464 #8-467 8-467 8-467 #8-467 8-467 8-467
#8-467 8-467 8-467 #8-467 8-467 8-467 #8-467 #8-470 8-470
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 17
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
8-470 #8-470 #8-473 8-473 8-473 #8-473 8-473 8-473 #8-473
8-473 8-473 #8-473 8-473 8-473 #8-473 8-473 8-473 #8-473
8-473 8-473 #8-473 8-473 #13-1546 13-1546 13-1546 #13-1546 #13-1548
13-1548 13-1548 #13-1548 #30-2604 30-2604 30-2604 #30-2604 30-2604 30-2604
#30-2604 30-2604 30-2604 #30-2604 30-2604 30-2604 #30-2604 #30-2606 30-2606
30-2606 #30-2606 30-2606 30-2606 #30-2606 30-2606 30-2606 #30-2606 30-2606
30-2606 #30-2606 #35-3246 35-3246 35-3246 #35-3246 35-3246 35-3246 #35-3246
35-3246 35-3246 #35-3246 35-3246 35-3246 #35-3246 35-3246 35-3246 #35-3246
35-3246 35-3246 #35-3246 35-3246 #49-4160 49-4160 49-4160 #49-4160 49-4160
49-4160 #49-4160 49-4160 49-4160 #49-4160 49-4160 49-4160 #49-4160
$$$T1 = 000011 #63-4866 63-4866 #68-5393 68-5393 #69-5431 69-5431
$$$T2 = 000000 #67-5296 67-5296
$$$$ = 000002 #35-3316 35-3316 #35-3316 35-3316 35-3316 #35-3316 35-3316 35-3316 #35-3316
35-3316 35-3316 #35-3316 35-3316 #35-3316 35-3316 #35-3316 35-3316 35-3316
#35-3316 35-3316 35-3316 #35-3316 35-3316 35-3316 #35-3316 35-3316 #35-3316
35-3316 #35-3316 35-3316 35-3316 #35-3316 35-3316 35-3316 #35-3316 35-3316
35-3316 #35-3316 35-3316 #35-3316 35-3316 #35-3316 35-3316 35-3316 #35-3316
35-3316 35-3316 #35-3316 35-3316 35-3316 #35-3316 35-3316 #37-3425 37-3425
#37-3425 37-3425 37-3425 #37-3425 37-3425 37-3425 #37-3425 37-3425 #37-3425
37-3425 #37-3425 37-3425 37-3425 #37-3425 37-3425 37-3425 #37-3425 37-3425
#37-3425 37-3425 #37-3425 37-3425 37-3425 #37-3425 37-3425 37-3425 #37-3425
37-3425 #39-3579 39-3579 #39-3579 39-3579 39-3579 #39-3579 39-3579 39-3579
#39-3579 39-3579 #39-3579 39-3579 #39-3579 39-3579 39-3579 #39-3579 39-3579
39-3579 #39-3579 39-3579 #39-3579 39-3579 #39-3579 39-3579 39-3579 #39-3579
39-3579 39-3579 #39-3579 39-3579 #40-3739 40-3739 #40-3739 40-3739 40-3739
#40-3739 40-3739 40-3739 #40-3739 40-3739 #40-3739 40-3739 #40-3739 40-3739
40-3739 #40-3739 40-3739 40-3739 #40-3739 40-3739 #40-3739 40-3739 #40-3739
40-3739 40-3739 #40-3739 40-3739 40-3739 #40-3739 40-3739 #41-3807 41-3807
#41-3807 41-3807 41-3807 #41-3807 41-3807 41-3807 #41-3807 41-3807 #41-3807
41-3807 #41-3807 41-3807 41-3807 #41-3807 41-3807 41-3807 #41-3807 41-3807
#41-3807 41-3807 #41-3807 41-3807 41-3807 #41-3807 41-3807 41-3807 #41-3807
41-3807 #42-3844 42-3844 #42-3844 42-3844 #43-3907 43-3907 #43-3907 43-3907
43-3907 #43-3907 43-3907 #43-3907 43-3907 #43-3907 43-3907 43-3907 #43-3907
43-3907
.BGBUF = ****** GX 32-2787 32-2827 64-5025 64-5032 66-5275
.BRCLK = 005000 #13-1511 #22-2240 #46-4047 #61-4716
.CECLK = 004000 #13-1511 #22-2240 #46-4047 #61-4716
.CLRMR = 006000 #13-1511 #22-2240 #46-4047 #61-4716
.CLRUN = 010000 #13-1511 #22-2240 #46-4047 #61-4716
.COMEF = ****** GX 10-1158 19-1942 35-3141 52-4298 53-4393
.CONBT = 012000 #13-1511 #22-2240 #46-4047 #61-4716
.CRPFL = ****** GX 52-4242 *52-4245
.CRTSK = ****** GX 30-2636 51-4223 63-4883
.CSHRG = 164000 #13-1511 #22-2240 #46-4047 #61-4716
.CYLTM = 000074 #22-2292 30-2604 30-2604 30-2606 #46-4067 49-4160 49-4160
.DBINT 001236 RG #10-698
.DRLTC = 015000 #13-1511 #22-2240 #46-4047 #61-4716
.DSACF = 066000 #13-1511 #22-2240 #46-4047 #61-4716
.DSIOJ = 065000 #13-1511 #22-2240 #46-4047 #61-4716
.EIOJA = 067000 #13-1511 #22-2240 #46-4047 #61-4716
.FEACK 004436 RG #20-2041
.FEST 004542 RG #21-2068
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 18
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
.GFNR = 102000 #13-1511 #22-2240 #46-4047 #61-4716
.INICL = 070000 #13-1511 #22-2240 #46-4047 #61-4716
.IRLTC = 014000 #13-1511 #22-2240 #46-4047 #61-4716
.LCRDL = 052000 #13-1511 #22-2240 #46-4047 #61-4716
.LCRDR = 051000 #13-1511 #22-2240 #46-4047 #61-4716
.LCRM1 = 057000 #13-1511 #22-2240 #46-4047 #61-4716
.LCRM2 = 056000 #13-1511 #22-2240 #46-4047 #61-4716
.LCRM3 = 055000 #13-1511 #22-2240 #46-4047 #61-4716
.LCRM4 = 054000 #13-1511 #22-2240 #46-4047 #61-4716
.LCRM5 = 053000 #13-1511 #22-2240 #46-4047 #61-4716
.LDAR = 077000 #13-1511 #22-2240 #46-4047 #61-4716
.LDBRL = 043000 #13-1511 #22-2240 #46-4047 #61-4716
.LDBRR = 042000 #13-1511 #22-2240 #46-4047 #61-4716
.LDCK1 = 046000 #13-1511 #22-2240 #46-4047 #61-4716
.LDCK2 = 047000 #13-1511 #22-2240 #46-4047 #61-4716
.LDDIS = 045000 #13-1511 #22-2240 #46-4047 #61-4716
.LDRJD = 064000 #13-1511 #22-2240 #46-4047 #61-4716
.LDRJV = 063000 #13-1511 #22-2240 #46-4047 #61-4716
.LDRM1 = 060000 #13-1511 #22-2240 #46-4047 #61-4716
.LDRM2 = 061000 #13-1511 #22-2240 #46-4047 #61-4716
.LDRM3 = 062000 #13-1511 #22-2240 #46-4047 #61-4716
.LDSEL = 044000 #13-1511 #22-2240 #46-4047 #61-4716
.LPPFL = ****** GX 31-2664 *31-2667
.MEMRS = 076000 #13-1511 #22-2240 #46-4047 #61-4716
.PCAB1 = 150000 #13-1511 #22-2240 #46-4047 #61-4716
.PCAB2 = 151000 #13-1511 #22-2240 #46-4047 #61-4716
.PCAB3 = 152000 #13-1511 #22-2240 #46-4047 #61-4716
.PCAB4 = 153000 #13-1511 #22-2240 #46-4047 #61-4716
.POLLH = ****** GX 66-5270
.PUDBA = ****** GX 63-4874 65-5118 66-5203
.PUDEA = ****** GX 63-4992 66-5211
.RCRM1 = 147000 #13-1511 #22-2240 #46-4047 #61-4716
.RCRM2 = 146000 #13-1511 #22-2240 #46-4047 #61-4716
.RCRM3 = 145000 #13-1511 #22-2240 #46-4047 #61-4716
.RCRM4 = 144000 #13-1511 #22-2240 #46-4047 #61-4716
.RCSPF = 141000 #13-1511 #22-2240 #46-4047 #61-4716
.RDJ14 = 134000 #13-1511 #22-2240 #46-4047 #61-4716
.RDJ71 = 135000 #13-1511 #22-2240 #46-4047 #61-4716
.RDMAB = 133000 #13-1511 #22-2240 #46-4047 #61-4716
.RPELC = ****** GX 10-1160 *10-1165
.RPELQ = ****** GX 10-1166
.RPUNT = ****** GX 19-1999
.SECLK = 003000 #13-1511 #22-2240 #46-4047 #61-4716
.SETMR = 007000 #13-1511 #22-2240 #46-4047 #61-4716
.SETRN = 011000 #13-1511 #22-2240 #46-4047 #61-4716
.SSCLK = 002000 #13-1511 #22-2240 #46-4047 #61-4716
.STDTA = ****** GX 66-5256
.STDTZ = ****** GX *66-5254 66-5255
.STPCL = 000000 #13-1511 #22-2240 #46-4047 #61-4716
.STRCL = 001000 #13-1511 #22-2240 #46-4047 #61-4716
.TPDBA = ****** GX 65-5084
.TPDEA = ****** GX 65-5092
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 19
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
.WRMBX = 071000 #13-1511 #22-2240 #46-4047 #61-4716
..AKCR 014114 RG #59-4647
..AKLP 011566 RG #42-3829
..ALCB = ****** GX 10-1163 10-1163
..ALC2 = ****** GX 32-2833 32-2833 64-5027 64-5027 64-5034 64-5034
..DECB = ****** GX 32-2875 32-2875
..DECN = ****** GX 21-2102 21-2102 40-3691 40-3691 57-4602 57-4602
..DEC2 = ****** GX 32-2788 32-2788 66-5278 66-5278 66-5282 66-5282
..DOLP 012010 RG 36-3383 36-3383 39-3554 39-3554 #44-3945
..DOL1 011774 RG 34-3065 34-3065 39-3509 39-3509 #44-3939
..DQRN = ****** GX 9-540 9-540 14-1575 14-1575 19-1956 19-1956 19-1985 19-1985 33-2905
33-2905
..DSEV = ****** GX 10-771 10-771 15-1743 15-1743 39-3574 39-3574 40-3686 40-3686 41-3805
41-3805 42-3842 42-3842 43-3901 43-3901 44-3970 44-3970 59-4656 59-4656
..ENB0 = ****** GX 19-1976 19-1976 43-3906 43-3906 66-5264 66-5264 67-5297 67-5297
..FSTD = ****** GX 63-4902 63-4902 66-5252 66-5252
..INTX = ****** GX 10-780 15-1750 39-3580 56-4577
..IODN = ****** GX 9-673 9-673 14-1692 14-1692 19-1971 19-1971 19-2028 19-2028 21-2116
21-2116 32-2868 32-2868 33-2968 33-2968
..NADD = ****** GX 66-5271 66-5271
..PTLP 011646 RG 33-2994 33-2994 40-3734 40-3734 #43-3868
..SACK = ****** GX 21-2105 32-2762 32-2762
..SPCR 014072 RG #58-4625
..SPLP 011414 RG 33-2960 33-2960 35-3200 35-3200 #41-3768
..STCR 014050 RG #57-4601
..STIN = ****** GX 19-2035 35-3301 35-3301 52-4272 52-4272 53-4487 53-4487
..STLP 011204 RG #40-3651
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 20
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
ALUN$ #22-2238
ALUN$S #61-4715 63-4880 63-5001
CALL #8-343 9-540 9-607 9-673 10-771 10-774 10-862 10-881 10-891 10-897
10-898 10-899 10-906 10-1163 #13-1510 14-1575 14-1616 14-1624 14-1650 14-1664
14-1677 14-1680 14-1692 15-1727 15-1743 #18-1915 19-1956 19-1971 19-1976 19-1985
19-2019 19-2028 20-2056 21-2102 21-2116 21-2167 #22-2239 30-2629 30-2642 31-2666
32-2730 32-2738 32-2762 32-2788 32-2833 32-2868 32-2875 33-2905 33-2960 33-2968
33-2994 34-3065 35-3200 35-3301 36-3383 39-3509 39-3554 39-3574 40-3686 40-3691
40-3734 41-3805 42-3842 43-3901 43-3906 44-3970 #46-4046 51-4218 51-4229 52-4244
52-4272 52-4284 52-4303 52-4337 53-4487 56-4573 57-4602 58-4627 59-4656 #61-4715
63-4869 63-4902 63-4910 63-4912 63-4931 63-4952 63-4984 63-5007 64-5018 64-5027
64-5034 64-5048 64-5054 64-5058 65-5095 65-5098 65-5101 65-5103 66-5182 66-5192
66-5230 66-5235 66-5240 66-5241 66-5246 66-5247 66-5252 66-5264 66-5271 66-5278
66-5282 67-5297 67-5306 68-5331 68-5352 68-5364 69-5412 69-5414 69-5416 69-5418
69-5423 69-5425 69-5450 69-5462
CALLR #18-1915 #19-2035 #21-2105
CLEF$ #8-343 8-461
DIR$ #8-343 #9-538 #9-627 #9-627 #9-667 #9-668 #9-682 #9-683 #9-684 #13-1510
#14-1573 #14-1688 #18-1914 #19-1937 #22-2238 #30-2639 #30-2640 #30-2640 #30-2641 #30-2641
#31-2657 #31-2657 #32-2835 #32-2835 #35-3140 #35-3140 #35-3242 #36-3347 #36-3349 #36-3349
#46-4046 #51-4226 #51-4227 #51-4227 #51-4228 #51-4228 #52-4236 #52-4236 #52-4297 #52-4297
#53-4392 #53-4392 #63-4866 #63-4866 #63-4880 #63-4880 #63-5001 #63-5001 #64-5019 #64-5019
#67-5296 #67-5296 #68-5393 #68-5393 #69-5431 #69-5431
ERR #61-4730 63-4912 63-5007 65-5095 65-5098 65-5101 65-5103 66-5246 67-5306
ERRF #61-4734 #65-5095 #65-5098 #65-5101
ERRN #61-4739 #67-5306
ERR$ #9-538 #9-627 #9-667 #9-668 #9-682 #9-683 #9-684 #14-1573 #14-1688 #19-1937
#30-2639 #30-2640 #30-2641 #31-2657 #32-2835 #35-3140 #35-3242 #36-3347 #36-3349 #51-4226
#51-4227 #51-4228 #52-4236 #52-4297 #53-4392 #63-4866 #63-4880 #63-5001 #64-5019 #67-5296
#68-5393 #69-5431
IDENT$ #4-148
MOV$ #30-2640 30-2640 30-2640 #30-2641 30-2641 #31-2657 31-2657 #36-3349 36-3349 #51-4227
51-4227 51-4227 #51-4228 51-4228 #52-4236 52-4236 #63-4866 63-4866 #63-4880 #63-4880
63-4880 63-4880 63-4880 #63-5001 #63-5001 63-5001 63-5001 63-5001 #67-5296 67-5296
#68-5393 #68-5393 68-5393 68-5393 68-5393 68-5393 68-5393 68-5393 68-5393 68-5393
68-5393 68-5393 #69-5431 #69-5431 69-5431 69-5431 69-5431 69-5431 69-5431 69-5431
69-5431
MRKT$ #8-343 #8-467 #22-2238 #30-2604 #30-2606 #46-4045 #49-4160
MSG #61-4721 63-4912 63-4931 63-5007 65-5095 65-5098 65-5101 65-5103 66-5246 67-5306
MVB$ #67-5296 67-5296 #68-5393 68-5393 #69-5431 69-5431
NBL$ #63-4880 63-4880 #63-5001 63-5001
OFF$ #8-458 8-458 8-458 #8-461 8-461 8-461 #8-464 8-464 8-464 #8-467
8-467 8-467 8-467 8-467 8-467 #8-470 8-470 8-470 #8-473 8-473
8-473 8-473 8-473 8-473 8-473 8-473 8-473 #13-1546 13-1546 13-1546
#13-1548 13-1548 13-1548 #30-2604 30-2604 30-2604 30-2604 30-2604 30-2604 #30-2606
30-2606 30-2606 30-2606 30-2606 30-2606 #35-3246 35-3246 35-3246 35-3246 35-3246
35-3246 35-3246 35-3246 35-3246 #49-4160 49-4160 49-4160 49-4160 49-4160 49-4160
POP #22-2239 #32-2789 #32-2854 #32-2869 #35-3302 #35-3316 #35-3316 #35-3316 #35-3316 #36-3385
#37-3425 #37-3425 #37-3425 #39-3537 #39-3543 #39-3579 #39-3579 #39-3579 #40-3739 #40-3739
#40-3739 #41-3807 #41-3807 #41-3807 #42-3844 #43-3907 #43-3907 #46-4046 #61-4715 #68-5354
#68-5365 #69-5432 #69-5433 #69-5472
PUSH #22-2239 32-2701 32-2784 32-2824 32-2863 35-3136 35-3297 36-3381 37-3405 39-3492
DRIVERS20 CREATED BY MACRO ON 3-APR-86 AT 19:06 PAGE 21
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
39-3529 40-3652 41-3769 42-3830 43-3869 #46-4046 #61-4715 63-4912 63-4931 63-5007
65-5095 65-5098 65-5101 65-5103 66-5246 67-5306 68-5349 68-5359 69-5409 69-5463
QDPB$ #8-473 #8-473 #35-3246 #35-3246
QDPB$S #68-5393 #68-5393 #69-5431 #69-5431
QIOSY$ #8-343 #8-345 #13-1508 #13-1509 #22-2238 #22-2241 #61-4715 #61-4717
QIOW$ #8-343 8-473 #22-2238 35-3246
QIOW$S #61-4715 #68-5393 #69-5431
RCVX$S #61-4715 63-4866
RESTOR #35-3136 35-3316 #37-3405 37-3425 #39-3492 39-3579 #40-3652 40-3739 #41-3769 41-3807
#42-3830 42-3844 #43-3869 43-3907
RETURN #6-217 #6-276 #8-343 #10-1014 #10-1051 #10-1186 #13-1510 #16-1813 #17-1841 #17-1861
#17-1877 #18-1915 #20-2060 #22-2239 #35-3317 #36-3390 #37-3426 #40-3740 #41-3808 #42-3845
#43-3908 #44-4001 #46-4046 #53-4494 #54-4508 #58-4629 #59-4657 #61-4715 #66-5286 #68-5355
#68-5366 #68-5400 #69-5434 #69-5443 #69-5475
RFA$ #63-4866 63-4866 #67-5296 67-5296 67-5296
RQST$S #61-4715 #67-5296
RVP$ #31-2657 #52-4236 #63-4880 #63-4880 #63-5001 #63-5001 #68-5393 #68-5393 #69-5431 #69-5431
SAVE #22-2247 35-3136 37-3405 39-3492 40-3652 41-3769 42-3830 43-3869
SPRA$S #22-2238 #30-2641 #46-4045 #51-4228
SVTK$S #22-2238 #30-2640 #46-4045 #51-4227
VDPB$S #63-4866 63-4866
WSIG$S #8-343 9-627 #22-2238 32-2835 35-3140 #46-4045 52-4297 53-4392 #61-4715 64-5019
WTLO$ #18-1914 18-1924
WTLO$S #22-2238 31-2657 #46-4045 52-4236
WTSE$ #8-343 #8-458 #8-464 #8-470 #13-1510 #13-1546 #13-1548
WTSE$S #22-2238 #36-3349 #46-4045
$DEF #13-1508 #13-1511 #22-2239 #22-2240 #46-4046 #46-4047 #61-4715 #61-4716
.ENB #18-1914 21-2158 #22-2239 31-2663 32-2751 #46-4046 52-4241
.ENB0 #18-1914 19-1976 #22-2239 43-3906 #61-4715 66-5264 67-5297
.ENB4 #22-2297 34-3067 36-3384
.ENB6 #18-1914 20-2058
.INH #18-1914 21-2138 #22-2239 31-2660 32-2744 #46-4046 52-4238
.INH0 #18-1914 #19-1938 #22-2239 #43-3883 #61-4715 #66-5250 #67-5292
.INH4 #22-2293 34-3055 36-3382
.INH6 #18-1914 #20-2053
.STKM #8-343 #8-455 #13-1510 #13-1544 #18-1914 #18-1935 #22-2239 #27-2502 #46-4046 #49-4135
#61-4715 #62-4799