Trailing-Edge
-
PDP-10 Archives
-
bb-x141b-bb
-
driver.l10
There are 3 other files named driver.l10 in the archive. Click here to see a list.
ARITH -- 16 BIT ARITHMETIC SIMU MACRO M1113 03-APR-86 20:48
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 20:48 PAGE 1
1 .TITLE RSXFC -- RSX20F PARAMETER FILE (TOPS-10 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-10 SYSTEM.
32 ;
33 ; EQUATED SYMBOLS
34 ;
35 000001 $TOP10 =1 ; DEFINE TOPS-10 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 000001 $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 20:48 PAGE 1-1
58 .ENDC ; $T1091
59 .ENDC ; $TOP10
60
61 .IF DF $TOP20
62 $RX11 =1 ; INCLUDE FLOPPY DRIVER
63 .ENDC ; $TOP20
RSXFC -- RSX20F PARAMETER FIL MACRO M1113 03-APR-86 20:48 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 20:48 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
112 000101 RSX$$F = 'A ; TOPS-10 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 20:48 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 20:48 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 20:48 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 20:48 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 20:48 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 20:48 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 20:48 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 20:48 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 20:48 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 20:48 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 20:48 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 20:48 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 20:48 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 20:48 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 20:48 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 20:48 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 20:48 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
1188 .TITLE DTDRV
1189 .IDENT /007000/
1190 ;
1191 ;
1192 ;
1193 ; COPYRIGHT (C) 1975, 1984, 1985 BY
1194 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS.
1195 ; ALL RIGHTS RESERVED.
1196 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
1197 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSION
1198 ; OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES THERE-
1199 ; OF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON.
1200 ; NO TITLE TO OR OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
1201 ;
1202 ; THE INFORMATION CONTAINED IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
1203 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
1204 ; CORPORATION.
1205 ;
1206 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
1207 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPILED BY DIGITAL.
1208 ;
1209 ; VERSION 07-00
1210 ;
1211 ; R. MCLEAN 5-JUN-75
1212 ;
1213 ; TC11 DECTAPE CONTROLLER DRIVER
1214 ;
1215 ; MODIFICATIONS:
1216 ;
1217 ; NO. DATE PROGRAMMER PURPOSE
1218 ; --- ---- ---------- -------
1219 ; 001 15-MAR-77 R. BELANGER CONDITIONALLY
1220 ; ASSEMBLE DECTAPE DRIVER
1221 ; 002 04-APR-77 A. PECKHAM FIX BUG IN I/O DONE SERVICE
1222 ; 22-0CT-77 R. BELANGER REMOVE CONDITIONALS
DTDRV MACRO M1113 03-APR-86 20:48 PAGE 11
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1224 ; MACRO LIBRARY CALLS
1225 ;
1226 ;
1227 .MCALL QIOSY$,$DEF
1228 .MCALL .STKM,WTSE$,QIOW$,MRKT$,DIR$,CALL,RETURN
1229 002056 $DEF
1230 002056 QIOSY$
1231 ;
1232 ;
1233 000020 A.EF=20 ;TEMP DEFINITION OF A.EF BECAUSE MACY WON'T ACCEPT COMPLEX GLOBLS
1234 ;
1235 ; EQUATED SYMBOLS
1236 ;
1237 ;
1238 000005 RETRY=5. ;ERROR RETRY COUNT
1239 ;
1240 177340 DTEXP=177340 ;EXTERNAL PAGE ADDRESS OF DTA'S
1241 ;
1242 ; DIRECTIVES
1243 ;
1244 ;
1245 002056 DTHD:: .STKM 0,0,0,0,0,0,0,DTINI,174000,DTSTK
002124 000000 000000 000000 .WORD 0,0,0,0
002132 000000
002152 174000 002442' 002336' .WORD 174000,DTINI,DTSTK
002206 000005 .WORD 5
002210 000000G .WORD TTPEN
002212 000000 .WORD 0
002214 000000 .WORD 0
002216 000000 .WORD 0
002220 000000 .WORD 0
002222 000000 .WORD 0
002224 000000 .WORD 0
002226 000000 .WORD 0
002230 000000 .WORD 0
002232 000000 .WORD 0
002234 000000 .WORD 0
002336 000000 .WORD 0
002340 000000 .WORD 0
002342 000000 .WORD 0
002344 000000 .WORD 0
002346 000000 .WORD 0
002350 000000 .WORD 0
002352 002442' .WORD DTINI
002354 174000 .WORD 174000
1246 ;
1247 002356 WFDTQ: WTSE$ E.NIR
002356 051 002 .BYTE 41.,2
002360 000000G .WORD E.NIR
1248 ;
1249 002362 WFDTD: WTSE$ E.IOD
002362 051 002 .BYTE 41.,2
002364 000000G .WORD E.IOD
1250 ;
1251 002366 DTNRM: QIOW$ IO.WLB,1,1,0,0,0,<NTRDMS,NTRDSZ>
002366 003 010 .BYTE 3,$$$ARG
002370 000400 .WORD IO.WLB
DTDRV MACRO M1113 03-APR-86 20:48 PAGE 11-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
002372 000001 .WORD 1
002374 001 000 .BYTE 1,0
002376 000000 .WORD 0
002400 000000 .WORD 0
002402 002424' .WORD NTRDMS
002404 000016 .WORD NTRDSZ
1252 ;
1253 002406 MRKDT: MRKT$ 2,74*10,0,0
002406 027 005 .BYTE 23.,5
002410 000002 .WORD 2
002412 000740 .WORD 74*10
002414 000000 .WORD 0
002416 000000 .WORD 0
1254 ;
1255 002420 WFMKT: WTSE$ 2
002420 051 002 .BYTE 41.,2
002422 000002 .WORD 2
1256 ;
1257 002424 012 015 104 NTRDMS: .ASCII <12><15>"DT NOT RDY"<15><12>
002427 124 040 116
002432 117 124 040
002435 122 104 131
002440 015 012
1258 000016 NTRDSZ=.-NTRDMS
1259 .EVEN
1260 ;
1261 ; DRIVER DISPATCH TABLE
1262 ;
1263 ;
1264 ;+
1265 ; **-DTINI-TC11 DECTAPE CONTROLLER INITIATOR
1266 ;
1267 ; THIS ROUTINE IS ENTERED FROM THE QUEUE I/O DIRECTIVE WHEN AN I/O REQUEST
1268 ; IS QUEUED AND AT THE END OF A PREVIOUS I/O OPERATION TO PROPAGATE THE EXECU-
1269 ; TION OF THE DRIVER. IF THE SPECIFIED CONTROLLER IS NOT BUSY, THEN AN ATTEMPT
1270 ; IS MADE TO DEQUEUE THE NEXT I/O REQUEST. ELSE A RETURN TO THE CALLER IS
1271 ; EXECUTED. IF THE DEQUEUE ATTEMPT IS SUCCESSFUL, THEN THE NEXT I/O OPER-
1272 ; ATION IS INITIATED. A RETURN TO THE CALLER IS THEN EXECUTED.
1273 ;
1274 ; INPUTS:
1275 ;
1276 ;
1277 ; OUTPUTS:
1278 ;
1279 ; IF THE SPECIFIED CONTROLLER IS NOT BUSY AND AN I/O REQUEST IS WAIT-
1280 ; ING TO BE PROCESSED, THEN THE REQUEST IS DEQUEUED AND THE I/O OPER-
1281 ; ATION IS INITIATED.
1282 ;-
1283 ;
1284 .ENABL LSB
1285 ;
1286 002442 DTINI: DIR$ #WFDTQ ;WAIT FOR SOMETHING TO BE QUEUE'S
002442 012746 002356' MOV #WFDTQ,-(SP)
002446 104375 EMT 375
1287 002450 012700 052104 MOV #"DT,R0 ;FIND THE UNIT NUMBER OF THE DT
1288 002454 CALL ..DQRN ;;DEQUEUE REQUEST
002454 004737 000000G JSR PC,..DQRN
DTDRV MACRO M1113 03-APR-86 20:48 PAGE 11-2
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1289 002460 103770 BCS DTINI
1290 002462 010337 000000G MOV R3,DTCNT ;SAVE COUNT
1291 002466 010437 000000G MOV R4,DTBUF
1292 002472 010537 000002G MOV R5,DTBUF+2
1293
1294 002476 012737 000005 000000G MOV #RETRY,DTRTC ;SET RETRY COUNT
1295 002504 012700 000001G MOV #DTBUF+1,R0
1296 002510 110210 MOVB R2,@R0 ;INSERT DRIVE NUMBER
1297 002512 152740 000115 BISB #115,-(R0) ;ASSUME WRITE LOGICAL FUNCTION
1298 002516 122761 000001 000001G CMPB #IO.WLB/256.,R.FC+1(R1) ;WRITE LOGICAL FUNCTION?
1299 002524 001406 BEQ 10$ ;IF EQ YES
1300 002526 042710 000010 BIC #10,@R0 ;CONVERT TO READ LOGICAL FUNCTION
1301 002532 122761 000002 000001G CMPB #IO.RLB/256.,R.FC+1(R1) ;READ LOGICAL?
1302 002540 001074 BNE 767$ ;NO -- BAD FUNCTION
1303 002542 032761 000100 000000G 10$: BIT #IO.WLV&377,R.FC(R1) ;REVERSE DIRECTION?
1304 002550 001402 BEQ 20$ ;IF EQ NO
1305 002552 052710 004000 BIS #4000,@R0 ;SET REVERSE DIRECTION BIT
1306 002556 012703 000354 20$: MOV #IE.BLK&377,R3 ;ASSUME ILLEGAL BLOCK NUMBER
1307 002562 016102 000010G MOV R.PB+10(R1),R2 ;GET LOW PART OF LOGICAL BLOCK NUMBER
1308 002566 020227 001102 CMP R2,#1102 ;LEGAL BLOCK NUMBER?
1309 002572 103052 BHIS 66$ ; +++002 IF HIS NO
1310 002574 105761 000006G TSTB R.PB+6(R1) ;HIGH PART OF LOGICAL BLOCK NUMBER ZERO?
1311 002600 001045 BNE 50$ ;IF NE NO
1312 002602 010237 000000G MOV R2,DTCW2 ;SET LOGICAL BLOCK NUMBER
1313
1314 ;
1315 ;
1316
1317 002606 005037 177340 DTOUT: CLR @#DTEXP ;;;CLEAR INTERRUPT ENABLE
1318 ;
1319 ;
1320 ; INITIATE I/O OPERATION
1321 ;
1322 ;
1323 002612 012700 177346 30$: MOV #DTEXP+6,R0 ;GET ADDRESS OF COMMAND REGISTER
1324 002616 013710 000002G MOV DTBUF+2,@R0 ;INSERT BUFFER ADDRESS
1325 002622 013740 000000G MOV DTCNT,-(R0) ;INSERT LENGTH OF TRANSFER IN BYTES
1326 002626 005037 000000G CLR DTCW3 ;CLEAR FINAL ERROR STATUS
1327 002632 006010 ROR @R0 ;CONVERT LENGTH TO WORD COUNT
1328 002634 005410 NEG @R0 ;MAKE NEGATIVE WORD COUNT
1329 002636 113740 000001G MOVB DTBUF+1,-(R0) ;INSERT UNIT AND DIRECTION BIT
1330 002642 112740 000011 MOVB #11,-(R0) ;STOP TRANSPORT (SELECT UNIT)
1331 002646 032710 100200 35$: BIT #100200,@R0 ;SELECT ERROR?
1332 002652 100432 BMI 40$ ;IF MI YES
1333 002654 001774 BEQ 35$ ;IF EQ DRIVE NOT SELECTED
1334 002656 112737 000010 000001G MOVB #8.,DTRTC+1 ;SET TAPE ROCK COUNT
1335 002664 042737 000000G 000020G BIC #EF.IOD,DTTSK+A.EF ;CLEAR EVENT FLAG
1336 002672 112710 000103 MOVB #103,@R0 ;START SEARCH FOR BLOCK.
1337 002676 032737 000340 177776 BIT #340,@#PS ;AT PRI LEVEL?
1338 002704 001176 BNE 140$ ;YES -- RETURN THROUGH INTERRUPT SERVICE
1339 002706 DIR$ #WFDTD ;WAIT FOR I/O DONE
002706 012746 002362' MOV #WFDTD,-(SP)
002712 104375 EMT 375
1340 002714 013703 000000G 50$: MOV DTBUF,R3 ;SET UP FOR I/O DONE
1341 002720 013704 000000G 66$: MOV DTCNT,R4
1342 002724 CALL ..IODN
002724 004737 000000G JSR PC,..IODN
DTDRV MACRO M1113 03-APR-86 20:48 PAGE 11-3
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1343 002730 000644 BR DTINI ;WAIT FOR ANOTHER
1344 002732 012703 177776 767$: MOV #IE.IFC,R3
1345 002736 000770 BR 66$
1346 ;
1347 ;
1348 ;
1349 ;
1350 ;
1351 ; OUTPUT SELECT ERROR MESSAGE
1352 ;
1353 ;
1354 002740 032737 000340 177776 40$: BIT #340,@#PS ;CHECK FOR INT SERV
1355 002746 001135 BNE 175$ ;TOUGH
1356 002750 DIR$ #DTNRM ;COMPLAIN
002750 012746 002366' MOV #DTNRM,-(SP)
002754 104375 EMT 375
1357 002756 DIR$ #MRKDT ;MARK TIME ON SELECT ERROR
002756 012746 002406' MOV #MRKDT,-(SP)
002762 104375 EMT 375
1358 002764 DIR$ #WFMKT ;WAIT FOR MARK TIME
002764 012746 002420' MOV #WFMKT,-(SP)
002770 104375 EMT 375
1359 002772 000705 BR DTOUT ;AND TRY AGAIN
1360 ;
1361
1362 ;+
1363 ; **-$DTINT-TC11 DECTAPE CONTROLLER INTERUPTS
1364 ;-
1365 ;
1366 002774 $DTINT:: ;;;REF LABEL
1367 ;
1368 ;
1369 ;
1370 ;
1371 002774 010046 MOV R0,-(SP) ;;;SAVE REGISTERS
1372 002776 010246 MOV R2,-(SP)
1373 003000 010346 MOV R3,-(SP)
1374 ;
1375 ;
1376 ;
1377 ;
1378 003002 012703 177342 MOV #DTEXP+2,R3 ;;;SET UP ADDRESS OF DT
1379 003006 032713 000002 BIT #2,@R3 ;;;BLOCK SEARCH IN PROGRESS?
1380 003012 001462 BEQ 150$ ;;;IF EQ NO
1381 003014 005713 TST @R3 ;;;SEARCH ERROR?
1382 003016 100011 BPL 70$ ;;;IF PL NO
1383 003020 005743 TST -(R3) ;;;END ZONE?
1384 003022 100436 BMI 110$ ;;;IF MI YES
1385 003024 032723 020000 BIT #20000,(R3)+ ;;;MARK TRACK ERROR?
1386 003030 001045 BNE 120$ ;;;IF NE YES-TRY TO BYPASS IT
1387 003032 012737 100000 000000G 60$: MOV #100000,DTCW3 ;;;SET UNRECOVERALBE ERROR
1388 003040 000454 BR 160$ ;;;
1389 003042 016346 000006 70$: MOV 6(R3),-(SP) ;;;GET CURRENT BLOCK NUMBER
1390 003046 123763 000001G 000001 CMPB DTBUF+1,1(R3) ;;;MOVING IN FINAL DIRECTION?
1391 003054 001003 BNE 80$ ;;;IF NE NO
1392 003056 021637 000000G CMP @SP,DTCW2 ;;;BLOCK NUMBER MATCH?
1393 003062 001432 BEQ 130$ ;;;IF EQ YES
DTDRV MACRO M1113 03-APR-86 20:48 PAGE 11-4
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1394 003064 032713 004000 80$: BIT #4000,@R3 ;;;MOVING IN FORWARD DIRECTION?
1395 003070 001405 BEQ 90$ ;;;IF EQ YES
1396 003072 062716 000002 ADD #2,@SP ;;;ADD TURN AROUND BIAS
1397 003076 023726 000000G CMP DTCW2,(SP)+ ;;;TURN AROUND NECESSARY?
1398 003102 000404 BR 100$ ;;;
1399 003104 162716 000002 90$: SUB #2,@SP ;;;SUBTRACT TURN AROUND BIAS
1400 003110 022637 000000G CMP (SP)+,DTCW2 ;;;TURN AROUND NECESSARY?
1401 003114 003413 100$: BLE 120$ ;;;IF LE NO
1402 003116 005743 TST -(R3) ;;;POINT TO ERROR REGISTER
1403 003120 005723 110$: TST (R3)+ ;;;POINT TO COMMAND REGISTER
1404 003122 105337 000001G DECB DTRTC+1 ;;;DRIVE HUNG?
1405 003126 002741 BLT 60$ ;;;IF LT YES
1406 003130 012746 004000 MOV #4000,-(SP) ;;;GET DIRECTION BIT
1407 003134 041316 BIC @R3,@SP ;;;.NOT.COMMAND REGISTER.AND.DIRECTION BIT
1408 003136 042713 004000 BIC #4000,@R3 ;;;.NOT.DIRECTION BIT.ANL.OMMAND REGISTER
1409 003142 052613 BIS (SP)+,@R3 ;;;DIRECTION BIT.OR.COMMAND REGISTER
1410 003144 005213 120$: INC @R3 ;;;CONTINUE SEARCH
1411 003146 000455 BR 140$ ;;;
1412 003150 005726 130$: TST (SP)+ ;;;REMOVE BLOCK NUMBER FROM STACK
1413 003152 013713 000000G MOV DTBUF,@R3 ;;;START READ/WRITE FUNCTION
1414 003156 000451 BR 140$
1415 003160 005713 150$: TST @R3 ;;;ANY ERRORS?
1416 003162 100003 BPL 160$ ;;;IF PL NO
1417 003164 016337 177776 000000G MOV -2(R3),DTCW3 ;;;SAVE ERROR STATUS
1418 003172 112713 000011 160$: MOVB #11,@R3 ;;;STOP TAPE MOTION
1419 003176 012700 000001 MOV #IS.SUC&377,R0 ;ASSUME SUCCESSFUL COMPLETION
1420 003202 013702 000000G MOV DTCW3,R2 ;RETRIEVE FINAL STATUS
1421 003206 001417 BEQ 180$ ;IF EQ SUCCESS
1422 003210 032702 063000 BIT #63000,R2 ;RECOVERABLE ERROR?
1423 003214 001405 BEQ 170$ ;IF EQ NO
1424 003216 105337 000000G DECB DTRTC ;ANY MORE RETRIES?
1425 003222 003402 BLE 170$ ;IF LE NO
1426 003224 000137 002612' JMP 30$ ;TRY AGAIN
1427 003230 012700 000364 170$: MOV #IE.WLK&377,R0 ;ASSUME DRIVE WRITE LOCKED
1428 003234 032702 010000 BIT #10000,R2 ;DRIVE WRITE LOCKED?
1429 003240 001002 BNE 180$ ;IF NE YES
1430 003242 012700 000374 175$: MOV #IE.VER&377,R0 ;UNRECOVERABLE ERROR
1431 003246 013703 177344 180$: MOV DTEXP+4,R3
1432 003252 160303 SUB R3,R3
1433 003254 063703 000000G ADD DTCNT,R3
1434 003260 010037 000000G MOV R0,DTBUF ;SAVE I/O STATUS
1435 003264 010337 000002G MOV R3,DTBUF+2
1436 003270 052737 000000G 000020G BIS #EF.IOD,DTTSK+A.EF ;SET EVENT FLAG
1437 003276 CALL ..DSEV
003276 004737 000000G JSR PC,..DSEV
1438 003302 012603 140$: MOV (SP)+,R3
1439 003304 012602 MOV (SP)+,R2
1440 003306 012600 MOV (SP)+,R0
1441 003310 000137 000000G JMP ..INTX ;RETURN FROM INTERRUPT
1442 ;
1443 .DSABL LSB
1444 ;
DTDRV MACRO M1113 03-APR-86 20:48 PAGE 12
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1447
1448
DTDRV MACRO M1113 03-APR-86 20:48 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 003314 WFEF1: WTLO$ 1,EF.SEP!EF.NIR!EF.TEF ;WAIT FOR SOMETHING TO DO
003314 053 003 .BYTE 43.,3
003316 000001 .WORD 1
003320 000000C .WORD EF.SEP!EF.NIR!EF.TEF
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 20:48 PAGE 18-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1935 003322 FEHD:: .STKM 0,0,0,0,0,0,0,FEDRV,174000,FESTK
003370 000000 000000 000000 .WORD 0,0,0,0
003376 000000
003416 174000 003622' 003602' .WORD 174000,FEDRV,FESTK
003452 000005 .WORD 5
003454 000000G .WORD TTPEN
003456 000000 .WORD 0
003460 000000 .WORD 0
003462 000000 .WORD 0
003464 000000 .WORD 0
003466 000000 .WORD 0
003470 000000 .WORD 0
003472 000000 .WORD 0
003474 000000 .WORD 0
003476 000000 .WORD 0
003500 000000 .WORD 0
003602 000000 .WORD 0
003604 000000 .WORD 0
003606 000000 .WORD 0
003610 000000 .WORD 0
003612 000000 .WORD 0
003614 000000 .WORD 0
003616 003622' .WORD FEDRV
003620 174000 .WORD 174000
FEDRV MACRO M1113 03-APR-86 20:48 PAGE 19
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1937 003622 FEDRV: DIR$ #WFEF1 ;WAIT TO GET STARTED
003622 012746 003314' MOV #WFEF1,-(SP)
003626 104375 EMT 375
1938 003630 .INH0 ;LOCK OUT DTE INTERRUPTS
003630 013746 177776 MOV @#PS,-(SP)
003634 112737 000140 177776 MOVB #140,@#PS
1939 003642 013700 000020G 1$: MOV FETSK+A.EF,R0 ;;;PICK UP THE EVENT FLAGS
1940 003646 001434 BEQ 5$ ;;;EXIT IF NOTHING
1941 003650 005037 000020G CLR FETSK+A.EF ;;;CLEAR EVENT FLAGS
1942 003654 005737 000002G TST .COMEF+2 ;;; [4.1.1105] PRIMARY PROTOCOL IN USE?
1943 003660 100002 BPL 2$ ;;; [4.1.1105] NO -- BETTER DUMP REQUEST'S
1944 003662 005700 TST R0 ;;;SECONDARY PROTOCOL CHANGE?
1945 003664 100025 BPL 5$ ;;;NO -- CONTINUE
1946 ;
1947 ; PRIMARY PROTOCOL HAS DIED - CLEAR OUT THE REQUEST QUEUE
1948 ;
1949 003666 013701 000000G 2$: MOV NODADR,R1 ;;;GET CURRENT NODE
1950 003672 005037 000000G CLR NODADR ;;;DON'T BLOCK FE DRIVER
1951 003676 005037 000000G CLR STSWD ;;;CLEAR STATUS WORD BLOCK
1952 003702 042737 064000 000000G BIC #FE.SER!FE.DET!FE.DTE,FETBL+0 ;;;NO ACTION ON FE0
1953 003710 005701 TST R1 ;;;WERE WE PROCESSING A NODE ?
1954 003712 001005 BNE 4$ ;;;YES -- DO IT FIRST
1955 003714 012700 042506 3$: MOV #"FE,R0 ;;;PICK A NODE FROM THE QUEUE
1956 003720 CALL ..DQRN ;;;DQ
003720 004737 000000G JSR PC,..DQRN
1957 003724 103746 BCS 1$
1966 003726 4$:
1968 ;
1969 ;
1970 003726 012703 177761 7$: MOV #IE.ABO,R3 ;;;RETURN ABORTED
1971 003732 CALL ..IODN ;;;FINISH I/O
003732 004737 000000G JSR PC,..IODN
1972 003736 000766 BR 3$ ;;;AND TRY NEXT REQUEST
1973 ;
1974 ; CHECK FOR EVENTS
1975 ;
1976 003740 5$: .ENB0 ;;;ENABLE INTERRUPTS
003740 004737 000000G JSR PC,..ENB0
1977 003744 032700 000400 BIT #EF.TEF,R0 ;CHECK TO SEE IF DONE
1978 003750 001104 BNE IODN
1979 ;
1980 ; MUST BE I/O REQUEST
1981 ;
1982 003752 005737 000000G TST NODADR ;BLOCKED?
1983 003756 001321 BNE FEDRV ;YES -- DON'T DO ANYTHING ON QIO NOW
1984 003760 012700 042506 MOV #"FE,R0 ;DQ FROM FE DRIVER
1985 003764 CALL ..DQRN ;DQ
003764 004737 000000G JSR PC,..DQRN
1986 003770 103714 BCS FEDRV ;NOTHING -- WAIT
1987 003772 052737 004000 000000G BIS #FE.SER,FETBL+0 ;FE0 BEING USED FOR -11 REQUEST
1988 004000 010137 000000G MOV R1,NODADR ;SAVE THE ADDRESS OF THE NODE
1989 004004 010537 000000G MOV R5,ADRSAV ;SAVE THE ADDRESS
1990 004010 010337 000000G MOV R3,BYTESA ;SAVE THE BYTE COUNT
1991 004014 012702 000000G MOV #TO10PK,R2 ;SET UP PACKET ADDRESS
1992 004020 010200 MOV R2,R0 ;SAVE THE ADDRESS OF THE BUFFER
1993 004022 012722 000014 MOV #14,(R2)+ ;STORE SIZE
1994 004026 016122 000000G MOV R.FC(R1),(R2)+ ;SET UP THE FUNCTION CODE
FEDRV MACRO M1113 03-APR-86 20:48 PAGE 19-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
1995 004032 005003 CLR R3 ;FIND THE LUN
1996 004034 156103 000000G BISB R.LU(R1),R3 ;SET UP THE LUT NUMBER
1997 004040 001005 BNE 10$ ;EXEC REQUEST?
1998 004042 012722 041104 MOV #"DB,(R2)+ ;DECLARE DB
1999 004046 013722 000000G MOV .RPUNT,(R2)+ ;SET UNIT NUMBER
2000 004052 000424 BR 77$ ;AND FINISH
2001 004054 016104 000000G 10$: MOV R.AT(R1),R4 ;FIND THE ATL
2002 004060 016404 000000G MOV A.HA(R4),R4 ;FIND THE HEADER ADDRESS
2003 004064 006303 ASL R3 ;MULTIPLY THE LUN BY 2
2004 004066 006303 ASL R3
2005 004070 060304 ADD R3,R4 ;POINT TO CORRECT ENTRY
2006 004072 016404 177776G MOV H.LUT-2(R4),R4 ;FIND THE LUT (FINALLY)
2007 004076 016404 000000G MOV U.RP(R4),R4 ;DO REDIRECT
2008 004102 012422 MOV (R4)+,(R2)+ ;STORE THE DEVICE (ASCII CHARACTER)
2009 004104 011422 MOV (R4),(R2)+ ;STORE THE UNIT
2010 004106 116104 000000G MOVB R.DP(R1),R4 ;FIND THE DPB SIZE
2011 004112 162704 000007 SUB #7,R4 ;SUB PERMINENT ONES
2012 004116 001002 BNE 77$ ;GOT A GOOD BYTE COUNT
2013 004120 005037 000000G CLR BYTESA ;NO CLEAR OUT BYTE COUNT
2014 004124 016122 000006G 77$: MOV R.PB+6(R1),(R2)+ ;STORE THE BLOCK NUMBER
2015 004130 016122 000010G MOV R.PB+10(R1),(R2)+
2016 004134 013722 000000G MOV BYTESA,(R2)+ ;SET BYTE COUNT
2017 004140 001403 BEQ 78$ ;IF MORE DATA MUST GO OUT
2018 004142 052737 040000 000000G BIS #FE.DET,FETBL+0 ;THEN SO INDICATE
2019 004150 78$: CALL SNSTR ;START INDIRECT FUNCTION
004150 004737 004224' JSR PC,SNSTR
2020 004154 005037 000000G CLR STSWD
2021 004160 000620 BR FEDRV ;AND WAIT
2022
2023 004162 013703 000000G IODN: MOV STSWD,R3 ;SET I/O DONE
2024 004166 013704 000002G MOV STSWD+2,R4
2025 004172 013701 000000G MOV NODADR,R1 ;SET NODE ADDRESS
2026 004176 005037 000000G CLR NODADR ;CLEAR INCASE OF ABORT
2027 004202 005037 000000G CLR STSWD ;CLEAR STATUS WORD
2028 004206 CALL ..IODN ;SET I/O DONE
004206 004737 000000G JSR PC,..IODN
2029 004212 042737 064000 000000G BIC #FE.SER!FE.DET!FE.DTE,FETBL+0 ;WE ARE FINISHED WITH -11 REQUEST
2030 004220 000137 003622' JMP FEDRV ;AND RETURN
2031
2032 004224 012701 100000G SNSTR: MOV #BC.STR+100000,R1 ;SET UP STRING DATA
2033 004230 005002 CLR R2 ;NO EVENT FLAG
2034 004232 012703 000000G MOV #D.FEPD,R3 ;FE DEVICE
2035 004236 CALLR ..STIN ;START INDIRECT
004236 000137 000000G JMP ..STIN
FEDRV MACRO M1113 03-APR-86 20:48 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 004242 032712 040000 .FEACK::BIT #FE.DET,(R2) ;IS THERE DATA TO SEND ?
2042 004246 001436 BEQ 30$ ;NO, IGNORE THE ACK.
2043 004250 010046 MOV R0,-(SP) ;SAVE R0
2044 004252 013700 000000G MOV ADRSAV,R0 ;PICK UP THE ADDRESS
2045 004256 012701 000100 MOV #64.,R1 ;SET THE COUNT
2046 004262 020137 000000G CMP R1,BYTESA ;TOO BIG ??
2047 004266 101402 BLOS 10$ ;NO - USE THIS COUNT
2048 004270 013701 000000G MOV BYTESA,R1 ;YES - SEND WHAT'S LEFT
2049 004274 060137 000000G 10$: ADD R1,ADRSAV ;SET NEW ADDRESS
2050 004300 160137 000000G SUB R1,BYTESA ;AND BYTES LEFT
2051 004304 001002 BNE 20$ ;IF NO MORE AFTER THIS
2052 004306 042712 040000 BIC #FE.DET,(R2) ;THEN SO INDICATE
2053 004312 20$: .INH6 ;LOCK OUT INTERRUPTS
004312 013746 177776 MOV @#PS,-(SP)
004316 112737 000300 177776 MOVB #300,@#PS
2054 004324 014046 MOV -(R0),-(SP) ;;;SAVE MEMORY HERE
2055 004326 010110 MOV R1,@R0 ;;;STORE FIRST WORD TO10
2056 004330 CALL SNSTR ;;;START FUNCTION
004330 004737 004224' JSR PC,SNSTR
2057 004334 012610 MOV (SP)+,@R0 ;;;RESTORE FIRST WORD
2058 004336 .ENB6 ;;;ENABLE INTERRUPTS
004336 012637 177776 MOV (SP)+,@#PS
2059 004342 012600 MOV (SP)+,R0 ;RESTORE
2060 004344 30$: RETURN ;RETURN TO CALLER
004344 000207 RTS PC
FEDRV MACRO M1113 03-APR-86 20:48 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 004346 122760 000000G 000007 .FEST:: CMPB #BC.STR,7(R0) ;FUNCTION STRING?
2069 004354 001077 BNE IOABT ;NO -- ABORT I/O IN PROGRESS
2070 004356 005005 CLR R5 ;FIND THE BYTE SIZE
2071 004360 156005 000006 BISB 6(R0),R5
2072 004364 016004 000004 MOV 4(R0),R4 ;SET UP THE NODE ADDRESS
2073 004370 032712 020000 BIT #FE.DTE,(R2) ;ARE WE EXPECTING DATA ?
2074 004374 001040 BNE 70$ ;YES, INSERT IN BUFFER.
2075 004376 012401 MOV (R4)+,R1 ;CHECK TO SEE WHICH DIRECTION THIS FUNCTION IS
2076 004400 100102 BPL FCN ;REQUEST TO DO A FUNCTION -- SPECIAL
2077 004402 013703 000000G MOV NODADR,R3 ;A RETURN FUNCTION -
2078 004406 066301 000000G ADD R.FC(R3),R1 ;IS IT THE LAST ONE WE SENT ?
2079 004412 001100 BNE FCNBD ;NO -- ILLEGAL REQUEST -- QUIT
2080 004414 122763 000003 000001G CMPB #IO.ATT/400,R.FC+1(R3) ;ACP FUNCTION CODE?
2081 004422 001006 BNE 40$ ;NO -- LEAVE ADDRESSES ALONE
2082 004424 016337 000012G 000000G MOV R.PB+12(R3),BYTESA ;SET UP TO BYTE COUNT
2083 004432 016337 000004G 000000G MOV R.PB+4(R3),ADRSAV ;ALSO ADDRESS
2084 004440 022424 40$: CMP (R4)+,(R4)+ ;MOVE OVER DEVICE/UNIT
2085 004442 012437 000000G MOV (R4)+,STSWD ;SAVE THE I/O STATUS
2086 004446 012437 000002G MOV (R4)+,STSWD+2 ;BOTH HALVES
2087 004452 052712 020000 BIS #FE.DTE,(R2) ;INDICATE WE ARE EXPECTING DATA
2088 004456 021437 000000G CMP @R4,BYTESA ;BYTESIZE CORRECT?
2089 004462 103002 BHIS 50$ ;YES -- CONTINUE
2090 004464 011437 000000G MOV @R4,BYTESA ;NO -- SET NEW ONE
2091 004470 162705 000014 50$: SUB #14,R5 ;SUBTRACT FIXED HEADER SIZE
2092 004474 001410 BEQ 60$ ;AND QUIT IF NOTHING TO DO
2093 004476 112477 000000G 70$: MOVB (R4)+,@ADRSAV ;MOVE A BYTE
2094 004502 005237 000000G INC ADRSAV ;UPDATE BYTE POINTER
2095 004506 005337 000000G DEC BYTESA ;UPDATE BYTE COUNT
2096 004512 001404 BEQ 65$ ;(IN CASE OF MISCOUNT)
2097 004514 077510 SOB R5,70$ ;AND DO UNTIL DONE
2098 004516 005737 000000G 60$: TST BYTESA ;ANYTHING TO DO?
2099 004522 001005 BNE DONSTR ;YES -- DON'T SET I/O DONE FLAG
2100 004524 042712 020000 65$: BIC #FE.DTE,(R2) ;NO MORE DATA EXPECTED
2101 004530 052737 000400 000020G BIS #EF.TEF,FETSK+A.EF ;SET I/O DONE
2102 004536 DONSTR: CALL ..DECN ; RETURN NODE
004536 004737 000000G JSR PC,..DECN
2103 004542 012703 000000G MOV #D.FEPD,R3 ;ACK THIS FUNCTION
2104 004546 010205 MOV R2,R5
2105 004550 CALLR ..SACK
004550 000137 000000G JMP ..SACK
2106
2107 004554 013701 000000G IOABT: MOV NODADR,R1 ;NODE IN PROGRESS?
2111 004560 001766 BEQ DONSTR ;NO -- CONTINUE
2113 004562 005037 000000G CLR NODADR ;YES -- FIX IT WITH IE.ABO
2114 004566 042737 064000 000000G BIC #FE.SER!FE.DET!FE.DTE,FETBL+0 ;FINISHED WITH -11 REQUEST
2115 004574 012703 177761 MOV #IE.ABO,R3
2116 004600 CALL ..IODN ;QUIT IT
004600 004737 000000G JSR PC,..IODN
2120 004604 000754 BR DONSTR ;AND DECLARE DONE
2121 ;
2122 ; THIS IS A FUNCTION REQUEST FROM THE -10
FEDRV MACRO M1113 03-APR-86 20:48 PAGE 21-1
ARITHMETIC SIMULATOR -- COPYRIGHT STATEMENT
2123 ;
2124 004606 022714 042515 FCN: CMP #"ME,(R4) ;IS IT MEMORY?
2125 004612 001401 BEQ MEFCN ;YUP -- MUST BE OK
2126 004614 000004 FCNBD: IOT ;NOPE -- CRASH
2127
2128 004616 052712 002000 MEFCN: BIS #FE.STR,(R2) ;WE ARE SERVICING -10 REQUEST
2129 004622 012737 000014 000000G MOV #14,DNBLK ;INIT RETURN PACKET SIZE
2130 004630 010137 000000G MOV R1,DNFCN ;SET FUNCTION
2131 004634 005437 000000G NEG DNFCN ;AND NEGATE.
2132 004640 012437 000002G MOV (R4)+,DNFCN+2 ;SAVE FUNCTION DEVICE
2133 004644 012737 000001 000000G MOV #IS.SUC,DNSTS ;ASSUME A SUCCESSFUL ACCESS
2134 004652 022424 CMP (R4)+,(R4)+ ;MOVE OVER UNIT AND HIGH ORDER ADDRES
2135 004654 012403 MOV (R4)+,R3 ;PICK UP ADDRESS
2136 004656 012405 MOV (R4)+,R5 ;AND BYTE COUNT
2137 004660 010537 000002G MOV R5,DNSTS+2 ;SAVE BYTE COUNT
2138 004664 .INH ;LOCK OUT INTERRUPTS
004664 013746 177776 MOV PS,-(SP)
004670 112737 000340 177776 MOVB #PR7,@#PS ;;
2139 004676 013746 000004 MOV @#4,-(SP) ;;;SAVE LOC 4
2140 004702 012737 005046' 000004 MOV #90$,@#4 ;;;GO TO ILL MEM ROUTINE
2141 004710 022701 000400 CMP #IO.WLB,R1 ;;;WRITE LOGICAL BLOCK?
2142 004714 001003 BNE 30$ ;;;READ MEMORY REQUEST
2143 004716 112423 20$: MOVB (R4)+,(R3)+ ;;;MOVE BYTES
2144 004720 077502 SOB R5,20$ ;;;UNTIL DONE
2145 004722 000417 BR 60$ ;;;RETURN SUCCESS
2146
2147 004724 122760 000014 000006 30$: CMPB #14,6(R0) ;;;ALL IN THIS PACKET?
2148 004732 001010 BNE 50$ ;;;NO -- BAD FUNCTION
2149 004734 012704 000000G MOV #BLKTT,R4 ;;;SET UP A PACKET TO ADD TO FUNCTION
2150 004740 112324 40$: MOVB (R3)+,(R4)+ ;;;MOVE CORRESPONDING BYTES
2151 004742 077502 SOB R5,40$ ;;;UNTIL DONE
2152 004744 063737 000002G 000000G ADD DNSTS+2,DNBLK ;;;INCLUDE RETURN BYTES IN PACKET
2153 004752 000405 BR 70$ ;;;SET RETURN FUNCTION
2154
2155 004754 012737 177777 000000G 50$: MOV #IE.BAD,DNSTS ;;;RETURN BAD FUNCTION
2156 004762 005037 000002G 60$: CLR DNSTS+2 ;;;NO BYTES TRANSFERRED
2157 004766 012637 000004 70$: MOV (SP)+,@#4 ;;;RESET LOC 4
2158 004772 .ENB ;;;ENABLE INTERRUPTS
004772 012637 177776 MOV (SP)+,@#PS ;;
2159 004776 013737 000002G 000004G MOV DNSTS+2,DNSTS+4 ;RETURN COUNT
2160 005004 010203 MOV R2,R3 ;COMPUTE FE NUMBER
2161 005006 162703 000000G SUB #FETBL,R3
2162 005012 006203 ASR R3 ;AND
2163 005014 110337 000001G MOVB R3,DNBLK+1 ;SET IN RETURN PACKET
2164 005020 010246 MOV R2,-(SP) ;SAVE FETBL POINTER
2165 005022 010046 MOV R0,-(SP) ;AND STRING POINTER
2166 005024 012700 000000G MOV #DNBLK,R0 ;SET DONE BLOCK ADDRESS
2167 005030 CALL SNSTR ;SEND STRING
005030 004737 004224' JSR PC,SNSTR
2168 005034 012600 MOV (SP)+,R0 ;RESTORE
2169 005036 012602 MOV (SP)+,R2
2170 005040 042712 002000 BIC #FE.STR,(R2) ;FINISHED WITH -10 REQUEST
2171 005044 000634 BR DONSTR ;AND QUIT
2172
2173 005046 022626 90$: CMP (SP)+,(SP)+ ;REMOVE TRAP STUFF
2174 005050 012737 177774 000000G MOV #IE.VER,DNSTS ;RETURN RECOVERABLE ERROR
2175 005056 000741 BR 60$
FEDRV MACRO M1113 03-APR-86 20:48 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 20:48 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 005060 $DEF
2241 005060 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 20:48 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 20:48 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 20:48 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 20:48 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 20:48 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 20:48 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 20:48 PAGE 27
COMMON VARIABLES
2497 .SBTTL COMMON VARIABLES
2498 ;
2499 ; LP DRIVER TASK HEAD
2500 ;
2501 ;
2502 005060 LPHD:: .STKM 0,0,0,0,0,0,0,LPINI,174000,LPSTK
005126 000000 000000 000000 .WORD 0,0,0,0
005134 000000
005154 174000 005450' 005340' .WORD 174000,LPINI,LPSTK
005210 000005 .WORD 5
005212 000000G .WORD TTPEN
005214 000000 .WORD 0
005216 000000 .WORD 0
005220 000000 .WORD 0
005222 000000 .WORD 0
005224 000000 .WORD 0
005226 000000 .WORD 0
005230 000000 .WORD 0
005232 000000 .WORD 0
005234 000000 .WORD 0
005236 000000 .WORD 0
005340 000000 .WORD 0
005342 000000 .WORD 0
005344 000000 .WORD 0
005346 000000 .WORD 0
005350 000000 .WORD 0
005352 000000 .WORD 0
005354 005450' .WORD LPINI
005356 174000 .WORD 174000
2503 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 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 20:48 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 20:48 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 005360 LPMRKT:
2604 005360 MRKT$ E.FLPC,10.*.CYLTM,10.*.CYLTM ;MARK-TIME REQUEST FOR 10 SECONDS
005360 027 005 .BYTE 23.,5
005362 000002 .WORD E.FLPC
005364 001130 .WORD 10.*.CYLTM
005366 001130 .WORD 10.*.CYLTM
005370 000000 .WORD
2605 005372 MKSCDP:
2606 005372 MRKT$ E.FLPW,.CYLTM,0 ;WAIT FOR 1 SECOND
005372 027 005 .BYTE 23.,5
005374 000006 .WORD E.FLPW
005376 000074 .WORD .CYLTM
005400 000000 .WORD 0
005402 000000 .WORD
2607 ;
2608 005404 LPSSTV:
2609 005404 005406' .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 005406 LPTRP4:
2614 005406 021627 006776' CMP (SP),#LPDINT ;THIS FROM MARK-TIME?
2615 005412 001404 BEQ 10$ ;YES-- OK
2616 005414 021627 010424' CMP (SP),#LPDCLR ;HOW ABOUT INIT?
2617 005420 001401 BEQ 10$ ;YES-- OK
2618 005422 000004 IOT ;***** FATAL-- BAD TRAP AT 4
2619 ;
2620 005424 10$:
2621 005424 005062 000000G CLR LPCSA(R2) ;NON-EX LP-- SAY SO
2622 005430 005003 CLR R3 ; BOTH WAYS
2623 005432 052766 000001 000002 BIS #BIT0,2(SP) ;SET CARRY ON STACK
2624 005440 000002 RTI ;RETURN TO INTERRUPTED ROUTINE
2625 ;
2626 ; HERE ON POWER-RECOVERY AST
2627 ;
2628 005442 LPWRUP:
2629 005442 CALL INITLP ;INIT ALL LP'S
005442 004737 010354' JSR PC,INITLP
2630 005446 000002 RTI ;RETURN FROM AST
2631 ;
2632 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 PAGE 30-1
LPINI (INITIALIZE LP-20 TASK)
2633 ; LPINI -- INITIALIZE LP'S
2634 ;
2635 005450 LPINI:
2636 005450 013737 000000G 000000G MOV .CRTSK,LPEVFG ;SAVE OUR TASK ADDRESS
2637 005456 062737 000020 000000G ADD #A.EF,LPEVFG ;MAKE THAT ADDR OF OUR EVENT FLAGS
2638 005464 052777 000060 000000G BIS #EF.LPW!EF.LPS,@LPEVFG ;SAY STATUS BUFFER AVAILABLE AND NOT WAITING
2639 005472 DIR$ #LPMRKT ;ENTER MARK-TIME REQUEST FOR 10 SECONDS
005472 012746 005360' MOV #LPMRKT,-(SP)
005476 104375 EMT 375
2640 005500 SVTK$S #LPSSTV,#1 ;ENABLE FOR TRAP-AT-4 RECOGNITION
005500 012746 000001 MOV #1,-(SP)
005504 012746 005404' MOV #LPSSTV,-(SP)
005510 012746 MOV (PC)+,-(SP)
005512 071 003 .BYTE 57.,3
005514 104375 EMT 375
2641 005516 SPRA$S #LPWRUP ;SETUP POWER-UP AST
005516 012746 005442' MOV #LPWRUP,-(SP)
005522 012746 MOV (PC)+,-(SP)
005524 155 002 .BYTE 109.,2
005526 104375 EMT 375
2642 005530 CALL INITLP ;INIT ALL THE LP'S
005530 004737 010354' JSR PC,INITLP
2643 ; BR LPLOOP ;FALL INTO NORMAL PROCESSING LOOP
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 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 005534 LPLOOP:
2657 005534 WTLO$S 1,#EF.LPC!EF.LPD!EF.NIR ;WAIT FOR CLOCK (10 SECONDS)
005534 012746 000000C MOV #EF.LPC!EF.LPD!EF.NIR,-(SP)
005540 012746 000001 MOV #1,-(SP)
005544 012746 MOV (PC)+,-(SP)
005546 053 003 .BYTE 43.,3
005550 104375 EMT 375
2658 ; OR I/O DONE FROM ISR
2659 ; OR QIO REQUEST TO DO.
2660 005552 .INH ;A FLAG SET-- LOCK OUT LP INTERRUPTS
005552 013746 177776 MOV PS,-(SP)
005556 112737 000340 177776 MOVB #PR7,@#PS ;;
2661 005564 017737 000000G 000000G MOV @LPEVFG,LPCEVF ;GET CURRENT EVENT FLAGS
2662 005572 042777 000000C 000000G BIC #EF.LPC!EF.LPD!EF.NIR,@LPEVFG ;CLEAR THE FLAGS WE WAITED FOR
2663 005600 .ENB ;RETORE IRPS
005600 012637 177776 MOV (SP)+,@#PS ;;
2664 005604 005737 000000G TST .LPPFL ;POWER FAIL?
2665 005610 001404 BEQ 10$ ;NO -- CONTINUE
2666 005612 CALL INITLP
005612 004737 010354' JSR PC,INITLP
2667 005616 005037 000000G CLR .LPPFL
2668 005622 10$:
2669 ;
2670 ; BR LPIOD ;TRY FOR EF.IOD (I/O DONE) FIRST
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 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 005622 LPIOD:
2698 005622 032737 000001 000000G BIT #EF.LPD,LPCEVF ;I/O DONE?
2699 005630 001504 BEQ 99$ ;NO-- TRY NEXT FLAG IN CHAIN
2700 005632 012702 000000G MOV #LPTBL,R2 ;ADDRESS LPTBL (UNIT 0)
2701 005636 PUSH #L$$P20 ;STACK COUNT OF LP'S TO LOOK AT
005636 012746 000002 MOV #L$$P20,-(SP)
2702 005642 10$:
2703 005642 005005 CLR R5 ;AND INDICATE NO BUFFERS DONE
2704 005644 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 005650 20$:
2709 005650 016200 000000G MOV LPTHD(R2),R0 ;GET START OF LIST
2710 005654 001411 BEQ 80$ ;DONE-- GO AWAY
2711 ;
2712 ; LOOK AT THIS THREAD BLOCK TO SEE IF DONE
2713 ;
2714 005656 30$:
2715 005656 005760 000000G TST T.HCBC(R0) ;SEE IF DONE
2716 005662 002471 BLT 40$ ;DONE-- PROCESS
2717 005664 005762 000000G TST LPITH(R2) ;IS I/O IN PROGRESS ON THIS BLOCK?
2718 005670 001003 BNE 80$ ;YES-- WE ARE DONE WITH WHAT IS DONE
2719 ;
2720 ; LP STOPPED ON THIS ACTIVE THREAD BLOCK
2721 ;
2722 005672 032712 001000 BIT #LP.LIP,(R2) ;LOAD IN PROGRESS?
2723 005676 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 005700 80$:
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 PAGE 32-1
LPIOD (LP TASK I/O DONE)
2728 005700 032712 040000 BIT #LP.SST,(R2) ;TIME TO SEND STATUS?
2729 005704 001402 BEQ 81$ ;NO-- HOW BOUT ACK?
2730 005706 CALL SSTSLP ;YES-- SEND STATUS TO -10
005706 004737 007164' JSR PC,SSTSLP
2731 005712 81$:
2732 005712 005700 TST R0 ;ANYTHING LEFT TO DO?
2733 005714 001411 BEQ 84$ ;NO-- SEND ACK
2734 005716 032712 004000 BIT #LP.WAT,(R2) ;ARE WE WAITING FOR RESPONSE?
2735 005722 001026 BNE 86$ ;YES-- DON'T START OUPUT
2736 005724 005762 000000G TST LPITH(R2) ;NO-- IS LP GOING ALREADY?
2737 005730 001023 BNE 86$ ;YES-- LEAVE IT GO
2738 005732 CALL TESTLP ;NO-- SEE IF LP CAN BE STARTED
005732 004737 010164' JSR PC,TESTLP
2739 005736 000420 BR 86$ ;SEE IF ACK NEEDED
2740 ;
2741 ; QUEUE IS EMPTY-- RESET ALL FLAGS
2742 ;
2743 005740 84$:
2744 005740 .INH ;;;MAKE SURE DTE DOESN'T GIVE US SOMETHING
005740 013746 177776 MOV PS,-(SP)
005744 112737 000340 177776 MOVB #PR7,@#PS ;;
2745 005752 016200 000000G MOV LPTHD(R2),R0 ;;;GET THREAD POINTER
2746 005756 001006 BNE 85$ ;;;OOPS-- LET'S GO AWAY, WE GOT SOMETHING
2747 005760 032777 000001 000000G BIT #EF.LPD,@LPEVFG ;;;WILL WE BE BACK AGAIN?
2748 005766 001002 BNE 85$ ;;;YES-- CATCH FLAGS NEXT TIME
2749 005770 042712 115400 BIC #LP.F10!LP.WAT!LP.LIP!LP.MCH!LP.HNG,(R2) ;;;SURELY OFF NOW
2750 005774 85$:
2751 005774 .ENB ;RESTORE INTERRUPTS
005774 012637 177776 MOV (SP)+,@#PS ;;
2752 006000 86$:
2753 006000 005705 TST R5 ;DID WE REMOVE A BUFFER?
2754 006002 001412 BEQ 90$ ;NO-- DON'T SEND ACK
2755 006004 005700 TST R0 ;YES-- ANY LEFT?
2756 006006 001402 BEQ 87$ ;NONE-- SEND ACK
2757 006010 005710 TST @R0 ;IS THIS LAST BUFFER?
2758 006012 001006 BNE 90$ ;NO-- SEND NOTHING
2759 006014 87$:
2760 006014 012700 000000G MOV #LPTBL,R0 ;ADDRESS BASE ADDR OF TABLE FOR ..SACK
2761 006020 012703 000000G MOV #D.CLPT,R3 ;SAY LPT DEVICE CODE
2762 006024 CALL ..SACK ;SEND THE ACK
006024 004737 000000G JSR PC,..SACK
2763 ;
2764 ; DONE WITH LP-- GET ANOTHER
2765 ;
2766 006030 90$:
2767 006030 062702 000000G ADD #LPSIZE,R2 ;BUMP TO NEXT LP IN TABLE
2768 006034 005316 DEC (SP) ;DECREMENT COUNT
2769 006036 003301 BGT 10$ ;BACK FOR MORE
2770 006040 005726 TST (SP)+ ;CLEAN STACK
2771 006042 99$:
2772 006042 000137 006502' JMP LPNIR ;DONE-- TRY NEXT EVENT-FLAG
2773 ;
2774 ; THREAD BLOCK DONE-- REMOVE FROM LIST & DEALLOCATE
2775 ;
2776 006046 40$:
2777 006046 005703 TST R3 ;LP EXIST???
2778 006050 001564 BEQ 49$ ;NO-- GIVE UP
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 PAGE 32-2
LPIOD (LP TASK I/O DONE)
2779 006052 032712 001000 BIT #LP.LIP,(R2) ;LOAD IN PROGRESS (I.E. NOW COMPLETE)
2780 006056 001424 BEQ 41$ ;NO-- GO ON
2781 ;
2782 006060 042712 001000 BIC #LP.LIP,(R2) ;YES-- NO LONGER SO
2783 006064 042713 000014 BIC #MODE00!MODE01,(R3) ;CLEAR LOAD MODE BITS
2784 006070 PUSH <R0,R3> ;SAVE EPA
006070 010046 MOV R0,-(SP)
006072 010346 MOV R3,-(SP)
2785 006074 016200 000000G MOV LPRMA(R2),R0 ;GET RAM BUFFER ADDR
2786 006100 016201 000000G MOV LPRMZ(R2),R1 ; AND DATA SIZE
2787 006104 012703 000000G MOV #.BGBUF,R3 ;WE GOT IT FROM THE BIG BUFFER
2788 006110 CALL ..DEC2 ;RETURN THE BUFFER
006110 004737 000000G JSR PC,..DEC2
2789 006114 POP <R3,R0> ;RESTORE EPA
006114 012603 MOV (SP)+,R3
006116 012600 MOV (SP)+,R0
2790 006120 005062 000000G CLR LPRMA(R2) ;NO LONGER THERE
2791 006124 005062 000000G CLR LPRMC(R2) ; . .
2792 006130 41$:
2793 006130 016004 000000G MOV T.HCBC(R0),R4 ;GET COMPLETION STATUS
2794 006134 032704 040000 BIT #TB.ABO,R4 ;ABORTED?
2795 006140 001130 BNE 49$ ;YES-- LEAVE NOW
2796 006142 032704 036000 BIT #TB.SFN,R4 ;SPECIAL FUNCTION?
2797 006146 001525 BEQ 49$ ;NO-- GO ON
2798 ;
2799 006150 032704 020000 BIT #TB.EOF,R4 ;EOF?
2800 006154 001430 BEQ 42$ ;NO-- JUST GO ON
2801 006156 016260 000000G 000000G MOV LPRMA(R2),T.HCAD(R0) ;RAM/VFU DATA PRESENT?
2802 006164 001003 BNE 411$ ;YES-- DO RAM/VFU LOAD
2803 006166 052712 040200 BIS #LP.EOF!LP.SST,(R2) ;NO-- NOTE THAT EOF HAS OCCURED
2804 006172 000513 BR 49$ ;THAT'S IT FOR EOF IF NO RAM/VFU DATA
2805 006174 411$:
2806 006174 016260 000000G 000000G MOV LPRMC(R2),T.HCBC(R0) ;SET BYTE COUNT= LAST ADDRESS
2807 006202 166060 000000G 000000G SUB T.HCAD(R0),T.HCBC(R0) ;MAKE IT A BYTE COUNT
2808 006210 052712 001000 BIS #LP.LIP,(R2) ;NOTE LOAD NOW IN PRGRESS
2809 006214 052713 000010 BIS #VFULOD*MODE00,(R3) ;ASSUME VFU LOAD
2810 006220 026227 000000G 001000 CMP LPRMZ(R2),#1000 ;TRNASLATION RAM DATA?
2811 006226 001224 BNE 80$ ;NO-- MUST BE VFU DATA
2812 006230 052713 000014 BIS #RAMLOD*MODE00,(R3) ;YES-- SET RAM LOAD MODE
2813 006234 000621 BR 80$ ;START LP GOING ON THIS BLOCK
2814 006236 42$:
2815 006236 032704 010000 BIT #TB.LPC,R4 ;LOAD PAGE COUNTER FUNCTION?
2816 006242 001413 BEQ 43$ ;NO-- GO ON
2817 006244 042712 020000 BIC #LP.PZI,(R2) ;ASSUME NO INTERRUPT ENABLE
2818 006250 016001 000000G MOV T.HCAD(R0),R1 ;GET ADDRESS OF FUNCTION DATA
2819 006254 016163 000002 000010 MOV 2(R1),LPPCTR(R3) ;SET PAGE COUNTER
2820 006262 002057 BGE 49$ ;BIT15=0-- NO INTERRUPT
2821 006264 052712 020000 BIS #LP.PZI,(R2) ;BIT15=1-- INTERRUPT ENABLE
2822 006270 000454 BR 49$ ;ALL DONE
2823 006272 43$:
2824 006272 PUSH <R3,R0> ;SAVE THIS THREAD BLOCK ADDRESS
006272 010346 MOV R3,-(SP)
006274 010046 MOV R0,-(SP)
2825 006276 016201 000000G MOV LPRMC(R2),R1 ;GET CURRENT RAM DATA ADDRESS
2826 006302 001026 BNE 46$ ;GOT IT-- PUT THIS DATA IN THAT BUFFER
2827 006304 012700 000000G 431$: MOV #.BGBUF,R0 ;[RCO 810408] POINT TO BIG BUFFER FOR DATA BLOCK
2828 006310 012701 001000 MOV #1000,R1 ;ASSUME TRANSLATION RAM DATA
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 PAGE 32-3
LPIOD (LP TASK I/O DONE)
2829 006314 032704 004000 BIT #TB.RMD,R4 ;RAM DATA?
2830 006320 001002 BNE 44$ ;YES-- GOT IT
2831 006322 012701 000444 MOV #<^D<145*2>+2+3>&<-4>,R1 ; +++001 NO-- VFU DATA-- GET MAX LENGTH
2832 006326 44$:
2833 006326 CALL ..ALC2 ;GET A BUFFER
006326 004737 000000G JSR PC,..ALC2
2834 006332 103004 BCC 45$ ;GOT IT-- GO ON
2835 006334 WSIG$S ;NO GOT-- WAIT AN INSTANT
006334 012746 MOV (PC)+,-(SP)
006336 061 001 .BYTE 49.,1
006340 104375 EMT 375
2836 006342 000760 BR 431$ ;[RCO 810804] TRY FOR BUFFER AGAIN
2837 006344 45$:
2838 006344 010162 000000G MOV R1,LPRMZ(R2) ;STORE RAM DATA SIZE
2839 006350 010001 MOV R0,R1 ;COPY THAT BUFFER ADDRESS
2840 006352 010162 000000G MOV R1,LPRMA(R2) ;STORE RAM DATA ADDRESS
2841 006356 011600 MOV (SP),R0 ;RESTORE THREAD BLOCK ADDRESS
2842 006360 46$:
2843 006360 016203 000000G MOV LPRMA(R2),R3 ;COPY ADDRESS WHERE DATA GOES
2844 006364 066203 000000G ADD LPRMZ(R2),R3 ;COMPUTE END OF BUFFER
2845 006370 016000 000000G MOV T.HCAD(R0),R0 ;GET THE RAM DATA ADDRESS
2846 006374 042704 177400 BIC #HIBYTE,R4 ;CLEAR TRASH IN BYTE COUNT
2847 006400 001404 BEQ 48$ ;ALL DONE IF ZERO BYTE COUNT
2848 006402 47$:
2849 006402 020103 CMP R1,R3 ;GOING BEYOND END OF BUFFER?
2850 006404 103002 BHIS 48$ ;YES-- THAT'S ALL THE DATA WE CAN TAKE
2851 006406 112021 MOVB (R0)+,(R1)+ ;STORE A BYTE AWAY
2852 006410 077404 SOB R4,47$ ;LOOP FOR ALL BYTES OF DATA
2853 006412 48$:
2854 006412 POP <R0,R3> ;RESTORE THE THREAD BLOCK POIINTER
006412 012600 MOV (SP)+,R0
006414 012603 MOV (SP)+,R3
2855 006416 010162 000000G MOV R1,LPRMC(R2) ;STORE CURRENT BYTE ADDRESS
2856 006422 49$:
2857 006422 011062 000000G MOV @R0,LPTHD(R2) ;REMOVE THIS BUFFER
2858 006426 016001 000000G MOV T.HBCT(R0),R1 ;GET SIZE OF THIS THREAD BLOCK
2859 006432 001013 BNE 60$ ;NOT QIO-- JUST DEALLOCATE
2860 ;
2861 ; QUEUE I/O REQUEST DONE-- CALL ..IODN
2862 ;
2863 006434 PUSH R3 ;SAVE EPA
006434 010346 MOV R3,-(SP)
2864 006436 110403 MOVB R4,R3 ;GET QUEUE I/O STATUS
2865 006440 016004 177776 MOV T.HIBC(R0),R4 ;GET INITAIL BYTE COUNT AS TRANSFER COUNT
2866 006444 010001 MOV R0,R1 ;COPY THREAD BLOCK ADDRESS
2867 006446 162701 000004G SUB #R.PB+PBTHRD,R1 ;GET ADDRESS OF REAL QUEUE I/O NODE
2868 006452 CALL ..IODN ;SAY I/O DONE
006452 004737 000000G JSR PC,..IODN
2869 006456 POP R3 ;RESTORE EPA
006456 012603 MOV (SP)+,R3
2870 006460 000406 BR 61$ ;ALL DONE
2871 ;
2872 ; ALL DONE WITH THREAD BLOCK-- DEALLOCATE IT
2873 ;
2874 006462 60$:
2875 006462 CALL ..DECB ;DEALLOCATE THE BUFFER
006462 004737 000000G JSR PC,..DECB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 PAGE 32-4
LPIOD (LP TASK I/O DONE)
2876 006466 032712 000400 BIT #LP.F10,(R2) ;DOES -10 HAVE A REQUEST IN?
2877 006472 001401 BEQ 61$ ;NO-- DON'T FLAG TO ACK
2878 006474 010205 MOV R2,R5 ;NOTE THAT WE DID SOMETHING
2879 006476 61$:
2880 006476 000137 005650' JMP 20$ ;GET NEXT THREAD BLOCK FOR THIS LP
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 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 006502 LPNIR:
2902 006502 032737 000000G 000000G BIT #EF.NIR,LPCEVF ;A QUEUE I/O REQUEST FOR US?
2903 006510 001514 BEQ 99$ ;NO-- TRY NEXT IN CHAIN
2904 006512 012700 050114 MOV #"LP,R0 ;SAY WE ARE A LP
2905 006516 CALL ..DQRN ;GET A REQUEST
006516 004737 000000G JSR PC,..DQRN
2906 006522 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 006524 006302 ASL R2 ;MAKE UNIT IN WORDS
2928 006526 016202 000000G MOV LPUTBL(R2),R2 ;GET ADDR OF LPTBL ENTRY FOR THIS LP
2929 006532 116100 000001G MOVB R.FC+1(R1),R0 ;GET FUNCTION CODE FROM REQUEST NODE
2930 006536 001430 BEQ 20$ ;EXPRESS FUNCTION-- LOOK AT IT
2931 006540 122700 000001 CMPB #IO.WLB/400,R0 ;WRITE LOGICAL?
2932 006544 001441 BEQ 40$ ;YES-- PRINT
2933 006546 122700 000022 CMPB #IO.WVB/400,R0 ;WRITE VIRTUAL?
2934 006552 001436 BEQ 40$ ;YES-- PRINT ALSO
2935 006554 122700 000002 CMPB #IO.RLB/400,R0 ;READ LOGICAL????
2936 006560 001414 BEQ 15$ ;YES-- ILLEGAL
2937 006562 122700 000021 CMPB #IO.RVB/400,R0 ;READ VIRTUAL????
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 PAGE 33-1
LPNIR (LP TASK QUEUE I/O REQUEST)
2938 006566 001411 BEQ 15$ ;YES-- ILLEGAL
2939 006570 122700 000020 CMPB #IO.DAC/400,R0 ;CLOSE OUT FILE?
2940 006574 001017 BNE 30$ ;NO-- ASSUME OK, GIVE SUCCESS
2941 ;
2942 ; IO.DAC -- CLOSE OUT FILE, SEND <FF>
2943 ;
2944 006576 012705 006730' MOV #VFCFF,R5 ;SET ADDRESS TO POINT TO FORM-FEED
2945 006602 012703 000001 MOV #1,R3 ;BYTE COUNT= 1
2946 006606 005004 CLR R4 ;NO EMA BITS
2947 006610 000417 BR 40$ ;SEND LIKE QUEUE I/O
2948 ;
2949 ; ILLEGAL FUNCTION
2950 ;
2951 006612 15$:
2952 006612 012703 177776 MOV #IE.IFC,R3 ;SAY ILLEGAL
2953 006616 000410 BR 31$ ;SO SAY IT
2954 ;
2955 ; IO.KIL-- FLUSH OUTPUT
2956 ;
2957 006620 20$:
2958 006620 022761 000012 000000G CMP #IO.KIL,R.FC(R1) ;THIS I/O KILL?
2959 006626 001002 BNE 30$ ;NO-- IGNORE
2960 006630 CALL ..SPLP ;FLUSH OUTPUT
006630 004737 011220' JSR PC,..SPLP
2961 ;
2962 ; IO.ATT, IO.DET-- IGNORE
2963 ;
2964 006634 30$:
2965 006634 012703 000001 MOV #IS.SUC,R3 ;SAY 'SUCCESS' TO ..IODN
2966 006640 31$:
2967 006640 005004 CLR R4 ;NO BYTES TRANSFERRED
2968 006642 CALL ..IODN ;RETURN PACKET TO REQUESTOR
006642 004737 000000G JSR PC,..IODN
2969 006646 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 006650 40$:
2976 006650 010100 MOV R1,R0 ;COPY NODE ADDRESS
2977 006652 062700 000004G ADD #R.PB+PBTHRD,R0 ;POINT TO THREAD BLOCK AREA OF R.PB
2981 006656 116101 000004G MOVB R.PB+4(R1),R1 ;GET VERTICAL FORMAT CHARACTER
2982 006662 005060 000000G CLR T.HBCT(R0) ;NOTE THAT THIS IS A QIO REQUEST
2983 006666 010560 000000G MOV R5,T.HCAD(R0) ;SAVE PHYSICAL ADDR OF DATA
2984 006672 010360 000000G MOV R3,T.HCBC(R0) ; AND BYTE COUNT OF DATA
2985 006676 110460 177774 MOVB R4,T.HEMA(R0) ; AND EXTENDED MEMORY ADDR BITS
2986 ;
2987 006702 012705 006726' MOV #VFCTBL,R5 ;YES-- POINT TO TABLE OF FORMAT CONTROL CHARACTERS
2988 006706 55$:
2989 006706 112560 177775 MOVB (R5)+,T.HVFC(R0) ;GET THE CHARCTER TO CONTROL
2990 006712 001402 BEQ 60$ ;END OF TABLE-- GIVE UP WITH NOTHING
2991 006714 122501 CMPB (R5)+,R1 ;MATCH THE VFC CHARACTER?
2992 006716 001373 BNE 55$ ;NO-- LOOP UNTIL WE FIND ONE
2993 006720 60$:
2994 006720 CALL ..PTLP ;START LP ON THIS BUFFER, OR QUEUE UP
006720 004737 011452' JSR PC,..PTLP
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 PAGE 33-2
LPNIR (LP TASK QUEUE I/O REQUEST)
2995 006724 000666 BR LPNIR ;LOOK FOR ANOTHER REQUEST
2996 ;
2997 ; VERTICAL FORMAT CONTROL CHARACTER TABLE FOR QUEUE I/O REQUESTS
2998 ;
2999 006726 VFCTBL:
3000 006726 012 040 .BYTE 12,' ;<SPACE> NEXT LINE
3001 006730 014 061 VFCFF: .BYTE 14,'1 ;"1" NEXT PAGE
3002 006732 015 053 .BYTE 15,'+ ;"+" OVERPRINT
3003 006734 021 060 .BYTE 21,'0 ;"0" DOUBLE SPACE
3004 006736 012 044 .BYTE 12,'$ ;"$" PROMPTING OUTPUT
3005 006740 000 .BYTE 0 ;END OF TABLE
3006 .EVEN
3007 ;
3008 ;
3009 006742 99$:
3010 ; BR LPMKT ;NEXT IS MARK-TIME REQUESTS
3011 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 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 006742 LPMKT:
3028 006742 032737 000002 000000G BIT #EF.LPC,LPCEVF ;IS MARK-TIME EVENT FLAG SET?
3029 006750 001503 BEQ 99$ ;NO-- CHECK NEXT FLAG
3030 006752 012705 000002 MOV #L$$P20,R5 ;SET UP # LP'S TO CHECK
3031 006756 012702 000000G MOV #LPTBL,R2 ;ADDRESS DATA BLOCK FOR UNIT 0
3032 006762 10$:
3033 006762 016203 000000G MOV LPCSA(R2),R3 ;GET EXTERNAL PAGE ADDR
3034 006766 001407 BEQ 12$ ;NON-EX LP-- SKIP THIS
3035 006770 000241 CLC ;CLEAR CARRY, IN CASE OF TRAP
3036 006772 032713 000100 BIT #INTENB,(R3) ;IS INTERRUPT-ENABLE STILL SET?
3037 006776 LPDINT:
3038 006776 103403 BCS 12$ ;TIME-OUT-- JUST SEND STATUS
3039 007000 001002 BNE 12$ ;YES-- DON'T SET IT
3040 007002 052713 000100 BIS #INTENB,(R3) ;MAKE SURE WE STILL HAVE INTERRUPT ENABLE
3041 007006 12$:
3042 007006 032712 004000 BIT #LP.WAT,(R2) ;WAITING?
3043 007012 001047 BNE 30$ ;YES-- DON7T TRY TO CONTINUE
3044 007014 005762 000000G TST LPTHD(R2) ;ANY ACTIVE REQUESTS?
3045 007020 001453 BEQ 90$ ;NONE-- LP IS IDLE
3046 007022 032712 100000 BIT #LP.HNG,(R2) ;NO I/O IN 10 SEC?
3047 007026 001446 BEQ 80$ ;NO-- I/O CLEARED THIS BIT-- OK
3048 007030 005762 000000G TST LPITH(R2) ;IS I/O SUPPOSED TO BE IN PROGRSS?
3049 007034 001436 BEQ 30$ ;NO-- SEE IF WE JUST CAME ON-LINE
3050 007036 005703 TST R3 ;DEVICE EXIST?
3051 007040 001434 BEQ 30$ ;NON-EX LP-- FLUSH OUTPUT
3052 007042 005237 000000G INC LPHUNG ;COUNT # TIMES WE HAD TO START LP G9OING
3053 007046 005362 000000G DEC LPRTY(R2) ;ONE LESS TIME TO TRY
3054 007052 002427 BLT 30$ ;NONE LEFT-- GIVE UP
3055 007054 .INH4 ;;;LOCK OUT LP INTERRUPTS
007054 013746 177776 MOV @#PS,-(SP)
007060 112737 000200 177776 MOVB #PR4,@#PS
3056 007066 105062 000000G CLRB LPCSM+0(R2) ;;;CLEAR LOW BYTE SO NO CARRY
3057 007072 066362 000016 000000G ADD LPCKSM-1(R3),LPCSM(R2) ;;;ACCUMULATE CHECKSUM (CLEARED BY GO)
3058 007100 005763 000006 TST LPBCTR(R3) ;;;DONE (BYTE COUNT=0)?
3059 007104 001403 BEQ 20$ ;;;YES-- DO NEXT BUFFER
3060 007106 052713 000103 BIS #INTENB+PARENB+GO,(R3) ;;;NO-- JUST SET INT ENB AND GO
3061 007112 000404 BR 29$ ;;;DO ANOTHER LP
3062 ;
3063 007114 20$:
3064 007114 016200 000000G MOV LPITH(R2),R0 ;;;GET CURRENT BUFFER ADDRESS
3065 007120 CALL ..DOL1 ;;;DONE-- DO NEXT BUFFER
007120 004737 011600' JSR PC,..DOL1
3066 007124 29$:
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 PAGE 34-1
LPMKT (LP TASK MARK-TIME REQUEST)
3067 007124 .ENB4 ;ALLOW LP INTERRUPTS
007124 012637 177776 MOV (SP)+,@#PS
3068 007130 000405 BR 80$ ;DONE WITH LP
3069 ;
3070 007132 30$:
3071 007132 052712 040000 BIS #LP.SST,(R2) ;TIME TO SEND STATUS!!
3072 007136 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;YES-- START IT UP AGAIN
3073 007144 80$:
3074 007144 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 007150 90$:
3078 007150 062702 000000G ADD #LPSIZE,R2 ;BUMP TO NEXT LP IN LPTBL
3079 007154 005305 DEC R5 ;TRY ALL
3080 007156 003301 BGT 10$ ; LP'S
3081 007160 99$:
3082 007160 000137 005534' JMP LPLOOP ;GO BACK TO WAITING
3083 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 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 007164 SSTSLP:
3136 007164 SAVE <R0,R1,R3,R4> ;SAVE USED CARS
007164 010046 MOV R0,-(SP)
007166 010146 MOV R1,-(SP)
007170 010346 MOV R3,-(SP)
007172 010446 MOV R4,-(SP)
3137 007174 042712 040000 BIC #LP.SST,(R2) ;CLEAR 'SEND STATUS' FLAG
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 PAGE 35-1
SSTSLP (SEND LP-20 STATUS TO -10)
3138 007200 032777 000020 000000G 4$: BIT #EF.LPS,@LPEVFG ;IS OUR BUFFER AVAILABLE?
3139 007206 001006 BNE 5$ ;YES-- DON'T WAIT
3140 007210 WSIG$S ;NO-- WAIT FOR IT
007210 012746 MOV (PC)+,-(SP)
007212 061 001 .BYTE 49.,1
007214 104375 EMT 375
3141 007216 005737 000002G TST .COMEF+2 ; [4.1.1105] IS PRIMARY PROTOCOL RUNNING ?
3142 007222 100766 BMI 4$ ; [4.1.1105] YES-- STILL BUSY...
3143 007224 5$:
3144 007224 012700 000004G MOV #LPSTBK+4,R0 ;GET ADDRES OF BYTE COUNT WORD
3145 007230 005010 CLR (R0) ;CLEAR IT (ASSUME NON-EX DEV)
3146 007232 005040 CLR -(R0) ; AND SECOND WORD OF STATUS
3147 007234 005040 CLR -(R0) ;AND FIRST WORD, WITH R0 POINTING TO IT
3148 007236 005001 CLR R1 ;CLEAR ERROR MESSAGE POINTER, TOO
3149 007240 005703 TST R3 ;GOT A EPA?
3150 007242 001005 BNE 10$ ;GOT IT-- CHECK OUT LP STATUS
3151 007244 052710 000007 BIS #DV.NXD!DV.OIR!DV.OFL,(R0) ;NON-EX LP-- SAY SO
3152 007250 012701 007715' MOV #ERMNXD,R1 ;PRINT ERROR ON CONSOLE, TOO
3153 007254 000537 BR 50$ ;GO SEND THE ERROR
3154 ;
3155 007256 10$:
3156 007256 032712 000200 BIT #LP.EOF,(R2) ;THIS AN EOF ENCOUNTERED?
3157 007262 001402 BEQ 11$ ;NO-- GO ON
3158 007264 052710 000040 BIS #DV.EOF,(R0) ;YES-- SAY SO
3159 007270 11$:
3160 007270 032713 004000 BIT #ONLINE,(R3) ;LP OFF-LINE?
3161 007274 001004 BNE 12$ ;NO-- GO ON
3162 007276 052710 000006 BIS #DV.OFL!DV.OIR,(R0) ;YES-- SAY OFF-LINE
3163 007302 012701 007735' MOV #ERMOFL,R1 ; AND TO CONSOLE
3164 007306 12$:
3165 007306 032713 010000 BIT #VFURDY,(R3) ;VFU NOT READY?
3166 007312 001007 BNE 13$ ;NO-- OK
3167 007314 052760 000004 000002 BIS #DD.VFE,2(R0) ;YES-- SET SO IN DD WORD
3168 007322 012701 007750' MOV #ERMVFE,R1 ;TELL CONSOLE
3169 007326 052712 002000 BIS #LP.CLR,(R2) ;NOTE RAM NEEDS TO BE RESET
3170 007332 13$:
3171 007332 032763 000076 000002 BIT #LPTPAR+MEMPAR+RAMPAR+SYNTIM+DEMTIM,LPCSRB(R3) ;FATAL ERROR?
3172 007340 001404 BEQ 14$ ;NO-- ALL OK
3173 007342 052710 000100 BIS #DV.LOG,(R0) ;YES-- SAY BAD ERROR, AND ERROR-LOG IT
3174 007346 012701 007767' MOV #ERMHER,R1 ;SAY SPLAT TO CONSOLE
3175 007352 14$:
3176 007352 016204 000000G MOV LPTHD(R2),R4 ;IS I/O LEFT TO DO?
3177 007356 001002 BNE 141$ ;YES-- SAY SO
3178 007360 005001 CLR R1 ;NO-- DON'T SEND OFF-LINE/VFE
3179 007362 000436 BR 15$ ;GO ON
3180 ;
3181 007364 141$:
3182 007364 052710 000020 BIS #DV.IOP,(R0) ;SAY I/O IN PROGRESS
3183 007370 005764 000000G TST T.HBCT(R4) ;IS THIS A QUEUE I/O REQUEST?
3184 007374 001002 BNE 142$ ;NO-- GO ON
3185 007376 052710 000400 BIS #DV.F11,(R0) ;YES-- SAY FROM -11
3186 007402 142$:
3187 007402 005762 000000G TST LPRTY(R2) ;IS RETRY COUNT DOWN YET?
3188 007406 002024 BGE 15$ ;NO-- GO ON
3189 007410 052710 000300 BIS #DV.URE!DV.LOG,(R0) ;SAY RETRY COUNT EXHAUSTED
3190 007414 032712 100000 BIT #LP.HNG,(R2) ;WAS DEVICE HUNG, TOO?
3191 007420 001404 BEQ 143$ ;NO-- GO ON
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 PAGE 35-2
SSTSLP (SEND LP-20 STATUS TO -10)
3192 007422 052710 001004 BIS #DV.HNG!DV.OIR,(R0) ;YES-- SAY THAT TOO
3193 007426 012701 010004' MOV #ERMHNG,R1 ;GET HUNG MESSAGE, TOO
3194 007432 143$:
3195 007432 032763 000010 000002 BIT #RAMPAR,LPCSRB(R3) ;RAM PARITY ERROR?
3196 007440 001405 BEQ 144$ ;NO-- GO ON
3197 007442 052760 000040 000002 BIS #DD.RME,2(R0) ;YES-- NOTE FATAL ERROR
3198 007450 052712 002000 BIS #LP.CLR,(R2) ;NOTE RAM NEEDS TO BE RESET
3199 007454 144$:
3200 007454 CALL ..SPLP ;RETRY COUNT EXHAUSTED-- GIVE UP OUTPUT
007454 004737 011220' JSR PC,..SPLP
3201 007460 15$:
3202 007460 032713 040000 BIT #PAGZRO,(R3) ;PAGE-COUNT ZERO?
3203 007464 001412 BEQ 16$ ;NO-- OK
3204 007466 032712 020000 BIT #LP.PZI,(R2) ;YES-- BUT ENABLED?
3205 007472 001407 BEQ 16$ ;NO-- DON'T TELL HIM
3206 007474 052710 000010 BIS #DV.SCN,(R0) ;TELL -10 WE WANT HIM TO ACK
3207 007500 052760 000001 000002 BIS #DD.PGZ,2(R0) ; FOR PAGE-ZERO
3208 007506 052712 004000 BIS #LP.WAT,(R2) ;REMEMBER TO WAIT
3209 007512 16$:
3210 007512 032713 020000 BIT #CHRINT,(R3) ;UNDEFINED (INTERRUPT) CHARACTER?
3211 007516 001407 BEQ 17$ ;NO-- GO ON
3212 007520 052710 000010 BIS #DV.SCN,(R0) ;NOTE TO WAIT
3213 007524 052760 000002 000002 BIS #DD.CHI,2(R0) ; FOR UNDEF CHAR
3214 007532 052712 004000 BIS #LP.WAT,(R2) ; AND FOR US TO WAIT
3215 007536 17$:
3216 007536 032763 004000 000002 BIT #OPTVFU,LPCSRB(R3) ;THIS LP HAVE OPTICAL VFU?
3217 007544 001403 BEQ 18$ ;NO-- MUST HAVE DAVFU (HOORAY)
3218 007546 052760 000020 000002 BIS #DD.OVF,2(R0) ;YES-- SAY SO
3219 007554 18$:
3220 ;
3221 ; ERROR CODE NOW IN LPSTBK+0 AND LPSTBK+2
3222 ;
3223 007554 50$:
3224 007554 032712 000400 BIT #LP.F10,(R2) ;THIS A FROM-10 REQUEST?
3225 007560 001115 BNE 70$ ;YES-- DON'T PRINT ON CONSOLE
3226 ;
3227 ; NON-10 REQUEST-- SEND CONSOLE A MESSAGE ABOUT OUR STATUS
3228 ;
3229 007562 042712 004000 BIC #LP.WAT,(R2) ;DON'T WAIT FOR NON-10 REQUEST
3230 007566 005701 TST R1 ;TELL OPR?
3231 007570 001511 BEQ 70$ ;NO-- JUST SEND TO -10 ANYWAY
3232 007572 012700 007675' MOV #LPEMSX,R0 ;GET ADDRESS OF END OF MESSAGE SO FAR
3233 007576 51$:
3234 007576 112120 MOVB (R1)+,(R0)+ ;COPY A BYTE OF THE MESSAGE
3235 007600 001376 BNE 51$ ; UNTIL ASCIZZZZZZZZ
3236 007602 162700 007662' SUB #LPEMSG,R0 ;GET LENGTH OF MESSAGE
3237 007606 010037 007656' MOV R0,LPQDPB+Q.IOPL+2 ;SET LENGTH IN QIOW$ DPB
3238 007612 011201 MOV (R2),R1 ;GET UNIT
3239 007614 042701 177774 BIC #^C<LP.UNT>,R1 ; NUMBER OF THIS LP
3240 007620 062701 000060 ADD #'0,R1 ;MAKE IT ASCII
3241 007624 110137 007672' MOVB R1,LPERUN ;SAVE IN MESSAGE STRING
3242 007630 DIR$ #LPQDPB ;DO QUEUE I/O TO CTY
007630 012746 007640' MOV #LPQDPB,-(SP)
007634 104375 EMT 375
3243 007636 000466 BR 70$ ;SEE IF WE CAN CONTINUE
3244 ;
3245 007640 LPQDPB:
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 PAGE 35-3
SSTSLP (SEND LP-20 STATUS TO -10)
3246 007640 QIOW$ IO.WLB,1,E.FLPQ,1,0,0,<LPEMSG,0,0>
007640 003 011 .BYTE 3,$$$ARG
007642 000400 .WORD IO.WLB
007644 000001 .WORD 1
007646 003 001 .BYTE E.FLPQ,1
007650 000000 .WORD 0
007652 000000 .WORD 0
007654 007662' .WORD LPEMSG
007656 000000 .WORD 0
007660 000000 .WORD 0
3247 007662 LPEMSG:
3248 007662 015 012 052 .ASCII <15><12>/*** LP/
007665 052 052 040
007670 114 120
3249 007672 LPERUN:
3250 007672 060 072 040 .ASCII /0: /
3251 007675 LPEMSX:
3252 007675 .BLKB 16. ;REST OF MESSAGE: MAX OF 16 BYTES
3253 007715 ERMNXD:
3254 007715 116 117 116 .ASCIZ /NON-EX DEVICE/<15><12>
007720 055 105 130
007723 040 104 105
007726 126 111 103
007731 105 015 012
007734 000
3255 007735 ERMOFL:
3256 007735 117 106 106 .ASCIZ /OFF-LINE/<15><12>
007740 055 114 111
007743 116 105 015
007746 012 000
3257 007750 ERMVFE:
3258 007750 106 117 122 .ASCIZ /FORMAT ERROR/<15><12>
007753 115 101 124
007756 040 105 122
007761 122 117 122
007764 015 012 000
3259 007767 ERMHER:
3260 007767 104 101 124 .ASCIZ /DATA ERROR/<15><12>
007772 101 040 105
007775 122 122 117
010000 122 015 012
010003 000
3261 010004 ERMHNG:
3262 010004 110 125 116 .ASCIZ /HUNG/<15><12>
010007 107 015 012
010012 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 010014 70$:
3271 010014 005703 TST R3 ;NON-EX DEVICE?
3272 010016 001417 BEQ 72$ ;YES-- DON'T STORE NON-EX DEVICE REGISTERS
3273 010020 012700 000004G MOV #LPSTBK+4,R0 ;POINT TO STATUS RETURN BLOCK
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 PAGE 35-4
SSTSLP (SEND LP-20 STATUS TO -10)
3274 010024 012720 000000C MOV #<2.*BIT8>+<LPEXPZ*BIT0>,(R0)+ ;2 BYTES INFO, + DEV REG'S
3275 010030 116220 000001G MOVB LPCSM+1(R2),(R0)+ ;CHECKSUM
3276 010034 012701 000012 MOV #LPRTRY,R1 ;GET INITIAL RETRY COUNT
3277 010040 166201 000000G SUB LPRTY(R2),R1 ; - CURRENT COUNT= # RETRIES
3278 010044 110120 MOVB R1,(R0)+ ;HIGH BYTE-- # RETRIES
3279 010046 71$:
3280 010046 012320 MOV (R3)+,(R0)+ ;(2) ... LP DEVICE REGISTERS
3281 010050 022700 000000C CMP #LPSTBK+LPSTLN,R0 ;DONE YET?
3282 010054 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 010056 72$:
3291 010056 012700 000000G MOV #LPSTBK,R0 ;SET UP ADDR FOR ..STIN
3292 010062 011201 MOV (R2),R1 ;GET UNIT NUMBER
3293 010064 042701 177774 BIC #^C<LP.UNT>,R1 ; FROM LPSTS
3294 010070 110140 MOVB R1,-(R0) ;HIGH BYTE HEADER: UNIT #
3295 010072 112740 000002G MOVB #LPSTLN+2,-(R0) ;LOW BYTE HEADER: SIZE OF BLOCK
3296 010076 012701 100000G MOV #BIT15+BC.HDS,R1 ;INDIRECT FUNCTION HERE IS DEVICE STATUS
3297 010102 PUSH R2 ;SAVE LPTBL POINTER
010102 010246 MOV R2,-(SP)
3298 010104 012702 000005 MOV #E.FLPS,R2 ;EVENT FLAG NUMBER
3299 010110 012703 000000G MOV #D.CLPT,R3 ;DEVICE LP
3300 010114 042777 000020 000000G BIC #EF.LPS,@LPEVFG ;CLEAR BUFFER AVAILABLE FLAG
3301 010122 CALL ..STIN ;SAVE FOR NOW
010122 004737 000000G JSR PC,..STIN
3302 010126 POP R2 ;RESTORE LPTBL POINTER
010126 012602 MOV (SP)+,R2
3303 010130 103010 BCC 80$ ;FINISH UP
3304 ;
3305 ; ..STIN GAVE ERROR-- MUST SEND STATUS AGAIN LATER
3306 ;
3307 010132 75$:
3308 010132 052777 000020 000000G BIS #EF.LPS,@LPEVFG ;NOTE BUFFER STILL REALLY AVAILABLE
3309 010140 032712 000400 BIT #LP.F10,(R2) ;THIS A FROM-10 REQUEST
3310 010144 001402 BEQ 80$ ;NO-- IGNORE THE ERROR
3311 010146 052712 040000 BIS #LP.SST,(R2) ;YES-- SEND STATUS AGAIN LATER
3312 ;
3313 ; FINISH UP
3314 ;
3315 010152 80$:
3316 010152 RESTORE ; AND REGISTERS
010152 012604 MOV (SP)+,R4
010154 012603 MOV (SP)+,R3
010156 012601 MOV (SP)+,R1
010160 012600 MOV (SP)+,R0
3317 010162 RETURN ;RETURN FROM SSTSLP
010162 000207 RTS PC
3318 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 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 010164 TESTLP:
3339 010164 032713 004000 BIT #ONLINE,(R3) ;OFF-LINE?
3340 010170 001470 BEQ 90$ ;YES-- DO NOTHING
3341 ;
3342 010172 032777 000040 000000G BIT #EF.LPW,@LPEVFG ;SHOULD WE WAIT FOR LP-20?
3343 010200 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 010202 DIR$ #MKSCDP ;SET MARK TIME REQUEST
010202 012746 005372' MOV #MKSCDP,-(SP)
010206 104375 EMT 375
3348 010210 103405 BCS 10$ ;OH, WELL ...
3349 010212 WTSE$S #E.FLPW ;WAIT FOR THE FLAG
010212 012746 000006 MOV #E.FLPW,-(SP)
010216 012746 MOV (PC)+,-(SP)
010220 051 002 .BYTE 41.,2
010222 104375 EMT 375
3350 010224 10$:
3351 010224 032712 002000 BIT #LP.CLR,(R2) ;TIME TO CLEAR THE RAM?
3352 010230 001414 BEQ 30$ ;NO-- JUST GO ON
3353 010232 042712 002000 BIC #LP.CLR,(R2) ;RESET THE FLAG
3354 010236 032712 001000 BIT #LP.LIP,(R2) ;BUT RAM LOAD NOW IN PROGRESS??
3355 010242 001007 BNE 30$ ;YES-- DON'T GO RESET IT
3356 ;
3357 ; RAM MUST BE CLEARED, SINCE WE GOT A RAMPAR/VFU ERROR
3358 ;
3359 010244 105063 000014 CLRB LPCBUF(R3) ;CLEAR RAM ADDRESS REGISTER
3360 010250 20$:
3361 010250 005063 000012 CLR LPRAMD(R3) ;CLEAR A RAM WORD
3362 010254 105263 000014 INCB LPCBUF(R3) ;BUMP TO NEXT RAM ADDRESS
3363 010260 001373 BNE 20$ ;NOT DONE-- GO ON TO NEXT WORD
3364 ;
3365 ; TIME TO START LP GOING
3366 ;
3367 010262 30$:
3368 010262 032712 000200 BIT #LP.EOF,(R2) ;WE AT EOF TIME?
3369 010266 001404 BEQ 32$ ;NO-- GO ON
3370 010270 042712 000200 BIC #LP.EOF,(R2) ;YES-- NO LONGER EOF
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 PAGE 36-1
TESTLP (START LP-20 GOING ON THREADED LIST)
3371 010274 005062 000000G CLR LPCSM(R2) ;RESET CHECKSUM AT EOF
3372 010300 32$:
3373 010300 032713 040000 BIT #PAGZRO,(R3) ;PAGZRO SET?
3374 010304 001403 BEQ 34$ ;NO-- GO ON
3375 010306 016363 000010 000010 MOV LPPCTR(R3),LPPCTR(R3) ;YES-- RESET PAGZRO
3376 010314 34$:
3377 010314 005713 TST (R3) ;ERROR SET?
3378 010316 100002 BPL 40$ ;NO-- GO ON
3379 010320 052713 001102 BIS #RSTERR+INTENB+PARENB,(R3) ;YES-- RESET IT
3380 010324 40$:
3381 010324 PUSH R0 ;SAVE THREAD POINTER
010324 010046 MOV R0,-(SP)
3382 010326 .INH4 ;;; PREVENT LP INTERRUPTS
010326 013746 177776 MOV @#PS,-(SP)
010332 112737 000200 177776 MOVB #PR4,@#PS
3383 010340 CALL ..DOLP ;;;START LP GOING ON THE LIST
010340 004737 011614' JSR PC,..DOLP
3384 010344 .ENB4 ;;;DONE
010344 012637 177776 MOV (SP)+,@#PS
3385 010350 POP R0 ;RESTORE LPTHD POINTER
010350 012600 MOV (SP)+,R0
3386 ;
3387 ; ALL DONE
3388 ;
3389 010352 90$:
3390 010352 RETURN ;RETURN FROM TESTLP
010352 000207 RTS PC
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 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 010354 INITLP::
3405 010354 SAVE <R2,R3,R5> ;SAVE OUR PRECIOUS REGISTERS
010354 010246 MOV R2,-(SP)
010356 010346 MOV R3,-(SP)
010360 010546 MOV R5,-(SP)
3406 010362 012705 000002 MOV #L$$P20,R5 ;GET # LP'S WE HAVE
3407 010366 012702 000000G MOV #LPTBL,R2 ;ADDRESS LPTBL ENTRY FOR UNIT 0
3408 010372 10$:
3409 010372 011203 MOV (R2),R3 ;GET THE
3410 010374 042703 177774 BIC #^C<LP.UNT>,R3 ; UNIT #
3411 010400 006303 ASL R3 ; *2
3412 010402 006303 ASL R3 ; *4
3413 010404 006303 ASL R3 ; *8
3414 010406 006303 ASL R3 ; *16 BYTES PER UNIT
3415 010410 062703 000000G ADD #LPEXPA,R3 ;GET EXTERNAL PAGE ADDRESS FOR THIS LP
3416 010414 010362 000000G MOV R3,LPCSA(R2) ;SAVE THIS ADDRESS
3417 010420 012713 001102 MOV #RSTERR+INTENB+PARENB,(R3) ;CLEAR LP
3418 010424 LPDCLR:
3419 010424 005062 000000G CLR LPITH(R2) ;CLEAR INT-LEVEL POINTER TO THREADED LIST
3420 010430 90$:
3421 010430 062702 000000G ADD #LPSIZE,R2 ;BUMP TO NEXT LP'S ENTRY
3422 010434 077522 SOB R5,10$ ;LOOP FOR ALL LP'S
3423
3424 010436 052777 000002 000000G BIS #EF.LPC,@LPEVFG ;FORCE A HUNG CHECK NOW
3425 010444 RESTORE ; THE REGISTERS TO THEIR RIGHTFUL (PITIFUL) CONDITION
010444 012605 MOV (SP)+,R5
010446 012603 MOV (SP)+,R3
010450 012602 MOV (SP)+,R2
3426 010452 RETURN ;RETURN FROM INITLP
010452 000207 RTS PC
3427 ;
3428 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 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 20:48 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 010454 $LPINT::
3491 010454 013737 177776 000000G MOV @#PS,LPUNIT ;;;SAVE UNIT #
3492 010462 SAVE <R0,R2,R3> ;;;SAVE REGISTERS
010462 010046 MOV R0,-(SP)
010464 010246 MOV R2,-(SP)
010466 010346 MOV R3,-(SP)
3493 010470 013702 000000G MOV LPUNIT,R2 ;;;GET UNIT # BACK
3494 010474 006302 ASL R2 ;;;MAKE IT WORDS
3495 010476 042702 177774 BIC #^C<LP.UNT>,R2 ;;;CLEAR GARBAGE BITS
3496 010502 016202 000000G MOV LPUTBL(R2),R2 ;;;GET ADDR OF DEVICE STATUS BLOCK FOR THIS LP
3497 010506 016203 000000G MOV LPCSA(R2),R3 ;;;GET EXT PAGE ADDR FOR CURRENT LP
3498 010512 016200 000000G MOV LPITH(R2),R0 ;;;GET CURRENT THREAD BLOCK ADDR
3499 010516 001520 BEQ 80$ ;;;IDLE-- JUST SEND DEVICE STATUS
3500 ;
3501 ; LP NOT IDLE-- SEE IF ERROR, PAGZRO, CHRINT, OR DONE
3502 ;
3503 010520 105062 000000G CLRB LPCSM+0(R2) ;;;INSURE NO CARRY
3504 010524 066362 000016 000000G ADD LPCKSM-1(R3),LPCSM(R2) ;;;ACCUMULATE CHECKSUM
3505 010532 032713 160000 BIT #ERR+PAGZRO+CHRINT,(R3) ;;;ERROR, PAGZRO, OR CHRINT?
3506 010536 001014 BNE 30$ ;;;YES-- STOP I/O AND PROCESS
3507 010540 005763 000006 TST LPBCTR(R3) ;;;DONE (BYTE COUNT=0)?
3508 010544 001003 BNE 20$ ;;;NO-- JUST KEEP IT GOING
3509 010546 CALL ..DOL1 ;;;YES-- START NEXT BUFFER
010546 004737 011600' JSR PC,..DOL1
3510 010552 000511 BR 90$ ;;;EXIT FROM IRP
3511 ;
3512 010554 20$:
3513 010554 005362 000000G DEC LPRTY(R2) ;;;DECREMENT RETRY COUNT
3514 010560 002403 BLT 30$ ;;;RAN OUT-- CHECK FOR A BIT SET, OR ASSUME ERROR
3515 010562 052713 000103 BIS #INTENB+PARENB+GO,(R3) ;;;MAKE SURE LP IS STILL GO-ING
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 PAGE 39-1
$LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
3516 010566 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 010570 30$:
3522 010570 032712 010000 BIT #LP.MCH,(R2) ;;;MULTI-CHAR PRINT OPERATION?
3523 010574 001044 BNE 40$ ;;;YES-- DON'T SAVE BYTE COUNT AND ADDRESS
3524 010576 005463 000006 NEG LPBCTR(R3) ;;;GET # BYTES LEFT TO TRANSMIT
3525 010602 016360 000006 000000G MOV LPBCTR(R3),T.HCBC(R0) ;;; INTO THREAD BLOCK TO CONTINUE
3526 010610 016360 000004 000000G MOV LPBSAD(R3),T.HCAD(R0) ;;;ALSO CURRENT ADDRESS
3527 010616 032713 020000 BIT #CHRINT,(R3) ;;;THIS CHRINT INTERRUPT?
3528 010622 001431 BEQ 40$ ;;;NO-- SEE IF PAGZRO
3529 010624 PUSH R2 ;;;SAVE THE ADDRESS OF LPTBL
010624 010246 MOV R2,-(SP)
3530 010626 062702 000000G ADD #LPMCB,R2 ;;;POINT TO THE MULTI-CHAR BUFFER
3531 010632 010263 000004 MOV R2,LPBSAD(R3) ;;;POINT THE LP20 TO THAT BUFFER
3532 010636 116312 000012 MOVB LPRAMD+0(R3),(R2) ;;;GET RAM DATA CHARACTER
3533 010642 122722 000136 CMPB #'^,(R2)+ ;;;ARROW MODE?
3534 010646 001015 BNE 39$ ;;;NO-- INTERRUPT -10
3535 010650 116312 000014 MOVB LPCBUF(R3),(R2) ;;;YES-- GET THE CAUSING CHARACTER
3536 010654 152712 000100 BISB #100,(R2) ;;;MAKE IT ALPHABETIC
3537 010660 POP R2 ;;;RESTORE LPTBL
010660 012602 MOV (SP)+,R2
3538 010662 052712 010000 BIS #LP.MCH,(R2) ;;;SAY WE ARE DOING MULTI-CHARACTER
3539 010666 012763 177776 000006 MOV #-2,LPBCTR(R3) ;;;SET BYTE COUNT TO TWO CHARACTERS
3540 010674 012713 000103 MOV #PARENB+INTENB+GO,(R3) ;;;START IT GOING ON THESE TWO CHARS
3541 010700 000436 BR 90$ ;;;WAIT FOR DONE
3542 ;
3543 010702 39$: POP R2 ;;;INTERRUPT-- RESTORE LPTBL POINTER
010702 012602 MOV (SP)+,R2
3544 010704 000423 BR 70$ ;;; AND TELL -10
3545 ;
3546 ; ERROR OR PAGZRO
3547 ;
3548 010706 40$:
3549 010706 032713 040000 BIT #PAGZRO,(R3) ;;;PAGZRO?
3550 010712 001411 BEQ 60$ ;;;NO-- MUST BE ERROR
3551 010714 032712 020000 BIT #LP.PZI,(R2) ;;;YES-- IS PAGE ZERO INTERRUPT ENABLED?
3552 010720 001015 BNE 70$ ;;;YES-- INTERRUPT AND WAIT
3553 010722 016363 000010 000010 MOV LPPCTR(R3),LPPCTR(R3) ;;;NO-- RESET PAGZRO
3554 010730 CALL ..DOLP ;;;NO-- JUST CONTINUE
010730 004737 011614' JSR PC,..DOLP
3555 010734 000420 BR 90$ ;;;DONE WITH PAGZRO
3556 ;
3557 ; ERROR-- DECREMENT RETRY COUNT IF ANYTHING BUT OFF-LINE
3558 ;
3559 010736 60$:
3560 010736 032763 000177 000002 BIT #VFUERR+LPTPAR+MEMPAR+RAMPAR+SYNTIM+DEMTIM+GOERR,LPCSRB(R3)
3561 010744 001403 BEQ 70$ ;;;NO ERRORS-- JUST SEND STATUS
3562 010746 012762 177777 000000G MOV #-1,LPRTY(R2) ;;; ABOVE ERRORS ARE NOT RECOVERABLE
3563 ;
3564 ; STOP I/O AND SEND STATUS TO -10
3565 ;
3566 010754 70$:
3567 010754 005062 000000G CLR LPITH(R2) ;;;SAY I/O STOPPED
3568 ;
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 PAGE 39-2
$LPINT (LP-20 INTERRUPT SERVICE ROUTINE)
3569 ; SEND STATUS TO -10
3570 ;
3571 010760 80$:
3572 010760 052712 040000 BIS #LP.SST,(R2) ;;;SAY SEND STATUS TO TASK
3573 010764 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;;;SAY SOMETHING TO DO
3574 010772 CALL ..DSEV ;;;SAY SIGNIFICANT EVENT
010772 004737 000000G JSR PC,..DSEV
3575 ;
3576 ; ALL DONE WITH INTERRUPT
3577 ;
3578 010776 90$:
3579 010776 RESTORE ;;; SAVED REGISTERS
010776 012603 MOV (SP)+,R3
011000 012602 MOV (SP)+,R2
011002 012600 MOV (SP)+,R0
3580 011004 000137 000000G JMP ..INTX ;;;RETURN FROM LP INTERRUPT
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 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 20:48 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 011010 ..STLP::
3652 011010 SAVE <R1,R3,R4>
011010 010146 MOV R1,-(SP)
011012 010346 MOV R3,-(SP)
011014 010446 MOV R4,-(SP)
3653 011016 022702 000000C CMP #LPTBL+<L$$P20*LPSIZE>,R2 ;THIS ONE OF US?
3654 011022 101434 BLOS 30$ ;NO-- JUST SLIP AWAY
3655 011024 052712 000400 BIS #LP.F10,(R2) ;NOTE THAT THIS IS A FROM-10 REQUEST
3656 011030 116004 000001G MOVB T.HCBC+1(R0),R4 ;GET FUNCTION CODE
3657 011034 105060 000001G CLRB T.HCBC+1(R0) ; AND CLEAR IT
3658 011040 012703 011060' MOV #BCFTAB,R3 ;POINT TO FUNCTION DISPATCH TABLE
3659 011044 10$:
3660 011044 112301 MOVB (R3)+,R1 ;GET A DISPATCH ADDRESS
3661 011046 001413 BEQ BCFILF ;END-- ASSUME RETURN DEVICE STATUS
3662 011050 122304 CMPB (R3)+,R4 ;MATCH FUNCTION?
3663 011052 001374 BNE 10$ ;NO-- LOOP TILL WE FIND FUNCTION
3664 011054 000161 011060' JMP BCFTAB(R1) ;PERFORM FUNCTION
3665 ;
3666 011060 BCFTAB:
3667 011060 124 000G .BYTE BCFSTR-BCFTAB,BC.STR
3668 011062 016 000G .BYTE BCFRDS-BCFTAB,BC.RDS
3669 011064 062 000G .BYTE BCFHDS-BCFTAB,BC.HDS
3670 011066 042 000G .BYTE BCFSDO-BCFTAB,BC.SDS
3671 011070 102 000G .BYTE BCFLDR-BCFTAB,BC.LDR
3672 011072 110 000G .BYTE BCFLDV-BCFTAB,BC.LDV
3673 011074 000 .BYTE 0
3674 .EVEN
3675 ;
3676 ; ILLEGAL FUNCTION
3677 ;
3678 011076 BCFILF:
3679 ; BR BCFRDS ;ILLEGAL FUNCTION-- JUST SEND STATUS FOR NOW
3680 ;
3681 ; RETURN DEVICE STATUS
3682 ;
3683 011076 BCFRDS:
3684 011076 052712 040000 BIS #LP.SST,(R2) ;NOTE TO SEND STATUS NOW
3685 011102 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;TELLL LP TASK TO DO SOMETHING
3686 011110 CALL ..DSEV ;MAKE A SIGNIFICANT EVENT HAPPEN
011110 004737 000000G JSR PC,..DSEV
3687 ;
3688 ; THREAD BLOCK DONE-- DEALLOCATE
3689 ;
3690 011114 30$:
3691 011114 CALL ..DECN ;DEALLOCATE THREAD BLOCK
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 PAGE 40-2
..STLP (START LP-20 OUTPUT)
011114 004737 000000G JSR PC,..DECN
3692 011120 000433 BR 90$ ;RESTORE AND RETURN
3693 ;
3694 ; SPECIAL DEVICE OPERATION
3695 ;
3696 011122 BCFSDO:
3697 011122 016001 000000G MOV T.HCAD(R0),R1 ;GET DATA ADDRESS
3698 011126 022711 000001 CMP #1,(R1) ;SET PAGE COUNTER?
3699 011132 001361 BNE BCFILF ;NO-- ILLEGAL FUNCTION
3700 011134 012701 010000 MOV #TB.LPC,R1 ;SAY SET PAGE COUNTER
3701 011140 000415 BR 40$ ;QUEUE IT UP
3702 ;
3703 ; HERE IS DEVICE STATUS
3704 ;
3705 011142 BCFHDS:
3706 011142 016001 000000G MOV T.HCAD(R0),R1 ;GET ADDRESS
3707 011146 032711 000040 BIT #DV.EOF,(R1) ;EOF FOR LP?
3708 011152 001751 BEQ BCFILF ;NO-- ILLEGAL STATUS
3709 011154 012701 020000 MOV #TB.EOF,R1 ;YES-- SET FUNCTION
3710 011160 000405 BR 40$ ;SEND IT TO QUEUE
3711 ;
3712 ; TRANSLATION RAM DATA
3713 ;
3714 011162 BCFLDR:
3715 011162 012701 004000 MOV #TB.RMD,R1 ;NOTE RAM DATA
3716 011166 000402 BR 40$ ;SEND TO QUEUE
3717 ;
3718 ; VFU DATA
3719 ;
3720 011170 BCFLDV:
3721 011170 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 011174 40$:
3727 011174 052701 100000 BIS #TB.DON,R1 ;FLAG BLOCK DONE TO INTERRUPT SERVICE
3728 011200 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 011204 BCFSTR:
3734 011204 CALL ..PTLP ;SEND TO LP OR QUEUE UP
011204 004737 011452' JSR PC,..PTLP
3735 ;
3736 ; ALL DONE
3737 ;
3738 011210 90$:
3739 011210 RESTORE ;UN-SAVE REGISTRS
011210 012604 MOV (SP)+,R4
011212 012603 MOV (SP)+,R3
011214 012601 MOV (SP)+,R1
3740 011216 RETURN ; FROM ..STLP
011216 000207 RTS PC
3741 ;
3742 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 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 011220 ..SPLP::
3769 011220 SAVE <R0,R1,R3> ;SAVE MISC. REGISTERS
011220 010046 MOV R0,-(SP)
011222 010146 MOV R1,-(SP)
011224 010346 MOV R3,-(SP)
3770 011226 022702 000000C CMP #LPTBL+<L$$P20*LPSIZE>,R2 ;THIS ONE OF US?
3771 011232 101453 BLOS 99$ ;NO-- JUST LEAVE
3772 011234 042712 004000 BIC #LP.WAT,(R2) ;NO LONGER WAITING FOR ACK
3773 011240 005762 000000G TST LPRMA(R2) ;RAM DATA LOAD IN PROGRESS??
3774 011244 001402 BEQ 4$ ;NO-- GO ON
3775 011246 052712 001000 BIS #LP.LIP,(R2) ;YES-- FLAG TO REMOVE IT AT LPTASK
3776 011252 4$:
3777 011252 005762 000000G TST LPITH(R2) ;I/O IN PROGRESS?
3778 011256 001403 BEQ 5$ ;NO-- JUST GO ON
3779 011260 042777 000040 000000G BIC #EF.LPW,@LPEVFG ;YES-- MARK TO TIME OUT LP-20 WHEN WE STOP IT
3780 011266 5$:
3781 011266 005062 000000G CLR LPITH(R2) ;CLEAR INTERRUPT LEVEL THREAD PTR
3782 011272 016203 000000G MOV LPCSA(R2),R3 ;GET EXTERNAL PAGE ADDR
3783 011276 001405 BEQ 6$ ;NON-EX LP
3784 011300 012713 001102 MOV #RSTERR+INTENB+PARENB,(R3) ;STOP LP-20
3785 011304 016363 000010 000010 MOV LPPCTR(R3),LPPCTR(R3) ;RESET PAGZRO, TOO
3786 011312 6$:
3787 011312 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 011316 10$:
3792 011316 010100 MOV R1,R0 ;GET ADDR OF NEXT BLOCK
3793 011320 001413 BEQ 90$ ;THAT'S THE END
3794 011322 011001 MOV @R0,R1 ;GET ADDR OF NEXT NEXT BLOCK
3795 011324 052760 040000 000000G BIS #TB.ABO,T.HCBC(R0) ;MARK BLOCK AS ABORTED
3796 011332 005760 000000G TST T.HCBC(R0) ;THIS THREAD BLOCK ALREADY DONE?
3797 011336 002767 BLT 10$ ;YES-- LEAVE IT ALONE
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 PAGE 41-1
..SPLP (STOP LP-20 OUTPUT)
3798 011340 012760 140361 000000G MOV #TB.DON!TB.ABO!<IE.ABO&LOBYTE>,T.HCBC(R0) ;MARK AS DONE, ABORTED
3799 011346 000763 BR 10$ ;LOOP FOR ALL THINGS IN LIST
3800 ;
3801 ; ALL DONE WITH LIST
3802 ;
3803 011350 90$:
3804 011350 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;SAY I/O DONE TO LP TASK (RATHER... ABORTED)
3805 011356 CALL ..DSEV ;MAKE A SIGNIFICANT EVENT HAPPEN
011356 004737 000000G JSR PC,..DSEV
3806 011362 99$:
3807 011362 RESTORE ;RESTORE SAVE REGISTERS
011362 012603 MOV (SP)+,R3
011364 012601 MOV (SP)+,R1
011366 012600 MOV (SP)+,R0
3808 011370 RETURN ;RETURN FORM ..SPLP
011370 000207 RTS PC
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 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 011372 ..AKLP::
3830 011372 SAVE <R3> ;SAVE USED R'S
011372 010346 MOV R3,-(SP)
3831 011374 022702 000000C CMP #LPTBL+<L$$P20*LPSIZE>,R2 ;THIS AN LP???
3832 011400 101422 BLOS 90$ ;NO-- JUST LEAVE
3833 011402 042712 004000 BIC #LP.WAT,(R2) ;NO LONGER WAITING
3834 011406 005762 000000G TST LPITH(R2) ;LP GOING?
3835 011412 001015 BNE 90$ ;YES-- JUST GO AWAY
3836 011414 016203 000000G MOV LPCSA(R2),R3 ;GET EXT PAGE ADDR OF THIS LP
3837 011420 001405 BEQ 10$ ;NON-EX LP-- JUST GO AWAY
3838 011422 016363 000010 000010 MOV LPPCTR(R3),LPPCTR(R3) ;RESET PAGZRO
3839 011430 042713 020000 BIC #CHRINT,(R3) ; AND CHRINT
3840 011434 10$:
3841 011434 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;START LP TASK
3842 011442 CALL ..DSEV ; . .
011442 004737 000000G JSR PC,..DSEV
3843 011446 90$:
3844 011446 RESTORE ; USED R'S
011446 012603 MOV (SP)+,R3
3845 011450 RETURN ; FROM ..AKLP
011450 000207 RTS PC
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 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 011452 ..PTLP::
3869 011452 SAVE <R1,R3> ;SAVE USED REGISTERS
011452 010146 MOV R1,-(SP)
011454 010346 MOV R3,-(SP)
3870 011456 005010 CLR @R0 ;MARK END OF LIST
3871 011460 012762 000012 000000G MOV #LPRTRY,LPRTY(R2) ;RESET RETRY COUNTER
3872 011466 016203 000000G MOV LPCSA(R2),R3 ;GET LP EXTERNAL PAGE ADDRESS
3873 011472 001404 BEQ 5$ ;OOPS-- NON-EX LP
3874 011474 032713 004000 BIT #ONLINE,(R3) ;OFF-LINE?
3875 011500 001006 BNE 7$ ;NO-- JUST GO ON
3876 011502 000403 BR 6$ ;OFF-LINE-- SEND STATUS
3877 ;
3878 011504 5$:
3879 011504 012760 100277 000000G MOV #TB.DON!<IE.OFL&LOBYTE>,T.HCBC(R0) ;NON-EX-LP-- MARK AS DONE, ERROR
3880 011512 6$:
3881 011512 052712 040000 BIS #LP.SST,(R2) ;TIME TO RING THE -10
3882 011516 7$:
3883 011516 .INH0 ;;LOCK OUT QUEUE'D PROTOCOL TASK
011516 013746 177776 MOV @#PS,-(SP)
011522 112737 000140 177776 MOVB #140,@#PS
3884 011530 016201 000000G MOV LPTHD(R2),R1 ;;GET CURRENT POINTER TO THREADED LIST
3885 011534 001405 BEQ 20$ ;;NONE-- START LP GOING
3886 ;
3887 ; LP BUSY-- MUST FIND END OF THREADED LIST AND PUT THIS BUFFER THERE
3888 ;
3889 011536 10$:
3890 011536 010103 MOV R1,R3 ;;COPY ADDR OF THREAD BLOCK
3891 011540 011301 MOV @R3,R1 ;;GET NEXT THREAD
3892 011542 001375 BNE 10$ ;;NOT END-- KEEP ON LOOKING
3893 011544 010013 MOV R0,@R3 ;;END-- STORE CURRENT THREAD BLOCK AT END
3894 011546 000407 BR 90$ ;;ALL DONE
3895 ;
3896 ; LP IDLE-- START IT GOING ON THIS BUFFER
3897 ;
3898 011550 20$:
3899 011550 010062 000000G MOV R0,LPTHD(R2) ;;STORE START OF THREAD
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 PAGE 43-1
..PTLP (PUT BLOCK IN THREADED OUTPUT LIST)
3900 011554 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;;TELL LP TASK TO START LP GOING
3901 011562 CALL ..DSEV ;; WITH A SIGNIFICANT EVENT
011562 004737 000000G JSR PC,..DSEV
3902 ;
3903 ; ALL DONE
3904 ;
3905 011566 90$:
3906 011566 .ENB0 ;RE-ENABLE IRPS
011566 004737 000000G JSR PC,..ENB0
3907 011572 RESTORE ;RESTORE SAVED REGISTERS
011572 012603 MOV (SP)+,R3
011574 012601 MOV (SP)+,R1
3908 011576 RETURN ;RETURN FROM ..PTLP
011576 000207 RTS PC
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 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 011600 ..DOL1::
3940 011600 032712 001000 BIT #LP.LIP,(R2) ;;;LOAD SUPPOSED TO BE IN PROGRESS?
3941 011604 001020 BNE 19$ ;;;YES-- GO BACK TO TASK
3942 011606 032712 010000 BIT #LP.MCH,(R2) ;;;MULTI-CHARACTER OPERATION?
3943 011612 001417 BEQ 20$ ;;;NO-- GET NEXT BUFFER
3944 ;;;YES-- GET (CONTINUE) CURRENT BUFFER
3945 011614 ..DOLP::
3946 011614 10$:
3947 011614 042712 114000 BIC #LP.WAT!LP.MCH!LP.HNG,(R2) ;;;NOT WAITING, AND NOT MULTI-CHAR-ING
3948 011620 010062 000000G MOV R0,LPITH(R2) ;;;SAVE CURRENT BUFFER AS OUR INT-LEVEL BUFFER
3949 011624 001463 BEQ 90$ ;;;GIVE UP IF END
3950 011626 016063 000000G 000006 MOV T.HCBC(R0),LPBCTR(R3) ;;;SAVE BYTE COUNT FOR LP (WILL NEG LATER)
3951 011634 003020 BGT 50$ ;;;NOT DONE-- START OUTPUT
3952 ;
3953 011636 032760 036000 000000G BIT #TB.SFN,T.HCBC(R0) ;;;SPECIAL FUNCTION?
3954 011644 001402 BEQ 20$ ;;;NO-- JUST SET DONE
3955 011646 19$:
3956 011646 005000 CLR R0 ;;;YES-- DON'T GET NEXT THREAD BLOCK
3957 011650 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 011652 20$:
3963 011652 012760 100001 000000G MOV #TB.DON!<IS.SUC&LOBYTE>,T.HCBC(R0) ;;;NOTE SUCCESS HERE
3964 011660 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 20:48 PAGE 44-1
..DOLP (INITIATE LP-20 TRANSFER)
3967 ;
3968 011662 30$:
3969 011662 052777 000001 000000G BIS #EF.LPD,@LPEVFG ;;;SET LP I/O DONE EVENT FLAGE
3970 011670 CALL ..DSEV ;;;MAKE A SIGNIFICANT EVENT
011670 004737 000000G JSR PC,..DSEV
3971 011674 000747 BR 10$ ;;;DO NEXT BUFFER
3972 ;
3973 ; SET UP -VE BYTE COUNT AND EXTENDED MEMORY ADDRESS BITS
3974 ;
3975 011676 50$:
3976 011676 016063 000000G 000004 MOV T.HCAD(R0),LPBSAD(R3) ;;;SAVE PHYSICAL ADDR FOR LP
3977 011704 005463 000006 NEG LPBCTR(R3) ;;;MAKE -VE # BYTES TO SEND
3978 011710 042713 000060 BIC #BUSA17+BUSA16,(R3) ;;;CLEAR EXTENDED MEMORY ADDR BITS
3979 011714 005760 000000G TST T.HBCT(R0) ;;;THIS QUEUE I/O REQUEST?
3980 011720 001023 BNE 59$ ;;;NO-- ADDRESS IS IN LOW CORE
3981 011722 116062 177775 000000G MOVB T.HVFC(R0),LPMCB(R2) ;;;SET TO PRINT VERTICAL FORMAT CHARACTER
3982 011730 001415 BEQ 58$ ;;;NONE-- JUST START THE LP
3983 011732 105060 177775 CLRB T.HVFC(R0) ;;;YES-- CLEAR IT NOW
3984 011736 012763 000000G 000004 MOV #LPMCB,LPBSAD(R3) ;;;YES-- POINT TO THE FORMAT CHARACTER
3985 011744 060263 000004 ADD R2,LPBSAD(R3) ;;; FOR THIS LP
3986 011750 012763 177777 000006 MOV #-1,LPBCTR(R3) ;;;ONLY 1 CHARACTER
3987 011756 052712 010000 BIS #LP.MCH,(R2) ;;;NOTE THAT WE ARE WORKING FROM LPMCB
3988 011762 000402 BR 59$ ;;;START THE LP GOING
3989 ;
3990 011764 58$:
3991 011764 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 011770 59$:
3996 011770 052713 000103 BIS #INTENB+PARENB+GO,(R3) ;;;START LP GOING
3997 ;
3998 ; ALL DONE-- RETURN
3999 ;
4000 011774 90$:
4001 011774 RETURN ;;;RETURN FROM ..DOLP/..DOL1
011774 000207 RTS PC
4002 .DSABLE LSB
LPDRV (LP-20 LINEPRINTER DRIV MACRO M1113 03-APR-86 20:48 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 20:48 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 011776 $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 20:48 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 20:48 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 20:48 PAGE 49
COMMON DATABASE DEFINITIONS
4130 .SBTTL COMMON DATABASE DEFINITIONS
4131 ;
4132 ;
4133 ; CR TASK STACK HEADER
4134 ;
4135 011776 CRHD:: .STKM 0,0,0,0,0,0,0,CRINI,174000,CRSTK
012044 000000 000000 000000 .WORD 0,0,0,0
012052 000000
012072 174000 012360' 012256' .WORD 174000,CRINI,CRSTK
012126 000005 .WORD 5
012130 000000G .WORD TTPEN
012132 000000 .WORD 0
012134 000000 .WORD 0
012136 000000 .WORD 0
012140 000000 .WORD 0
012142 000000 .WORD 0
012144 000000 .WORD 0
012146 000000 .WORD 0
012150 000000 .WORD 0
012152 000000 .WORD 0
012154 000000 .WORD 0
012256 000000 .WORD 0
012260 000000 .WORD 0
012262 000000 .WORD 0
012264 000000 .WORD 0
012266 000000 .WORD 0
012270 000000 .WORD 0
012272 012360' .WORD CRINI
012274 174000 .WORD 174000
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 012276 CRMRKT: MRKT$ E.FCRC,10.*.CYLTM,10.*.CYLTM ;MARK-TIME REQUEST FOR 10 SECONDS
012276 027 005 .BYTE 23.,5
012300 000001 .WORD E.FCRC
012302 001130 .WORD 10.*.CYLTM
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 20:48 PAGE 49-1
COMMON DATABASE DEFINITIONS
012304 001130 .WORD 10.*.CYLTM
012306 000000 .WORD
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 20:48 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 20:48 PAGE 51
TASK INITIALIZATION
4197 .SBTTL TASK INITIALIZATION
4198 ;
4199 ; SST VECTOR TABLE
4200 ;
4201 012310 012312' CRSSTV: .WORD CRTRP4 ;WHERE TO GO ON TRAP TO 4
4202 ;
4203 ; HERE ON TRAP TO 4, HOPEFULLY JUST NON-EX CR
4204 ;
4205 012312 021627 013026' CRTRP4: CMP (SP),#CRDINT ;FROM MARK-TIME?
4206 012316 001404 BEQ 10$ ;YES-- OK
4207 012320 021627 013556' CMP (SP),#CRDCLR ;OR FROM INIT?
4208 012324 001401 BEQ 10$ ;YES-- ALSO OK
4209 012326 000004 IOT ;***** NO, NOT OUR T04 *****
4210 ;
4211 012330 005037 000000G 10$: CLR CREXP ; [5.1566] CLEAR THE EXTERNAL PAGE ADDRESS
4212 012334 052737 001000 000000G BIS #CR.NXD,CRSTS ;SAY NON-EX CR
4213 012342 052766 000001 000002 BIS #BIT0,2(SP) ;SET THE CARRY TO THE SST
4214 012350 000002 RTI ;RETURN TO INTERRPUTED ROUTINE
4215 ;
4216 ; HERE ON POWER-UP AST
4217 ;
4218 012352 CRPWUP: CALL INITCR ;RESET THE CR
012352 004737 013542' JSR PC,INITCR
4219 012356 000002 RTI ;RETURN FROM AST
4220 ;
4221 ; HERE TO START CR TASK
4222 ;
4223 012360 013737 000000G 000000G CRINI: MOV .CRTSK,CREVFG ;GET ADDRESS OF OUR TASK'S ENTRY
4224 012366 062737 000020 000000G ADD #A.EF,CREVFG ;MAKE THAT ADDRESS OF OUR EVENT FLAGS
4225 012374 052777 000014 000000G BIS #EF.CRB!EF.CRS,@CREVFG ;SAY OUR BUFFERS ARE AVAILABLE
4226 012402 DIR$ #CRMRKT ;SETUP FOR 10-SECOND MARK-TIME'S
012402 012746 012276' MOV #CRMRKT,-(SP)
012406 104375 EMT 375
4227 012410 SVTK$S #CRSSTV,#1 ;SETUP FOR TRAP-TO-4 RECOGNITION
012410 012746 000001 MOV #1,-(SP)
012414 012746 012310' MOV #CRSSTV,-(SP)
012420 012746 MOV (PC)+,-(SP)
012422 071 003 .BYTE 57.,3
012424 104375 EMT 375
4228 012426 SPRA$S #CRPWUP ;SETUP FOR POWER-UP AST
012426 012746 012352' MOV #CRPWUP,-(SP)
012432 012746 MOV (PC)+,-(SP)
012434 155 002 .BYTE 109.,2
012436 104375 EMT 375
4229 012440 CALL INITCR ;INITIALIZE CD-11 AND TABLES
012440 004737 013542' JSR PC,INITCR
4230 ; BR CRLOOP ;FALL INTO PROCESSING LOOP
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 20:48 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 012444 CRLOOP: WTLO$S 1,#EF.CRC!EF.CRD ;WAIT FOR FLAGS
012444 012746 000003 MOV #EF.CRC!EF.CRD,-(SP)
012450 012746 000001 MOV #1,-(SP)
012454 012746 MOV (PC)+,-(SP)
012456 053 003 .BYTE 43.,3
012460 104375 EMT 375
4237 ;
4238 012462 .INH ;;;A FLAG WAS SET-- LOCK OUT INTERRUPTS
012462 013746 177776 MOV PS,-(SP)
012466 112737 000340 177776 MOVB #PR7,@#PS ;;
4239 012474 017737 000000G 000000G MOV @CREVFG,CRCEVF ;;;GET OUR CURRENT EVENT FLAGS
4240 012502 042777 000003 000000G BIC #EF.CRC!EF.CRD,@CREVFG ;;;CLEAR THE FLAGS WE WAITED FOR
4241 012510 .ENB ;INTERRUPTS: ON!
012510 012637 177776 MOV (SP)+,@#PS ;;
4242 012514 005737 000000G TST .CRPFL ;POWER FAIL?
4243 012520 001404 BEQ 10$ ;NO -- FORGET IT
4244 012522 CALL INITCR ;YES -- INIT CR
012522 004737 013542' JSR PC,INITCR
4245 012526 005037 000000G CLR .CRPFL
4246 012532 10$:
4247 ;
4248 ; SEE IF THIS IS EF.CRD (I/O DONE), AND FIND OUT WHY IT WAS SET.
4249 ;
4250 012532 032737 000002 000000G CRIOD: BIT #EF.CRD,CRCEVF ;THIS EF.CRD?
4251 012540 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 012542 032737 010000 000000G BIT #CR.IOD,CRSTS ;WE FINISH A TRANSFER?
4256 012550 001430 BEQ 20$ ;NO-- GO ON
4257 012552 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 012556 105040 CLRB -(R0) ;HIGH BYTE HEADER: UNIT # (ALWAYS 0)
4267 012560 112740 000000G MOVB #CRBFLN,-(R0) ;LOW BYTE HEADER: SIZE OF BUFFER
4268 012564 012701 100000G MOV #BIT15+BC.STR,R1 ;FUNCTION CODE: STRING DATA (INDIRECT FLAVOR)
4269 012570 012702 000004 MOV #E.FCRB,R2 ;EVENT FLAG TO SET WHEN DONE
4270 012574 012703 000000G MOV #D.CCDR,R3 ;DEVICE CODE: CDR
4271 012600 042777 000010 000000G BIC #EF.CRB,@CREVFG ;ASSUME SUCCESS
4272 012606 CALL ..STIN ;SEND TO -10
012606 004737 000000G JSR PC,..STIN
4273 012612 103404 BCS 10$ ;GIVE UP-- PRIMARY PROTOCOL (DDT)
4274 012614 042737 112400 000000G BIC #CR.IOD!CR.HNG!CR.RHN!CR.NSF,CRSTS ;OK-- NO LONGER BUFFER TO SEND
4275 012622 000403 BR 20$ ;GO ON
4276 ;
4277 012624 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 20:48 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 012632 032737 040000 000000G 20$: BIT #CR.SST,CRSTS ;TIME TO SEND DEVICE STATUS?
4283 012640 001402 BEQ 30$ ;NO-- GO ON
4284 012642 CALL SSTSCR ;YES-- SEND SUCH TO -10
012642 004737 013136' JSR PC,SSTSCR
4285 ;
4286 ; SEE IF -10 WANTS US TO READ NEXT CARD, BY CR.ACK SET.
4287 ;
4288 012646 032737 004000 000000G 30$: BIT #CR.ACK,CRSTS ;-10 WANT A CARD?
4289 012654 001450 BEQ 90$ ;NO-- ALL DONE
4290 012656 032737 030000 000000G BIT #CR.IOP!CR.IOD,CRSTS ;STILL I/O IN PROGRESS?
4291 012664 001044 BNE 90$ ;YES-- COME BACK LATER WHEN WE ARE DONE
4292 012666 042737 106000 000000G BIC #CR.ACK!CR.HNG!CR.RHN,CRSTS ;YES-- NO LONGER WANTING
4293 012674 032737 001000 000000G BIT #CR.NXD,CRSTS ;THIS NON-EX CD-11?
4294 012702 001016 BNE 32$ ;YES-- JUST SEND STATUS
4295 012704 032777 000010 000000G 34$: BIT #EF.CRB,@CREVFG ;BUFFER AVAILABLE TO US YET?
4296 012712 001006 BNE 31$ ;YES-- ALL OK
4297 012714 WSIG$S ;WAIT FOR SOMETHING TO HAPPEN
012714 012746 MOV (PC)+,-(SP)
012716 061 001 .BYTE 49.,1
012720 104375 EMT 375
4298 012722 005737 000002G TST .COMEF+2 ; [4.1.1105] IS PRIMARY PROTOCOL STILL RUNNING ?
4299 012726 100766 BMI 34$ ; [4.1.1105] YES, SEE IF BUFFER IS NOW FREE.
4300 ;
4301 012730 032737 010000 000000G 31$: BIT #CDSOFL,@#CDST ;CD-11 OFF-LINE?
4302 012736 001403 BEQ 33$ ;NO-- LET'S START TRANSFER
4303 012740 32$: CALL SSTSCR ;YES-- TELL -10
012740 004737 013136' JSR PC,SSTSCR
4304 012744 000414 BR 90$ ; AND GO AWAY FOR NOW
4305 ;
4306 ; START TRNSFER OF CARD TO CRBUFF
4307 ;
4308 012746 052737 020000 000000G 33$: BIS #CR.IOP,CRSTS ;SAY I/O NOW IN PROGRESS
4309 012754 012737 000000C 000000G MOV #-<CRBFLN/2>,@#CDCC ;INDICATE TO READ 80. COLUMNS
4310 012762 012737 000000G 000000G MOV #CRBUFF,@#CDBA ; INTO CRBUFF
4311 012770 012737 000101 000000G MOV #CDSIEN!CDSRED,@#CDST ;START CARD GOING
4312 ;
4313 ; ALL DONE WITH EF.CRD
4314 ;
4315 012776 90$:
4316 ;
4317 ; CHECK FOR MARK-TIME REQUEST (EF.CRC SET), THEN DO HUNG CHECK IF SO.
4318 ;
4319 .ENABLE LSB
4320 012776 032737 000001 000000G CRMKT: BIT #EF.CRC,CRCEVF ;MARK-TIME REQUEST EVENT FLAG SET?
4321 013004 001452 BEQ 90$ ;NO-- GO ON
4322 013006 032737 001000 000000G BIT #CR.NXD,CRSTS ;NON-EX CR?
4323 013014 001011 BNE 9$ ;YES-- SKIP INT-ENB STUFF
4324 013016 000241 CLC ;IN CASE OF TRAP
4325 013020 032737 000100 000000G BIT #CDSIEN,@#CDST ;INT-ENB STILL SET?
4326 013026 103404 CRDINT: BCS 9$ ;NON-EX CR-- GO ON
4327 013030 001003 BNE 9$ ;YES-- SKIP THE SET
4328 013032 052737 000100 000000G BIS #CDSIEN,@#CDST ;YES-- MAKE SURE WE STILL HAVE INT-ENB
4329 013040 032737 074000 000000G 9$: BIT #CR.SST!CR.IOD!CR.ACK!CR.IOP,CRSTS ;YES-- STUFF FOR US TO DO?
4330 013046 001426 BEQ 30$ ;NO-- IDLE-- CLEAR HUNG FLAG
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 20:48 PAGE 52-2
CRLOOP (MAIN PROCESSING LOOP)
4331 013050 032737 100000 000000G BIT #CR.HNG,CRSTS ;WE BEEN HERE WITHIN 10 SECONDS?
4332 013056 001416 BEQ 20$ ;NO-- SET HUNG FLAG SO WE WILL IN 10 SEC
4333 013060 032737 020000 000000G BIT #CR.IOP,CRSTS ;YES-- WAS I/O IN PROGRESS
4334 013066 001407 BEQ 10$ ;NO-- JUST PROCESS OTHER FLAGS
4335 013070 052737 042000 000000G BIS #CR.RHN!CR.SST,CRSTS ;YES-- SAY READER HUNG
4336 013076 005237 000000G INC CRHUNG ;COUNT # TIMES HUNG
4337 013102 CALL INITCR ;RESET THE CD-11
013102 004737 013542' JSR PC,INITCR
4338 ;
4339 013106 052777 000002 000000G 10$: BIS #EF.CRD,@CREVFG ;SAY TO LOOK AT THE FLAGS AGAIN
4340 ;
4341 013114 052737 100000 000000G 20$: BIS #CR.HNG,CRSTS ;FLAG TO CHECK THIS AGAIN IN 10 SECONDS
4342 013122 000403 BR 90$ ;ALL DONE
4343 ;
4344 013124 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 013132 000137 012444' 90$: JMP CRLOOP ;BACK TO MAIN LOOP
4349 .DSABLE LSB
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 20:48 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 013136 042737 040000 000000G SSTSCR: BIC #CR.SST,CRSTS ;SAY STATUS SENT ALREADY
4390 013144 032777 000004 000000G 60$: BIT #EF.CRS,@CREVFG ;IS STATUS BUFFER AVAILABLE?
4391 013152 001006 BNE 10$ ;YES-- ASSEMBLE STATUS
4392 013154 WSIG$S ;NO-- WAIT FOR IT TO BE THERE
013154 012746 MOV (PC)+,-(SP)
013156 061 001 .BYTE 49.,1
013160 104375 EMT 375
4393 013162 005737 000002G TST .COMEF+2 ; [4.1.1105] IF PRIMARY PROTOCOL IS STILL RUNNING
4394 013166 100766 BMI 60$ ; [4.1.1105] THEN CHECK IF STILL GOING
4395 ;
4396 ; ASSEMBLE STATUS INTO CRSTBK+0 CRSTBK+2
4397 ;
4398 013170 012700 000004G 10$: MOV #CRSTBK+4,R0 ;GET ADDRESS OF STATUS BLOCK
4399 013174 005010 CLR (R0) ;CLEAR BYTE COUNT WORD(ASSUME NON-EX DEV)
4400 013176 005040 CLR -(R0) ; AND SECOND WORD OF STATUS
4401 013200 010001 MOV R0,R1 ;SAVE ADDR OF SECOND WORD
4402 013202 005040 CLR -(R0) ; AND CLEAR FIRST WORD, R0 POINTS TO IT
4403 ;
4404 013204 032737 001000 000000G BIT #CR.NXD,CRSTS ;NON-EX DEVICE?
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 20:48 PAGE 53-1
SSTSCR (SEND CD-11 STATUS TO -10)
4405 013212 001403 BEQ 101$ ;NO-- GET REAL STATUS
4406 013214 052710 000007 BIS #DV.NXD!DV.OFL!DV.OIR,(R0) ;YES-- SAY NOT THERE
4407 013220 000522 BR 50$ ;SEND THIS STATUS
4408 ;
4409 013222 013703 000000G 101$: MOV @#CDST,R3 ;COPY DEVICE STATUS
4410 013226 032703 010000 BIT #CDSOFL,R3 ;CD-11 OFF-LINE?
4411 013232 001402 BEQ 11$ ;NO-- GO ON
4412 013234 052710 000006 BIS #DV.OFL!DV.OIR,(R0) ;YES-- SAY SO
4413 ;
4414 013240 032737 030000 000000G 11$: BIT #CR.IOP!CR.IOD,CRSTS ;I/O STILL IN PROGRESS?
4415 013246 001402 BEQ 12$ ;NO
4416 013250 052710 000020 BIS #DV.IOP,(R0) ;YES-- SAY SO
4417 ;
4418 013254 032703 020000 12$: BIT #CDSEOF,R3 ;E-O-F BUTTON PUSHED?
4419 013260 001402 BEQ 13$ ;NO-- GO ON
4420 013262 052710 000040 BIS #DV.EOF,(R0) ;YES-- SAY EOF
4421 ;
4422 013266 032737 002000 000000G 13$: BIT #CR.RHN,CRSTS ;READER HUNG?
4423 013274 001402 BEQ 14$ ;NO-- GO ON
4424 013276 052710 001104 BIS #DV.HNG!DV.OIR!DV.LOG,(R0) ;YES-- SAY HUNG
4425 ;
4426 013302 032703 003000 14$: BIT #CDSDLT!CDSNXM,R3 ;FATAL ERROR (DATA LATE, NXM)?
4427 013306 001402 BEQ 15$ ;NO-- GO ON
4428 013310 052710 000300 BIS #DV.URE!DV.LOG,(R0) ;YES-- SAY SO
4429 ;
4430 013314 032703 000200 15$: BIT #CDSRDY,R3 ;BUT IS READER READY?
4431 013320 001451 BEQ 30$ ;NO-- BITS ARE NOT VALID-- GO ON
4432 ;
4433 013322 013704 000000G MOV @#CDDB,R4 ;YES-- GET ERROR BITS TO R4
4434 ;
4435 013326 032704 040000 BIT #CDBRCK,R4 ;READ (PHOTO) CHECK?
4436 013332 001402 BEQ 16$ ;NO
4437 013334 052711 000001 BIS #DD.RCK,(R1) ;YES
4438 ;
4439 013340 032704 020000 16$: BIT #CDBPCK,R4 ;PICK CHECK?
4440 013344 001402 BEQ 17$ ;NO
4441 013346 052711 000002 BIS #DD.PCK,(R1) ;YES
4442 ;
4443 013352 032704 010000 17$: BIT #CDBSCK,R4 ;STACK CHECK?
4444 013356 001402 BEQ 18$ ;NO
4445 013360 052711 000004 BIS #DD.SCK,(R1) ;YES
4446 ;
4447 013364 005711 18$: TST (R1) ;FATAL ERRROR DETECTED?
4448 013366 001402 BEQ 19$ ;NO-- GO ON
4449 013370 052710 000100 BIS #DV.LOG,(R0) ;YES-- SAY ERROR LOGGING NEEDED
4450 ;
4451 013374 032703 000004 19$: BIT #CDSHEM,R3 ;HOPPER EMPTY?
4452 013400 001402 BEQ 20$ ;NO-- GO ON
4453 013402 052711 000010 BIS #DD.HEM,(R1) ;YES
4454 ;
4455 013406 005711 20$: TST (R1) ;ANY ERROR BITS SET?
4456 013410 001012 BNE 21$ ;YES-- NOT STACKER FULL
4457 013412 032703 040000 BIT #CDSRCK,R3 ;IS THIS A READER CHECK?
4458 013416 001412 BEQ 23$ ;NO-- CERTAINLY NOT STACKER FULL
4459 013420 032737 000400 000000G BIT #CR.NSF,CRSTS ;WE DECIDE IT WASN'T STACKER FULL BEFORE?
4460 013426 001006 BNE 23$ ;YES-- CAN'T BE STACKER FULL NOW
4461 013430 052711 000020 BIS #DD.SFL,(R1) ;NO-- READER CHECK & NO ERRORS => STACKER FULL
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 20:48 PAGE 53-2
SSTSCR (SEND CD-11 STATUS TO -10)
4462 013434 000403 BR 22$ ;STACKER-FULL-- GO ON
4463 ;
4464 013436 052737 000400 000000G 21$: BIS #CR.NSF,CRSTS ;FLAG THAT IT CAN'T BE STACKER FULL
4465 013444 22$:
4466 013444 23$:
4467 013444 012703 000000G 30$: MOV #CDST,R3 ;ADDRESS CD CSR
4468 013450 005721 TST (R1)+ ;POINT TO FIRST WORD OF DEVICE REGISTERS IN STATUS BLOCK
4469 013452 012721 000000C MOV #<CDDB+2-CDST>,(R1)+ ;SAVE SIZE OF FOLLOWING BLOCK
4470 013456 012321 31$: MOV (R3)+,(R1)+ ;MOVE A REGISTER
4471 013460 022701 000000C CMP #CRSTBK+CRSTLN,R1 ;MOVED 'EM ALL?
4472 013464 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 013466 105040 50$: CLRB -(R0) ;HIGH BYTE HEADER: UNIT # (ALWAYS 0)
4482 013470 112740 000000G MOVB #CRSTLN,-(R0) ;LOW BYTE: BYTE COUNT OF BLOCK (NOT INCLUDING HEADER)
4483 013474 012701 100000G MOV #BIT15+BC.HDS,R1 ;FUNCTION: HERE IS DEVICE STATUS (INDIRECT FLAVOR)
4484 013500 012702 000003 MOV #E.FCRS,R2 ;EVENT FLAG TO SET WHEN DONE
4485 013504 012703 000000G MOV #D.CCDR,R3 ;DEVICE CODE: CDR (OF COURSE)
4486 013510 042777 000004 000000G BIC #EF.CRS,@CREVFG ;CLEAR BUFFER AVAILABLE FLAG
4487 013516 CALL ..STIN ;SEND TO -10
013516 004737 000000G JSR PC,..STIN
4488 013522 103006 BCC 90$ ;OK-- DONE
4489 013524 052777 000004 000000G BIS #EF.CRS,@CREVFG ;FAILED-- BUFFER STILL AVAILABLE
4490 013532 052737 040000 000000G BIS #CR.SST,CRSTS ;ERROR-- TRY AGAIN LATER
4491 ;
4492 ; ALL DONE
4493 ;
4494 013540 90$: RETURN ;ALL DONE FORM SSTSCR
013540 000207 RTS PC
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 20:48 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 013542 042737 021000 000000G INITCR::BIC #CR.IOP!CR.NXD,CRSTS ;NO LONGER I/O IN PROGRESS, ASSUME DEVICE EXISTS
4506 013550 012737 000400 000000G MOV #CDSPWC,@#CDST ;DO POWER-CLEAR
4507 013556 052777 000001 000000G CRDCLR: BIS #EF.CRC,@CREVFG ;FORCE HUNG CHECK
4508 013564 RETURN
013564 000207 RTS PC
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 20:48 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 20:48 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 013566 105737 000000G $CDINT:: TSTB @#CDST ;;;CD-11 READY?
4560 013572 100026 BPL 90$ ;;;NO-- JUST GO AWAY
4561 013574 032737 020000 000000G BIT #CR.IOP,CRSTS ;;;YES-- WERE WE I/O IN PROGRESS (READING)?
4562 013602 001415 BEQ 10$ ;;;NO-- GO ON (SEE IF ERROR)
4563 013604 042737 020000 000000G BIC #CR.IOP,CRSTS ;;;YES-- MUST BE DONE NOW
4564 013612 005737 000000G TST @#CDST ;;;[**]
4565 013616 100407 BMI 10$ ;;;[**]
4566 013620 005737 000000G TST @#CDCC ;;;DID WE READ A CARD?
4567 013624 001004 BNE 10$ ;;;NO-- MUST BE ERROR-- SEND STATUS NOW
4568 013626 052737 010000 000000G BIS #CR.IOD,CRSTS ;;;SO MAKE TASK KNOW WE ARE DONE
4569 ;
4570 013634 000403 BR 20$ ;;;[**]
4571 ;
4572 013636 052737 040000 000000G 10$: BIS #CR.SST,CRSTS ;;;YES-- SEND DEVICE STATUS
4573 013644 20$: CALL IODNCR ;;;SAY I/O DONE TO TASK
013644 004737 013734' JSR PC,IODNCR
4574 ;
4575 ; ALL DONE WITH INTERRUPT
4576 ;
4577 013650 000137 000000G 90$: JMP ..INTX ;;;FINISH OFF INTERRUPT
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 20:48 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 013654 ..STCR::
4602 013654 CALL ..DECN ;DE-ALLOCATE BLOCK
013654 004737 000000G JSR PC,..DECN
4603 013660 020227 000000G CMP R2,#CRTBL+0 ;THIS CR0?
4604 013664 001030 BNE 99$ ;NO-- GO AWAY
4605 013666 052737 040000 000000G BIS #CR.SST,CRSTS ;YES-- MAKE STATUS HAPPEN
4606 013674 000417 BR IODNCR ; AND MAKE TASK RECOGNIZE IT
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 20:48 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 013676 020227 000000G ..SPCR:: CMP R2,#CRTBL+0 ;THIS CR0?????
4626 013702 001021 BNE 99$ ;NO-- GO AWAY
4627 013704 CALL INITCR ;RESET THE CD-11
013704 004737 013542' JSR PC,INITCR
4628 013710 042737 034000 000000G BIC #CR.ACK!CR.IOD!CR.IOP,CRSTS ;SAY WE ARE HAPPY
4629 013716 RETURN
013716 000207 RTS PC
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 20:48 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 013720 020227 000000G ..AKCR:: CMP R2,#CRTBL+0 ;IS THIS CR0???
4648 013724 001010 BNE 99$ ;NO-- GIVE UP
4649 013726 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 013734 052777 000002 000000G IODNCR: BIS #EF.CRD,@CREVFG ;SET EVENT FLAG
4656 013742 CALL ..DSEV ; AND MAKE SIGN. EVENT TO WAKE TASK
013742 004737 000000G JSR PC,..DSEV
4657 013746 99$: RETURN ; FROM IODNCR
013746 000207 RTS PC
4658 .DSABLE LSB
CRDRV (CD-11 DRIVER FOR RSX10 MACRO M1113 03-APR-86 20:48 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 20:48 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 013750 $DEF
4717 013750 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 20:48 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 20:48 PAGE 62
TASK DATA
4795 .SBTTL TASK DATA
4796 ;
4797 ; TASK HEADER AND STACK
4798 ;
4799 013750 INSHD:: .STKM 0,0,0,0,0,0,40,INSTAL,174000,INSTK
014016 000000 000000 000000 .WORD 0,0,0,0
014024 000000
014044 174000 014700' 014230' .WORD 174000,INSTAL,INSTK
014100 000005 .WORD 5
014102 000000G .WORD TTPEN
014104 000000 .WORD 0
014106 000000 .WORD 0
014110 000000 .WORD 0
014112 000000 .WORD 0
014114 000000 .WORD 0
014116 000000 .WORD 0
014120 000000 .WORD 0
014122 000000 .WORD 0
014124 000000 .WORD 0
014126 000000 .WORD 0
014230 000000 .WORD 0
014232 000000 .WORD 0
014234 000000 .WORD 0
014236 000000 .WORD 0
014240 000000 .WORD 0
014242 000000 .WORD 0
014244 014700' .WORD INSTAL
014246 174000 .WORD 174000
4800 ;
4801 014250 .BLKW 40
4802 014350 EXSP::
4803 ;
4804 ; LOCAL DATA
4805 ;
4806 014350 000 DXFLAG: .BYTE 0 ; +++002 SECOND DX: MOUNT FLAG
4807 014351 000 SYFLAG: .BYTE 0 ; +++002 SY: MOUNTED FLAG
4808 014352 RCVBLK: .BLKW 2 ;RECEIVE DATA BUFFER: TRASH
4809 014356 REQBLK: .BLKW 13. ;REQUEST BLOCK FROM EXEC
4810 014370' STDADR=REQBLK+12 ;ADDRESS OF OUR SYSTEM TASK DIRECTORY ENTRY
4811 014410 PUDADR: .BLKW 1 ;PUD ENTRY ADDRESS OF DEVICE WHERE TASK FILE WAS FOUND
4812 014412 LBLBLK: .BLKW 1 ;CURRENT VIRTUAL BLOCK NUMBER TO READ LABEL GROUP
4813 014414 LBLNUM: .BLKW 1 ;NUMBER OF BLOCKS IN LABEL GROUP
4814 014416 LBLBUF: .BLKW 1 ;ADDRESS OF LABEL BUFFER
4815 014420 LBLBFE: .BLKW 1 ;ADDRESS OF END OF BUFFER (LBLBUF)+512.
4816 014422 HDRBLK: .BLKW 1 ;CURRENT VIRTUAL BLOCK NUMBER TO READ HEADER
4817 014424 HDRBUF: .BLKW 1 ;ADDRESS OF HEADER BLOCK BUFFER
4818 014426 HDRBFE: .BLKW 1 ;ADDRESS OF END OF HEADER BUFFER
4819 014430 FILBLK: .BLKB S.DRFN ;FILE-NAME BLOCK FOR TASK IMAGE FILE
4820 014464 FILADR: .BLKW 2 ;STATISTISTICS BLOCK: DISK ADDRESS
4821 014470 QIOSTS: .BLKW 2 ;I/O STATUS
4822 014474 TYPBUF: .BLKB 100. ;BUFFER FOR CTY OUTPUT
4823 ;
4824 ; PURE DATA
4825 ;
4826 014640 367 ATCBLK: .BYTE -9. ;ATTIBUTE CONTROL: STATISTICS BLOCK, READ
4827 014641 004 .BYTE 4. ;4 BYTES OF INFO
4828 014642 014464' .WORD FILADR ;WHERE TO INFO TO
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 PAGE 62-1
TASK DATA
4829 014644 000 000 .BYTE 0,0 ;END OF ATTRIBUTE CONTROL BLOCK
4830 ;
4831 014646 001 MNTBLK: .BYTE 1 ;ACP CONTROL: MOUNT FUNCTION
4832 014647 001 .BYTE 1 ;STRING LENGTH: 1
4833 014650 014652' .WORD 1$ ;ADDRESS OF STRING
4834 014652 072 1$: .ASCII /:/
4835 .EVEN
4836 ;
4837 ; DEVICE CONVERSION TABLE
4838 ;
4839 014654 124 111 124 CNVTBL: .ASCII /TI//TT/
014657 124
4840 014660 103 117 124 .ASCII /CO//TT/
014663 124
4841 014664 103 111 124 .ASCII /CI//TT/
014667 124
4842 014670 103 114 114 .ASCII /CL//LP/
014673 120
4843 014674 000000 000000 .WORD 0,0
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 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 014700 INSTAL::
4865 014700 012706 014350' MOV #EXSP,SP ;;ADD EXTRA STACK SPACE
4866 014704 RCVX$S ,#RCVBLK ;;GET THE REQUEST OR EXIT IF NONE
014704 012746 014352' MOV #RCVBLK,-(SP)
014710 005046 CLR -(SP)
014712 005046 CLR -(SP)
014714 012746 MOV (PC)+,-(SP)
014716 023 004 .BYTE 19.,$$$T1
014720 104375 EMT 375
4867 014722 103766 BCS INSTAL ;OOPS-- TRY AGAIN
4868 ;
4869 014724 CALL CLRBUF ; AND NO BUFFERS ALLOCATED
014724 004737 016474' JSR PC,CLRBUF
4870 014730 105037 014350' CLRB DXFLAG ; +++002 RESET THE RX01 FLAG
4871 ;
4872 ; SETUP TO LOOK ON DEVICE SY FOR THE TASK FIRST
4873 ;
4874 014734 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 014740 012700 054523 MOV #"SY,R0 ; +++002 DEVICE NAME (U.DN) TO R0
4877 014744 005001 CLR R1 ; +++002 UNIT NUMBER (U.UN) TO R1
4878 ;
4879 014746 MNTSYD: ; +++002
4880 014746 ALUN$S #TSKLUN,R0,R1 ; +++002 ASSIGN DEVICE SY0 TO TASK LUN
014746 010146 MOV R1,-(SP)
014750 010046 MOV R0,-(SP)
014752 012746 000002 MOV #TSKLUN,-(SP)
014756 012746 MOV (PC)+,-(SP)
014760 007 004 .BYTE 7.,4
014762 104375 EMT 375
4881 014764 103557 BCS TASKNF ;NO DICE-- JUST TRY PUD SCAN
4882 ;
4883 014766 013704 000000G MOV .CRTSK,R4 ;GOT IT-- GET ADDRESS
4884 014772 016404 000000G MOV A.HA(R4),R4 ; OF OUR HEADER TO
4885 014776 016404 000136 MOV H.LUN+<4*<TSKLUN-1>>+0(R4),R4 ; FIND PUD ADDRESS OF SY
4886 015002 016404 000000G MOV U.RP(R4),R4 ; BUT GET THE REAL DEVICE PUD ENTRY
4887 015006 010437 014410' MOV R4,PUDADR ;SAVE THIS PUD ADDRESS IN CASE WE DO FIND THE TASK
4888 015012 005764 000000G TST U.VA(R4) ;IS SY MOUNTED?
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 PAGE 63-1
FIND THE TASK FILE
4889 015016 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 015020 012701 014356' MOV #RCVBLK+4,R1 ;GET A SCRATCH AREA
4899 015024 012741 MOV (PC)+,-(R1) ;STORE
4900 015026 003310 .RAD50 /ACP/ ; THE NAME OF AN ACP
4901 015030 016441 000000G MOV U.DACP(R4),-(R1) ; AND THE NAME OF THE ACP FOR THIS DEVICE
4902 015034 CALL ..FSTD ;FIND THE STD ENTRY ADDRESS OF THE ACP
015034 004737 000000G JSR PC,..FSTD
4903 015040 010264 000000G MOV R2,U.ACP(R4) ;STORE THE STD ADDRESS OF THE ACP
4904 ;
4905 015044 012700 014010 MOV #IO.APV,R0 ;SET TO DO PRIVILEGED ACP CONTROL
4906 015050 005001 CLR R1 ;NO FILE-ID
4907 015052 012702 014646' MOV #MNTBLK,R2 ;ACP CONTROL FUNCTION BLOCK TO MOUNT
4908 015056 005003 CLR R3 ;NO ACCESS
4909 015060 005004 CLR R4 ;NO FILE-NAME BLOCK
4910 015062 CALL FILQIO ;DO A MOUNT ON SY
015062 004737 016774' JSR PC,FILQIO
4911 015066 103005 BCC SYMNTD ;SUCCESS-- SAY WE DID THE MOUNT SO WE DON'T SCARE ANYBODY
4912 015070 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
015070 012746 000000' MOV #$$$,-(SP)
015074 004737 017054' JSR PC,TYPMSG
4913 015100 000511 BR TASKNF ;CERTAINLY NOT FOUND
4914 ;
4915 015102 SYMNTD:
4916 015102 013704 014410' MOV PUDADR,R4 ; +++002 PUD ADDRESS TO R4
4917 015106 016400 000000G MOV U.DN(R4),R0 ; +++002 DEVICE NAME TO R0
4918 015112 016401 000000G MOV U.UN(R4),R1 ; +++002 UNIT NUMBER TO R1
4919 015116 022700 054104 CMP #"DX,R0 ; +++002 DID WE TRY TO MOUNT A FLOPPY??
4920 015122 001011 BNE SYMNT1 ; +++002 NO -- GO ON
4921 015124 105737 014350' TSTB DXFLAG ; +++002 YES -- HAVE WE DONE BOTH??
4922 015130 001006 BNE SYMNT1 ; +++002 YES -- GO ON
4923 015132 105237 014350' INCB DXFLAG ; +++002 NO -- MARK SECOND TIME AROUND
4924 015136 005201 INC R1 ; +++002 SET UP FOR "OTHER" FLOPPY
4925 015140 042701 177776 BIC #^C1,R1 ; +++002 SO
4926 015144 000700 BR MNTSYD ; +++002 AND DO IT...
4927 ;
4928 015146 SYMNT1: ; +++002
4929 015146 105737 014351' TSTB SYFLAG ; +++002 SY: ALREADY MOUNTED??
4930 015152 001006 BNE FNDFIL ; +++002 YES -- GO ON
4931 015154 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 20:48 PAGE 63-2
FIND THE TASK FILE
015154 012746 000020' MOV #$$$,-(SP)
015160 004737 017054' JSR PC,TYPMSG
4932 015164 105237 014351' INCB SYFLAG ; +++002 MARK MOUNT DONE
4933 ;
4934 ; SET UP FILENAME BLOCK TO LOOK FOR [5,5] DIRECTORY IN MFD
4935 ;
4936 015170 FNDFIL:
4937 015170 012702 014436' MOV #FILBLK+N.FNAM,R2 ;POINT TO FILE-NAME BLOCK
4938 015174 012712 MOV (PC)+,(R2) ;SET FILENAME TO
4939 015176 140123 .RAD50 /005/ ; 005005
4940 015200 012222 MOV (R2)+,(R2)+ ; BOTH HALVES
4941 015202 005022 CLR (R2)+ ;ONLY SIX CHARS
4942 015204 012722 MOV (PC)+,(R2)+ ;SET TYPE TO DIRECTORY
4943 015206 015172 .RAD50 /DIR/ ; FILE
4944 015210 005022 CLR (R2)+ ;VERSION, DON'T CARE
4945 015212 005022 CLR (R2)+ ;NO FLAGS
4946 015214 005022 CLR (R2)+ ;UNKOWN STUFF
4947 015216 012712 177777 MOV #-1,(R2) ;DIRECTORY ID:
4948 015222 012222 MOV (R2)+,(R2)+ ; (-1,-1) IS MFD
4949 015224 012722 MOV (PC)+,(R2)+ ;ALSO SET OWNER TO US
4950 015226 005 005 .BYTE 5,5 ;THE UIC
4951 ;
4952 015230 CALL FILFNA ;LOOK UP DIRECTORY FOR [5,5]
015230 004737 016624' JSR PC,FILFNA
4953 015234 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 015236 012701 014356' MOV #REQBLK,R1 ;ADDRESS REQUEST BLOCK
4958 015242 012702 014436' MOV #FILBLK+N.FNAM,R2 ; AND FILE-NAME BLOCK FOR LOOKUP
4959 015246 021127 CMP (R1),(PC)+ ;IS THIS
4960 015250 131574 .RAD50 /.../ ; AN MCR FUNCTION TASK?
4961 015252 001004 BNE 20$ ;NO-- JUST LOOKUP THE TASK NAME
4962 015254 005721 TST (R1)+ ;YES-- SKIP THE DOTS
4963 015256 012122 MOV (R1)+,(R2)+ ;COPY THE LAST THREE CHARACTERS
4964 015260 005022 CLR (R2)+ ; AS THE WHOLE NAME
4965 015262 000402 BR 25$ ;PROCEED.
4966 ;
4967 015264 20$:
4968 015264 012122 MOV (R1)+,(R2)+ ;COPY TASK NAME
4969 015266 012122 MOV (R1)+,(R2)+ ; AS FILE NAME
4970 015270 25$:
4971 015270 005022 CLR (R2)+ ;ONLY SIX CHARACTERS
4972 015272 012722 MOV (PC)+,(R2)+ ;SET FILE TYPE
4973 015274 100003 .RAD50 /TSK/ ; TO A TASK FILE
4974 015276 005022 CLR (R2)+ ;NO VERSION CARE
4975 015300 005022 CLR (R2)+ ;NO FLAGS
4976 015302 005022 CLR (R2)+ ;NO NOTHING
4977 015304 012701 014430' MOV #FILBLK+N.FID,R1 ;POINT TO FILE-ID OF DIRECTORY
4978 015310 012122 MOV (R1)+,(R2)+ ;COPY FILE-ID
4979 015312 012122 MOV (R1)+,(R2)+ ; SEQ #
4980 015314 012122 MOV (R1)+,(R2)+ ; OWNER
4981 ;
4982 ; DO A FIND FILE IN DIRECTORY FUNCTION TO GET FILE ID
4983 ;
4984 015316 CALL FILFNA ;FIND THE TASK (IF IT'S THERE)
015316 004737 016624' JSR PC,FILFNA
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 PAGE 63-3
FIND THE TASK FILE
4985 015322 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 015324 TASKNF:
4991 015324 062705 000050 ADD #U.SZ,R5 ;BUMP TO NEXT PUD ENTRY
4992 015330 020527 000000G CMP R5,#.PUDEA ;ARE WE AT THE END OF THE PUD?
4993 015334 103027 BHIS TNFERR ;YES-- TASK NOT FOUND
4994 015336 026505 000000G CMP U.RP(R5),R5 ;THIS DEVICE REDIRECTED?
4995 015342 001370 BNE TASKNF ;YES-- WE WILL FIND THE REAL DEVICE
4996 015344 132765 000000G 000000G BITB #UF.TL,U.FB(R5) ;TASK LOADS ALLOWED FROM THIS DEVICE?
4997 015352 001764 BEQ TASKNF ;NO-- DON'T EVEN TRY
4998 015354 005765 000000G TST U.VA(R5) ;VOLUME MOUNTED?
4999 015360 001761 BEQ TASKNF ;NO-- DON'T TRY TO FIND FILE
5000 ;
5001 015362 ALUN$S #TSKLUN,U.DN(R5),U.UN(R5) ;YES-- ASSIGN TH CURRENT DEVICE TO US
015362 016546 000000G MOV U.UN(R5),-(SP)
015366 016546 000000G MOV U.DN(R5),-(SP)
015372 012746 000002 MOV #TSKLUN,-(SP)
015376 012746 MOV (PC)+,-(SP)
015400 007 004 .BYTE 7.,4
015402 104375 EMT 375
5002 015404 103747 BCS TASKNF ;THIS SHOULD REALLY NEVER HAPPN
5003 015406 010537 014410' MOV R5,PUDADR ;OK-- SAVE THIS PUD ADDRESS IN CASE WE FIND THE FILE
5004 015412 000666 BR FNDFIL ;OK-- GO LOOK FOR THE TASK FILE
5005 ;
5006 015414 TNFERR:
5007 015414 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
015414 012746 000033' MOV #$$$,-(SP)
015420 004737 017054' JSR PC,TYPMSG
5008 015424 000137 016330' JMP RETNOD ;GIVE UP
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 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 015430 000137 016314' FILERA: JMP FILERR ;OOPS
5015 ;
5016 ; ONE OF THE NODE/BUFFER REQUESTS FAILED-- GIVE ALL OF THEM BACK AND WAIT
5017 ;
5018 015434 BUFAIL: CALL RETBUF ;RETURN ALL BUFFERS
015434 004737 016440' JSR PC,RETBUF
5019 015440 WSIG$S ;WAIT FOR FREE
015440 012746 MOV (PC)+,-(SP)
015442 061 001 .BYTE 49.,1
015444 104375 EMT 375
5020 ;
5021 ; HERE WHEN A TASK FILE FOUND
5022 ;
5023 ; GET TWO BUFFERS FOR THE HEADER AND LABEL BLOCKS
5024 ;
5025 015446 012700 000000G TSKFND: MOV #.BGBUF,R0 ;POINT TO BIG FREE SPACE
5026 015452 012701 001000 MOV #512.,R1 ;SET TO GET A BLOCK
5027 015456 CALL ..ALC2 ;GET ONE
015456 004737 000000G JSR PC,..ALC2
5028 015462 103764 BCS BUFAIL ;FAILED-- RELEASE NODE AND WAIT
5029 015464 010037 014416' MOV R0,LBLBUF ;OK-- STORE THE ADDRESS FOR LABEL BLOCK BUFFER
5030 015470 060100 ADD R1,R0 ;GET END ADDRESS, TOO
5031 015472 010037 014420' MOV R0,LBLBFE ;SAVE THAT AS END OF BLOCK
5032 015476 012700 000000G MOV #.BGBUF,R0 ;POINT TO BIG FREE LIST HEAD
5033 ;
5034 015502 CALL ..ALC2 ;GET A HEADER BUFFER, TOO
015502 004737 000000G JSR PC,..ALC2
5035 015506 103752 BCS BUFAIL ;NONE-- GIVE IT ALL AWAY
5036 015510 010037 014424' MOV R0,HDRBUF ;GOT IT-- SAVE ADDRESS OF BLOCK
5037 015514 060100 ADD R1,R0 ;GET END, TOO
5038 015516 010037 014426' 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 015522 012700 007000 MOV #IO.ACW,R0 ;DO AN ACCESS FOR READ,WRITE
5043 015526 012701 014430' MOV #FILBLK+N.FID,R1 ;FILE BLOCK NOW HAS FILE-ID, SEQ# IN IT
5044 015532 012702 014640' MOV #ATCBLK,R2 ;ATTRRIBUTE CONTROL BLOCK TO GET DISK ADDR OF FILE
5045 015536 012703 MOV (PC)+,R3 ;ENABLE
5046 015540 000 200 .BYTE 0,AC.ENA ; ACCESS
5047 015542 005004 CLR R4 ;NO FILE-NAME BLOCK NOW
5048 015544 CALL FILQIO ;DO THE ACCESS
015544 004737 016774' JSR PC,FILQIO
5049 015550 103727 BCS FILERA ;NO DICE-- GIVE UP
5050 ;
5051 ; READ THE FIRST LABEL BLOCK AND THE FIRST BLOCK OF THE TASK HEADER
5052 ;
5053 015552 005037 014412' CLR LBLBLK ;START WITH BLOCK 0 (WILL BUMP TO VBN 1)
5054 015556 CALL REDLBL ;READ THE LABEL BLOCK
015556 004737 016722' JSR PC,REDLBL
5055 015562 103722 BCS FILERA ;ERROR-- REPORT IT
5056 ;
5057 015564 016137 000022 014422' MOV L$BHRB(R1),HDRBLK ;GET FIRST BLOCK OF HEADER
5058 015572 CALL REDHDR ;READ THE FIRST BLOCK OF THE HEADER
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 PAGE 64-1
INITIALIZE TASK FILE
015572 004737 016660' JSR PC,REDHDR
5059 015576 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 20:48 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 015600 013704 014370' SETSTD: MOV STDADR,R4 ;ADDRESS OUR NEW-FOUND STD
5069 ;
5070 015604 012703 014362' MOV #REQBLK+4,R3 ;POINT TO THE REQUEST INFO BLOCK
5071 015610 022424 CMP (R4)+,(R4)+ ;MOVE OVER NAME
5072 015612 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 015614 005713 TST (R3) ;PARTITION SPECIFIED IN REQUEST?
5078 015616 001001 BNE 20$ ;YES-- LOOK FOR THAT ONE
5079 015620 010103 MOV R1,R3 ;NO-- (L$BPAR) USE PARTITION FROM TASK FILE
5080 ;
5081 ; FIND THE PARTITION WHERE WE BELONG
5082 ;
5083 015622 022121 20$: CMP (R1)+,(R1)+ ;(L$BPAR+0) (L$BPAR+2) SKIP OVER PARTITION NAME IN LABEL
5084 015624 012705 000000G MOV #.TPDBA,R5 ;START AT BEGINNING OF THE TASK PARTITION DIRECTORY
5085 ;
5086 015630 026513 000000G 21$: CMP T.PN+0(R5),(R3) ;FIRST HALF OF NAME MATCH?
5087 015634 001004 BNE 25$ ;NO-- GO ON TO NEXT ENTRY
5088 015636 026563 000002G 000002 CMP T.PN+2(R5),2(R3) ;YES-- SECOND HALF MATCH?
5089 015644 001432 BEQ PARFND ;YES-- WE FOUND THE PARTITION
5090 ;
5091 015646 062705 000000G 25$: ADD #T.SZ,R5 ;NO-- BUMP TO NEXT ENTRY IN TPD
5092 015652 020527 000000G CMP R5,#.TPDEA ;ARE WE AT THE END OF THE DIRECTORY?
5093 015656 103764 BLO 21$ ;NO-- KEEP LOOKING FOR OUR PARTITION
5094 015660 010324 MOV R3,(R4)+ ;YES-- PARTITION NOT FOUND-- SAVE ADDR OF NAME FOR ERR
5095 015662 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
015662 012746 000052' MOV #$$$,-(SP)
015666 004737 017054' JSR PC,TYPMSG
015672 000416 BR CLSFIL
5096 ;
5098 015674 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
015674 012746 000076' MOV #$$$,-(SP)
015700 004737 017054' JSR PC,TYPMSG
015704 000411 BR CLSFIL
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 PAGE 65-1
SETUP STD ENTRY
5100 ;
5101 015706 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
015706 012746 000125' MOV #$$$,-(SP)
015712 004737 017054' JSR PC,TYPMSG
015716 000404 BR CLSFIL
5102 ;
5103 015720 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
015720 012746 000142' MOV #$$$,-(SP)
015724 004737 017054' JSR PC,TYPMSG
5104 ;
5105 015730 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 015732 010524 PARFND: MOV R5,(R4)+ ;(S.TD) SET ADDRESS OF TPD ENTRY
5110 ;
5111 015734 022121 CMP (R1)+,(R1)+ ;(L$BFLG) SKIP TASK FLAGS
5112 015736 005724 TST (R4)+ ;(S.TF) FLAG TASK TO RETSTE ON EXIT
5113 ;
5114 015740 112724 000062 MOVB #DEFPRI,(R4)+ ;NONE-- USE DEFAULT
5115 ;
5116 015744 013700 014410' MOV PUDADR,R0 ;GET THE ADDRESS WHERE WE FOUND OUR FILE
5117 015750 012703 177777 MOV #-1,R3 ;START THE COUNT AT ZERO
5118 015754 162700 000000G SUB #.PUDBA,R0 ;MAKE R0 INDEX INTO PUD
5119 015760 005203 30$: INC R3 ;BUMP THE INDEX
5120 015762 162700 000050 SUB #U.SZ,R0 ;DIVIDE PUD ADDRESS
5121 015766 002374 BGE 30$ ; BY THE ENTRY SIZE
5122 015770 110324 MOVB R3,(R4)+ ;(S.DI) SYSTEM DISK INDICATOR
5123 ;
5124 015772 016524 000000G MOV T.BA(R5),(R4)+ ;(S.BA) BASE ADDRESS OF TASK (NO KT-11)
5128 015776 012114 MOV (R1)+,(R4) ;(L$BLDZ) (S.LZ) LOAD SIZE OF TASK
5129 016000 006314 ASL (R4) ;MAKE IT REAL ADDRESS (*64)
5130 016002 006314 ASL (R4) ; . .
5131 016004 006314 ASL (R4) ; . .
5132 016006 006314 ASL (R4) ; . .
5133 016010 006314 ASL (R4) ; . .
5134 016012 006324 ASL (R4)+ ; . .
5136 016014 012114 MOV (R1)+,(R4) ;(L$BMXZ) (S.MZ) MAXIMUM SIZE OF TASK
5138 016016 006314 ASL (R4) ;MAKE REAL ADDRESS (*64)
5139 016020 006314 ASL (R4) ; . .
5140 016022 006314 ASL (R4) ; . .
5141 016024 006314 ASL (R4) ; . .
5142 016026 006314 ASL (R4) ; . .
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 PAGE 65-2
SETUP STD ENTRY
5143 016030 006314 ASL (R4) ; . .
5145 016032 026524 000000G CMP T.PZ(R5),(R4)+ ;WILL TASK FIT IN PARTITION SPECIFIED?
5146 016036 103723 BLO TTBERR ;NO-- DON'T TRY TO INSTALL IT
5148 016040 026521 000000G CMP T.BA(R5),(R1)+ ;(L$BSA) IS TASK ADDRESS SAME AS PARTITION ADDRESS?
5149 016044 001313 BNE IPAERR ;NO-- DON'T INSTALL IT
5153 ;
5154 016046 016224 000076 MOV H.IPC(R2),(R4)+ ;(S.PC) SET INTIAL PC FROM HEADER
5155 016052 016224 000100 MOV H.ISP(R2),(R4)+ ;(S.SP) ALSO INITIAL SP
5156 016056 022424 CMP (R4)+,(R4)+ ;MOVE OVER SEND/REQUEST LISTHEAD
5157 016060 005024 CLR (R4)+ ;(S.SS) SST VECTOR TABLE ADDRESS
5158 ;
5159 016062 013714 014464' MOV FILADR+0,(R4) ;(S.DL+0) DISK ADDRESS OF TASK IMAGE
5160 016066 012400 MOV (R4)+,R0 ;COPY IT IN CASE IT'S ZERO
5161 016070 013714 014466' MOV FILADR+2,(R4) ;(S.DL+2) SECOND HALF OF DISK ADDRESS
5162 016074 051400 BIS (R4),R0 ;WERE BOTH WORDS ZERO?
5163 016076 001710 BEQ TNCERR ;YES-- TASK FILE IS NOT CONTIGUOUS
5164 016100 062114 ADD (R1)+,(R4) ;(L$BHRB) + RELATIVE BLOCK IN FILE= REAL ADDRESS
5165 016102 005544 ADC -(R4) ;ADD THE CARRY BACK TO HIGH ORDER WORD
5166 ;
5167 016104 012137 014414' 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 20:48 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 016110 062702 000130 SETLUN: ADD #H.NLUN,R2 ;POINT TO # LUNS, AND LUN TABLE IN HEADER
5176 016114 012205 MOV (R2)+,R5 ;(H.NLUN) GET # LUNS TO SET UP, POINT TO LUN TABLE IN HEADER
5177 016116 001471 BEQ 80$ ;NONE-- JUST CLOSE FILE
5178 016120 013701 014420' 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 016124 10$: CALL NXTHDR ;GO ON TO NEXT BLOCK?
016124 004737 016644' JSR PC,NXTHDR
5183 016130 103471 BCS FILERR ;FAILED
5184 ;
5185 ; SEE IF WE NEED TO READ ANOTHER LABEL BLOCK
5186 ;
5187 016132 020137 014420' 20$: CMP R1,LBLBFE ;HAVE WE FINISHED THIS LABEL BLOCK?
5188 016136 103410 BLO 30$ ;NO-- JUST GET ANOTHER ENTRY FROM IT
5189 016140 005004 CLR R4 ;YES-- ASSUME NO MORE TO DO
5190 016142 023737 014412' 014414' CMP LBLBLK,LBLNUM ;HAVE WE RUN OUT OF LABEL BLOCKS?
5191 016150 002043 BGE 60$ ;YES-- READ NO MORE-- JUST ZERO
5192 016152 CALL REDLBL ;YES-- READ NEXT ONE
016152 004737 016722' JSR PC,REDLBL
5193 016156 103456 BCS FILERR ;SPLAT
5194 ;
5195 ; FIND THE PUD ADDRESS OF THE DEVICE FROM THE LABEL BLOCK
5196 ;
5197 016160 005711 30$: TST (R1) ;IS THIS A ZERO ENTRY?
5198 016162 001434 BEQ 40$ ;YES-- JUST STORE ZERO
5199 016164 013704 014410' MOV PUDADR,R4 ;ASSUME DEVICE OV
5200 016170 022711 053117 CMP #"OV,(R1) ;THIS OVERLAY DEVICE?
5201 016174 001430 BEQ 50$ ;YES-- WE HAVE PUD ADDRESS
5202 ;
5203 016176 012704 000000G 31$: MOV #.PUDBA,R4 ;NO-- START SEARCHING THROUGH THE PUD
5204 ;
5205 016202 021164 000000G 33$: CMP (R1),U.DN(R4) ;THIS OUR DEVICE?
5206 016206 001004 BNE 35$ ;NO-- TRY ANOTHER ONE
5207 016210 126164 000002 000000G CMPB 2(R1),U.UN(R4) ;YES-- RIGHT UNIT #
5208 016216 001417 BEQ 50$ ;YES-- WE HAVE PUD ADDRESS IN R4
5209 ;
5210 016220 062704 000050 35$: ADD #U.SZ,R4 ;NO-- BUMP TO NEXT PUD ENTRY
5211 016224 020427 000000G CMP R4,#.PUDEA ;END OF PUD YET?
5212 016230 103764 BLO 33$ ;NO-- LOOK AT THIS ENTRY
5213 ;
5214 016232 012704 014654' MOV #CNVTBL,R4 ;ENTRY NOT FOUND-- SEE IF CONVERTIBLE DEVICE
5215 ;
5216 016236 022411 37$: CMP (R4)+,(R1) ;DEVICE MATCH?
5217 016240 001403 BEQ 38$ ;YES-- GET THE CONVERTED NAME AND GO AWAY
5218 016242 005724 TST (R4)+ ;NO-- IS THIS END OF TABLE?
5219 016244 001374 BNE 37$ ;NO-- KEEP ON LOOKING
5220 016246 000402 BR 40$ ;YES-- DEVICE NOT FOUND-- STORE 0
5221 ;
5222 016250 011411 38$: MOV (R4),(R1) ;DEVICE FOUND IN CONVERSION TABLE--
5223 016252 000751 BR 31$ ; SAVE AS NEW DEVICE AND SCAN PUD FOR IT
5224 ;
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 PAGE 66-1
SETUP LOGICAL UNIT TABLE FOR TASK
5225 016254 005004 40$: CLR R4 ;ENTRY NOT FOUND-- CLEAR THE PUD ADDRESS
5226 ;
5227 016256 022121 50$: CMP (R1)+,(R1)+ ;SKIP OVER ENTRY IN LABEL BLOCK
5228 ;
5229 016260 010422 60$: MOV R4,(R2)+ ;STORE THE PUD ADDRESS IN LUT IN HEADER
5230 016262 CALL NXTHDR ;SEE IF WE NEED ANOTHER HEADER BLOCK
016262 004737 016644' JSR PC,NXTHDR
5231 016266 103412 BCS FILERR ;I/O ERROR-- GIVE UP
5232 016270 005022 CLR (R2)+ ;CLEAR SECOND WORD OF HEADER ENTRY
5233 ;
5234 016272 077564 SOB R5,10$ ;LOOP FOR ALL LUNS IN HEADER
5235 016274 CALL WRTHDR ;WRITE OTU THE LAST HEADER BLOCK
016274 004737 016672' JSR PC,WRTHDR
5236 016300 103405 BCS FILERR ;FAILED
5237 ;
5238 ; ALL DONE WITH THE TASK FILE-- CLOSE IT UP
5239 ;
5240 016302 80$: CALL RETBUF ;RETURN THE BUFFERS
016302 004737 016440' JSR PC,RETBUF
5241 016306 CALL FILCLS ;CLOSE THE FILE
016306 004737 016762' JSR PC,FILCLS
5242 016312 103075 BCC REQTSK ;OK-- GO PUT US IN THE STD
5243 ;
5244 ; ALL FILE I/O ERRORS END UP HERE
5245 ;
5246 016314 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
016314 012746 000173' MOV #$$$,-(SP)
016320 004737 017054' JSR PC,TYPMSG
5247 016324 FILERX: CALL FILCLS ;GIVE CLOSE A TRY
016324 004737 016762' JSR PC,FILCLS
5248 ;
5249 016330 012746 016620' RETNOD: MOV #ALLDON,-(SP) ;RETURN ALL BUFFERS AND STD NODE
5250 016334 .INH0 ;;OTHER ERROR-- MUST REMOVE TASK FROM THE STD
016334 013746 177776 MOV @#PS,-(SP)
016340 112737 000140 177776 MOVB #140,@#PS
5251 016346 012701 014356' MOV #REQBLK,R1 ;FIND THE STD OF THIS TASK
5252 016352 CALL ..FSTD
016352 004737 000000G JSR PC,..FSTD
5253 016356 001015 BNE 60$ ;CAN'T FIND IT?????
5254 016360 162737 000002 000000G SUB #2,.STDTZ ;;ONE LESS ENTRY IN THE STD NOW
5255 016366 013705 000000G MOV .STDTZ,R5 ;; SO GET NEW LENGTH
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 PAGE 66-2
SETUP LOGICAL UNIT TABLE FOR TASK
5256 016372 063705 000000G ADD .STDTA,R5 ;;MAKE ADDRESS OF LAST ENTRY IN THE TABLE
5257 016376 005743 TST -(R3) ;;BACK UP THE POINTER
5258 ;
5259 016400 020305 50$: CMP R3,R5 ;;AT END OF TABLE YET?
5260 016402 101003 BHI 60$ ;;YES-- ALL DONE
5261 016404 016323 000002 MOV 2(R3),(R3)+ ;;NO-- MOVE ANOTHER ENTRY DOWN
5262 016410 000773 BR 50$ ;;LOOP TO MOVE WHOLE TABLE DOWN
5263 ;
5264 016412 60$: .ENB0 ;;RESTORE TASK SWITCHING
016412 004737 000000G JSR PC,..ENB0
5265 ;
5266 ; RETALL -- RETURN ALL BUFFERS AND STD NODE
5267 ;
5268 016416 013701 014370' RETALL: MOV STDADR,R1 ;GET THE STD ADDRESS
5269 016422 001406 BEQ RETBUF ;NONE-- JUST RETURN THE BUFFERS
5270 016424 012704 000000G MOV #.POLLH,R4 ;ADD IT TO THE FREE POOL
5271 016430 CALL ..NADD ;PUT IT BACK
016430 004737 000000G JSR PC,..NADD
5272 016434 005037 014370' CLR STDADR ;NO MORE STD NODE
5273 ;
5274 016440 012701 001000 RETBUF: MOV #512.,R1 ;SET TO RETURN A BLOCK
5275 016444 012703 000000G MOV #.BGBUF,R3 ; TO THE BIG BUFFER LIST HEAD
5276 016450 013700 014416' MOV LBLBUF,R0 ;GET ADDRESS OF LABEL BLOCK BUFFER
5277 016454 001402 BEQ 20$ ;NONE-- TRY HEADER BUFFER
5278 016456 CALL ..DEC2 ;DE-ALLOCATE THE BUFFER
016456 004737 000000G JSR PC,..DEC2
5279 ;
5280 016462 013700 014424' 20$: MOV HDRBUF,R0 ;ALSO THE HEADER BUFFER
5281 016466 001402 BEQ CLRBUF ;NONE-- JUST CLEAN UP
5282 016470 CALL ..DEC2 ;DE-ALLOCATE THE HEADER BUFFER
016470 004737 000000G JSR PC,..DEC2
5283 ;
5284 016474 005037 014416' CLRBUF: CLR LBLBUF ;NO MORE LABEL BUFFER
5285 016500 005037 014424' CLR HDRBUF ; OR HEADER BUFFER
5286 016504 RETURN ;THAT'S IT
016504 000207 RTS PC
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 PAGE 67
RE-REQUEST TASK
5288 .SBTTL RE-REQUEST TASK
5289 ;
5290 ; TASK REQUEST BLOCK IS STILL SET UP FROM CALL
5291 ;
5292 016506 REQTSK: .INH0 ;INHIBIT TASK SWITCHING
016506 013746 177776 MOV @#PS,-(SP)
016512 112737 000140 177776 MOVB #140,@#PS
5293 016520 013704 014370' MOV STDADR,R4 ;FIND STD ADDRESS
5294 016524 042764 040001 000000G BIC #SF.TA!SF.IR,S.FW(R4) ;CLEAR ACTIVE BIT SO IT CAN BE REQUESTED
5295 016532 012700 014356' MOV #REQBLK,R0
5296 016536 RQST$S R0,,REQBLK+10 ;RE-REQUEST TASK
016536 005046 CLR -(SP)
016540 013746 014366' MOV REQBLK+10,-(SP)
016544 005046 CLR -(SP)
016546 005046 CLR -(SP)
016550 016046 000002 MOV 2(R0),-(SP)
016554 011046 MOV (R0),-(SP)
016556 012746 MOV (PC)+,-(SP)
016560 013 007 .BYTE 11.,7
016562 104375 EMT 375
5297 016564 .ENB0 ;ENABLE TASK SWITCHING
016564 004737 000000G JSR PC,..ENB0
5298 016570 005737 000000G TST $DSW ;SUCCESS/FAILURE?
5299 016574 100011 BPL ALLDON ;SUCCESS -- ALL OK
5300 ;
5301 ; REQUEST FAILED-- IF TASK ALREADY ACTIVE, THAT'S OK
5302 ;
5303 016576 023727 000000G 177771 CMP $DSW,#IE.ACT ;TASK ALREADY ACTIVE?
5304 016604 001405 BEQ ALLDON ;YES-- WE ARE HAPPY
5305 ;
5306 016606 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
016606 012746 000251' MOV #$$$,-(SP)
016612 004737 017054' JSR PC,TYPMSG
016616 000644 BR RETNOD
5307 ;
5308 ; ALL DONE-- GO BACK TO WAITING
5309 ;
5310 016620 000137 014700' ALLDON: JMP INSTAL ;RETURN AND EXIT IF NO MORE TO DO
5311 ;
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 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 016624 012700 004400 FILFNA: MOV #IO.FNA,R0 ;DO A FIND FILE IN DIRECTORY
5319 016630 005001 CLR R1 ;NO FILE-ID
5320 016632 005002 CLR R2 ;NO ATTRIBUTES
5321 016634 005003 CLR R3 ;NO ACCESS
5322 016636 012704 014430' MOV #FILBLK,R4 ;SET TO DO IT TO THE RIGHT FILE
5323 016642 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 016644 023702 014426' NXTHDR: CMP HDRBFE,R2 ;END OF HEADER BUFFER?
5330 016650 101023 BHI RETXXX ;NO-- JUST RETURN
5331 016652 CALL WRTHDR ;YES-- WRITE OUT OLD HEADER
016652 004737 016672' JSR PC,WRTHDR
5332 016656 103420 BCS RETXXX ;ERROR-- RETURN WITH IT
5333 ; BR REDHDR ;READ THE NEXT ONE
5334 ;
5335 ; REDHDR -- READ NEXT HEADER BLOBK
5336 ;
5337 016660 005237 014422' REDHDR: INC HDRBLK ;BUMP TO NEXT BLOCK OF HEADER
5338 016664 012700 010400 MOV #IO.RVB,R0 ;DO A READ
5339 016670 000402 BR RWRHDR ;DO IT TO HEADER BLOCK
5340 ;
5341 ; WRTHDR -- WRITE CURRENT HEADER BLOCK
5342 ;
5343 016672 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 016676 RWRHDR: PUSH R1 ;SAVE THE LABEL POINTER
016676 010146 MOV R1,-(SP)
5350 016700 013701 014424' MOV HDRBUF,R1 ;POINT TO HEADER BUFFER
5351 016704 013703 014422' MOV HDRBLK,R3 ;SET PROPER VBN
5352 016710 CALL RWRBLK ;DO A BLOCK
016710 004737 016754' JSR PC,RWRBLK
5353 016714 010102 MOV R1,R2 ;POINT R2 TO HDR BUFFER
5354 016716 POP R1 ;RESTORE LABEL POINTER
016716 012601 MOV (SP)+,R1
5355 016720 RETXXX: RETURN ;WITH CC-C SET/CLEAR BY RWRBLK
016720 000207 RTS PC
5356 ;
5357 ; REDLBL -- READ NEXT LABEL BLOCK
5358 ;
5359 016722 REDLBL: PUSH R2 ;SAVE THE HEADER POINTER
016722 010246 MOV R2,-(SP)
5360 016724 012700 010400 MOV #IO.RVB,R0 ;DO A READ
5361 016730 013701 014416' MOV LBLBUF,R1 ; TO THE LABEL BUFFER
5362 016734 005237 014412' INC LBLBLK ;BUMP TO NEXT LABEL BLOCK
5363 016740 013703 014412' MOV LBLBLK,R3 ; AND SAVE AS VBN TO READ
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 PAGE 68-1
TASK FILE I/O ROUTINES
5364 016744 CALL RWRBLK ;READ THE BLOCK
016744 004737 016754' JSR PC,RWRBLK
5365 016750 POP R2 ;RESTORE THE HEADER POINTER
016750 012602 MOV (SP)+,R2
5366 016752 RETURN ;CC-C SET/CLEAR BY RWRBLK, R1 POINTS TO LBL BUFFER
016752 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 016754 012702 001000 RWRBLK: MOV #512.,R2 ;SET TO READ ONE BLOCK
5374 016760 000405 BR FILQIO ;DO IT TO TASK FILE
5375 ;
5376 ; FILCLS -- DE-ACCESS THE TASK FILE
5377 ;
5378 016762 012700 010000 FILCLS: MOV #IO.DAC,R0 ;DE-ACCESS FUNCTION
5379 016766 005001 CLR R1 ;NO FILE-ID BLOCK
5380 016770 005002 CLR R2 ;NO ATTRIBUTES ALLOWED
5381 016772 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 016774 FILQIO: QIOW$S R0,#TSKLUN,#E.FQIO,,#QIOSTS,,<R1,R2,,,R3,R4>
016774 010446 MOV R4,-(SP)
016776 010346 MOV R3,-(SP)
017000 005046 CLR -(SP)
017002 005046 CLR -(SP)
017004 010246 MOV R2,-(SP)
017006 010146 MOV R1,-(SP)
017010 005046 CLR -(SP)
017012 012746 014470' MOV #QIOSTS,-(SP)
017016 005046 CLR -(SP)
017020 112716 000001 MOVB #E.FQIO,(SP)
017024 012746 000002 MOV #TSKLUN,-(SP)
017030 010046 MOV R0,-(SP)
017032 012746 MOV (PC)+,-(SP)
017034 003 014 .BYTE 3,$$$T1
017036 104375 EMT 375
5394 017040 103404 BCS 90$ ;GIVE UP
5395 ;
5396 017042 105737 014470' 30$: TSTB QIOSTS+0 ;I/O SUCCESSFUL?
5397 017046 002001 BGE 90$ ;YES-- JUST RETURN WITH CC-C CLEAR
5398 ;
5399 017050 000261 80$: SEC ;NO-- RETURN ERROR
5400 017052 90$: RETURN ;RETURN FROM FILQIO
017052 000207 RTS PC
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 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 017054 TYPMSG: PUSH <R0,R1,R2,R3,R4> ;SAVE USED REGISTERS
017054 010046 MOV R0,-(SP)
017056 010146 MOV R1,-(SP)
017060 010246 MOV R2,-(SP)
017062 010346 MOV R3,-(SP)
017064 010446 MOV R4,-(SP)
5410 017066 012704 014474' MOV #TYPBUF,R4 ;SET ADDRESS OF TYPEOUT BUFFER
5411 017072 012703 017364' MOV #INSMSG,R3 ;GET 'INS --'
5412 017076 CALL PUTSTR ;PUT IT IN STRING
017076 004737 017256' JSR PC,PUTSTR
5413 017102 016603 000014 MOV 14(SP),R3 ;GET ADDRESS OF THE TEXT TO TYPE
5414 017106 CALL PUTSTR ;TYPE IT
017106 004737 017256' JSR PC,PUTSTR
5415 017112 012703 017376' MOV #TSKMSG,R3 ;GET 'TSK= '
5416 017116 CALL PUTSTR ;PUT IT TOO
017116 004737 017256' JSR PC,PUTSTR
5417 017122 012703 014356' MOV #REQBLK,R3 ;POINT TO .RAD50 /TASK-NAME/
5418 017126 CALL PUTR50 ;PUT IT IN THERE, TOO
017126 004737 017266' JSR PC,PUTR50
5419 017132 013702 014370' MOV STDADR,R2 ;GET THE ADDRESS OF THE STD
5420 017136 016202 000000G MOV S.TD(R2),R2 ;GET ADDRESS OF .RAD50/PARTITION/
5421 017142 001407 BEQ 20$ ;NONE-- SKIP THIS
5422 017144 012703 017405' MOV #PARMSG,R3 ;SAY 'PAR= '
5423 017150 CALL PUTSTR ; . .
017150 004737 017256' JSR PC,PUTSTR
5424 017154 010203 MOV R2,R3 ;GET THE NAME ADDRESS
5425 017156 CALL PUTR50 ;PUT IT IN STRING
017156 004737 017266' JSR PC,PUTR50
5426 ;
5427 017162 112724 000012 20$: MOVB #12,(R4)+ ;STORE LF
5428 017166 112724 000015 MOVB #15,(R4)+ ;STORE CR
5429 017172 012700 014474' MOV #TYPBUF,R0 ;GET ADDRESS OF BUFFER BACK
5430 017176 160004 SUB R0,R4 ;COMPUTE LENGTH OF STRING
5431 017200 QIOW$S #IO.WLB,#CTYLUN,#E.FQIO,,,,<R0,R4,#40>
017200 012746 000040 MOV #40,-(SP)
017204 010446 MOV R4,-(SP)
017206 010046 MOV R0,-(SP)
017210 005046 CLR -(SP)
017212 005046 CLR -(SP)
017214 005046 CLR -(SP)
017216 112716 000001 MOVB #E.FQIO,(SP)
017222 012746 000001 MOV #CTYLUN,-(SP)
017226 012746 000400 MOV #IO.WLB,-(SP)
017232 012746 MOV (PC)+,-(SP)
017234 003 011 .BYTE 3,$$$T1
017236 104375 EMT 375
5432 017240 POP <R4,R3,R2,R1,R0> ;RESTORE THE REGISTERS
017240 012604 MOV (SP)+,R4
017242 012603 MOV (SP)+,R3
017244 012602 MOV (SP)+,R2
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 PAGE 69-1
ERROR PROCESSING
017246 012601 MOV (SP)+,R1
017250 012600 MOV (SP)+,R0
5433 017252 POP (SP) ;RESTORE PC OVER MESSAGE ADDRESS
017252 012616 MOV (SP)+,(SP)
5434 017254 RETURN ;THAT'S IT FOR TYPMSG
017254 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 017256 112324 PUTSTR: MOVB (R3)+,(R4)+ ;COPY A CHARACTER
5441 017260 001376 BNE PUTSTR ; UNTIL ASCIZ
5442 017262 105744 TSTB -(R4) ;BACK OVER ZERO BYTE
5443 017264 RETURN ;RETURN FROM PUTSTR
017264 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 017266 012300 PUTR50: MOV (R3)+,R0 ;GET FIRST 3 CHARS
5450 017270 CALL PUTR51 ;TYPE 'EM
017270 004737 017276' JSR PC,PUTR51
5451 017274 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 017276 012702 017340' PUTR51: MOV #T50TBL,R2 ;POINT TO TABLE OF DIVISORS
5459 ;
5460 017302 012201 20$: MOV (R2)+,R1 ;GET NEXT DIVISOR
5461 017304 001414 BEQ 90$ ;THREE HAVE BEEN DONE-- RETURN
5462 017306 CALL $DIV ;DIVIDE CURRENT TEXT BY 50**N
017306 004737 000032' JSR PC,$DIV
5463 017312 PUSH R1 ;SAVE THE REMAINDER
017312 010146 MOV R1,-(SP)
5464 017314 012701 017350' MOV #R50TBL,R1 ;POINT TO CONVERSION TABLE
5465 ;
5466 017320 061100 30$: ADD (R1),R0 ;CONVERT THE CHARACTER
5467 017322 105721 TSTB (R1)+ ;SKIP THE BYTE
5468 017324 120021 CMPB R0,(R1)+ ;HAVE WE FOUND THE CHAR YET?
5469 017326 103774 BLO 30$ ;NO-- LOOP UNTIL WE DO
5470 ;
5471 017330 110024 MOVB R0,(R4)+ ;YES-- SAVE THE CHAR IN TEXT
5472 017332 POP R0 ;RESTORE LAST REMAINDER AS NEW DIVIDEND
017332 012600 MOV (SP)+,R0
5473 017334 000762 BR 20$ ;GET ANOTHER CHARACTER
5474 ;
5475 017336 90$: RETURN ;FROM PUTR50/PUTR51
017336 000207 RTS PC
5476 ;
5477 017340 003100 000050 000001 T50TBL: .WORD 50*50,50,1,0 ;TABLE OF DIVISORS
017346 000000
5478 ;
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 PAGE 69-2
ERROR PROCESSING
5479 017350 022 060 R50TBL: .BYTE <'0-36>-<50-50>,'0 ;36-47: 0-9
5480 017352 366 045 .BYTE <'%-35>-<'0-36>,'% ;35 : %
5481 017354 012 056 .BYTE <'.-34>-<'%-35>,'. ;34 : .
5482 017356 367 044 .BYTE <'$-33>-<'.-34>,'$ ;33 : $
5483 017360 067 101 .BYTE <'A-01>-<'$-33>,'A ;01-32: A-Z
5484 017362 340 040 .BYTE <' -00>-<'A-01>,' ;00 : <SPACE>
5485 .EVEN
5486 ;
5487 017364 015 012 111 INSMSG: .ASCIZ <15><12>/INS -- /
017367 116 123 040
017372 055 055 040
017375 000
5488 017376 040 040 124 TSKMSG: .ASCIZ / TSK=/
017401 123 113 075
017404 000
5489 017405 040 120 101 PARMSG: .ASCIZ / PAR=/
017410 122 075 000
5490 .EVEN
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 PAGE 70
END STATEMENT
5492 .SBTTL END STATEMENT
5493 000001 .END
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 PAGE 70-1
SYMBOL TABLE
AC.ENA= 000200 CDSIEN= 000100 DBIOD 000370R DR.DTE= 000011 EF.CRD= 000002
ADRSAV= ****** GX CDSNXM= 001000 DCK = 100000 DSEND = 000004 EF.CRS= 000004
ALLDON 016620R CDSOFL= 010000 DCOMST= 000001 DS04 = 004000 EF.IOD= ****** GX
AOE = 001000 CDSPAK= 000002 DD.CHI= 000002 DS05 = 002000 EF.LPC= 000002
ATCBLK 014640R CDSPWC= 000400 DD.HEM= 000010 DS06 = 001000 EF.LPD= 000001
A.EF = 000020 CDSRCK= 040000 DD.LER= 000010 DTBUF = ****** GX EF.LPQ= 000004
A.HA = ****** GX CDSRDY= 000200 DD.OVF= 000020 DTCNT = ****** GX EF.LPS= 000020
BCFHDS 011142R CDSRED= 000001 DD.PCK= 000002 DTCW2 = ****** GX EF.LPW= 000040
BCFILF 011076R CDST = ****** GX DD.PGZ= 000001 DTCW3 = ****** GX EF.NIR= ****** GX
BCFLDR 011162R CDSTOL= 000010 DD.RCK= 000001 DTE = 010000 EF.QIO= 000001
BCFLDV 011170R CHNPNT= 000001 DD.RME= 000040 DTECMD= 000451 EF.SEP= 100000
BCFRDS 011076R CHRINT= 020000 DD.SCK= 000004 DTEFLG= 000444 EF.TEF= 000400
BCFSDO 011122R CLIOD 000374R DD.SFL= 000020 DTEF11= 000450 EPTR = 000000
BCFSTR 011204R CLRBUF 016474R DD.VFE= 000004 DTEMTD= 000455 ERMHER 007767R
BCFTAB 011060R CLSFIL 015730R DEFPRI= 000062 DTEMTI= 000456 ERMHNG 010004R
BC.HDS= ****** GX CNUPE = 000002 DELHLD= 002000 DTEXP = 177340 ERMNXD 007715R
BC.LDR= ****** GX CNVTBL 014654R DEMTIM= 000002 DTHD 002056RG ERMOFL 007735R
BC.LDV= ****** GX CPE = 000010 DEP = 010000 DTINI 002442R ERMVFE 007750R
BC.RDS= ****** GX CPUNUM= 000002 DEX = 000400 DTNRM 002366R ERR = 100000
BC.SDS= ****** GX CRBFLN= ****** GX DEXDON= 000004 DTOUT 002606R ERR10C= 010000
BC.STR= ****** GX CRBUFF= ****** GX DEXWD1= 174406 DTRTC = ****** GX ERR10S= 020000
BIT0 = 000001 CRCEVF= ****** GX DEXWD2= 174404 DTSTK 002336RG ERR11C= 000001
BIT1 = 000002 CRDCLR 013556R DEXWD3= 174402 DTTSK = ****** GX ERR11S= 000002
BIT10 = 002000 CRDINT 013026R DFUNC = 000200 DUNS 000460R EXSP 014350RG
BIT11 = 004000 CREVFG= ****** GX DF.DMG= 000004 DUPE = 000020 E.FCRB= 000004
BIT12 = 010000 CREXP = ****** GX DF.DMN= 000007 DURE = 000004 E.FCRC= 000001
BIT13 = 020000 CRHD 011776RG DF.DOR= 000001 DVA = 004000 E.FCRD= 000002
BIT14 = 040000 CRHUNG= ****** GX DF.EHG= 000010 DV.EOF= 000040 E.FCRS= 000003
BIT15 = 100000 CRINI 012360R DF.EHM= 000011 DV.F11= 000400 E.FLPC= 000002
BIT2 = 000004 CRIOD 012532R DF.EMG= 000005 DV.HNG= 001000 E.FLPD= 000001
BIT3 = 000010 CRLOOP 012444R DF.EMN= 000006 DV.IOP= 000020 E.FLPQ= 000003
BIT4 = 000020 CRMKT 012776R DF.KLR= 000012 DV.LOG= 000100 E.FLPS= 000005
BIT5 = 000040 CRMRKT 012276R DF.KLW= 000013 DV.NXD= 000001 E.FLPW= 000006
BIT6 = 000100 CRPWUP 012352R DF.KLX= 000014 DV.OFL= 000002 E.FQIO= 000001
BIT7 = 000200 CRSSTV 012310R DF.OFF= 000002 DV.OIR= 000004 E.IOD = ****** GX
BIT8 = 000400 CRSTBK= ****** GX DF.ON = 000003 DV.SCN= 000010 E.NIR = ****** GX
BIT9 = 001000 CRSTK 012256RG DF.PDP= 000016 DV.URE= 000200 FCN 004606R
BLKTT = ****** GX CRSTLN= ****** GX DF.PEX= 000015 DXFLAG 014350R FCNBD 004614R
BPARER= 000020 CRSTS = ****** GX DIAG1 = 174430 DXWD1 = 000006 FEDRV 003622R
BUFAIL 015434R CRTBL = ****** GX DIAG2 = 174432 DXWD2 = 000004 FEHD 003322RG
BUSA16= 000020 CRTRP4 012312R DIAG3 = 174436 DXWD3 = 000002 FER = 000020
BUSA17= 000040 CR.ACK= 004000 DIKL10= 000010 DXWRD1= 002000 FESTK 003602RG
BYTESA= ****** GX CR.HNG= 100000 DLT = 100000 D$$H11= 000010 FETBL = ****** GX
CDBA = ****** GX CR.IOD= 010000 DLYCNT= 174400 D.CCDR= ****** GX FETSK = ****** GX
CDBPCK= 020000 CR.IOP= 020000 DNBLK = ****** GX D.CLPT= ****** GX FE.DET= 040000
CDBRCK= 040000 CR.NSF= 000400 DNFCN = ****** GX D.FEPD= ****** GX FE.DTE= 020000
CDBSCK= 010000 CR.NXD= 001000 DNMSG 000442R D1011 = 000040 FE.SER= 004000
CDCC = ****** GX CR.RHN= 002000 DNSTS = ****** GX EBSEL = 000100 FE.STR= 002000
CDD = 000020 CR.SST= 040000 DONE = 000200 EBUSPC= 000020 FILADR 014464R
CDDB = ****** GX CS.EXP= 177670 DONSTR 004536R EBUSPS= 000004 FILBLK 014430R
CDSB16= 000020 CTYLUN= 000001 DON10C= 040000 ECCMSK 000504R FILCLS 016762R
CDSB17= 000040 C$$D11= 000001 DON10S= 100000 ECCWRD 000476R FILERA 015430R
CDSDER= 004000 C.LEEF= 000002 DON11C= 000100 ECH = 000100 FILERR 016314R
CDSDLT= 002000 DAG1 = 000030 DON11S= 000200 ECI = 004000 FILERX 016324R
CDSEOF= 020000 DAG2 = 000032 DPS4 = 040000 EDONES= 040000 FILFNA 016624R
CDSERR= 100000 DAG3 = 000036 DRESET= 000100 EF.CRB= 000010 FILQIO 016774R
CDSHEM= 000004 DBINI 000512R DRY = 000200 EF.CRC= 000001 FMT22 = 010000
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 PAGE 70-2
SYMBOL TABLE
FNDFIL 015170R IE.IFC= 177776 INTSON= 000001 IO.REL= 013400 LOBYTE= 000377
FORPRO= 000020 IE.IFU= 177747 INT10S= 000400 IO.RHD= 001010 LOINIT= 000400
GO = 000001 IE.ILL= 177726 INT11C= 002000 IO.RLB= 001000 LPALOC= 000214
GOERR = 000001 IE.ILU= 177640 INT11S= 004000 IO.RLV= 001100 LPBCTR= 000006 G
HCE = 000200 IE.INS= 177776 IOABT 004554R IO.RNA= 005400 LPBSAD= 000004 G
HCI = 002000 IE.IPR= 177641 IODN 004162R IO.RNC= 001004 LPCBUF= 000014 G
HCRC = 000400 IE.ISQ= 177703 IODNCR 013734R IO.RNE= 001020 LPCCTR= 000015 G
HDRBFE 014426R IE.ITI= 177643 IO.ACE= 007400 IO.RTC= 003400 LPCEVF= ****** GX
HDRBLK 014422R IE.ITS= 177770 IO.ACR= 006400 IO.RTI= 016400 LPCKSM= 000017 G
HDRBUF 014424R IE.LCK= 177745 IO.ACW= 007000 IO.RTK= 000060 LPCSA = ****** GX
HIBYTE= 177400 IE.LNL= 177646 IO.ADS= 014000 IO.RVB= 010400 LPCSM = ****** GX
H.IPC = 000076 IE.MBK= 177721 IO.APC= 014000 IO.RWD= 002400 LPCSRA= 000000 G
H.ISP = 000100 IE.MOD= 177753 IO.APV= 014010 IO.RWU= 002540 LPCSRB= 000002 G
H.LUN = 000132 IE.NBF= 177731 IO.ATT= 001400 IO.R1C= 002400 LPDCLR 010424R
H.LUT = ****** GX IE.NBK= 177727 IO.CCI= 014000 IO.SAO= 004000 LPDINT 006776R
H.NLUN= 000130 IE.NFI= 177704 IO.CCT= 002460 IO.SCS= 013000 LPEMSG 007662R
IAE = 002000 IE.NLN= 177733 IO.CLN= 003400 IO.SDI= 013000 LPEMSX 007675R
IE.ABO= 177761 IE.NNC= 177674 IO.CON= 015400 IO.SDO= 012400 LPERUN 007672R
IE.ACT= 177771 IE.NOD= 177751 IO.CRC= 001020 IO.SEC= 002520 LPEVFG= ****** GX
IE.ADP= 177636 IE.NSF= 177746 IO.CRE= 012000 IO.SEM= 002440 LPEXPA= ****** GX
IE.ALN= 177736 IE.OFL= 177677 IO.CTI= 015400 IO.SHT= 002410 LPEXPZ= ****** GX
IE.AST= 177660 IE.ONP= 177773 IO.CTL= 016400 IO.SLO= 005400 LPHD 005060RG
IE.BAD= 177777 IE.OVR= 177756 IO.DAC= 010000 IO.SMO= 002560 LPHUNG= ****** GX
IE.BBE= 177710 IE.PRI= 177760 IO.DCI= 014400 IO.SNM= 002450 LPINI 005450R
IE.BDI= 177714 IE.RAC= 177724 IO.DCT= 002470 IO.SPB= 002420 LPIOD 005622R
IE.BDR= 177716 IE.RAT= 177723 IO.DEL= 012400 IO.SPF= 002440 LPITH = ****** GX
IE.BDV= 177711 IE.RBG= 177730 IO.DET= 002000 IO.SSO= 004400 LPLOOP 005534R
IE.BHD= 177700 IE.RCN= 177722 IO.DIS= 016000 IO.SST= 002430 LPMCB = ****** GX
IE.BLK= 177754 IE.RER= 177740 IO.DTI= 016000 IO.STC= 002500 LPMKT 006742R
IE.BNM= 177712 IE.RNM= 177715 IO.ENA= 006000 IO.STP= 016400 LPMRKT 005360R
IE.BTF= 177675 IE.RSU= 177757 IO.EOF= 003000 IO.SYN= 003040 LPNIR 006502R
IE.BTP= 177725 IE.SDP= 177635 IO.ESA= 002500 IO.TRM= 002410 LPPCTR= 000010 G
IE.BVR= 177701 IE.SNC= 177735 IO.EXT= 011400 IO.UNL= 000042 LPQDPB 007640R
IE.BYT= 177755 IE.SPC= 177772 IO.FDX= 003020 IO.WAT= 013400 LPRAMD= 000012 G
IE.CKP= 177766 IE.SQC= 177734 IO.FNA= 004400 IO.WLB= 000400 LPRMA = ****** GX
IE.CKS= 177742 IE.SRE= 177762 IO.HDX= 003010 IO.WLS= 000410 LPRMC = ****** GX
IE.CLO= 177732 IE.STK= 177706 IO.HIS= 015000 IO.WLV= 000500 LPRMZ = ****** GX
IE.CON= 177752 IE.ULN= 177773 IO.INL= 002400 IO.WVB= 011000 LPRTRY= 000012
IE.DAA= 177770 IE.UPN= 177777 IO.ITI= 017000 IO.XMT= 014400 LPRTY = ****** GX
IE.DAO= 177763 IE.VER= 177774 IO.KIL= 000012 IO.XNA= 014410 LPSIZE= ****** GX
IE.DFU= 177750 IE.WAC= 177743 IO.LED= 012000 IPAERR 015674R LPSSTV 005404R
IE.DNA= 177771 IE.WAT= 177741 IO.LOV= 001010 IQ.Q = 000002 LPSTBK= ****** GX
IE.DNR= 177775 IE.WER= 177737 IO.LTK= 000050 IQ.X = 000001 LPSTK 005340RG
IE.DUN= 177767 IE.WLK= 177764 IO.MCS= 013400 IS.BV = 000005 LPSTLN= ****** GX
IE.DUP= 177707 IE.2DV= 177720 IO.MDA= 016000 IS.CLR= 000000 LPTBL = ****** GX
IE.EBX= 177776 IFLOP = 100000 IO.MDI= 014400 IS.CR = 006401 LPTDAT= 000016 G
IE.EOF= 177766 ILF = 000001 IO.MDO= 015400 IS.ESC= 015401 LPTHD = ****** GX
IE.EOT= 177702 ILR = 000002 IO.MLO= 006000 IS.PND= 000000 LPTPAR= 000040
IE.EOV= 177765 INITCR 013542RG IO.MOD= 003000 IS.RDD= 000002 LPTPBT= 010000
IE.EXP= 177676 INITLP 010354RG IO.MSO= 005000 IS.SET= 000002 LPTRP4 005406R
IE.FEX= 177717 INSHD 013750RG IO.RAL= 001010 IS.SUC= 000001 LPUNIT= ****** GX
IE.FHE= 177705 INSMSG 017364R IO.RAT= 013000 KLPWRF= 000010 LPUTBL= ****** GX
IE.FOP= 177713 INSTAL 014700RG IO.RBC= 003000 LBLBFE 014420R LPWRUP 005442R
IE.HFU= 177744 INSTK 014230RG IO.RCI= 015000 LBLBLK 014412R LP.CLR= 002000
IE.HWR= 177772 INTENB= 000100 IO.RCV= 015000 LBLBUF 014416R LP.EOF= 000200
IE.IDU= 177644 INTROF= 000010 IO.RDB= 001200 LBLNUM 014414R LP.F10= 000400
IE.IEF= 177637 INTRON= 000040 IO.RDN= 000022 LOAD11= 000004 LP.HNG= 100000
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 PAGE 70-3
SYMBOL TABLE
LP.LIP= 001000 PARFND 015732R RETXXX 016720R STAT = 174434 TTBERR 015706R
LP.MCH= 010000 PARMSG 017405R RFMAD0= 100000 STATD = 000034 TTPEN = ****** GX
LP.PZI= 020000 PBTHRD= 000004 RFMAD1= 040000 STATUS= 000022 TYPBUF 014474R
LP.SST= 040000 PERCLR= 001000 RFMAD2= 020000 STDADR= 014370R TYPMSG 017054R
LP.UNT= 000003 PGE = 002000 RFMAD3= 010000 STSWD = ****** GX T.BA = ****** GX
LP.WAT= 004000 PGM = 001000 RM = 000010 SWR = 177570 T.HBCT= ****** GX
L$BBLK= 000024 PHYS = 100000 RMR = 000004 SWSLLT= 100000 T.HCAD= ****** GX
L$BFLG= 000010 PIDENT= 000000 RPAS = 000016 SYFLAG 014351R T.HCBC= ****** GX
L$BHRB= 000022 PRI7 = 000340 RPBA = 000004 SYMNTD 015102R T.HEMA= 177774
L$BLDZ= 000014 PROPNT= 000021 RPBUF = ****** GX SYMNT1 015146R T.HIBC= 177776
L$BMXZ= 000016 PRTOFF= 004000 RPCNT = ****** GX SYNTIM= 000004 T.HVFC= 177775
L$BPAR= 000004 PR0 = 000000 RPCS1 = 000000 S.DRFN= 000034 T.PN = ****** GX
L$BPRI= 000012 PR1 = 000040 RPCS2 = 000010 S.FW = ****** GX T.PZ = ****** GX
L$BSA = 000020 PR2 = 000100 RPDA = 000006 S.TD = ****** GX T.SZ = ****** GX
L$BTSK= 000000 PR3 = 000140 RPDBR = 000022 TASKNF 015324R T10AD = 000020
L$$P20= 000002 PR4 = 000200 RPDC = 000034 TB.ABO= 040000 T11AD = 000022
MCPE = 020000 PR5 = 000240 RPDS = 000012 TB.DON= 100000 T11BC = 000016
MDPE = 000400 PR6 = 000300 RPDT = 000026 TB.EOF= 020000 T50TBL 017340R
MEFCN 004616R PR7 = 000340 RPEC1 = 000044 TB.LPC= 010000 UF.TL = ****** GX
MEMPAR= 000020 PS = 177776 RPEC2 = 000046 TB.RMD= 004000 UNASG1= 000032
MKDNR 000404RG PSWW1 = 000005 RPER1 = 000014 TB.SFN= 036000 UNASG2= 000033
MKSCDP 005372R PSWW10= 000014 RPEXP = 176700 TB.VFD= 002000 UNASG3= 000034
MNTBLK 014646R PSWW11= 000015 RPHD 000070RG TENAD1= 174410 UNASG4= 000035
MNTSYD 014746R PSWW12= 000016 RPLA = 000020 TENAD2= 174412 UNASG5= 000036
MODE00= 000004 PSWW13= 000017 RPMR = 000024 TESTLP 010164R UNASG6= 000037
MODE01= 000010 PSWW2 = 000006 RPOF = 000032 TEST00= 000400 UNS = 040000
MOL = 010000 PSWW3 = 000007 RPRNA = ****** GX TEST01= 001000 UPE = 020000
MPE11 = 001000 PSWW4 = 000010 RPRTC = ****** GX TEST02= 002000 U.ACP = ****** GX
MRKDT 002406R PSWW5 = 000011 RPSN = 000030 TNAD1 = 000010 U.DACP= ****** GX
MSGDPB 000422R PSWW6 = 000012 RPSTK 000350RG TNAD2 = 000012 U.DN = ****** GX
MSGSIZ= 000016 PSWW7 = 000013 RPTSK = ****** GX TNCERR 015720R U.FB = ****** GX
MXF = 001000 PUDADR 014410R RPUNIT= ****** GX TNFERR 015414R U.RP = ****** GX
M.KTAE= 000010 PULSE = 000020 RPWC = 000002 TOBM = 000004 U.SZ = 000050
M.KTEF= 000002 PUTR50 017266R RPWLO 000400R TOIP = 000002 U.UN = ****** GX
M.KTMG= 000004 PUTR51 017276R RSTERR= 001000 TOIT = 000001 U.VA = ****** GX
M.KTUN= 000006 PUTSTR 017256R RSX$$E= 000050 TO10 = 000200 VFCFF 006730R
NED = 010000 QIOSTS 014470R RSX$$F= 000101 TO10AD= 174420 VFCTBL 006726R
NEM = 004000 QSIZE = 000023 RSX$$K= 000126 TO10BC= 174414 VFUERR= 000100
NODADR= ****** GX Q.IOAE= 000012 RSX$$V= 000015 TO10BM= 000001 VFULOD= 000002
NTRDMS 002424R Q.IOEF= 000006 RWRBLK 016754R TO10DB= 000400 VFURDY= 010000
NTRDSZ= 000016 Q.IOFN= 000002 RWRHDR 016676R TO10DN= 100000 VV = 000100
NULSTP= 000040 Q.IOLU= 000004 R$$E18= 000001 TO10DT= 174424 WCE = 040000
NUPE = 000002 Q.IOPL= 000014 R$$11D= 000001 TO10ER= 020000 WCF = 000040
NXTHDR 016644R Q.IOPR= 000007 R.AT = ****** GX TO10PK= ****** GX WEP = 000010
N.DID = 000024 Q.IOSB= 000010 R.DP = ****** GX TO11 = 000100 WFDNR 000416RG
N.FID = 000000 RAMIS0= 010000 R.FC = ****** GX TO11AD= 174422 WFDTD 002362R
N.FNAM= 000006 RAMLOD= 000003 R.LU = ****** GX TO11BC= 174416 WFDTQ 002356R
N.FTYP= 000014 RAMPAR= 000010 R.PB = ****** GX TO11BM= 020000 WFEF1 003314R
N.FVER= 000016 RCVBLK 014352R R50TBL 017350R TO11DB= 004000 WFMKT 002420R
N.NEXT= 000022 REDHDR 016660R SCD = 000040 TO11DN= 000200 WLE = 004000
N.STAT= 000020 REDLBL 016722R SETLUN 016110R TO11DT= 174426 WRL = 004000
OFFLIN= 000200 REQBLK 014356R SETSTD 015600R TO11ER= 000002 WRTHDR 016672R
ONLINE= 004000 REQTSK 016506R SF.IR = 040000 TRE = 040000 W.TSEF= 000002
OPI = 020000 RETALL 016416R SF.TA = 000001 TSKFND 015446R ZSTOP = 040000
OPTVFU= 004000 RETBUF 016440R SNSTR 004224R TSKLUN= 000002 $CDINT 013566RG
PAGZRO= 040000 RETNOD 016330R SSTSCR 013136R TSKMSG 017376R $CD11 = 000001
PARENB= 000002 RETRY = 000005 SSTSLP 007164R TSTMOD= 000001 $DBDTE= 000001
INSTAL -- TASK INSTALLER FOR RS MACRO M1113 03-APR-86 20:48 PAGE 70-4
SYMBOL TABLE
$DH11 = 000001 .CECLK= 004000 .LCRM4= 054000 .RCRM1= 147000 ..AKLP 011372RG
$DIRAC= 000001 .CLRMR= 006000 .LCRM5= 053000 .RCRM2= 146000 ..ALCB= ****** GX
$DIV 000032RG .CLRUN= 010000 .LDAR = 077000 .RCRM3= 145000 ..ALC2= ****** GX
$DSW = ****** GX .COMEF= ****** GX .LDBRL= 043000 .RCRM4= 144000 ..DECB= ****** GX
$DTA = 000001 .CONBT= 012000 .LDBRR= 042000 .RCSPF= 141000 ..DECN= ****** GX
$DTE = 000001 .CRPFL= ****** GX .LDCK1= 046000 .RDJ14= 134000 ..DEC2= ****** GX
$DTINT 002774RG .CRTSK= ****** GX .LDCK2= 047000 .RDJ71= 135000 ..DOLP 011614RG
$FE = 000001 .CSHRG= 164000 .LDDIS= 045000 .RDMAB= 133000 ..DOL1 011600RG
$F11 = 000001 .CYLTM= 000074 .LDRJD= 064000 .RPELC= ****** GX ..DQRN= ****** GX
$LPINT 010454RG .DBINT 001236RG .LDRJV= 063000 .RPELQ= ****** GX ..DSEV= ****** GX
$LP20 = 000001 .DRLTC= 015000 .LDRM1= 060000 .RPUNT= ****** GX ..ENB0= ****** GX
$MUL 000000RG .DSACF= 066000 .LDRM2= 061000 .SECLK= 003000 ..FSTD= ****** GX
$RP04 = 000001 .DSIOJ= 065000 .LDRM3= 062000 .SETMR= 007000 ..INTX= ****** GX
$TOP10= 000001 .EIOJA= 067000 .LDSEL= 044000 .SETRN= 011000 ..IODN= ****** GX
$$ = 000037 .FEACK 004242RG .LPPFL= ****** GX .SSCLK= 002000 ..NADD= ****** GX
$$MSG = 000000 .FEST 004346RG .MEMRS= 076000 .STDTA= ****** GX ..PTLP 011452RG
$$$ = 000251R 002 .GFNR = 102000 .PCAB1= 150000 .STDTZ= ****** GX ..SACK= ****** GX
$$$ARG= 000003 .INICL= 070000 .PCAB2= 151000 .STPCL= 000000 ..SPCR 013676RG
$$$OST= 000012 .IRLTC= 014000 .PCAB3= 152000 .STRCL= 001000 ..SPLP 011220RG
$$$T1 = 000011 .LCRDL= 052000 .PCAB4= 153000 .TPDBA= ****** GX ..STCR 013654RG
$$$T2 = 000000 .LCRDR= 051000 .POLLH= ****** GX .TPDEA= ****** GX ..STIN= ****** GX
$$$$ = 000002 .LCRM1= 057000 .PUDBA= ****** GX .WRMBX= 071000 ..STLP 011010RG
.BGBUF= ****** GX .LCRM2= 056000 .PUDEA= ****** GX ..AKCR 013720RG ...GBL= 000000
.BRCLK= 005000 .LCRM3= 055000
. ABS. 000000 000
017414 001
TEXT 000275 002
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 12480 WORDS ( 49 PAGES)
DYNAMIC MEMORY: 13382 WORDS ( 51 PAGES)
ELAPSED TIME: 00:04:02
,[100,20]DRIVERS10.LST/-SP/CRF=[100,30]DRIVERS10.TMP
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 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 016620 R 66-5249 67-5299 67-5304 #67-5310
AOE = 001000 #8-404 10-717 10-728
ATCBLK 014640 R #62-4826 64-5044
A.EF = 000020 *10-770 #11-1233 *11-1335 *11-1436 19-1939 *19-1941 *21-2101 30-2637 51-4224
A.HA = ****** GX 19-2002 63-4884
BCFHDS 011142 R 40-3669 #40-3705
BCFILF 011076 R 40-3661 #40-3678 40-3699 40-3708
BCFLDR 011162 R 40-3671 #40-3714
BCFLDV 011170 R 40-3672 #40-3720
BCFRDS 011076 R 40-3668 #40-3683
BCFSDO 011122 R 40-3670 #40-3696
BCFSTR 011204 R 40-3667 #40-3733
BCFTAB 011060 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 #11-1229 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 #11-1229 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 #11-1229 #22-2240 22-2274 23-2317 23-2337 28-2527 #46-4047 47-4078 49-4151
#61-4716
BIT11 = 004000 #11-1229 #22-2240 22-2273 23-2316 23-2336 28-2522 #46-4047 47-4077 49-4149
#61-4716
BIT12 = 010000 #11-1229 #22-2240 22-2272 23-2315 23-2335 28-2519 #46-4047 47-4076 47-4095
49-4147 #61-4716
BIT13 = 020000 #11-1229 #22-2240 22-2271 23-2314 28-2516 #46-4047 47-4075 47-4094 49-4145
#61-4716
BIT14 = 040000 #11-1229 #22-2240 22-2270 23-2313 28-2513 #46-4047 47-4074 47-4093 49-4142
#61-4716
BIT15 = 100000 #11-1229 #22-2240 22-2269 23-2312 28-2510 35-3296 #46-4047 47-4073 49-4138
52-4268 53-4483 #61-4716
BIT2 = 000004 #11-1229 22-2229 #22-2240 23-2326 23-2346 25-2422 25-2438 25-2454 #46-4047
46-4062 47-4086 #61-4716
BIT3 = 000010 #11-1229 #22-2240 23-2325 23-2345 25-2423 25-2439 25-2455 #46-4047 46-4064
47-4085 #61-4716
BIT4 = 000020 #11-1229 22-2232 #22-2240 23-2324 23-2344 25-2424 25-2440 25-2456 #46-4047
47-4084 #61-4716
BIT5 = 000040 #11-1229 22-2234 #22-2240 23-2323 23-2343 25-2425 25-2441 #46-4047 47-4083
#61-4716
BIT6 = 000100 #11-1229 #22-2240 23-2322 23-2342 25-2426 #46-4047 47-4082 #61-4716
BIT7 = 000200 #11-1229 #22-2240 23-2321 23-2341 25-2427 28-2535 #46-4047 47-4081 #61-4716
61-4782
BIT8 = 000400 #11-1229 #22-2240 23-2319 23-2339 25-2428 28-2532 35-3274 #46-4047 47-4080
49-4155 #61-4716
BIT9 = 001000 #11-1229 #22-2240 23-2318 23-2338 25-2429 28-2529 #46-4047 47-4079 49-4153
#61-4716
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 2
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
BLKTT = ****** GX 21-2149
BPARER = 000020 #11-1229 #22-2240 #46-4047 #61-4716
BUFAIL 015434 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 #11-1229 #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 #11-1229 #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 016474 R 63-4869 63-4869 66-5281 #66-5284
CLSFIL 015730 R 65-5095 65-5098 65-5101 #65-5105
CNUPE = 000002 #11-1229 #22-2240 #46-4047 #61-4716
CNVTBL 014654 R #62-4839 66-5214
CPE = 000010 #8-410
CPUNUM = 000002 #11-1229 #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 013556 R 51-4207 #54-4507
CRDINT 013026 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 011776 RG #49-4135
CRHUNG = ****** GX *52-4336
CRINI 012360 R 49-4135 49-4135 #51-4223
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 3
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
CRIOD 012532 R #52-4250
CRLOOP 012444 R #52-4236 52-4348
CRMKT 012776 R #52-4320
CRMRKT 012276 R #49-4160 51-4226
CRPWUP 012352 R #51-4218 51-4228
CRSSTV 012310 R #51-4201 51-4227
CRSTBK = ****** GX 53-4398 53-4471
CRSTK 012256 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 012312 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 #11-1229 #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 #11-1229 #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 #11-1229 #22-2240 #46-4047 #61-4716
DEX = 000400 #11-1229 #22-2240 #46-4047 #61-4716
DEXDON = 000004 #11-1229 #22-2240 #46-4047 #61-4716
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 4
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DEXWD1 = 174406 #11-1229 #22-2240 #46-4047 #61-4716
DEXWD2 = 174404 #11-1229 #22-2240 #46-4047 #61-4716
DEXWD3 = 174402 #11-1229 #22-2240 #46-4047 #61-4716
DFUNC = 000200 #11-1229 #22-2240 #46-4047 #61-4716
DF.DMG = 000004 #11-1229 #22-2240 #46-4047 #61-4716
DF.DMN = 000007 #11-1229 #22-2240 #46-4047 #61-4716
DF.DOR = 000001 #11-1229 #22-2240 #46-4047 #61-4716
DF.EHG = 000010 #11-1229 #22-2240 #46-4047 #61-4716
DF.EHM = 000011 #11-1229 #22-2240 #46-4047 #61-4716
DF.EMG = 000005 #11-1229 #22-2240 #46-4047 #61-4716
DF.EMN = 000006 #11-1229 #22-2240 #46-4047 #61-4716
DF.KLR = 000012 #11-1229 #22-2240 #46-4047 #61-4716
DF.KLW = 000013 #11-1229 #22-2240 #46-4047 #61-4716
DF.KLX = 000014 #11-1229 #22-2240 #46-4047 #61-4716
DF.OFF = 000002 #11-1229 #22-2240 #46-4047 #61-4716
DF.ON = 000003 #11-1229 #22-2240 #46-4047 #61-4716
DF.PDP = 000016 #11-1229 #22-2240 #46-4047 #61-4716
DF.PEX = 000015 #11-1229 #22-2240 #46-4047 #61-4716
DIAG1 = 174430 #11-1229 #22-2240 #46-4047 #61-4716
DIAG2 = 174432 #11-1229 #22-2240 #46-4047 #61-4716
DIAG3 = 174436 #11-1229 #22-2240 #46-4047 #61-4716
DIKL10 = 000010 #11-1229 #22-2240 #46-4047 #61-4716
DLT = 100000 #8-374 10-793
DLYCNT = 174400 #11-1229 #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 #23-2321
DONSTR 004536 R 21-2099 #21-2102 21-2111 21-2120 21-2171
DON10C = 040000 #11-1229 #22-2240 #46-4047 #61-4716
DON10S = 100000 #11-1229 #22-2240 #46-4047 #61-4716
DON11C = 000100 #11-1229 #22-2240 #46-4047 #61-4716
DON11S = 000200 #11-1229 #22-2240 #46-4047 #61-4716
DPS4 = 040000 #11-1229 #22-2240 #46-4047 #61-4716
DRESET = 000100 #11-1229 #22-2240 #46-4047 #61-4716
DRY = 000200 #8-391 9-659
DR.DTE = 000011 #11-1229 #22-2240 #46-4047 #61-4716
DSEND = 000004 #11-1229 #22-2240 #46-4047 #61-4716
DS04 = 004000 #11-1229 #22-2240 #46-4047 #61-4716
DS05 = 002000 #11-1229 #22-2240 #46-4047 #61-4716
DS06 = 001000 #11-1229 #22-2240 #46-4047 #61-4716
DTBUF = ****** GX *11-1291 *11-1292 11-1295 11-1324 11-1329 11-1340 11-1390 11-1413 *11-1434
*11-1435
DTCNT = ****** GX *11-1290 11-1325 11-1341 11-1433
DTCW2 = ****** GX *11-1312 11-1392 11-1397 11-1400
DTCW3 = ****** GX *11-1326 *11-1387 *11-1417 11-1420
DTE = 010000 #8-401
DTECMD = 000451 #11-1229 #22-2240 #46-4047 #61-4716
DTEFLG = 000444 #11-1229 #22-2240 #46-4047 #61-4716
DTEF11 = 000450 #11-1229 #22-2240 #46-4047 #61-4716
DTEMTD = 000455 #11-1229 #22-2240 #46-4047 #61-4716
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 5
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
DTEMTI = 000456 #11-1229 #22-2240 #46-4047 #61-4716
DTEXP = 177340 #11-1240 *11-1317 11-1323 11-1378 11-1431
DTHD 002056 RG #11-1245
DTINI 002442 R 11-1245 11-1245 #11-1286 11-1289 11-1343
DTNRM 002366 R #11-1251 11-1356
DTOUT 002606 R #11-1317 11-1359
DTRTC = ****** GX *11-1294 *11-1334 *11-1404 *11-1424
DTSTK 002336 RG 11-1245 #11-1245
DTTSK = ****** GX *11-1335 *11-1436
DUNS 000460 R #8-478 9-688
DUPE = 000020 #11-1229 #22-2240 #46-4047 #61-4716
DURE = 000004 #11-1229 #22-2240 #46-4047 #61-4716
DVA = 004000 #8-360 9-625 9-632
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
DXFLAG 014350 R #62-4806 *63-4870 63-4921 *63-4923
DXWD1 = 000006 #3-135
DXWD2 = 000004 #3-136
DXWD3 = 000002 #3-137
DXWRD1 = 002000 #11-1229 #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 #11-1229 #22-2240 #46-4047 #61-4716
EBSEL = 000100 #11-1229 #22-2240 #46-4047 #61-4716
EBUSPC = 000020 #11-1229 #22-2240 #46-4047 #61-4716
EBUSPS = 000004 #11-1229 #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 #11-1229 #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 11-1335 11-1436
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
EF.LPS = 000020 #22-2232 30-2638 35-3138 35-3300 35-3308
EF.LPW = 000040 #22-2234 30-2638 36-3342 41-3779
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 6
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
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
EPTR = 000000 #11-1229 #22-2240 #46-4047 #61-4716
ERMHER 007767 R 35-3174 #35-3259
ERMHNG 010004 R 35-3193 #35-3261
ERMNXD 007715 R 35-3152 #35-3253
ERMOFL 007735 R 35-3163 #35-3255
ERMVFE 007750 R 35-3168 #35-3257
ERR = 100000 #8-387 #23-2312 39-3505
ERR10C = 010000 #11-1229 #22-2240 #46-4047 #61-4716
ERR10S = 020000 #11-1229 #22-2240 #46-4047 #61-4716
ERR11C = 000001 #11-1229 #22-2240 #46-4047 #61-4716
ERR11S = 000002 #11-1229 #22-2240 #46-4047 #61-4716
EXSP 014350 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 11-1249
E.NIR = ****** GX 8-464 11-1247
FCN 004606 R 21-2076 #21-2124
FCNBD 004614 R 21-2079 #21-2126
FEDRV 003622 R 18-1935 18-1935 #19-1937 19-1983 19-1986 19-2021 19-2030
FEHD 003322 RG #18-1935
FER = 000020 #8-409
FESTK 003602 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 014464 R #62-4820 62-4828 65-5159 65-5161
FILBLK 014430 R #62-4819 63-4937 63-4958 63-4977 64-5043 68-5322
FILCLS 016762 R 66-5241 66-5241 66-5247 66-5247 #68-5378
FILERA 015430 R #64-5014 64-5049 64-5055 64-5059
FILERR 016314 R 64-5014 66-5183 66-5193 66-5231 66-5236 #66-5246
FILERX 016324 R 65-5105 #66-5247
FILFNA 016624 R 63-4952 63-4952 63-4984 63-4984 #68-5318
FILQIO 016774 R 63-4910 63-4910 64-5048 64-5048 68-5323 68-5374 #68-5393
FMT22 = 010000 #8-432
FNDFIL 015170 R 63-4930 #63-4936 63-5004
FORPRO = 000020 #11-1229 #22-2240 #46-4047 #61-4716
GO = 000001 #23-2331 34-3060 39-3515 39-3540 44-3996
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 7
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
GOERR = 000001 #23-2348 39-3560
HCE = 000200 #8-406
HCI = 002000 #8-434
HCRC = 000400 #8-405
HDRBFE 014426 R #62-4818 *64-5038 68-5329
HDRBLK 014422 R #62-4816 *64-5057 *68-5337 68-5351
HDRBUF 014424 R #62-4817 *64-5036 66-5280 *66-5285 68-5350
HDR64 = ****** 65-5125
HIBYTE = 177400 #11-1229 #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 11-1306
IE.DNR = 177775 9-656
IE.IFC = 177776 9-573 11-1344 33-2952
IE.OFL = 177677 43-3879
IE.VER = 177774 10-715 10-858 11-1430 21-2174
IE.WLK = 177764 10-724 11-1427
IFLOP = 100000 #11-1229 #22-2240 #46-4047 #61-4716
ILF = 000001 #8-413 10-717
ILR = 000002 #8-412 10-717
INITCR 013542 RG 51-4218 51-4218 51-4229 51-4229 52-4244 52-4244 52-4337 52-4337 #54-4505
58-4627 58-4627
INITLP 010354 RG 30-2629 30-2629 30-2642 30-2642 31-2666 31-2666 #37-3404
INSHD 013750 RG #62-4799
INSMSG 017364 R 69-5411 #69-5487
INSTAL 014700 RG 62-4799 62-4799 #63-4864 63-4867 67-5310
INSTK 014230 RG 62-4799 #62-4799
INTENB = 000100 #23-2322 34-3036 34-3040 34-3060 36-3379 37-3417 39-3515 39-3540 41-3784
44-3996
INTROF = 000010 #11-1229 #22-2240 #46-4047 #61-4716
INTRON = 000040 #11-1229 #22-2240 #46-4047 #61-4716
INTSON = 000001 #11-1229 #22-2240 #46-4047 #61-4716
INT10S = 000400 #11-1229 #22-2240 #46-4047 #61-4716
INT11C = 002000 #11-1229 #22-2240 #46-4047 #61-4716
INT11S = 004000 #11-1229 #22-2240 #46-4047 #61-4716
IOABT 004554 R 21-2069 #21-2107
IODN 004162 R 19-1978 #19-2023
IODNCR 013734 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 11-1301 33-2935
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 8
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
IO.RVB = 010400 33-2937 68-5338 68-5360
IO.WLB = 000400 9-571 11-1251 11-1298 21-2141 33-2931 35-3246 69-5431
IO.WLV = 000500 11-1303
IO.WVB = 011000 8-473 33-2933 68-5343
IPAERR 015674 R #65-5098 65-5149
IS.SUC = 000001 10-712 10-966 11-1419 21-2133 33-2965 44-3963
KLPWRF = 000010 #11-1229 #22-2240 #46-4047 #61-4716
KT11 = ****** 65-5097 65-5147
LBLBFE 014420 R #62-4815 *64-5031 66-5178 66-5187
LBLBLK 014412 R #62-4812 *64-5053 66-5190 *68-5362 68-5363
LBLBUF 014416 R #62-4814 *64-5029 66-5276 *66-5284 68-5361
LBLNUM 014414 R #62-4813 *65-5167 66-5190
LOAD11 = 000004 #11-1229 #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 010424 R 30-2616 #37-3418
LPDINT 006776 R 30-2614 #34-3037
LPEMSG 007662 R 35-3236 35-3246 #35-3247
LPEMSX 007675 R 35-3232 #35-3251
LPERUN 007672 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 005060 RG #27-2502
LPHUNG = ****** GX *34-3052
LPINI 005450 R 27-2502 27-2502 #30-2635
LPIOD 005622 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 005534 R #31-2656 34-3082
LPMCB = ****** GX 39-3530 *44-3981 44-3984
LPMKT 006742 R #34-3027
LPMRKT 005360 R #30-2603 30-2639
LPNIR 006502 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 007640 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
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 9
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
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 005404 R #30-2608 30-2640
LPSTBK = ****** GX 35-3144 35-3273 35-3281 35-3291
LPSTK 005340 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 005406 R 30-2609 #30-2613
LPUNIT = ****** GX *39-3491 39-3493
LPUTBL = ****** GX 33-2928 39-3496
LPWRUP 005442 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 004616 R 21-2125 #21-2128
MEMPAR = 000020 #23-2344 35-3171 39-3560
MKDNR 000404 RG #8-466 9-683
MKSCDP 005372 R #30-2605 36-3347
MNTBLK 014646 R #62-4831 63-4907
MNTSYD 014746 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 #11-1229 #22-2240 #46-4047 #61-4716
MRKDT 002406 R #11-1253 11-1357
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 10
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
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 #11-1253 #30-2604 #30-2606 #49-4160
M.KTEF = 000002 #8-467 #11-1253 #30-2604 #30-2606 #49-4160
M.KTMG = 000004 #8-467 #11-1253 #30-2604 #30-2606 #49-4160
M.KTUN = 000006 #8-467 #11-1253 #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
NTRDMS 002424 R 11-1251 #11-1257 11-1258
NTRDSZ = 000016 11-1251 #11-1258
NULSTP = 000040 #11-1229 #22-2240 #46-4047 #61-4716
NUPE = 000002 #11-1229 #22-2240 #46-4047 #61-4716
NXTHDR 016644 R 66-5182 66-5182 66-5230 66-5230 #68-5329
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 015732 R 65-5089 #65-5109
PARMSG 017405 R 69-5422 #69-5489
PBTHRD = 000004 #22-2279 22-2281 22-2282 22-2283 32-2867 33-2977 33-2978
PERCLR = 001000 #11-1229 #22-2240 #46-4047 #61-4716
PGE = 002000 #8-379 10-793
PGM = 001000 #8-390
PHYS = 100000 #11-1229 #22-2240 #46-4047 #61-4716
PIDENT = 000000 #11-1229 #22-2240 #46-4047 #61-4716
PRI7 = 000340 #11-1229 #22-2240 #46-4047 #61-4716
PROPNT = 000021 #11-1229 #22-2240 #46-4047 #61-4716
PRTOFF = 004000 #11-1229 #22-2240 #46-4047 #61-4716
PR0 = 000000 #11-1229 #22-2240 #46-4047 #61-4716
PR1 = 000040 #11-1229 #22-2240 #46-4047 #61-4716
PR2 = 000100 #11-1229 #22-2240 #46-4047 #61-4716
PR3 = 000140 #11-1229 #22-2240 #46-4047 #61-4716
PR4 = 000200 #11-1229 #22-2240 34-3055 36-3382 #46-4047 #61-4716
PR5 = 000240 #11-1229 #22-2240 #46-4047 #61-4716
PR6 = 000300 #11-1229 #22-2240 #46-4047 #61-4716
PR7 = 000340 #11-1229 21-2138 #22-2240 31-2660 32-2744 #46-4047 52-4238 #61-4716
PS = 177776 9-623 9-665 9-680 #11-1229 11-1337 11-1354 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
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 11
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
PSWW1 = 000005 #11-1229 #22-2240 #46-4047 #61-4716
PSWW10 = 000014 #11-1229 #22-2240 #46-4047 #61-4716
PSWW11 = 000015 #11-1229 #22-2240 #46-4047 #61-4716
PSWW12 = 000016 #11-1229 #22-2240 #46-4047 #61-4716
PSWW13 = 000017 #11-1229 #22-2240 #46-4047 #61-4716
PSWW2 = 000006 #11-1229 #22-2240 #46-4047 #61-4716
PSWW3 = 000007 #11-1229 #22-2240 #46-4047 #61-4716
PSWW4 = 000010 #11-1229 #22-2240 #46-4047 #61-4716
PSWW5 = 000011 #11-1229 #22-2240 #46-4047 #61-4716
PSWW6 = 000012 #11-1229 #22-2240 #46-4047 #61-4716
PSWW7 = 000013 #11-1229 #22-2240 #46-4047 #61-4716
PUDADR 014410 R #62-4811 *63-4887 63-4916 *63-5003 65-5116 66-5199
PULSE = 000020 #11-1229 #22-2240 #46-4047 #61-4716
PUTR50 017266 R 69-5418 69-5418 69-5425 69-5425 #69-5449
PUTR51 017276 R 69-5450 69-5450 #69-5458
PUTSTR 017256 R 69-5412 69-5412 69-5414 69-5414 69-5416 69-5416 69-5423 69-5423 #69-5440
69-5441
QIOSTS 014470 R #62-4821 68-5393 68-5396
QSIZE = 000023 #11-1229 #22-2240 #46-4047 #61-4716
Q.IOAE = 000012 #8-473 #11-1251 #35-3246
Q.IOEF = 000006 #8-473 #11-1251 #35-3246
Q.IOFN = 000002 #8-473 #11-1251 #35-3246
Q.IOLU = 000004 #8-473 #11-1251 #35-3246
Q.IOPL = 000014 #8-473 *9-677 *9-688 #11-1251 *35-3237 #35-3246
Q.IOPR = 000007 #8-473 #11-1251 #35-3246
Q.IOSB = 000010 #8-473 #11-1251 #35-3246
RAMIS0 = 010000 #11-1229 #22-2240 #46-4047 #61-4716
RAMLOD = 000003 #23-2329 32-2812
RAMPAR = 000010 #23-2345 35-3171 35-3195 39-3560
RCVBLK 014352 R #62-4808 63-4866 63-4898
REDHDR 016660 R 64-5058 64-5058 #68-5337
REDLBL 016722 R 64-5054 64-5054 66-5192 66-5192 #68-5359
REQBLK 014356 R #62-4809 62-4810 63-4957 65-5070 66-5251 67-5295 67-5296 69-5417
REQTSK 016506 R 66-5242 #67-5292
RETALL 016416 R #66-5268
RETBUF 016440 R 64-5018 64-5018 66-5240 66-5240 66-5269 #66-5274
RETNOD 016330 R 63-5008 #66-5249 67-5306
RETRY = 000005 #8-447 9-579 #11-1238 11-1294
RETXXX 016720 R 68-5330 68-5332 #68-5355
RFMAD0 = 100000 #11-1229 #22-2240 #46-4047 #61-4716
RFMAD1 = 040000 #11-1229 #22-2240 #46-4047 #61-4716
RFMAD2 = 020000 #11-1229 #22-2240 #46-4047 #61-4716
RFMAD3 = 010000 #11-1229 #22-2240 #46-4047 #61-4716
RM = 000010 #11-1229 #22-2240 #46-4047 #61-4716
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
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 12
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
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 = 000101 #3-109 #3-112 3-120
RSX$$K = 000126 #3-105
RSX$$V = 000015 #3-100
RWRBLK 016754 R 68-5352 68-5352 68-5364 68-5364 #68-5373
RWRHDR 016676 R 68-5339 #68-5349
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 11-1298 11-1301 11-1303 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 11-1307 11-1310
19-2014 19-2015 21-2082 21-2083 32-2867 33-2977 33-2981
R50TBL 017350 R 69-5464 #69-5479
SCD = 000040 #11-1229 #22-2240 #46-4047 #61-4716
SETLUN 016110 R #66-5175
SETSTD 015600 R #65-5068
SF.IR = 040000 #61-4750 67-5294
SF.TA = 000001 #61-4749 67-5294
SNSTR 004224 R 19-2019 19-2019 #19-2032 20-2056 20-2056 21-2167 21-2167
SSTSCR 013136 R 52-4284 52-4284 52-4303 52-4303 #53-4389
SSTSLP 007164 R 32-2730 32-2730 #35-3135
STAT = 174434 #11-1229 #22-2240 #46-4047 #61-4716
STATD = 000034 #3-127
STATUS = 000022 #11-1229 #22-2240 #46-4047 #61-4716
STDADR = 014370 R #62-4810 65-5068 66-5268 *66-5272 67-5293 69-5419
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 13
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
STSWD = ****** GX *19-1951 *19-2020 19-2023 19-2024 *19-2027 *21-2085 *21-2086
SWR = 177570 #11-1229 #22-2240 #46-4047 #61-4716
SWSLLT = 100000 #11-1229 #22-2240 #46-4047 #61-4716
SYFLAG 014351 R #62-4807 63-4929 *63-4932
SYMNTD 015102 R 63-4889 63-4911 #63-4915
SYMNT1 015146 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 015324 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 #11-1229 #22-2240 #46-4047 #61-4716
TENAD2 = 174412 #11-1229 #22-2240 #46-4047 #61-4716
TESTLP 010164 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 015720 R #65-5103 65-5163
TNFERR 015414 R 63-4993 #63-5006
TOBM = 000004 #11-1229 #22-2240 #46-4047 #61-4716
TOIP = 000002 #11-1229 #22-2240 #46-4047 #61-4716
TOIT = 000001 #11-1229 #22-2240 #46-4047 #61-4716
TO10 = 000200 #11-1229 #22-2240 #46-4047 #61-4716
TO10AD = 174420 #11-1229 #22-2240 #46-4047 #61-4716
TO10BC = 174414 #11-1229 #22-2240 #46-4047 #61-4716
TO10BM = 000001 #11-1229 #22-2240 #46-4047 #61-4716
TO10DB = 000400 #11-1229 #22-2240 #46-4047 #61-4716
TO10DN = 100000 #11-1229 #22-2240 #46-4047 #61-4716
TO10DT = 174424 #11-1229 #22-2240 #46-4047 #61-4716
TO10ER = 020000 #11-1229 #22-2240 #46-4047 #61-4716
TO10PK = ****** GX 19-1991
TO11 = 000100 #11-1229 #22-2240 #46-4047 #61-4716
TO11AD = 174422 #11-1229 #22-2240 #46-4047 #61-4716
TO11BC = 174416 #11-1229 #22-2240 #46-4047 #61-4716
TO11BM = 020000 #11-1229 #22-2240 #46-4047 #61-4716
TO11DB = 004000 #11-1229 #22-2240 #46-4047 #61-4716
TO11DN = 000200 #11-1229 #22-2240 #46-4047 #61-4716
TO11DT = 174426 #11-1229 #22-2240 #46-4047 #61-4716
TO11ER = 000002 #11-1229 #22-2240 #46-4047 #61-4716
TRE = 040000 #8-358 10-713
TSKFND 015446 R 63-4985 #64-5025
TSKLUN = 000002 #61-4754 63-4880 63-4885 63-5001 68-5393
TSKMSG 017376 R 69-5415 #69-5488
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 14
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
TSTMOD = 000001 #23-2327
TTBERR 015706 R #65-5101 65-5146
TTPEN = ****** GX 8-455 11-1245 18-1935 27-2502 49-4135 62-4799
TYPBUF 014474 R #62-4822 69-5410 69-5429
TYPMSG 017054 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 017340 R 69-5458 #69-5477
UF.TL = ****** GX 63-4996
UNASG1 = 000032 #11-1229 #22-2240 #46-4047 #61-4716
UNASG2 = 000033 #11-1229 #22-2240 #46-4047 #61-4716
UNASG3 = 000034 #11-1229 #22-2240 #46-4047 #61-4716
UNASG4 = 000035 #11-1229 #22-2240 #46-4047 #61-4716
UNASG5 = 000036 #11-1229 #22-2240 #46-4047 #61-4716
UNASG6 = 000037 #11-1229 #22-2240 #46-4047 #61-4716
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
U.UN = ****** GX 63-4918 63-5001 66-5207
U.VA = ****** GX 63-4888 63-4998
VFCFF 006730 R 33-2944 #33-3001
VFCTBL 006726 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 #11-1229 #22-2240 #46-4047 #61-4716
WFDNR 000416 RG #8-469 9-684
WFDTD 002362 R #11-1249 11-1339
WFDTQ 002356 R #11-1247 11-1286
WFEF1 003314 R #18-1924 19-1937
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 15
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
WFMKT 002420 R #11-1255 11-1358
WLE = 004000 #8-402 10-717 10-722
WRL = 004000 #8-389
WRTHDR 016672 R 66-5235 66-5235 68-5331 68-5331 #68-5343
W.TSEF = 000002 #8-458 #8-464 #8-470 #11-1247 #11-1249 #11-1255
ZSTOP = 040000 #11-1229 #22-2240 #46-4047 #61-4716
$CDINT 013566 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 = 000001 #1-55 10-1187
$DTE = 000001 #1-46
$DTINT 002774 RG #11-1366
$FE = 000001 #1-41
$F11 = 000001 #1-42
$LPINT 010454 RG #39-3490
$LP20 = 000001 #1-37
$MUL 000000 RG #6-237
$RP04 = 000001 #1-40
$RX11 = ****** 12-1449
$TOP10 = 000001 #1-35 1-53 3-110
$TOP20 = ****** 1-61 3-117
$T1091 = ****** 1-49 1-54 3-111
$$ = 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 #11-1288
11-1288 #11-1342 11-1342 #11-1437 11-1437 #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 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
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 16
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
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 #11-1251 11-1251 #11-1251
11-1251 #11-1251 11-1251 #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 11-1247 11-1247 11-1249 11-1249 11-1251 11-1251
11-1251 11-1251 11-1251 11-1251 11-1251 11-1251 11-1253 11-1253 11-1253
11-1253 11-1253 11-1255 11-1255 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
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 #11-1247 11-1247 11-1247 #11-1247 #11-1249
11-1249 11-1249 #11-1249 #11-1251 11-1251 11-1251 #11-1251 11-1251 11-1251
#11-1251 11-1251 11-1251 #11-1251 11-1251 11-1251 #11-1251 11-1251 11-1251
#11-1251 11-1251 11-1251 #11-1251 11-1251 #11-1253 11-1253 11-1253 #11-1253
11-1253 11-1253 #11-1253 11-1253 11-1253 #11-1253 11-1253 11-1253 #11-1253
#11-1255 11-1255 11-1255 #11-1255 #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
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 17
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
$$$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 #11-1229 #22-2240 #46-4047 #61-4716
.CECLK = 004000 #11-1229 #22-2240 #46-4047 #61-4716
.CLRMR = 006000 #11-1229 #22-2240 #46-4047 #61-4716
.CLRUN = 010000 #11-1229 #22-2240 #46-4047 #61-4716
.COMEF = ****** GX 10-1158 19-1942 35-3141 52-4298 53-4393
.CONBT = 012000 #11-1229 #22-2240 #46-4047 #61-4716
.CRPFL = ****** GX 52-4242 *52-4245
.CRTSK = ****** GX 30-2636 51-4223 63-4883
.CSHRG = 164000 #11-1229 #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 #11-1229 #22-2240 #46-4047 #61-4716
.DSACF = 066000 #11-1229 #22-2240 #46-4047 #61-4716
.DSIOJ = 065000 #11-1229 #22-2240 #46-4047 #61-4716
.EIOJA = 067000 #11-1229 #22-2240 #46-4047 #61-4716
.FEACK 004242 RG #20-2041
.FEST 004346 RG #21-2068
.GFNR = 102000 #11-1229 #22-2240 #46-4047 #61-4716
.INICL = 070000 #11-1229 #22-2240 #46-4047 #61-4716
.IRLTC = 014000 #11-1229 #22-2240 #46-4047 #61-4716
.LCRDL = 052000 #11-1229 #22-2240 #46-4047 #61-4716
.LCRDR = 051000 #11-1229 #22-2240 #46-4047 #61-4716
.LCRM1 = 057000 #11-1229 #22-2240 #46-4047 #61-4716
.LCRM2 = 056000 #11-1229 #22-2240 #46-4047 #61-4716
.LCRM3 = 055000 #11-1229 #22-2240 #46-4047 #61-4716
.LCRM4 = 054000 #11-1229 #22-2240 #46-4047 #61-4716
.LCRM5 = 053000 #11-1229 #22-2240 #46-4047 #61-4716
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 18
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
.LDAR = 077000 #11-1229 #22-2240 #46-4047 #61-4716
.LDBRL = 043000 #11-1229 #22-2240 #46-4047 #61-4716
.LDBRR = 042000 #11-1229 #22-2240 #46-4047 #61-4716
.LDCK1 = 046000 #11-1229 #22-2240 #46-4047 #61-4716
.LDCK2 = 047000 #11-1229 #22-2240 #46-4047 #61-4716
.LDDIS = 045000 #11-1229 #22-2240 #46-4047 #61-4716
.LDRJD = 064000 #11-1229 #22-2240 #46-4047 #61-4716
.LDRJV = 063000 #11-1229 #22-2240 #46-4047 #61-4716
.LDRM1 = 060000 #11-1229 #22-2240 #46-4047 #61-4716
.LDRM2 = 061000 #11-1229 #22-2240 #46-4047 #61-4716
.LDRM3 = 062000 #11-1229 #22-2240 #46-4047 #61-4716
.LDSEL = 044000 #11-1229 #22-2240 #46-4047 #61-4716
.LPPFL = ****** GX 31-2664 *31-2667
.MEMRS = 076000 #11-1229 #22-2240 #46-4047 #61-4716
.PCAB1 = 150000 #11-1229 #22-2240 #46-4047 #61-4716
.PCAB2 = 151000 #11-1229 #22-2240 #46-4047 #61-4716
.PCAB3 = 152000 #11-1229 #22-2240 #46-4047 #61-4716
.PCAB4 = 153000 #11-1229 #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 #11-1229 #22-2240 #46-4047 #61-4716
.RCRM2 = 146000 #11-1229 #22-2240 #46-4047 #61-4716
.RCRM3 = 145000 #11-1229 #22-2240 #46-4047 #61-4716
.RCRM4 = 144000 #11-1229 #22-2240 #46-4047 #61-4716
.RCSPF = 141000 #11-1229 #22-2240 #46-4047 #61-4716
.RDJ14 = 134000 #11-1229 #22-2240 #46-4047 #61-4716
.RDJ71 = 135000 #11-1229 #22-2240 #46-4047 #61-4716
.RDMAB = 133000 #11-1229 #22-2240 #46-4047 #61-4716
.RPELC = ****** GX 10-1160 *10-1165
.RPELQ = ****** GX 10-1166
.RPUNT = ****** GX 19-1999
.SECLK = 003000 #11-1229 #22-2240 #46-4047 #61-4716
.SETMR = 007000 #11-1229 #22-2240 #46-4047 #61-4716
.SETRN = 011000 #11-1229 #22-2240 #46-4047 #61-4716
.SSCLK = 002000 #11-1229 #22-2240 #46-4047 #61-4716
.STDTA = ****** GX 66-5256
.STDTZ = ****** GX *66-5254 66-5255
.STPCL = 000000 #11-1229 #22-2240 #46-4047 #61-4716
.STRCL = 001000 #11-1229 #22-2240 #46-4047 #61-4716
.TPDBA = ****** GX 65-5084
.TPDEA = ****** GX 65-5092
.WRMBX = 071000 #11-1229 #22-2240 #46-4047 #61-4716
..AKCR 013720 RG #59-4647
..AKLP 011372 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 011614 RG 36-3383 36-3383 39-3554 39-3554 #44-3945
..DOL1 011600 RG 34-3065 34-3065 39-3509 39-3509 #44-3939
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 19
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
..DQRN = ****** GX 9-540 9-540 11-1288 11-1288 19-1956 19-1956 19-1985 19-1985 33-2905
33-2905
..DSEV = ****** GX 10-771 10-771 11-1437 11-1437 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 11-1441 39-3580 56-4577
..IODN = ****** GX 9-673 9-673 11-1342 11-1342 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 011452 RG 33-2994 33-2994 40-3734 40-3734 #43-3868
..SACK = ****** GX 21-2105 32-2762 32-2762
..SPCR 013676 RG #58-4625
..SPLP 011220 RG 33-2960 33-2960 35-3200 35-3200 #41-3768
..STCR 013654 RG #57-4601
..STIN = ****** GX 19-2035 35-3301 35-3301 52-4272 52-4272 53-4487 53-4487
..STLP 011010 RG #40-3651
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 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 #11-1228 11-1288 11-1342 11-1437 #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 #11-1228
#11-1286 #11-1339 #11-1356 #11-1357 #11-1358 #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 #11-1286 #11-1339 #11-1356
#11-1357 #11-1358 #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 #11-1228 #11-1253 #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 #11-1247 11-1247 11-1247
#11-1249 11-1249 11-1249 #11-1251 11-1251 11-1251 11-1251 11-1251 11-1251 11-1251
11-1251 11-1251 #11-1253 11-1253 11-1253 11-1253 11-1253 11-1253 #11-1255 11-1255
11-1255 #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
DRIVERS10 CREATED BY MACRO ON 3-APR-86 AT 20:50 PAGE 21
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
PUSH #22-2239 32-2701 32-2784 32-2824 32-2863 35-3136 35-3297 36-3381 37-3405 39-3492
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 #11-1251 #11-1251 #35-3246 #35-3246
QDPB$S #68-5393 68-5393 #69-5431 69-5431
QIOSY$ #8-343 #8-345 #11-1227 #11-1230 #22-2238 #22-2241 #61-4715 #61-4717
QIOW$ #8-343 8-473 #11-1228 11-1251 #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 #11-1228 #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 #11-1228 #11-1247 #11-1249 #11-1255
WTSE$S #22-2238 36-3349 #46-4045
$DEF #11-1227 #11-1229 #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 #11-1228 #11-1245 #18-1914 #18-1935 #22-2239 #27-2502 #46-4046 #49-4135
#61-4715 #62-4799