Trailing-Edge
-
PDP-10 Archives
-
BB-P363B-SM_1985
-
mcb/drivers/cr.lst
There are no other files named cr.lst in the archive.
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25
CR.M11 30-DEC-82 02:07 TABLE OF CONTENTS
1508 Macro Calls & Dispatch Tables
1563 Data Base
1694 Start / Stop Device (FC.CTL)
1786 Timer handler (FC.TIM)
1834 Resource return
1849 Message Received (FC.RCP)
2474 Support Routines
2563 Get and Put Data Bytes
2797 Interrupt Service
3136 Hollerith - ASCII Conversion Tables
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 1
CR.M11 30-DEC-82 02:07
1
2 .ENABL LC
3 .title CR CR11 LLC and Driver
4 .ident "X02070"
5
6 ; COPYRIGHT (c) 1980, 1981, 1982
7 ; DIGITAL EQUIPMENT CORPORATION
8 ; Maynard, Massachusetts
9 ;
10 ; This software is furnished under a license and may be used
11 ; and copied only in accordance with the terms of such license
12 ; and with the inclusion of the above copyright notice. This
13 ; software or any other copies thereof may not be provided or
14 ; otherwise made available to any other person. No title to
15 ; and ownership of the software is hereby transferred.
16 ;
17 ; The information in this software is subject to change
18 ; without notice and should not be construed as a commitment
19 ; by DIGITAL EQUIPMENT CORPORATION.
20 ;
21 ; DIGITAL assumes no responsibility for the use or reliability
22 ; of its software on equipment which is not supplied by
23 ; DIGITAL.
24 ;
25 ;
26 ;
27 ; This crock was originally foisted upon the unsuspecting
28 ; world in June, 1978 by R. South who was preoccupied
29 ; by travels through the legendary dungeon of Mordatz Idu.
30 ;
31 ; X01010 thru X01170 omitted because following update constituted
32 ; such a major change that previous audit trail
33 ; was rendered meaningless - or at best useless.
34 ;
35 ; X02000 10-June-81 Buren Hoffman
36 ; Extensive modifications to correspond to MCB V3.0,
37 ; and a major facelift to aid maintainability.
38 ;
39 ; X02010 12-June-81 Buren Hoffman
40 ; Fixed old calls to $CCBGT and $CCBRT to use new
41 ; $CBBGT and $CBBRT.
42 ;
43 ; X02020 Added NOOP dispatches for Power-Failure and Initialization
44 ; entries in the Timer Dispatch table.
45 ;
46 ; X02030 1-July-81
47 ; General update to fix numerous bugs found via desk checking.
48 ;
49 ; X02040 8-July-81 Buren Hoffman
50 ; Call TIMPIN on initialization
51 ;
52 ; X02050 16-July-81 Buren Hoffman
53 ; General upgrade to include fixes incorporated into LE.
54 ;
55 ; x02060 10-sept-81 Ron Platukis
56 ; -fix bugs in interrupt and synch level code.
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 1-1
CR.M11 30-DEC-82 02:07
57 ;
58 ; x02070 2-december-81 Ron Platukis
59 ; reduce small buffer size from 80. to 60. bytes.
60
61
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 2
CR.M11 30-DEC-82 02:07 MACRO CALLS & DISPATCH TABLES
63 .sbttl Macro Calls & Dispatch Tables
64
65 .mcall NURDF$,CCBDF$,SYNDF$,SCDF$
66 .mcall PHD$B,DSP$,DSP$B,DSP$E,PUSH$S,POP$S,MAP$,SMAP$,DAT$,END$
67 000000' NURDF$
68 000000' CCBDF$
69 000000' SYNDF$
70 000000' SCDF$
71
72 ;+
73 ; Identify us to mcb
74 ;+
75 000000' PHD$B CR
76 000040' PHD$D CRMCB
77 000020' PHD$E
78
79 000000' .psect $PLIT$,D,RO
80
81 ;+
82 ; Dispatch Tables
83 ;-
84 000000' CRMCB: DSP$B
85 000000' DSP$ ; Asynchronous trap
86 000002' DSP$ FC.XME ; Xmit enable
87 000004' DSP$ FC.RCE ; Receive enable
88 000006' DSP$ FC.KIL ; Kill
89 000010' DSP$ FC.CTL,CRCTL ; Control (start / stop)
90 000012' DSP$ FC.TIM,CRTIM ; Timeout (clock)
91 000014' DSP$ FC.XCP,CRDONE ; Xmit complete (resource ret)
92 000016' DSP$ FC.RCP,CRDSP ; Receive complete (arriving data)
93 000020' DSP$ FC.KCP ; Kill complete
94 000022' DSP$ FC.CCP ; Control complete
95 000024' DSP$E
96
97 ;+
98 ; Control Dispatch
99 ;-
100 000024' CRCTL: CALLR @1$(R3)
101 000030' 1$: DSP$B
102 000030' DSP$
103 000032' DSP$ FM.STR,DVOPEN ; Start device
104 000034' DSP$ FM.STP,DVCLOS ; Stop device
105 000036' DSP$E
106
107 ;+
108 ; Timer Dispatch
109 ;-
110 000036' CRTIM: CALLR @1$(R3)
111 000042' 1$: DSP$B
112 000042' DSP$ FM.STM ;Short timer
113 000044' DSP$ FM.LTM,CLOCK ;Long timer
114 000046' DSP$ FM.PWF,NOOP ;Power failure
115 000050' DSP$ FM.PIN,TIMPIN ;Initialization
116 000052' DSP$E
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 3
CR.M11 30-DEC-82 02:07 DATA BASE
118 .sbttl Data Base
119 ;+
120 ; CR Data Base Offsets and Values
121 ;-
122
123 000052' DAT$ DSR
124 000000 000001 C.TIMC: .blkb 1 ; TIMER BYTE
125 000001 000001 C.NRD: .blkb 1 ; NRD'S PIX
126 000002 C.CSR: CSR$W ; ONE WORD CSR POINTER
127 000020 DTXTSZ= 16. ; DATA/FEATURES PROCESS CONTEXT ALLOCATED
128 000004 000020 C.DTXT: .blkw DTXTSZ ; CONTEXT BLOCK FOR DA/FEATURES PROCESS
129 000044 000001 C.DTXL: .blkb 1 ; NO. WORDS ON STACK AT SLEEP TIME
130 000046 .even
131 000046 000001 C.DFSP: .blkw 1 ; STACK ORIGIN
132
133 000050 C.SYN: SYN$X ; SYNCH BLOCK
134 000056 000001 C.RST: .blkw 1 ; CR11 STATUS READ AT INTERRUPT
135 000060 000001 C.COLC: .blkb 1 ; PHYSICAL COLUMN COUNT
136 000061 000001 C.HUNG: .blkb 1 ; DEVICE HUNG TIMER
137 000062 000002 C.PUBP: .blkw 2 ; BUFFER PTR DOUBLEWORD
138 000066 000001 C.SGHD: .blkw 1 ; CURRENT SEGMENT HEADER ADDRESS
139 000070 000001 C.LDAT: .blkw 1 ; LAST DATA ITEM READ
140 000072 000001 C.PUBS: .blkw 1 ; BUFFER INPUT COUNTER
141 000074 000001 C.NRDA: .blkw 1 ; BEG OF NURD MESSAGE(ADDRESS)
142 000076 C.DDMQ: LST$D ; CCB'S QUEUED FOR INPUT
143 000102 000001 C.ASTS: .blkw 1 ; ACTION STATUS BIT MAP
144 000001 CA.CLO== 1 ; CLOSED
145 000002 CA.PAU = 2 ; PAUSED
146 000004 CA.ADN = 4 ; ABORT WHEN DONE WITH DDM QUEUE
147 000010 CA.ABO = 10 ; ABORTING
148 000020 CA.ABE = 20 ; CLEAR ABORT ON EOF (ELSE ON CLEAR)
149 000040 CA.EOF = 40 ; CURRENT MESSAGE HAS EOF
150 000100 CA.HOP = 100 ; HOPPER CHECK - EMPTY INPUT OR FULL OUTPUT
151 000200 CA.MOT = 200 ; MOTION CHECK - PICK, STACK, OR MOTION ERROR
152 000400 CA.TER = 400 ; TIMING ERROR - DATA OVERRUN CONDITION
153 000700 CA.ERR= CA.HOP!CA.MOT!CA.TER ; SUMMARY - HARD ERROR
154 001000 CA.OFL = 1000 ; READER OFFLINE
155 002000 CA.IVP = 2000 ; INVALID PUNCH - MULTIPUNCH
156 004000 CA.TMO = 4000 ; DEVICE TIME OUT
157 010000 CA.syn = 10000 ; synch request in progress flag
158 100000 CA.XOF = 100000 ; READER XOF'D
159 000104 000001 C.CDCT: .blkw 1 ; PHYSICAL CARD COUNT
160
161 ; MISCELLANEOUS ITEMS
162 000106 000001 C.IOCN: .blkw 1 ; OUTSTANDING IO COUNT
163 000110 000001 C.IOWT: .blkw 1 ; CLOSE WAIT FLAG = CLOSE CCB
164
165 ; CONTROL MESSAGE PROCESSING DATA BASE
166 000112 C.CMSQ: LST$D ; CONTROL MESSAGE QUEUE
167 000116 000001 C.RECO: .blkb 1 ; CONTROL MESSAGE RESOURCE ERROR FLAG
168 000117 000001 C.RATT: .blkb 1 ; PENDING ATTENTION MESSAGE FLAG - REASON CODE
169 000120 000001 C.CAPP: .blkb 1 ; PENDING CAPABILITIES MESSAGE FLAG
170 000121 000001 C.STRT: .blkb 1 ; PENDING READ START
171
172 ; DATA & FEATURES PROCESSING DATA BASE
173 000122 C.DLCQ: LST$D ; CCB'S QUEUED INTO DLC
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 3-1
CR.M11 30-DEC-82 02:07 DATA BASE
174 000126 000001 C.MFLG: .blkb 1 ; CURRENT NURD MESSAGE FLAGS
175 000127 000001 C.CAPN: .blkb 1 ; CURRENT INDEX INTO CAPABILITIES LIST
176 000130 000001 C.NFSP: .blkb 1 ; NO. FEATURE SPECS IN CURRENT MSG
177 000132 .even
178 000132 000002 C.DMAD: .blkw 2 ; DATA MSG ADDRESS DOUBLEWORD (PTR)
179 000136 000001 C.DMBS: .blkw 1 ; DATA MSG BUFFER SIZE
180 000140 000002 C.DMSQ: .blkb 2 ; LAST GOOD, CURRENT DATA SEQ NUMBERS
181 000142 000001 C.PBRC: .blkb 1 ; TEMP BYTE
182 000144 .even
183 000144 C.MSGQ: LST$D ; OUTGOING MSG QUEUE
184 000150 000002 C.MSGA: .blkw 2 ; CURRENT MSG BUFFER ADDRESS DOUBLEWORD
185 000154 000001 C.MSGS: .blkw 1 ; CURRENT MSG BUFFER SIZE
186
187 ; FEATURES
188 ; LP11 COMMON FEATURE LIST
189 000156 000001 C.CFET: .blkb 1 ; NUMBER OF COMMON FEATURES
190 000157 000001 .blkb 1 ; FEATURE FE.DAT SUPPORTED
191 000160 000001 .blkb 1 ; FEATURE FE.SER NOT SUPPORTED
192 000161 000001 .blkb 1 ; FEATURE FE.LCR NOT SUPPORTED
193 000162 000001 .blkb 1 ; FEATURE FE.FWD NOT SUPPORTED
194 000163 000001 .blkb 1 ; FEATURE FE.EOF SUPPORTED
195 000164 000001 .blkb 1 ; FEATURE FE.DVT NOT SUPPORTED
196 000165 000001 .blkb 1 ; FEATURE FE.TRN NOT SUPPORTED
197 000166 000001 .blkb 1 ; FEATURE FE.FNM NOT SUPPORTED
198 000167 000001 .blkb 1 ; FEATURE FE.DWD SUPPORTED
199 000011 CCFETL== .-C.CFET-1
200
201 000170 000001 C.DFET: .blkb 1 ; NUMBER OF DEVICE SPECIFIC FEATURES
202 000171 000001 .blkb 1 ; FEATURE 129 NOT DEFINED
203 000172 000001 .blkb 1 ; FEATURE CD.CWD SUPPORTED
204 000002 CDFETL== .-C.DFET-1
205
206 ; FEATURE BLOCKS
207 000000 F.FSB = 0 ; (BM)FEATURES STATUS BYTE
208 000000 FB.CL0 = 0 ; CLASS 0 FEATURE => <BIT> FORM
209 000001 FB.CL1== 1 ; CLASS 1 FEATURE => <CNT><...> FORM
210 000002 FB.WRD = 2 ; FEATURE IS A WORD AND
211 ; F.FCV IS A DATABASE OFFSET TO IT
212 000004 FB.STR = 4 ; FEATURE IS A STRING
213 ; F.FCV IS THE LENGTH
214 ; CURRENT VALUE BEGINS AT F.FCV+1
215 ; STANDARD VALUE(IF ANY) BEGINS AT F.FCV+1+(F.FC
216 000010 FB.STE = 10 ; STANDARD VALUE EXISTS
217 000020 FB.SST = 20 ; STANDARD IS SET
218 000040 FB.CP = 40 ; CHANGE PENDING
219 000100 FB.CA = 100 ; CHANGE ALLOWED
220 000001 F.FCV = 1 ; FEATURE CURRENT VALUE BYTE
221 000002 F.FSV = 2 ; FEATURE STANDARD VALUE BYTE
222
223 ; DATA MODE
224 000173 000001 CR.DAT::.blkb 1
225 000131 CRDATS== FB.CL1!FB.CA!FB.SST!FB.STE ; INITIAL STATUS OF LE.DOF LE.DAT
226 000174 000001 .blkb 1 ; ASCII
227 000175 000001 .blkb 1 ; ASCII IS STD
228
229 ; EOF RECOGNITION
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 3-2
CR.M11 30-DEC-82 02:07 DATA BASE
230 000176 000001 CR.EOF::.blkb 1
231 000101 CREOFS== FB.CL1!FB.CA ; INITIAL STATUS OF CR.EOF
232 000177 000001 .blkb 1
233
234 ; DEVICE WIDTH
235 000200 000001 CR.DWD::.blkb 1
236 000201 000001 .blkb 1 ; STD WIDTH
237
238 ; DEVICE SPECIFIC FEATURES
239 ; CARD WIDTH
240 000202 000001 CR.CWD::.blkb 1
241 000131 CRCWDS== FB.CL1!FB.CA!FB.STE!FB.SST ; INITIAL STATUS OF CR.CWD
242 000203 000001 .blkb 1
243 000204 000001 .blkb 1
244
245 000205 END$
246
247 000000' .psect $CODE$,I,RO
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 4
CR.M11 30-DEC-82 02:07 START / STOP DEVICE (FC.CTL)
249 .sbttl Start / Stop Device (FC.CTL)
250 ;+
251 ; Initialize unit
252 ; R4 CCB
253 ; R5 Database address
254 ;-
255 000000' DVOPEN: PUSH$S R4 ; START DEVICE
256 000002' 116465 000011 000001 MOVB C.PIX(R4),C.NRD(R5) ; SAVE NRD'S PIX
257 000010' 032765 000001 000102 BIT #CA.CLO,C.ASTS(R5) ; CLOSED?
258 000016' 001470 BEQ 11$ ; NO, THEN HOW CAN IT BE OPENED?
259 000020' 005075 000002 CLR @C.CSR(R5) ; BE VERY PESSIMISTIC
260 000024' 012765 000002 000102 MOV #CA.PAU,C.ASTS(R5) ; INIT THE ACTION STATUS WORD
261 000032' 005065 000064 CLR C.PUBP+2(R5) ; FLUSH CURRENT READ BUFFER
262 000036' 105065 000044 CLRB C.DTXL(R5) ; Clear saved context indicator
263 000042' 005065 000132 CLR C.DMAD(R5) ; FLUSH SOURCE BUF IN USE
264 000046' 005065 000134 CLR C.DMAD+2(R5)
265 000052' 005065 000136 CLR C.DMBS(R5)
266 000056' 005065 000150 CLR C.MSGA(R5) ; INIT CURRENT OUT MSG
267 000062' 005065 000152 CLR C.MSGA+2(R5)
268 000066' 005065 000154 CLR C.MSGS(R5)
269 000072' 005065 000106 CLR C.IOCN(R5) ; INIT OUTSTANDING IO COUNT
270 000076' 005065 000110 CLR C.IOWT(R5) ; INIT CLOSE WAIT FLAG
271 000102' 105065 000060 CLRB C.COLC(R5) ; INIT COLUMN COUNT
272 000106' 105065 000061 CLRB C.HUNG(R5) ; INIT HUNG DEVICE TIMER
273 000112' 105065 000116 CLRB C.RECO(R5) ; INIT CONTROL RESOURCE ERROR FLAG
274 000116' 105065 000117 CLRB C.RATT(R5) ; INIT PENDING ATTENTION MSG FLAG
275 000122' 105065 000120 CLRB C.CAPP(R5) ; INIT PENDING CAPABILITIES MSG FLAG
276 000126' 105065 000121 CLRB C.STRT(R5) ; INIT PENDING READ FLAG
277 000132' 005065 000104 CLR C.CDCT(R5) ; INIT CARD COUNTER
278
279 ; Set all features with standards to std
280 000136' 012700 000156 MOV #C.CFET,R0 ; COMMON FEATURES
281 000142' 004767 000042 CALL 100$ ; DOO ALL
282 000146' 012700 000170 MOV #C.DFET,R0 ; DEVICE SPECIFIC FEATURES
283 000152' 004767 000032 CALL 100$ ; ALL OF THEM TOO
284 000156' 012703 000001 MOV #S.SSUC,R3 ; RETURN SUCCESS
285 000162' 105215 INCB (R5) ; START THE TIMER
286 000164' 004767 000000G CALL $LTMEN ; ...
287 000170' 000405 BR 20$
288
289 000172' 052765 000001 000102 10$: BIS #CA.CLO,C.ASTS(R5) ; NOTE REMAINING CLOSED
290 000200' 012703 177754 11$: MOV #S.ERBO,R3 ; FAILED TO OPEN
291 000204' 20$: POP$S R4 ; RESTORE POINTER FOR COMMAND CCB
292 000206' 000461 BR CTLXIT
293
294 ; Feature setting routine
295 000210' 060500 100$: ADD R5,R0 ; R0/FEATURE LIST OFFSET
296 000212' 005001 CLR R1
297 000214' 152001 BISB (R0)+,R1 ; GET NO. OF FEATURES
298 000216' 005003 110$: CLR R3
299 000220' 152003 BISB (R0)+,R3 ; GET ADDRESS OF FEATURE BLOCK
300 000222' 001403 BEQ 120$ ; EMPTY SLOT
301 000224' 060503 ADD R5,R3
302 000226' 004767 002746 CALL SETSTD ; SET IT TO STD
303 000232' 077107 120$: SOB R1,110$
304 000234' NOOP: RETURN
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 5
CR.M11 30-DEC-82 02:07 START / STOP DEVICE (FC.CTL)
306 ;+
307 ; Stop Unit
308 ;
309 ; R5 Database Address
310 ;-
311
312 000236' 004767 004774 DVCLOS: CALL $CRSTP ; STOP DEVICE
313 000242' 105015 CLRB (R5) ; STOP THE CLOCK
314 000244' 052765 000001 000102 BIS #CA.CLO,C.ASTS(R5) ; MARK AS CLOSED
315 000252' 004767 003330 CALL Q$PURG ; FLUSH THE QUEUES
316 000256' PUSH$S R4 ; SAVE COMMAND CCB POINTER
317
318 000260' 10$: DEQ$ C.CMSQ,20$ ; FLUSH ANY OUTSTANDING CONTROL MSGS
319 000300' 112764 000004 000012 MOVB #FC.RCE,C.FNC(R4)
320 000306' 004767 000000G CALL $SCHED
321 000312' 000762 BR 10$
322
323 000314' 20$: POP$S R4 ; RESTORE COMMAND CCB POINTER
324 000316' 010465 000110 MOV R4,C.IOWT(R5) ; SET THE CLOSE WAIT FLAG
325
326 ; COMPLETE CLOSE ONLY WHEN ALL CCB'S RETURNED
327 000322' 005765 000106 STOPWT: TST C.IOCN(R5)
328 000326' 001402 BEQ 10$
329 000330' 105215 INCB (R5)
330 000332' RETURN
331
332 000334' 105015 10$: CLRB (R5) ; FLUSH THE TIMER FCNS
333 000336' 016504 000110 MOV C.IOWT(R5),R4 ; GET THE CLOSE CCB BACK
334 000342' 005065 000110 CLR C.IOWT(R5) ; CLEAN UP BEHIND OURSELVES
335 000346' 012703 000001 MOV #S.SSUC,R3 ; CLOSE NEVER FAILS
336
337 000352' 010364 000014 CTLXIT: MOV R3,C.STS(R4)
338 000356' 112764 000022 000012 MOVB #FC.CCP,C.FNC(R4)
339 000364' CALLR $SCHED
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 6
CR.M11 30-DEC-82 02:07 TIMER HANDLER (FC.TIM)
341 .sbttl Timer handler (FC.TIM)
342 ;+
343 ; R5 Database address
344 ;-
345 000370' 005765 000110 CLOCK: TST C.IOWT(R5) ; CHECK FOR CLOSE-WAIT
346 000374' 001402 BEQ 5$
347 000376' CALLR STOPWT ; PREEMPTS ALL ELSE
348
349 000402' 105765 000116 5$: TSTB C.RECO(R5) ; CHECK CONTROL RESOURCE ERROR
350 000406' 001404 BEQ 10$
351 000410' 105065 000116 CLRB C.RECO(R5) ; YES - FLUSH THE FLAG
352 000414' 004767 000534 CALL MSGFIN ; RESTART THE PROCESS
353
354 000420' 105765 000044 10$: TSTB C.DTXL(R5) ; Check timesleep
355 000424' 001402 BEQ 20$ ; Nope
356 000426' 004767 004354 CALL ZZ$WAK ; Restart process - will return here
357 000432' 032765 001700 000102 20$: BIT #CA.ERR!CA.OFL,C.ASTS(R5) ; CHECK DEVICE PROBLEMS
358 000440' 001412 BEQ 30$ ; NOT BECAUSE OF DEVICE ERROR
359 000442' 032775 000400 000002 BIT #RDROFL,@C.CSR(R5) ; DEVICE ERROR WAS REASON
360 000450' 001006 BNE 30$ ; NOT YET RESTORED TO ONLINE
361 000452' 004767 003544 CALL SN$ALR ; CURE HS BEEN EFFECTED, NOTIFY USER
362 000456' 103403 BCS 30$ ; COULDN'T SEND ONE, COME BACK LATER
363 000460' 042765 001700 000102 BIC #CA.ERR!CA.OFL,C.ASTS(R5) ; FLUSH ERROR BUT LEAVE CA.PAU
364 ; USER MUST RESUME
365 000466' 105765 000121 30$: TSTB C.STRT(R5) ; CHECK PENDING READ START
366 000472' 001402 BEQ 40$
367 000474' 004767 004354 CALL $CRSTR ; START THE READER
368
369 000500' 105765 000061 40$: TSTB C.HUNG(R5) ; CHECK HUNG TIMER
370 000504' 001414 BEQ 50$ ; NOT SET
371 000506' 105365 000061 DECB C.HUNG(R5) ; COUNT THE TOCK
372 000512' 001011 BNE 50$ ; STILL OK
373 000514' 052765 004000 000102 BIS #CA.TMO,C.ASTS(R5) ; DEVICE IS COMATOSE
374 000522' 105765 000117 TSTB C.RATT(R5) ; CHECK PENDING ATTENTION MSG
375 000526' 001006 BNE 55$ ; YES - DON'T GENERATE ANOTHER
376 000530' 112765 000001 000117 MOVB #N.ASTC,C.RATT(R5) ; SET PENDING ATTENTION FLAG
377
378 000536' 105765 000117 50$: TSTB C.RATT(R5) ; CHECK PENDING ATTENTION MSG
379 000542' 001402 BEQ 60$
380 000544' 004767 003520 55$: CALL SN$ATT ; TRY TO SEND ONE
381
382 000550' 105765 000120 60$: TSTB C.CAPP(R5) ; CHECK PENDING CAPABILITIES MSG
383 000554' 001402 BEQ 70$
384 000556' 004767 004014 CALL SN$CAP ; TRY TO SEND ONE
385
386 000562' 105215 70$: INCB (R5) ; RESET THE CLOCK FOR THE NEXT TOCK
387 000564' RETURN
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 7
CR.M11 30-DEC-82 02:07 RESOURCE RETURN
389 .sbttl Resource return
390 ;+
391 ; Resource return
392 ;-
393
394 000566' 005365 000106 CRDONE: DEC C.IOCN(R5) ; COUNT THE RETURNED RESOURCE
395 000572' 002002 BGE 10$
396 000574' 005065 000106 CLR C.IOCN(R5) ; BLEW IT SOMEWHERE
397
398 000600' 005764 000026 10$: TST C.PRM2(R4) ; Discern buffer type
399 000604' 001402 BEQ 20$ ; Small data buffer
400 000606' CALLR $RDBRT ; Deallocate RDB and return
401 000612' 012701 000074 20$: MOV #60.,R1 ; Set buffer length
402 000616' CALLR $CBBRT ; Release CCB and buffer
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 8
CR.M11 30-DEC-82 02:07 MESSAGE RECEIVED (FC.RCP)
404 .sbttl Message Received (FC.RCP)
405 ;+
406 ; Dispatch according to the type of nurd message received.
407 ;
408 ; Inputs: R4 - Points to the first, or only CCB in chain
409 ; R5 - Points to CR database
410 ;
411 ; Outputs: Dispatches to message handler, or returns an
412 ; error if the type is illegal or out of range.
413 ; The called routine is responsible for queuing
414 ; messages to be returned to the higher level.
415 ;
416 ; Msg format: <msgtype><msgflgs><msgtxt.....>
417 ;-
418
419 000622' 032765 000001 000102 CRDSP: BIT #CA.CLO,C.ASTS(R5) ; DEVICE CLOSED?
420 000630' 001031 BNE 60$ ; YES, HENCE INACCESSIBLE
421 000632' MAP$ C.BUF(R4) ; GET MAPPING
422 000640' 016400 000020 MOV C.BUF+2(R4),R0 ; POINT TO CCB DATA BUFFER
423 000644' 111001 MOVB (R0),R1 ; GET NURD MESSAGE TYPE
424 000646' 042701 177760 BIC #^C<NM.TYP>,R1 ; ISOLATE JUST MESSAGE TYPE
425 000652' 020127 000004 CMP R1,#NRDOTR ; TYPE OUT OF RANGE?
426 000656' 103402 BLO 30$ ; NO, OKAY TO DISPATCH
427 000660' 012701 000004 MOV #NRDOTR,R1 ; YES, SPECIFY ILLEGAL NURD HANDLER
428 000664' 006301 30$: ASL R1 ; GET WORD OFFSET
429 000666' CALLR @40$(R1) ; DISPATCH TO MESSAGE PROCESSOR
430
431
432
433 000672' 000704' 40$: .word 50$ ; 0 - DATA MESSAGE
434 000674' 000704' .word 50$ ; 1 - ATTENTION (ILLEGAL IF REC'D)
435 000676' 000734' .word MSGDAT ; 2 - FEATURES MESSAGE
436 000700' 001064' .word MSGCTL ; 3 - CONTROL MESSAGE
437 000004 NRDOTR = <.-40$>/2
438 000702' 000704' .word 50$ ; N - ILLEGAL NURD TYPE SPEC
439
440 000704' 012764 177762 000014 50$: MOV #S.EIDM,C.STS(R4)
441 000712' 000403 BR 70$
442 000714' 012764 177767 000014 60$: MOV #S.EABO,C.STS(R4)
443 000722' 112764 000004 000012 70$: MOVB #FC.RCE,C.FNC(R4)
444 000730' CALLR $SCHED
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 9
CR.M11 30-DEC-82 02:07 MESSAGE RECEIVED (FC.RCP)
446 ;+
447 ; Queue incoming NURD Control and Features Messages
448 ;
449 ; R4 CCB
450 ; R5 Database address
451 ;-
452 000734' 032765 000010 000102 MSGDAT: BIT #CA.ABO,C.ASTS(R5) ; CHECK FOR ABORT STATE
453 000742' 001410 BEQ MSGQUE ; OK TO PROCEED
454 000744' 012764 177767 000014 MOV #S.EABO,C.STS(R4) ; DROP DATA ON THE FLOOR
455 000752' 112764 000004 000012 MOVB #FC.RCE,C.FNC(R4)
456 000760' CALLR $SCHED
457
458 000764' MSGQUE: ENQ$ C.DLCQ ; QUEUE THE PACKET
459 000776' 020465 000122 CMP R4,C.DLCQ(R5) ; WAS QUEUE EMPTY ?
460 001002' 001027 BNE 60$ ; NO, ROUTINES OF INTEREST ARE WORKING
461 001004' 105765 000044 TSTB C.DTXL(R5) ; Maybe waiting for packet ?
462 001010' 001024 BNE 60$ ; Could be
463
464 001012' 010665 000046 30$: MOV SP,C.DFSP(R5) ; SET THE STACK ORIGIN FOR THIS PROCESS
465 001016' 004767 002764 CALL RD$BYT ; EXTRACT MSG TYPE
466 001022' 010001 MOV R0,R1
467 001024' 004767 002756 CALL RD$BYT ; EXTRACT MSG FLAGS
468 001030' 010065 000126 MOV R0,C.MFLG(R5)
469 001034' 122701 000003 CMPB #NM.CTL,R1 ; DISTINGUISH CONTROL AND FEATURES
470 001040' 001003 BNE 40$ ; FEATURES
471 001042' 004767 000346 CALL CTLSYN ; NON-INTERRUPT CONTROL
472 001046' 000402 BR 50$
473
474 001050' 004767 001024 40$: CALL FTRSYN ; FEATURES
475 001054' 016504 000122 50$: MOV C.DLCQ(R5),R4 ; GET NEXT MSG
476 001060' 001354 BNE 30$ ; MORE
477 001062' 60$: RETURN ; EXIT
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 10
CR.M11 30-DEC-82 02:07 MESSAGE RECEIVED (FC.RCP)
479 ;+
480 ; NURD Control Message Handler
481 ;
482 ; R0 Buffer ptr: ->nurd msg type
483 ; R4 CCB
484 ; R5 Database address
485 ; KISAR6 Mapped to buffer
486 ;
487 ; Control msg format: <seq no.><command><result>
488 ;-
489 .enabl lsb
490 001064' 126427 000013 000004 MSGCTL: CMPB C.MOD(R4),#S$INT ; CHECK FOR INTERRUPT MSG
491 001072' 001402 BEQ 5$ ; THEY ARE PROCESSED NOW
492 001074' CALLR MSGQUE ; OTHERS ARE SYNCH'D WITH DATA STREAM
493
494 001100' 5$: ENQ$ C.CMSQ ; Queue CCB til resources are checked
495 001112' 022764 000004 000022 CMP #N.CCMD+1,C.CNT(R4) ; CHECK TO SEE IF ENOUGH SENT
496 001120' 003077 BGT 100$ ; NOT EVEN 4 LOUSY BYTES!
497 001122' 116001 000003 MOVB N.CCMD(R0),R1 ; GET CONTROL COMMAND BYTE
498 001126' 003474 BLE 100$ ; SKIP OUT ON ILLEGAL CODE
499 001130' 022701 000012 CMP #CTLOTR,R1 ; CHECK RANGE OF COMMAND
500 001134' 101471 BLOS 100$ ; OUT OF RANGE, SKIP OUT
501 001136' 006301 ASL R1 ; IN RANGE, GET AS WORD OFFSET
502 001140' 005000 CLR R0 ; INITIALIZE CODE
503 001142' 004771 001370' CALL @CTLDSP(R1) ; EXECUTE DETAILED CONTROL ROUTINE
504 001146' 020027 177777 CMP R0,#-1 ; ANY MESSAGE TO DO ?
505 001152' 001405 BEQ 6$ ; NO
506
507 ; Here when finished, or when performing a retry to get a resource
508 001154' 004767 002230 MSGFIN: CALL BF$SDB ; GET A RESPONSE BUFFER
509 001160' 103003 BCC 10$ ; Ok
510 001162' 105265 000116 INCB C.RECO(R5) ; Control resource error flag
511 001166' 6$: RETURN
512
513 001170' 103453 10$: BCS 100$ ; OOPS
514 001172' PUSH$S R4 ; SAVE THE RESPONSE CCB
515 001174' DEQ$ C.CMSQ ; GET THE MSG CCB BACK
516 001212' MAP$ C.BUF(R4) ; R0/RESULT
517 001220' 016401 000020 MOV C.BUF+2(R4),R1
518 001224' 116102 000003 MOVB N.CCMD(R1),R2 ; R2/COMMAND
519 001230' 116101 000002 MOVB N.CSEQ(R1),R1 ; R1/SEQ NO. OF CONTROL MSG
520 001234' 005064 000014 CLR C.STS(R4) ; ACK THE CONTROL MESSAGE
521 001240' 112764 000004 000012 MOVB #FC.RCE,C.FNC(R4) ; ...
522 001246' 004767 000000G CALL $SCHED ; ...
523 001252' POP$S R4 ; GET THE RESPONSE CCB BACK
524 001254' MAP$ C.BUF(R4) ; MAP TO THE BUFFER
525 001262' 016403 000020 MOV C.BUF+2(R4),R3 ; GET BUF PTR
526 001266' 112723 000003 MOVB #NM.CTL,(R3)+ ; FORMAT A NURD CONTROL MSG
527 001272' 105023 CLRB (R3)+ ; NO MSG FLAGS
528 001274' 110123 MOVB R1,(R3)+ ; SEQ NO.
529 001276' 110223 MOVB R2,(R3)+ ; COMMAND
530 001300' 110013 MOVB R0,(R3) ; RESULT
531 001302' 012764 000005 000022 MOV #N.CRES+1,C.CNT(R4) ; SET THE BUFFER COUNT
532 001310' 005265 000106 INC C.IOCN(R5) ; COUNT THE I/O
533 001314' CALLR $SCHED
534
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 10-1
CR.M11 30-DEC-82 02:07 MESSAGE RECEIVED (FC.RCP)
535 ; Illegal function
536 001320' 100$: DEQ$ C.CMSQ ; GET THE CCB BACK
537 001336' 052765 000004 000102 BIS #CA.ADN,C.ASTS(R5) ; PAUSE AND COMPLAIN
538 001344' 012764 177754 000014 MOV #S.ERBO,C.STS(R4) ; REJECT(?) THIS ONE
539 001352' 112764 000004 000012 MOVB #FC.RCE,C.FNC(R4) ; ACK THE MESSAGE
540 001360' 012700 177777 MOV #-1,R0 ; SET FLAG CODE
541 001364' CALLR $SCHED
542
543 ; THE DISPATCH TABLE
544 001370' 001320' CTLDSP: .word 100$ ; 0 - CODE ZERO IS RESERVED
545 001372' 001662' .word CTLABE ; 1 - ABORT TO END OF FILE
546 001374' 001672' .word CTLABT ; 2 - ABORT ALL
547 001376' 001634' .word CTLABC ; 3 - ABORT CLEAR
548 001400' 002062' .word CTLSTS ; 4 - STATUS REQUESTED, SEND ATTENTION
549 001402' 001744' .word CTLDMP ; 5 - DUMP OUTPUT BUFFERS
550 001404' 001766' .word CTLPAU ; 6 - PAUSE
551 001406' 002014' .word CTLRSM ; 7 - RESUME FROM ERROR OR PAUSE
552 001410' 001320' .word 100$ ; 8 - UNDEFINED
553 001412' 001736' .word CTLCPB ; 9 - SEND CAPABILITIES MESSAGE
554 000012 CTLOTR = <. - CTLDSP>/2
555 .dsabl lsb
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 11
CR.M11 30-DEC-82 02:07 MESSAGE RECEIVED (FC.RCP)
557 ;+
558 ; Non-interrupt control message processing
559 ;-
560 001414' 004767 002366 CTLSYN: CALL RD$BYT ; GET SEQ NO.
561 001420' 110065 000140 MOVB R0,C.DMSQ(R5) ; SAVE IT FOR RESPONSE
562 001424' 004767 002356 CALL RD$BYT ; GET COMMAND
563 001430' 010001 MOV R0,R1
564 001432' 003472 BLE 50$ ; SKIP OUT ON ILLEGAL CODE
565 001434' 022701 000012 CMP #CTLOTR,R1 ; CHECK RANGE OF COMMAND
566 001440' 101467 BLOS 50$ ; OUT OF RANGE, SKIP OUT
567 001442' PUSH$S R1 ; SAVE COMMAND CODE FOR RESPONSE
568 001444' 006301 ASL R1 ; IN RANGE, GET AS WORD OFFSET
569 001446' 005000 CLR R0 ; INITIALIZE FLAG
570 001450' 004771 001370' CALL @CTLDSP(R1) ; EXECUTE DETAILED CONTROL ROUTINE
571 001454' POP$S R1 ; GET COMMAND CODE BACK
572 001456' 020027 177777 CMP R0,#-1 ; ANY MESSAGE STILL TO DO ?
573 001462' 001463 BEQ 60$ ; NO
574 001464' PUSH$S R0 ; SAVE RESPONSE CODE
575 001466' 004767 002454 CALL RD$DQX ; ACK THE MSG
576 001472' 012700 000003 MOV #NM.CTL,R0 ; CONSTRUCT A CONTROL MSG
577 001476' 004767 001766 CALL MS$BYT ; CONTROL CODE
578 001502' 005000 CLR R0
579 001504' 004767 001760 CALL MS$BYT ; NULL MSG FLAGS
580 001510' 116500 000140 MOVB C.DMSQ(R5),R0
581 001514' 004767 001750 CALL MS$BYT ; SEQ NO. OF ORIGINAL COMMAND
582 001520' 010100 MOV R1,R0
583 001522' 004767 001742 CALL MS$BYT ; COMMAND
584 001526' POP$S R0
585 001530' 004767 001734 CALL MS$BYT ; RESPONSE CODE
586 001534' DEQ$ C.MSGQ ; GET MESSAGE OFF QUEUE
587 001552' 166564 000154 000022 SUB C.MSGS(R5),C.CNT(R4) ; CALCULATE MESSAGE SIZE
588 001560' 005065 000154 CLR C.MSGS(R5) ; COVER OUR TRACKS
589 001564' 005265 000106 INC C.IOCN(R5) ; COUNT THIS I/O
590 001570' 004767 000000G CALL $SCHED ; SEND IT OFF
591 001574' 105765 000117 TSTB C.RATT(R5) ; CHECK FOR OTHER MESSAGES TO GOE OUT
592 001600' 001402 BEQ 20$ ; NO ATTENTION MSGS
593 001602' 004767 002462 CALL SN$ATT ; PENDING ATTENTION MSG
594
595 001606' 105765 000120 20$: TSTB C.CAPP(R5) ; TRY CAPABILITIES MSG
596 001612' 001407 BEQ 60$
597 001614' CALLR SN$CAP ; PENDING CAPABILITIES MSG
598
599 001620' 052765 000004 000102 50$: BIS #CA.ADN,C.ASTS(R5) ; PAUSE AND COMPLAIN
600 001626' 004767 002314 CALL RD$DQX ; ACK THE MSG AND WAIT FOR DEATH
601 001632' 60$: RETURN
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 12
CR.M11 30-DEC-82 02:07 MESSAGE RECEIVED (FC.RCP)
603 ;+
604 ; Clear abort status
605 ;-
606 001634' 032765 000030 000102 CTLABC: BIT #CA.ABE!CA.ABO,C.ASTS(R5) ; ABORT SET?
607 001642' 001404 BEQ 10$ ; NO
608 001644' 042765 000030 000102 BIC #CA.ABE!CA.ABO,C.ASTS(R5) ; CLEAR ABORTING
609 001652' RETURN
610
611 001654' 012700 000001 10$: MOV #NR.ACN,R0 ; NOT IN ABORT STATE
612 001660' RETURN
613
614 ;+
615 ; Abort to end of file
616 ;-
617 001662' 052765 000020 000102 CTLABE: BIS #CA.ABE,C.ASTS(R5) ; SET THE FLAG FOR READER
618 001670' RETURN
619
620 ;+
621 ; Abort until clear received
622 ;-
623 001672' 004767 003340 CTLABT: CALL $CRSTP ; FLUSH THE DEVICE
624 001676' 052765 000010 000102 BIS #CA.ABO,C.ASTS(R5) ; NOTE ABORTING
625 001704' 016501 000076 MOV C.DDMQ(R5),R1 ; CHECK ALL QUEUES TO SEE IF
626 001710' 056501 000122 BIS C.DLCQ(R5),R1 ; ANYTHING HAPPENING
627 001714' 056501 000144 BIS C.MSGQ(R5),R1
628 001720' 156501 000044 BISB C.DTXL(R5),R1 ; CHECK SUSPENDED PROCESSES
629 001724' 001002 BNE 10$ ; NR.ABS
630 001726' 012700 000001 MOV #NR.NAB,R0 ; NOTHING TO ABORT
631 001732' 10$: CALLR Q$PURG ; CLEAR THE WORLD
632
633 ;+
634 ; Request capabilities message
635 ;-
636 001736' 105265 000120 CTLCPB: INCB C.CAPP(R5) ; SET CAPABILITIES PENDING FLAG
637 001742' RETURN
638
639 ;+
640 ; Dump output buffers
641 ;-
642 001744' 105765 000117 CTLDMP: TSTB C.RATT(R5) ; PENDING ATTENTION?
643 001750' 001005 BNE 10$ ; YES
644 001752' 105765 000120 TSTB C.CAPP(R5) ; PENDING CAPABILITIES?
645 001756' 001002 BNE 10$ ; YES
646 001760' 012700 000001 MOV #NR.NOB,R0 ; NOTHING TO DUMP
647 001764' 10$: RETURN
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 13
CR.M11 30-DEC-82 02:07 MESSAGE RECEIVED (FC.RCP)
649 ;+
650 ; Pause input
651 ;-
652 001766' 032765 000006 000102 CTLPAU: BIT #CA.PAU!CA.ADN,C.ASTS(R5) ; ALREADY PAUSED/PAUSING?
653 001774' 001004 BNE 20$ ; YES
654 001776' 052765 000002 000102 10$: BIS #CA.PAU,C.ASTS(R5) ; PAUSE NO MATTER WHAT
655 002004' RETURN
656
657 002006' 012700 000001 20$: MOV #NR.PAU,R0 ; ALREADY PAUSED
658 002012' RETURN
659
660
661 ;+
662 ; Resume input
663 ;-
664 002014' 032765 004006 000102 CTLRSM: BIT #CA.PAU!CA.ADN!CA.TMO,C.ASTS(R5); CHECK PAUSEDNESS
665 002022' 001414 BEQ 20$ ; NOTHING HUNG
666 002024' 032765 000040 000102 BIT #CA.EOF,C.ASTS(R5) ; EOF ?
667 002032' 001402 BEQ 10$
668 002034' 005065 000104 CLR C.CDCT(R5) ; IF SO, CLEAR CARD COUNT FOR NEW FILE
669
670 002040' 042765 004776 000102 10$: BIC #CA.PAU!CA.ADN!CA.TMO!CA.ERR!CA.EOF!CA.ABO!CA.ABE,C.ASTS(R5)
671 002046' 004767 003002 CALL $CRSTR ; TURN ON DEVICE AGAIN
672 002052' 000402 BR 30$
673
674 002054' 012700 000001 20$: MOV #NR.NPS,R0 ; NOT PAUSED
675 002060' 30$: RETURN
676
677
678 ;+
679 ; Status request
680 ;-
681 002062' 105765 000117 CTLSTS: TSTB C.RATT(R5) ; CHECK ATTENTION ALREADY PENDING
682 002066' 001003 BNE 10$ ; DON'T MUNGE ORIGNAL REASON
683 002070' 112765 000003 000117 MOVB #N.ARQS,C.RATT(R5) ; SET ATTENTION PENDING FLAG
684 002076' 10$: RETURN
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 14
CR.M11 30-DEC-82 02:07 MESSAGE RECEIVED (FC.RCP)
686
687 ;+
688 ; NURD Features message handlers
689 ;
690 ; Feature msg format:
691 ; <seq no.><no. feature specs><...feature specs...>
692 ;
693 ; Feature spec format:
694 ; <feature id><feature flags><class><response>[<feature data>]
695 ;
696 ; Feature data format:
697 ; <cnt><...data...>
698 ;
699 ; NOTE: Incoming message has only one feature spec.
700 ;
701 ; Buffer has been set up and nurd type and flags bytes
702 ; (1st & 2nd bytes) have been extracted.
703 ;
704 ; R4 CCB AT TOP OF C.DLCQ
705 ; R5 Database address
706 ; KISAR6 Mapped to data buffer
707 ;-
708 .enabl LSB
709 002100' 012700 000002 FTRSYN: MOV #NM.FTR,R0 ; BEGIN A REPLY
710 002104' 004767 001360 CALL MS$BYT ; INSERT NURD MSG TYPE
711 002110' 005000 CLR R0
712 002112' 004767 001352 CALL MS$BYT ; INSERT MSG FLAGS
713 002116' 004767 001664 CALL RD$BYT ; GET SEQ NO.
714 002122' 110065 000140 MOVB R0,C.DMSQ(R5)
715 002126' 004767 001336 CALL MS$BYT ; SEND IT BACK
716 002132' 004767 001650 CALL RD$BYT ; GET NO. FEATURE SPECS
717 002136' 005000 CLR R0 ; BUT IGNORE IT
718 002140' 110065 000130 MOVB R0,C.NFSP(R5) ; SAVE IT FOR SOMTHING
719 002144' 004767 001320 CALL MS$BYT ; STUFF IT IN REPLY
720 002150' 004767 001632 CALL RD$BYT ; GET FEATURE ID
721 002154' 010002 MOV R0,R2
722 002156' 004767 001624 CALL RD$BYT ; GET FEATURE FLAGS
723 002162' 010001 MOV R0,R1
724 002164' 004767 001616 CALL RD$BYT ; GET CLASS
725 002170' 000301 SWAB R1
726 002172' 050001 BIS R0,R1 ; R1/FLAGS,,CLASS
727
728 002174' 004767 001606 CALL RD$BYT ; READ THE RESPONSE FIELD AND IGNORE IT
729
730 002200' 105065 000127 CLRB C.CAPN(R5) ; INIT INDEX INTO CAPABILITIES LIST
731 002204' 122702 000377 CMPB #FE.ALL,R2 ; CHECK FOR ALLNESS
732 002210' 001036 BNE 30$ ; SINGLE FEATURE
733 002212' 005002 CLR R2 ; INIT COMMON FID'S
734 002214' 116565 000156 000127 MOVB C.CFET(R5),C.CAPN(R5) ; GET COUNT OF COMMON ENTRIES
735 002222' 032701 000400 BIT #NF.CMD*400,R1 ; ALL FEATURES - CHECK READ/SET
736 002226' 001403 BEQ 10$ ; READ - CONTINUE
737 002230' 122701 000002 CMPB #FC.SST,R1 ; SET - CHECK SET TO STD
738 002234' 001107 BNE FERERR ; NO - ILLEGAL COMBINATION
739
740 002236' 105202 10$: INCB R2 ; ADVANCE THRU LIST
741 002240' 100410 BMI 15$ ; GRUBBLING THRU DEVICE FEATURES
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 14-1
CR.M11 30-DEC-82 02:07 MESSAGE RECEIVED (FC.RCP)
742 002242' 120265 000127 CMPB R2,C.CAPN(R5) ; CHECK RANGE
743 002246' 101413 BLOS 20$ ; OK
744 002250' 116565 000170 000127 MOVB C.DFET(R5),C.CAPN(R5) ; INIT FOR DEVICE SPECFIC FEATURES
745 002256' 012702 000201 MOV #201,R2
746 002262' 010200 15$: MOV R2,R0 ; DEVICE FEATURE - HACK OFF SIGN
747 002264' 042700 177600 BIC #^C177,R0
748 002270' 120065 000127 CMPB R0,C.CAPN(R5) ; CHECK RANGE
749 002274' 101022 BHI 70$ ; DONE
750 002276' 004767 001024 20$: CALL FTRFND ; LOOK IT UP
751 002302' 103004 BCC 40$ ; SUPPORTED FEATURE
752 002304' 000754 BR 10$ ; TRY NEXT ONE
753
754 002306' 004767 001014 30$: CALL FTRFND ; LOOK UP FEATURE
755 002312' 103447 BCS FERUSF ; UNSUPPORTED FEATURE
756
757 ; AT THIS POINT:
758 ; R1 Feature msg flags word(hi) + class(lo)
759 ; R2 Feature id (byte)
760 ; R3 Points to the feature status byte
761 ; R5 Database address
762 ; C.DMSQ Seq no.
763 ; C.NFSP No. specs
764
765 002314' 132713 000040 40$: BITB #FB.CP,(R3) ; CHECK FOR CHANGE PENDING
766 002320' 001060 BNE FERCPN ; CAN'T READ OR SET IF SO
767 002322' 032701 000400 BIT #NF.CMD*400,R1 ; FEATURE READ OR FEATURE SET?
768 002326' 001505 BEQ FTRSHO ; READ - GO PROCESS FEATURE READ
769 002330' CALLR FTRSET ; SET - GO PROCESS IN FEATURE SET
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 15
CR.M11 30-DEC-82 02:07 MESSAGE RECEIVED (FC.RCP)
771 002334' 105765 000127 FTRCON: TSTB C.CAPN(R5) ; CHECK FOR ALLNESS
772 002340' 001336 BNE 10$ ; YES
773
774 002342' 016504 000144 70$: MOV C.MSGQ(R5),R4 ; GET BEG OF MSG
775 002346' MAP$ C.BUF(R4)
776 002354' 016400 000020 MOV C.BUF+2(R4),R0 ; GET THE PTR
777 002360' 116560 000130 000003 MOVB C.NFSP(R5),N.NSPC(R0) ; SET IN THE FINAL SPEC COUNT
778 002366' 004767 001554 CALL RD$DQX ; RETURN ORIGNAL MSG TO NRD
779 002372' DEQ$ C.MSGQ ; GET MESSAGE OFF QUEUE
780 002410' 166564 000154 000022 SUB C.MSGS(R5),C.CNT(R4) ; CALCULATE MESSAGE SIZE
781 002416' 005065 000154 CLR C.MSGS(R5) ; COVER OUR TRACKS
782 002422' 005265 000106 INC C.IOCN(R5) ; COUNT THIS I/O
783 002426' CALLR $SCHED ; SEND IT OFF
784
785
786 002432' FERUSF: PUSH$S #FR.USF
787 002436' 000421 BR 200$
788 002440' FERBCL: PUSH$S #FR.BCL
789 002444' 000416 BR 200$
790 002446' FERNST: PUSH$S #FR.NST
791 002452' 000413 BR 200$
792 002454' FERERR: PUSH$S #FR.ERR
793 002460' 000410 BR 200$
794 002462' FERCPN: PUSH$S #FR.CPN
795 002466' 000405 BR 200$
796 002470' FERNEB: PUSH$S #FR.NEB
797 002474' 000402 BR 200$
798 002476' FERDNP: PUSH$S #FR.DNP
799 002502' 010200 200$: MOV R2,R0 ; INSERT <FID><FLAGS><CLASS><ERROR>
800 002504' 004767 000760 CALL MS$BYT ; INSERT FID
801 002510' 010100 MOV R1,R0
802 002512' 000300 SWAB R0
803 002514' 004767 000750 CALL MS$BYT ; INSERT FLAGS
804 002520' 010100 MOV R1,R0
805 002522' 004767 000742 CALL MS$BYT ; INSERT CLASS
806 002526' POP$S R0 ; GET ERROR CODE
807 002530' 004767 000734 CALL MS$BYT ; INSERT RESP
808 002534' 105265 000130 INCB C.NFSP(R5) ; COUNT THE SPEC
809 002540' 000675 BR FTRCON
810
811 .dsabl lsb
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 16
CR.M11 30-DEC-82 02:07 MESSAGE RECEIVED (FC.RCP)
813 ;+
814 ; Features Read
815 ;
816 ;R1 Feature msg flags word(hi) + class(lo)
817 ;R2 Feature id (byte)
818 ;R3 Points to the feature status byte
819 ;R5 Database address
820 ;
821 ; Reply has been formatted thru <no. specs>
822 ; insert in msg:
823 ; <fid><flgs><class><resp><data>
824 ;-
825
826 002542' 010200 FTRSHO: MOV R2,R0
827 002544' 004767 000720 CALL MS$BYT ; INSERT FID
828 002550' 010100 MOV R1,R0 ; GET READ/SET BIT
829 002552' 000300 SWAB R0
830 002554' 042700 177776 BIC #^C<NF.CMD>,R0 ; NOW ISOLATED
831 002560' 132713 000020 BITB #FB.SST,(R3) ; FEATURE SET TO STD?
832 002564' 001402 BEQ 10$ ; NO
833 002566' 052700 000002 BIS #NF.STD,R0 ; SET TO STD
834 002572' 004767 000672 10$: CALL MS$BYT ; INSERT FLAGS
835 002576' 105001 CLRB R1 ; SET FEATURE CLASS IN R1 (LO)
836 002600' 132713 000001 BITB #FB.CL1,(R3) ; CHECK CLASS 1
837 002604' 001402 BEQ 20$ ; TIS CLASS 0
838 002606' 152701 000001 BISB #FC.CL1,R1 ; SET CLASS 1
839 002612' 010100 20$: MOV R1,R0
840 002614' 004767 000650 CALL MS$BYT ; INSERT CLASS
841
842 002620' 005000 CLR R0
843 002622' 004767 000642 CALL MS$BYT ; RESP - NO ERRORS
844
845 002626' 105701 TSTB R1 ; CHECK CLASS FOR LENGTH OF DATA
846 002630' 001406 BEQ 30$ ; 1 BIT
847 002632' 132713 000006 BITB #FB.WRD!FB.STR,(R3) ; MORE THAN 1 BYTE ?
848 002636' 001012 BNE 60$ ; YES
849 002640' 005200 INC R0 ; COUNT = 1
850 002642' 004767 000622 CALL MS$BYT ; INSERT COUNT
851
852 002646' 116300 000001 30$: MOVB 1(R3),R0 ; COPY FEATURE TABLE DATA ENTRY
853 002652' 004767 000612 40$: CALL MS$BYT ; INSERT DATA
854 002656' 105265 000130 50$: INCB C.NFSP(R5) ; COUNT THE SPEC
855 002662' 000624 BR FTRCON ; CONTINUE FEATURE HACKING
856
857 ; MULTIPLE BYTE VALUE
858 002664' 132713 000004 60$: BITB #FB.STR,(R3) ; DELINEATE WORD(SPECIAL) AND LONGER STRINGS
859 002670' 001015 BNE 70$ ; STRING
860 ; WORD VALUE - F.FCV = DATABASE OFFSET TO WORD
861 002672' 012700 000002 MOV #2,R0 ; 2 BYTE VALUE
862 002676' 004767 000566 CALL MS$BYT ; INSERT CNT
863
864 002702' 005000 CLR R0
865 002704' 156300 000001 BISB F.FCV(R3),R0
866 002710' 060500 ADD R5,R0
867 002712' 011000 MOV (R0),R0 ; YES, READ SETTING FROM THE DATABASE
868 002714' 004767 000550 CALL MS$BYT ; INSERT LO BYTE
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 16-1
CR.M11 30-DEC-82 02:07 MESSAGE RECEIVED (FC.RCP)
869 002720' 000300 SWAB R0
870 002722' 000753 BR 40$ ; INSERT HI BYTE
871
872 ; STRING - F.FCV HAS THE LENGTH, CURRENT VALUE BEGINS AT F.FCV+1
873 002724' 005203 70$: INC R3 ; THIS DEPENDS ON F.FCV=1
874 002726' 112300 MOVB (R3)+,R0 ; GET THE LENGTH
875 002730' 004767 000534 CALL MS$BYT ; INSERT IN MSG
876 002734' 010004 MOV R0,R4 ; SAVE IT
877 002736' 112300 80$: MOVB (R3)+,R0 ; INSERT THE STRING IN MSG
878 002740' 004767 000524 CALL MS$BYT
879 002744' 105304 DECB R4 ; COUNT THE BYTE
880 002746' 001373 BNE 80$
881 002750' 000742 BR 50$
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 17
CR.M11 30-DEC-82 02:07 MESSAGE RECEIVED (FC.RCP)
883 ;+
884 ; Features set
885 ;
886 ; R1 Feature msg flags word(hi) + class(lo)
887 ; R2 Feature id (byte)
888 ; R3 Points to the feature status byte
889 ; R5 Database address
890 ;
891 ; Reply has been formatted thru <no. specs=1>
892 ;-
893 002752' 122701 000002 FTRSET: CMPB #FC.SST,R1 ; CHECK STDNESS
894 002756' 001501 BEQ 40$ ; STD RESULT
895 002760' 132713 000100 BITB #FB.CA,(R3) ; REAL SET - CHECK IF SETABLE
896 002764' 001633 BEQ FERERR ; NO
897 002766' 111300 MOVB (R3),R0 ; FEATURE IS SETTABE
898 002770' 074100 XOR R1,R0 ; CHECK CLASS SPEC
899 002772' 042700 177776 BIC #^C<FB.CL1>,R0 ; R0/ <CLASS SPEC'D>.NOT.EQUIV. <FEATURE CLASS>
900 002776' 001220 BNE FERBCL ; RESULT SHOULD BE 0
901 003000' 122701 000001 CMPB #FC.CL1,R1 ; CHECK DATA CLASS
902 003004' 001010 BNE 10$ ; CLASS 0
903 003006' 004767 000774 CALL RD$BYT ; CLASS 1 - FEATURE DEPENDENT DATA
904 ; CHECK EXPLICITLY FOR ALL > 1
905 003012' 132713 000006 BITB #FB.WRD!FB.STR,(R3) ; CHECK MULTIPLE BYTE DATA
906 003016' 001012 BNE 30$ ; GO DO IT
907 ; ONLY ONE BYTE FEATURES LEFT
908 003020' 122700 000001 CMPB #1,R0 ; SEE IF IT IS
909 003024' 001213 BNE FERERR ; LOSER
910 ; YES - GO SET THE FEATURE
911 003026' 004767 000754 10$: CALL RD$BYT ; CLASS 0 OR CLASS 1(1 BYTE) - GET THE BYTE
912 003032' 110063 000001 MOVB R0,1(R3) ; SET FEATURE CURRENT VALUE
913 003036' 142713 000020 12$: BICB #FB.SST,(R3) ; NOT SET TO STD
914 003042' 000637 BR FTRSHO ; NOW READ THE FEATURE
915
916 ; MULTIPLE BYTE VALUES
917 003044' 132713 000004 30$: BITB #FB.STR,(R3) ; DELINEATE WORD(SPECIAL) AND LONGER STRINGS
918 003050' 001023 BNE 35$ ; STRING VALUE
919 003052' 122700 000002 CMPB #2,R0 ; 2 BYTE LENGTH
920 003056' 001025 BNE 36$ ; SCREWED IT UP
921 003060' 004767 000722 CALL RD$BYT ; GET THE PAGE LIMIT
922 003064' 110065 000142 MOVB R0,C.PBRC(R5) ; HIDE THE LO PART
923 003070' 004767 000712 CALL RD$BYT ; GET THE HI PART
924 003074' 000300 SWAB R0
925 003076' 156500 000142 BISB C.PBRC(R5),R0 ; R0/NEW WORD VALUE
926 003102' 010046 MOV R0,-(SP)
927 003104' 005000 CLR R0
928 003106' 156300 000001 BISB F.FCV(R3),R0
929 003112' 060500 ADD R5,R0
930 003114' 012610 MOV (SP)+,(R0) ; SET THE NEW VALUE IN WORD
931 003116' 000747 BR 12$
932
933 ; STRING - F.FCV HAS THE LENGTH, CURRENT VALUE BEGINS AT F.FCV+1
934 003120' 35$: PUSH$S R3 ; SAVE THE FEATURE BLOCK PTR
935 003122' 005203 INC R3 ; THIS DEPENDS ON F.FCV=1
936 003124' 120023 CMPB R0,(R3)+ ; CHECK THE LENGTH
937 003126' 001403 BEQ 37$ ; OK
938 003130' POP$S R3 ; LENGTH ERROR - BACK PTR UP TO BEG OF BLOCK
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 17-1
CR.M11 30-DEC-82 02:07 MESSAGE RECEIVED (FC.RCP)
939 003132' 36$: CALLR FERERR ; AND REPORT THE ERROR
940 003136' 37$: PUSH$S R1 ; SAVE THE VARIABLES
941 003140' 010001 MOV R0,R1 ; R1/COUNT,R3/PTR TO BEG OF CURRENT VALUE
942 003142' 004767 000640 38$: CALL RD$BYT ; XFER THE NEW VALUE TO THE CURRENT VALUE
943 003146' 110023 MOVB R0,(R3)+ ; STUFF THE BYTE
944 003150' 077104 SOB R1,38$ ; AND COUNT IT
945 003152' POP$S <R1,R3>
946 003156' CALLR FTRSHO ; NOW READ THE FEATURE
947
948 003162' 004767 000012 40$: CALL SETSTD ; SET FEATURE TO STD
949 003166' 103002 BCC 45$
950 003170' CALLR FERNST ; NO STD TO SET
951 003174' 45$: CALLR FTRCON ; DON'T READ IT
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 18
CR.M11 30-DEC-82 02:07 MESSAGE RECEIVED (FC.RCP)
953 ;+
954 ; Set feature to its standard value
955 ;
956 ; R3 Ptr to feature block in database
957 ; R5 Database address
958 ;-
959 003200' 132713 000010 SETSTD: BITB #FB.STE,(R3) ; SEE IF IT HAS ONE
960 003204' 001002 BNE 10$ ; YES
961 003206' 000261 SEC ; NO STD TO SET
962 003210' RETURN
963 003212' 132713 000006 10$: BITB #FB.WRD!FB.STR,(R3) ; CHECK MULTIPLE BYTE VALUES
964 003216' 001006 BNE 20$ ; YES
965 003220' 116363 000002 000001 MOVB F.FSV(R3),F.FCV(R3) ; SET CURRENT VALUE = STD VALUE
966 003226' 152713 000020 BISB #FB.SST,(R3) ; MARK FEATURE AS SET TO STD
967 003232' 000433 BR 50$
968
969 ; MULTIPLE BYTE VALUE
970 003234' 132713 000004 20$: BITB #FB.STR,(R3) ; DELINEATE WORD AND LONGER STRINGS
971 003240' 001013 BNE 40$ ; STRING
972 003242' PUSH$S R5 ; WORD VALUE
973 003244' 005046 CLR -(SP)
974 003246' 116316 000001 MOVB F.FCV(R3),(SP)
975 003252' 062605 ADD (SP)+,R5 ; R5 /PTR TO CURRENT VALUE
976 003254' 116325 000002 MOVB F.FSV(R3),(R5)+ ; XFER LO BYTE
977 003260' 116315 000003 MOVB F.FSV+1(R3),(R5) ; XFER HI BYTE
978 003264' POP$S R5
979 003266' 000415 BR 50$
980
981 ; STRING - F.FCV HAS THE LENGTH, CURRENT VALUE BEGINS AT F.FCV+1
982 ; STD VALUE BEGINS AT F.FCV+1+(F.FCV)
983 003270' 40$: PUSH$S <R0,R1,R3>
984 003276' 005203 INC R3 ; DEPENDS ON F.FCV=1
985 003300' 005000 CLR R0
986 003302' 152300 BISB (R3)+,R0 ; GET THE COUNT
987 003304' 010001 MOV R0,R1
988 003306' 060301 ADD R3,R1 ; R0/COUNT
989 ; R1/SOURCE ADDRESS
990 ; R3/DESTINATION ADDRESS
991 003310' 112123 45$: MOVB (R1)+,(R3)+ ; XFER THE STD VALUE
992 003312' 077002 SOB R0,45$ ; COUNT IT
993 003314' POP$S <R3,R1,R0>
994 003322' 000241 50$: CLC
995 003324' RETURN
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 19
CR.M11 30-DEC-82 02:07 MESSAGE RECEIVED (FC.RCP)
997 ;+
998 ; FTRFND looks for a feature with fid in r2 and returns ptr
999 ; to feature block in r3 if successful normal carry flag
1000 ; condition for success or failure
1001 ;-
1002 003326' 012703 000156 FTRFND: MOV #C.CFET,R3 ; TRY COMMON FEATURE 1ST
1003 003332' PUSH$S R2 ; SAVE FID CAUSE IT WILL BE MANGLED
1004 003334' 105702 TSTB R2 ; CHECK IF DEVICE SPECIFIC FTR
1005 003336' 100004 BPL 10$ ; COMMON, SKIP
1006 003340' 012703 000170 MOV #C.DFET,R3 ; DEVICE SPECIFIC, GET POINTER
1007 003344' 042702 177600 BIC #177600,R2 ; TRUNCATE TO JUST OFFSET ABOVE 128
1008 003350' 001414 10$: BEQ 20$ ; ZERO IS AN ILLEGAL FEATURE CODE
1009 003352' 060503 ADD R5,R3 ; R3 -> FEATURE LIST IN DATABASE
1010 003354' 020213 CMP R2,(R3) ; CHECK ON ID RANGE
1011 003356' 103011 BHIS 20$ ; SKIP IF OUT OF RANGE
1012 ; R3 IS POINTING TO THE BASE OF THE
1013 ; FEATURES LIST, WHICH HOLDS HIGHEST
1014 ; STORED FEATURE CODE
1015 003360' 060203 ADD R2,R3 ; ADD THE FID TO POINT TO ADDRESS
1016 ; OF FEATURE BLOCK
1017 003362' 111303 MOVB (R3),R3 ; ENTRY IS DB OFFSET TO FEATURE BLOCK
1018 003364' 001406 BEQ 20$ ; UNSUPPORTED FEATURE
1019 003366' 042703 177400 BIC #^C377,R3 ; FLUSH SIGN EXTENSION
1020 003372' 060503 ADD R5,R3 ; R3 -> FEATURE BLOCK
1021 003374' POP$S R2
1022 003376' 000241 CLC
1023 003400' RETURN
1024
1025 003402' 20$: POP$S R2 ; UNSUPPORTED FEATURE
1026 003404' 000261 SEC
1027 003406' RETURN
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 20
CR.M11 30-DEC-82 02:07 SUPPORT ROUTINES
1029 .sbttl Support Routines
1030 ;+
1031 ; The following pages, up to start of interrupt handler code,
1032 ; contain the various support routines needed in CR.
1033 ;
1034 ; The routines are arranged in alphabetical order.
1035 ;-
1036
1037
1038
1039
1040 ;+
1041 ; Get a small data buffer
1042 ;-
1043 003410' BF$SDB: PUSH$S R1 ; SAVE R1
1044 003412' 012701 000074 MOV #60.,R1 ; BUFFER SIZE WANTED
1045 003416' 004767 000000G CALL $CBBGT ; GET A MESSAGE BUFFER
1046 003422' 103420 BCS 10$ ; LOSE
1047 003424' 010164 000022 MOV R1,C.CNT(R4) ; SET SIZE
1048 003430' 005064 000026 CLR C.PRM2(R4) ; IDENTIFY AS A MESSAGE BUFFER
1049 003434' 112764 000004 000025 MOVB #S$PEOM,C.PRM1+1(R4) ; INIT AS A WHOLE MSG
1050 003442' 112764 000002 000012 MOVB #FC.XME,C.FNC(R4) ; INIT FUNCTION AND MOD
1051 003450' 112764 000006 000013 MOVB #S$SND,C.MOD(R4) ; ...
1052 003456' 116564 000001 000011 MOVB C.NRD(R5),C.PIX(R4) ; SET NRD'S PIX
1053 003464' 10$: POP$S R1 ; RESTORE R1
1054 003466' RETURN
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 21
CR.M11 30-DEC-82 02:07 SUPPORT ROUTINES
1056 ;+
1057 ; NURD message builder
1058 ;
1059 ; R0 Byte to put into buffer
1060 ; R5 Database address
1061 ;-
1062 003470' 005365 000154 MS$BYT: DEC C.MSGS(R5) ; COUNT IT
1063 003474' 002410 BLT 20$ ; BUFFER ALREADY FULL
1064 003476' MAP$ C.MSGA(R5) ; MAP TO BUFFER
1065 003504' 110075 000152 MOVB R0,@C.MSGA+2(R5) ; INSERT CHAR
1066 003510' 005265 000152 INC C.MSGA+2(R5) ; ADVANCE PTR
1067 003514' RETURN
1068
1069 003516' 005065 000154 20$: CLR C.MSGS(R5) ; RESET THE COUNT
1070 003522' 25$: PUSH$S R4
1071 003524' 004767 177660 CALL BF$SDB ; GET A BUFFER
1072 003530' 103422 BCS 30$ ; OOPS
1073 003532' 005064 000014 CLR C.STS(R4) ; INIT THE STATUS
1074 003536' 016465 000016 000150 MOV C.BUF(R4),C.MSGA(R5) ; MAKE IT THE CURRENT BUFFER
1075 003544' 016465 000020 000152 MOV C.BUF+2(R4),C.MSGA+2(R5)
1076 003552' 016465 000022 000154 MOV C.CNT(R4),C.MSGS(R5)
1077 003560' ENQ$ C.MSGQ ; ADD IT TO END OF LIST
1078 003572' POP$S R4
1079 003574' 000735 BR MS$BYT ; NOW STUFF THE CHAR
1080
1081 003576' 30$: POP$S R4
1082 003600' 004767 001124 CALL ZZ$SLP ; ZZZzzz
1083 003604' 000746 BR 25$
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 22
CR.M11 30-DEC-82 02:07 SUPPORT ROUTINES
1085 ;+
1086 ; Purge the queues
1087 ;
1088 ; Abort all from <DDMQ>, <DLCQ>, and <MSGQ> (in that order).
1089 ;-
1090 003606' Q$PURG: PUSH$S <R0,R1,R3,R4> ; SAVE CURRENT CCB, DATABASE ADDR, ETC
1091 003616' 004767 001414 CALL $CRSTP ; Stop the reader
1092
1093 003622' 10$: DEQ$ C.DDMQ,20$ ; RETURN CURRENT READ BUFFERS TO POOL
1094 003642' 004767 000000G CALL $RDBRT ; ...
1095 003646' 000765 BR 10$
1096
1097 003650' 20$: DEQ$ C.DLCQ,30$ ; ABORT ANY MSGS WAITING TO BE DONE
1098 003670' 012764 177767 000014 MOV #S.EABO,C.STS(R4)
1099 003676' 112764 000004 000012 MOVB #FC.RCE,C.FNC(R4)
1100 003704' 004767 000000G CALL $SCHED
1101 003710' 000757 BR 20$
1102
1103 003712' 30$: DEQ$ C.MSGQ,40$ ; FLUSH ANYTHING GOING OUT
1104 003732' 012701 000074 MOV #60.,R1
1105 003736' 004767 000000G CALL $CBBRT ; ...
1106 003742' 000763 BR 30$
1107
1108 003744' 105065 000044 40$: CLRB C.DTXL(R5) ; Clear any suspended processing
1109 003750' 005065 000064 CLR C.PUBP+2(R5) ; NO CURRENT READ BUFFER
1110 003754' 005065 000134 CLR C.DMAD+2(R5) ; NO CURRENT SOURCE BUFFER
1111 003760' 005065 000132 CLR C.DMAD(R5)
1112 003764' 005065 000136 CLR C.DMBS(R5) ; MAY HAVE BEEN A MESSAGE IN PROGRESS
1113 003770' 005065 000154 CLR C.MSGS(R5) ; ...
1114
1115 003774' POP$S <R4,R3,R1,R0> ; DONE
1116 004004' RETURN
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 23
CR.M11 30-DEC-82 02:07 GET AND PUT DATA BYTES
1118 .sbttl Get and Put Data Bytes
1119 ;+
1120 ; USED BY "DATA" AND BY "FTRSYN".
1121 ; A FTRSYN MSG IS SHUFFLED THRU DDM (AS AN EMPTY BUFFER) SO THAT
1122 ; IT IS RETURNED IN THE SAME SEQUENCE RELATIVE TO DATA THAT IT
1123 ; WAS RECEIVED.
1124 ;-
1125 004006' 005365 000136 RD$BYT: DEC C.DMBS(R5) ; DECREMENT COUNTER
1126 004012' 002411 BLT 5$ ; BUFFER EMPTIED ALREADY
1127 004014' MAP$ C.DMAD(R5) ; MAP IF NEED BE
1128 004022' 005000 CLR R0
1129 004024' 157500 000134 BISB @C.DMAD+2(R5),R0 ; GET BYTE FROM PHYSICAL BUFFER
1130 004030' 005265 000134 INC C.DMAD+2(R5) ; INCREMENT POINTER
1131 004034' RETURN
1132
1133 004036' 005765 000134 5$: TST C.DMAD+2(R5) ; IS A BUFFER IN PROCESS?
1134 004042' 001421 BEQ 10$ ; NO BUF IN USE
1135 004044' 016504 000122 MOV C.DLCQ(R5),R4 ; CHECK FOR MSG CONTINUITY
1136 004050' 132764 000004 000025 BITB #S$PEOM,C.PRM1+1(R4)
1137 004056' 001403 BEQ 9$
1138 004060' 052765 000004 000102 BIS #CA.ADN,C.ASTS(R5) ; PAUSE AND COMPLAIN
1139 004066' 004767 000054 9$: CALL RD$DQX ; EMPTIED BUF ON TOP
1140 004072' 032700 000004 BIT #S$PEOM,R0 ; CHECK STATUS OF MSG DEQUEUED
1141 004076' 001403 BEQ 10$
1142 004100' 016506 000046 MOV C.DFSP(R5),SP ; GET THE STACK ORIGIN BACK SO CAN QUIT
1143 004104' RETURN ; EXIT
1144
1145 004106' 016504 000122 10$: MOV C.DLCQ(R5),R4 ; IS THERE A QUEUED ENTRY?
1146 004112' 001003 BNE 15$ ; YES, SET UP POINTER AND COUNTER
1147 004114' 004767 000610 CALL ZZ$SLP ; Wait til next segment arrives
1148 004120' 000772 BR 10$
1149
1150 004122' 016465 000016 000132 15$: MOV C.BUF(R4),C.DMAD(R5) ; GET ADDRESS DOUBLEWORD AS PTR
1151 004130' 016465 000020 000134 MOV C.BUF+2(R4),C.DMAD+2(R5)
1152 004136' 016465 000022 000136 MOV C.CNT(R4),C.DMBS(R5) ; GET BUFFER COUNT AS SIZE COUNTER
1153 004144' 000720 BR RD$BYT ; TRY AGAIN
1154
1155
1156 ;+
1157 ; Dequeue and return a source buffer to NRD
1158 ;-
1159 004146' 005065 000134 RD$DQX: CLR C.DMAD+2(R5) ; INDICATE "NO BUFFER IN USE"
1160 004152' 005065 000136 CLR C.DMBS(R5)
1161 004156' DEQ$ C.DLCQ ; DEQUEUE MSG JUST DONE
1162 004174' PUSH$S C.STS(R4) ; SAVE MSG STAUS
1163 004200' 005064 000014 CLR C.STS(R4) ; AND ACK IT
1164 004204' 112764 000004 000012 MOVB #FC.RCE,C.FNC(R4) ; ...
1165 004212' 004767 000000G CALL $SCHED
1166 004216' POP$S R0
1167 004220' RETURN
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 24
CR.M11 30-DEC-82 02:07 GET AND PUT DATA BYTES
1169 ;+
1170 ; Send alert message
1171 ;-
1172 004222' 004767 177162 SN$ALR: CALL BF$SDB ; GET A MESSAGE BUFFER
1173 004226' 103417 BCS 10$ ; COULDN'T
1174 004230' 016401 000020 MOV C.BUF+2(R4),R1 ; GET BUFFER PTR
1175 004234' 112721 000004 MOVB #NM.ALR,(R1)+ ; BUILD ALERT MSG IN SINGLE WORD
1176 004240' 105021 CLRB (R1)+ ; CLEAR NURD MSG FLGS
1177 004242' 012764 000002 000022 MOV #2,C.CNT(R4)
1178 004250' 112764 000014 000013 MOVb #S$SNI,C.MOD(R4) ; ALERT IS AN INTERRUPT MSG
1179 004256' 005265 000106 INC C.IOCN(R5)
1180 004262' CALLR $SCHED
1181 004266' 10$: RETURN
1182
1183
1184
1185 ;+
1186 ; Send attention message
1187 ;
1188 ; Allocate an sdb and build an attention message.
1189 ; Reason code is in C.RATT.
1190 ;
1191 ; format: <1><0><last seq #><rsn code><flags: 1-3 bytes><card count: 2 bytes>
1192 ;-
1193 004270' SN$ATT: PUSH$S <R0,R1,R2,R3,R4> ; PRESERVE THE REGISTERS
1194 004302' 116502 000117 MOVB C.RATT(R5),R2 ; GET EXCUSE CODE FOR ATTENTION MSG
1195 004306' 001525 BEQ 110$ ; NO ATTENTION IS PENDING, LEAVE
1196
1197 ; BUILD AND SEND AN ATTENTION MESSAGE
1198 004310' 004767 177074 CALL BF$SDB ; GET A MESSAGE BUFFER
1199 004314' 103522 BCS 110$ ; FAILED, EXIT - WE'LL BE BACK
1200 004316' 016401 000020 MOV C.BUF+2(R4),R1 ; GET POINTER TO START OF BUFFER
1201 004322' 112721 000001 MOVB #NM.ATT,(R1)+ ; LOAD MSG TYPE TO BUFFER
1202 004326' 105021 CLRB (R1)+ ; CLEAR NURD MSG FLGS
1203 004330' 116521 000104 MOVB C.CDCT(R5),(R1)+ ; STORE LAST GOOD SEQ NUMBER IN ATTENTION
1204 004334' 110221 MOVB R2,(R1)+ ; LOAD ATTENTION CODE
1205 ; BUILD FLAGS FIELD
1206 004336' 005002 CLR R2 ; CLEAR FLAGS ACCUMULATOR
1207 004340' 016500 000102 MOV C.ASTS(R5),R0 ; GET DEVICE STATUS
1208 004344' 032700 000604 BIT #CA.ADN!CA.MOT!CA.TER,R0 ; FATAL ERRORS ?
1209 004350' 001402 BEQ 10$
1210 004352' 052702 000001 BIS #NA.FAT,R2 ; SOME FATAL ERROR - USUALLY USER'S
1211
1212 004356' 032700 001000 10$: BIT #CA.OFL,R0 ; READER OFFLINE ?
1213 004362' 001402 BEQ 11$ ; NO
1214 004364' 052702 000002 BIS #NA.OFL,R2 ; YES, NOTE OFFLINE
1215
1216 004370' 032700 000002 11$: BIT #CA.PAU,R0 ; PAUSED?
1217 004374' 001402 BEQ 12$ ; NO
1218 004376' 052702 000004 BIS #NA.PAU,R2 ; YES
1219
1220 004402' 032700 000100 12$: BIT #CA.HOP,R0 ; HOPPER EMPTY ?
1221 004406' 001402 BEQ 20$
1222 004410' 052702 000010 BIS #NA.OMD,R2 ; MAYBE - SETS NA.OUF ALSO
1223
1224 004414' 052702 000200 20$: BIS #200,R2 ; TENTATIVELY SET EXTEND FLAG
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 24-1
CR.M11 30-DEC-82 02:07 GET AND PUT DATA BYTES
1225 004420' 110221 MOVB R2,(R1)+ ; THAT'S IT FOR BYTE 1 FLAGS
1226 004422' 005002 CLR R2 ; CLEAR FOR BYTE 2 FLAGS
1227 004424' 032700 000100 BIT #CA.HOP,R0 ; OUTPUT HOPPER FULL ?
1228 004430' 001402 BEQ 21$
1229 004432' 052702 000001 BIS #NA.OUF,R2 ; MAYBE
1230
1231 004436' 032700 004000 21$: BIT #CA.TMO,R0 ; HUNG?
1232 004442' 001402 BEQ 22$ ; NO
1233 004444' 052702 000004 BIS #NA.DTO,R2 ; YES
1234
1235 004450' 032700 000200 22$: BIT #CA.MOT,R0 ; PICK FAILURE ?
1236 004454' 001402 BEQ 30$
1237 004456' 052702 000020 BIS #NA.PF,R2 ; MAYBE
1238
1239 004462' 052702 000200 30$: BIS #200,R2 ; TENTATIVELY SET EXTEND FLAG
1240 004466' 110221 MOVB R2,(R1)+ ; THAT'S IT FOR BYTE 2
1241 004470' 005002 CLR R2 ; CLEAR FOR BYTE 3 FLAGS
1242 004472' 032700 002000 BIT #CA.IVP,R0 ; INVALID PUNCH ?
1243 004476' 001402 BEQ 40$
1244 004500' 052702 000001 BIS #NA.IVP,R2 ; YES
1245
1246 004504' 110211 40$: MOVB R2,(R1) ; THAT'S IT FOR BYTE 3 FLAGS
1247 004506' 001005 BNE 50$ ; 3 BYTE FEILD
1248 004510' 142741 000200 BICB #200,-(R1) ; NOT MORE THAN 2 BYTES
1249 004514' 001002 BNE 50$ ; 2 BYTER
1250 004516' 142741 000200 BICB #200,-(R1) ; ONLY 1 BYTE
1251
1252 004522' 005201 50$: INC R1 ; ADVANCE R1 TO NEXT AVAILABLE BYTE
1253 004524' 016503 000104 MOV C.CDCT(R5),R3 ; GET CARD COUNT ACCUMULATOR
1254 004530' 110321 MOVB R3,(R1)+ ; STORE LOW BYTE OF COUNT
1255 004532' 000303 SWAB R3 ; GET HIGH BYTE
1256 004534' 110321 MOVB R3,(R1)+ ; STORE IT TOO
1257 004536' 166401 000020 SUB C.BUF+2(R4),R1 ; COMPUTE MSG SIZE
1258 004542' 010164 000022 MOV R1,C.CNT(R4) ; STUFF IT INTO CCB
1259 004546' 005265 000106 INC C.IOCN(R5)
1260 004552' 004767 000000G CALL $SCHED
1261 004556' 105065 000117 CLRB C.RATT(R5) ; CLEAR PENDING REQUEST FOR ATTENTION
1262 004562' 110$: POP$S <R4,R3,R2,R1,R0> ; RESTORE REGS
1263 004574' RETURN ; EXIT SEND ATTENTION
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 25
CR.M11 30-DEC-82 02:07 GET AND PUT DATA BYTES
1265 ;+
1266 ; Send capabilities message
1267 ;
1268 ; message format: <no. features><...fid's...>
1269 ;-
1270 004576' 004767 176606 SN$CAP: CALL BF$SDB ; GET A MSG BUFFER
1271 004602' 103451 BCS 100$
1272 004604' 016403 000020 MOV C.BUF+2(R4),R3 ; GET BUFFER ADDRESS
1273 ; FORMAT A NURD MESSAGE
1274 004610' 112723 000005 MOVB #NM.CAP,(R3)+ ; NURD MSG TYPE = CAPABILITIES
1275 004614' 105023 CLRB (R3)+ ; NO FLAGS
1276 004616' PUSH$S R3 ; SAVE PTR TO CNT
1277 004620' 105023 CLRB (R3)+ ; INIT CNT
1278 004622' 012764 000003 000022 MOV #3,C.CNT(R4) ; SET BUFFER CNT = BYTES INSERTED
1279 004630' PUSH$S R5 ; SAVE THE DATABASE PTR
1280 004632' 062705 000156 ADD #C.CFET,R5 ; GET R5 -> COMMON FEATURES LIST
1281 004636' 005001 CLR R1 ; INIT THE FID
1282
1283 004640' 005000 10$: CLR R0 ; GET LENGTH OF FEATURE LIST
1284 004642' 152500 BISB (R5)+,R0
1285 004644' 001407 BEQ 31$ ; NO FEATURES!!
1286
1287 004646' 005201 20$: INC R1 ; ADVANCE THE FID
1288 004650' 105725 TSTB (R5)+ ; CHECK FOR SUPPORT OF IT
1289 004652' 001403 BEQ 30$ ; NOPE
1290 004654' 110123 MOVB R1,(R3)+ ; YES - STORE FID IN MSG
1291 004656' 005264 000022 INC C.CNT(R4) ; COUNT IT
1292 004662' 077007 30$: SOB R0,20$
1293
1294 004664' 105701 31$: TSTB R1 ; CHECK WHICH FEATURE LIST
1295 004666' 100403 BMI 40$ ; DEVICE SPECIFIC - DONE
1296 004670' 012701 000200 MOV #200,R1 ; INIT FID FOR DEVICE SPECIFIC FEATURES
1297 004674' 000761 BR 10$ ; PROCESS THAT LIST
1298
1299 004676' 40$: POP$S R5 ; GET THE DATABASE PTR BACK
1300 004700' 016400 000022 MOV C.CNT(R4),R0 ; GET THE BUFFER CNT
1301 004704' 162700 000003 SUB #3,R0 ; CALC NO. FEATURES FOUND
1302 004710' 110036 MOVB R0,@(SP)+ ; STORE CNT IN CNT BYTE OF MSG
1303 004712' 005265 000106 INC C.IOCN(R5)
1304 004716' 004767 000000G CALL $SCHED
1305 004722' 105065 000120 CLRB C.CAPP(R5) ; FLUSH THE FLAG
1306 004726' 100$: RETURN
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 26
CR.M11 30-DEC-82 02:07 GET AND PUT DATA BYTES
1308 ;+
1309 ; Data / Features hiber function
1310 ; Called by process to wait for a clock tick.
1311 ;-
1312 004730' 010065 000004 ZZ$SLP: MOV R0,C.DTXT(R5) ; STORE THE REGISTERS 1ST
1313 004734' 012700 000006 MOV #C.DTXT+2,R0
1314 004740' 060500 ADD R5,R0 ; R0 -> R1 SLOT
1315 004742' 010120 MOV R1,(R0)+
1316 004744' 010220 MOV R2,(R0)+
1317 004746' 010320 MOV R3,(R0)+
1318 004750' 010420 MOV R4,(R0)+
1319 004752' 105065 000044 CLRB C.DTXL(R5) ; INIT THE COUNT
1320
1321 004756' 122765 000013 000044 10$: CMPB #DTXTSZ-5,C.DTXL(R5) ; CHECK INCIPIENT OVERFLOW
1322 004764' 101001 BHI 20$
1323 004766' 000003 BPT ; PROGRAM BUG
1324 004770' 012620 20$: MOV (SP)+,(R0)+ ; XFER NEXT STACK WORD
1325 004772' 105265 000044 INCB C.DTXL(R5) ; COUNT IT
1326 004776' 026506 000046 CMP C.DFSP(R5),SP ; CHECK ORIGIN
1327 005002' 001365 BNE 10$ ; MORE
1328 005004' RETURN ; DONE
1329
1330
1331 ;+
1332 ; Clock has ticked.
1333 ;-
1334 005006' 010665 000046 ZZ$WAK: MOV SP,C.DFSP(R5) ; Set the new stack origin
1335 005012' 005000 CLR R0 ; Get the number of
1336 005014' 156500 000044 BISB C.DTXL(R5),R0 ; words to return to stack
1337 005020' 006300 ASL R0 ; as word offset
1338 005022' 062700 000016 ADD #C.DTXT+12,R0 ; This is where they are at
1339 005026' 060500 ADD R5,R0 ; R0 -> 1st word to return to stack
1340
1341 005030' 014046 10$: MOV -(R0),-(SP) ; Xfer the stack contents
1342 005032' 105365 000044 DECB C.DTXL(R5) ; Count them
1343 005036' 001374 BNE 10$
1344
1345 005040' 014004 MOV -(R0),R4 ; Restore the registers
1346 005042' 014003 MOV -(R0),R3
1347 005044' 014002 MOV -(R0),R2
1348 005046' 014001 MOV -(R0),R1
1349 005050' 014000 MOV -(R0),R0
1350 005052' RETURN ; RETURN TO ORIGINAL CALLER OF ZZ$SLP
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 27
CR.M11 30-DEC-82 02:07 INTERRUPT SERVICE
1352 .sbttl Interrupt Service
1353 ;+
1354 ; Configuration stuff
1355 ;-
1356 000005 CRHNG = 5 ; HUNG DEVICE TIME CONSTANT
1357 000005 RDAHD = 5 ; C.IOCN LIMIT WHEN CA.XOF SET
1358
1359 ;+
1360 ; CR11 Hardware device register definitions
1361 ;-
1362 000000 CRS = 0 ; CARD READER STATUS REGISTER
1363
1364 000001 READ = 1 ; (W) FEED A CARD TO THE READ STATION
1365 000002 EJECT = 2 ; (R/W) INHIBIT COLUMN DONE & TIMERR
1366 000100 INTENB = 100 ; (R/W) INTERRUPT ENABLE
1367 ; (ERROR,CARD DONE,COLUMN DONE,
1368 ; OFFLINE OR ONLINE TRANSITION)
1369 000200 COLDN = 200 ; (R:I) COLUMN DONE - DATA READY
1370 000400 RDROFL = 400 ; (R) READER IS OFFLINE
1371 001000 BUSY = 1000 ; (R) READER BUSY
1372 002000 RDRONL = 2000 ; (R:I) READER TRANSITION TO ONLINE
1373 004000 TIMERR = 4000 ; (R) TIMING ERROR - SERVICE TOO SLOW
1374 010000 MOCHK = 10000 ; (R) MOTION CHECK -FORCES OFFLINE
1375 ; (FEED ERROR,MOTION ERROR,STACK FAIL)
1376 020000 HOCHK = 20000 ; (R) HOPPER CHECK - INPUT EMPTY/OUTPUT FULL
1377 ; FORCES OFFLINE
1378 040000 CARDN = 40000 ; (R:I) CARD DONE
1379 100000 ERROR = 100000 ; (R:I) SUMMARY ERROR BIT
1380 ; SET BY: TRANSITION TO OFFLINE
1381 ; TIMING ERROR AT CARD DONE TIME
1382
1383 000002 CRB1 = CRS+2 ; IMAGE DATA REGISTER
1384 ; BIT 11 = ZONE 12
1385 ; BIT 10 = ZONE 11
1386 ; BIT 9 = ZONE 0
1387 ; BITS 8-0 = ROWS 1-9
1388
1389 000004 CRB2 = CRB1+2 ; COMPRESSED DATA REGISTER
1390 ; BIT 7 = ZONE 12
1391 ; BIT 6 = ZONE 11
1392 ; BIT 5 = ZONE 0
1393 ; BIT 4 = ROW 9
1394 ; BIT 3 = ROW 8
1395 ; BITS 2-0 = ROWS 1-7 ENCODED(SINGLE PUNCH)
1396 ; MULTIPUNCH IN 1-7 OR'S
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 28
CR.M11 30-DEC-82 02:07 INTERRUPT SERVICE
1398 ;+
1399 ; Start reader
1400 ;-
1401 005054' 032765 000042 000102 $CRSTR: BIT #CA.PAU!CA.EOF,C.ASTS(R5) ; START THE CARD READER
1402 005062' 001012 BNE 6$ ; CAN'T YET
1403 005064' 022765 000005 000106 CMP #RDAHD,C.IOCN(R5) ; YES - CHECK READ AHEAD LIMIT
1404 005072' 003406 BLE 6$ ; STOP READING
1405
1406 005074' 005765 000076 5$: TST C.DDMQ(R5) ; CHECK FOR BUFFERS
1407 005100' 001036 BNE 10$ ; YES - CAN PROCEED
1408 005102' 004767 000000G CALL $RDBGT ; GET A BUFFER
1409 005106' 103004 BCC 7$ ; OK
1410 005110' 112765 000001 000121 6$: MOVB #1,C.STRT(R5) ; SET PENDING READ
1411 005116' RETURN ; WAIT TIL ANOTHER TIME
1412
1413 005120' 112764 000004 000025 7$: MOVB #S$PEOM,C.PRM1+1(R4)
1414 005126' 012764 177777 000026 MOV #-1,C.PRM2(R4) ; Identify as an RDB
1415 005134' 016764 000000G 000022 MOV .RDBSZ,C.CNT(R4) ; Set size
1416 005142' 112764 000002 000012 MOVB #FC.XME,C.FNC(R4)
1417 005150' 112764 000006 000013 MOVB #S$SND,C.MOD(R4)
1418 005156' 116564 000001 000011 MOVB C.NRD(R5),C.PIX(R4)
1419 005164' ENQ$ C.DDMQ ; Queue it
1420 005176' 005065 000064 10$: CLR C.PUBP+2(R5) ; INIT THINGS TO CAUSE COLD STARTUP
1421 005202' 105065 000121 CLRB C.STRT(R5) ; FLUSH THE PENDING READ
1422 005206' 105065 000060 CLRB C.COLC(R5) ; CLEAR COLUMN COUNT FOR CLEAN START
1423 005212' 042765 007700 000102 BIC #CA.ERR!CA.OFL!CA.TMO!CA.IVP,C.ASTS(R5)
1424 ; FLUSH CONDITIONS OF LAST CARD
1425
1426
1427 005220' 112765 000005 000061 $CRGO: MOVB #CRHNG,C.HUNG(R5) ; SET THE HUNG TIMER
1428 005226' 012775 000101 000002 MOV #INTENB!READ,@C.CSR(R5) ; GOOSE IT
1429 005234' RETURN
1430
1431 005236' 005075 000002 $CRSTP: CLR @C.CSR(R5) ; STOP THE INTERRUPTS
1432 005242' 105065 000061 CLRB C.HUNG(R5) ; AND FLUSH THE HUNG TIMER
1433 005246' 105065 000121 CLRB C.STRT(R5) ; FLUSH ANY PENDING READS
1434 005252' RETURN
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 29
CR.M11 30-DEC-82 02:07 INTERRUPT SERVICE
1436 ;+
1437 ; Interrupt service routine
1438 ;
1439 ; R5 Database address
1440 ;
1441 ; NURD msg format: <0><msg flags><seq><data flags><seg cnt><...segs...>
1442 ;
1443 ; Segment format: <cnt><...cnt data items> or <200!cnt><data item>
1444 ; EOR segment: <0>
1445 ;-
1446 005254' $CRINT::
1447 005254' 105065 000061 CLRB C.HUNG(R5) ; Make sure hung timer is off
1448 005260' SMAP$S
1449 005264' PUSH$S <R0,R1,R2,R3>
1450 005274' 016503 000002 MOV C.CSR(R5),R3 ; R3/CSR ADR
1451 005300' 012365 000056 MOV (R3)+,C.RST(R5) ; READ THE STATUS
1452 005304' 003411 BLE 25$
1453 005306' 032765 000200 000056 BIT #COLDN,C.RST(R5) ; CHECK COLUMN DONE
1454 005314' 001002 BNE 20$
1455 005316' CALLR CRDEND ; MUST BE CARD DONE
1456
1457 ; COLUMN DONE - READ DATA
1458 005322' 105365 000060 20$: DECB C.COLC(R5) ; COUNT THE COLUMN
1459 005326' 001002 BNE 30$
1460 005330' 25$: CALLR INTERR ; READING BEYOND DEVICE WIDTH
1461
1462 005334' 012300 30$: MOV (R3)+,R0 ; R0/IMAGE DATA
1463 005336' 105765 000177 TSTB CR.EOF+F.FCV(R5) ; CHECK EOF?
1464 005342' 001421 BEQ 50$ ; NOT INTERESTED
1465 005344' 032765 000040 000102 BIT #CA.EOF,C.ASTS(R5) ; EOF ALREADY ENCOUNTERED ?
1466 005352' 001402 BEQ 40$ ; NO
1467 005354' 000167 000522 JMP 190$ ; YES, SKIP JUNK
1468
1469 005360' 022700 007417 40$: CMP #EOFASC,R0 ; CHECK FOR EOF PUNCH
1470 005364' 001010 BNE 50$
1471 005366' 005765 000064 TST C.PUBP+2(R5) ; CHECK COLUMN 1
1472 005372' 001005 BNE 50$
1473 005374' 052765 000042 000102 BIS #CA.EOF!CA.PAU,C.ASTS(R5) ; SET EOF AND PAUSE
1474 005402' 005046 CLR -(SP) ; PUT A FAKE DATA MODE INDICATOR ON
1475 005404' 000465 BR 100$ ; STACK FOR LATER CODE TO CLEAN OFF
1476
1477 005406' 116504 000174 50$: MOVB CR.DAT+F.FCV(R5),R4 ; CHECK DATA MODE
1478 005412' 162704 000002 SUB #DM.CLI,R4 ; CREATE 3 STATE FLAG FOR LATER USE
1479 005416' 010446 MOV R4,-(SP) ; TOP OF STACK = DATA MODE FLAG:
1480 ; < 0 => ASCII MODE
1481 ; = 0 => COLUMN IMAGE MODE
1482 ; > 0 => AUGMENTED COLUMN IMAGE MODE
1483 005420' 001457 BEQ 100$ ; IMAGE
1484 005422' 012301 MOV (R3)+,R1 ; R1/CODED DATA
1485 005424' 010102 MOV R1,R2
1486 005426' 042702 177770 BIC #^C7,R2
1487 005432' 006302 ASL R2 ; MAKE WORD OFFSET
1488 005434' 042701 000007 BIC #7,R1
1489 005440' 006201 ASR R1
1490 005442' 006201 ASR R1 ; R1/Z<12,11,0,9,8>*2, R2/<Z1-Z7 CODE>*2
1491 005444' 005716 TST (SP) ; CHECK DATA MODE
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 29-1
CR.M11 30-DEC-82 02:07 INTERRUPT SERVICE
1492 005446' 002024 BGE 80$ ; AUGMENTED COLUMN IMAGE MODE
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 30
CR.M11 30-DEC-82 02:07 INTERRUPT SERVICE
1494 ; ASCII MODE
1495 005450' 006000 ROR R0 ; CHECK FOR MULTIPUNCH
1496 005452' 000241 CLC
1497 005454' 106000 RORB R0 ; LO R0/0+Z1-Z7
1498 005456' 146200 007210' BICB ZTAB(R2),R0 ; FLUSH SINGLE ZONE
1499 005462' 001003 BNE 60$ ; NONZERO => MULTIPUNCH
1500 005464' 016101 007110' MOV ZONTAB(R1),R1 ; GET TABLET
1501 005470' 001006 BNE 70$ ; ZONES OK
1502 ; ILLEGAL ZONE COMBINATION
1503 005472' 012700 000334 60$: MOV #ERRCHR,R0 ; ILLEGAL CHARACTER
1504 005476' 052765 002000 000102 BIS #CA.IVP,C.ASTS(R5) ; SET INVALID PUNCH FLAG
1505 005504' 000425 BR 100$
1506
1507 005506' 006202 70$: ASR R2 ; GET BYTE OFFSET BACK
1508 005510' 060201 ADD R2,R1 ; R1/TABLET ENTRY
1509 005512' 005000 CLR R0 ; MAKE FULL WORD DATA ITEM
1510 005514' 151100 BISB (R1),R0 ; R0/TRANSLATED CHARACTER
1511 005516' 000420 BR 100$
1512
1513 ; AUGMENTED COLUMN IMAGE
1514 005520' 010004 80$: MOV R0,R4 ; CHECK ERRORS
1515 005522' 006004 ROR R4
1516 005524' 000241 CLC
1517 005526' 106004 RORB R4 ; LO R4/0+Z1-Z7
1518 005530' 146204 007210' BICB ZTAB(R2),R4 ; FLUSH ZONE BIT
1519 005534' 001405 BEQ 90$ ; ZERO => SINGLE PUNCH
1520 005536' 052700 100000 BIS #100000,R0 ; MULTIPUNCH
1521 005542' 052765 002000 000102 BIS #CA.IVP,C.ASTS(R5) ; SET INVALID PUNCH FLAG
1522 005550' 000300 90$: SWAB R0 ; STUFF Z1-Z7 CODE IN UPPER HALF
1523 005552' 156200 007211' BISB ZTAB+1(R2),R0
1524 005556' 000300 SWAB R0
1525
1526 ; WE NOW HAVE THE DECODED CHARACTER
1527 ; COLUMN IMAGE
1528 005560' 100$: MAP$ C.PUBP(R5) ; MAP THE BUFFER
1529 005566' 016503 000064 MOV C.PUBP+2(R5),R3 ; R3/CURRENT BUFFER PTR
1530 005572' 001412 BEQ 110$ ; 1ST COLUMN
1531 005574' 016502 000066 MOV C.SGHD(R5),R2 ; GET SEGMENT HEAD ADR
1532 005600' 001451 BEQ 120$ ; NONE IN PROGRESS
1533 005602' 105712 TSTB (R2)
1534 005604' 100066 BPL 130$ ; CHECK FOR COMPRESSION
1535
1536 ; COMPRESSED SEGMENT
1537 005606' 020065 000070 CMP R0,C.LDAT(R5) ; CHECK CONTINUITY
1538 005612' 001044 BNE 120$ ; END OF SEQUENCE
1539 005614' 105212 INCB (R2) ; COUNT ANOTHER - ASSUME 127 COL LIMIT HERE
1540 005616' 000530 BR 180$
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 31
CR.M11 30-DEC-82 02:07 INTERRUPT SERVICE
1542 ; NEW CARD, SO SET UP THE BUFFER
1543 005620' 016503 000076 110$: MOV C.DDMQ(R5),R3 ; 1ST COLUMN - SET UP PTRS
1544 005624' 016365 000020 000064 MOV C.BUF+2(R3),C.PUBP+2(R5); BUFFER ADDRESS
1545 005632' 016365 000016 000062 MOV C.BUF(R3),C.PUBP(R5) ; BUFFER VIRTUAL ADDRESS
1546 005640' MAP$ C.BUF(R3)
1547 005646' 016503 000064 MOV C.PUBP+2(R5),R3 ; GET R3/BUFFER ADDRESS
1548 005652' 010365 000074 MOV R3,C.NRDA(R5) ; SAVE BEG OF NURD MSG
1549 005656' 116565 000201 000060 MOVB CR.DWD+F.FCV(R5),C.COLC(R5) ; SET COLUMN COUNTER
1550
1551 ; FORMAT A NURD MESSAGE
1552 005664' 112723 000000 MOVB #NM.DAT,(R3)+ ; MSGTYPE = DATA
1553 005670' 105023 CLRB (R3)+ ; NO MSG FLAGS
1554 005672' 105265 000104 INCB C.CDCT(R5) ; COUNT THE CARD
1555 005676' 116523 000104 MOVB C.CDCT(R5),(R3)+ ; INSERT SEQ NO. = LO CARD COUNT
1556 005702' 105023 CLRB (R3)+ ; INIT DATA FLAGS
1557 005704' 105023 CLRB (R3)+ ; INIT SEGMENT COUNT
1558 005706' 005065 000066 CLR C.SGHD(R5) ; FLUSH C.SGHD
1559 005712' 005065 000070 CLR C.LDAT(R5) ; FLUSH C.LDAT
1560 005716' 012765 000005 000072 MOV #N.DDAT,C.PUBS(R5) ; SET BUFFER COUNT TO MSG OVERHEAD
1561
1562 005724' 010302 120$: MOV R3,R2 ; BEGIN NEW SEGMENT
1563 005726' 105023 CLRB (R3)+ ; INIT NEW SEGMENT HEADER
1564 005730' 005265 000072 INC C.PUBS(R5) ; COUNT SEG HEAD IN BUFFER
1565 005734' 010265 000066 MOV R2,C.SGHD(R5) ; SAVE NEW HDR ADR
1566 005740' 016504 000074 MOV C.NRDA(R5),R4 ; GET MSG BEG
1567 005744' 105264 000004 INCB N.DSGC(R4) ; INCREMENT TOTAL SEGMENT COUNT
1568 005750' 032765 000040 000102 BIT #CA.EOF,C.ASTS(R5) ; DID WE GET EOF CHARACTER ?
1569 005756' 001432 BEQ 160$ ; NO
1570 005760' 000445 BR 170$ ; YES, LEAVE
1571
1572 005762' 020065 000070 130$: CMP R0,C.LDAT(R5) ; SEE IF NEW COMPR SEQ
1573 005766' 001026 BNE 160$ ; NO - JUST BUFFER THE COL
1574 005770' 005716 TST (SP) ; REMOVE DATA ITEM FROM BUFFER
1575 005772' 002403 BLT 140$
1576 005774' 005303 DEC R3 ; WORD
1577 005776' 005365 000072 DEC C.PUBS(R5) ; REM FROM BUFFER
1578 006002' 005303 140$: DEC R3 ; BYTE
1579 006004' 005365 000072 DEC C.PUBS(R5) ; REM FROM BUFFER
1580 006010' 105312 DECB (R2) ; REMOVE PREVIOUS DATA ITEM FROM LAST SEG
1581 006012' 001411 BEQ 150$ ; REMOVED WHOLE SEGMENT
1582 006014' 010302 MOV R3,R2 ; BEGIN NEW SEGMENT
1583 006016' 010265 000066 MOV R2,C.SGHD(R5) ; SAVE NEW HDR ADR
1584 006022' 016504 000074 MOV C.NRDA(R5),R4
1585 006026' 105264 000004 INCB N.DSGC(R4) ; INCREMENT TOTAL SEGMENT COUNT
1586 006032' 005265 000072 INC C.PUBS(R5) ; COUNT NEW SEG HEAD IN BUFFER
1587
1588 006036' 010203 150$: MOV R2,R3 ; SET BUFFER PTR BACK TO SEG HEAD
1589 006040' 112723 000201 MOVB #ND.CMP+1,(R3)+ ; NEW SEGMENT - INIT AS A COMPRESSED SEG
1590 006044' 010065 000070 160$: MOV R0,C.LDAT(R5) ; SAVE NEW DATA ITEM IN C.LDAT
1591 006050' 110023 MOVB R0,(R3)+ ; INSERT NEW DATA ITEM(LO) IN BUFFER
1592 006052' 005265 000072 INC C.PUBS(R5) ; COUNT IT IN BUFFER
1593 006056' 105212 INCB (R2) ; COUNT IT IN SEGMENT
1594 006060' 005716 TST (SP) ; CHECK DATA MODE => DATA LENGTH
1595 006062' 002404 BLT 170$ ; ASCII - 1 BYTE
1596 006064' 000300 SWAB R0 ; OTHERWISE - 2 BYTES
1597 006066' 110023 MOVB R0,(R3)+ ; INSERT NEW DATA ITEM(HI) IN BUFFER
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 31-1
CR.M11 30-DEC-82 02:07 INTERRUPT SERVICE
1598 006070' 005265 000072 INC C.PUBS(R5) ; COUNT IT IN BUFFER
1599 ; BUT NOT IN SEGMENT
1600 006074' 010365 000064 170$: MOV R3,C.PUBP+2(R5) ; SAVE UPDATED BUFFER PTR
1601 006100' 005726 180$: TST (SP)+ ; FLUSH DATA MODE FLAG
1602 006102' 032765 040000 000056 190$: BIT #CARDN,C.RST(R5)
1603 006110' 001057 BNE CRDEND ; CARD FINISHED ALSO
1604 006112' 112765 000005 000061 MOVB #CRHNG,C.HUNG(R5) ; EXIT - SET TIMER
1605 006120' POP$S <R3,R2,R1,R0>
1606 006130' MAP$S
1607 006134' RETURN
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 32
CR.M11 30-DEC-82 02:07 INTERRUPT SERVICE
1609 006136' 016501 000056 INTERR: MOV C.RST(R5),R1 ; ERROR-INTERRUPT ENTRY POINT
1610 006142' 012700 000002 MOV #CA.PAU,R0 ; DETECT INDIVIDUAL ERRORS
1611 006146' 032701 020000 BIT #HOCHK,R1
1612 006152' 001402 BEQ 11$
1613 006154' 052700 000100 BIS #CA.HOP,R0 ; HOPPER CHECK
1614
1615 006160' 032701 010000 11$: BIT #MOCHK,R1
1616 006164' 001402 BEQ 12$
1617 006166' 052700 000200 BIS #CA.MOT,R0 ; MOTION CHECK
1618
1619 006172' 032701 004000 12$: BIT #TIMERR,R1
1620 006176' 001402 BEQ 13$
1621 006200' 052700 000400 BIS #CA.TER,R0 ; TIMING ERROR
1622
1623 006204' 032701 000400 13$: BIT #RDROFL,R1
1624 006210' 001402 BEQ 14$
1625 006212' 052700 001000 BIS #CA.OFL,R0 ; READER OFFLINE
1626
1627 006216' 050065 000102 14$: BIS R0,C.ASTS(R5) ; MARK ERROR => PAUSE ALSO
1628 006222' 005765 000064 TST C.PUBP+2(R5) ; CHECK FOR EXISTING BUFFER
1629 006226' 001410 BEQ CRDEND ; NO CARD TO MARK ERRORS
1630 006230' MAP$ C.PUBP(R5) ; MAP TO THE BUFFER
1631 006236' 016501 000074 MOV C.NRDA(R5),R1 ; AND GET PTR TO PLACE IN BUFFER
1632 006242' 152761 000002 000003 BISB #ND.IER,N.DFLG(R1) ; SET ERROR STATUS FLAG IN NURD MSG
1633 ; CALLR CRDEND ; FALL INTO CRDEND
1634
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 33
CR.M11 30-DEC-82 02:07 INTERRUPT SERVICE
1636 ; CARD DONE
1637 006250' CRDEND:
1638 006250' 005075 000002 CLR @C.CSR(R5) ; STOP THE READER
1639 006254' POP$S <R3,R2,R1,R0> ; RESTORE INTERRUPT LEVEL REGISTERS
1640 006264' MAP$S
1641 006270' 032765 010000 000102 bit #ca.syn,c.asts(r5) ; synch requested in progress
1642 006276' 001401 beq 3$ ; no so do synch request
1643 006300' return
1644 006302' 052765 010000 000102 3$: bis #ca.syn,c.asts(r5) ; set requesting synch
1645 006310' 010504 MOV R5,R4 ; Calculate synch block
1646 006312' 062704 000050 ADD #C.SYN,R4 ; address
1647 006316' 012764 006330' 000004 MOV #5$,S.DSP(R4) ; Set resumption address
1648 006324' CALLR $SYNCH ; Go
1649
1650 ; Here at synch level
1651 006330' 5$:
1652 006330' 042765 010000 000102 bic #ca.syn,c.asts(r5) ; clear synch request flag
1653 006336' MAP$ C.PUBP(R5)
1654 006344' 016503 000064 MOV C.PUBP+2(R5),R3 ; GET THE BUFFER PTR
1655 006350' 001464 BEQ 20$ ; NULL CARD
1656 006352' 105013 CLRB (R3) ; INSERT EOR = NULL SGMENT
1657 006354' 016501 000072 MOV C.PUBS(R5),R1 ; GET THE BUFFER CNT
1658 006360' 005201 INC R1 ; COUNT THE EOR IN THE BUFFER
1659 006362' 016504 000074 MOV C.NRDA(R5),R4 ; GET THE MSG PTR
1660 006366' 105264 000004 INCB N.DSGC(R4) ; COUNT THE EOR IN MSG SEGMENT CNT
1661 006372' DEQ$ C.DDMQ
1662 006410' 010164 000022 MOV R1,C.CNT(R4) ; STUFF FINAL BUFFER CNT IN CCB
1663 006414' 032765 000040 000102 BIT #CA.EOF,C.ASTS(R5) ; CHECK FOR EOF
1664 006422' 001405 BEQ 10$
1665 006424' 016501 000074 MOV C.NRDA(R5),R1 ; INSERT EOF IN MSG
1666 006430' 152761 000004 000003 BISB #ND.EOF,N.DFLG(R1)
1667
1668 006436' 032765 000020 000102 10$: BIT #CA.ABE,C.ASTS(R5) ; CHECK ABORTS
1669 006444' 001417 BEQ 14$
1670 006446' MAP$ C.BUF(R4) ; ABORTING
1671 006454' 016400 000020 MOV C.BUF+2(R4),R0
1672 006460' 132760 000004 000003 BITB #ND.EOF,N.DFLG(R0) ; CHECK THIS CARD FOR EOF
1673 006466' 001003 BNE 12$ ; YES!
1674 006470' 004767 000000G CALL $RDBRT ; No, return the buffer
1675 006474' 000412 BR 20$
1676
1677 006476' 042765 000020 000102 12$: BIC #CA.ABE,C.ASTS(R5) ; ABORT CONDITION FULFILLED
1678 006504' 005265 000106 14$: INC C.IOCN(R5) ; COUNT THE BUFFER
1679 006510' 112764 000002 000012 MOVB #FC.XME,C.FNC(R4)
1680 006516' 004767 000000G CALL $SCHED
1681 006522' 032765 000046 000102 20$: BIT #CA.PAU!CA.ADN!CA.EOF,C.ASTS(R5) ; DO WE NEED TO PAUSE ?
1682 006530' 001411 BEQ 30$ ; NO
1683 006532' 105765 000117 TSTB C.RATT(R5) ; PAUSING, ATTN ALREADY PENDING ?
1684 006536' 001005 BNE 25$ ; YES, DON'T OVERWRITE CODE
1685 006540' 112765 000001 000117 MOVB #N.ASTC,C.RATT(R5) ; SET THE CODE
1686 006546' 004767 175516 CALL SN$ATT ; INSTIGATE THE ATTN MESSAGE
1687 006552' 25$: RETURN ; GET ON OUT
1688
1689 006554' 30$: CALLR $CRSTR ; START NEXT CARD
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 34
CR.M11 30-DEC-82 02:07 HOLLERITH - ASCII CONVERSION TABLES
1691 .sbttl Hollerith - ASCII Conversion Tables
1692
1693 ; CONVERSION IS ZONE ORIENTED
1694 ; ZONE LABELS ARE CONSTRUCTED BY APPENDING TO "ZON"
1695 ; THE OCTAL CODE FOR CARD ZONES(ROWS)
1696 ; ZONE 12 = 20
1697 ; ZONE 11 = 10
1698 ; ZONE 0 = 4
1699 ; ZONE 9 = 2
1700 ; ZONE 8 = 1
1701
1702 006560' ZON0: ;NO ZONE PUNCHES
1703 006560' 040 .byte 40 ;NO ROW PUNCHES
1704 006561' 061 .byte '1 ;ROW 1
1705 006562' 062 .byte '2 ;ROW 2
1706 006563' 063 .byte '3 ;ROW 3
1707 006564' 064 .byte '4 ;ROW 4
1708 006565' 065 .byte '5 ;ROW 5
1709 006566' 066 .byte '6 ;ROW 6
1710 006567' 067 .byte '7 ;ROW 7
1711
1712 006570' ZON20: ;ZONE 12
1713 006570' 046 .byte '& ;NO ROW PUNCHES
1714 006571' 101 .byte 'A ;ROW 1
1715 006572' 102 .byte 'B ;ROW 2
1716 006573' 103 .byte 'C ;ROW 3
1717 006574' 104 .byte 'D ;ROW 4
1718 006575' 105 .byte 'E ;ROW 5
1719 006576' 106 .byte 'F ;ROW 6
1720 006577' 107 .byte 'G ;ROW 7
1721
1722 006600' ZON10: ;ZONE 11
1723 006600' 055 .byte '- ;NO ROW PUNCHES
1724 006601' 112 .byte 'J ;ROW 1
1725 006602' 113 .byte 'K ;ROW 2
1726 006603' 114 .byte 'L ;ROW 3
1727 006604' 115 .byte 'M ;ROW 4
1728 006605' 116 .byte 'N ;ROW 5
1729 006606' 117 .byte 'O ;ROW 6
1730 006607' 120 .byte 'P ;ROW 7
1731
1732 006610' ZON4: ;ZONE 0
1733 006610' 060 .byte '0 ;NO ROW PUNCHES
1734 006611' 057 .byte '/ ;ROW 1
1735 006612' 123 .byte 'S ;ROW 2
1736 006613' 124 .byte 'T ;ROW 3
1737 006614' 125 .byte 'U ;ROW 4
1738 006615' 126 .byte 'V ;ROW 5
1739 006616' 127 .byte 'W ;ROW 6
1740 006617' 130 .byte 'X ;ROW 7
1741
1742 006620' ZON1: ;ZONE 8
1743 006620' 070 .byte '8 ;NO ROW PUNCHES
1744 006621' 140 .byte 140 ;ROW 1
1745 006622' 072 .byte ': ;ROW 2
1746 006623' 043 .byte '# ;ROW 3
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 34-1
CR.M11 30-DEC-82 02:07 HOLLERITH - ASCII CONVERSION TABLES
1747 006624' 100 .byte '@ ;ROW 4
1748 006625' 047 .byte '' ;ROW 5
1749 006626' 075 .byte '= ;ROW 6
1750 006627' 042 .byte '" ;ROW 7
1751
1752 006630' ZON2: ;ZONE 9
1753 006630' 071 .byte '9 ;NO ROW PUNCHES
1754 006631' 334 .byte ERRCHR ;ROW 1
1755 006632' 026 .byte SYN ;ROW 2
1756 006633' 334 .byte ERRCHR ;ROW 3
1757 006634' 334 .byte ERRCHR ;ROW 4
1758 006635' 334 .byte ERRCHR ;ROW 5
1759 006636' 334 .byte ERRCHR ;ROW 6
1760 006637' 004 .byte EOT ;ROW 7
1761
1762 006640' ZON30: ;ZONE 12-11
1763 006640' 174 .byte 174 ;NO ROW PUNCHES
1764 006641' 112 .byte 'J ;ROW 1
1765 006642' 113 .byte 'K ;ROW 2
1766 006643' 114 .byte 'L ;ROW 3
1767 006644' 115 .byte 'M ;ROW 4
1768 006645' 116 .byte 'N ;ROW 5
1769 006646' 117 .byte 'O ;ROW 6
1770 006647' 120 .byte 'P ;ROW 7
1771
1772 006650' ZON24: ;ZONE 12-0
1773 006650' 173 .byte 173 ;NO ROW PUNCHES
1774 006651' 101 .byte 'A ;ROW 1
1775 006652' 102 .byte 'B ;ROW 2
1776 006653' 103 .byte 'C ;ROW 3
1777 006654' 104 .byte 'D ;ROW 4
1778 006655' 105 .byte 'E ;ROW 5
1779 006656' 106 .byte 'F ;ROW 6
1780 006657' 107 .byte 'G ;ROW 7
1781
1782 006660' ZON21: ;ZONE 12-8
1783 006660' 110 .byte 'H ;NO ROW PUNCHES
1784 006661' 334 .byte ERRCHR ;ROW 1
1785 006662' 133 .byte '[ ;ROW 2
1786 006663' 056 .byte '. ;ROW 3
1787 006664' 074 .byte '< ;ROW 4
1788 006665' 050 .byte '( ;ROW 5
1789 006666' 053 .byte '+ ;ROW 6
1790 006667' 041 .byte '! ;ROW 7
1791
1792 006670' ZON22: ;ZONE 12-9
1793 006670' 111 .byte 'I ;NO ROW PUNCHES
1794 006671' 001 .byte SOH ;ROW 1
1795 006672' 002 .byte STX ;ROW 2
1796 006673' 003 .byte ETX ;ROW 3
1797 006674' 334 .byte ERRCHR ;ROW 4
1798 006675' 011 .byte HT ;ROW 5
1799 006676' 334 .byte ERRCHR ;ROW 6
1800 006677' 177 .byte DEL ;ROW 7
1801
1802 006700' ZON14: ;ZONE 11-0
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 34-2
CR.M11 30-DEC-82 02:07 HOLLERITH - ASCII CONVERSION TABLES
1803 006700' 175 .byte 175 ;NO ROW PUNCHES
1804 006701' 176 .byte 176 ;ROW 1
1805 006702' 123 .byte 'S ;ROW 2
1806 006703' 124 .byte 'T ;ROW 3
1807 006704' 125 .byte 'U ;ROW 4
1808 006705' 126 .byte 'V ;ROW 5
1809 006706' 127 .byte 'W ;ROW 6
1810 006707' 130 .byte 'X ;ROW 7
1811
1812 006710' ZON11: ;ZONE 11-8
1813 006710' 121 .byte 'Q ;NO ROW PUNCHES
1814 006711' 334 .byte ERRCHR ;ROW 1
1815 006712' 135 .byte '] ;ROW 2
1816 006713' 044 .byte '$ ;ROW 3
1817 006714' 052 .byte '* ;ROW 4
1818 006715' 051 .byte ') ;ROW 5
1819 006716' 073 .byte '; ;ROW 6
1820 006717' 136 .byte '^ ;ROW 7
1821
1822 006720' ZON12: ;ZONE 11-9
1823 006720' 122 .byte 'R ;NO ROW PUNCHES
1824 006721' 021 .byte DC1 ;ROW 1
1825 006722' 022 .byte DC2 ;ROW 2
1826 006723' 023 .byte DC3 ;ROW 3
1827 006724' 334 .byte ERRCHR ;ROW 4
1828 006725' 334 .byte ERRCHR ;ROW 5
1829 006726' 010 .byte BS ;ROW 6
1830 006727' 334 .byte ERRCHR ;ROW 7
1831
1832 006730' ZON5: ;ZONE 0-8
1833 006730' 131 .byte 'Y ;NO ROW PUNCHES
1834 006731' 334 .byte ERRCHR ;ROW 1
1835 006732' 134 .byte '\ ;ROW 2
1836 006733' 054 .byte ', ;ROW 3
1837 006734' 045 .byte '% ;ROW 4
1838 006735' 137 .byte '_ ;ROW 5
1839 006736' 076 .byte '> ;ROW 6
1840 006737' 077 .byte '? ;ROW 7
1841 006740' ZON6: ;ZONE 0-9
1842 006740' 132 .byte 'Z ;NO ROW PUNCHES
1843 006741' 334 .byte ERRCHR ;ROW 1
1844 006742' 334 .byte ERRCHR ;ROW 2
1845 006743' 334 .byte ERRCHR ;ROW 3
1846 006744' 334 .byte ERRCHR ;ROW 4
1847 006745' 012 .byte LF ;ROW 5
1848 006746' 027 .byte ETB ;ROW 6
1849 006747' 033 .byte ESC ;ROW 7
1850
1851 006750' ZON3: ;ZONE 9-8
1852 006750' 334 .byte ERRCHR ;NO ROW PUNCHES
1853 006751' 334 .byte ERRCHR ;ROW 1
1854 006752' 334 .byte ERRCHR ;ROW 2
1855 006753' 334 .byte ERRCHR ;ROW 3
1856 006754' 024 .byte DC4 ;ROW 4
1857 006755' 025 .byte NAK ;ROW 5
1858 006756' 334 .byte ERRCHR ;ROW 6
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 34-3
CR.M11 30-DEC-82 02:07 HOLLERITH - ASCII CONVERSION TABLES
1859 006757' 032 .byte SUB ;ROW 7
1860
1861 006760' ZON23: ;ZONE 12-9-8
1862 006760' 334 .byte ERRCHR ;NO ROW PUNCHES
1863 006761' 334 .byte ERRCHR ;ROW 1
1864 006762' 334 .byte ERRCHR ;ROW 2
1865 006763' 013 .byte VT ;ROW 3
1866 006764' 014 .byte FF ;ROW 4
1867 006765' 015 .byte CR ;ROW 5
1868 006766' 016 .byte SO ;ROW 6
1869 006767' 017 .byte SI ;ROW 7
1870
1871 006770' ZON13: ;ZONE 11-9-8
1872 006770' 030 .byte CAN ;NO ROW PUNCHES
1873 006771' 031 .byte EM ;ROW 1
1874 006772' 334 .byte ERRCHR ;ROW 2
1875 006773' 334 .byte ERRCHR ;ROW 3
1876 006774' 034 .byte FS ;ROW 4
1877 006775' 035 .byte GS ;ROW 5
1878 006776' 036 .byte RS ;ROW 6
1879 006777' 037 .byte US ;ROW 7
1880
1881 007000' ZON7: ;ZONE 0-9-8
1882 007000' 334 .byte ERRCHR ;NO ROW PUNCHES
1883 007001' 334 .byte ERRCHR ;ROW 1
1884 007002' 334 .byte ERRCHR ;ROW 2
1885 007003' 334 .byte ERRCHR ;ROW 3
1886 007004' 334 .byte ERRCHR ;ROW 4
1887 007005' 005 .byte ENQ ;ROW 5
1888 007006' 006 .byte ACK ;ROW 6
1889 007007' 007 .byte BEL ;ROW 7
1890
1891 007010' ZON25: ;ZONE 12-0-8
1892 007010' 110 .byte 'H ;NO ROW PUNCHES
1893 007011' 334 .byte ERRCHR ;ROW 1
1894 007012' 334 .byte ERRCHR ;ROW 2
1895 007013' 334 .byte ERRCHR ;ROW 3
1896 007014' 334 .byte ERRCHR ;ROW 4
1897 007015' 334 .byte ERRCHR ;ROW 5
1898 007016' 334 .byte ERRCHR ;ROW 6
1899 007017' 334 .byte ERRCHR ;ROW 7
1900
1901 007020' ZON26: ;ZONE 12-0-9
1902 007020' 111 .byte 'I ;NO ROW PUNCHES
1903 007021' 334 .byte ERRCHR ;ROW 1
1904 007022' 334 .byte ERRCHR ;ROW 2
1905 007023' 334 .byte ERRCHR ;ROW 3
1906 007024' 334 .byte ERRCHR ;ROW 4
1907 007025' 334 .byte ERRCHR ;ROW 5
1908 007026' 334 .byte ERRCHR ;ROW 6
1909 007027' 334 .byte ERRCHR ;ROW 7
1910
1911 007030' ZON31: ;ZONE 12-11-8
1912 007030' 121 .byte 'Q ;NO ROW PUNCHES
1913 007031' 334 .byte ERRCHR ;ROW 1
1914 007032' 334 .byte ERRCHR ;ROW 2
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 34-4
CR.M11 30-DEC-82 02:07 HOLLERITH - ASCII CONVERSION TABLES
1915 007033' 334 .byte ERRCHR ;ROW 3
1916 007034' 334 .byte ERRCHR ;ROW 4
1917 007035' 334 .byte ERRCHR ;ROW 5
1918 007036' 334 .byte ERRCHR ;ROW 6
1919 007037' 334 .byte ERRCHR ;ROW 7
1920
1921 007040' ZON32: ;ZONE 12-11-9
1922 007040' 122 .byte 'R ;NO ROW PUNCHES
1923 007041' 334 .byte ERRCHR ;ROW 1
1924 007042' 334 .byte ERRCHR ;ROW 2
1925 007043' 334 .byte ERRCHR ;ROW 3
1926 007044' 334 .byte ERRCHR ;ROW 4
1927 007045' 334 .byte ERRCHR ;ROW 5
1928 007046' 334 .byte ERRCHR ;ROW 6
1929 007047' 334 .byte ERRCHR ;ROW 7
1930
1931 007050' ZON15: ;ZONE 11-0-8
1932 007050' 131 .byte 'Y ;NO ROW PUNCHES
1933 007051' 334 .byte ERRCHR ;ROW 1
1934 007052' 334 .byte ERRCHR ;ROW 2
1935 007053' 334 .byte ERRCHR ;ROW 3
1936 007054' 334 .byte ERRCHR ;ROW 4
1937 007055' 334 .byte ERRCHR ;ROW 5
1938 007056' 334 .byte ERRCHR ;ROW 6
1939 007057' 334 .byte ERRCHR ;ROW 7
1940
1941 007060' ZON16: ;ZONE 11-0-9
1942 007060' 132 .byte 'Z ;NO ROW PUNCHES
1943 007061' 334 .byte ERRCHR ;ROW 1
1944 007062' 334 .byte ERRCHR ;ROW 2
1945 007063' 334 .byte ERRCHR ;ROW 3
1946 007064' 334 .byte ERRCHR ;ROW 4
1947 007065' 334 .byte ERRCHR ;ROW 5
1948 007066' 334 .byte ERRCHR ;ROW 6
1949 007067' 334 .byte ERRCHR ;ROW 7
1950
1951 007070' ZON33: ;ZONE 12-11-9-8
1952 007070' 334 .byte ERRCHR ;NO ROW PUNCHES
1953 007071' 020 .byte DLE ;ROW 1
1954 007072' 334 .byte ERRCHR ;ROW 2
1955 007073' 334 .byte ERRCHR ;ROW 3
1956 007074' 334 .byte ERRCHR ;ROW 4
1957 007075' 334 .byte ERRCHR ;ROW 5
1958 007076' 334 .byte ERRCHR ;ROW 6
1959 007077' 334 .byte ERRCHR ;ROW 7
1960
1961 007100' ZON27: ;ZONE 12-0-9-8
1962 007100' 334 .byte ERRCHR ;NO ROW PUNCHES
1963 007101' 000 .byte NUL ;ROW 1
1964 007102' 334 .byte ERRCHR ;ROW 2
1965 007103' 334 .byte ERRCHR ;ROW 3
1966 007104' 334 .byte ERRCHR ;ROW 4
1967 007105' 334 .byte ERRCHR ;ROW 5
1968 007106' 334 .byte ERRCHR ;ROW 6
1969 007107' 334 .byte ERRCHR ;ROW 7
1970
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 35
CR.M11 30-DEC-82 02:07 HOLLERITH - ASCII CONVERSION TABLES
1972 ; ZONE INDEX TABLE
1973 .even
1974 007110' ZONTAB:
1975 000000 $$=0
1976 000040 .rept 32.
1977 .irp Z,<$$>
1978 .if df, ZON'Z
1979 .word ZON'Z
1980 .iff
1981 .word 0
1982 .endc
1983 .endm
1984 $$=$$+1
1985 .endr
1986
1987
1988
1989 ; ZTAB IS INDEXED BY Z1-Z7 CODE FOR PUNCH BIT.
1990 ; LO BYTE IS ZONE PUNCH MASK, HI BYTE IS ZONE CODE SHIFTED FOR AUG COL
1991 007210' 000 000 ZTAB: .byte 0,0 ; NO PUNCHES
1992 007212' 100 020 .byte 100,1*20 ; ZONE 1
1993 007214' 040 040 .byte 40,2*20 ; ZONE 2
1994 007216' 020 060 .byte 20,3*20 ; ZONE 3
1995 007220' 010 100 .byte 10,4*20 ; ZONE 4
1996 007222' 004 120 .byte 4,5*20 ; ZONE 5
1997 007224' 002 140 .byte 2,6*20 ; ZONE 6
1998 007226' 001 160 .byte 1,7*20 ; ZONE 7
1999 .even
2000
2001 000001 .end
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 36
CR.M11 30-DEC-82 02:07 CROSS REFERENCE TABLE -- USER SYMBOLS
ACK = 000006 1888
BEL = 000007 1889
BF$SDB 003410R 003 508* 1043# 1071* 1172* 1198* 1270*
BS = 000010 1829
BUSY = 001000 1371#
CAN = 000030 1872
CARDN = 040000 1378# 1602
CA.ABE= 000020 148# 606 608 617 670 1668 1677
CA.ABO= 000010 147# 452 606 608 624 670
CA.ADN= 000004 146# 537 599 652 664 670 1138 1208 1681
CA.CLO= 000001 G 144# 257 289 314 419
CA.EOF= 000040 149# 666 670 1401 1465 1473 1568 1663 1681
CA.ERR= 000700 153# 357 363 670 1423
CA.HOP= 000100 150# 153 1220 1227 1613
CA.IVP= 002000 155# 1242 1423 1504 1521
CA.MOT= 000200 151# 153 1208 1235 1617
CA.OFL= 001000 154# 357 363 1212 1423 1625
CA.PAU= 000002 145# 260 652 654 664 670 1216 1401 1473 1610 1681
CA.SYN= 010000 157# 1641 1644 1652
CA.TER= 000400 152# 153 1208 1621
CA.TMO= 004000 156# 373 664 670 1231 1423
CA.XOF= 100000 158#
CCFETL= 000011 G 199#
CDFETL= 000002 G 204#
CD.CWD= 000202 67#
CE.ABO= 177770 68#
CE.BUF= 177600 68#
CE.DCR= 177570 68#
CE.DEV= 177532 68#
CE.DIS= 177520 68#
CE.ERR= 177760 68#
CE.HFE= 177560 68#
CE.MOP= 177750 68#
CE.MTL= 177550 68#
CE.NTE= 177720 68#
CE.ROV= 177540 68#
CE.RTE= 177730 68#
CE.SRC= 177740 68#
CE.TMO= 177710 68#
CE.UDR= 177510 68#
CH.64 = 000001 67#
CH.96 = 000002 67#
CLOCK 000370R 003 113 345#
COLDN = 000200 1369# 1453
CR = 000015 1867
CRB1 = 000002 1383# 1389
CRB2 = 000004 1389#
CRCTL 000024R 002 89 100#
CRCWDS= 000131 G 241#
CRDATS= 000131 G 225#
CRDEND 006250R 003 1455 1603 1629 1637#
CRDONE 000566R 003 91 394#
CRDSP 000622R 003 92 419#
CREOFS= 000101 G 231#
CRHNG = 000005 1356# 1427 1604
CRMCB 000000R 002 76 84#
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 36-1
CR.M11 30-DEC-82 02:07 CROSS REFERENCE TABLE -- USER SYMBOLS
CRS = 000000 1362# 1383
CRTIM 000036R 002 90 110#
CR.CWD 000202 G 240#
CR.DAT 000173 G 224# 1477
CR.DWD 000200 G 235# 1549
CR.EOF 000176 G 230# 1463
CS.SUC= 000001 68#
CTLABC 001634R 003 547 606#
CTLABE 001662R 003 545 617#
CTLABT 001672R 003 546 623#
CTLCPB 001736R 003 553 636#
CTLDMP 001744R 003 549 642#
CTLDSP 001370R 003 503* 544# 554 570*
CTLOTR= 000012 499 554# 565
CTLPAU 001766R 003 550 652#
CTLRSM 002014R 003 551 664#
CTLSTS 002062R 003 548 681#
CTLSYN 001414R 003 471* 560#
CTLXIT 000352R 003 292 337#
C.ASTS 000102 143# 257 260* 289* 314* 357 363* 373* 419 452 537* 599* 606
608* 617* 624* 652 654* 664 666 670* 1138* 1207 1401 1423* 1465
1473* 1504* 1521* 1568 1627* 1641 1644* 1652* 1663 1668 1677* 1681
C.BUF 000016 68# 421 422 516 517 524 525 775 776 1074 1075 1150 1151
1174 1200 1257 1272 1544 1545 1546 1670 1671
C.CAPN 000127 175# 730* 734* 742 744* 748 771
C.CAPP 000120 169# 275* 382 595 636* 644 1305*
C.CDCT 000104 159# 277* 668* 1203 1253 1554* 1555
C.CFET 000156 189# 199 280 734 1002 1280
C.CHN 000002 68#
C.CMSQ 000112 166# 318 494* 515 536
C.CNT 000022 68# 495 531* 587* 780* 1047* 1076 1152 1177* 1258* 1278* 1291* 1300
1415* 1662*
C.COLC 000060 135# 271* 1422* 1458* 1549*
C.CSR 000002 126# 259* 359 1428* 1431* 1450 1638*
C.DDMQ 000076 142# 625 1093 1406 1419* 1543 1661
C.DFET 000170 201# 204 282 744 1006
C.DFSP 000046 131# 464* 1142 1326 1334*
C.DLCQ 000122 173# 458* 459 475 626 1097 1135 1145 1161
C.DMAD 000132 178# 263* 264* 1110* 1111* 1127 1129 1130* 1133 1150* 1151* 1159*
C.DMBS 000136 179# 265* 1112* 1125* 1152* 1160*
C.DMSQ 000140 180# 561* 580 714*
C.DTXL 000044 129# 262* 354 461 628 1108* 1319* 1321 1325* 1336 1342*
C.DTXT 000004 128# 1312* 1313 1338
C.FNC 000012 68# 319* 338* 443* 455* 521* 539* 1050* 1099* 1164* 1416* 1679*
C.HUNG 000061 136# 272* 369 371* 1427* 1432* 1447* 1604*
C.IOCN 000106 162# 269* 327 394* 396* 532* 589* 782* 1179* 1259* 1303* 1403 1678*
C.IOWT 000110 163# 270* 324* 333 334* 345
C.LDAT 000070 139# 1537 1559* 1572 1590*
C.LIN 000010 68#
C.LIX 000010 68#
C.LNK 000000 68#
C.MFLG 000126 174# 468*
C.MOD 000013 68# 490 1051* 1178* 1417*
C.MSGA 000150 184# 266* 267* 1064 1065* 1066* 1074* 1075*
C.MSGQ 000144 183# 586 627 774 779 1077* 1103
C.MSGS 000154 185# 268* 587 588* 780 781* 1062* 1069* 1076* 1113*
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 36-2
CR.M11 30-DEC-82 02:07 CROSS REFERENCE TABLE -- USER SYMBOLS
C.NFSP 000130 176# 718* 777 808* 854*
C.NRD 000001 125# 256* 1052 1418
C.NRDA 000074 141# 1548* 1566 1584 1631 1659 1665
C.OWN 000006 68#
C.PBRC 000142 181# 922* 925
C.PIX 000011 68# 256 1052* 1418*
C.PRM 000024 68#
C.PRM1 000024 68# 1049* 1136 1413*
C.PRM2 000026 68# 398 1048* 1414*
C.PRM3 000030 68#
C.PRM4 000032 68#
C.PRM5 000034 68#
C.PUBP 000062 137# 261* 1109* 1420* 1471 1528 1529 1544* 1545* 1547 1600* 1628 1630
1653 1654
C.PUBS 000072 140# 1560* 1564* 1577* 1579* 1586* 1592* 1598* 1657
C.RATT 000117 168# 274* 374 376* 378 591 642 681 683* 1194 1261* 1683 1685*
C.RECO 000116 167# 273* 349 351* 510*
C.RST 000056 134# 1451* 1453 1602 1609
C.SGHD 000066 138# 1531 1558* 1565* 1583*
C.STK 000004 68#
C.STRT 000121 170# 276* 365 1410* 1421* 1433*
C.STS 000014 68# 337* 440* 442* 454* 520* 538* 1073* 1098* 1162 1163*
C.SYN 000050 133# 1646
C.TIMC 000000 124#
DC1 = 000021 1824
DC2 = 000022 1825
DC3 = 000023 1826
DC4 = 000024 1856
DEL = 000177 1800
DLE = 000020 1953
DM.ASC= 000001 67#
DM.AS8= 000005 67#
DM.AUG= 000004 67#
DM.CLI= 000002 67# 1478
DM.EBC= 000003 67#
DTXTSZ= 000020 127# 128 1321
DVCLOS 000236R 003 104 312#
DVOPEN 000000R 003 103 255#
EJECT = 000002 1365#
EM = 000031 1873
ENQ = 000005 1887
EOFASC= 007417 67# 1469
EOT = 000004 1760
EO.ASC= 000001 67#
EO.IMG= 000002 67#
ERRCHR= 000334 1503 1754 1756 1757 1758 1759 1784 1797 1799 1814 1827 1828 1830
1834 1843 1844 1845 1846 1852 1853 1854 1855 1858 1862 1863 1864
1874 1875 1882 1883 1884 1885 1886 1893 1894 1895 1896 1897 1898
1899 1903 1904 1905 1906 1907 1908 1909 1913 1914 1915 1916 1917
1918 1919 1923 1924 1925 1926 1927 1928 1929 1933 1934 1935 1936
1937 1938 1939 1943 1944 1945 1946 1947 1948 1949 1952 1954 1955
1956 1957 1958 1959 1962 1964 1965 1966 1967 1968 1969
ERROR = 100000 1379#
ESC = 000033 1849
ETB = 000027 1848
ETX = 000003 1796
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 36-3
CR.M11 30-DEC-82 02:07 CROSS REFERENCE TABLE -- USER SYMBOLS
FB.CA = 000100 219# 225 231 241 895
FB.CL0= 000000 208#
FB.CL1= 000001 G 209# 225 231 241 836 899
FB.CP = 000040 218# 765
FB.SST= 000020 217# 225 241 831 913 966
FB.STE= 000010 216# 225 241 959
FB.STR= 000004 212# 847 858 905 917 963 970
FB.WRD= 000002 210# 847 905 963
FC.AST= 000000 68#
FC.CCP= 000022 68# 94 338
FC.CLM= 000003 67#
FC.CL0= 000000 67#
FC.CL1= 000001 67# 838 901
FC.CTL= 000010 68# 89
FC.KCP= 000020 68# 93
FC.KIL= 000006 68# 88
FC.RCE= 000004 68# 87 319 443 455 521 539 1099 1164
FC.RCP= 000016 68# 92
FC.SST= 000002 67# 737 893
FC.SYS= 000012 68#
FC.TIM= 000012 68# 90
FC.XCP= 000014 68# 91
FC.XME= 000002 68# 86 1050 1416 1679
FD.AST= 000000 68#
FD.CCP= 000014 68#
FD.CTL= 000014 68#
FD.KCP= 000004 68#
FD.KIL= 000004 68#
FD.RCE= 000004 68#
FD.RCP= 000004 68#
FD.SYS= 000012 68#
FD.TIM= 000012 68#
FD.XCP= 000000 68#
FD.XME= 000000 68#
FERBCL 002440R 003 788# 900
FERCPN 002462R 003 766 794#
FERDNP 002476R 003 798#
FERERR 002454R 003 738 792# 896 909 939
FERNEB 002470R 003 796#
FERNST 002446R 003 790# 950
FERUSF 002432R 003 755 786#
FE.ALL= 000377 67# 731
FE.DAT= 000001 67#
FE.DVT= 000006 67#
FE.DWD= 000011 67#
FE.EOF= 000005 67#
FE.ESC= 000000 67#
FE.FNM= 000010 67#
FE.FWD= 000004 67#
FE.LCR= 000003 67#
FE.SER= 000002 67#
FE.TRN= 000007 67#
FF = 000014 1866
FM.CCB= 000010 68#
FM.CRA= 000002 68#
FM.DAT= 000000 68#
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 36-4
CR.M11 30-DEC-82 02:07 CROSS REFERENCE TABLE -- USER SYMBOLS
FM.GET= 000014 68#
FM.KIL= 000000 68#
FM.LTM= 000002 68# 113
FM.NM = 000006 68#
FM.PIN= 000006 68# 115
FM.PWF= 000004 68# 114
FM.RDB= 000012 68#
FM.RTN= 000002 68#
FM.SET= 000012 68#
FM.STM= 000000 68# 112
FM.STP= 000004 68# 104
FM.STR= 000002 68# 103
FM.SYN= 000004 68#
FM.XKL= 000004 68#
FR.BCL= 000002 67# 788
FR.CPN= 000005 67# 794
FR.DNP= 000007 67# 798
FR.ERR= 000004 67# 792
FR.NEB= 000006 67# 796
FR.NST= 000003 67# 790
FR.USF= 000001 67# 786
FS = 000034 1876
FTRCON 002334R 003 771# 809 855 951
FTRFND 003326R 003 750* 754* 1002#
FTRSET 002752R 003 769 893#
FTRSHO 002542R 003 768 826# 914 946
FTRSYN 002100R 003 474* 709#
F.FCV = 000001 220# 865 928 965* 974 1463 1477 1549
F.FSB = 000000 207#
F.FSV = 000002 221# 965 976 977
GS = 000035 1877
HOCHK = 020000 1376# 1611
HT = 000011 1798
INTENB= 000100 1366# 1428
INTERR 006136R 003 1460 1609#
KISAR6= ****** G 421#* 516#* 524#* 775#* 1064#* 1127#* 1448# 1528#* 1546#* 1606#* 1630#* 1640#* 1653#*
1670#*
K.ACNT 000114 70#
K.ACTL 000112 70#
K.DES 000002 70#
K.DFMT 000006 70#
K.DGRP 000010 70#
K.DOBJ 000007 70#
K.DPL1 000010 70#
K.DPL2 000014 70#
K.DPR1 000012 70#
K.DPR2 000016 70#
K.DST 000010 70#
K.DUSR 000012 70#
K.ENDD 000156 70#
K.FMT 000000 70#
K.GRP 000002 70#
K.LEN 000002 70#
K.LN2 000006 70#
K.NAM 000004 70#
K.NM2 000010 70#
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 36-5
CR.M11 30-DEC-82 02:07 CROSS REFERENCE TABLE -- USER SYMBOLS
K.NODE 000000 70#
K.OBJ 000001 70#
K.OPDL 000134 70#
K.OPTD 000136 70#
K.PASL 000100 70#
K.PASW 000102 70#
K.RQDL 000056 70#
K.RQID 000060 70#
K.SFMT 000032 70#
K.SGRP 000034 70#
K.SIZE 000156 70#
K.SOBJ 000033 70#
K.SPL1 000034 70#
K.SPL2 000040 70#
K.SPR1 000036 70#
K.SPR2 000042 70#
K.SRC 000034 70#
K.SUSR 000036 70#
K.USR 000004 70#
LF = 000012 1847
LP.CHS= 000210 67#
LP.CVF= 000205 67#
LP.FCC= 000206 67#
LP.HT = 000202 67#
LP.OPV= 000212 67#
LP.OVP= 000204 67#
LP.PLE= 000211 67#
LP.SFC= 000203 67#
LP.VFR= 000207 67#
MCB$V0= ****** G 75#
MCB$V1= ****** G 75#
MOCHK = 010000 1374# 1615
MSGCTL 001064R 003 436 490#
MSGDAT 000734R 003 435 452#
MSGFIN 001154R 003 352* 508#
MSGQUE 000764R 003 453 458# 492
MS$BYT 003470R 003 577* 579* 581* 583* 585* 710* 712* 715* 719* 800* 803* 805* 807*
827* 834* 840* 843* 850* 853* 862* 868* 875* 878* 1062# 1079
NAK = 000025 1857
NA.DTO= 000004 67# 1233
NA.FAT= 000001 67# 1210
NA.INK= 000040 67#
NA.IVP= 000001 67# 1244
NA.JAM= 000020 67#
NA.NAC= 000002 67#
NA.NOE= 000100 67#
NA.OFL= 000002 67# 1214
NA.OMD= 000010 67# 1222
NA.OOF= 000040 67#
NA.OUF= 000001 67# 1229
NA.OVP= 000001 67#
NA.PAU= 000004 67# 1218
NA.PF = 000020 67# 1237
NA.PSE= 000020 67#
NA.RAP= 000040 67#
NA.REG= 000100 67#
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 36-6
CR.M11 30-DEC-82 02:07 CROSS REFERENCE TABLE -- USER SYMBOLS
NA.RNA= 000010 67#
NC.AUC= 000002 67#
NC.AUE= 000001 67#
NC.CAB= 000003 67#
NC.DMP= 000005 67#
NC.PAU= 000006 67#
NC.RES= 000007 67#
NC.RQC= 000011 67#
NC.RQS= 000004 67#
ND.ACK= 000001 67#
ND.CMP= 000200 67# 1589
ND.EOF= 000004 67# 1666 1672
ND.IER= 000002 67# 1632
NF.CMD= 000001 67# 735 767 830
NF.STD= 000002 67# 833
NM.ALR= 000004 67# 1175
NM.ATT= 000001 67# 1201
NM.CAP= 000005 67# 1274
NM.CTL= 000003 67# 469 526 576
NM.DAT= 000000 67# 1552
NM.FTR= 000002 67# 709
NM.OTR= 000006 67#
NM.TYP= 000017 67# 424
NOOP 000234R 003 114 304#
NRDOTR= 000004 425 427 437#
NR.ABS= 000000 67#
NR.ACC= 000000 67#
NR.ACN= 000001 67# 611
NR.ATT= 000000 67#
NR.CAP= 000000 67#
NR.DMP= 000000 67#
NR.DPS= 000000 67#
NR.NAB= 000001 67# 630
NR.NDP= 000002 67#
NR.NDR= 000002 67#
NR.NOB= 000001 67# 646
NR.NOE= 000002 67#
NR.NPS= 000001 67# 674
NR.PAU= 000001 67# 657
NR.RES= 000000 67#
NUL = 000000 1963
N.AABC= 000004 67#
N.AACK= 000002 67#
N.ACOD= 000003 67#
N.AFLG= 000004 67#
N.ALGD= 000002 67#
N.APLE= 000005 67#
N.ARQS= 000003 67# 683
N.ASTC= 000001 67# 376 1685
N.CCMD= 000003 67# 495 497 518
N.CRES= 000004 67# 531
N.CSEQ= 000002 67# 519
N.DDAT= 000005 67# 1560
N.DFLG= 000003 67# 1632* 1666* 1672
N.DSEQ= 000002 67#
N.DSGC= 000004 67# 1567* 1585* 1660*
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 36-7
CR.M11 30-DEC-82 02:07 CROSS REFERENCE TABLE -- USER SYMBOLS
N.FCLS= 000002 67#
N.FDAT= 000004 67#
N.FFLG= 000001 67#
N.FID = 000000 67#
N.FRSP= 000003 67#
N.FSEQ= 000002 67#
N.FSPC= 000004 67#
N.MFL = 000001 67#
N.NSPC= 000003 67# 777*
N.PCAP= 000003 67#
N.PCNT= 000002 67#
N.TYP = 000000 67#
PHD$A 000000R 75# 76 77
Q$PURG 003606R 003 315* 631 1090#
RDAHD = 000005 1357# 1403
RDROFL= 000400 359 1370# 1623
RDRONL= 002000 1372#
RD$BYT 004006R 003 465* 467* 560* 562* 713* 716* 720* 722* 724* 728* 903* 911* 921*
923* 942* 1125# 1153
RD$DQX 004146R 003 575* 600* 778* 1139* 1159#
READ = 000001 1364# 1428
RS = 000036 1878
SETSTD 003200R 003 302* 948* 959#
SI = 000017 1869
SN$ALR 004222R 003 361* 1172#
SN$ATT 004270R 003 380* 593* 1193# 1686*
SN$CAP 004576R 003 384* 597 1270#
SO = 000016 1868
SOH = 000001 1794
STOPWT 000322R 003 327# 347
STX = 000002 1795
SUB = 000032 1859
SYN = 000026 1755
S$ABO = 000022 70#
S$ACC = 000002 70#
S$CNR = 000000 70#
S$CON = 000000 70#
S$DAT = 000002 70#
S$DIS = 000020 70#
S$DRQ = 000012 70#
S$DSR = 000006 70#
S$GLN = 000024 70#
S$INT = 000004 70# 490
S$IRQ = 000016 70#
S$MRQ = 000010 70#
S$PBOM= 000001 70#
S$PEOM= 000004 70# 1049 1136 1140 1413
S$PMOM= 000002 70#
S$PMSG= 000002 70#
S$PSEG= 000001 70#
S$REJ = 000004 70#
S$SND = 000006 70# 1051 1417
S$SNI = 000014 70# 1178
S.DSP 000004 69# 1647*
S.EABL= 177755 70#
S.EABM= 177770 70#
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 36-8
CR.M11 30-DEC-82 02:07 CROSS REFERENCE TABLE -- USER SYMBOLS
S.EABO= 177767 70# 442 454 1098
S.EABS= 177771 70#
S.EACR= 177736 70#
S.ECBE= 177764 70#
S.EDBO= 177754 70#
S.EERR= 177763 70#
S.EIDM= 177762 70# 440
S.EINF= 177766 70#
S.EIOF= 177773 70#
S.ELNS= 177765 70#
S.ELST= 177761 70#
S.ELWS= 177760 70#
S.EMTL= 177757 70#
S.ENOF= 177732 70#
S.ENRO= 177732 70#
S.ENSL= 177756 70#
S.ENUR= 177731 70#
S.EOTB= 177772 70#
S.ERBO= 177754 70# 290 538
S.ERES= 177777 70#
S.ERNS= 177775 70#
S.ETMI= 177753 70#
S.EUNN= 177776 70#
S.EURO= 177774 70#
S.LNK 000000 69#
S.PDB 000002 69#
S.SEOM= 000002 70#
S.SSUC= 000001 70# 284 335
TIMERR= 004000 1373# 1619
TIMPIN= ****** GX 115
US = 000037 1879
VF.6LI= 000001 67#
VF.8LI= 000002 67#
VT = 000013 1865
ZONTAB 007110R 003 1500 1974#
ZON$$ = ****** U 1985
ZON0 006560R 003 1702#
ZON1 006620R 003 1742#
ZON10 006600R 003 1722#
ZON11 006710R 003 1812#
ZON12 006720R 003 1822#
ZON13 006770R 003 1871#
ZON14 006700R 003 1802#
ZON15 007050R 003 1931#
ZON16 007060R 003 1941#
ZON2 006630R 003 1752#
ZON20 006570R 003 1712#
ZON21 006660R 003 1782#
ZON22 006670R 003 1792#
ZON23 006760R 003 1861#
ZON24 006650R 003 1772#
ZON25 007010R 003 1891#
ZON26 007020R 003 1901#
ZON27 007100R 003 1961#
ZON3 006750R 003 1851#
ZON30 006640R 003 1762#
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 36-9
CR.M11 30-DEC-82 02:07 CROSS REFERENCE TABLE -- USER SYMBOLS
ZON31 007030R 003 1911#
ZON32 007040R 003 1921#
ZON33 007070R 003 1951#
ZON4 006610R 003 1732#
ZON5 006730R 003 1832#
ZON6 006740R 003 1841#
ZON7 007000R 003 1881#
ZTAB 007210R 003 1498 1518 1523 1991#
ZZ$SLP 004730R 003 1082* 1147* 1312#
ZZ$WAK 005006R 003 356* 1334#
$CBBGT= ****** GX 1045*
$CBBRT= ****** GX 402 1105*
$CMQRM= ****** GX 318 515 536 586 779 1093 1097 1103 1161 1661
$CRGO 005220R 003 1427#
$CRINT 005254RG 003 1446#
$CRSTP 005236R 003 312* 623* 1091* 1431#
$CRSTR 005054R 003 367* 671* 1401# 1689
$DSPCR= ****** G 85# 86# 87# 88# 93# 94# 102# 112#
$LTMEN= ****** GX 286*
$RDBGT= ****** GX 1408*
$RDBRT= ****** GX 400 1094* 1674*
$SCHED= ****** GX 320* 339 444 456 522* 533 541 590* 783 1100* 1165* 1180 1260*
1304* 1680*
$SYNCH= ****** GX 1648
$$ = 000040 1975# 1985#
$$DAT = 000000 123# 245
$$LVL = 000000 123# 245
$$TABG= 000042R 002 84# 86 87 88 89 90 91 92 93 94 101# 103 104
111# 112 113 114 115
. = 007230R 003 68# 69# 70# 76# 77# 84 86 87 88 89 90 91 92
93 94 101 103 104 111 112 113 114 115 123# 124# 125#
126# 128# 129# 130# 131# 133# 134# 135# 136# 137# 138# 139# 140#
141# 142# 143# 159# 162# 163# 166# 167# 168# 169# 170# 173# 174#
175# 176# 177# 178# 179# 180# 181# 182# 183# 184# 185# 189# 190#
191# 192# 193# 194# 195# 196# 197# 198# 199 201# 202# 203# 204
224# 226# 227# 230# 232# 235# 236# 240# 242# 243# 245# 437 554
.DSPCR= ****** G 76#
.RDBSZ= ****** GX 1415
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 37
CR.M11 30-DEC-82 02:07 CROSS REFERENCE TABLE -- MACRO NAMES
CALLR 100 110 339 347 400 402 429 444 456 492 533 541 597 631 769
783 939 946 950 951 1180 1455 1460 1648 1689
CCBDF$ 65# 68
CHR$B 123#
CHR$W 123#
COR$D 123#
CSR$W 123# 126
CTL$B 123#
CTL$W 123#
DAT$ 66# 123
DAT$DF 123#
DEQ$ 318 515 536 586 779 1093 1097 1103 1161 1661
DSP$ 66# 84# 85 86 87 88 89 90 91 92 93 94 101# 102 103
104 111# 112 113 114 115
DSP$B 66# 84 101 111
DSP$E 66# 84# 95 101# 105 111# 116
DSR$W 123#
END$ 66# 123# 245
ENQ$ 458 494 1077 1419
LIX$B 123#
LIX$W 123#
LST$D 123# 142 166 173 183
MAP$ 66# 421 516 524 775 1064 1127 1528 1546 1630 1653 1670
MAP$S 1606 1640
NURDF$ 65# 67
PHD$B 66# 75
PHD$D 75# 76
PHD$E 75# 77
PHD$I 75#
PHD$S 75#
POP$S 66# 291 323 523 571 584 806 938 945 978 993 1021 1025 1053 1078
1081 1115 1166 1262 1299 1605 1639
PUSH$S 66# 255 316 514 567 574 786 788 790 792 794 796 798 934 940
972 983 1003 1043 1070 1090 1162 1193 1276 1279 1449
RETURN 304 330 387 477 511 601 609 612 618 637 647 655 658 675 684
962 995 1023 1027 1054 1067 1116 1131 1143 1167 1181 1263 1306 1328 1350
1411 1429 1434 1607 1643 1687
SCDF$ 65# 70
SMAP$ 66#
SMAP$S 1448
STA$B 123#
STA$W 123#
SYNDF$ 65# 69
SYN$X 123# 133
TMB$X 123#
TRB$B 123#
TRB$W 123#
UNT$B 123#
UNT$W 123#
VFY$ 123#
. ABS. 000205 000 OVR RW ABS LCL D
000040 001 CON RW REL LCL I
$PLIT$ 000052 002 CON RO REL LCL D
$CODE$ 007230 003 CON RO REL LCL I
CR CR11 LLC AND DRIVER DNMAC X24.07-563 04-JAN-83 16:25 PAGE 37-1
CR.M11 30-DEC-82 02:07 CROSS REFERENCE TABLE -- MACRO NAMES
ERRORS DETECTED: 0
DEFAULT GLOBALS GENERATED: 10
CR,CR/CRF=MCB:MCBLIB.M11/PA:1,MCB:SCLIB.M11/PA:1,DSK:URDLIB.M11/PA:1,CR
RUN-TIME: 5 6 1 SECONDS
RUN-TIME RATIO: 72/13=5.2
CORE USED: 13K (25 PAGES)