Trailing-Edge
-
PDP-10 Archives
-
BB-P363B-SM_1985
-
mcb/drivers/kdpmc.lst
There are no other files named kdpmc.lst in the archive.
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE DNMAC X24.07-563 25-JAN-83 10:02
KMCMAC.MAC 30-DEC-82 03:48 TABLE OF CONTENTS
41 MICRO-INSTRUCTION FIELD DEFINITIONS
83 MICROPROCESSOR REGISTER DEFINITIONS
231 MICRO INSTRUCTION DEFINITIONS
232 BRANCH INSTRUCTIONS
270 INDEXED BRANCH INSTRUCTIONS
371 MOVE INSTRUCTIONS
762 TABLE OFFSET DEFINITIONS
976 INIT - INITIALIZATION
1034 IDLE - IDLE LOOP
1066 DATA PORT PROCESSING ROUTINES
1269 TIMER - TIMER SERVICE
1424 BASEIN-BASE IN SERVICE ROUTINE
1467 CONIN-CONTROL IN PROCESS ROUTINE
1591 BAIN-BUFFER ADDRESS IN SERVICE ROUTINE
1692 XMTDON - TRANSMIT DONE
1885 RCVDON-RECEIVED CHARACTER PROCESSOR
1925 BIT-STUFF PROTOCOL RECEIVE PROCESSORS
1931 RB1-BIT STUFF RECEIVE STATE ONE
1954 RB2-BIT STUFF RECEIVE STATE TWO
1978 RB3-BIT STUFF RECEIVE STATE THREE
2011 LSILO-PUSH CHARACTER INTO LOCAL TWO CHARACTER SILO
2044 RBDONE - END OF BIT STUFF MESSAGE RECEIVED
2066 DDCMP RECEIVE STATE PROCESSORS
2078 RDH1-RECEIVING FIRST DDCMP HEADER CHARACTER
2145 RDH2-RECEIVING SECOND DDCMP HEADER CHARACTER
2181 RDH3-RECEIVING THIRD DDCMP HEADER CHARACTER
2229 RDH4-RECEIVING FOURTH DDCMP HEADER CHARACTER
2258 RDH5-RECEIVING FIFTH DDCMP HEADER CHARACTER
2287 RDH6-RECEIVING SIXTH DDCMP HEADER CHARACTER
2344 RHCRC1-RECEIVING FIRST DDCMP HEADER CRC
2372 RHCRC2-RECEIVING SECOND DDCMP HEADER CRC
2414 RDDATA-RECEIVING DDCMP DATA CHARACTERS
2457 RDCRC1-RECEIVING FIRST DDCMP DATA CRC
2482 RDCRC2-RECEIVING SECOND DATA CRC
2525 DSRCHG-DATA SET READY CHANGE
2550 MSGIN-DDCMP MESSAGE PROCESSOR
2615 KILLAL-KILL XMT OT RCV OPERATION
2690 XMTSYN - TRANSMIT SYNC'S OR ZERO BITS
2734 XMTCNT - DECREMENT TRANSMIT BYTE COUNT
2796 XMTABT - TRANSMIT ABORT PENDING
2825 XMTSND - SET OR CLEAR DUP SEND
2888 XMTAB1 - TRANSMIT ABORT STAGE ONE
2921 STORE-STORE RECEIVED CHARACTER IN CORE
3091 EOFMSG-END OF MESSAGE
3140 BAORE-BA OUT FOR END OF RECEIVED MESSAGE
3179 BOUT/COUT-BA OR CONTROL OUT (WITH DESCRIPTOR UPDATED)
3248 BAORC-BA OUT FOR RECEIVE BUFFER COMPLETION
3281 COUTX-CONTROL OUT FOR TRANSMIT OPERATION
3308 BAOX/COUX-BA/CONTROL OUT FOR TRANSMIT BUFFER COMPLETION
3367 QPDATA-QUEUE PORT DATA
3429 STFSLO-STUFF COMPLETION SILO SUBROUTINE
3491 NXBUF-GET NEXT BUFFER
3536 NXLST-GET NEXT BUFFER LIST
3594 NXDSCP - GET NEXT DESCRIPTOR
3707 ERROR PROCESSING ROUTINES
3772 RSNCRT - RESYNC AND RETURN TO TIMER
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02
KDPMCX.MAC 30-DEC-82 03:47 TABLE OF CONTENTS
3791 RESYNC-RESYNC DUP-11 RECEIVER
3841 SETRBA-SET OUTBA TO CURRENT INPUT ADDRESS IN USER RECEIVE BUFFER
3870 DECDCC-DECREMENT DDCMP DATA CHARACTER COUNT
3893 DRCNT/DECNT-DECREMENT BUFFER COUNT
3936 INCOUT/IC2OUT/INCOB-OUT NPR TO CURRENT ADDRESS+OFFSET
4015 ADRCSR-SET OUTBA=DUP'S CSR ADDRESS
4055 NXTTBL - ROUTINE TO CALCULATE THE ADDRESS OF THE NEXT TABLE
4086 INCIN/INCINH/IC2IN - EIGHTEEN BIT ADD TO INPUT ADDRESS
4151 INCMEM - EIGHTEEN BIT ADD TO ADDRESS POINT TO BY MAR
4190 NXMERR - NONEXISTENT MEMORY ERROR
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE DNMAC X24.07-563 25-JAN-83 10:02 PAGE 1
KMCMAC.MAC 30-DEC-82 03:48
1 .TITLE KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE
2 .IDENT /V2.0/
3 ;
4 ; COPYRIGHT (C) 1980, 1981, 1982
5 ; DIGITAL EQUIPMENT CORPORATION
6 ; MAYNARD, MASSACHUSETTS
7 ;
8 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED
9 ; AND COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE
10 ; AND WITH THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS
11 ; SOFTWARE OR ANY OTHER COPIES THEREOF MAY NOT BE PROVIDED OR
12 ; OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. NO TITLE TO
13 ; AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
14 ;
15 ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE
16 ; WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT
17 ; BY DIGITAL EQUIPMENT CORPORATION.
18 ;
19 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
20 ; OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY
21 ; DIGITAL.
22 ;
23 ; DATE: 14-FEB-78
24 ;
25 ; VERSION: 2 KMC11-B
26 ;
27 ; DISTRIBUTED SYSTEMS SOFTWARE ENGINEERING
28 ;
29 ; LAST MODIFICATION:
30 ; 8-MAR-78 FIX TYPO'S AND 4K CALL
31 ;20-MAR-81 ASSEMBLE INTO $$MIC$ PSECT
32 ;
33
34 .LIST MEB
35 .NLIST ME
36 000000' .PSECT $$MIC$,D,RO
37 000000' START:
38
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE DNMAC X24.07-563 25-JAN-83 10:02 PAGE 2
KMCMAC.MAC 30-DEC-82 03:48
40
41 .SBTTL MICRO-INSTRUCTION FIELD DEFINITIONS
42
43 ; SOURCE FIELDS
44
45 000000 IMM=0 ;IMMEDIATE
46 020000 IBUS=20000 ;INPUT BUS
47 040000 MEMX=40000 ;MEMORY
48 060000 BR=60000 ;BRG
49
50
51 ; DESTINATION FIELDS
52
53 000400 WRTEBR=400 ;WRITE THE BRG
54 001000 WROUTX=1000 ;EXTENDED OUTPUT BUS
55 001400 SHFTBR=1400 ;SHIFT THE BRG
56 002000 WROUT=2000 ;OUTPUT BUS
57 002400 WRMEM=2400 ;MEMORY
58 003000 SPX=3000 ;SCRATCH PAD
59 003400 SPBRX=3400 ;SRATCH PAD AND BRG
60
61
62 ; JUMP CONDITIONS
63
64 000000 BRECON=0 ;JUMP EXTENDED
65 000400 ALCOND=400 ;JUMP ALWAYS
66 001000 CCOND=1000 ;JUMP IF ALU CARRY = 1
67 001400 ZCOND=1400 ;JUMP IF ALU ZERO = 1
68 002000 BR0CON=2000 ;JUMP IF BRG BIT 0 = 1
69 002400 BR1CON=2400 ;JUMP IF BRG BIT 1 = 1
70 003000 BR4CON=3000 ;JUMP IF BRG BIT 4 = 1
71 003400 BR7CON=3400 ;JUMP IF BRG BIT 7 = 1
72
73
74 ; MAR FIELDS
75
76 004000 LDMAPG=4000 ;LOAD THE 4 MOST SIGNIFICANT BITS OF MAR
77 010000 LDMAR=10000 ;LOAD THE 8 LEAST SIGNIFICANT BITS OF MAR
78 014000 INCMAR=14000 ;INCREMENT MAR
79 ;
80 054000 MEMI=MEMX!INCMAR ;READ FROM MEMORY AND INCREMENT THE MAR
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE DNMAC X24.07-563 25-JAN-83 10:02 PAGE 3
KMCMAC.MAC 30-DEC-82 03:48 MICRO-INSTRUCTION FIELD DEFINITIONS
82
83 .SBTTL MICROPROCESSOR REGISTER DEFINITIONS
84
85 ;
86 ; INBUS* ASSIGNMENTS
87 ;
88 120000 INCON= 0!120000 ;IN CONTROL CSR
89 120020 MAIN= 20!120000 ;MAINTAINANCE REGISTER
90 120040 OCON= 40!120000 ;OUT CONTROL CSR
91 120060 LINENM= 60!120000 ;LINE NUMBER
92 120100 PORT1= 100!120000 ;CSR 4
93 120120 PORT2= 120!120000 ;CSR 5
94 120140 PORT3= 140!120000 ;CSR 6
95 120160 PORT4= 160!120000 ;CSR 7
96 120200 NPR= 200!120000 ;NPR CONTROL REGISTER
97 120220 UBBR= 220!120000 ;MISC CONTROL REGISTER
98 120240 PCLOW= 240!120000 ;PC LATCH REGISTER LOW BYTE
99 120260 PCHGH= 260!120000 ;PC LATCH REGISTER HIGH 4 BITS
100 120300 MARL= 300!120000 ;MAR LATCH REGISTER LOW BYTE
101 120320 MARH= 320!120000 ;MAR LATCH REGISTER HIGH 5 BITS
102
103 120000 BSEL0= 0!120000 ;BSEL0
104 120020 BSEL1= 20!120000 ;BSEL1
105 120040 BSEL2= 40!120000 ;BSEL2
106 120060 BSEL3= 60!120000 ;BSEL3
107 120100 BSEL4= 100!120000 ;BSEL4
108 120120 BSEL5= 120!120000 ;BSEL5
109 120140 BSEL6= 140!120000 ;BSEL6
110 120160 BSEL7= 160!120000 ;BSEL7
111
112 ; INBUS ASSIGNMENTS
113
114 020000 INDAT1= 0!20000 ;INPUT DATA LOW BYTE
115 020020 INDAT2= 20!20000 ;INPUT DATA HIGH BYTE
116 020040 IODAT1= 40!20000 ;OUTPUT DATA LOW BYTE
117 020060 IODAT2= 60!20000 ;OUTPUT DATA HIGH BYTE
118 020100 IIBA1= 100!20000 ;INPUT BA LOW BYTE
119 020120 IIBA2= 120!20000 ;INPUT BA HIGH BYTE
120 020140 IOBA1= 140!20000 ;OUTPUT BA LOW BYTE
121 020160 IOBA2= 160!20000 ;OUTPUT BA HIGH BYTE
122 020200 XREG0= 200!20000 ;EXTERNAL DEVICE REGISTER 0
123 020220 XREG1= 220!20000 ;EXTERNAL DEVICE REGISTER 1
124 020240 XREG2= 240!20000 ;EXTERNAL DEVICE REGISTER 2
125 020260 XREG3= 260!20000 ;EXTERNAL DEVICE REGISTER 3
126 020300 XREG4= 300!20000 ;EXTERNAL DEVICE REGISTER 4
127 020320 XREG5= 320!20000 ;EXTERNAL DEVICE REGISTER 5
128 020340 XREG6= 340!20000 ;EXTERNAL DEVICE REGISTER 6
129 020360 XREG7= 360!20000 ;EXTERNAL DEVICE REGISTER 7
130
131 ; OUTBUS* ASSIGNMENTS
132
133 001000 OINCON= 0!1000 ;IN CONTROL CSR
134 001001 OMAIN= 1!1000 ;MAINTAINTANCE REGISTER
135 001002 OOCON= 2!1000 ;OUT CONTROL CSR
136 001003 OLINEN= 3!1000 ;LINE NUMBER
137 001004 OPORT1= 4!1000 ;CSR 4
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE DNMAC X24.07-563 25-JAN-83 10:02 PAGE 3-1
KMCMAC.MAC 30-DEC-82 03:48 MICROPROCESSOR REGISTER DEFINITIONS
138 001005 OPORT2= 5!1000 ;CSR 5
139 001006 OPORT3= 6!1000 ;CSR 6
140 001007 OPORT4= 7!1000 ;CSR 7
141 001010 ONPR= 10!1000 ;NPR CONTROL
142 001011 OBR= 11!1000 ;MISC CONTROL
143 001012 OPCLOW= 12!1000 ;PC LATCH LOW BYTE
144 001013 OPCHGH= 13!1000 ;PC LATCH HIGH
145 001014 OMARL= 14!1000 ;MAR LATCH LOW
146 001015 OMARH= 15!1000 ;MAR LATCH HIGH
147
148 001000 OBSEL0= 0!1000 ;BSEL0
149 001001 OBSEL1= 1!1000 ;BSEL1
150 001002 OBSEL2= 2!1000 ;BSEL2
151 001003 OBSEL3= 3!1000 ;BSEL3
152 001004 OBSEL4= 4!1000 ;BSEL4
153 001005 OBSEL5= 5!1000 ;BSEL5
154 001006 OBSEL6= 6!1000 ;BSEL6
155 001007 OBSEL7= 7!1000 ;BSEL7
156
157 ; OUTBUS ASSIGNMENTS
158
159 002000 OIDAT1= 0!2000 ;INPUT DATA LOW BYTE
160 002001 OIDAT2= 1!2000 ;INPUT DATA HIGH BYTE
161 002002 OUTDA1= 2!2000 ;OUTPUT DATA LOW BYTE
162 002003 OUTDA2= 3!2000 ;OUTPUT DATA HIGH BYTE
163 002004 IBA1= 4!2000 ;INPUT BA LOW BYTE
164 002005 IBA2= 5!2000 ;INPUT BA HIGH BYTE
165 002006 OBA1= 6!2000 ;OUTPUT BA LOW BYTE
166 002007 OBA2= 7!2000 ;OUTPUT BA HIGH BYTE
167 002010 OXREG0= 10!2000 ;EXTERNAL DEVICE REGISTER 0
168 002011 OXREG1= 11!2000 ;EXTERNAL DEVICE REGISTER 1
169 002012 OXREG2= 12!2000 ;EXTERNAL DEVICE REGISTER 2
170 002013 OXREG3= 13!2000 ;EXTERNAL DEVICE REGISTER 3
171 002014 OXREG4= 14!2000 ;EXTERNAL DEVICE REGISTER 4
172 002015 OXREG5= 15!2000 ;EXTERNAL DEVICE REGISTER 5
173 002016 OXREG6= 16!2000 ;EXTERNAL DEVICE REGISTER 6
174 002017 OXREG7= 17!2000 ;EXTERNAL DEVICE REGISTER 7
175
176 ; ALU FUNCTIONS
177
178 000000 ADD= 0 ;ADD A+B
179 000020 ADDC= 20 ;ADD WITH CARRY -> A+B+C
180 000040 SUBC= 40 ;SUBTRACT WITH CARRY -> A-B-C
181 060060 INCA= 60!BR ;INCREMENT A -> A+1 (DEFAULT SOURCE IS BRG)
182 060100 APLUSC= 100!BR ;A PLUS CARRY -> A+C
183 060120 TWOA= 120!BR ;A PLUS A -> A+A
184 060140 TWOAC= 140!BR ;2*A PLUS CARRY -> A+A+C
185 060160 DECA= 160!BR ;DECREMENT A -> A-1
186 060200 SELA= 200!BR ;SELECT A
187 000220 SELB= 220 ;SELECT B
188 000240 AORNB= 240 ;A OR NOT B -> A!-B
189 000260 AANDB= 260 ;A AND B -> A&B
190 000300 AORB= 300 ;A OR B -> A!B
191 000320 AXORB= 320 ;A XOR B
192 000340 SUB= 340 ;SUBTRACT -> A-B
193 000360 SUBOC= 360 ;SUBTRACT ONE'S COMPLEMENT -> A-B-1
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE DNMAC X24.07-563 25-JAN-83 10:02 PAGE 3-2
KMCMAC.MAC 30-DEC-82 03:48 MICROPROCESSOR REGISTER DEFINITIONS
194
195 ; SCRATCH PAD DEFINITIONS
196
197 000000 SP0=0
198 000001 SP1=1
199 000002 SP2=2
200 000003 SP3=3
201 000004 SP4=4
202 000005 SP5=5
203 000006 SP6=6
204 000007 SP7=7
205 000010 SP10=10
206 000011 SP11=11
207 000012 SP12=12
208 000013 SP13=13
209 000014 SP14=14
210 000015 SP15=15
211 000016 SP16=16
212 000017 SP17=17
213
214 ; INSTRUCTION PAGE DEFINITIONS
215
216 000000 P0=0*4000 ;PAGE 0
217 004000 P1=1*4000 ;PAGE 1
218 010000 P2=2*4000 ;PAGE 2
219 014000 P3=3*4000 ;PAGE 3
220
221 ; NPR BIT DEFINITIONS
222
223 000001 DATI=1 ;WORD INPUT NPR
224 000003 DATIH=3 ;WORD INPUT NPR WITH BUS HOLD
225 000021 DATO=21 ;WORD OUTPUT NPR
226 000023 DATOH=23 ;WORD OUTPUT NPR WITH BUS HOLD
227 000221 DATOB=221 ;BYTE OUTPUT NPR
228 000223 DATOBH=223 ;BYTE OUTPUT NPR WITH BUS HOLD
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE DNMAC X24.07-563 25-JAN-83 10:02 PAGE 4
KMCMAC.MAC 30-DEC-82 03:48 MICROPROCESSOR REGISTER DEFINITIONS
230
231 .SBTTL MICRO INSTRUCTION DEFINITIONS
232 .SBTTL BRANCH INSTRUCTIONS
233 ;
234 100000 JUMP=100000 ;JUMP OP CODE
235 ;
236 ;
237 .MACRO BREXT ADDRES ;JUMP ALWAYS EXTENDED
238 <JUMP!BRECON!<ADDRES-START&777/2>>
239 .ENDM
240 ;
241 .MACRO ALWAYS ADDRES ;JUMP ALWAYS
242 <JUMP!ALCOND!<ADDRES-START&3000*4>!<ADDRES-START&777/2>>
243 .ENDM
244 ;
245 .MACRO BR0 ADDRES ;JUMP IF BR0 SET
246 <JUMP!BR0CON!<ADDRES-START&3000*4>!<ADDRES-START&777/2>>
247 .ENDM
248 ;
249 .MACRO BR1 ADDRES ;JUMP IF BR1 SET
250 <JUMP!BR1CON!<ADDRES-START&3000*4>!<ADDRES-START&777/2>>
251 .ENDM
252 ;
253 .MACRO BR4 ADDRES ;JUMP IF BR4 SET
254 <JUMP!BR4CON!<ADDRES-START&3000*4>!<ADDRES-START&777/2>>
255 .ENDM
256 ;
257 .MACRO BR7 ADDRES ;JUMP IF BR7 SET
258 <JUMP!BR7CON!<ADDRES-START&3000*4>!<ADDRES-START&777/2>>
259 .ENDM
260 ;
261 .MACRO Z ADDRES ;JUMP IF Z BIT SET
262 <JUMP!ZCOND!<ADDRES-START&3000*4>!<ADDRES-START&777/2>>
263 .ENDM
264 ;
265 .MACRO C ADDRES ;JUMP IF C BIT SET
266 <JUMP!CCOND!<ADDRES-START&3000*4>!<ADDRES-START&777/2>>
267 .ENDM
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE DNMAC X24.07-563 25-JAN-83 10:02 PAGE 5
KMCMAC.MAC 30-DEC-82 03:48 BRANCH INSTRUCTIONS
269
270 .SBTTL INDEXED BRANCH INSTRUCTIONS
271 ;
272 ; ! [IBUS,] ADRI !
273 ; .<BRANCH> !--! [SRC,] FUNC [,SPN] !-- ,PN
274 ; ! IMM, DATA !
275 ;
276 ; NOTE: BREXT DOES NOT USE THE PAGE FIELD
277 ;
278 .MACRO .BREXT SRC,FUNC,SPLOC ;INDEXED JUMP ALWAYS EXTENDED
279 .IF NB,SPLOC
280 <JUMP!BRECON!SRC!FUNC!SPLOC>
281 .MEXIT
282 .ENDC
283 <JUMP!BRECON!SRC!FUNC>
284 .ENDM
285 ;
286 .MACRO .ALWAY SRC,FUNC,SPLOC,OPARG1 ;INDEXED JUMP ALWAYS
287 .IF NB,OPARG1
288 <JUMP!ALCOND!SRC!FUNC!SPLOC!OPARG1>
289 .MEXIT
290 .ENDC
291 .IF NB,SPLOC
292 <JUMP!ALCOND!SRC!FUNC!SPLOC>
293 .MEXIT
294 .ENDC
295 <JUMP!ALCOND!SRC!FUNC>
296 .ENDM
297 ;
298 .MACRO .BR0 SRC,FUNC,SPLOC,OPARG1 ;INDEXED JUMP ON BR0 SET
299 .IF NB,OPARG1
300 <JUMP!BR0CON!SRC!FUNC!SPLOC!OPARG1>
301 .MEXIT
302 .ENDC
303 .IF NB,SPLOC
304 <JUMP!BR0CON!SRC!FUNC!SPLOC>
305 .MEXIT
306 .ENDC
307 <JUMP!BR0CON!SRC!FUNC>
308 .ENDM
309 ;
310 .MACRO .BR1 SRC,FUNC,SPLOC,OPARG1 ;INDEXED JUMP ON BR1 SET
311 .IF NB,OPARG1
312 <JUMP!BR1CON!SRC!FUNC!SPLOC!OPARG1>
313 .MEXIT
314 .ENDC
315 .IF NB,SPLOC
316 <JUMP!BR1CON!SRC!FUNC!SPLOC>
317 .MEXIT
318 .ENDC
319 <JUMP!BR1CON!SRC!FUNC>
320 .ENDM
321 ;
322 .MACRO .BR4 SRC,FUNC,SPLOC,OPARG1 ;INDEXED JUMP ON BR4 SET
323 .IF NB,OPARG1
324 <JUMP!BR4CON!SRC!FUNC!SPLOC!OPARG1>
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE DNMAC X24.07-563 25-JAN-83 10:02 PAGE 5-1
KMCMAC.MAC 30-DEC-82 03:48 INDEXED BRANCH INSTRUCTIONS
325 .MEXIT
326 .ENDC
327 .IF NB,SPLOC
328 <JUMP!BR4CON!SRC!FUNC!SPLOC>
329 .MEXIT
330 .ENDC
331 <JUMP!BR4CON!SRC!FUNC>
332 .ENDM
333 ;
334 .MACRO .BR7 SRC,FUNC,SPLOC,OPARG1 ;INDEXED JUMP ON BR7 SET
335 .IF NB,OPARG1
336 <JUMP!BR7CON!SRC!FUNC!SPLOC!OPARG1>
337 .MEXIT
338 .ENDC
339 .IF NB,SPLOC
340 <JUMP!BR7CON!SRC!FUNC!SPLOC>
341 .MEXIT
342 .ENDC
343 <JUMP!BR7CON!SRC!FUNC>
344 .ENDM
345 ;
346 .MACRO .Z SRC,FUNC,SPLOC,OPARG1 ;INDEXED JUMP ON Z BIT SET
347 .IF NB,OPARG1
348 <JUMP!ZCOND!SRC!FUNC!SPLOC!OPARG1>
349 .MEXIT
350 .ENDC
351 .IF NB,SPLOC
352 <JUMP!ZCOND!SRC!FUNC!SPLOC>
353 .MEXIT
354 .ENDC
355 <JUMP!ZCOND!SRC!FUNC>
356 .ENDM
357 ;
358 .MACRO .C SRC,FUNC,SPLOC,OPARG1 ;INDEXED JUMP ON C BIT SET
359 .IF NB,OPARG1
360 <JUMP!CCOND!SRC!FUNC!SPLOC!OPARG1>
361 .MEXIT
362 .ENDC
363 .IF NB,SPLOC
364 <JUMP!CCOND!SRC!FUNC!SPLOC>
365 .MEXIT
366 .ENDC
367 <JUMP!CCOND!SRC!FUNC>
368 .ENDM
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE DNMAC X24.07-563 25-JAN-83 10:02 PAGE 6
KMCMAC.MAC 30-DEC-82 03:48 INDEXED BRANCH INSTRUCTIONS
370
371 .SBTTL MOVE INSTRUCTIONS
372 ;
373 000000 MOVE=0 ;MOVE OPCODE
374 ;
375 ; B SIDE DESTINATION GROUP
376 ; NODST ! ! [IBUS,] ADRI !
377 ; BRWRTE !--! [SRC,] FUNC [,SPN] !--[,MAR]
378 ; BRSHFT ! ! IMM,DATA !
379 ; MEM !
380 ;
381 ; NOTE: NODST AND BRSHFT HAVE ZERO OPERAND FORMS EQUIVALENT TO IMM,0
382 ;
383 .MACRO NODST SRC,FUNC,SPADDR,OPARG1 ;NO DESTINATION
384 .IF NB,OPARG1
385 <SRC!FUNC!SPADDR!OPARG1>
386 .MEXIT
387 .ENDC
388 .IF NB,SPADDR
389 .IIF IDN,SRC,IMM,<IMM!<FUNC&377>!SPADDR>
390 .IIF DIF,SRC,IMM,<SRC!FUNC!SPADDR>
391 .MEXIT
392 .ENDC
393 .IF NB,FUNC
394 .IIF IDN,SRC,IMM,<IMM!<FUNC&377>>
395 .IIF DIF,SRC,IMM,<SRC!FUNC>
396 .MEXIT
397 .ENDC
398 .IF NB,SRC
399 <SRC>
400 .MEXIT
401 .ENDC
402 <0>
403 .ENDM
404 ;
405 .MACRO BRWRTE SRC,DATA,OPARG1,OPARG2 ;MOVE TO BR
406 .IF NB,OPARG2
407 <MOVE!WRTEBR!SRC!DATA!OPARG1!OPARG2>
408 .MEXIT
409 .ENDC
410 .IF NB,OPARG1
411 .IIF IDN,SRC,IMM,<MOVE!WRTEBR!IMM!<DATA&377>!OPARG1>
412 .IIF DIF,SRC,IMM,<MOVE!WRTEBR!SRC!DATA!OPARG1>
413 .MEXIT
414 .ENDC
415 .IIF IDN,SRC,IMM,<MOVE!WRTEBR!IMM!<DATA&377>>
416 .IIF DIF,SRC,IMM,<MOVE!WRTEBR!SRC!DATA>
417 .ENDM
418 ;
419 .MACRO BRSHFT SRC,DATA,OPARG1,OPARG2 ;BR SHIFT RIGHT
420 .IF NB,OPARG2
421 <MOVE!SHFTBR!SRC!DATA!OPARG1!OPARG2>
422 .MEXIT
423 .ENDC
424 .IF NB,OPARG1
425 .IIF IDN,SRC,IMM,<MOVE!SHFTBR!IMM!<DATA&377>!OPARG1>
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE DNMAC X24.07-563 25-JAN-83 10:02 PAGE 6-1
KMCMAC.MAC 30-DEC-82 03:48 MOVE INSTRUCTIONS
426 .IIF DIF,SRC,IMM,<MOVE!SHFTBR!SRC!DATA!OPARG1>
427 .MEXIT
428 .ENDC
429 .IF NB,DATA
430 .IIF IDN,SRC,IMM,<MOVE!SHFTBR!IMM!<DATA&377>>
431 .IIF DIF,SRC,IMM,<MOVE!SHFTBR!SRC!DATA>
432 .MEXIT
433 .ENDC
434 .IF NB,SRC
435 <MOVE!SHFTBR!SRC>
436 .MEXIT
437 .ENDC
438 <MOVE!SHFTBR>
439 .ENDM
440 ;
441 .MACRO MEM SRC,DATA,OPARG1,OPARG2 ;MOVE TO MEMORY
442 .IF NB,OPARG2
443 <MOVE!WRMEM!SRC!DATA!OPARG1!OPARG2>
444 .MEXIT
445 .ENDC
446 .IF NB,OPARG1
447 .IIF IDN,SRC,IMM,<MOVE!WRMEM!IMM!<DATA&377>!OPARG1>
448 .IIF DIF,SRC,IMM,<MOVE!WRMEM!SRC!DATA!OPARG1>
449 .MEXIT
450 .ENDC
451 .IIF IDN,SRC,IMM,<MOVE!WRMEM!IMM!<DATA&377>>
452 .IIF DIF,SRC,IMM,<MOVE!WRMEM!SRC!DATA>
453 .ENDM
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE DNMAC X24.07-563 25-JAN-83 10:02 PAGE 7
KMCMAC.MAC 30-DEC-82 03:48 MOVE INSTRUCTIONS
455
456 ;
457 ; SP DESTINATION GROUP
458 ; SP ! ! [IBUS,] ADRI !
459 ; SPBR !--! [SRC,] FUNC !--,SPN [,MAR]
460 ; ! IMM, DATA !
461 ;
462 .MACRO SP SRC,FUNC,SPLOC,OPARG1 ;LOAD SCRATCH-PAD
463 .IF IDN,SRC,IMM
464 .IIF NE,<FUNC&17>-SPLOC .ERROR ;ILLEGAL USE OF IMMEDIATE MODE
465 .ENDC
466 .IF NB,OPARG1
467 .IIF IDN,SRC,IMM,<MOVE!SPX!IMM!<FUNC&377>!SPLOC!OPARG1>
468 .IIF DIF,SRC,IMM,<MOVE!SPX!SRC!FUNC!SPLOC!OPARG1>
469 .MEXIT
470 .ENDC
471 .IF NB,SPLOC
472 .IIF IDN,SRC,IMM,<MOVE!SPX!IMM!<FUNC&377>!SPLOC>
473 .IIF DIF,SRC,IMM,<MOVE!SPX!SRC!FUNC!SPLOC>
474 .MEXIT
475 .ENDC
476 <MOVE!SPX!SRC!FUNC>
477 .ENDM
478 ;
479 .MACRO SPBR SRC,FUNC,SPLOC,OPARG1 ;LOAD SP AND BR
480 .IF IDN,SRC,IMM
481 .IIF NE,<FUNC&17>-SPLOC .ERROR ;ILLEGAL USE OF IMMEDIATE MODE
482 .ENDC
483 .IF NB,OPARG1
484 .IIF IDN,SRC,IMM,<MOVE!SPBRX!IMM!<FUNC&377>!SPLOC!OPARG1>
485 .IIF DIF,SRC,IMM,<MOVE!SPBRX!SRC!FUNC!SPLOC!OPARG1>
486 .MEXIT
487 .ENDC
488 .IF NB,SPLOC
489 .IIF IDN,SRC,IMM,<MOVE!SPBRX!IMM!<FUNC&377>!SPLOC>
490 .IIF DIF,SRC,IMM,<MOVE!SPBRX!SRC!FUNC!SPLOC>
491 .MEXIT
492 .ENDC
493 <MOVE!SPBRX!SRC!FUNC>
494 .ENDM
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE DNMAC X24.07-563 25-JAN-83 10:02 PAGE 8
KMCMAC.MAC 30-DEC-82 03:48 MOVE INSTRUCTIONS
496
497 ;
498 ; OUTBUS/OUTBUS* DESTINATION
499 ; ! [IBUS,] ADRI !
500 ; OUT !--! [SRC,] FUNC !--,ADRO [,MAR]
501 ; ! IMM, DATA !
502 ;
503 .MACRO OUT SRC,DATA,ADRO,OPARG1 ;WRITE TO OUTBUS/OUTBUS*
504 .IF IDN,SRC,IMM
505 .IIF NE,<DATA&17>-<ADRO&17> .ERROR ;ILLEGAL USE OF IMMEDIATE MODE
506 .ENDC
507 .IF NB,OPARG1
508 .IIF IDN,SRC,IMM,<MOVE!IMM!<DATA&377>!ADRO!OPARG1>
509 .IIF DIF,SRC,IMM,<MOVE!SRC!DATA!ADRO!OPARG1>
510 .MEXIT
511 .ENDC
512 .IF NB,ADRO
513 .IIF IDN,SRC,IMM,<MOVE!IMM!<DATA&377>!ADRO>
514 .IIF DIF,SRC,IMM,<MOVE!SRC!DATA!ADRO>
515 .MEXIT
516 .ENDC
517 <MOVE!SRC!DATA>
518 .ENDM
519 ;
520 .MACRO OUTPUT SRC,DATA,ADRO,OPARG1 ;WRITE TO OUTBUS/OUTBUS*
521 .IF IDN,SRC,IMM
522 .IIF NE,<DATA&17>-<ADRO&17> .ERROR ;ILLEGAL USE OF IMMEDIATE MODE
523 .ENDC
524 .IF NB,OPARG1
525 .IIF IDN,SRC,IMM,<MOVE!IMM!<DATA&377>!ADRO!OPARG1>
526 .IIF DIF,SRC,IMM,<MOVE!SRC!DATA!ADRO!OPARG1>
527 .MEXIT
528 .ENDC
529 .IF NB,ADRO
530 .IIF IDN,SRC,IMM,<MOVE!IMM!<DATA&377>!ADRO>
531 .IIF DIF,SRC,IMM,<MOVE!SRC!DATA!ADRO>
532 .MEXIT
533 .ENDC
534 <MOVE!SRC!DATA>
535 .ENDM
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE DNMAC X24.07-563 25-JAN-83 10:02 PAGE 9
KMCMAC.MAC 30-DEC-82 03:48 MOVE INSTRUCTIONS
537
538 ;
539 ; IMPLICIT MAR FUNCTION GROUP
540 ; MEMINC ! ! [IBUS,] ADRI
541 ; LDMA !--! [SRC,] FUNC [,SPN]
542 ; LDMAP ! ! IMM, DATA
543 ;
544 .MACRO MEMINC SRC,DATA,OPARG1 ;MOVE TO MEM, INCR MAR
545 .IF NB,OPARG1
546 <MOVE!WRMEM!INCMAR!SRC!DATA!OPARG1>
547 .MEXIT
548 .ENDC
549 .IIF IDN,SRC,IMM,<MOVE!WRMEM!INCMAR!IMM!<DATA&377>>
550 .IIF DIF,SRC,IMM,<MOVE!WRMEM!INCMAR!SRC!DATA>
551 .ENDM
552 ;
553 .MACRO LDMA SRC,DATA,OPARG1 ;LOAD MEMORY ADDRESS REG
554 .IF NB,OPARG1
555 <MOVE!LDMAR!SRC!DATA!OPARG1>
556 .MEXIT
557 .ENDC
558 .IIF IDN,SRC,IMM,<MOVE!LDMAR!IMM!<DATA&377>>
559 .IIF DIF,SRC,IMM,<MOVE!LDMAR!SRC!DATA>
560 .ENDM
561 ;
562 .MACRO LDMAP SRC,DATA,OPARG1 ;LOAD MEMORY PAGE NUMBER
563 .IF NB,OPARG1
564 <MOVE!LDMAPG!SRC!DATA!OPARG1>
565 .MEXIT
566 .ENDC
567 .IIF IDN,SRC,IMM,<MOVE!LDMAPG!IMM!<DATA/400>>
568 .IIF DIF,SRC,IMM,<MOVE!LDMAPG!SRC!DATA>
569 .ENDM
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE DNMAC X24.07-563 25-JAN-83 10:02 PAGE 10
KMCMAC.MAC 30-DEC-82 03:48 MOVE INSTRUCTIONS
571
572 ;
573 ; GET ADDRESS GROUP
574 ; BRADDR !
575 ; BRADRE !--! LABEL [,MAR]
576 ; MEMADR !
577 ; MEMADE !
578 ;
579 ;
580 .MACRO BRADDR ADDRES,OPARG1 ;PUT ADDR (1 BYTE) IN BR
581 .IF NB,OPARG1
582 <MOVE!WRTEBR!<ADDRES-START&777/2>!OPARG1>
583 .IFF
584 <MOVE!WRTEBR!<ADDRES-START&777/2>>
585 .ENDC
586 .ENDM
587 ;
588 .MACRO BRADRE ADDRES,OPARG1 ;PUT EXT ADDRES (UPPER 4 BITS) IN BR
589 .IF NB,OPARG1
590 <MOVE!WRTEBR!<ADDRES-START/1000&17>!OPARG1>
591 .IFF
592 <MOVE!WRTEBR!<ADDRES-START/1000&17>>
593 .ENDC
594 .ENDM
595 ;
596 .MACRO MEMADR ADDRES,OPARG1 ;WRITE ADDRESS TO MEMORY
597 .IF NB,OPARG1
598 <MOVE!WRMEM!<ADDRES-START&777/2>!OPARG1>
599 .IFF
600 <MOVE!WRMEM!<ADDRES-START&777/2>>
601 .ENDC
602 .ENDM
603 ;
604 .MACRO MEMADE ADDRES,OPARG1 ;WRITE EXTENDED ADDRESS TO MEMORY
605 .IF NB,OPARG1
606 <MOVE!WRMEM!<ADDRES-START/1000&17>!OPARG1>
607 .IFF
608 <MOVE!WRMEM!<ADDRES-START/1000&17>>
609 .ENDC
610 .ENDM
611 ;
612 ;
613 ; OTHER MISC HANDY COMBINATIONS
614 ;
615 ;
616 .MACRO COMP SRC,SPADDR ;COMPARE SOURCE AND SP
617 <SUBOC!SRC!SPADDR>
618 .ENDM
619 ;
620 .MACRO JMPEXT ADDRES ;LOAD PC PAGE AND BRANCH EXTENDED
621 BRADRE ADDRES
622 OUT BR,SELB,OPCHGH
623 BREXT ADDRES
624 .ENDM
625 ;
626 .MACRO INCMA ;INCREMENT THE MAR
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE DNMAC X24.07-563 25-JAN-83 10:02 PAGE 10-1
KMCMAC.MAC 30-DEC-82 03:48 MOVE INSTRUCTIONS
627 <INCMAR>
628 .ENDM
629 ;
630 .MACRO BROTAT ;BR ROTATE
631 <MOVE!SHFTBR!SELB!BR>
632 .ENDM
633 ;
634 .MACRO RSTATE ADDRES ;UPDATE RECIEVER STATE
635 MEMADR ADDRES
636 .ENDM
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE DNMAC X24.07-563 25-JAN-83 10:02 PAGE 11
KMCMAC.MAC 30-DEC-82 03:48 MOVE INSTRUCTIONS
638
639 ;
640 ; SUBROUTINE CALLS
641 ;
642 .MACRO CALLSB REG,ADDRES,BRGVAL ;SUBROUTINE CALL
643 DISP=<.-START>/2&377
644 .IF B BRGVAL
645 BRWRTE IMM,DISP+3
646 .IFF
647 BRWRTE IMM,DISP+4
648 .ENDC
649 SP BR,SELB,REG
650 .IIF NB,BRGVAL,BRWRTE IMM,BRGVAL
651 ALWAYS ADDRES
652 .ENDM
653 ;
654 ;
655 .MACRO CALLSR REG,ADDRES,RADDR,BRGVAL ;SUBROUTINE CALL WITH SPECIAL RETURN ADD
656 BRADDR RADDR
657 SP BR,SELB,REG
658 .IIF NB,BRGVAL,BRWRTE IMM,BRGVAL
659 ALWAYS ADDRES
660 .ENDM
661 ;
662 ;
663 .MACRO RTNSUB REG,PAGE ;SUBROUTINE RETURN
664 .ALWAY SELA,REG,PAGE
665 .ENDM
666
667 ;
668 ; 4K SUBROUTINE CALL
669 ; NOTE: TWO (2)!!! SP'S ARE USED IN THIS CALL (IE. REG,REG+1)
670 ;
671 .MACRO CALLEX REG,ADDRES,BRGVAL ;SUBRTN CALL ACROSS 4K
672 DISP=<.-START>/2+6
673 .IIF NB,BRGVAL,DISP=DISP+1
674 RPAGE=DISP/400&17
675 SPAGE=<ADDRES-START>/1000&17
676 .IIF NE,<RPAGE/4>-<SPAGE/4>,DISP=DISP+2
677
678 BRWRTE IMM,<DISP/400&17>
679 SP BR,SELB,REG
680 BRWRTE IMM,<DISP&377>
681 SP BR,SELB,REG'+1
682
683 .IF EQ,<RPAGE/4>-<SPAGE/4>
684 .IIF NB,BRGVAL,BRWRTE IMM,BRGVAL
685 ALWAYS ADDRES
686 .IFF
687 BRWRTE IMM,SPAGE
688 OUT BR,SELB,OPCHGH
689 .IIF NB,BRGVAL,BRWRTE IMM,BRGVAL
690 BREXT ADDRES
691 .ENDC
692 .ENDM
693 ;
KMCMAC - KMC11-B MACRO DEFINITIONS PREFIX FILE DNMAC X24.07-563 25-JAN-83 10:02 PAGE 11-1
KMCMAC.MAC 30-DEC-82 03:48 MOVE INSTRUCTIONS
694 ;
695 .MACRO CALREX REG,ADDRES,RADDR,BRGVAL ;CALL W/RETURN ADR EXTENDED
696 BRADRE RADDR
697 SP BR,SELB,REG
698 BRADDR RADDR
699 SP BR,SELB,REG'+1
700
701 .IF EQ,<<.-START>&6000>-<<ADDRES-START>&6000>
702 .IIF NB,BRGVAL,BRWRTE IMM,BRGVAL
703 ALWAYS ADDRES
704 .IFF
705 BRADRP ADDRES
706 OUT BR,SELB,OPCHGH
707 .IIF NB,BRGVAL,BRWRTE IMM,BRGVAL
708 BREXT ADDRES
709 .ENDC
710 .ENDM
711 ;
712 ;
713 .MACRO RTNEX REG ;4K CALL RETURN
714 BRWRTE SELA,REG
715 OUT BR,SELB,OPCHGH
716 .BREXT SELA,REG'+1
717 .ENDM
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 12
KDPMCX.MAC 30-DEC-82 03:47 MOVE INSTRUCTIONS
719 .TITLE KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11
720 .IDENT /X1.4/
721 ; FILE DUPEQU.MAC
722 ;
723 ; COPYRIGHT (C) 1980, 1981, 1982
724 ; DIGITAL EQUIPMENT CORPORATION
725 ; MAYNARD, MASSACHUSETTS
726 ;
727 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED
728 ; AND COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE
729 ; AND WITH THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS
730 ; SOFTWARE OR ANY OTHER COPIES THEREOF MAY NOT BE PROVIDED OR
731 ; OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. NO TITLE TO
732 ; AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
733 ;
734 ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE
735 ; WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT
736 ; BY DIGITAL EQUIPMENT CORPORATION.
737 ;
738 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
739 ; OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY
740 ; DIGITAL.
741 ;
742 ; DISTRIBUTED SYSTEMS SOFTWARE ENGINEERING
743 ;
744 ; MODIFIED BY:
745 ;
746 ; SCOTT G. ROBINSON, 17-MAR-81 : VERSION X1.2
747 ; - FIX HUNG DUP PROBLEMS IN XMTDON AND XMTABT
748 ; - ENSURE PROPER HANDLING OF RTS FOR FULL DUPLEX MODE.
749 ; - ENSURE BIT-STUFF MODE IDLE FLAGS (X.25 REQUIREMENT)
750 ; ALAN D. PECKHAM, 4-MAR-82 : VARSION X1.3
751 ; - MARK CHANGES MADE BY LAST FIX.
752 ; - CHANGE HANDLING OF RTS INSTITUTED IN LAST FIX:
753 ; AVOID TOGGLING RTS ONLY FOR NON-DEC MODE.
754 ; ALAN D. PECKHAM, 4-MAY-82 : VARSION X1.4
755 ; - FIX CONTROL-IN TO ACCEPT DUP MAINTENANCE MODE BITS A AND B
756 ; IN BSEL7 BITS 2 AND 3. ISOLATE THESE BITS AND PLACE THEM
757 ; IN DUP REGISTER XX5 INSTEAD OF CLEARING IT.
758 ;
759
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 13
KDPMCX.MAC 30-DEC-82 03:47 MOVE INSTRUCTIONS
761
762 .SBTTL TABLE OFFSET DEFINITIONS
763 .NLIST CND
764
765
766 000001 BIT0=1
767 000002 BIT1=2
768 000004 BIT2=4
769 000010 BIT3=10
770 000020 BIT4=20
771 000040 BIT5=40
772 000100 BIT6=100
773 000200 BIT7=200
774
775
776 ; RAM TABLE OFFSETS PER DDCMP/SDLC LINE
777
778 000000 D.RSTR=0 ;TIMER RESTART VALUE
779
780 000001 D.TIME=D.RSTR+1 ;TIMER VALUE
781
782 000002 D.CSR=D.TIME+1 ;CSR ADDRESS (2 BYTES)
783
784 000004 D.STS=D.CSR+2 ;STATUS
785 000200 DS.CRI=BIT7 ;BIT STUFF CRC INHIBIT
786 000200 DS.SLT=BIT7 ;DDCMP SELECT ON CURRENT MESSAGE
787 000100 DS.QSC=BIT6 ;Q-SYNC BIT
788 000040 DS.DEC=BIT5 ;DEC MODE
789 000020 DS.IGN=BIT4 ;IGNORE CURRENT MESSAGE
790 000010 DS.HDX=BIT3 ;HALF DUPLEX LINE
791 000004 DS.SEC=BIT2 ;SECONDARY STATION
792 000002 DS.DSR=BIT1 ;LAST STATE OF DATA SET READY
793 000001 DS.NUM=BIT0 ;RECEIVING NUMBERED MESSAGE
794
795 000005 D.RPTR=D.STS+1 ;RECEIVE STATE POINTER
796
797 000006 D.SADR=D.RPTR+1 ;SECONDARY ADDRESS
798
799 000007 D.DCC1=D.SADR+1 ;DDCMP DATA CHARACTER COUNT(LOW BYTE)
800
801 000010 D.DCC2=D.DCC1+1 ;DDCMP DATA CHARACTER COUNT(HIGH BYTE)
802 ; THE ABOVE TWO BYTES WILL BE USED AS THE LOCAL DELAY BUFFER FOR SDLC.
803
804 000007 D.SILO=D.DCC1 ;TWO CHARACTER SDLC SILO
805
806 000011 D.RDP=D.DCC2+1 ;CURRENT RECEIVE DESCRIPTOR POINTER (3 BYTES)
807
808 000014 D.ARLP=D.RDP+3 ;ALTERNATE LINK POINTER (3 BYTES)
809
810 000017 D.ORBC=D.ARLP+3 ;ORIGINAL RECEIVE BYTE COUNT (2 BYTES)
811
812 000021 D.ORBA=D.ORBC+2 ;ORIGINAL RECEIVE CURRENT BUFFER ADDRESS (3 BYTES)
813
814 000024 D.RBD=D.ORBA+3 ;CURRENT RECEIVE BUFFER DESCRIPTOR(5 BYTES)
815 000024 D.RBDC=D.RBD ;CURRENT RECEIVE COUNTER
816
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 13-1
KDPMCX.MAC 30-DEC-82 03:47 TABLE OFFSET DEFINITIONS
817 000026 D.RBDA=D.RBDC+2 ;CURRENT RECEIVE BUFFER ADDRESS
818 000030 D.RBDF=D.RBDA+2 ;FLAG BIT BYTE
819 000200 DR.LST=BIT7 ;DESCRIPTOR IS LAST IN LIST
820 000100 DR.ABA=BIT6 ;ALTERNATE BUFFER IS ASSIGNED
821 000040 DR.CBA=BIT5 ;CURRENT BUFFER IS ASSIGNED
822 000010 DR.17=BIT3 ;RCV ADDRESS BIT 17
823 000004 DR.16=BIT2 ;RCV ADDRESS BIT 16
824 000001 DR.FST=BIT0 ;FIRST CHARACTER IN CURRENT BUFFER
825
826 000031 D.ERC=D.RBD+5 ;EVEN RECEIVE CHARACTER
827
828 000032 D.XDP=D.ERC+1 ;CURRENT TRANSMIT DESCRIPTOR POINTER (3 BYTES)
829
830 000035 D.AXLP=D.XDP+3 ;ALTERNATE TRANSMIT LINK POINTER (3 BYTES)
831
832 000040 D.OXBC=D.AXLP+3 ;ORIGINAL TRANSMIT BYTE COUNT (2 BYTES)
833
834 000042 D.DUMMY=D.OXBC+2 ;3 BYTES OF DUMMY DATA
835
836 000045 D.XBD=D.DUMMY+3 ;CURRENT TRANSMIT BUFFER DESCRIPTOR (5 BYTES)
837 000045 D.XBDC=D.XBD ;COUNT (LOW BYTE)
838 000047 D.XBDA=D.XBDC+2 ;ADDRESS (LOW BYTE)
839 000051 D.XBDF=D.XBDA+2 ;FLAG BITS BYTE
840 000200 DX.LST=DR.LST ;DISCRIPTOR IS LAST IN LIST
841 000100 DX.ABA=DR.ABA ;ALTERNATE XMT BUFFER ASSIGNED
842 000040 DX.CBA=DR.CBA ;CURRENT XMT BUFFER ASSIGNED
843 000020 DX.SYN=BIT4 ;SEND SYNCS
844 000010 DX.17=BIT3 ;XMT ADDRESS BIT 17
845 000004 DX.16=BIT2 ;XMT ADDRESS BIT 16
846 000002 DX.EOM=BIT1 ;END OF MESSAGE
847 000001 DX.SOM=BIT0 ;START OF MESSAGE
848
849 000052 D.OXC=D.XBD+5 ;ODD TRANSMIT CHARACTER
850
851 000053 D.SYNC=D.OXC+1 ;TRANSMIT SYNC COUNT
852
853 000054 D.XSTS=D.SYNC+1 ;TRANSMIT STATUS FLAGS
854 000021 DT.ABT=BIT0!BIT4 ;TRANSMIT ABORT PENDING
855 000002 DT.AB1=BIT1 ;TRANSMIT ABORT STAGE 1 PENDING
856
857 000060 D.LNG=60 ;LENGTH OF TABLE
858
859 ; RAM OFFSET PER COMM IOP
860
861 002000 P.MSTA=2000 ;LAST RAM LOCATION + 1
862 001777 P.SLOT=P.MSTA-1 ;COMPLETION SILO NEXT OUT POINTER
863 001776 P.SLIN=P.SLOT-1 ;COMPLETION SILO NEXT IN POINTER
864 001775 P.PORT=P.SLIN-1 ;PORT SERVICE ROUTINE
865 001775 P.PLST=P.PORT
866 000006 SENTRY=6 ;SIZE OF A SILO ENTRY
867 000035 NMSENT=29. ;NUMBER OF SILO ENTRIES
868 001517 P.NPR=P.PLST-<SENTRY*NMSENT> ;COMPLETION SILO
869 001767 SILOED=P.PLST-SENTRY ;LAST ENTRY IN SILO
870 001457 P.LADR=P.NPR-<MAXDEV*2> ;TABLE OF LINE TABLE ADDRESSES
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 14
KDPMCX.MAC 30-DEC-82 03:47 TABLE OFFSET DEFINITIONS
872
873 ;
874 ; SCRATCH PAD DEFINITIONS
875 ;
876 000007 SP.CHR=SP7 ;LOW BYTE OF DUP'S CSR2 (RECEIVE CHARACTER)
877 000010 SP.RST=SP10 ;HIGH BYTE OF DUP'S CSR2 (RECEIVE CHARACTER STATUS)
878 000011 SP.STS=SP11 ;COMM IOP STATUS REGISTER
879 000012 SP.LN=SP12 ;COMM IOP LINE # CURRENTLY SELECTED
880 000013 SP.RM0=SP13 ;RAM TABLE ADDRESS FOR CURRENT LINE - BITS 0-7
881 000014 SP.RM1=SP14 ;RAM TABLE ADDRESS FOR CURRENT LINE - BITS 8&9
882 000015 SP.SB1=SP15 ;SUBROUTINE RETURN ADDRESS (LEVEL B SUBROUTINES)
883 000016 SP.SUB=SP16 ;SUBROUTINE RETURN ADDRESS (LEVEL A SUBROUTINES
884 000017 SP.CS0=SP17 ;IMAGE OF CSR0 (LOW BYTE)
885
886
887 ; DUP-11 INTERFACE RELATED EQUATES
888 ; RECEIVE CONTROL AND STATUS REGISTERS (XX0)
889
890 ; LOW BYTE
891 000002 DUPDTR=BIT1 ;DATA TERMINAL READY
892 000004 DUPRTS=BIT2 ;REQUEST TO SEND
893 000020 DUPREN=BIT4 ;ENABLE RECEIVER
894 000200 DUPRDN=BIT7 ;RECEIVE DONE
895 ; HIGH BYTE
896 000001 DUPSSY=BIT0 ;STRIP SYNC
897 000002 DUPDSR=BIT1 ;DATA SET READY
898
899
900 ;RECEIVE DATA BUFFER REGISTER -RXDBUF (XX2)
901
902 ; HIGH BYTE
903 000001 DUPRSM=BIT0 ;RECEIVE START OF MESSAGE
904 000002 DUPREM=BIT1 ;RECEIVE END OF MESSAGE
905 000004 DUPRAB=BIT2 ;RECEIVE ABORT
906 000020 DUPCPE=BIT4 ;CRC/PARITY ERROR
907 000100 DUPOVR=BIT6 ;OVERUN ERROR
908 000200 DUPRE=BIT7 ;RECEIVE ERROR
909
910 ;PARAMETER CONTROL AND STATUS REGISTER -PARCSR (XX2)
911
912 ; HIGH BYTE
913 000002 DUPCRI=BIT1 ;CRC INHIBIT
914 000020 DUPSAM=BIT4 ;SECONDARY ADDRESS MODE
915 000200 DUPDEC=BIT7 ;DEC MODE
916
917 ;TRANSMIT CONTROL AND STAUS REGISTER-TXCSR (XX4)
918 ; LOW BYTE
919 000010 DUPHDX=BIT3 ;HALF DUPLEX MODE
920 000020 DUPSND=BIT4 ;SEND
921 000200 DUPTXD=BIT7 ;TRANSMIT DONE
922
923 ; HIGH BYTE
924 000001 DUPDR=BIT0 ;DEVICE RESET
925
926 ;TRANSMIT DATA BUFFER REGISTER - TXDBUF (XX6)
927
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 14-1
KDPMCX.MAC 30-DEC-82 03:47 TABLE OFFSET DEFINITIONS
928 ; HIGH BYTE
929 000001 DUPTSM=BIT0 ;TRANSMIT START OF MESSAGE
930 000002 DUPTEM=BIT1 ;TRANSMIT END OF MESSAGE
931 000004 DUPTAB=BIT2 ;TRANSMIT ABORT
932
933
934 ;NPR CONTROL EQUATES
935
936 000021 DATO=021 ;WORD OUT NPR
937 000221 DATOB=221 ;BYTE OUT NPR
938 000002 HLDBUS=002 ;HOLD BUS
939
940
941 ;DDCMP EQUATES
942
943 000201 SOH=201 ;START OF HEADER-NUMBERED MESSAGE
944 000005 ENQ=005 ;ENQUIRY
945 000220 DLE=220 ;DELETE-MAINTAINANCE MESSAGE
946 000226 SYNC=226 ;SYNC CHARACTER
947
948 000007 SYNCNT=7 ;NUMBER OF SYNC'S TO TRANSMIT
949
950
951
952 ;CONTROL/BUFFER ADDRESS OUT PARAMETERS
953
954 000200 C.BAOX=200 ;BA OUT FOR TRANSMIT OPERATION
955 000204 C.BAOR=204 ;BA OUT FOR RECEIVE OPERATION
956 000201 C.CLOX=201 ;CONTROL OUT FOR TRANSMIT OPERATION
957 000205 C.CLOR=205 ;CONTROL OUT FOR RECEIVE OPERATION
958
959 000020 EOM=20 ;END OF MESSAGE
960
961 ;ERROR CODES
962
963 000006 ER.ABO=6 ;RECEIVE ABORT (BIT STUFF)
964 000010 ER.HBC=10 ;DDCMP HEADER BCC ERROR
965 000012 ER.CRC=12 ;RECEIVE CRC ERROR
966 000014 ER.NBA=14 ;NO BUFFER AVAILABLE (RECEIVE)
967 000016 ER.DSR=16 ;DATA SET READY TRANSITION
968 000020 ER.NXM=20 ;NON-EXISTENT MEMORY
969 000022 ER.UNR=22 ;TRANSMIT UNDERRUN
970 000024 ER.OVR=24 ;RECEIVE OVERRUN
971 000026 ER.KIL=26 ;USER KILL
972
973
974 000020 MAXDEV=16. ;MAXIMUM NUMBER OF DUP'S GEN'ED FOR
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 14-2
KDPMCX.MAC 30-DEC-82 03:47 INIT - INITIALIZATION
976 .SBTTL INIT - INITIALIZATION
977 ; FILE IDLE.DUP
978
979 ;+
980 ; **INIT-INITIALIZATION ROUTINE**
981 ;
982 ; INPUTS:
983 ; BRG = 0 (MASTER CLEAR)
984 ; MAR = 0 (MASTER CLEAR)
985 ; OUTPUTS:
986 ; RAM IS CLEARED EXCEPT FOR THE COUNTERS IN THE POLLING LIST
987 ; WHICH ARE SET TO MINUS ONE TO INDICATE NO ACTIVE DEVICES.
988 ; THE ADDRESSES OF EACH LINE TABLE IS PUT IN A TABLE AT P.LADR
989 ; THE CSR'S ARE ALSO CLEARED
990 ;-
991
992 000000' $KDPMC:: ;START OF CODE GLOBAL LABEL
993
994 000000' INIT: OUT BR,SELB,OINCON ;ZERO THE INPUT CONTROL CSR
995 000002' OUT BR,SELB,OOCON ;ZERO THE OUTPUT CONTROL CSR
996 000004' SP BR,SELB,SP.RM1 ;CLEAR OUT RAM ADDRESS HIGH SCRATCH PAD
997 000006' SP BR,SELB,SP.RM0 ;CLEAR LOW BYTE OF ADDRESS
998 000010' SP BR,SELB,SP4 ;ZERO SP4
999 000012' 10$: MEMINC IMM,0 ;ZERO THE NEXT MEMORY LOCATION
1000 000014' SPBR IBUS,NPR,SP0 ;READ THE NPR CONTROL REGISTER
1001 000016' BRWRTE BR,ADD,SP0 ;SHIFT IT LEFT
1002 000020' BR7 20$ ;OVERFLOWED MAR TO 10 BITS - ALL DONE
1003 000022' ALWAYS 10$ ;KEEP ZEROING RAM
1004
1005 ; MAR = 0 FROM OVERFLOW
1006
1007 000024' 20$:
1008 000024' BRWRTE IMM,MAXDEV*2 ;MAXIMUM NUMBER OF DEVICES GENED FOR TIMES 2
1009 000026' SP BR,SELB,SP5 ;SAVE IT IN A SCRATCH PAD
1010 000030' INIT1:
1011 000030' BRWRTE TWOA,SP4,INCMAR ;GET CURRENT LINE TIMES 2
1012 000032' SP BR,SELB,SP0 ;SAVE IT IN SP0
1013 000034' COMP BR,SP5 ;ARE WE FINISHED WITH ALL LINES
1014 000036' Z 40$ ;ALL DONE
1015 000040' SP INCA,SP4 ;ONE MORE LINE INITIALIZED
1016 000042' MEM IMM,377 ;INITIALIZE POLLING COUNTER TO MINUS ONE
1017 000044' BRWRTE IMM,P.LADR,LDMAPG ;LOAD THE BRG WITH THE ADDRESS OF
1018 ;THE LINE TABLE ADDRESS TABLE AND SET THE
1019 ;MAR HI TO THAT ADDRESS
1020 000046' LDMA BR,ADD,SP0 ;POINT TO THIS LINES ENTRY IN THE TABLE
1021 000050' MEMINC SELA,SP.RM0 ;SAVE THE LINE TABLE ADDRESS
1022 000052' MEM SELA,SP.RM1 ;LOW AND HI
1023 000054' ALWAYS NXTTBL ;"CALL" ROUTINE TO CALCULATE ADDRESS OF
1024 ;NEXT LINE'S TABLE (OFFSET BY D.TIME)
1025 ;RETURN MADE TO INIT1 WITH MAR&SP.RM0,1 SET
1026 000056' 40$: LDMAP IMM,P.PORT ;LOAD MAR HIGH WITH ADDRESS OF PORT STATUS BYTE
1027 000060' LDMA IMM,P.PORT ;LOAD MAR LOW
1028 000062' MEMADR RDOSET,INCMAR ;ADDRESS OF ROUTINE TO CHECK FOR OUTPUT COMPLETIONS
1029 000064' MEMINC IMM,P.NPR ;INITIALIZE COMPLETION SILO IN POINTER
1030 000066' MEM IMM,377 ;INITIALIZE COMPLETION SILO OUT POINTER (LOGICAL ZERO)
1031 ;FALL INTO IDLE LOOP
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 15
KDPMCX.MAC 30-DEC-82 03:47 INIT - INITIALIZATION
1033
1034 .SBTTL IDLE - IDLE LOOP
1035
1036 ;+
1037 ; **IDLE-LOOP BETWEEN PORT AND DEVICE SERVICE
1038 ;
1039 ; INPUTS:
1040 ; P.PORT = ADDRESS OF NEXT PORT SERVICE ROUTINE
1041 ;
1042 ; OUTPUTS:
1043 ; IF THE PGMCLK BIT IN THE MISC REG HAS EXPIRED,
1044 ; THE DEVICES ARE POLLED AND SERVICED BY THE TIMER ROUTINE
1045 ; IN ANY CASE, THE NEXT PORT ROUTINE IS BRANCHED TO.
1046 ;
1047 ; MAR = P.PORT
1048 ; ALL PORT ROUTINES RETURN TO IDLE
1049 ;-
1050
1051 000070' IDLE: SPBR IBUS,UBBR,SP0 ;READ THE BUS REQUEST REGISTER AND
1052 ;STORE THE IMAGE IN SP0 AND THE BRG
1053 000072' BR4 TIMER ;BRANCH IF THE TIMER HAS EXPIRED
1054 000074' IDLE1: LDMA IMM,P.PORT ;LOAD MAR TO POINT TO PORT STATUS
1055 000076' LDMAP IMM,P.PORT ;LOAD MAR HIGH
1056 000100' .ALWAY MEMX,SELB,0 ;TIMER HAS NOT EXPIRED YET, CHECK THE
1057 ;DATA PORT TO SEE IF ANY PROCESSING IS REQUIRED
1058 ;RAM CONTAINS THE ADDRESS OF THE APPROPRIATE
1059 ;SERVICE ROUTINE
1060 ; RQISET --> WAITING FOR RQI TO SET
1061 ; RDICLR --> WAITING FOR RDYI TO CLEAR
1062 ; RDOSET --> WAITING FOR A COMPLETION
1063 ; RDOCLR --> WAITING FOR RDYO TO CLEAR
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 16
KDPMCX.MAC 30-DEC-82 03:47 IDLE - IDLE LOOP
1065
1066 .SBTTL DATA PORT PROCESSING ROUTINES
1067 ;+
1068 ; **RDOCLR-WAITING FOR READY OUT TO BE CLEARED BY THE PDP-11**
1069 ;
1070 ; INPUTS:
1071 ; MAR = PORT SERVICE ROUTINE (P.PORT)
1072 ; OUTPUTS:
1073 ; THIS ROUTINE WAITS FOR READY OUT TO BE CLEARED BY THE PDP-11
1074 ; THUS SIGNALING IT IS DONE. IT ALSO CHECKS IF OUTPUT INTERRUPTS
1075 ; ARE REQUESTED IN THE MEANTIME AND WILL GENERATE ONE IF THEY WERE
1076 ; NOT REQUESTED WHEN RDYO WAS SET.
1077 ;
1078 ; WHEN RDYO IS CLEARED, CONTROL IS PASSED TO RQISET TO CHECK
1079 ; FOR PENDING PORT REQUESTS
1080 ;
1081 ; NOTE: THERE EXISTS THE POSSIBILITY OF AN INTERRUPT BEING GENERATED
1082 ; IF IEO IS CLEARED AT ANY TIME AFTER IT IS TESTED BY THE MICROPROCESSOR
1083 ; (APPROX A 1.5US WINDOW)
1084 ;-
1085
1086 000102' RDOCLR:
1087 000102' BRWRTE IBUS,OCON ;READ CONTROL CSR BSEL2
1088 000104' BR7 RDOST1 ;READY OUT STILL SET, CHECK INTERRUPTS
1089 ;
1090 ; ENTER HERE IF AN OUTPUT INTERRUPT HAS ALREADY BEEN GENERATED
1091 ;
1092 000106' RDOCL1:
1093 000106' BRWRTE IBUS,OCON ;READ OUTPUT CONTROL CSR
1094 000110' BR7 IDLE ;READY OUT STILL SET
1095 000112' BRWRTE IMM,0 ;CLEAR OUTPT CONTROL CSR
1096 000114' OUT BR,SELB,OOCON ;..
1097 000116' MEMADR RQISET ;LOOK FOR RQI NEXT
1098 000120' ALWAYS IDLE ;BACK TO IDLE LOOP
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 17
KDPMCX.MAC 30-DEC-82 03:47 DATA PORT PROCESSING ROUTINES
1100
1101 ;+
1102 ; **RDOSET-MICROPROCESSOR COMPLETION POSTING**
1103 ;
1104 ; INPUTS:
1105 ; MAR = PORT SERVICE ROUTINE (P.PORT)
1106 ; OUTPUTS:
1107 ; CHECK THE COMPLETION SILO TO SEE IF ANY COMPLETIONS ARE PENDING.
1108 ; IF THERE ARE POST THE COMPLETION TO THE PDP-11
1109 ; SILO POINTERS (P.SLOT,P.SLIN) ARE UPDATED
1110 ; AND WAIT FOR RDYO TO CLEAR (RDOCLR)
1111 ; OTHERWISE CHECK TO SEE IF THE PDP-11 HAS ANY INPUT DATA (RQISET)
1112 ;-
1113
1114 000122' RDOSET:
1115 000122' MEMADR RQISET ;LOOK FOR RQI NEXT
1116 000124' LDMA IMM,P.SLOT ;SET MAR TO COMPLETION SILO NEXT OUT POINTER
1117 000126' LDMA MEMX,SELB ;POINT COMPLETION TO NEXT OUT ENTRY
1118 000130' Z IDLE ;THE POINTER IS ZERO THEREFORE THE SILO IS EMPTY
1119
1120 ; A COMPLETION OUTPUT IS PENDING IN THE COMPLETION SILO. MAR POINTS TO THE
1121 ; NEXT ENTRY
1122 000132' OUT MEMI,SELB,OLINEN ;WRITE THE LINE NUMBER BYTE
1123
1124 ; READ THE SECOND WORD OF THE COMPLETION SILO AND SET UP CSR 4
1125
1126 000134' OUT MEMI,SELB,OPORT1 ;WRITE PORT BYTE 1
1127 000136' OUT MEMI,SELB,OPORT2 ;AND PORT BYTE 2
1128
1129 ; READ THE THIRD WORD OF THE COMPLETION SILO AND SET UP CSR 6
1130
1131 000140' OUT MEMI,SELB,OPORT3 ;WRITE PORT BYTE 3
1132 000142' OUT MEMI,SELB,OPORT4 ;AND PORT BYTE 4
1133
1134 000144' OUT MEMI,SELB,OOCON ;WRITE THE NEW OUTPUT CNTRL CSR
1135
1136 ; INCREMENT THE SILO NEXT OUT POINTER
1137
1138 000146' LDMA IMM,P.SLIN ;SET MAR TO POINT TO COMPLETION SILO NEXT IN OFFSET
1139 000150' SP MEMI,SELB,SP1 ;SAVE THE NEXT IN POINTER IN SP1
1140 000152' SP MEMX,SELB,SP0 ;SAVE THE NEXT OUT POINTER IN SP0
1141 000154' MEM IMM,P.NPR ;ASSUME THE SILO IS GOING TO WRAP AROUND
1142 000156' BRWRTE IMM,SILOED ;OFFSET TO LAST SILO ENTRY
1143 000160' COMP BR,SP0 ;COMPARE CURRENT OUT POINTER WITH END OF SILO
1144 000162' Z 50$ ;IT WRAPPED AROUND - ALREADY SET UP
1145 000164' BRWRTE IMM,SENTRY ;GET THE SIZE OF A SILO ENTRY
1146 000166' MEM BR,ADD,SP0 ;INCREMENT NEXT OUT POINTER AND SAVE IT
1147
1148 ; IF SILO IS NOW EMPTY "ZERO" THE NEXT OUT POINTER
1149
1150 000170' 50$: COMP MEMX,SP1 ;COMPARE OUT POINTER TO IN POINTER
1151 000172' Z 70$ ;THEY ARE THE SAME
1152 000174' ALWAYS 80$ ;THEY ARE DIFFERENT
1153 000176' 70$: MEM IMM,377 ;THE SILO IS EMPTY - SET NEXT OUT POINTER
1154 ;TO A LOGICAL ZERO (-1)
1155 000200' 80$: LDMA IMM,P.PORT ;SET MAR TO POINT TO PORT STATUS
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 17-1
KDPMCX.MAC 30-DEC-82 03:47 DATA PORT PROCESSING ROUTINES
1156 000202' RDOST1:
1157 000202' SPBR IBUS,INCON,SP0 ;READ INPUT CONTROL CSR
1158 000204' BR4 RDOST2 ;OUTPUT INTERRUPT REQUESTED
1159 000206' MEMADR RDOCLR ;STATE TO WAITING FOR READY OUT CLEARING
1160 000210' ALWAYS IDLE ;BACK TO IDLE LOOP
1161
1162 000212' RDOST2: MEMADR RDOCL1 ;STATE TO WAITING FOR READY OUT CLEARING
1163 000214' BRWRTE IMM,300 ;MASK FOR BUS REQUEST AND XX4
1164 000216' RDOST3: OUT BR,SELB,OBR ;GENERATE AN INTERRUPT
1165 000220' ALWAYS IDLE ;BACK TO IDLE LOOP
1166
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 18
KDPMCX.MAC 30-DEC-82 03:47 DATA PORT PROCESSING ROUTINES
1168
1169 ;+
1170 ; **RQISET-REQUEST IN SET, THE PDP-11 HAS REQUESTED THE DATA PORTS
1171 ;
1172 ; INPUTS:
1173 ; MAR = PORT SERVICE ROUTINE (P.PORT)
1174 ; OUTPUTS:
1175 ; CHECK TO SEE IF REQUEST IN HAS BEEN SET BY THE PDP-11. IF SO,
1176 ; SET READY IN AND LET THE PDP-11 SET UP A COMMAND IN THE DATA PORTS
1177 ; IF INPUT INTERRUPTS ARE REQUESTED, GENERATE ONE
1178 ; TRANSFER CONTROL TO RDICLR TO WAIT UNTIL THE PDP-11 IS DONE
1179 ;-
1180
1181 000222' RQISET: BRWRTE IBUS,INCON ;READ INPUT CONTROL CSR
1182 000224' BR7 10$ ;REQUEST IN SET
1183 000226' ALWAYS RDOSET ;SEE IF ANY COMPLETIONS TO POST
1184
1185 000230' 10$: SP IMM,20,SP0 ;MASK TO SET READY IN
1186 000232' OUT SELA,OOCON ;SET IN OUPUT CONTROL CSR
1187 000234' BR0 RQIST1 ;INTERRUPT ENABLE IS SET
1188 000236' MEMADR RDICLR ;STATE TO WAITING FOR RDYI TO CLEAR
1189 000240' ALWAYS IDLE ;BACK TO IDLE LOOP
1190
1191 000242' RQIST1: MEMADR RDICL1 ;STATE TO WAITING FOR RDYI TO CLEAR
1192 000244' BRWRTE IMM,200 ;MASK FOR BUS REQUEST AND XX0
1193 000246' ALWAYS RDOST3 ;GENERATE AN INTERRUPT
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 19
KDPMCX.MAC 30-DEC-82 03:47 DATA PORT PROCESSING ROUTINES
1195
1196 ;+
1197 ; **RDICLR-WAIT FOR READY IN TO CLEAR (DATA PORTS HAVE BEEN SET UP)**
1198 ;
1199 ; INPUTS:
1200 ; MAR = PORT SERVICE ROUTINE (P.PORT)
1201 ; OUTPUTS:
1202 ; CHECK TO SEE IF THE PDP-11 HAS CLEARED READY IN SIGNIFYING
1203 ; THAT IT HAS SET UP THE DATA PORTS. IF SO THEN DISPATCH TO THE
1204 ; PROPER ROUTINE TO HANDLE THE REQUEST BASED ON
1205 ; BIT 0&1 OF THE CONTROL CSR BSEL2
1206 ;-
1207
1208 ; RDYI CLEAR ROUTINE IS ENTERED HERE IF INTERRUPT ENABLE WAS NOT
1209 ; SET WHEN THE COMMIOP SET READY IN. IF IN THE MEANTIME INTERRUPT ENABLE
1210 ; WAS SET, IT WILL BE SEEN HERE AND AN INTERRUPT WILL BE GENERATED
1211
1212 .ENABL LSB
1213 000250' RDICLR:
1214 000250' BRWRTE IBUS,OCON ;READ OUTPUT CONTROL CSR
1215 000252' BR4 5$ ;READY IN STILL SET
1216 000254' ALWAYS 10$ ;PDP-11 CLEARED RDYI. DONT BOTHER
1217 ;CHECKING FOR IEI JUST PROCESS THE DATA
1218 000256' 5$: BRWRTE IBUS,INCON ;READ CONTROL CSR
1219 000260' BR0 RQIST1 ;INTERRUPT REQUESTED
1220 000262' RDICL1:
1221 000262' BRWRTE IBUS,OCON ;READ OUTPUT CONTROL CSR
1222 000264' BR4 IDLE ;RDYI STILL SET
1223 000266' 10$: MEMADR RDOSET ;STATE TO WAIT FOR COMPLETIONS
1224
1225 ; READY IN CLEAR
1226
1227 000270' BRWRTE IMM,P.LADR ;GET ADDRESS OF LINE TABLE ADDR TABLE
1228 000272' SP BR,SELB,SP5 ;SAVE IT IN SP5
1229 000274' SP IBUS,LINENM,SP.LN ;READ THE LINE NUMBER
1230 000276' BRWRTE BR,TWOA,SP.LN ;MULTIPY IT BY TWO
1231 000300' LDMA BR,ADD,SP5 ;POINT TO ENTRY IN TABLE FOR THIS LINE
1232 000302' SP MEMI,SELB,SP.RM0 ;GET THE ADDRESS OF THIS LINE'S TABLE
1233 ;(LOW) AND SAVE IT IN SP.RM0
1234 000304' SP MEMX,SELB,SP.RM1,LDMAPG ;GET THE ADDRESS (HIGH) AND POINT
1235 ;THE MAR HI TO THIS ADDRESS
1236 000306' LDMA SELA,SP.RM0 ;SET MAR LOW
1237 000310' 15$:
1238 000310' BRWRTE IMM,14,INCMAR ;SET UP DUP CSR BY SETTING ADDR BITS 16-17
1239 000312' OUT BR,SELB,OBR,INCMAR ;WRITE EXTENDED MEM BITS FOR OUT NPR
1240 000314' OUTPUT MEMI,SELB,OBA1 ;WRITE OUT LOW BYTE OF CSR ADDRESS
1241 000316' OUTPUT MEMI,SELB,OBA2 ;WRITE OUT HIGH BYTE
1242 000320' LDMA SELA,SP.RM0 ;POINT BACK TO START OF LINE TABLE
1243
1244 ;REGISTERS FOR COMMAND ROUTINES
1245 ; MAR=LINE TABLE SP.LN=LINE NUMBER
1246 ; SP.RM0,1=LINE TABLE ADDR
1247 ; NPR OUTPUT ADDR=DEVICE CSR 0
1248
1249 000322' BRWRTE IBUS,OCON ;GET ORIGINAL IMAGE OF INPUT CONTROL CSR
1250 ;READ FROM BSEL2 TO AVOID RAM BIT SET PROBLEM
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 19-1
KDPMCX.MAC 30-DEC-82 03:47 DATA PORT PROCESSING ROUTINES
1251 ;BY THIS TIME ALL BITS WILL HAVE SETTLED
1252 000324' BR1 20$ ;BIT 1 SET
1253 000326' BR0 CONIN ;BIT 1=0 AND BIT 0=1 -> CONTROL IN REQUEST
1254 000330' ALWAYS BAIN ;BIT 0&1=0 -> BUFFER ADDRESS IN REQUEST
1255 000332' 20$: BR0 BASEIN ;BIT 1=1 BIT 0=1 -> BASE IN REQUEST
1256 ;BIT 1=1 BIT 0=0 -> ILLEGAL REQUEST
1257 .DSABL LSB
1258
1259 ; ABOVE THREE ROUTINES RETURN HERE AFTER REQUEST HAS BEEN PROCESSED
1260
1261 000334' RQICL2: BRWRTE IMM,0 ;CLEAR OUT CONTROL CSR
1262 000336' OUT BR,SELB,OOCON ;..
1263 000340' SPBR IBUS,UBBR,SP0 ;READ THE MISC REGISTER
1264 000342' BR0 NXMERR ;IF BIT 0 SET, THEN A NON-EXISTENT MEMORY
1265 ;ERROR OCCURRED, REPORT IT.
1266 000344' ALWAYS IDLE ;OTHERWISE, BACK TO IDLE LOOP
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 20
KDPMCX.MAC 30-DEC-82 03:47 DATA PORT PROCESSING ROUTINES
1268
1269 .SBTTL TIMER - TIMER SERVICE
1270 ;+
1271 ; **TIMER-TIMER SERVICE ROUTINE**
1272 ;
1273 ; INPUTS:
1274 ; BRG & SP0 = IMAGE OF BUS REQUEST REGISTER
1275 ;
1276 ; OUTPUTS:
1277 ; EACH DEVICES TIMER COUNTER IS DECREMENTED AND TESTED FOR
1278 ; AN EXPIRATION. IF THE COUNTER WENT TO ZERO THE DEVICE
1279 ; IS POLLED TO SEE IF IT HAS A TRANSMIT DONE OR A RECEIVE DONE
1280 ; AND IF SO IT IS SERVICED. IF NONE OF THE DEVICES REQUIRES
1281 ; SERVICING THE MODEM TIMER IS DECREMENTED AND IF IT EXPIRED
1282 ; MODEM CHANGES ARE CHECKED.
1283 ; WHEN A DEVICE DONE SERVICE ROUTINE IS FINISHED THIS ROUTINE
1284 ; CONTINUES WITH THE NEXT DEVICE.
1285 ;-
1286 .ENABL LSB
1287 000346' TIMER: BRWRTE IMM,121 ;MASK TO CLEAR ALL BUT TIMER, XX4 AND NXM
1288 ;N.B. THE TIMER WILL ALREADY BE SET TO ONE
1289 ;FROM IT EXPIRING SO THE MASK IS GUARANTEED
1290 ;TO LEAVE IT A ONE FOR RESETTING
1291 000350' OUT BR,AANDB,OBR ;AND THE MASK WITH THE PREVIOUS CONTENTS OF
1292 ;THE BUS REQUEST REGISTER RESETING THE
1293 ;TIMER
1294 000352' BRWRTE IMM,0 ;ZERO THE BRG
1295 000354' SP BR,SELB,SP.LN ;START WITH LINE ZERO
1296 000356' SP BR,SELB,SP.RM0,LDMAR ;SAVE THE ADDRESS IN RAM ADDRESS SCRATCH PAD
1297 000360' SP BR,SELB,SP.RM1,LDMAPG ;INITIALIZE SCRATCH PAD WITH THE HIGH BITS
1298 000362' ALWAYS TIMRT1 ;START POLLING
1299
1300
1301 ; MAIN POLLING LOOP
1302 ; RECEIVE DONE ROUTINES RETURN HERE
1303
1304 000364' TIMRTN:
1305
1306 000364' 10$:
1307 000364' SPBR IBUS,UBBR,SP0 ;READ THE MISC. REGISTER
1308 000366' BR0 NXMERR ;NXM ERROR OCCURRED DURING LAST POLL
1309 000370' SP BR,INCA,SP.LN ;ONE LESS DEVICE TO POLL
1310 000372' BRWRTE IMM,MAXDEV ;CHECK TO SEE IF LAST DEVICE
1311 000374' COMP BR,SP.LN ;HAS BEEN POLLED
1312 000376' Z IDLE1 ;ALL DONE - BACK TO IDLE LOOP
1313 000400' BRWRTE IMM,P.LADR,LDMAPG ;GET STARTING ADDRESS FOR TABLE
1314 ;OF LINE TABLE ADDRESSES AND SET MAR HI
1315 000402' SP BR,SELB,SP0 ;SAVE IT IN SP0
1316 000404' BRWRTE BR,TWOA,SP.LN ;MAKE LINE NUMBER A DOUBLE BYTE INDEX
1317 000406' LDMA BR,ADD,SP0 ;SET ADDRESS FOR ENTRY OF THIS LINE
1318 000410' SP MEMI,SELB,SP.RM0 ;SAVE ADDRESS FOR THIS LINE
1319 000412' SP MEMX,SELB,SP.RM1,LDMAPG ;HIGH 2 BITS AND LOAD MAR HI
1320 000414' LDMA BR,SELA,SP.RM0 ;LOAD MAR LOW
1321 000416' TIMRT1:
1322 000416' BRWRTE MEMI,SELB ;SAVE THE RESTART VALUE IN THE BRG
1323 ;AND INCREMENT THE MAR
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 20-1
KDPMCX.MAC 30-DEC-82 03:47 TIMER - TIMER SERVICE
1324 ;IN CASE THE TIMER EXPIRED
1325 000420' SP MEMX,SELB,SP0 ;READ THE COUNTER FOR THIS DEVICE
1326 000422' Z 10$ ;THE DEVICE IS NOT ACTIVE
1327 000424' MEM BR,DECA,SP0 ;DECREMENT THE COUNTER AND WRITE IT
1328 ;BACK TO MEMORY
1329 000426' C 10$ ;LOOK AT THE NEXT DEVICE'S COUNTER
1330
1331 ; TIMER HAS EXPIRED - SEE IF THERE ARE ANY "DONES" PENDING
1332 ; INPUTS:
1333 ; BRG = RESET VALUE
1334
1335 000430' 30$: MEMINC BR,SELB ;RESET THE COUNTER TO THE INITIAL VALUE
1336 000432' OUTPUT MEMI,SELB,IBA1 ;STORE THE LOW BYTE OF THE DEVICES
1337 ;CSR INTO THE LOW BYTE OF THE INPUT BUFFER
1338 ;ADDRESS REGISTER
1339 000434' OUTPUT MEMI,SELB,IBA2 ;DO THE SAME WITH THE HIGH BYTE
1340 ;AND INCRMENT THE MAR TO STATUS BYTE
1341 000436' BRWRTE IMM,14!DATI ;MASK TO SET EXTENDED MEMORY BITS
1342 ; DO AN INPUT NPR
1343 000440' OUT BR,SELB,ONPR ;START THE NPR
1344 000442' SP MEMX,SELB,SP.STS ;SAVE THE STATUS BYTE IN SP.STS
1345 000444' 40$: BRWRTE IBUS,NPR ;READ THE NPR REQUEST REGISTER
1346 000446' BR0 40$ ;WAIT FOR THE NPR TO COMPLETE
1347 000450' SPBR IBUS,INDAT2,SP1 ;READ THE HIGH BYTE OF CSR 0
1348 ;SAVE IT IN SP1 FOR XMTDON
1349 000452' BRWRTE BR,AXORB,SP.STS ;SEE IF ANY CHANGE IN THE DSR STATE
1350 000454' BR1 DSRCHG ;DATA SET READY HAS CHANGED STATES
1351 000456' SP IBUS,IIBA1,SP0 ;READ LOW BYTE OF CSR0'S ADDRESS
1352 000460' SPBR IBUS,INDAT1,SP.CS0 ;READ THE LOW BYTE OF THE DEVICES CSR
1353 000462' BR7 60$ ;RECEIVE DONE SET
1354 ;
1355 ; SEE IF TRANSMIT DONE SET
1356 ;
1357 000464' 45$: BRSHFT ;SHIFT THE CSR IMAGE
1358 000466' BR1 XMTDON ;REQUEST TO SEND SET
1359 ;
1360 ; RETURN HERE AFTER FINISHED PROCESSING THE TRANSMITTER
1361 ;
1362 000470' TIMRT3:
1363 000470' 50$:
1364 000470' BRWRTE BR,SELA,SP.CS0 ;RE-READ IMAGE OF CSR0
1365 000472' BR7 RCVDON ;RECEIVE DONE WAS SET
1366 000474' ALWAYS 10$ ;NOT SET - RETURN
1367 ;
1368 ; RECEIVE DONE FOUND SET
1369 ;
1370 000476' 60$:
1371 000476' BRWRTE IMM,2 ;PREPARE TO ADD TWO TO THIS ADDRESS
1372
1373 000500' OUTPUT BR,ADD,IBA1 ;ADD TWO TO THE ADDRESS IN SP0 GETTING THE ADDRESS
1374 ; OF CSR2 WHICH CONTAINS THE RECEIVE
1375 ;CHARACTER IN THE LOW BYTE AND THE
1376 ;STATUS IN THE HIGH BYTE
1377 000502' BRWRTE IMM,14!DATI ;MASK TO SET EXTENDED MEMORY BITS
1378 ;AND TO START THE NPR
1379 000504' OUT BR,SELB,ONPR ;START THE NPR TO READ CSR2
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 20-2
KDPMCX.MAC 30-DEC-82 03:47 TIMER - TIMER SERVICE
1380 000506' 70$: BRWRTE IBUS,NPR ;READ THE NPR STATUS REGISTER
1381 000510' BR0 70$ ;NPR IS NOT DONE YET
1382 000512' SP IBUS,INDAT1,SP.CHR ;SAVE THE CHARACTER IN A SCRATCH PAD
1383 000514' SP IBUS,INDAT2,SP.RST ;SAVE THE CHARACTER'S STATUS
1384 000516' BRWRTE BR,SELA,SP.CS0 ;RESTORE THE BRG FOR XMIT DONE TESTING
1385 000520' ALWAYS 45$ ;SEE IF ANY XMIT DONES
1386
1387 ;UPON TRANSFER TO XMTDON OR RCVDON
1388 ;THE FOLLOWING LOCATIONS HAVE BEEN SET UP
1389 ;FOR ENTRY TO THE "DONE" PROCESSOR:
1390 ; SP.RM1 -> BITS 8&9 OF RAM TABLE ADDRESS
1391 ; SP.RM0 -> BITS 0-7 OF RAM TABLE ADDRESS
1392 ; MAR --> STATUS (D.STS) IN LINE TABLE
1393 ; SP.LN --> LINE NUMBER
1394 ; SP.CS0 --> IMAGE OF LOW BYTE OF CSR 0
1395 ; SP.STS --> IMAGE OF D.STS
1396 ; SP0 --> LOW BYTE OF CSR 0 ADDRESS
1397 ; SP1 --> HIGH BYTE OF CONTENTS OF CSR 0
1398 ; NPR INPUT ADDR -> DEVICE CSR 0
1399 ;IF RECV DONE,
1400 ; SP.CHR --> RECEIVED CHARACTER
1401 ; SP.RST --> RCV CHAR STATUS (CSR2 MSB)
1402 .DSABL LSB
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 21
KDPMCX.MAC 30-DEC-82 03:47 TIMER - TIMER SERVICE
1404
1405 ;% FILE DUPUSER.MAC
1406
1407 ;INDIRECT RETURNS THROUGH PAGE ZERO
1408
1409 ;******FOLLOWING INSTRUCTIONS MUST RESIDE IN MICRO PAGE ZERO******
1410
1411
1412 ;RETURN FROM INCOUT DUE TO A CALL FROM BOUT ROUTINE
1413 000522' BOUTR0: ALWAYS QPDATA ;GO TO QPDATA ON RETURN
1414
1415
1416 ;RETURN FROM INCOUT DUE TO A CALL FROM XMTSND
1417 000524' XMTEM0: ALWAYS XMTBC0
1418
1419
1420 ;RETURN FROM LSILO DUE TO A CALL FROM RB3
1421 000526' RB3P0: ALWAYS STORE ;GO TO STORE ROUTINE ON RETURN
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 22
KDPMCX.MAC 30-DEC-82 03:47 TIMER - TIMER SERVICE
1423
1424 .SBTTL BASEIN-BASE IN SERVICE ROUTINE
1425
1426 ;+
1427 ;
1428 ; B A S E I N
1429 ;
1430 ;
1431 ;
1432 ;CALLED BY: RDICLR
1433 ;
1434 ;INPUTS:
1435 ; KMC BSEL3 =LINE NUMBER
1436 ; KMC SEL6 <3:12> =CSR ADDR FOR CURRENT DUP
1437 ; SP.RM0,SP.RM1 =LINE TABLE ADDRESSES
1438 ; MAR =LINE TABLE
1439 ;OUTPUTS:
1440 ; DUP CSR ADDR IS SAVED IN THE LINE TABLE (D.CSR)
1441 ; DUP IS RESET
1442 ;-
1443
1444 000530' BASEIN:
1445 ;SAVE CURRENT DUP CSR ADDR IN RAM
1446
1447 000530' SP IBUS,PORT3,SP0,INCMAR ;GET CSR ADDR INTO SP0
1448 000532' BRWRTE IMM,370,INCMAR ;MASK TO STRIP 3 LSB'S OF CSR ADDR
1449 000534' MEM BR,AANDB,SP0 ;STRIP THEM AND STORE IN RAM
1450 000536' OUTPUT MEMI,SELB,OBA1 ;SAVE CSR IN OUT ADDRESS REGISTERS
1451 000540' SP IBUS,PORT4,SP0 ;GET HIGH BYTE INTO SP0
1452 000542' BRWRTE IMM,340 ;MASK TO SET 3 MSB'S
1453 000544' MEM BR,AORB,SP0 ;SAVE IT IN RAM WITH 3 HIGH BITS SET TO ONES
1454 000546' OUTPUT MEMX,SELB,OBA2 ;SAVE HIGH BYTE OF CSR ADDRESS
1455
1456 000550' BASEI1:
1457 ;DEVICE RESET THE DUP
1458
1459 000550' BRWRTE IMM,DUPDR ;SET PROPER BIT (BIT 0) IN OUTDATA HB
1460 000552' OUTPUT BR,SELB,OUTDA2
1461 000554' CALLSR SP.SUB,INCOB,RQICL2,5 ;DO THE NPR TO MASTER CLEAR THE DUP
1462 ;AND RETURN TO CLEAR READY IN
1463 ; RESET IS A 2 MICRO-SECOND ONE SHOT.IT IS ASSUMED THAT BEFORE THE DUP
1464 ;IS ACCESSED AGAIN, THIS PERIOD WILL HAVE ELAPSED.
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 23
KDPMCX.MAC 30-DEC-82 03:47 BASEIN-BASE IN SERVICE ROUTINE
1466
1467 .SBTTL CONIN-CONTROL IN PROCESS ROUTINE
1468
1469 ;+
1470 ;
1471 ; C O N T R O L I N
1472 ;
1473 ;
1474 ;
1475 ;CALLED BY: RDICLR
1476 ;
1477 ;INPUTS:
1478 ; BSEL4 (PORT1) =POLLING COUNT
1479 ; BSEL6 (PORT3) =SECONDARY ADDRESS
1480 ; BSEL7 (PORT4) =CONTROL FLAGS
1481 ; SP.RM0,SP.RM1 =LINE TABLE ADDRESS
1482 ; MAR =LINE TABLE ADDRESS
1483 ; OUT BA =DUP'S CSR 0
1484 ;OUTPUTS:
1485 ; VARIOUS LINE TABLE LOCATIONS AND DUP FUNCTIONS ARE INITIALIZED ACCORDING TO
1486 ; THE CONTROL IN PARAMETERS.THESE INCLUDE:
1487 ; DUP CSR XX0-STRIP SYNC FOR DEC MODE
1488 ; DUP CSR XX2-DEC MODE&SYNC CHARACTER FOR DDCMP OR SEC MODE,
1489 ; SEC ADDRESS FOR BITSTUFF MODE
1490 ; DUP CSR XX4-HALFDUPLEX
1491 ;-
1492
1493 000564' CONIN:
1494 000564' BRWRTE IBUS,PORT4 ;READ BSEL 7
1495 000566' BR0 10$ ;ENABLE LINE IS SET
1496 000570' SPBR IMM,0,SP0,INCMAR ;CLEAR SP0
1497 000572' MEMINC DECA,SP0 ;WRITE A 377 TO D.TIME DISABLING THIS LINE
1498 000574' ALWAYS 20$
1499
1500 000576' 10$: MEMINC IBUS,PORT1 ;SET TIMER RESTART VALUE
1501 000600' MEMINC IBUS,PORT1 ;AND TIMER ENABLING THE LINE
1502 000602' BRWRTE IMM,DUPDTR!DUPREN ;VALUE TO SET DTR AND RECEIVE ENABLE
1503
1504 ; BRG = DUPDTR!DUPREN IF ENABLE WAS REQUEST OR 0 IF DISABLE
1505
1506 000604' 20$: OUTPUT BR,SELB,OUTDA1,INCMAR ;VALUE TO SET OR CLEAR DTR,RCV ENABLE
1507 000606' BRWRTE IBUS,PORT4,INCMAR ;REREAD BSEL7
1508 ;MAR = D.STS
1509 000610' MEM IMM,DUPSSY ;ASSUME DEC MODE BY STORING STRIP SYNC
1510 ;BIT TEMPORARILY IN MEMORY
1511 000612' BR7 30$ ;IT IS DEC MODE
1512 000614' MEM IMM,0 ;BIT STUFF MODE - DON'T SET STRIP SYNC
1513 000616' 30$: OUTPUT MEMX,SELB,OUTDA2 ;STORE STRIP SYNC SETTING
1514 000620' BRWRTE IMM,DATO ;DO AN OUTPUT NPR
1515 000622' OUT BR,SELB,ONPR ;REQUEST THE NPR
1516 000624' 40$: BRWRTE IBUS,NPR ;SEE IF NPR DONE YET
1517 000626' BR0 40$ ;WAIT FOR IT
1518
1519 000630' CONIN2:
1520 000630' SPBR IBUS,PORT4,SP0 ;REREAD BSEL7
1521 000632' BR7 10$ ;DEC MODE?
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 23-1
KDPMCX.MAC 30-DEC-82 03:47 CONIN-CONTROL IN PROCESS ROUTINE
1522 ; LOAD SYNC CHARACTER/SECONDARY ADDRESS INTI XX2 LOW BYTE
1523
1524 000634' OUTPUT IBUS,PORT3,OUTDA1 ;NO,SO LOAD SEC ADDRESS FIELD
1525 000636' MEM IMM,DS.CRI ;ASSUME CRC INHIBIT
1526 000640' BR1 5$ ;BRANCH IF IT IS CRC INHIBIT
1527 000642' MEM IMM,0 ;CLEAR D.STS
1528 000644' 5$: BRWRTE IMM,DUPSAM!DUPCRI ;SET SECONDARY ADDRESS MODE,CRC INHIBIT
1529 000646' ALWAYS 20$
1530 ; UPDATE XX3
1531 000650' 10$:
1532 000650' MEM IMM,SYNC ;MOVE SYNC CHARACTER TO MEMORY IN ORDER
1533 ;TO SAVE THE BRG
1534 000652' OUTPUT MEMX,SELB,OUTDA1 ;MOVE IT TO OUT DATA REGISTER
1535 000654' MEM IMM,DS.SEC!DS.DEC ;ASSUME DEC AND SEC MODE
1536 000656' BR4 15$ ;BRANCH IF SEC MODE
1537 000660' MEM IMM,DS.DEC ;NO,JUST DEC MODE
1538 000662' 15$: BRWRTE IMM,DUPDEC ;ISOLATE DEC MODE,CRC INHIBIT
1539 ;NOTE: DUP SOULD NOT BE SET TO SECONDARY ADDRESS MODE WHILE IN DEC MODE.THIS
1540 ;WILL INHIBIT RECEIVE DONES.
1541 000664' 20$:
1542 000664' OUTPUT BR,AANDB,OUTDA2 ;MODE CRC INHIBIT&AND LOAD INTO OUTADA2
1543 000666' CALLSB SP.SUB,IC2OUT ;WRITE IT OUT TO XX3,XX2
1544 ; UPDATE DUP XX5,XX4
1545
1546 000674' CONIN3:
1547 000674' BRWRTE IBUS,PORT4
1548 000676' BRSHFT
1549 000700' BR4 30$ ;HALF DUPLEX MODE
1550 ;FULL DUPLEX MODE,CLEAR XX4
1551
1552 000702' BRWRTE IMM,0
1553 000704' ALWAYS 40$
1554
1555 ;HALF DUPLEX MODE, SET HALF DUPLEX BIT IN XX4
1556
1557 000706' 30$:
1559 000706' BRWRTE IMM,DUPHDX ;HALF DUPLEX MASK (SAME AS DX.HDX)
1560 000710' SP BR,SELB,SP0 ;SAVE IT IN SP0
1561 000712' MEM MEMX,AORB,SP0 ;SET HALF DUPLEX IN D.STS
1562 000714' 40$:
1563
1564 000714' OUTPUT BR,SELB,OUTDA1,INCMAR ;WRITE HALF DUPLEX MASK
1565 ;MAR = D.RPTR (RECV STATE POINTER)
1566
1567 ; SET RECEIVE STATE POINTER
1568
1569 000716' RSTATE RDH1 ;ASSUME DEC MODE
1570 000720' SPBR IBUS,PORT4,SP0 ;REREAD BSEL7 **X1.4**
1571 000722' BR7 50$ ;IT IS
1572 000724' RSTATE RB1 ;BIT STUFF MODE
1573
1574 ;CLEAR XX5
1575 000726' 50$: SP BR,TWOA,SP0 ;SHIFT BSEL7 BITS 2 AND 3 **X1.4**
1576 000730' BRWRTE IMM,30 ;TO XX5 BITS 3 AND 4 **X1.4**
1577 000732' OUTPUT BR,AANDB,OUTDA2,INCMAR ;FOR MAINTENANCE MODE **X1.4**
1578 ;MAR = D.SADR (SECONDARY ADDRESS)
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 23-2
KDPMCX.MAC 30-DEC-82 03:47 CONIN-CONTROL IN PROCESS ROUTINE
1579
1580 000734' MEMINC IBUS,PORT3 ;SAVE SECONDARY ADDRESS
1581 000736' BRWRTE IMM,D.XSTS ;OFFSET OF TRANSMIT ABORT STATUS
1582 000740' LDMA BR,ADD,SP.RM0 ;SET MAR
1583 000742' MEM IMM,0 ;CLEAR ANY PENDING STATUS
1584
1585 ;WRITE TWO BYTES INTO XX4/XX5
1586
1587 000744' CALLSR SP.SUB,IC2OUT,RQICL2 ;SHIP IT AND RETURN TO CALLER
1588
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 24
KDPMCX.MAC 30-DEC-82 03:47 CONIN-CONTROL IN PROCESS ROUTINE
1590
1591 .SBTTL BAIN-BUFFER ADDRESS IN SERVICE ROUTINE
1592
1593 ;+
1594 ; B U F F E R A D D R E S S I N
1595 ;
1596 ;CALLED BY: RDICLR
1597 ;
1598 ;INPUTS:
1599 ; SEL4,BSEL7 <7:6> =BUFFER DESCRPTR LIST ADDR
1600 ; BSEL7<5:4> =KILL ASSIGN AND KILL BITS
1601 ; SP.RM0,SP.RM1 =LINE TABLE ADDRESS
1602 ; MAR =LINE TABLE
1603 ; OUT BA =DUP'S CSR ADDRESS
1604 ;OUTPUTS:
1605 ; BUFFER DESCRIPTOR ADDRESS DEFINED BY THE BA IN IS LOADED INTO
1606 ; THE APPROPRIATE (RECEIVE/TRANSMIT) DESCRIPTOR POINTER.
1607 ; IF THE CURRENT BUFFER IS THE ONE JUST ASSIGNED,LINE TABLE LOCATIONS
1608 ; (BUFFER ADDRESS,BYTE COUNT) ARE UPDATED. OTHERWISE DR.ABA IS SET (ALT ASGNED)
1609 ; IF THE CURRENT BUFFER FOR TRANSMISSION IS BEING ASSIGNED,FIRST ODD
1610 ; CHARACTER IN THE TRANSMIT BUFFER IS SAVED IN D.OXC
1611 ; IF THE CURRENT BUFFER FOR RECEPTION IS BEING ASSIGNED,DR.FST IS SET
1612 ;-
1613
1614 000752' BAIN:
1615
1616 ;LOAD RECEIVE CONTROL AND STATUS REGISTER INTO SP.CS0
1617
1618 000752' OUTPUT IBUS,IOBA1,IBA1 ;SET INBA 7:0
1619 000754' OUTPUT IBUS,IOBA2,IBA2 ;SET INBA 15:8
1620 000756' BRWRTE IMM,<BIT3!BIT2!DATI> ;SET EXT BITS AND
1621 000760' OUT BR,SELB,ONPR ;DO IN NPR
1622 ;DETERMINE TYPE OF IO REQUIRED (RECEIVE OR TRANSMIT)
1623
1624 000762' BRWRTE IBUS,OCON ;GET OUTPUT CONTROL REGISTER
1625 000764' BRSHFT
1626 000766' BR1 BARCV ;BAIN FOR RECEIVE
1627
1628 ;BAIN FOR TRANSMIT OPERATION
1629 000770' BRWRTE IMM,D.XDP ;ADDRESS D.XDP
1630 000772' ALWAYS BAIN1
1631 ;BAIN FOR RECEIVE OPERATION
1632 000774' BARCV: BRWRTE IMM,D.RDP ;ADDRESS D.RDP
1633 000776' BAIN1:
1634 000776' BRWRTE BR,ADD,SP.RM0 ;BR=ADDRESS OF D.RDP OR D.XDP
1635 001000' SP BR,SELB,SP6 ;SET SP6=THAT ADDRESS
1636 001002' 10$: BRWRTE IBUS,NPR ;WAIT FOR NPR COMPLETION
1637 001004' BR0 10$
1638 001006' SP IBUS,INDAT1,SP.CS0 ;LOAD RCV CSR (XX0) INTO SP.CS0
1639
1640 ;CHECK IF THERE IS A KILL
1641
1642 001010' BRWRTE IBUS,PORT4 ;GET PORT 4 INTO BR
1643 001012' BR4 KILLAL ;BRANCH TO KILL ROUTINE
1644
1645
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 24-1
KDPMCX.MAC 30-DEC-82 03:47 BAIN-BUFFER ADDRESS IN SERVICE ROUTINE
1646 ; THIS IS A VALID BUFFER ASSIGNMENT
1647 ;(ALSO ENTRY POINT AFTER A KILL IF A NEW BUFFER IS ASSIGNED)
1648 001014' BAIN0:
1649
1650 ;CHECK IF CURRENT OR ALTERNATE OPERATION
1651 001014' BRWRTE IMM,<D.RBDF-D.RDP> ;OFFSET TO FLAG BYTE FOR CURRENT OPERATION
1652 001016' LDMA BR,ADD,SP6 ;ADDRESS FLAG BYTE
1653 001020' SPBR MEMX,SELB,SP5 ;GET FLAGS INTO BR,SP5
1654 001022' BRSHFT
1655 001024' BR4 BAALT ;CURRENT BUFFER ALREADY ASSIGNED
1656 ;CURRENT BUFFER NOT ASSIGNED,ASSIGN CURRENT BUFFER
1657 001026' MEM IMM,DR.CBA ;SET CURRENT BUFFER ASSIGNED & CLEAR
1658 ;ALL OTHER BITS IN FLAG BYTE
1659 001030' LDMA BR,SELA,SP6 ;ADDRESS D.RDP/D.XDP
1660 ;SAVE LIST ADDRESS AT CURRENT MEMORY LOCATION
1661 001032' BAIN2:
1662 001032' MEMINC IBUS,PORT1 ;ADDRESS 7:0
1663 001034' MEMINC IBUS,PORT2 ;ADDRESS 15:8
1664 001036' SP IBUS,PORT4,SP0 ;GET EXT ADDRESS
1665 001040' BRWRTE IMM,300 ;BR=MASK TO ISOLATE EXT ADDRESS
1666 001042' BRWRTE BR,AANDB,SP0 ;BR=JUST EXT ADDRESS BITS
1667 001044' BRSHFT ;SHIFT IT INTO PROPER POSITION
1668 001046' BRSHFT
1669 001050' BRSHFT
1670 001052' BRSHFT
1671 001054' MEM BR,SELB ;SAVE EXT ADDRESS
1672
1673 ;IF THE CURRENT BUFFER IS BEING ASSIGNED,DO SPECIAL THINGS
1674 001056' BRWRTE BR,TWOA,SP5 ;SP5 HAS FLG BITS
1675 001060' BR7 RQICL2 ;ALTERNATE BUFFER ASSIGNED,EXIT
1676 ;CURRENT BUFFER BEING ASSIGNED,MOVE DESCRIPTOR PARAMETRS INTO RAM
1677 001062' CALLSR SP.SB1,NXDSCP,RQICR2 ;RETURN TO IDLE THROUGH PAGE 2
1678 ;LABEL TO USE "ALWAYS NXDSCP" IN THE ABOVE MACRO AS AN INTER PAGE RETURRN
1679 001066' NXDP1=.-2
1680
1681 ;ASIGNING ALTERNATE BUFFER
1682 001070' BAALT:
1683
1684 001070' BRWRTE IMM,DR.ABA ;SET DR.ALT(=DX.ALT)BIT
1685 001072' MEM BR,AORB,SP5
1686 001074' SP MEMX,SELB,SP5 ;SET SP5=NEW FLAGS
1687 001076' BRWRTE IMM,<D.ARLP-D.RDP> ;ADDRESS ALTERNATE POINTER
1688 001100' LDMA BR,ADD,SP6
1689 001102' ALWAYS BAIN2 ;SAVE LIST POINTER IN RAM
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 25
KDPMCX.MAC 30-DEC-82 03:47 BAIN-BUFFER ADDRESS IN SERVICE ROUTINE
1691
1692 .SBTTL XMTDON - TRANSMIT DONE
1693 ; FILE DUXMIT.MAC
1694
1695 ;+
1696 ; **-XMTDON-ROUTINE TO LOOK FOR AND HANDLE A DUP TRANSMIT DONE**
1697 ;
1698 ; CALLED BY: TIMER
1699 ;
1700 ; INPUTS:
1701 ; SP0 = LOW BYTE OF DUP'S CSR0 ADDRESS
1702 ; SP1 = HIGH BYTE OF DUP'S CSR0 (CTS STATUS)
1703 ; SP.RM0-RM1 = RAM TABLE ADDRESS
1704 ; SP.CS0 = LOW BYTE OF CSR0 (CONTAINS STATE OF RTS & RECV. ENABLE)
1705 ; SP.LN = LINE NUMBER
1706 ; MAR AND SP.STS = STATUS BYTE IN LINE'S TABLE
1707 ; IN DATA ADDRESS = DUP'S CSR 0
1708 ;
1709 ; OUTPUTS:
1710 ; IN THE NORMAL CASE THE NEXT CHARACTER IS TRANSMITTED. SPECIAL
1711 ; CASES INCLUDE HANDLING SYNC TRANSMISSION, CRC TRANSMISSION
1712 ; AND ERROR CONDITIONS.
1713 ;-
1714
1715 001104' XMTDON:
1716 001104' BRWRTE SELA,SP1 ;READ THE HIGH BYTE OF CSR 0
1717 001106' BRSHFT
1718 001110' BR4 10$ ;CLEAR TO SEND IS SET
1719 001112' ALWAYS TIMRT3 ;NO, SET CHECK FOR RECEIVE DONES
1720 001114' 10$: BRWRTE IMM,4 ;PREPARE TO POINT TO CSR4
1721 001116' OUTPUT BR,ADD,IBA1 ;SET IT UP
1722 001120' BRWRTE IMM,14!DATI ;MASK TO SET EXTENDED MEMORY BITS
1723 ;AND START NPR
1724 001122' OUT BR,SELB,ONPR ;START THE NPR
1725 001124' 20$: BRWRTE IBUS,NPR ;IS THE NPR DONE YET
1726 001126' BR0 20$ ;NO, WAIT FOR IT
1727 001130' OUTPUT IBUS,IIBA1,OBA1 ;COPY INPUT ADDRESS TO OUTPUT **X1.2**
1728 001132' OUTPUT IBUS,IIBA2,OBA2 ;ADDRESS **X1.2**
1729 001134' BRWRTE IBUS,INDAT1 ;READ THE TRANSMIT CNTROL REGISTER
1730 ;
1731 ; THE FOLLOWING TRIES TO DETERMINE WHEN A DUP IS HUNG AND ALLOW PROCESSING
1732 ; TO CONTINUE. THE DUP WILL BE UNHUNG WHEN DUPTSM AND DUPSND ARE BOTH SET
1733 ; WHEN THE MODEM IS CLOCKING. THE CASE BEING LOOKED FOR HERE IS:
1734 ; (-TXACT)(-TXDONE)(-TXSEND)
1735
1736 ;(1 LINE REPLACED) **X1.2**
1737 001136' BR7 XMTDN1 ;TRANSMIT DONE SET **X1.2**
1738 001140' BR4 TIMRT3 ;SEND IS SET **X1.2**
1739 001142' BRWRTE IBUS,INDAT2 ;LOOK AT TXACT **X1.2**
1740 001144' BR1 TIMRT3 ;TXACT IS SET **X1.2**
1741 ; FALL INTO XMTDN1
1742
1743 ; TRANSMIT DONE FOUND
1744
1745 .ENABL LSB
1746 001146' XMTDN1:
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 25-1
KDPMCX.MAC 30-DEC-82 03:47 XMTDON - TRANSMIT DONE
1747 ;(2 LINES REMOVED) **X1.2**
1748 001146' SP IBUS,UBBR,SP0 ;READ THE CONTENTS OF THE BUS REQ REG
1749 001150' BRWRTE IMM,101 ;MASK TO CLEAR ALL BUT NXM AND XX4 BITS
1750 001152' SP BR,AANDB,SP0 ;CLEAR THEM
1751 001154' BRWRTE IMM,14 ;EXTENDED MEMORY BITS
1752 001156' OUT BR,AORB,OBR ;SET THEM UP
1753 001160' BRWRTE IMM,D.XSTS ;LOOK AT TRANSMIT STATUS BYTE
1754 001162' LDMA BR,ADD,SP.RM0 ; LOAD THE MAR
1755 001164' SPBR MEMX,SELB,SP0 ;READ THE BYTE
1756 001166' BR4 XMTABT ;TRANSMIT ABORT PENDING
1757 001170' BRWRTE IMM,D.XBDF ;LOOK AT TRANSMITTER FLAGS WORD
1758 001172' LDMA BR,ADD,SP.RM0 ; (LOAD MAR)
1759 001174' BRWRTE MEMX,SELB ;READ THE FLAGS WORD
1760 001176' BRSHFT ;SHIFT IT RIGHT
1761 001200' BR4 50$ ;BUFFER IS ASSIGNED
1762
1763 ; THIS DONE IS THE RESULT OF A BUFFER TERMINATING AND NO SUBSEQUENT BUFFERS ASSIGNED
1764
1765 001202' BR0 10$ ;LAST BUFFER HAD END OF MESSAGE SET
1766 001204' ALWAYS TIMRT3 ;PREVIOUS BUFFER WAS NOT THE END OF
1767 ;MESSAGE - WAIT FOR THE NEXT BUFFER
1768 ;OR AN UNDERRUN ERROR
1769 001206' 10$: BRWRTE SELA,SP.STS ;POSITION DEC-MODE BIT **X1.3**
1770 001210' BRSHFT ; **X1.3**
1771 001212' BR4 15$ ;IF SET, CLEAR RTS **X1.2**
1772 001214' ALWAYS TIMRT3 ;IF CLEAR, DON'T CLEAR RTS **X1.2**
1773 001216' 15$: SP IBUS,IOBA1,SP0 ;READ THE LOW BYTE OF OUT ADDRESS (CSR 4)
1774 001220' BRWRTE IMM,370 ;MASK TO CHANGE IT TO CSR 0
1775 001222' OUTPUT BR,AANDB,OBA1 ;MAKE IT CSR 0
1776 001224' BRWRTE IMM,377-DUPRTS ;MASK TO CLEAR RTS
1777 001226' SPBR BR,AANDB,SP.CS0 ;AND IMAGE OF CSR 0
1778 001230' OUTPUT BR,SELB,OUTDA1 ;IMAGE OF CSR 0 WITH RTS CLEAR
1779 001232' ALWAYS XMTSN0 ;START THE NPR THEN RETURN TO TIMER LOOP
1780
1781 ; BUFFER IS ASSIGNED
1782
1783 001234' XMTDN3:
1784 001234' 50$:
1785 001234' BRWRTE IBUS,INDAT1 ;READ THE TRANSMIT CNTROL REGISTER
1786 001236' BR4 55$ ;SEND SET
1787 001240' BRWRTE IBUS,INDAT2 ;GET THE BYTE CONTAINING TX ACTIVE
1788 001242' BR1 TIMRT3 ;IF SET, DON'T SET SEND YET.
1789 ;NOTE THAT THE DUP MAY GET IN AN ILLEGAL
1790 ;SET IF SEND IS DROPPED AND REASSERTED BEFORE
1791 ;TX ACTIVE CLEARS
1792 001244' SP IMM,DUPSND,SP0 ;MASK TO SET SEND
1793 001246' ALWAYS XMTSND ;"CALL" SEND ROUTINE AND RETURN TO TIMER LOOP
1794 ;
1795 ; ENTER HERE AFTER COMPLETING ONE BUFFER AND FIND ANOTHER ASSIGNED
1796 ; THE BRG CURRENTLY CONTAINS THE TRANSMIT FLAGS BYTE ROTATED
1797 ;
1798 001250' XMTDN4: BR7 TIMRT3 ;START OF MESSAGE SET - INDICATES PREVIOUS
1799 ;MESSAGE ENDED WITH AN EOF HENCE A TEOM
1800 ;HAS JUST BEEN SENT SO WAIT FOR NEXT TDONE
1801 001252' 55$: SPBR MEMX,SELB,SP0 ;READ THE FLAGS AGAIN
1802 001254' BR0 120$ ;START OF MESSAGE FLAG SET
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 25-2
KDPMCX.MAC 30-DEC-82 03:47 XMTDON - TRANSMIT DONE
1803 001256' 60$: CALLSR SP.SUB,DECNT,XMTCNT,D.XBDC ;DECREMENT THE BYTE COUNT
1804
1805 ; ABOVE SUBROUTINE RETURNS HERE IF THE BYTE COUNT WAS NOT ZERO
1806 ; IF BYTE COUNT WAS ZERO, END OF BUFFER CONDITIONS ARE CHECKED IN XMTCNT
1807
1808 001266' XMTDN2: SPBR MEMX,SELB,SP1 ;READ THE LOW BYTE OF THE ADDRESS
1809 ;AND SAVE IT IN THE BRG
1810 001270' MEMINC INCA,SP1 ;INCREMENT ADDRESS AND STORE IT BACK
1811 001272' BR0 110$ ;ODD CHARACTER (ALREADY BEEN READ)
1812 ;OTHERWISE ITS AN EVEN CHARACTER
1813
1814 ; TRANSMIT EVEN CHARACTER
1815 ; MUST READ A WORD FROM MEMORY
1816 ;
1817 ;NO NEED TO WORRY ABOUT CARRY SINCE THERE
1818 ;CAN'T BE ON AN EVEN TO ODD INCREMENT
1819 001274' OUTPUT BR,SELB,IBA1 ;BUFFER ADDRESS TO IN ADDRESS FIELD
1820 001276' OUTPUT MEMI,SELB,IBA2 ;..
1821 001300' BRWRTE IMM,14 ;MASK TO ISOLATE EXTENDED MEMORY BITS
1822 ;(3 LINES REPLACED) **X1.2**
1823 001302' SPBR BR,AANDB,SP0 ;MASK FLAGS WORD LEAVING BR == SP0 **X1.2**
1824 001304' OUT INCA,ONPR ;SET EXTENDED MEM BITS AND NPR REQUEST BIT **X1.2**
1825 001306' OUTPUT BR,AXORB,SP0,OUTDA2 ;CLEAR ALL DUP CONTROL BITS **X1.2**
1826 001310' 80$: BRWRTE IBUS,NPR ;READ THE NPR STATUS REGISTER **X1.2**
1827 001312' BR0 80$ ;NPR NOT DONE YET
1828 001314' OUTPUT IBUS,INDAT1,OUTDA1,INCMAR ;MOVE CHARACTER TO OUTDATA FIELD
1829 ;AND MOVE THE MAR TO ODD CHARACTER SAVE BYTE
1830 001316' MEM IBUS,INDAT2 ;SAVE THE ODD CHARACTER IN RAM
1831
1832 ; "RETURN" POINT FROM XMTSYN
1833 001320' WRTRT:
1834 001320' SP IBUS,IOBA1,SP0 ;READ CURRENT OUTPUT ADDRESS (CSR4)
1835 001322' BRWRTE IMM,2 ;VALUE TO ADD
1836 001324' OUTPUT BR,ADD,OBA1 ;POINT TO CSR6
1837 001326' BRWRTE IMM,DATO ;MASK TO DO OUT NPR
1838 ; THIS IS THE "RETURN" POINT FROM XMTSND AND XMTSN0
1839 001330' XMTDN6:
1840 001330' OUT BR,SELB,ONPR ;DO THE NPR
1841 001332' 90$: BRWRTE IBUS,NPR ;WAIT FOR IT TO COMPLETE
1842 001334' BR0 90$ ;NOT YET
1843 001336' ALWAYS TIMRT3 ;RETURN TO TIMER LOOP
1844
1845 ; TRANSMIT ODD DATA CHARACTER
1846 ;
1847 ; INPUTS:
1848 ; "C" BIT IS SET OR CLEAR DEPENDING ON CARRY FROM INCREMENT OF LOW BYTE
1849 ; MAR = D.XBDA+1
1850
1851 001340' 110$: C 113$ ;IF CARRY SET THEN MUST INCRMENT HIGH 10 BITS OF ADDR
1852 001342' BRWRTE IMM,0,INCMAR ;ZERO THE BRG AND POINT MAR TO D.XBDF
1853 001344' ALWAYS 116$ ;OTHERWISE NO NEED TO
1854 001346' 113$: CALLSB SP.SUB,INCMM ;INCREMENT THE BUFFER ADDRESS (HIGH 10 BITS)
1855 ;RETURNS WITH MAR POINTING TO D.XBDF
1856 001354' BRWRTE IMM,0 ;ZERO THE BRG
1857 001356' 116$: OUTPUT BR,SELB,OUTDA2,INCMAR ;CLEAR ALL DUP CONTROL BITS
1858 ;AND POINT MAR TO ODD TRANSMIT CHARACTER
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 25-3
KDPMCX.MAC 30-DEC-82 03:47 XMTDON - TRANSMIT DONE
1859 001360' OUTPUT MEMX,SELB,OUTDA1 ;MOVE THE CHARACTER TO THE OUTDATA FIELD
1860 001362' ALWAYS WRTRT ;INCREMENT OUT ADDR BY 2 (CSR6) AND DO AN
1861 ;NPR TO WRITE OUT THE CHARACTER
1862 ;RETURN TO THE TIMER LOOP
1863
1864 ; START OF MESSAGE SET
1865 ;
1866 ; BRG AND SP0 = (D.XBDF)
1867
1868 001364' 120$:
1869 001364' BR4 XMTSYN ;RESYNC REQUESTED
1870 001366' BRWRTE IBUS,INDAT2 ;READ HIGH BYTE OF CSR4
1871 001370' BR7 130$ ;UNDERRUN OCCURRED, SEND 2 SOM'S
1873 001372' MEM DECA,SP0 ;CLEAR IT
1874 001374' BRWRTE SELA,SP.STS ;GET THE STATUS BYTE
1875 001376' BRSHFT
1876 001400' BR4 60$ ;DEC MODE (DDCMP)
1877 001402' 130$:
1878 001402' BRWRTE IMM,DUPTSM ;START OF MESSAGE BIT
1879 001404' OUTPUT BR,SELB,OUTDA2 ;SET START OF MESSAGE
1880 001406' ALWAYS WRTRT ;COMMON CODE TO INCR OUT ADDR BY 2
1881 ;DO AN NPR AND RETURN TO TIMER LOOP
1882 .DSABL LSB
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 26
KDPMCX.MAC 30-DEC-82 03:47 XMTDON - TRANSMIT DONE
1884
1885 .SBTTL RCVDON-RECEIVED CHARACTER PROCESSOR
1886 ; FILE DUPRCV.MAC
1887
1888 ;+
1889 ; R E C E I V E C H A R A C T E R P R O C E S S O R
1890 ;
1891 ;
1892 ;CALLED BY: TIMER
1893 ;
1894 ;INPUTS:
1895 ; SP.RM0,SP.RM1 =ADDRESS OF CURRENT LINE TABLE
1896 ; SP.CS0 =DUP RECEIVE STATUS REGISTER
1897 ; SP.CHR =RECEIVED CHARACTER
1898 ; SP.RST =STATUS OF CHARACTER
1899 ;OUTPUTS:
1900 ; CHECKS FOR RECEIVE ERRORS, THEN BRANCHES TO A RECEIVE STATE PROCESSOR
1901 ; USING D.RPTR FROM LINE TABLE. RSTATE MACRO CHANGES STATE SETTINGS.
1902 ; RECIEVE STATE INITIALIZED BY CONTROL IN.
1903 ;-
1904
1905 001410' RCVDON:
1906 001410' BRWRTE IMM,D.STS ;OFFSET TO STATUS BYTE
1907 001412' LDMA BR,ADD,SP.RM0 ;SET UP MAR
1908 001414' LDMAP SELA,SP.RM1 ;LOAD MAR HI
1909 001416' SP MEMI,SELB,SP.STS ;SAVE STATUS BYTE IN SP
1910
1911 ; CHECK IF ANY ERROR ON RECEIVED CHARACTER
1912
1913 001420' BRWRTE BR,SELA,SP.RST ;GET HIGH BYTE OF RECEIVE BUFFER
1914 001422' BR7 DUPRER ;RECEIVE ERROR ***
1915
1916 ;CHARACTER IS ERROR FREE
1917
1918 ;DISPATCH TO THE CURRENT RECEIVE STATE PROCESSOR.
1919
1920 001424' .ALWAY MEMX,SELB,RP ;DISPATCH VIA STATE POINTER
1921
1922 ; ***NOTE: ALL STATE PROCESSORS MUST BE IN PAGE RP
1923
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 26-1
KDPMCX.MAC 30-DEC-82 03:47 BIT-STUFF PROTOCOL RECEIVE PROCESSORS
1925 .SBTTL BIT-STUFF PROTOCOL RECEIVE PROCESSORS
1926 ; FILE DUPSDLC.MAC
1927
1928 004000 RP=<.-START>&3000*4 ;PAGE ADDRESS OF RECEIVE STATE PROCESSORES
1929
1930
1931 .SBTTL RB1-BIT STUFF RECEIVE STATE ONE
1932
1933 ;+
1934 ;
1935 ; B I T S T U F F R E C E I V E S T A T E O N E
1936 ;
1937 ;ENTERED FROM: RCVDON
1938 ;
1939 ;INPUTS:
1940 ; MAR =RECEIVER STATE POINTER (D.RPTR)
1941 ;
1942 ;OUTPUTS:
1943 ; RECEIVE STATE POINTER IS SET TO STATE TWO
1944 ;-
1945
1946 .ENABL LSB ; **X1.2**
1947 001426' RB1:
1948 001426' RSTATE RB2 ;SET TO STATE 2
1949 ;(3 LINES REPLACED) **X1.2**
1950 001430' ALWAYS 10$ ;JOIN COMMON CODE CHAIN **X1.2**
1951 ; TO SILO AND RETURN TO TIMER
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 27
KDPMCX.MAC 30-DEC-82 03:47 RB1-BIT STUFF RECEIVE STATE ONE
1953
1954 .SBTTL RB2-BIT STUFF RECEIVE STATE TWO
1955
1956 ;+
1957 ;
1958 ; B I T S T U F F R E C E I V E S T A T E T W O
1959 ;
1960 ;ENTERED FROM: RCVDON
1961 ;
1962 ;INPUTS:
1963 ; MAR =RECEIVE STATE POINTER (D.RPTR)
1964 ;
1965 ;OUTPUTS:
1966 ; STATE POINTER IS SET TO STATE THREE
1967 ; CURRENT RECEIVED CHARACTER IS PUSHED INTO THE LOCAL TWO CHARACTER SILO
1968 ;-
1969
1970 001432' RB2:
1971 001432' RSTATE RB3 ;SET STATE THREE
1972 ;(2 LINES REPLACED) **X1.2**
1973 001434' 10$: BRADDR TIMRTN ;RETURN ADDRESS TO POLLING LOOP **X1.2**
1974 001436' ALWAYS 20$ ;CONTINUE DOWN COMMON RETURN CHAIN TO **X1.2**
1975 ; SILO AND TIMER
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 28
KDPMCX.MAC 30-DEC-82 03:47 RB2-BIT STUFF RECEIVE STATE TWO
1977
1978 .SBTTL RB3-BIT STUFF RECEIVE STATE THREE
1979
1980 ;+
1981 ;
1982 ; B I T S T U F F R E C E I V E S T A T E T H R E E
1983 ;
1984 ; ENTERED FROM: RCVDON
1985 ;
1986 ; INPUTS:
1987 ; MAR = RECEIVE STATE POINTER (D.RPTR)
1988 ; BR = HIGH BYTE OF CSR0 (SP.RST - RECEIVE CHARACTER STATUS)
1989 ; OUTPUTS:
1990 ; CHECK FOR END OF MESSAGE, IF END GOTO RBDONE
1991 ; ELSE STORE THE CHARACTER AND STAY IN THIS STATE
1992 ;-
1993
1994 001440' RB3:
1995
1996 ; CHECK IF END OF MESSAGE
1997
1998 001440' BR1 RBDONE ;END OF RECEIVED MESSAGE
1999
2000 ;NOT END OF RECEIVED MESSAGE
2001
2002 001442' BRADDR RB3P0 ;RETURN ADDRESS TO STORE
2003
2004 ; COMMON CODE PATHS FOR RB STATES ENTER HERE
2005
2006 001444' 20$: SP BR,SELB,SP.SUB,INCMAR ;SAVE RETURN ADDRESS
2007 ;FALL INTO LSILO
2008 .DSABL LSB ; **X1.2**
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 29
KDPMCX.MAC 30-DEC-82 03:47 RB3-BIT STUFF RECEIVE STATE THREE
2010
2011 .SBTTL LSILO-PUSH CHARACTER INTO LOCAL TWO CHARACTER SILO
2012
2013 ;+
2014 ;
2015 ; P U S H C H A R A C T E R I N T O L O C A L S I L O
2016 ;
2017 ; CALLED BY: BIT STUFF RECEIVE STATES; RB1,RB2,RB3
2018 ;
2019 ; INPUTS:
2020 ; SP.SUB=RETURN ADDRESS
2021 ; SP.CHR=CHARACTER TO BE PUSHED INTO LOCAL TWO CHARACTER SILO
2022 ; MAR = D.SADR
2023 ;
2024 ; OUTPUTS:
2025 ; CHARACTER IN SP.CHR IS PUSHED INTO SILO
2026 ; UNDERFLOW CHARACTER FROM THE SILO IS LOADED INTO SP.CHR
2027 ; IF IN CRC INHIBIT MODE,INPUT CHARACTER IS DIRECTLY STORED
2028 ; IN MEMORY.
2029 ;-
2030
2031 001446' LSILO:
2032
2033 001446' BRWRTE SELA,SP.STS,INCMAR ;GET STATUS BYTE
2034 ;MAR NOW POINTS TO D.SILO
2035 001450' BR7 STORE ;STORE CHARACTER IF CRC INHIBIT
2036 001452' SP MEMX,SELB,SP0 ;TEMPORARILY STORE TOP SILO CHR IN SP0
2037 001454' MEMINC SELA,SP.CHR ;LOAD NEW CHARACTER INTO TOP SILO POSITION
2038 001456' SP MEMX,SELB,SP.CHR ;LOAD UNDERFLOW CHR. INTO SP.CHR
2039 001460' MEM SELA,SP0 ;STORE OLD TOP CHR INTO BOTTOM POSITION IN SILO
2040 001462' RTNSUB SP.SUB,P0 ;RETURN
2041
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 30
KDPMCX.MAC 30-DEC-82 03:47 LSILO-PUSH CHARACTER INTO LOCAL TWO CHARACTER SILO
2043
2044 .SBTTL RBDONE - END OF BIT STUFF MESSAGE RECEIVED
2045
2046 ;+
2047 ;
2048 ; END OF BIT STUFF MESSAGE RECEIVED
2049 ;
2050 ; ENTERED BY: RB3
2051 ;
2052 ; INPUTS:
2053 ; MAR =RECEIVE STATE POINTER (D.RPTR)
2054 ;
2055 ; OUTPUTS:
2056 ; RECEIVE STATE POINTER RESET TO ONE
2057 ; GENERAL END OF RECEIVE MESSAGE ROUTINE CALLED
2058 ;-
2059
2060 001464' RBDONE:
2061 001464' RSTATE RB1 ;SET RECEIVE STATE 1
2062 001466' CALLSR SP.SB1,EOFMSG,TIMRP2 ;CALL END OF MESSAGE ROUTINE AND
2063 ; RETURN TO TIMER'S POLLING LOOP
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 31
KDPMCX.MAC 30-DEC-82 03:47 RBDONE - END OF BIT STUFF MESSAGE RECEIVED
2065
2066 .SBTTL DDCMP RECEIVE STATE PROCESSORS
2067 ; FILE DUPDDCMP.MAC
2068
2069 ;+
2070 ;
2071 ; D D C M P R E C E I V E S T A T E P R O C E S S O R S
2072 ;
2073 ;
2074 ; DDCMP RECEIVE STATE PROCESSORS FOR THE COMIOP-DUP FOLLOW.
2075 ;-
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 32
KDPMCX.MAC 30-DEC-82 03:47 DDCMP RECEIVE STATE PROCESSORS
2077
2078 .SBTTL RDH1-RECEIVING FIRST DDCMP HEADER CHARACTER
2079
2080
2081 ;+
2082 ; R E C E I V I N G F I R S T D D C M P C H A R A C T E R
2083 ;
2084 ; ENTERED FROM: RCVDON
2085 ;
2086 ; INPUTS:
2087 ; MAR = RECEIVE STATE POINTER (D.RPTR)
2088 ; SP.CHR = CURRENT RECEIVE CHARACTER
2089 ; SP.LN = CURRENT LINE NUMBER
2090 ; SP.CS0 = IMAGE OF LOW BYTE OF DUP'S CSR0
2091 ;
2092 ; OUTPUTS:
2093 ; RECEIVE STATE POINTER IS SET TO THE SECOND DDCMP RECEIVE STATE.
2094 ; RECEIVE STATUS BYTE D.STS IS UPDATED TO INDICATE WHETHER A
2095 ; NUMBERED MESSAGE (SOH OR DLE) OR AN UNNUMBERED MESSAGE (ENQ) IS RECEIVED.
2096 ; A CONTROL OUT IS GENERATED IF AN ILLEGAL HEADER CHARACTER IS RECEIVED.
2097 ;IF THE CHARACTER IS LEGAL, STORE ROUTINE IS CALLED TO SAVE IT IN THE USER
2098 ;RECEIVE BUFFER.
2099 ;IF THE CHARACTER IS SYNC OR PAD,RESYNC THE RECEIVER
2100 ;-
2101
2102
2103 001474' RDH1:
2104 ; SET RECEIVE STATE TWO
2105 001474' RSTATE RDH2 ;SET RECEIVE STATE TWO
2106
2107 ; SET RAM ADDRESS TO RECEIVE STATUS BYTE
2108
2109 001476' BRWRTE IMM,D.STS ;OFFSET INTO BR
2110 001500' LDMA BR,ADD,SP.RM0
2111 ;RESET SELECT,Q-SYNC,IGNORE AND NUMBERED MESSAGE BITS
2112
2113 001502' BRWRTE IMM,<377-DS.SLT-DS.QSC-DS.IGN-DS.NUM> ;MASK TO CLEAR THOSE BITS
2114 001504' MEM BR,AANDB,SP.STS ;CLEAR THOSE BITS AND SAVE
2115 001506' SP MEMX,SELB,SP.STS ;GET NEW STATUS
2116
2117 ; DETERMINE TYPE OF MESSAGE.INPUT CHARACTER IS AVAILABLE IN SP.CHR
2118
2119 001510' BRWRTE IMM,SOH ;IS IT AN SOH?
2120 001512' COMP BR,SP.CHR
2121 001514' Z 10$ ;YES,NUMBERED MESSAGE
2122
2123 001516' BRWRTE IMM,ENQ ;IS IT AN ENQ?
2124 001520' COMP BR,SP.CHR
2125 001522' Z STORE ;YES,UNNUMBERED MESSAGE
2126
2127 001524' BRWRTE IMM,DLE ;IS IT A DLE?
2128 001526' COMP BR,SP.CHR
2129 001530' Z 10$ ;YES,MAINTAINANCE (NUMBERED) MESSAGE
2130
2131 ; UNRECOGNIZED START OF HEADER CHARACTER - JUST RESYNC
2132
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 32-1
KDPMCX.MAC 30-DEC-82 03:47 RDH1-RECEIVING FIRST DDCMP HEADER CHARACTER
2133 001532' ALWAYS RSNCRT ;RESYNC AND RETURN TO TIMER
2134
2135 ;A NUMBERED MESSAGE IS BEING RECEIVED(SOH OR DLE). SET 'NUMBERED MESSAGE
2136 ;BEING RECEIVED' IN D.STS
2137
2138 001534' 10$:
2139 001534' BRWRTE IMM,DS.NUM ;MASK TO SET IT
2140 ;(2 LINES REPLACED) **X1.2**
2141 001536' ALWAYS RDH6A ;JOIN COMMON CODE TO OR IT INTO D.STS **X1.2**
2142 ; AND STORE CURRENT CHARACTER **X1.2**
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 33
KDPMCX.MAC 30-DEC-82 03:47 RDH1-RECEIVING FIRST DDCMP HEADER CHARACTER
2144
2145 .SBTTL RDH2-RECEIVING SECOND DDCMP HEADER CHARACTER
2146
2147 ;+
2148 ;
2149 ; R E C E I V I N G S E C O N D D D C M P C H A R A C T E R
2150 ;
2151 ; ENTERED FROM: RCVDON
2152 ;
2153 ; INPUTS:
2154 ; MAR = RECEIVE STATE POINTER (D.RPTR)
2155 ; SP.CHR = RECEIVED CHARACTER
2156 ;
2157 ; OUTPUTS:
2158 ; RECEIVE STATE POINTER IS CHANGED TO RECEIVE STATE THREE. CURRENT
2159 ; RECEIVED CHARACTER (LOW ORDER BYTE COUNT IN THE CASE OF A NUMBERED
2160 ; MESSAGE) IS SAVED IN D.DCC1. STORE ROUTINE IS CALLED TO STORE THE CURRENT
2161 ; RECEIVED CHARACTER IN THE USER RECEIVE BUFFER
2162 ;-
2163
2164 001540' RDH2:
2165
2166 ; UPDATE RECEIVE STATE POINTER TO STATE THREE
2167
2168 001540' RSTATE RDH3
2169
2170 ; SAVE CHARACTER COUNT (TYPE IF UNNUMBERED MESSAGE) IN D.DCC1
2171
2172 001542' BRWRTE IMM,D.DCC1 ;ADDRESS D.DCC1
2173 001544' LDMA BR,ADD,SP.RM0
2174 001546' MEM SELA,SP.CHR ;CURRENT CHARACTER AVAILABLE IN SP.CHR
2175
2176 ; STORE CURRENT RECEIVED CHARACTER IN USER BUFFER
2177
2178 001550' ALWAYS STORE
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 34
KDPMCX.MAC 30-DEC-82 03:47 RDH2-RECEIVING SECOND DDCMP HEADER CHARACTER
2180
2181 .SBTTL RDH3-RECEIVING THIRD DDCMP HEADER CHARACTER
2182
2183 ;+
2184 ;
2185 ; R E C E I V I N G T H I R D D D C M P C H A R A C T E R
2186 ;
2187 ; ENTERED FROM: RCVDON
2188 ;
2189 ; INPUTS:
2190 ; MAR = RECEIVE STATE POINTER (D.RPTR)
2191 ; SP.CHR = RECEIVED CHARACTER
2192 ;
2193 ; OUTPUTS:
2194 ; RECEIVE STATE POINTER IS CHANGED TO STATE FOUR OF DDCMP RECEIVE PROCESSOR.
2195 ; HIGH ORDER SIX BITS OF THE CHARACTER COUNT (MEANINGFUL ONLY TO
2196 ; NUMBERED MESSAGES) ARE STORED IN D.DCC2. Q-SYNC AND SELECT BITS ARE UPDATED
2197 ; IN D.STS.
2198 ;-
2199
2200 001552' RDH3:
2201
2202 ; SET RECEIVE STATE POINTER TO STATE FOUR
2203
2204 001552' RSTATE RDH4
2205
2206 ; SAVE HIGH ORDER SIX BITS OF BYTE COUNT (NOT MEANINGFUL FOR UNNUMBERED MESSAGE)
2207
2208 001554' BRWRTE IMM,D.DCC2 ;ADDRESS D.DCC2
2209 001556' LDMA BR,ADD,SP.RM0
2210 001560' BRWRTE IMM,77 ;MASK TO STRIP HIGH ORDER 2 BITS
2211 001562' MEM BR,AANDB,SP.CHR ;STRIP THEM FROM CURRENT CHR AND STORE IN RAM
2212
2213 ; UPDATE SELECT AND Q-SYNC BITS IN D.STS
2214
2215 001564' SP BR,AANDB,SP.STS ;STRIP OLD SEL. Q-SYNC BITS IN SP.STS
2216 001566' BRWRTE IMM,D.STS ;ADDRESS D.STS
2217 001570' LDMA BR,ADD,SP.RM0
2218 001572' BRWRTE IMM,300 ;MASK TO ISOLATE NEW SELECT,Q-SYNC BITS
2219 001574' BRWRTE BR,AANDB,SP.CHR ;GET NEW BITS INTO BR
2220 ;(2 LINES REPLACED) **X1.2**
2221
2222 ; STORE CURRENT RECEIVED CHARACTER IN USER RECEIVE BUFFER AND **X1.2**
2223 ; UPDATE STATUS. **X1.2**
2224
2225 001576' ALWAYS RDH6A ; **X1.2**
2226
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 35
KDPMCX.MAC 30-DEC-82 03:47 RDH3-RECEIVING THIRD DDCMP HEADER CHARACTER
2228
2229 .SBTTL RDH4-RECEIVING FOURTH DDCMP HEADER CHARACTER
2230
2231 ;+
2232 ;
2233 ; R E C E I V I N G F O U R T H D D C M P C H A R A C T E R
2234 ; (RESPONSE FIELD)
2235 ;
2236 ; ENTERED FROM: RCVDON
2237 ;
2238 ; INPUTS:
2239 ; MAR = RECEIVE STATE POINTER (D.RPTR)
2240 ; SP.CHR = RECEIVED CHARACTER
2241 ;
2242 ; OUTPUTS:
2243 ; RECEIVE STATE POINTER IS CHANGED TO STATE FIVE OF RECEIVE PROCESSOR.
2244 ; THE CURRENT CHARACTER (RESPONSE FIELD) IS STORED IN USER RECEIVE BUFFER.
2245 ;-
2246
2247 001600' RDH4:
2248
2249 ; SET RECEIVE STATE POINTER TO STATE FIVE
2250
2251 001600' RSTATE RDH5
2252
2253 ; STORE CURRENT CHARACTER (RESPONSE FIELD) IN USER RECEIVE BUFFER
2254
2255 001602' ALWAYS STORE
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 36
KDPMCX.MAC 30-DEC-82 03:47 RDH4-RECEIVING FOURTH DDCMP HEADER CHARACTER
2257
2258 .SBTTL RDH5-RECEIVING FIFTH DDCMP HEADER CHARACTER
2259
2260 ;+
2261 ;
2262 ; R E C E I V I N G F I F T H D D C M P C H A R A C T E R
2263 ; (MESSAGE NUMBER FIELD)
2264 ;
2265 ; ENTERED FROM: RCVDON
2266 ;
2267 ; INPUTS:
2268 ; MAR = RECEIVE STATE POINTER (D.RPTR)
2269 ; SP.CHR = RECEIVED CHARACTER
2270 ;
2271 ; OUTPUTS:
2272 ; RECEIVE STATE POINTER IS SET TO STATE SIX. CURRENT CHARACTER (MESSAGE
2273 ; NUMBER FIELD) IS STORED IN THE USER RECEIVE BUFFER.
2274 ;-
2275
2276 001604' RDH5:
2277
2278 ; SET RECEIVE STATE POINTER TO STATE SIX
2279
2280 001604' RSTATE RDH6
2281
2282 ;STORE CURRENT CHARACTER (MESSAGE NUMBER) IN USER BUFFER
2283
2284 001606' ALWAYS STORE
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 37
KDPMCX.MAC 30-DEC-82 03:47 RDH5-RECEIVING FIFTH DDCMP HEADER CHARACTER
2286
2287 .SBTTL RDH6-RECEIVING SIXTH DDCMP HEADER CHARACTER
2288
2289 ;+
2290 ;
2291 ; R E C E I V I N G S I X T H D D C M P C H A R A C T E R
2292 ; (STATION ADDRESS FIELD)
2293 ;
2294 ; ENTERED FROM: RCVDON
2295 ;
2296 ; INPUTS:
2297 ; MAR = RECEIVE STATE POINTER (D.RPTR)
2298 ; SP,CHR = RECEIVES CHARACTER
2299 ;
2300 ; OUTPUTS:
2301 ; RECEIVE STATE POINTER IS SET TO PROCESS FIRST HEADER CRC CHARACTER.
2302 ; IF THE USER STATION IS A SECONDARY STATION AND THERE IS AN ADDRESS MISMATCH,
2303 ; THE IGNORE BIT IS SET IN D.STS.
2304 ;-
2305
2306 001610' RDH6:
2307
2308 ;SET RECEIVE STATE POINTER TO PROCESS FIRST HEADER CRC
2309
2310 001610' RSTATE RHCRC1
2311
2312 ;CHECK IF SECONDARY STATION
2313
2314 001612' BRWRTE SELA,SP.STS,INCMAR ;LOAD D.STS INTO BR AND ADDRESS D.SADR
2315 001614' BRSHFT ;SHIFT IT RIGHT
2316 001616' BR1 10$ ;BRANCH IF SECONDARY STATION
2317
2318 ; CURRENT STATION IS NOT A SECONDARY STATION, NO ADDRESS CHECKING NECESSARY
2319
2320 001620' ALWAYS STORE ;STORE CHARACTER IN REC BUFFER
2321
2322 ; CURRENT STATION IS A SECONDARY STATION.
2323
2324 001622' 10$:
2325
2326 ;CHECK IF ADDRESS MATCH (MAR MUST NOW BE POINTING AT D.SADR)
2327 001622' COMP MEMX,SP.CHR ;ADDRESS MATCH?
2328 001624' Z STORE ;YES,STORE THE CHARACTER
2329
2330 ; STATION IS A SECONDARY STATION, BUT IS NOT ADDRESSED
2331 ; SET IGNORE MODE
2332
2333 001626' BRWRTE IMM,D.STS ;ADDRESS STATUS BYTE
2334 001630' LDMA BR,ADD,SP.RM0
2335 001632' BRWRTE IMM,DS.IGN ;MASK TO SET IGNORE MODE
2336 ;(1 LINE REPLACED) **X1.2**
2337
2338 ; COMMON PATH TO UPDATE SP.STS AND STORE CHARACTER **X1.2**
2339
2340 001634' RDH6A: MEM BR,AORB,SP.STS ;WRITE IT BACK INTO RAM **X1.2**
2341 001636' ALWAYS STORE ;STORE CURRENT CHARACTER
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 38
KDPMCX.MAC 30-DEC-82 03:47 RDH6-RECEIVING SIXTH DDCMP HEADER CHARACTER
2343
2344 .SBTTL RHCRC1-RECEIVING FIRST DDCMP HEADER CRC
2345
2346 ;+
2347 ;
2348 ; R E C E I V I N G F I R S T D D C M P H E A D E R C R C
2349 ;
2350 ; ENTERED FROM: RCVDON
2351 ;
2352 ; INPUTS:
2353 ; MAR = RECEIVE STATE POINTER (D.RPTR)
2354 ;
2355 ; OUTPUTS:
2356 ; RECEIVE STATE POINTER IS SET TO PROCESS SECOND DDCMP HEADER
2357 ; CRC CHARACTER.
2358 ;-
2359
2360 001640' RHCRC1:
2361
2362 ;SET RECEIVE STATE POINTER TO RECEIVE SECOND DDCMP HEADER CRC
2363
2364 001640' RSTATE RHCRC2
2365
2366 ; ** PAGE ONE RETURN TO TIMER FOR RECEIVE ROUTINES **
2367
2368 001642' TIMRP1: ALWAYS TIMRTN ;RETURN TO THE TIMER LOOP
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 39
KDPMCX.MAC 30-DEC-82 03:47 RHCRC1-RECEIVING FIRST DDCMP HEADER CRC
2371
2372 .SBTTL RHCRC2-RECEIVING SECOND DDCMP HEADER CRC
2373
2374 ;+
2375 ;
2376 ; R E C E I V I N G S E C O N D D D C M P H E A D E R C R C
2377 ;
2378 ; ENTERED FROM: RCVDON
2379 ;
2380 ; INPUTS:
2381 ; MAR = RECEIVE STATE POINTER (D.RPTR)
2382 ; BR = HIGH BYTE OF CSR 2 (SP.RST - RECEIVE CHARACTER STATUS)
2383 ;
2384 ; OUTPUTS:
2385 ; DUP HAS RECEIVED SECOND HEADER CRC CHAR.
2386 ; CHECK IF HEADER CRC IS VALID, IF NOT POST ERROR CNTRL OUT.
2387 ; IF THIS IS AN UNNUMBERED MESG, PROCESS NOW.
2388 ; ELSE (NUMBERED OR MAINT), STATE IS SET TO RECEIVE DATA.
2389 ;-
2390
2391 001644' RHCRC2:
2392
2393 ; SET RECEIVE STATE POINTER TO RECEIVE DDCMP DATA
2394
2395 001644' RSTATE RDDATA
2396
2397 ; CHECK IF THERE IS A CRC ERROR
2398
2399 001646' BR4 10$ ;CRC=0,MESSAGE IS OK
2400 001650' ALWAYS ERR10 ;***CRC ERROR***
2401
2402 ;CHECK IF THE CURRENT MESSAGE IS A NUMBERED MESSAGE
2403
2404 001652' 10$:
2405 001652' BRWRTE SELA,SP.STS ;LEFT SHIFT D.STS AND LOAD INTO BR
2406 001654' BR0 TIMRTN ;RECEIVING NUMBERED MESSAGE
2407 ;RETURN TO TIMER
2408
2409 ;RECEIVING UNNUMBERED MESSAGE
2410
2411 001656' ALWAYS MSGIN ;PROCESS ONE MESSAGE
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 40
KDPMCX.MAC 30-DEC-82 03:47 RHCRC2-RECEIVING SECOND DDCMP HEADER CRC
2413
2414 .SBTTL RDDATA-RECEIVING DDCMP DATA CHARACTERS
2415
2416 ;+
2417 ;
2418 ; R E C E I V I N G D D C M P D A T A C H A R A C T E R S
2419 ;
2420 ; ENTERED FROM: RCVDON
2421 ;
2422 ; INPUTS:
2423 ; MAR = RECEIVE STATE POINTER (D.RPTR)
2424 ;
2425 ; OUTPUTS:
2426 ; THE DATA BYTE COUNT IS DECREMENTED.
2427 ; IF ALL DATA IS RECEIVED, THIS IS THE FIRST CRC CHAR.
2428 ; OTHERWISE, STORE THE DATA IN BUFFER IF FOR THIS STATION.
2429 ;-
2430
2431 001660' RDDATA:
2432
2433 ;CHECK IF LAST DDCMP DATA CHARACTER
2434
2435 001660' CALLSR SP.SUB,DECDCC,DECP2 ;DECREMENT DDCMP DATA CHARACTER COUNT
2436 001666' RDATA1:
2437 001666' C 10$ ;BRANCH IF COUNT NOT -1
2438
2439 ;CURRENT CHARACTER IS THE FIRST DDCMP DATA CRC CHARACTER
2440
2441 001670' ALWAYS RDCRC1
2442
2443
2444 ; STORE CURRENT DATA CHARACTER IN USER RECEIVE BUFFER IF THE CURRENT MESSAGE
2445 ;IS ADDRESSED TO THIS STATION.
2446
2447 001672' 10$:
2448 001672' BRWRTE SELA,SP.STS ;GET SP.STS(=D.STS)
2449 001674' BR4 TIMRTN ;MESSAGE NOT FOR THIS STATION
2450
2451 ; DATA CHARACTER IS PART OF A NUMBERED MESSAGE ADDRESSED TO THIS STATION,SAVE IT
2452
2453 001676' ALWAYS STORE
2454
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 41
KDPMCX.MAC 30-DEC-82 03:47 RDDATA-RECEIVING DDCMP DATA CHARACTERS
2456
2457 .SBTTL RDCRC1-RECEIVING FIRST DDCMP DATA CRC
2458
2459 ;+
2460 ;
2461 ; R E C E I V I N G F I R S T D D C M P D A T A C R C
2462 ;
2463 ; ENTERED FROM: RDDATA
2464 ;
2465 ; INPUTS:
2466 ;
2467 ; OUTPUTS:
2468 ; RECEIVE STATE POINTER IS SET TO PROCESS SECOND DATA CRC
2469 ;-
2470
2471 001700' RDCRC1:
2472
2473 ;SET RECEIVE STATE POINTER TO SECOND DATA CRC PROCESSOR
2474
2475 001700' BRWRTE IMM,D.RPTR ;ADDRESS D.RPTR (SINCE IT WAS CHANGED IN
2476 001702' LDMA BR,ADD,SP.RM0 ;THE PREVIOUS STATE)
2477 001704' RSTATE RDCRC2
2478 001706' ALWAYS TIMRTN ;RETURN TO TIMER
2479
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 42
KDPMCX.MAC 30-DEC-82 03:47 RDCRC1-RECEIVING FIRST DDCMP DATA CRC
2481
2482 .SBTTL RDCRC2-RECEIVING SECOND DATA CRC
2483
2484 ;+
2485 ;
2486 ; R E C E I V I N G S E C O N D D A T A C R C
2487 ;
2488 ; ENTERED FROM: RCVDON
2489 ;
2490 ; INPUTS:
2491 ; BR = HIGH BYTE OF CSR2 (SP.RST - RECEIVE CHARACTER STATUS)
2492 ; OUTPUTS:
2493 ; IF A CRC ERROR IS DETECTED ON THE CURRENT MESSAGE,A CONTROL OUT IS GENERATED.
2494 ; IF THE MESSAGE IS GOOD, MSGIN ROUTINE IS EXECUTED TO PROCESS IT
2495 ;-
2496
2497 001710' RDCRC2:
2498
2499 ; CHECK FOR CRC ERROR
2500
2501 001710' BR4 MSGIN ;CRC OK,USE COMMON CODE
2502 001712' ALWAYS ERR12 ;***CRC ERROR ON DATA***
2503
2504
2505 ;+
2506 ;
2507 ; RETURN TO TIMER LOOP FROM RECEIVE STORE ROUTINES
2508 ;
2509 ; ENTERED FROM: RCVEXT (SUBR RETURN)
2510 ;
2511 ; INPUTS:
2512 ; NPR STARTED EARLIER IN STORE RECVD CHAR ROUTINES
2513 ;
2514 ; OUTPUTS:
2515 ; WAIT FOR NPR TO COMPLETE AND RETURN TO TIMER
2516 ;-
2517
2519 001714' NPRWP1:
2520 001714' BRWRTE IBUS,NPR ;READ NPR CONTROL REGISTER
2521 001716' BR0 NPRWP1 ;NOT DONE YET
2522 001720' ALWAYS TIMRTN ;RETURN TO TIMER LOOP
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 43
KDPMCX.MAC 30-DEC-82 03:47 RDCRC2-RECEIVING SECOND DATA CRC
2524
2525 .SBTTL DSRCHG-DATA SET READY CHANGE
2526
2527 ;+
2528 ; **DSRCHG-ROUTINE TO GIVE A DATA SET READY CHANGE CONTROL OUT**
2529 ;
2530 ; CALLED BY: TIMER
2531 ;
2532 ; INPUTS:
2533 ; SP0 = IMAGE OF DUP'S CSR 1 (DSR=BIT 1)
2534 ; MAR = D.STS
2535 ;
2536 ; OUTPUTS:
2537 ; MAR = D.STS
2538 ; D.STS (BIT 1) = CURRENT SETTING OF DSR
2539 ;-
2540 001722' DSRCHG:
2542 001722' SP IMM,DS.DSR,SP2 ;GET MASK FOR DSR INTO SP2
2543 001724' MEM MEMX,AXORB,SP2 ;RECORD THE CURRENT STATE OF DSR
2544 ;IF IT WAS SET CLEAR IT, IF IT WAS CLEAR
2545 ;SET IT
2546 001726' CALLSR SP.SUB,COUTX,TIMRP3,ER.DSR ;QUEUE A CONTROL OUT AND
2547 ;RETURN TO TIMER LOOP
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 44
KDPMCX.MAC 30-DEC-82 03:47 DSRCHG-DATA SET READY CHANGE
2549
2550 .SBTTL MSGIN-DDCMP MESSAGE PROCESSOR
2551
2552 ;+
2553 ;
2554 ; D D C M P M E S S A G E I N
2555 ;
2556 ; ENTERED FROM: RDCRC2(NUMBERED), RHCRC2(UNNUMBERED)
2557 ;
2558 ; A COMPLETE DDCMP MESSAGE (NUMBERED OR UNNUMBERED) HAS BEEN RECEIVED WITHOUT
2559 ; A CRC ERROR.PROCESS IT.
2560 ;
2561 ; INPUTS:
2562 ; MAR = RECEIVE STATE POINTER (D.RPTR)
2563 ;
2564 ; OUTPUTS:
2565 ; RECEIVE STATE RESET TO FIRST HEADER CHAR.
2566 ; IF MESG IS FOR US, POST A BA OUT.
2567 ; ELSE, RESET BUFFER POINTERS IN LINE TABLE.
2568 ;-
2569
2570 001736' MSGIN:
2571
2572 ; INITIALIZE RECEIVE STATE POINTER
2573 001736' RSTATE RDH1
2574
2575 ; CHECK IF THIS MESSAGE IS TO BE IGNORED
2576 001740' BRWRTE SELA,SP.STS ;SET BR=SP.STS
2577 001742' BR4 10$ ;IGNORE CURRENT MESSAGE
2578
2579 ; MESSAGE IS WITHOUT ERROR AND ADDRESSED TO THIS STATION. GENERATE A BA OUT
2580
2581 001744' CALLSR SP.SB1,EOFMSG,MSGIN1 ;POST THE COMPLETION AND RETURN TO MSGIN1
2582
2583 ;CURRENT MESSAGE IS NOT FOR THIS STATION,IGNORE IT
2584
2585 001752' 10$:
2586 ; RECEIVE BUFFER ADDRESS AND BYTE COUNT WAS ADVANCED AT THE BEGINNING OF
2587 ;THIS MESSAGE, RESET IT.
2588 001752' BRWRTE IMM,D.ORBC ;ADDRESS D.ORBC
2589 001754' LDMA BR,ADD,SP.RM0
2590
2591 ;SAVE ORIGINAL PARAMETERS IN SCRATCH PADS
2592 001756' SP MEMI,SELB,SP2 ;SAVE ORIGINAL BYTE COUNT IN SP2,3
2593 001760' SP MEMI,SELB,SP3
2594 001762' SP MEMI,SELB,SP4 ;SAVE ORIGINAL ADDRESS IN SP4,SP5&SP0
2595 001764' SP MEMI,SELB,SP5
2596 001766' SP MEMI,SELB,SP0
2597 ;*** -5 V1.1
2598 ;RESTORE THEM INTO CURRENT PARAMETERS USING NXDSCP CODE ;*** +1 V1.1
2599 001770' BRWRTE IMM,D.RDP ;SET UP SP6 FOR NXDSCP ;*** +1 V1.1
2600 001772' BRWRTE BR,ADD,SP.RM0 ; ;*** +1 V1.1
2601 001774' SP BR,SELB,SP6 ; ;*** +1 V1.1
2602 001776' CALLSB SP.SB1,NXDSC1 ; ;*** +1 V1.1
2603
2604 ;CHECK IF Q-SYNC BIT SET
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 44-1
KDPMCX.MAC 30-DEC-82 03:47 MSGIN-DDCMP MESSAGE PROCESSOR
2605
2607 002004' MSGIN1:
2608 002004' BRWRTE TWOA,SP.STS ;READ STATUS REGISTER
2609 ;(2 LINES REPLACED) **X1.2**
2610 002006' BR7 RSNCRT ;RESYNC RECEIVER AND RETURN TO TIMER **X1.2**
2611 002010' ALWAYS TIMRTN ;RETURN TO TIMER **X1.2**
2612
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 45
KDPMCX.MAC 30-DEC-82 03:47 MSGIN-DDCMP MESSAGE PROCESSOR
2614
2615 .SBTTL KILLAL-KILL XMT OT RCV OPERATION
2616
2617 ;+
2618 ;
2619 ; KILL RECEIVE OR TRANSMIT BUFFERS
2620 ;
2621 ; CALLED BY: BAIN
2622 ;
2623 ; INPUTS:
2624 ; BSEL2<2> (OCON) =IN I/O (1=RECV, 0=XMIT)
2625 ; BSEL7<5> (PORT4)=KILL ASSIGN
2626 ;
2627 ; OUTPUTS:
2628 ; DEASSIGNS EITHER TRANSMIT OF RECEIVE BUFFERS DEPENDING ON THE IN I/O BIT.
2629 ; IF ASSIGNMENT IS REQUESTED(KILL ASSGN), BAIN IS RETURNED TO .
2630 ; ELSE IT RETURNS DIRECTLY TO RDICLR.
2631 ;-
2632
2633 002012' KILLAL:
2634
2635 ;DETERMINE WHETHER THE TRANSMIT OR RECEIVE OPERATION IS TO BE KILLED
2636
2637 002012' BRWRTE IBUS,OCON ;GET BSEL2
2638 002014' BRSHFT
2639 002016' BR1 KILLRC ;KILL RECEIEV OPERATION
2640
2641 ;KILL TRANSMIT OPERATION
2642
2643 002020' KILLXM:
2644 002020' BRWRTE IMM,D.XSTS ;POINT TO TRANSMIT STATUS BYTE
2645 002022' LDMA BR,ADD,SP.RM0 ; LOAD THE MAR
2646 ;(1 LINE REMOVED) **X1.2**
2647 002024' MEM IMM,DT.ABT!DT.AB1 ;SET ABORT PENDING FLAGS
2648 ;(1 LINE REMOVED) **X1.2**
2649 002026' BRWRTE IMM,C.CLOX ;SET CONTROL OUT FOR XMT
2650 002030' ALWAYS KILCOM ;USE COMMON CODE
2651
2652 ;KILL RECEIVE OPERATION
2653
2654 002032' KILLRC:
2655 002032' CALLSB SP.SB1,RESYNC ;RESYNC RECEIVER
2656 002040' BRWRTE IMM,C.CLOR ;SET CONTROL OUT FOR RECEIVE
2657
2658 002042' KILCOM:
2659 002042' SP BR,SELB,SP2 ;SAVE BSEL2 IMAGE
2660 002044' BRWRTE IMM,ER.KIL ;REASON CODE 'KILL'
2661 002046' SP BR,SELB,SP3 ;INTO SP3
2662 002050' CALLSB SP.SB1,COUT ;QUEUE CONTROL OUT
2663 ;*****FOLLWING INSTRUCTION MUST BE IN PAGE 2 DUE TO RETURN FROM COUT****
2664 002056' KILLC1:
2665 002056' BRWRTE IMM,<D.RBDF-D.RDP> ;ADDRESS FLAGS BYTE
2666 002060' LDMA BR,ADD,SP6
2667 002062' MEM IMM,<DX.EOM!DX.LST> ;CLEAR ALL BUFFER ASSIGN FLAGS
2668 002064' BRWRTE IBUS,PORT4 ;GET NEW PORT4 BACK
2669 002066' BRSHFT
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 45-1
KDPMCX.MAC 30-DEC-82 03:47 KILLAL-KILL XMT OT RCV OPERATION
2670 002070' BR4 BAIN0 ;NEW BUFFER ASSIGNED
2671 002072' RQICR2: ALWAYS RQICL2 ;NO NEW BUFFER
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 46
KDPMCX.MAC 30-DEC-82 03:47 KILLAL-KILL XMT OT RCV OPERATION
2673
2674 ;******FOLLOWING INSTRUCTIONS MUST RESIDE IN PAGE TWO SINCE IT IS USED BY
2676 ; CERTAIN SUBROUTINES TO RETURN TO THE PROPER PAGE OF CALLER******
2677
2678 ;RETURN TO TIMER FROM RECEIVE ROUTINES
2679 002074' TIMRP2: ALWAYS TIMRTN
2680
2681 ;RETURN FROM CONTROL OUT DUE TO A CALL FROM RERROR
2682 002076' RERRP2: ALWAYS ERREXT
2683
2684 ;A RETURN FROM DECDCC DUE TO A CALL FROM RDDATA
2685 002100' DECP2: ALWAYS RDATA1
2686
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 47
KDPMCX.MAC 30-DEC-82 03:47 KILLAL-KILL XMT OT RCV OPERATION
2689
2690 .SBTTL XMTSYN - TRANSMIT SYNC'S OR ZERO BITS
2691 ; FILE XMTAUX.MAC
2692
2693 ;+
2694 ; **XMTSYN-RESYNC TRANSMITTER REQUESTED**
2695 ;
2696 ; CALLED BY: XMTDON
2697 ;
2698 ; INPUTS:
2699 ; OUTPUT NPR ADDRESS = DUP'S CSR4
2700 ; SP0 = FLAGS BYTE OF XMIT DESCRIPTOR
2701 ; MAR = FLAGS BYTE OF XMIT DESCRIPTOR
2702 ;
2703 ; OUTPUTS:
2704 ; BIT STUFF MODE - 16 ZERO BITS ARE TRANSMITTED
2705 ; DEC MODE - SYNC CHARACTERS ARE TRANSMITTER
2706 ;-
2707
2708 002102' XMTSYN:
2709 002102' BRWRTE SELA,SP.STS ;GET THE STATUS BYTE
2710 002104' BRSHFT ;SHIFT THE STATUS RIGHT
2711 002106' BR4 80$ ;DEC MODE (DDCMP)
2712 002110' BRWRTE IMM,0 ;ZERO THE BRG
2713 002112' OUTPUT BR,SELB,OUTDA1 ;ZERO THE LOW BYTE OF OUT DATA
2714 002114' OUTPUT IMM,DUPTSM!DUPTEM,OUTDA2 ;SET BOTH START OF MESSAGE AND END OF ME
2715 002116' 75$: BRWRTE IMM,377-DX.SYN ;MASK TO CLEAR RESYNC FLAG
2716 002120' MEM BR,AANDB,SP0 ;CLEAR IT AND WRITE NEW FLAGS WORD TO RAM
2717 002122' ALWAYS WRTRT ;INCREMENT OUTPUT ADDRESS BY 2,
2718 ;DO AN NPR AND RETURN TO TIMER LOOP
2719
2720 002124' 80$: BRWRTE IMM,SYNC ;GET SYNC CHARACTER
2721 002126' OUTPUT BR,SELB,OUTDA1,INCMAR ;WRITE IT TO LOW BYTE OF OUT DATA
2722 002130' BRWRTE IMM,DUPTSM ;START OF MESSAGE BIT
2723 002132' OUTPUT BR,SELB,OUTDA2,INCMAR ;WRITE IT TO HIGH BYTE
2724 ;MAR IS NOW AT D.SYNC (SYNC COUNTER)
2725 002134' SP MEMX,SELB,SP1 ;READ SYNC COUNTER INTO THE SCRATCH PAD
2726 002136' MEM DECA,SP1 ;DECREMENT THE COUNT
2727 002140' C WRTRT ;COUNT NOT ZERO YET - DO THE NPR
2728 ;AND RETURN TO THE POLLING LOOP
2729 002142' BRWRTE IMM,D.XBDF ;ADDRESS OF FLAGS BYTE IN XMIT DESCRIPTOR
2730 002144' LDMA BR,ADD,SP.RM0 ;RESET THE MAR TO FLAGS BYTE
2731 002146' ALWAYS 75$ ;CLEAR RESYNC FLAG
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 48
KDPMCX.MAC 30-DEC-82 03:47 XMTSYN - TRANSMIT SYNC'S OR ZERO BITS
2733
2734 .SBTTL XMTCNT - DECREMENT TRANSMIT BYTE COUNT
2735
2736 ;+
2737 ; **XMTCNT-DECREMENT XMIT COUNT RETURN
2738 ; **XMTBCZ-ZERO BYTE COUNT**
2739 ;
2740 ; CALLED BY: XMTDON
2741 ;
2742 ; INPUTS:
2743 ; INPUT AND OUTPUT ADDRESS = DUP'S CSR 4
2744 ; SP0 = D.XBDF (FLAGS BYTE)
2745 ;
2746 ; OUTPUTS:
2747 ; RETURN TO XMTDON IF BYTE COUNT NOT ZERO.
2748 ; ELSE: UNDERRUN CHECKED
2749 ; EOM SENT IF SET IN BUFFER DESC
2750 ; BUFFER ADDR OUT QUEUED.
2751 ; IF ANOTHER BUFFER IS THERE, RETURN TO XMTDON TO XMIT
2752 ; ELSE, RETURN TO TIMER
2753 ;-
2754
2755 ; THE LABEL XMTCNT MUST RESIDE IN PAGE 2
2757
2758 ; TRANSMIT DECREMENT COUNT ROUTINE RETURNS HERE
2759 002150' XMTCNT: C XMTDN2 ;BYTE COUNT NOT ZERO
2760 ;BYTE COUNT ZERO - FALL INTO XMTBCZ
2761 .ENABLE LSB
2762 002152' XMTBCZ:
2763 002152' BRWRTE IBUS,INDAT2 ;READ HIGH BYTE OF CSR4
2764 002154' BR7 XMTUNR ;UNDERRUN
2765 002156' BRWRTE BR,SELA!SP0 ;READ THE FLAGS WORD INTO THE BRG
2766 002160' BR1 160$ ;END OF MESSAGE SET
2767 002162' XMTBC0:
2768 002162' 100$: CALLSB SP.SB1,BAOX ;DO A BUFFER ADDRESS OUT COMPLETION
2769 ;***NOTE*** BAOX MUST NOT DESTROY THE
2770 ;OUTPUT BUFFER ADDRESS CURRENTLY SET AT
2771 ;THE DUP'S CSR 4 OR 6
2772 002170' XMTBC1:
2773 002170' BRWRTE IMM,374 ;RESET OUT BA TO POINT TO CSR4
2774 002172' SP IBUS,IOBA1,SP0 ;READ OLD BA WHICH WAS CSR4 OR 6
2775 002174' OUTPUT BR,AANDB,OBA1 ;SET CSR4 OFFSET
2776 002176' BRWRTE IMM,D.XBDF ;ADDRESS OF TRANSMIT FLAGS WORD
2777 002200' LDMA BR,<ADD!SP.RM0> ;POINT TO FLAGS WORD
2778 002202' SPBR MEMX,SELB,SP0 ;READ THE FLAGS WORD TO THE BRG
2779 002204' BROTAT ;ROTATE IT RIGHT
2780 002206' BR4 XMTDN4 ;ANOTHER BUFFER - SEND NEXT CHARACTER
2781
2782 ; NO MORE BUFFER'S ASSIGNED. IF THE PREVIOUS BUFFER HAD THE END OF MESSAGE
2783 ; FLAG SET THEN SHUT DOWN THE TRANSMITTER, OTHERWISE, WAIT FOR THE NEXT
2784 ; BUFFER OF THE MESSAGE TO BE ASSIGNED.
2785 ; IF IN BIT-STUFF MODE DON'T ABORT INSTEAD IDLE FLAGS BY NOT CLEARING
2786 ; DUPSND AND DUPTEM BITS.
2787
2788 002210' BR0 110$ ;END OF MESSAGE FLAG SET **X1.2**
2789 002212' ALWAYS TIMRT3 ;NOT THE END OF MESSAGE - EXIT
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 48-1
KDPMCX.MAC 30-DEC-82 03:47 XMTCNT - DECREMENT TRANSMIT BYTE COUNT
2790 002214' 110$: BRWRTE SELA,SP.STS ;DDCMP MODE? **X1.2**
2791 002216' BRSHFT ; **X1.2**
2792 002220' BR4 170$ ;YES, PAD THE MESSAGE **X1.2**
2793 002222' ALWAYS TIMRT3 ;NO, JUST IGNORE ABORTING **X1.2**
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 49
KDPMCX.MAC 30-DEC-82 03:47 XMTCNT - DECREMENT TRANSMIT BYTE COUNT
2795
2796 .SBTTL XMTABT - TRANSMIT ABORT PENDING
2797
2798 ;+
2799 ; **XMTABT-TRANSMIT ABORT PENDING
2800 ;
2801 ; CALLED BY: XMTDON
2802 ;
2803 ; INPUTS:
2804 ; BRG = XMIT STATUS (D.XSTS)
2805 ; MAR = D.XSTS
2806 ; OUTPUTS:
2807 ; IF STAGE ONE, GOTO XMTAB1 TO TRANSMIT ABORT CHARS
2808 ; STAGE TWO, CHECKS FOR ASSIGNED BUFFERS.
2809 ; IF NONE, DUP SEND IS CLEARED.
2810 ;-
2811
2812 002224' XMTABT:
2813 002224' BR1 XMTAB1 ;STAGE ONE OF ABORT PENDING
2814 002226' MEM IMM,0 ;CLEAR ABORT PENDING FLAG
2815 002230' BRWRTE IMM,D.XBDF ;OFFSET TO TRANSMIT BUFFER FLAGS
2816 002232' LDMA BR,ADD,SP.RM0 ;ADDRESS IT
2817 002234' BRWRTE MEMX,SELB ;READ THE FLAGS
2818 002236' BRSHFT ;SHIFT THEM RIGHT
2819 002240' BR4 XMTDN3 ;BUFFER ASSIGNED, START NEXT MESSAGE
2820 ;BUFFER NOT ASSIGNED, CLEAR SEND
2821 002242' 120$: SP IMM,0,SP0 ;MASK TO CLEAR SEND
2822 ;FALL INTO XMTSND
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 50
KDPMCX.MAC 30-DEC-82 03:47 XMTABT - TRANSMIT ABORT PENDING
2824
2825 .SBTTL XMTSND - SET OR CLEAR DUP SEND
2826
2827 ;+
2828 ; **XMTSND-ROUTINE TO SET OR CLEAR SEND IN THE DUP
2829 ;
2830 ; CALLED BY: XMTDON
2831 ; ENTERED FROM: XMTABT
2832 ;
2833 ; INPUTS:
2834 ; SP0 = MASK TO SET OR CLEAR SEND
2835 ; SP.STS = D.STS
2836 ;
2837 ; OUTPUTS:
2838 ; START NPR TO CHANGE SEND AND RETURN TO XMTDON
2839 ;
2840 ;-
2841
2842 002244' XMTSND:
2843 002244' BRWRTE IMM,DS.HDX ;MASK FOR HALF DUPLEX
2844 002246' BRWRTE BR,AANDB,SP.STS ;ISOLATE HALF DUPLEX FLAG
2845 002250' OUTPUT BR,AORB,OUTDA1 ;STORE "SEND" MASK IN OUT DATA LOW BYTE
2846 002252' XMTSN0:
2847 002252' BRWRTE IMM,DATOB ;MASK TO DO A BYTE OUT NPR
2848 002254' ALWAYS XMTDN6 ;START THE NPR AND RETURN TO TIMER LOOP
2849
2850
2851 ;+
2852 ; END OF MESSAGE FLAG SET - SEND A EOM
2853 ; CALLED BY: XMTBCZ
2854 ;-
2855
2856 002256' 160$: BRWRTE IMM,DUPTEM ;SET TRANSMIT END OF MESSAGE
2857 002260' OUTPUT BR,SELB,OUTDA2 ;SAVE FLAG IN OUT DATA HIGH BYTE
2858 002262' CALLSR SP.SUB,IC2OUT,XMTEM0 ;WRITE IT OUT TO THE DUP
2859 ;AND RETURN TO XMTBC0
2860
2861
2862 ;+
2863 ; END OF MESSAGE SET AND NO MORE BUFFER ASSIGNED - SEND PADS
2864 ; THIS FILLS THE DUP SILO SO THE EOM CHAR GETS TO THE LINE
2865 ; USE ABORT SEQUENCE TO SEND TWO PAD(377) CHARS.
2866 ; ENTERED FROM: XMTBCZ
2867 ;-
2868
2869 002270' 170$: BRWRTE IMM,D.XSTS ;ADDRESS TRANSMIT STATUS BYTE
2870 002272' LDMA BR,ADD,SP.RM0 ;SET THE MAR
2871 002274' MEM IMM,DT.ABT!DT.AB1 ;SET UP FOR AN ABORT
2872 002276' ALWAYS TIMRT3 ;RETURN TO TIMER LOOP
2873
2874
2875
2876 ;+
2877 ; UNDERRUN ERROR
2878 ; CALLED FROM: XMTBCZ
2879 ;-
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 50-1
KDPMCX.MAC 30-DEC-82 03:47 XMTSND - SET OR CLEAR DUP SEND
2880 002300' XMTUNR:
2881 002300' BRWRTE IMM,ER.UNR ;TRANSMIT UNDERRUN ERROR CODE
2882 002302' SP BR,SELB,SP3 ;SAVE IT IN SP3 FOR SUBROUTINE
2883 002304' CALLSR SP.SB1,COUX,XMTBC1,C.CLOX ;DO A CONTROL OUT
2884 ;AND RETURN TO XMTBC1
2885 .DSABL LSB
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 51
KDPMCX.MAC 30-DEC-82 03:47 XMTSND - SET OR CLEAR DUP SEND
2887
2888 .SBTTL XMTAB1 - TRANSMIT ABORT STAGE ONE
2889 ;+
2890 ; **XMTAB1-ROUTINE TO PERFORM A TRANSMIT ABORT
2891 ;
2892 ; ENTERED FROM: XMTABT
2893 ;
2894 ; INPUTS:
2895 ; INPUT AND OUTPUT ADDRESS = DUP'S CSR 4
2896 ; MAR = D.XSTS
2897 ; SP0 = (D.XSTS)
2898 ;
2899 ; OUTPUTS:
2900 ; D.XSTS IS DECREMENTED
2901 ; AN ABORT CHARACTER IS SENT
2902 ;
2903 ; D.XSTS LOW ORDER BITS WERE SET TO 11, XMTABT WILL BRANCH HERE IF
2904 ; BIT 1 IS SET. THUS TWO ABORT CHARS GET SENT.
2905 ;-
2906
2907 002314' XMTAB1:
2908 002314' MEM DECA,SP0 ;ONE LESS ABORT TO SEND
2909 ;(2 LINES REPLACED) **X1.2**
2910 002316' BRWRTE IMM,377 ;SEND PAD CHARACTER **X1.2**
2911 002320' OUTPUT BR,SELB,OUTDA1 ;MOVE IT TO OUT DATA **X1.2**
2912 002322' BRWRTE SELA,SP.STS ;DDCMP MODE? **X1.2**
2913 002324' BRSHFT ; POSITION BIT **X1.2**
2914 002326' BR4 10$ ;YES, USE PAD CHARACTER **X1.2**
2915 002330' BRWRTE IMM,DUPTAB!DUPTEM ;NO, USE DUP ABORT AND EOM BITS **X1.2**
2916 002332' 5$: OUTPUT BR,SELB,OUTDA2 ; (THE EOM ENSURES IDLING FLAGS LATER) **X1.2**
2917 002334' ALWAYS WRTRT ;RETURN TO XMTDON TO DO THE NPR
2918 002336' 10$: BRWRTE IMM,DUPTAB!DUPTSM;ALSO SET ABORT AND START OF MESSAGE **X1.2**
2919 002340' ALWAYS 5$ ; **X1.2**
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 51-1
KDPMCX.MAC 30-DEC-82 03:47 STORE-STORE RECEIVED CHARACTER IN CORE
2921 .SBTTL STORE-STORE RECEIVED CHARACTER IN CORE
2922 ; FILE DUPSTORE.MAC
2923
2924 ;+
2925 ;
2926 ; S T O R E R E C E I V E D C H A R A C T E R
2927 ;
2928 ; ENTERED FROM: RECEIVE STATE ROUTINES
2929 ;
2930 ; INPUTS:
2931 ; SP.CHR=CURRENT RECEIVED CHARACTER
2932 ;
2933 ; OUTPUTS:
2934 ; A WORD TRANSFER IS MADE TO THE USER BUFFER IN PDP-11 CORE WHEN
2935 ; A PAIR OF CHARACTERS ARE RECEIVED. ANY CHARACTER DESTINED FOR AN EVEN CORE
2936 ; BUFFER ADDRESS IS LOCALLY BUFFERED UNTIL THE NEXT CHARACTER IS RECEIVED.HOWEVER,
2937 ; BYTE TRANSFERS ARE SOMETIMES MADE DURING CERTAIN MESSAGE AND BUFFER BOUNDRY
2938 ; CONDITIONS.
2939 ;-
2940
2941 002342' STORE:
2942
2943 ;CHECK IF A RECEIVE BUFFER IS AVAILABE
2944 002342' BRWRTE IMM,D.RBDF ;ADDRESS D.RBDF
2945 002344' LDMA BR,ADD,SP.RM0
2946 002346' SPBR MEMX,SELB,SP2 ;LOAD IT INTO BR AND SP2
2947 002350' BRSHFT
2948 002352' BR4 10$ ;BUFFER AVAILABLE
2949
2950 ; A CHARACTER IS RECEIVED,BUT THERE IS NO RECEIVE BUFFER TO STORE IT
2951
2952 002354' BRADDR TIMRP2 ;ULTIMATE RETURN FROM RESYNC
2953 002356' SP BR,SELB,SP.SB1 ;SAVE IT IN RETURN SCRATCH PAD
2954 002360' CALLSR SP.SUB,COUTX,RESYNC,ER.NBA ;Q PORT DATA AND RETURN TO TIMER
2955 ;NOTE: A REGULAR CONTROL OUT IS NOT SENT BECAUSE IT MODIFIES PDP-11
2956 ;MEMORY ADDRESSED BY CURRENT DESCRIPTOR POINTER. SINCE THE DESCRIPTOR
2957 ;POINTER IS INVALID AT THIS TIME, THIS IS PROHIBITED.
2958
2959 002370' 10$:
2960 ; DECREMENT RECEIVE BYTE COUNT
2961
2962 002370' CALLSB SP.SUB,DRCNT
2963 ; NOTE: DRCNT DECREMENTS THE BYTE COUNT AND STORES IT BACK INTO RAM.
2964
2965 002376' C CHKODD ;BRANCH IF COUNT NOT -1
2966
2967 ;CURRENT BUFFER IS FULL,SO SEND BA OUT ETC BEFORE PROCESSING CURRENT CHARACTER
2968 002400' EOFBUF:
2969 002400' SPBR MEMX,SELB,SP2 ;GET THE LOW BYTE OF THE BUFFER ADDRESS
2970 002402' BR0 5$ ;BUFFER ENDED ON AN ODD ADDRESS THEREFORE
2971 ;THE LAST RECEIVE CHARACTER IS STILL IN THE
2972 ;KMC RAM AND IT MUST BE WRITTEN OUT
2973 ;
2974 ; OTHERWISE ALL RECEIVE DATA HAVE BEEN WRITTEN TO THE BUFFER
2975 ;
2976 002404' ALWAYS 10$
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 51-2
KDPMCX.MAC 30-DEC-82 03:47 STORE-STORE RECEIVED CHARACTER IN CORE
2977 ;
2978 002406' 5$:
2979 002406' CALLSB SP.SUB,SETRBA ;SET OUTBA TO CURRENT INPUT ADDRESS IN REC BUFF
2980 002414' BRWRTE BR,DECA,SP2 ;BUFFER ADDRESS MUST BE DECREMENTED TO POINT
2981 ;TO EVEN BYTE ADDRESS
2982 002416' OUTPUT BR,SELB,OBA1 ;RESET IT
2983 002420' BRWRTE IMM,DATOB,INCMAR ;MASK TO DO A BYTE TRANSFER
2984 ;MAR NOW POINT TO D.ERC
2985 002422' OUTPUT MEMX,SELB,OUTDA1 ;GET THE EVEN RECEIVE CHARACTER
2986 002424' OUT BR,SELB,ONPR ;START THE NPR
2987 002426' 10$:
2988 002426' BRADDR STORE ;SET UP RETURN ADDRESS TO STORE
2989 002430' SP BR,SELB,SP.SB1
2990 002432' 20$: BRWRTE IBUS,NPR ;IN CASE AN NPR WAS STARTED WAIT FOR IT TO COMPLETE
2991 002434' BR0 20$ ;WAIT UNTIL DONE
2992 002436' ALWAYS BAORC ;SEND BAOUT FOR RECEIVE BUFFER COMPLETEION
2993 ;NOTE: ORIGINAL INPUT PARAMETERS TO STORE MUST BE INTACT AT THIS POINT
2994 ; CHECK IF CURRENT RECEIVE BUFFER ADDRESS IS ODD
2995 002440' CHKODD:
2996
2997 002440' BRWRTE MEMX,SELB ;GET LOW BYTE OF BUFFER ADDR INTO BR
2998 ;MAR NOW POINT TO HIGH ADDR BYTE
2999 002442' BR0 STRODD ;BRANCH IF RECEIVE BUFFER ADDRESS IS ODD
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 52
KDPMCX.MAC 30-DEC-82 03:47 STORE-STORE RECEIVED CHARACTER IN CORE
3001
3002 ; CURRENT RECEIVE BUFFER ADDRESS IS EVEN
3003
3004
3005 002444' STREVN:
3006 ;
3007 ; SP2 CONTAINS THE IMAGE OF D.RBDF
3008 ; MAR POINTS TO LOW BYTE OF BUFFER ADDRESS
3009 ;
3010
3011 002444' INCMA ;MAR NOW POINTS TO HIGH BYTE OF ADDRESS
3012 ; CLEAR "FIRST CHARACTER IN BUFFER" INDICATOR
3013
3014 002446' BRWRTE IMM,<377-DR.FST>,INCMAR ;MASK TO CLEAR DR.FST
3015 ;MAR POINT TO FLAGS BYTE
3016 002450' MEMINC BR,AANDB,SP2 ;CLEAR DR.FST
3017 ;MAR POINTS TO D.ERC
3018
3019 ; STORE THE CURRENT RECEIVE CHARACTER IN LOCAL BUFFER
3020
3021 002452' MEM SELA,SP.CHR ;STORE REC'D CHARACTER IN D.ERC
3022
3023
3024 002454' ALWAYS RCVEXT
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 53
KDPMCX.MAC 30-DEC-82 03:47 STORE-STORE RECEIVED CHARACTER IN CORE
3026
3027 ; CURRENT RECEIVE BUFFER ADDRESS IS ODD
3028
3029
3030 002456' STRODD:
3031 ;
3032 ; SP2 CONTAINS THE IMAGE OF D.RBDF
3033 ; MAR POINTS TO LOW BYTE OF RECEIVE BUFFER ADDRESS
3034
3035 002456' CALLSB SP.SUB,SETRBA ;SET OUTBA TO CURRENT INPUT ADDRESS IN REC BUFF
3036
3037 ; LOAD ODD (CURRENT) CHARACTER INTO OUTDATA HB
3038
3039 002464' BRWRTE BR,SELA,SP.CHR,INCMAR ;MOVE CHARACTER INTO BR FIRST
3040 ;MAR NOW POINTS TO D.ERC
3041 002466' OUTPUT BR,SELB,OUTDA2 ;NOW MOVE IT INTO OUTDATA 15:8
3042 002470' OUTPUT MEMX,SELB,OUTDA1 ;LOAD EVEN RECEIVE CHARACTER INTO OUTDATA 7:0
3043 ; CHECK IF THE CURRENT ODD CHARACTER IS DESTINED FOR FIRST LOCATION OF BUFFER
3044
3045 002472' BRWRTE MEMX,SELA,SP2 ;LOAD IMAGE OF D.RBDF INTO BR
3046 002474' BR0 10$ ;BRANCH IF FIRST CHARACTER OF BUFFER
3047
3048 ; CURRENT CHARACTER IS DESTINED FOR ODD CORE ADDRESS AND IS NOT THE FIRST
3049 ;CHARACTER IN THE BUFFER. THEREFORE IT IS SAFE TO DO A WORD TRANSFER.
3050
3051 002476' BRWRTE IMM,DATO ;MASK TO START WORD OUT NPR
3052 002500' ALWAYS 20$ ;DO NPR AND EXIT
3053 ;NOTE: DURING THE ABOVE WORD NPR, THE CORE ADDRESS IS ODD. THE HARDWARE SHOULD
3054 ;AUTOMATICALLY IGNORE BIT0 OF CORE ADDRESS.
3055
3056
3057 ; CURRENT RECEIVED CHARACTER IS DESTINED FOR AN ODD CORE ADDRESS.
3058 ;BUT THIS ADDRESS HAPPENS TO BE THE FIRST LOCATION OF THE CURRENT BUFFER.
3059 ;THEREFORE DO A BYTE TRANSFER.
3060
3061 002502' 10$:
3062
3063 002502' BRWRTE IMM,DATOB ;MASK TO SEND ONE BYTE(ODD CHARACTER)
3064 002504' 20$:
3065 002504' OUT BR,SELB,ONPR ;START NPR
3066 ;NOTE: NPR COMPLETION IS CHECKED FOR AFTER
3067 ;RETURN FROM INCMEM
3068
3069 ;FALL INTO RCVEXT
3070
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 54
KDPMCX.MAC 30-DEC-82 03:47 STORE-STORE RECEIVED CHARACTER IN CORE
3072
3073 ; COMMON EXIT FROM STORE ROUTINE
3074
3075
3076 002506' RCVEXT:
3077
3078 ;INCREMENT RECEIVE BUFFER POINTER
3079
3080 ; ADDRESS D.RBDA
3081
3082 002506' BRWRTE IMM,D.RBDA
3083 002510' LDMA BR,ADD,SP.RM0
3084
3085 ; INCREMENT MEMORY LOCATIONS
3086
3087 002512' CALLSR SP.SUB,INCMEM,NPRWP1,1 ;INCREMENT MEMORY & RETURN
3088 ;TO WAIT FOR NPR COMPLETION
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 55
KDPMCX.MAC 30-DEC-82 03:47 STORE-STORE RECEIVED CHARACTER IN CORE
3090
3091 .SBTTL EOFMSG-END OF MESSAGE
3092
3093 ;+
3094 ;
3095 ; E N D O F R E C E I V E D M E S S A G E
3096 ;
3097 ; CALLED BY: RBDONE(BIT STUFF), MSGIN(DDCMP)
3098 ;
3099 ;INPUTS:
3100 ; SP.SB1=RETURN ADDRESS
3101 ; D.RBD=CURRENT INPUT ADDRESS
3102 ;OUTPUTS:
3103 ; STORES IN RECEIVE BUFFER ANY RESIDUAL EVEN CHARACTER THAT IS SAVED
3104 ; IN THE LOCAL BUFFER (D,ERC)
3105 ; GENERATES A BAOUT. ULTIMATE RETURN TO LOCATION SPECIFIED BY SP.SB1
3106 ;-
3107
3108 002522' EOFMSG:
3109
3110 ;CHECK IF THE LAST RECEIVED CHARACTER WAS EVEN
3111
3112 002522' BRWRTE IMM,D.RBDA ;SET TO POINT TO BUFFER ADDRES
3113 002524' LDMA BR,ADD,SP.RM0 ;SET THE MAR
3114 002526' SPBR MEMX,SELB,SP2 ;READ THE LOW BYTE OF THE ADDRESS
3115 002530' BR0 10$ ;BRANCH IF ODD
3116 ; CURRENT RECEIVE BUFFER IS EVEN,THAT MEANS LAST RECEIVED CHARACTER WAS
3117 ;DESTINED FOR AN ODD ADDRESS AND ALREADY BEEN TRANSFERED TO RECEIVE
3118 ;BUFFER.
3119
3120 002532' ALWAYS BAORE ;SEND BAOUT
3121
3122 ;CURRENT RECEIVE BUFFER ADDRESS IS ODD. THEREFORE THE PREVIOUS CHARACTER
3123 ;DESTINED FOR AN EVEN ADDRESS IS STORED LOCALLY. TRANSFER IT TO CORE
3124
3125 002534' 10$:
3126
3127 002534' CALLSB SP.SUB,SETRBA ;SET RECEIVE BUFFER ADDRESS
3128 002542' BRWRTE DECA,SP2,INCMAR ;DECREMENT ADDRESS TO GET EVEN BYTE
3129 ;MAR POINTS TO D.ERC
3130 002544' OUTPUT BR,SELB,OBA1 ;PUT ADDR IN THE OBA REG
3131 002546' OUTPUT MEMX,SELB,OUTDA1 ;LOAD EVEN CHAR INTO OUT DATA
3132 002550' BRWRTE IMM,DATOB ;WRITE OUT RESIDUAL EVEN RECEIVED
3133 002552' OUT BR,SELB,ONPR ;INTO CORE
3134 002554' 20$: BRWRTE IBUS,NPR ;AND WAIT FOR NPR TO COMPLETE
3135 002556' BR0 20$
3136
3137 ;FALL INTO BAORE
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 56
KDPMCX.MAC 30-DEC-82 03:47 EOFMSG-END OF MESSAGE
3139
3140 .SBTTL BAORE-BA OUT FOR END OF RECEIVED MESSAGE
3141
3142 ;+
3143 ;
3144 ; B A O U T F O R E N D O F R E C E I V E D M E S S A G E
3145 ;
3146 ; ENTERED FROM: EOFMSG
3147 ;
3148 ;INPUTS:
3149 ; SP.SB1=RETURN ADDRESS
3150 ;
3151 ;OUTPUTS:
3152 ; INPUT PARAMETERS FOR BOUT ARE SET UP
3153 ; BOUT IS EXECUTED
3154 ;-
3155
3156 002560' BAORE:
3157
3158 ;SET SP3 TO INDICATE END OF MESSAGE
3159
3160 002560' BRWRTE IMM,EOM
3161 002562' SP BR,SELB,SP3
3162
3163 ;SET SP2 TO INDICATE BAOUT FOR RECEIVE OPERATION
3164
3165 002564' BRWRTE IMM,C.BAOR
3166
3167 ; FOLLOWING CODE IS SHARED WITH THE ERROR ROUTINES IN DUPERR
3168 002566' ENTRY2:
3169 002566' SP BR,SELB,SP2
3170 ;SET SP6=ADDRESS OF D.RDP
3171 002570' BRWRTE IMM,D.RDP ;BR=D.RDP
3172 002572' BRWRTE BR,<ADD!SP.RM0> ;BR=ADDRESS OF D.RDP/D.XDP
3173 002574' SP BR,SELB,SP6 ;SP6=BR
3174
3175 ;FALL INTO BOUT/COUT
3176
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 57
KDPMCX.MAC 30-DEC-82 03:47 BAORE-BA OUT FOR END OF RECEIVED MESSAGE
3178
3179 .SBTTL BOUT/COUT-BA OR CONTROL OUT (WITH DESCRIPTOR UPDATED)
3180
3181 ;+
3182 ;
3183 ; B A O R C O N T R O L O U T
3184 ; (CURRENT DESCRIPTOR IS UPDATED)
3185 ;
3186 ; THIS IS COMMON CODE SHARED BY THOSE BAOUT ROUTINES AND CONTROL OUT
3187 ;ROUTINES THAT REQUIRE AN UPDATE OF BYTE COUNT IN THE RECEIVE OR TRANSMIT
3188 ;DESCRIPTORS.
3189 ;
3190 ; ENTERED FROM: BAORE
3191 ; CALLED BY: KILLAL
3192 ;
3193 ;INPUTS:
3194 ; SP.SB1 -RETURN ADDRESS.
3195 ; SP2 -CODE TO INDICATE BAOUT OR CONTROL OUT (KMC CSR2 IMAGE)
3196 ; SP3 -ERROR CODE
3197 ; SP6 -ADDRESS OF D.RDP(RECEIVE) OR D.XDP(TRANSMIT)
3198 ;
3199 ;OUTPUTS:
3200 ; BYTE COUNT IN THE CURRENT TRANSMIT OR RECEIVE DESCRIPTOR IS UPDATED
3201 ;BY SUBTRACTING THE CONTENTS OF D.RBDC OR D.XBDC FROM IT.
3202 ;SP4,SP5,SP6 ARE LOADED WITH THE CURENT DESCRIPTOR ADDRESS AND QPDATA
3203 ;ROUTINE IS EXECUTED.
3204 ;-
3205
3206 002576' BOUT:
3207 002576' COUT:
3208
3209 ;SET OUBA TO CURRENT DESCRIPTOR
3210
3211 002576' LDMA SELA,SP6 ;ADDRESS DESCRIPTOR ADDRESS POINTER
3212 002600' OUTPUT MEMI,SELB,OBA1 ;ADDRESS 7:0
3213 002602' OUTPUT MEMI,SELB,OBA2 ;ADDRESS 15:8
3214 002604' SP IBUS,UBBR,SP0 ;GET CURRENT BUS REQ REG
3215 002606' BRWRTE IMM,101 ;CLEAR ALL BUT VEC XX4,NXM
3216 002610' SP BR,AANDB,SP0
3217 002612' SP MEMX,SELB,SP1 ;GET FLAGS BYTE (MEM EXT BITS) **V0.10**
3218 002614' BRWRTE IMM,14 ;EXTRACT MEM EXT BITS
3219 002616' BRWRTE BR,AANDB,SP1 ;MASK OFF ALL OTHER BITS
3220 002620' OUT BR,AORB,OBR ;LOAD EXT ADDRESS BITS
3221 ;SUBTRACT CURRENT BYTE COUNT FROM ORIGINAL BYTE COUNT TO GET # OF CHARACTERS
3222 ;RECEIVED/TRANSMITTED IN THIS BUFFER
3223 002622' BRWRTE IMM,<D.ORBC-D.RDP> ;ADDRESS ORIGINAL BUFFER COUNT
3224 002624' LDMA BR,ADD,SP6
3225 002626' SP MEMI,SELB,SP0 ;AND SAVE IT IN SP0
3226 002630' SP MEMX,SELB,SP1 ;AND HIGH BYTE INTO SP1
3227 002632' BRWRTE IMM,<D.RBDC-D.RDP> ;ADDRESS CURRENT COUNT
3228 002634' LDMA BR,ADD,SP6
3229 002636' OUTPUT MEMI,SUB,OUTDA1 ;OUTDA1=ORG 7:0-CUR7:0
3230 002640' BRWRTE MEMI,SUBC,SP1 ;BR=ORG15:8-CUR15:8
3231 002642' OUTPUT BR,SELB,OUTDA2,INCMAR ;STORE IT IN OUTDATA 1 **V0.11**
3232
3233 ;OUTDATA NOW CONTAINS THE NUMBER OF CHARACTERS TRANSFERED FROM/TO
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 57-1
KDPMCX.MAC 30-DEC-82 03:47 BOUT/COUT-BA OR CONTROL OUT (WITH DESCRIPTOR UPDATED)
3234 ;THE CURRENT BUFFER
3235 ; WRITE IT INTO CURRENT DESCRIPTOR
3236 002644' BRADDR BOUTR0 ;RETURN ADDRESS INTO BR **V0.11**
3237 002646' SP BR,SELB,SP.SUB,INCMAR ;SAVE IN SP.SUB (MAR = FLAGS)
3238 002650' BRWRTE MEMX,SELB ;READ FLAGS
3239 002652' BRSHFT ;SHIFT RIGHT
3240 002654' BR4 IC2OUT ;IF BUFFER ASSIGNED, WRITE NEW BC
3241 002656' ALWAYS QPDATA ;OTHERWISE DON'T (CAN GET HERE FROM
3242 ;KILL CODE WITH NO BUFFER ASSIGNED) **V0.11**
3243
3244 ;CURRENT DESCRIPTOR IS NOW COMPLETELY UPDATED
3245
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 58
KDPMCX.MAC 30-DEC-82 03:47 BOUT/COUT-BA OR CONTROL OUT (WITH DESCRIPTOR UPDATED)
3247
3248 .SBTTL BAORC-BA OUT FOR RECEIVE BUFFER COMPLETION
3249
3250 ;+
3251 ;
3252 ; B A O U T F O R R E C E I V E B U F F E R C O M P L E T I O N
3253 ;
3254 ; CALLED BY: STORE
3255 ;
3256 ;INPUTS:
3257 ; SP.SB1=RETURN ADDRESS
3258 ;
3259 ;OUTPUTS:
3260 ; INPUT PARAMETERS FOR COUX ARE SET UP
3261 ; COUX IS EXECUTED
3262 ;-
3263
3264 002660' BAORC:
3265
3266 ;SET SP3 TO INDICATE END OF MESSAGE
3267
3268 002660' BRWRTE IMM,0
3269 002662' SP BR,SELB,SP3
3270
3271 ;SET SP2 TO INDICATE BAOUT FOR RECEIVE OPERATION
3272
3273 002664' BRWRTE IMM,C.BAOR
3274 002666' SP BR,SELB,SP2
3275
3276 ; SET SP6=ADDRESS OF D.RDP
3277 002670' BRWRTE IMM,D.RDP ;BR=D.RDP
3278 002672' ALWAYS ENTRY1 ;USE COMMON CODE IN COUX
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 59
KDPMCX.MAC 30-DEC-82 03:47 BAORC-BA OUT FOR RECEIVE BUFFER COMPLETION
3280
3281 .SBTTL COUTX-CONTROL OUT FOR TRANSMIT OPERATION
3282
3283 ;+
3284 ;
3285 ; C O N T R O L O U T F O R X M T O P E R A T I O N S
3286 ;
3287 ; CALLED BY: DSRCHG,STORE,NXMERR
3288 ;
3289 ;INPUTS:
3290 ; SP.SUB=RETURN ADDRESS
3291 ; BRG =ERROR CODE
3292 ;OUTPUTS:
3293 ; A CONTROL OUT IS QUEUED WITH THE BUFFER DESCRIPTOR ADDRESS ZEROED.
3294 ;-
3295
3296 002674' COUTX:
3297 002674' SP BR,SELB,SP3 ;SAVE ERROR CODE IN SP3
3298 002676' SPBR IMM,0,SP0 ;SET UP SCRATCH PADS FOR QPDATA
3299 002700' SP BR,SELB,SP1 ;..
3300 002702' SP BR,SELB,SP4 ;..
3301
3302 ;SET SP2 TO INDICATE CONTROL OUT FOR XMT OPERATION
3303 002704' BRWRTE IMM,C.CLOX ;CSR2 IMAGE INTO SP2
3304 002706' SP BR,SELB,SP2
3305 002710' ALWAYS QPDAT1 ;QUEUE THE CONTROL OUT
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 60
KDPMCX.MAC 30-DEC-82 03:47 COUTX-CONTROL OUT FOR TRANSMIT OPERATION
3307
3308 .SBTTL BAOX/COUX-BA/CONTROL OUT FOR TRANSMIT BUFFER COMPLETION
3309 ;+
3310 ;
3311 ; B A O U T F O R X M T B U F F E R C O M P L E T I O N
3312 ;
3313 ;CALLED BY: XMTBCZ
3314 ;
3315 ;INPUTS:
3316 ; SP.SB1=RETURN ADDRESS
3317 ;
3318 ;OUTPUTS:
3319 ; INPUT PARAMETERS FOR QPDATA ARE SET UP
3320 ; A BUF ADDR OUT IS QUEUED.
3321 ;-
3322
3323 002712' BAOX:
3324
3325 ;SET SP3 TO INDICATE BUFFER COMPLETION
3326
3327 002712' BRWRTE IMM,0
3328 002714' SP BR,SELB,SP3
3329
3330 ;SET BRG TO INDICATE BA OUT FOR TRANSMIT OPERATION
3331
3332 002716' BRWRTE IMM,C.BAOX
3333 ; FALL INTO COUX
3334
3335
3336 ;+
3337 ; **COUX-ROUTINE TO QUEUE A TRANSMIT CONTROL OUT WITH BUFFER ADDRESS**
3338 ;
3339 ; CALLED BY: XMTUNR
3340 ; ENTERED FROM: BAOX
3341 ;
3342 ; INPUTS:
3343 ; SP.SB1 = RETURN ADDR
3344 ; SP3 = ERROR CODE
3345 ; BRG = BSEL2 CODE (NORMALLY C.CLOX)
3346 ;
3347 ; OUTPUTS:
3348 ; PARAMETERS FOR QPDATA ARE SET UP
3349 ; SO A COMPLETION WILL BE QUEUED TO THE PDP-11
3350 ;-
3351
3352 002720' COUX:
3353 002720' SP BR,SELB,SP2 ;PUT BSEL2 CODE IN SP2
3354
3355 ;SET SP6=ADDRESS OF D.XDP
3356 002722' BRWRTE IMM,D.XDP ;BR=D.XDP
3357
3358 ;COMMON CODE, USED BY BAORC ALSO
3359 002724' ENTRY1:
3360 002724' BRWRTE BR,ADD,SP.RM0 ;BR=ADDRESS OF D.RDP/D.XDP
3361 002726' SP BR,SELB,SP6 ;SP6=BR
3362
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 60-1
KDPMCX.MAC 30-DEC-82 03:47 BAOX/COUX-BA/CONTROL OUT FOR TRANSMIT BUFFER COMPLETION
3363 ; FALL INTO QPDATA
3364
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 61
KDPMCX.MAC 30-DEC-82 03:47 BAOX/COUX-BA/CONTROL OUT FOR TRANSMIT BUFFER COMPLETION
3366
3367 .SBTTL QPDATA-QUEUE PORT DATA
3368
3369 ;+
3370 ;
3371 ; Q U E U E P O R T D A T A
3372 ;
3373 ; ENTERED AT QPDATA FROM: BOUT,COUX
3374 ; ENTERED AT QPDAT1 FROM: COUTX
3375 ;
3376 ; INPUTS:
3377 ; SP.SB1=RETURN ADDRESS
3378 ; SP.LN=LINE NUMBER
3379 ; SP2=CLO(R/T) TO SEND CONTROL OUT,=BAO(R/T) TO SEND BAOUT
3380 ; SP3 =ERROR CODE WITH THE ERROR BIT SET
3381 ; SP6 =ADDRESS OF D.RDP/D.XDP
3382 ;OUTPUTS:
3383 ; SIX BYTES OF CONTROL OUT DATA IS STUFFED INTO THE LOCAL COMPLETION SILO.
3384 ; ENTRY AT QPDATA: CALLER'S RETURN IN SP.SB1, EXECUTE STFSLO AND NXBUF
3385 ; ENTRY AT QPDAT1: CALLER'S RETURN IN SP.SUB, EXECUTE STFSLO AND RETURN
3386 ;-
3387
3388 002730' QPDATA:
3389 002730' BRADDR NXBUF ;ADDRESS FOR STUFF SILO TO RETURN TO
3390 002732' SP BR,SELB,SP.SUB ;SAVE IT IN RETURN SCRATCH PAD
3391
3392 ;GET CURRENT DESCRIPTOR ADDRESS INTO SCRATCH PADS
3393
3394 002734' LDMA SELA,SP6 ;ADDRESS CURRENT DESCRIPTOR POINTER
3395 002736' SP MEMI,SELB,SP0 ;SP0=ADDRESS 7:0
3396 002740' SP MEMI,SELB,SP1 ;SP1=ADDRESS 15:8
3397 002742' SP MEMX,SELB,SP4 ;SP4=ADDRESS 17:16
3398
3399 ; ADDRESS 'NEXT IN' LOCATION IN LOCAL SILO
3400
3401 002744' QPDAT1:
3402 002744' LDMA IMM,P.SLIN ;ADDRESS NEXT IN POINTER
3403 002746' LDMAP IMM,P.SLIN
3404 002750' LDMA MEMX,SELB ;ADDRESS LOCATION POINTED TO BY P.SLIN
3405
3406 ;STORE BYTE 0 WORD 1 INTO SILO
3407
3408 002752' MEMINC SELA,SP.LN ;LOAD LINE NUMBER
3409 002754' MEMINC SELA,SP0 ;LOAD DESCRIPTOR ADDRESS 7:0
3410 002756' MEMINC SELA,SP1 ;LOAD DESCRIPTOR ADDRESS 15:0
3411 002760' MEM SELA,SP3 ;STORE ERROR CODE (FOR CONTROL OUT ONLY)
3412 002762' BRWRTE SELA,SP2 ;BUT IS THIS A CONTROL OUT?
3413 002764' BR0 10$ ;YES
3414 002766' MEM IMM,0 ;NO,CLEAR ERROR CODE
3415 002770' ALWAYS 20$
3416 002772' 10$: BRWRTE IMM,0 ;CONTROL OUT,CLEAR SP3
3417 002774' SP BR,SELB,SP3
3418 002776' 20$:
3419 002776' SP TWOA,SP4,INCMAR ;SHIFT EXT ADDRESS LEFT TO POSITION
3420 003000' SP TWOA,SP4
3421 003002' SP TWOA,SP4
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 61-1
KDPMCX.MAC 30-DEC-82 03:47 QPDATA-QUEUE PORT DATA
3422 003004' SPBR TWOA,SP4
3423 003006' MEMINC BR,AORB,SP3 ;STORE EOM BIT AND EXT MEM BITS IF BA OUT
3424 003010' MEMINC SELA,SP2 ;CONTROL OUT OR BAOUT CODE
3425 ;FALL INTO STUFF SILO ROUTINE
3426
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 62
KDPMCX.MAC 30-DEC-82 03:47 QPDATA-QUEUE PORT DATA
3428
3429 .SBTTL STFSLO-STUFF COMPLETION SILO SUBROUTINE
3430
3431 ;+
3432 ;
3433 ; S T U F F C O M P L E T I O N S I L O
3434 ;
3435 ; ENTERED FROM: QPDATA
3436 ;
3437 ; INPUTS:
3438 ; SP.SB1=ULTIMATE RETURN ADDRESS
3439 ; SP.SUB=RETURN FOR STUFF SILO
3440 ;
3441 ; THE THREE SILO WORDS MUST ALREADY BE IN RAM STARTING AT LOCATION
3442 ; POINTED TO BY P.SLIN.
3443 ;
3444 ; OUTPUTS:
3445 ; SILO POINTERS ARE UPDATED. IF THERE WAS A SILO OVERFLOW,BIT 16 OF
3446 ; THE FIRST WORD IS SET TO 1.
3447 ;-
3448
3449 003012' STFSLO:
3450
3451 ; CHECK IF SILO IS EMPTY OR FULL
3452
3453 003012' LDMA IMM,<P.SLIN> ;GET NEXT IN
3454 003014' SP MEMI,SELB,SP0 ;INTO BR,SP0
3455 003016' BRWRTE MEMX,SELB ;AND NEXT OUT INTO THE BR
3456 003020' Z 30$ ;SILO IS EMPTY
3457 003022' COMP BR,SP0 ;NEXTIN=NEXT OUT?
3458 003024' Z 40$ ;YES,SILO IS FULL
3459
3460 ; SILO IS NOT FULL
3461
3462 ; INCREMENT NEXT IN BY ONE ENTRY LENGTH
3463 003026' 10$:
3464 003026' LDMA IMM,<P.SLIN&377> ;MAR=ADDRESS OF NEXT IN POINTER
3465 003030' BRWRTE IMM,SILOED ;OFFSET OF LAST ENTRY
3466 003032' COMP BR,SP0 ;NEXT IN=LAST ENTRY IN SILO?
3467 003034' Z 20$ ;YES,WRAP NEXT IN
3468 003036' BRWRTE IMM,SENTRY ;BR=ONE ENTRY SIZE
3469 003040' MEM BR,ADD,SP0 ;INCREMENT P.SLIN BY ONE ENTRY SIZE
3470 003042' RTNSUB SP.SUB,P3 ;RETURN
3471
3472 ; WRAP NEXT IN
3473 003044' 20$: MEM IMM,P.NPR ;SET NEXT IN=P.NPR
3474 003046' RTNSUB SP.SUB,P3
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 63
KDPMCX.MAC 30-DEC-82 03:47 STFSLO-STUFF COMPLETION SILO SUBROUTINE
3476
3477 ; SILO IS EMPTY,SET NEXT OUT=NEXT IN
3478
3479 003050' 30$: MEM SELA,SP0 ;STORE NEXT IN P.SLOT
3480 003052' ALWAYS 10$ ;STORE ONE ENTRY
3481
3482 ; SILO IS FULL, SET ERROR BIT IN CURRENT NEXT IN RAM LOCATION
3483
3484 003054' 40$:
3485 003054' LDMA SELA,SP0 ;LOAD MAR TO ADDRESS SILO ENTRY
3486 003056' SP IMM,200,SP0 ;LOAD ERROR CODE MASK
3487 003060' MEM MEMX,AORB,SP0 ;OR OVERRUN BIT ONTO LINE NUMBER
3488 003062' RTNSUB SP.SUB,P3
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 64
KDPMCX.MAC 30-DEC-82 03:47 STFSLO-STUFF COMPLETION SILO SUBROUTINE
3490
3491 .SBTTL NXBUF-GET NEXT BUFFER
3492
3493 ;+
3494 ; N E X T B U F F E R
3495 ;
3496 ; ENTERED FROM: STFSLO
3497 ;
3498 ; INPUTS:
3499 ; SP.SB1 =RETURN ADDRESS
3500 ; SP6 =ADDRESS OF D.RDP OR D.XDP
3501 ;
3502 ; OUTPUTS:
3503 ; 1) CURRENT DESCRIPTOR POINTER IS MODIFIED TO POINT
3504 ; TO THE NEXT DESCRIPTOR IN THE CURRENT LIST
3505 ; 2) IF NO MORE DESCRIPTORS ARE AVAILABLE IN THE CURRENT LIST,
3506 ; D.RDP/D.XDP IS SET TO POINT TO THE FIRST DESCRIPTOR IN THE ALTERNATE LIST.
3507 ; THE "ALTERNATE LIST ASSIGNED" BIT IS CLEARED
3508 ; 3) IF THE ALTERNATE LIST IS NOT ASSIGNED IN THE ABOVE CASE,THE"CURRENT
3509 ; LIST ASSIGNED" BIT IS CLEARED.
3510 ; 4) IF THE NEW DESCRIPTOR IS THE LAST ONE IN ITS LIST THE "LAST DESCRIPTOR
3511 ; IN LIST" INDICATOR IS SET.
3512 ;
3513 ; THIS ROUTINE; CHECKS IF CURRENT DESCRIPTOR IS LAST ON LIST
3514 ; IF SO, BRANCH TO NXLST
3515 ; OTHERWISE, ADD 6 TO LIST POINTER AND GOTO NXDSCP TO LOAD DESC
3516 ;-
3517
3518 003064' NXBUF:
3519
3520 ; CHECK IF THE CURRENT BUFFER DESCRIPTOR IS THE LAST ONE IN THE CURRENT LIST
3521
3522 003064' BRWRTE IMM,<D.RBDF-D.RDP> ;ADDRESS FLAG BYTE
3523 003066' LDMA BR,ADD,SP6
3524 003070' LDMAP SELA,SP.RM1 ;SINCE STUFF SILO CHANGED PAGE
3525 003072' SPBR MEMX,SELB,SP0 ;LOAD FLAG BYTE INTO BR,SP0
3526 003074' BR7 NXLST ;LAST DESCRIPTOR IN LIST,GET NEXT LIST
3527
3528 ; CURRENT BUFFER DESCRIPTOR IS NOT THE LAST ONE IN THE LIST
3529 ;ADD 6 TO CURRENT DESCRIPTOR ADDRESS TO GET THE NEXT DESCRIPTOR ADDRESS
3530 003076' LDMA SELA,SP6 ;ADDRESS CURRENT DESCRIPTOR POINTER
3531 003100' CALLSR SP.SUB,INCMEM,NXDP1,6. ;CALL TO INCRE PNTR BY 6
3532 ;RETURN TO NXDSCP
3533
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 65
KDPMCX.MAC 30-DEC-82 03:47 NXBUF-GET NEXT BUFFER
3535
3536 .SBTTL NXLST-GET NEXT BUFFER LIST
3537
3538 ;+
3539 ;
3540 ; N E X T L I S T
3541 ;
3542 ; ENTERED FROM: NXBUF
3543 ;
3544 ; INPUTS:
3545 ; SP.SB1 =RETURN ADDRESS
3546 ; MAR,MARP=D.RBDF OR D.XBDF
3547 ; SP0 =CONTENTS OF D.RBDF OR D.XBDF
3548 ; SP6 =ADDRESS OF D.RBD OR D.XBD
3549 ;
3550 ; OUTPUTS:
3551 ; CHECK IF ALTERNATE LIST IS ASSIGNED
3552 ; IF NOT, CLEAR BUFFER ASSIGNED BIT AND RETURN
3553 ; IF SO, CLEAR ALTERNATE ASSIGNED BIT AND UPDATE CURRENT LIST PNTR
3554 ; DROP INTO NXDSCP TO LOAD NEW DESC INTO LINE TABLE.
3555 ;-
3556
3557 003110' NXLST:
3558
3559 ; CHECK IF THE ALTERNATE LIST IS ASSIGNED
3560 ; (MAR=D.RBDF FOR REC OR D.XBDF FOR XMT,SP0=ITS CONTENTS
3561
3562 003110' BRWRTE TWOA,SP0 ;LEFT SHIFT
3563 003112' BR7 10$ ;BRANCH IF ALTERNATE LIST IS ASSIGNED
3564
3565 ; ALTERNATE LIST IS NOT ASSIGNED. CLEAR 'CURRENT BUFFER ASSIGNED BIT AND RETURN
3566
3567 003114' BRWRTE IMM,<377-DR.CBA> ;MASK TO CLEAR DR.CBA
3568 003116' MEM BR,AANDB,SP0 ;CLEAR IT AND STORE RESULT IN D.RBDF/D.XBDF/
3569 ;*************ONE OF THE RETURN POINTS FOR BA,CONTROL ETC.**********
3570 003120' RTNSUB SP.SB1,P2 ;RETURN
3571 ;********************************************************************
3572
3573
3574 ; ALTERNATE LIST IS ASSIGNED.
3575 003122' 10$:
3576
3577 ;CLEAR 'ALTERNATE LIST ASSIGNED' BIT
3578 003122' BRWRTE IMM,<377-DR.ABA> ;MASK TO CLEAR DS.ABA
3579 003124' MEM BR,AANDB,SP0 ;STORE IT IN RAM
3580
3581 ;MOVE ALTERNATE LIST POINTER INTO CURRENT DECRIPTOR POINTER
3582 003126' BRWRTE IMM,<D.ARLP-D.RDP> ;OFFSET FROM CURRENT DESCRIPTOR POINTER
3583 003130' LDMA BR,ADD,SP6 ;ADDRESS ALTERNATE POINTER
3584 003132' SP MEMI,SELB,SP0 ;SP0=ADDRESS 7:0
3585 003134' SP MEMI,SELB,SP1 ;SP1=ADDRESS 15:8
3586 003136' SP MEMI,SELB,SP2 ;SP2=ADDRESS 17:16
3587 003140' LDMA SELA,SP6 ;ADDRESS CURRENT POINTER
3588 003142' MEMINC SELA,SP0 ;STORE ADDRESS 7:0
3589 003144' MEMINC SELA,SP1 ;STORE ADDRESS 15:8
3590 003146' MEM SELA,SP2 ;AND EXT ADDRESS
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 65-1
KDPMCX.MAC 30-DEC-82 03:47 NXLST-GET NEXT BUFFER LIST
3591 ;FALL INTO NXDSCP
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 66
KDPMCX.MAC 30-DEC-82 03:47 NXLST-GET NEXT BUFFER LIST
3593
3594 .SBTTL NXDSCP - GET NEXT DESCRIPTOR
3595
3596 ;+
3597 ;
3598 ; **NXDSCP-ROUTINE TO LOAD THE NEXT DESCRIPTOR INTO LINE TABLE
3599 ;
3600 ; ENTERED FROM: NXLST
3601 ; CALLED FROM: BAIN
3602 ;
3603 ;INPUTS:
3604 ; SP6=ADDRESS OF THE CURRENT DESCRIPTOR FOR CURRENT OPERATION (ADDRESS
3605 ; OF D.RDP OR D.XDP)
3606 ;
3607 ; OUTPUTS:
3608 ; THE NEW DESCRIPTOR IS FETCHED FROM PDP-11 MEMORY AND STORE IN THE LINE TABLE.
3609 ; IF A TRANSMIT BUFFER, ANY ODD LEADING CHARACTER IS PREFETCHED
3610 ; IF A RECEIVE BUFFER, THE FIRST CHARACTER FLAG(DR.FST) IS SET
3611 ;-
3612
3613 003150' NXDSCP:
3614
3615 ;SET INBA TO THE CURRENT DESCRIPTOR ADDRESS
3616 003150' LDMA SELA,SP6 ;ADDRESS CURRENT DESCRIPTOR POINTER
3617 003152' OUTPUT MEMI,SELB,IBA1 ;ADDRESS 7:0
3618 003154' OUTPUT MEMI,SELB,IBA2 ;ADDRESS 15:8
3619 003156' BRWRTE IMM,1 ;START NPR
3620 003160' SP BR,SELB,SP0
3621 003162' OUT MEMI,AORB,ONPR ;ADRESS 17:16
3622
3623
3624 ;MOVE NEW BUFFER ADDRESS AND BYTE COUNT INTO ORIGINAL BUF ADDRESS AND COUNT AREA
3625
3626 003164' 5$: BRWRTE IBUS,NPR ;WAIT FOR BUFFER ADDRESS 15:0
3627 003166' BR0 5$
3628 003170' SP IBUS,INDAT1,SP4,INCMAR ;TEMPORARILY SAVE ADD 7:0 IN SP4
3629 003172' SP IBUS,INDAT2,SP5,INCMAR ;AND ADDRESS 15:8 IN SP5
3630 003174' CALLSB SP.SUB,IC2IN ;READ BYTE COUNT FROM DESCRIPTOR
3631 003202' SP IBUS,INDAT1,SP2,INCMAR ;SAVE LOW BYTE IN SP2
3632 003204' SP IBUS,INDAT2,SP3 ;AND HIGH COUNT IN SP3
3633 ;MAR IS NOW POINTING TO D.ORBC/D.OXBC
3634 003206' MEMINC IBUS,INDAT1 ;SAVE LOW BYTE OF COUNT
3635 003210' MEMINC IBUS,INDAT2 ;SAVE HIGH BYTE OF COUNT
3636 003212' MEMINC SELA,SP4 ;NOW STORE DESCP ADDRESS 7:0
3637 003214' MEMINC SELA,SP5 ;AND ADDRESS 15:8 IN RAM
3638
3639 ; UPDATE EXTENDED ADDRESS BITS OF BUFFER & LAST DESCRIPTOR BIT
3640 003216' CALLSB SP.SUB,IC2IN ;READ NEXT DESCRIPTOR WORD
3641 003224' SP IBUS,INDAT2,SP0 ;LOAD HIGH BYTE (FLAGS,EXT ADDR)INTO SP0
3642 003226' MEMINC IBUS,INDAT2 ;SAVE FLAGS BYTE
3643
3644 ; NOW SAVE COUNT AND ADDRESS IN WORKING (CURRENT) POINTERS ;+*** V1.1
3645 ; ENTRY FROM RESET IN RECEIVE ROUTINES ;+*** V1.1
3646 003230' NXDSC1: ;+*** V1.1
3647 003230' MEMINC SELA,SP2 ;SAVE COUNT, LOW BYTE
3648 003232' MEMINC SELA,SP3 ; HIGH BYTE
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 66-1
KDPMCX.MAC 30-DEC-82 03:47 NXDSCP - GET NEXT DESCRIPTOR
3649 003234' MEMINC SELA,SP4 ;SAVE BUFFER ADDRESS
3650 003236' MEMINC SELA,SP5 ;
3651 003240' SP MEMX,SELB,SP2 ;SAVE OLD FLAGS IN SP2
3652 003242' BRWRTE IMM,<DR.CBA!DR.ABA> ;STRIP ALL BUT THESE
3653 003244' BRWRTE BR,AANDB,SP2 ;AND LOAD IT NTO BR
3654 003246' MEM BR,AORB,SP0 ;OR IN NEW FLAGS
3655
3656 ;CHECK IF RECEIVE OR TRANSMIT OPERATION
3657 003250' BRWRTE IMM,D.RDP ;SET BR TO
3658 003252' BRWRTE BR,ADD,SP.RM0 ;RAM ADDRESS OF D.RDP
3659 ;IF THIS IS A RECEIVE OPERATION,SP6 WILL BE EQUAL TO THIS VALUE
3660 003254' COMP BR,SP6 ;BR=SP6?
3661 003256' Z NXRBUF ;SP6=ADDRESS OF D.RDP,RECEIVE OPERATION
3662
3663 ;TRANSMIT OPERATION,DO SPECIAL THINGS FOR IT
3664 ;READ READ CHARACTER INTO D.OXC IF THE FIRST BUFFER ADDRESS IS ODD
3665 003260' BRWRTE DECA,SP4,INCMAR ;SP4 HAS LOW BYTE OF BUFFER ADDRESS
3666 003262' BR0 30$ ;ADDRESS IS EVEN
3667 ;FIRST TRANSMIT BUFFER ADDRESS IS ODD,MOVE FIRST CHARACTER INTO D.OXC
3668 003264' 10$:
3669 003264' OUTPUT BR,SELB,IBA1 ;SET ADR 7:0 OF XMT BUFFER
3670 003266' BRWRTE SELA,SP5 ;SP5 HAS ADR 15:8
3671 003270' OUTPUT BR,SELB,IBA2 ;SET ADDRESS 15:8
3672 003272' BRWRTE IMM,BIT3!BIT2 ;MASK TO ISOLATE EXT ADDRESS
3673 003274' SP BR,AANDB,SP0 ;SP0=EXT ADDRESS
3674 003276' OUT INCA,ONPR ;START NPR (SP0 HAS EXT ADDRESS)
3675 003300' 20$: BRWRTE IBUS,NPR ;WAIT FOR NPR TO COMPLETE
3676 003302' BR0 20$
3677 003304' 30$:
3678 ; MAR IS NOW POINTING TO D.OXC
3679 003304' MEMINC IBUS,INDAT2 ;SAVE ODD CHARACTER
3680 003306' MEMINC IMM,SYNCNT ;RESET SYNC COUNT
3681 ;RAISE REQUEST TO SEND IF IT IS NOT ALREADY SET
3682 003310' BRWRTE SELA,SP.CS0 ;RTS SET?
3683 003312' BRSHFT
3684 003314' BR1 NXBEXT
3685 003316' MEM IMM,0 ;CLEAR ABORT FLAGS **V0.7**
3686 003320' BRWRTE IMM,DUPRTS ;SET RTS
3687 003322' SPBR BR,AORB,SP.CS0 ;OR MASK WITH ORIGINAL DUP REGISTER
3688 003324' OUTPUT BR,SELB,OUTDA1 ;SHIP IT INTO DUP REGISTER
3689 003326' CALLSB SP.SUB,ADRCSR ;ADDRESS DUP
3690 ;************ ULTIMATE RETURN FOR BA & CONTROL OUT*************
3691
3692 003334' NXBEXT: RTNSUB SP.SB1,P2 ;RETURN
3693
3694 ;***************************************************************
3695
3696 ;ASSIGNING RECEIVE BUFFER,SET FIRST CHR IN BUFFER
3697 003336' NXRBUF:
3698 003336' BRWRTE IMM,DR.LST!DR.ABA!DR.CBA!DR.17!DR.16 ;CLEAR IRRELEVANT BITS *V0.7*
3699 003340' SP MEMX,SELB,SP0 ;SP0=FLAGS
3700 003342' SP BR,AANDB,SP0 ;SAVE THE RELEVANT BITS *V0.7*
3702 003344' MEM INCA,SP0 ;SET FIRST CHR IN BUFFER FLAG
3703 003346' RTNSUB SP.SB1,P2
3704 ;NOTE: RECEIVER WAS ENABLED AT CONTROL TIME
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 67
KDPMCX.MAC 30-DEC-82 03:47 NXDSCP - GET NEXT DESCRIPTOR
3706
3707 .SBTTL ERROR PROCESSING ROUTINES
3708
3709 ;+
3710 ; **DUPRER-ERROR DETECTED BY DUP OR MICROCODE ON THE RECEIVER
3711 ;
3712 ; ENTERED FROM: RCVDON
3713 ;
3714 ; INPUTS:
3715 ; MAR = RECEIVE STATE POINTER
3716 ; OUTPUTS:
3717 ; CONTROL OUT IS GENERATED.
3718 ; FALL INTO RESYNC AND RETURN TO TIMER ROUTINE
3719 ;-
3720
3721 ; DUP HARDWARE DETECTED RECEIVE ERROR
3722
3723 003350' DUPRER:
3724
3725 ; DUP HARDWARE HAS DETECTED AN ERROR ON RECEIVED CHARACTER. ANALYZE IT.
3726
3727 003350' BR4 ERR12 ;CRC ERROR
3728 003352' BRWRTE TWOA,SP.RST ;SHIFT RECEIVE STATUS LEFT
3729 003354' BR7 OVRUN ;CHARACTER OVERRUN
3730 ;
3731 ; OTHERWISE MUST BE ABORT
3732 ;
3733 003356' ABORT:
3734
3735 003356' BRWRTE IMM,ER.ABO ;ERROR CODE
3736 003360' ALWAYS RERROR ;SEND A CONTROL OUT
3737
3738 ;
3739 ; INVALID DDCMP HEADER BCC
3740 ; ENTERED FROM: RHCRC2
3741 ;
3742 003362' ERR10:
3743
3744 003362' BRWRTE IMM,ER.HBC ;ERROR CODE INTO BR
3745 003364' ALWAYS RERROR ;EXECUTE COMMON ERROR SUBROUTINE
3746
3747 ;
3748 ; BCC ERROR ON RECEIVED MESSAGE
3749 ; ENTERED FROM: DUPRER,RDCRC2
3750 003366' ERR12:
3751
3752 003366' BRWRTE IMM,ER.CRC ;ERROR CODE INTO BR
3753 003370' ALWAYS RERROR ;COMMON ERROR CODE
3754
3755
3756 ; CHARACTER OVERRUN
3757
3758 003372' OVRUN:
3759
3760 003372' BRWRTE IMM,ER.OVR ;ERROR CODE
3761 ;FALL INTO RERROR
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 67-1
KDPMCX.MAC 30-DEC-82 03:47 ERROR PROCESSING ROUTINES
3762 ;SEND CONTROL OUT
3763
3764 003374' RERROR:
3765
3766 003374' SP BR,SELB,SP3 ;ERROR CODE INTO SP3
3767 003376' CALLSR SP.SB1,ENTRY2,RERRP2,C.CLOR ;CONTROL OUT SUB ROUTINE
3768 003406' ERREXT: ;RETURN HERE AFTER SUBROUTINE
3769 ; FALL INTO RSNCRT
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 68
KDPMCX.MAC 30-DEC-82 03:47 ERROR PROCESSING ROUTINES
3771
3772 .SBTTL RSNCRT - RESYNC AND RETURN TO TIMER
3773 ;+
3774 ;
3775 ; **RSNCRT-RESYNC RECEIVER AND RETURN TO TIMER POLLING LOOP
3776 ;
3777 ; ENTERED FROM: DUPRER,RDH1,MSGIN
3778 ;
3779 ; INPUTS: NONE
3780 ; OUTPUTS:
3781 ; SET UP RETURN TO TIMER THEN FALL INTO RESYNC
3782 ;-
3783
3784 003406' RSNCRT:
3785 003406' BRADDR TIMRP2 ;RETURN TO TIMER VIA PAGE 2
3786 003410' SP BR,SELB,SP.SB1
3787 ; ALWAYS RESYNC ;AFTER RESYNCING THE RECEIVER
3788 ; FALL INTO RESYNC
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 69
KDPMCX.MAC 30-DEC-82 03:47 RSNCRT - RESYNC AND RETURN TO TIMER
3790
3791 .SBTTL RESYNC-RESYNC DUP-11 RECEIVER
3792
3793 ;+
3794 ; R E S Y N C D U P-1 1 R E C E I V E R
3795 ;
3796 ; ENTERED FROM: RSNCRT
3797 ; CALLED BY: ERREXT,KILLRC,STORE
3798 ;
3799 ;INPUTS:
3800 ; SP.SB1=RETURN ADDRESS
3801 ; SP.CS0=RECEIVE STATUS REGISTER LOW BYTE
3802 ;OUTPUTS:
3803 ; CURRENT DUP-11 RECEIVER ENABLE BIT IN ITS RECEIVE STATUS REGISTER
3804 ; IS CLEARED.IT IS THEN SET THUS INITIALIZING DUP RECEIVER LOGIC.
3805 ; RECEIVER STATE POINTER IS RESET.
3806 ; RETURN TO ADDRESSES IN PAGE TWO
3807 ;-
3808
3809 003412' RESYNC:
3810
3811 ;CLEAR RECEIVE ENABLE BIT
3812 003412' LDMAP SELA,SP.RM1 ;SET UP PAGE ADDRESS
3813 003414' BRWRTE IMM,<377-DUPREN>
3814 003416' SPBR BR,AANDB,SP.CS0 ;LOAD ORIGINAL STATUS WITH RCV ENABLE
3815 003420' OUTPUT BR,SELB,OUTDA1 ;BIT CLEARED INTO OUTDA1
3816 003422' CALLSB SP.SUB,ADRCSR ;SET UP OUT BA TO DUP'S CSR AND DO A
3817 ;BYTE NPR
3818
3819 ;NOW SET RECEIVE ENABLE BIT
3820
3821 003430' BRWRTE IMM,DUPREN ;MASK TO SET REC ENABLE BIT
3822 003432' SPBR BR,AORB,SP.CS0 ;MASK IN THE ORIGINAL STATUS
3823 003434' OUTPUT BR,SELB,OUTDA1 ;AND RECEIVE ENABLE BIT INTO OUTDA1
3824 003436' BRWRTE IMM,DATOB ;WRITE IT INTO
3825 003440' OUT BR,SELB,ONPR ;RECEIVE STATUS REGISTER
3826 ; ***NPR STARTED***
3827 ; RESET RECEIVE PARAMETERS
3828 003442' BRWRTE MEMX,SELB,INCMAR ;BR=D.STS,ADDRESS D.RPTR
3829
3830 ;RESET RECEIVE STATE POINTER FOR DDCMP/BITSTUFF
3831
3832 003444' RSTATE RDH1 ;SET DDCMP INTIAL RECEIVE STATE
3833 003446' BRSHFT
3834 003450' BR4 20$ ;BRANCH IF DEC MODE
3835 003452' RSTATE RB1 ;SET BIT STUFF INITIAL STATE
3836 003454' 20$: BRWRTE IBUS,NPR ;WAIT FOR PREVIOUS NPR TO COMPLETE
3837 003456' BR0 20$ ;NOT YET
3838 003460' RTNSUB SP.SB1,P2 ;RETURN TO PAGE 2
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 70
KDPMCX.MAC 30-DEC-82 03:47 RESYNC-RESYNC DUP-11 RECEIVER
3840
3841 .SBTTL SETRBA-SET OUTBA TO CURRENT INPUT ADDRESS IN USER RECEIVE BUFFER
3842
3843 ;+
3844 ; SET OUTBA TO CURRENT INPUT ADDRESS IN RECEIVE BUFFER
3845 ;
3846 ; CALLED BY: STORE,STRODD,EOFMSG
3847 ;
3848 ; INPUTS:
3849 ; SP.SUB = RETURN ADDRESS ON PAGE 2
3850 ; MAR = D.RBDA
3851 ; OUTPUTS:
3852 ; OBA,OBR = ADDRESS POINTED TO BY MAR
3853 ; MAR = D.RBDF
3854 ;-
3855
3856 003462' SETRBA:
3857
3858 003462' OUTPUT MEMI,SELB,OBA1 ;SET OUTBA 7:0
3859 003464' OUTPUT MEMI,SELB,OBA2 ;SET OUTBA 15:0
3860 003466' SP IBUS,UBBR,SP0 ;SP0=BUS REQUEST REGISTER
3861 003470' BRWRTE IMM,101 ;MASK TO CLEAR ALL BUT VEC XX4,NXM BITS
3862 003472' SP BR,AANDB,SP0
3863 003474' BRWRTE IMM,14 ;MASK TO CLEAR UNWANTED BITS IN EXT. ADDRESS
3864 003476' SP BR,SELB,SP1 ;SAVE THE MASK IN SP1
3865 003500' BRWRTE MEMX,AANDB,SP1 ;BR=JUST THE EXT ADR
3866 003502' OUT BR,AORB,OBR ;OR IN THE EXT ADDRESS
3867 003504' RTNSUB SP.SUB,P2 ;RETURN TO PAGE 2
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 71
KDPMCX.MAC 30-DEC-82 03:47 SETRBA-SET OUTBA TO CURRENT INPUT ADDRESS IN USER RECEIVE BUFFER
3869
3870 .SBTTL DECDCC-DECREMENT DDCMP DATA CHARACTER COUNT
3871
3872 ;+
3873 ;
3874 ; D E C R E M E N T D D C M P D A T A C H A R A C T E R C O U N T
3875 ;
3876 ; CALLED BY: RDDATA
3877 ;
3878 ;INPUT:
3879 ; SP.SUB=RETURN ADDRESS
3880 ;OUTPUT:
3881 ; DDCMP DATA CHARACTER COUNT FOR THE CURRENT MESSAGE IS DECREMENTED BY ONE.
3882 ; C BIT IS SET IF AND ONLY IF THE NEW BYTE COUNT IS NOT -1
3883 ; COMMON CODE IN DECNT IS USED.
3884 ;-
3885
3886 003506' DECDCC:
3887
3888 ;ADDRESS DDCMP DATA CHARACTER COUNT SAVE AREA IN RAM
3889 003506' BRWRTE IMM,D.DCC1
3890 003510' ALWAYS DECNT ;EXECUTE COMMON CODE
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 72
KDPMCX.MAC 30-DEC-82 03:47 DECDCC-DECREMENT DDCMP DATA CHARACTER COUNT
3892
3893 .SBTTL DRCNT/DECNT-DECREMENT BUFFER COUNT
3894
3895 ;+
3896 ;
3897 ; D E C R E M E N T B U F F E R B Y T E C O U N T
3898 ;
3899 ; CALLED BY: STORE
3900 ; DECNT CALLED BY: XMTDON
3901 ;
3902 ;INPUT:
3903 ; SP.SUB=RETURN ADDRESS
3904 ;OUTPUT:
3905 ; BYTE COUNT FOR THE CURRENT LINE IS DECREMENTED BY ONE
3906 ; C BIT IS SET IF AND ONLY IF THE NEW BYTE COUNT IS NOT -1
3907 ; MAR IS LEFT POINTING TO ADDRESS FOLLOWING BYTE COUNT
3908 ;
3909 ; SCRATCH PADS USED: SP1,SP.RM0,SP.SUB
3910 ;-
3911
3912 003512' DRCNT:
3913
3914 ; ADDRESS RECEIVE BYTE COUNT SAVE AREA (D.RBDC)
3915 003512' BRWRTE IMM,D.RBDC
3916
3917 ;
3918 ; FOLLOWING CODE IS SHARED BY DECDCC AND DRCNT.
3919 ; INPUTS: BRG = LINE TABLE OFFSET OF BYTE COUNT
3920 ;
3921
3922 003514' DECNT:
3923 003514' LDMA BR,ADD,SP.RM0
3924 003516' SP MEMX,SELB,SP1 ;GET LOW BYTE COUNT INTO SP1
3925 003520' MEMINC DECA,SP1 ;DECREMENT IT AND WRITE IT BACK
3926 003522' Z 10$ ;BRANCH IF ZERO
3927 003524' INCMA ;INCREMENT PAST HIGH BYTE OF COUNT
3928 003526' RTNSUB SP.SUB,P2 ;RETURN TO CALLLER
3929
3930 ; BORROW FROM HIGH BYTE, DECREMENT HIGH BYTE
3931 003530' 10$: SP MEMX,SELB,SP1 ;GET HIGH BYTE INTO SP1
3932 003532' MEMINC DECA,SP1 ;DECREMENT IT AND STORE IT BACK
3933 003534' RTNSUB SP.SUB,P2 ;RETURN
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 73
KDPMCX.MAC 30-DEC-82 03:47 DRCNT/DECNT-DECREMENT BUFFER COUNT
3935
3936 .SBTTL INCOUT/IC2OUT/INCOB-OUT NPR TO CURRENT ADDRESS+OFFSET
3937
3938 ;+
3939 ;
3940 ; INCREMENT OUTBA AND OUTPUT SUBROUTINE
3941 ;
3942 ; CALLED BY: (INCOB): BAIN
3943 ; (IC2OUT): CONIN,XMTBCZ,COUT
3944 ;
3945 ; INPUTS:
3946 ; BR =INCREMENT
3947 ; SP.SUB =RETURN ADDRESS
3948 ; ENTRY POINTS INCOUT,IC2OUT,INCOB
3949 ;
3950 ; OUTPUTS:
3951 ; THE DEVICE ADDRESS (OUT BA 17:0) FOR AN OUT NPR OPERATION
3952 ; IS INCREMENTED BY A FACTOR EQUAL TO THE CONTENTS OF BR.
3953 ; THEN A BYTE OR WORD TRANSFER WITH OR WITHOUT BUSHOLD IS PERFORMED DEPENDING
3954 ; ON THE ENTRY POINT.
3955 ; RETURNED TO THE ADDRESS IN CURRENT PAGE SPECIFIED BY SP.SUB
3956 ; BUSHOLD ENTRYS REMOVED BECAUSE OF INTERFERENCE PROBLEMS
3957 ;
3958 ; REGISTERS USED:
3959 ; BR,UBBR,SP0,SP1,SP.SUB
3960 ;
3961 ; REGISTERS DESTROYED (OR CHANGED)
3962 ; BR,UBBR,SP0,SP1
3963 ;-
3964
3965 ; ENTRY POINT TO DO BYTE NPR WITHOUT BUS HOLD
3966 003536' INCOB:
3967 003536' SP IMM,221,SP1 ;MASK TO DO BYTE OUT NPR ***TRICKY INSTR***
3968 003540' ALWAYS INCOT1 ;COMMON CODE
3969
3970
3971 ;ENTRY TO INCREMENT BY 2 AND DO WORD TRANSFER
3972 003542' IC2OUT:
3973 003542' BRWRTE IMM,2
3974
3975
3976 ; ENTRY TO DO WORD TRANSFER WITHOUT BUS HOLD
3977 003544' INCOUT:
3978 003544' SP IMM,21,SP1 ;MASK TO DO WORD OUT NPR ****TRICKY INSTR***
3979
3980 003546' INCOT1:
3981 ; INCREMENT OUTBA 7:0
3982
3983 003546' SP IBUS,IOBA1,SP0 ;READ OUTBA7:0 INTO SP0
3984 003550' OUTPUT BR,ADD,OBA1 ;ADD INCREMNT AND RESTORE(SP0 IS SELECTED
3985
3986 ; INCREMENT OUTBA 15:0
3987
3988 003552' 10$: SP IBUS,IOBA2,SP0 ;READ OUTBA15:8 INTO SP0
3989 003554' OUTPUT BR,APLUSC,OBA2 ;ADD CARRY TO OUTBA15:8(SP0 SELECTED)
3990 003556' C 30$ ;CARRY,INCREMENT EXTENDED ADDRESS
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 73-1
KDPMCX.MAC 30-DEC-82 03:47 INCOUT/IC2OUT/INCOB-OUT NPR TO CURRENT ADDRESS+OFFSET
3991 003560' 20$: ALWAYS 40$ ;NPR AND RETURN
3992
3993 ; INCREMENT OUTBA 17:16
3994 003562' 30$: SP IBUS,UBBR,SP0 ;LOAD UBBR INTO DP0
3995 003564' BRWRTE IMM,4 ;ADD ONE TO EXT. ADDRESS
3996 003566' SP BR,ADD,SP0
3997 003570' BRWRTE IMM,115 ;MASK TO SET CLOCK BIT=0
3998 003572' OUT BR,AANDB,OBR ;STORE UPDATED VALUE INTO UBBR
3999
4000 ;NOW DO THE NPR
4001 003574' 40$:
4002 003574' SP IBUS,NPR,SP0 ;GET NPR REGISTER INTO SP0
4003 003576' BRWRTE IMM,155 ;STRIP NPR CONTROL BITS
4004 003600' BRWRTE BR,AANDB,SP0 ;SAVE RESULTS IN BR
4005 003602' BRWRTE BR,AORB,SP1 ;OR IN THE NEW NPR CONTROL BITS
4006 003604' OUT BR,SELB,ONPR ;LOAD THE NEW BYTE INTO NPR REGISTER
4007
4008 ; WAIT FOR NPR TO COMPLETE
4009 003606' WAIT:
4010 003606' 10$: BRWRTE IBUS,NPR ;WAIT FOR NPR TO COMPLTE
4011 003610' BR0 10$
4012 003612' RTNSUB SP.SUB,P0
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 74
KDPMCX.MAC 30-DEC-82 03:47 INCOUT/IC2OUT/INCOB-OUT NPR TO CURRENT ADDRESS+OFFSET
4014
4015 .SBTTL ADRCSR-SET OUTBA=DUP'S CSR ADDRESS
4016
4017 ;+
4018 ;
4019 ; SET OUTBA TO DUP CSR
4020 ;
4021 ; CALLED BY: NXDSCP, RESYNC
4022 ;
4023 ;INPUTS:
4024 ; SP.SUB =RETURN ADDRESS
4025 ; OUTDA1 = VALUE TO BE WRITTEN TO DUP'S CSR0
4026 ;OUTPUTS:
4027 ; OUTBA=ADDRESS OF CURRENT DUP
4028 ; START A BYTE NPR TO CSR0 AND WAIT FOR ITS COMPLETION
4029 ; MAR = D.STS
4030 ;-
4031
4032 003614' ADRCSR:
4033 003614' BRWRTE IMM,D.CSR ;ADDRESS D.CSR
4034 003616' LDMA BR,ADD,SP.RM0
4035 003620' OUTPUT MEMI,SELB,OBA1 ;SET OUTBA 7:0
4036 003622' OUTPUT MEMI,SELB,OBA2 ;SET OUTBA 15:8
4037 003624' SP IBUS,UBBR,SP0 ;GET BUS REQ REG
4038 003626' BRWRTE IMM,101 ;KEEP VEC XX4,NXM BITS
4039 003630' SP BR,AANDB,SP0
4040 003632' BRWRTE IMM,14 ;SET EXT ADDRESS BITS
4041 003634' OUT BR,AORB,OBR ;SP0 IMPLIED FOR B SIDE
4042 003636' BRWRTE IMM,DATOB ;BYTE OUT NPR MASK
4043 003640' OUT BR,SELB,ONPR ;START THE NPR
4044 003642' ALWAYS INCIN1 ;RETURN VIA SP.SUB,P3
4045 ;USE CODE IN INCIN
4046
4047
4048
4049
4050 ;*** PAGE 3 RETURN TO TIMER FOR RECEIVE ROUTINES ***
4052 003644' TIMRP3: ALWAYS TIMRTN ;RETURN TO POLLING LOOP FROM DSRCHG
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 75
KDPMCX.MAC 30-DEC-82 03:47 ADRCSR-SET OUTBA=DUP'S CSR ADDRESS
4054
4055 .SBTTL NXTTBL - ROUTINE TO CALCULATE THE ADDRESS OF THE NEXT TABLE
4056 ; FILE SUBR.MAC
4057
4058 ;+
4059 ; **-NXTTBL-CALCULATE RAM ADDRESS OF NEXT LINE'S TABLE**
4060 ;
4061 ; CALLED FROM: INIT
4062 ;
4063 ; INPUTS:
4064 ; SP.RM0-1 = PREVIOUS RAM TABLE ADDRESS
4065 ;
4066 ; OUTPUTS:
4067 ; MAR AND SP.RM0-1 ARE SET TO ADDRESS OF NEXT TABLE ENTRY
4068 ;-
4069 003646' NXTTBL:
4070 003646' BRWRTE IMM,D.LNG ;GET THE LENGTH OF A RAM TABLE ENTRY
4071 003650' SP BR,ADD,SP.RM0,LDMAR ;POINT TO NEXT ENTRY AND LOAD MAR
4072 003652' NODST BR,ADD,SP.RM0 ;WOULD THIS LINE TABLE CROSS A PAGE BOUNDARY?
4073 003654' C 10$ ;YES, MAKE IT START AT THE BEGINNING OF THE
4074 ;NEXT PAGE
4075 003656' LDMAP SELA,SP.RM1 ;LOAD MAR HIGH
4076 003660' ALWAYS INIT1 ;BACK TO INITIALIZE LOOP
4077
4078 003662' 10$: SP APLUSC,SP.RM1,LDMAPG ;INCREMENT THE PAGE NUMBER AND LOAD
4079 ;MAR HIGH
4080 003664' BRWRTE IMM,0 ;ZERO THE BRG
4081 003666' SP BR,SELB,SP.RM0,LDMAR ;ZERO THE LOW 8 BITS OF THE MAR AND
4082 ;SP.RM0
4083 003670' ALWAYS INIT1 ;BACK TO INITIALIZE LOOP
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 76
KDPMCX.MAC 30-DEC-82 03:47 NXTTBL - ROUTINE TO CALCULATE THE ADDRESS OF THE NEXT TABLE
4085
4086 .SBTTL INCIN/INCINH/IC2IN - EIGHTEEN BIT ADD TO INPUT ADDRESS
4087 ;+
4088 ; **INCIN/INCINH-ROUTINE TO DO 18 BIT TO THE INPUT ADDRESS**
4089 ;
4090 ; CALLED BY: (IC2IN): NXDSCP
4091 ;
4092 ; CALLING SEQUENCE:
4093 ; CALLSB SP.SUB,INCIN,ADDEND ;ADD "ADDEND" TO IN BA AND DO
4094 ; ;AN NPR WITH BUS HOLD CLEAR
4095 ; CALLSB SP.SUB,INCINH,ADDEND ;ADD "ADDEND TO IN BA AND DO
4096 ; ;AN NPR WITH BUS HOLD SET
4097 ; CALLSB SP.SUB,IC2IN ;ADD 2 TO IN BA AND DO AN NPR
4098 ; ;WITH BUS HOLD CLEAR
4099 ; ;N.B. CALLING SEQUENCE IS ONE INSTR LESS
4100 ;
4101 ; INPUTS:
4102 ; INPUT BUFFER ADDRESS MUST BE SET UP IN THE I/O BUS INCLUDING
4103 ; THE EXTENDED MEMORY BITS IN THE NPR CONTROL REGISTER
4104 ;
4105 ; BRG = ADDEND
4106 ;
4107 ; OUTPUTS:
4108 ; THE INPUT ADDRESS IS INCREMENTED BY THE BRG CONTENTS, THE NPR IS STARTED
4109 ; AND THE ROUTINE WAITS FOR IT TO COMPLETE.
4110 ; NOTE: BUS HOLD OPTIONS NOT USED TO PREVENT INTERFERENCE WITH OTHER
4111 ; UNIBUS DEVICES.
4112 ;-
4113 .ENABL LSB
4114
4115 ;*******************************
4116 ;INCINH: SP IMM,0,SP1 ;WRITE A ONE TO SP 1 ***** TRICKY INSTRUCTION **
4117 ; SP BR,INCA,SP1 ;MAKE IT A TWO IN ORDER TO MASK ON BUS HOLD BIT
4118 ; ALWAYS 5$ ;TO COMMON CODE
4119 ;***** ABOVE CODE NOT USED******
4120
4121 003672' IC2IN: BRWRTE IMM,2 ;MOST COMMON INCREMENT VALUE
4122 ;FALL INTO INCIN
4123 003674' INCIN:
4124 ;**************
4125 ; SP IMM,1,SP1 ;WRITE A ONE TO SCRATCH PAD ONE **** TRICKY INSTR.****
4126 ; ;LEAVES BIT 1 A ZERO TO MASK OFF BUS HOLD
4127 ;**************
4128
4129 003674' 5$: SP IBUS,IIBA1,SP0 ;GET THE CURRENT LOW BYTE OF THE INPUT ADDRESS
4130 003676' OUTPUT BR,ADD,IBA1 ;NEW LOW BYTE OF INPUT ADDRESS
4131 003700' SP IBUS,IIBA2,SP0 ;GET THE HIGH BYTE OF THE INPUT ADDRESS
4132 003702' OUTPUT APLUSC,IBA2 ;ADD ANY CARRY FROM PREVIOUS ADD TO HIGH BYTE
4133 003704' SP IBUS,NPR,SP0 ;GET THE NPR REGISTER CONTENTS
4134 003706' C 50$ ;A PLUS C CAUSED A CARRY TO EXTENDED MEMORY BITS
4135 003710' 30$: BRWRTE IMM,16 ;MASK TO EXT. MEM. BIT OVERFLOW
4136 003712' SP BR,AANDB,SP0 ;MASK OFF UNWANTED BITS
4137 003714' OUT BR,INCA,ONPR ;START THE NPR
4138
4139 ; THE FOLLOWING CODE SHARED WITH ADRCSR
4140 003716' INCIN1:
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 76-1
KDPMCX.MAC 30-DEC-82 03:47 INCIN/INCINH/IC2IN - EIGHTEEN BIT ADD TO INPUT ADDRESS
4141 003716' 40$: BRWRTE IBUS,NPR ;READ THE NPR CONTROL REGISTER
4142 003720' BR0 40$ ;WAIT FOR THE NPR TO FINISH
4143 003722' RTNSUB SP.SUB,P3 ;RETURN TO CALLER
4144
4145 003724' 50$: BRWRTE IMM,4 ;VALUE TO ADD TO INCREMENT EXTENDED MEMORY
4146 003726' SP BR,ADD,SP0 ;ADD TO PREVIOUS EXTENDED MEM BITS
4147 003730' ALWAYS 30$ ;BRANCH TO COMMON CODE
4148 .DSABL LSB
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 77
KDPMCX.MAC 30-DEC-82 03:47 INCIN/INCINH/IC2IN - EIGHTEEN BIT ADD TO INPUT ADDRESS
4150
4151 .SBTTL INCMEM - EIGHTEEN BIT ADD TO ADDRESS POINT TO BY MAR
4152 ;+
4153 ; **INCMEM-18 BIT ADD TO RAM**
4154 ;
4155 ; CALLED BY: (INCMEM): RCVEXT, NXBUF
4156 ; (INCMM): XMTDON
4157 ;
4158 ; CALLING SEQUENCE:
4159 ; CALLSB SP.SUB,INCMEM,ADDEND
4160 ; OR
4161 ; CALLSB SP.SUB,INCMM ;TO INCREMENT MEMORY BY STATE OF "C" BIT
4162 ;
4163 ; INPUTS:
4164 ; MAR = ADDRESS IN RAM OF LOW BYTE TO DO ADD
4165 ; BRG = ADDEND
4166 ; INPUTS TO INCMM:
4167 ; MAR = SAME AS ABOVE
4168 ; "C" BIT SET OR CLEAR
4169 ; OUTPUTS:
4170 ; RESULT IS IN RAM
4171 ; MAR = ORIGINAL MAR + 2
4172 ;
4173 ; USES SCRATCH PAD 0
4174 ;-
4175
4176 003732' INCMEM: SP BR,SELB,SP0 ;MOVE ADDEND TO SP 0
4177 003734' MEMINC MEMX,ADD,SP0 ;ADD TO LOW BYTE OF RAM
4178 003736' INCMM:
4179 003736' SP MEMX,SELB,SP0 ;MOVE HIGH BYTE FROM RAM TO SP0
4180 003740' MEMINC BR,APLUSC,SP0 ;ADD CARRY FROM LOW BYTE
4181 003742' C 10$ ;LAST ADD CAUSE CARRY TO EXTENTED MEMORY BITS
4182 003744' RTNSUB SP.SUB,P1 ;ALL DONE
4183 003746' 10$: SP MEMX,SELB,SP0 ;READ EXTENDED MEMORY BITS
4184 ;IN POSITIONS 2 & 3
4185 003750' BRWRTE IMM,4 ;INCREMENT EXTENDED MEMORY BITS
4186 003752' MEM BR,ADD,SP0 ;ADD "ONE" OF HIGH ORDER BITS
4187 003754' RTNSUB SP.SUB,P1 ;RETURN TO CALLER
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 78
KDPMCX.MAC 30-DEC-82 03:47 INCMEM - EIGHTEEN BIT ADD TO ADDRESS POINT TO BY MAR
4189
4190 .SBTTL NXMERR - NONEXISTENT MEMORY ERROR
4191 ;+
4192 ; **NXMERR-MICROPROCESSOR HAS DETECTED A NONEXISTENT MEMORY ERROR**
4193 ;
4194 ; CALLED BY: RDICLR, TIMER
4195 ;
4196 ; OUTPUTS:
4197 ; CONTROL OUT IS GENERATED
4198 ; N.B. THE NXM ERROR IS CHECKED ONLY AFTER SERVICING A USER
4199 ; REQUEST (RQI) AND AFTER SERVICING A DUP NOT AFTER EACH
4200 ; NPR. THUS THE ONLY RELEVANT INFORMATION IS THE LINE NUMBER.
4201 ;-
4202
4203 003756' NXMERR:
4204 003756' BRWRTE IMM,100 ;MASK TO PRESERVE STATE OF XX4 BIT
4205 003760' OUT BR,AANDB,OBR ;CLEAR NXM ERROR BIT
4206 003762' CALLSB SP.SUB,COUTX,ER.NXM ;POST THE ERROR
4207 003772' ALWAYS IDLE ;BACK TO IDLE LOOP
4208
4209 ;(LINES REMOVED) **X1.2**
4210
4211
4212 000040 $KDPML==.-$KDPMC+63./64. ;NUMBER OF 32 WORD BLOCKS
4213 000001 .END
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 79
KDPMCX.MAC 30-DEC-82 03:47 CROSS REFERENCE TABLE -- USER SYMBOLS
AANDB = 000260 189# 1291 1449 1542 1577 1666 1750 1775 1777 1823 2114 2211 2215
2219 2716 2775 2844 3016 3216 3219 3568 3579 3653 3673 3700 3814
3862 3865 3998 4004 4039 4136 4205
ABORT 003356R 002 3733#
ADD = 000000 178# 1001 1020 1146 1231 1317 1373 1582 1634 1652 1688 1721 1754
1758 1836 1907 2110 2173 2209 2217 2334 2476 2589 2600 2645 2666
2730 2777 2816 2870 2945 3083 3113 3172 3224 3228 3360 3469 3523
3583 3658 3923 3984 3996 4034 4071 4072 4130 4146 4177 4186
ADDC = 000020 179#
ADRCSR 003614R 002 3689 3816 4032#
ALCOND= 000400 65# 1003 1023 1056 1098 1152 1160 1165 1183 1189 1193 1216 1254
1266 1298 1366 1385 1413 1417 1421 1461 1498 1529 1543 1553 1587
1630 1677 1689 1719 1766 1772 1779 1793 1803 1843 1853 1854 1860
1880 1920 1950 1974 2040 2062 2133 2141 2178 2225 2255 2284 2320
2341 2368 2400 2411 2435 2441 2453 2478 2502 2522 2546 2581 2602
2611 2650 2655 2662 2671 2679 2682 2685 2717 2731 2768 2789 2793
2848 2858 2872 2883 2917 2919 2954 2962 2976 2979 2992 3024 3035
3052 3087 3120 3127 3241 3278 3305 3415 3470 3474 3480 3488 3531
3570 3630 3640 3689 3692 3703 3736 3745 3753 3767 3816 3838 3867
3890 3928 3933 3968 3991 4012 4044 4052 4076 4083 4143 4147 4182
4187 4206 4207
AORB = 000300 190# 1453 1561 1685 1752 2340 2845 3220 3423 3487 3621 3654 3687
3822 3866 4005 4041
AORNB = 000240 188#
APLUSC= 060100 182# 3989 4078 4132 4180
AXORB = 000320 191# 1349 1825 2543
BAALT 001070R 002 1655 1682#
BAIN 000752R 002 1254 1614#
BAIN0 001014R 002 1648# 2670
BAIN1 000776R 002 1630 1633#
BAIN2 001032R 002 1661# 1689
BAORC 002660R 002 2992 3264#
BAORE 002560R 002 3120 3156#
BAOX 002712R 002 2768 3323#
BARCV 000774R 002 1626 1632#
BASEIN 000530R 002 1255 1444#
BASEI1 000550R 002 1456#
BIT0 = 000001 766# 793 824 847 854 896 903 924 929
BIT1 = 000002 767# 792 846 855 891 897 904 913 930
BIT2 = 000004 768# 791 823 845 892 905 931 1620 3672
BIT3 = 000010 769# 790 822 844 919 1620 3672
BIT4 = 000020 770# 789 843 854 893 906 914 920
BIT5 = 000040 771# 788 821
BIT6 = 000100 772# 787 820 907
BIT7 = 000200 773# 785 786 819 894 908 915 921
BOUT 002576R 002 3206#
BOUTR0 000522R 002 1413# 3236
BR = 060000 48# 181 182 183 184 185 186 994 995 996 997 998 1001
1009 1012 1013 1020 1096 1143 1146 1164 1228 1230 1231 1239 1262
1291 1295 1296 1297 1309 1311 1315 1316 1317 1320 1327 1335 1343
1349 1364 1373 1379 1384 1449 1453 1460 1461 1506 1515 1542 1543
1560 1564 1575 1577 1582 1587 1621 1634 1635 1652 1659 1666 1671
1674 1677 1685 1688 1721 1724 1750 1752 1754 1758 1775 1777 1778
1803 1819 1823 1825 1836 1840 1854 1857 1879 1907 1913 2006 2062
2110 2114 2120 2124 2128 2173 2209 2211 2215 2217 2219 2334 2340
2435 2476 2546 2581 2589 2600 2601 2602 2645 2655 2659 2661 2662
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 79-1
KDPMCX.MAC 30-DEC-82 03:47 CROSS REFERENCE TABLE -- USER SYMBOLS
2666 2713 2716 2721 2723 2730 2765 2768 2775 2777 2779 2816 2844
2845 2857 2858 2870 2882 2883 2911 2916 2945 2953 2954 2962 2979
2980 2982 2986 2989 3016 3035 3039 3041 3065 3083 3087 3113 3127
3130 3133 3161 3169 3172 3173 3216 3219 3220 3224 3228 3231 3237
3269 3274 3297 3299 3300 3304 3328 3353 3360 3361 3390 3417 3423
3457 3466 3469 3523 3531 3568 3579 3583 3620 3630 3640 3653 3654
3658 3660 3669 3671 3673 3687 3688 3689 3700 3766 3767 3786 3814
3815 3816 3822 3823 3825 3862 3864 3866 3923 3984 3989 3996 3998
4004 4005 4006 4034 4039 4041 4043 4071 4072 4081 4130 4136 4137
4146 4176 4180 4186 4205 4206
BRECON= 000000 64#
BR0CON= 002000 68# 1187 1219 1253 1255 1264 1308 1346 1381 1495 1517 1637 1726
1765 1802 1811 1827 1842 2406 2521 2788 2970 2991 2999 3046 3115
3135 3413 3627 3666 3676 3837 4011 4142
BR1CON= 002400 69# 1252 1350 1358 1526 1626 1740 1788 1998 2316 2639 2766 2813
3684
BR4CON= 003000 70# 1053 1158 1215 1222 1536 1549 1643 1655 1718 1738 1756 1761
1771 1786 1869 1876 2399 2449 2501 2577 2670 2711 2780 2792 2819
2914 2948 3240 3727 3834
BR7CON= 003400 71# 1002 1088 1094 1182 1353 1365 1511 1521 1571 1675 1737 1798
1871 1914 2035 2610 2764 3526 3563 3729
BSEL0 = 120000 103#
BSEL1 = 120020 104#
BSEL2 = 120040 105#
BSEL3 = 120060 106#
BSEL4 = 120100 107#
BSEL5 = 120120 108#
BSEL6 = 120140 109#
BSEL7 = 120160 110#
CCOND = 001000 66# 1329 1851 2437 2727 2759 2965 3990 4073 4134 4181
CHKODD 002440R 002 2965 2995#
CONIN 000564R 002 1253 1493#
CONIN2 000630R 002 1519#
CONIN3 000674R 002 1546#
COUT 002576R 002 2662 3207#
COUTX 002674R 002 2546 2954 3296# 4206
COUX 002720R 002 2883 3352#
C.BAOR= 000204 955# 3165 3273
C.BAOX= 000200 954# 3332
C.CLOR= 000205 957# 2656 3767
C.CLOX= 000201 956# 2649 2883 3303
DATI = 000001 223# 1341 1377 1620 1722
DATIH = 000003 224#
DATO = 000021 225# 936# 1514 1837 3051
DATOB = 000221 227# 937# 2847 2983 3063 3132 3824 4042
DATOBH= 000223 228#
DATOH = 000023 226#
DECA = 060160 185# 1327 1497 1873 2726 2908 2980 3128 3665 3925 3932
DECDCC 003506R 002 2435 3886#
DECNT 003514R 002 1803 3890 3922#
DECP2 002100R 002 2435 2685#
DISP = 000371 1543# 1854# 2602# 2655# 2662# 2768# 2962# 2979# 3035# 3127# 3630# 3640# 3689#
3816# 4206#
DLE = 000220 945# 2127
DRCNT 003512R 002 2962 3912#
DR.ABA= 000100 820# 841 1684 3578 3652 3698
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 79-2
KDPMCX.MAC 30-DEC-82 03:47 CROSS REFERENCE TABLE -- USER SYMBOLS
DR.CBA= 000040 821# 842 1657 3567 3652 3698
DR.FST= 000001 824# 3014 3701
DR.LST= 000200 819# 840 3698
DR.16 = 000004 823# 3698
DR.17 = 000010 822# 3698
DSRCHG 001722R 002 1350 2540#
DS.CRI= 000200 785# 1525
DS.DEC= 000040 788# 1535 1537
DS.DSR= 000002 792# 2541 2542
DS.HDX= 000010 790# 1558 2843
DS.IGN= 000020 789# 2113 2335
DS.NUM= 000001 793# 2113 2139
DS.QSC= 000100 787# 2113
DS.SEC= 000004 791# 1535
DS.SLT= 000200 786# 2113
DT.ABT= 000021 854# 2647 2871
DT.AB1= 000002 855# 2647 2871
DUPCPE= 000020 906#
DUPCRI= 000002 913# 1528
DUPDEC= 000200 915# 1538
DUPDR = 000001 924# 1459
DUPDSR= 000002 897#
DUPDTR= 000002 891# 1502
DUPHDX= 000010 919# 1558 1559
DUPOVR= 000100 907#
DUPRAB= 000004 905#
DUPRDN= 000200 894#
DUPRE = 000200 908#
DUPREM= 000002 904#
DUPREN= 000020 893# 1502 3813 3821
DUPRER 003350R 002 1914 3723#
DUPRSM= 000001 903#
DUPRTS= 000004 892# 1776 3686
DUPSAM= 000020 914# 1528
DUPSND= 000020 920# 1792
DUPSSY= 000001 896# 1509
DUPTAB= 000004 931# 2915 2918
DUPTEM= 000002 930# 2714 2856 2915
DUPTSM= 000001 929# 1878 2714 2722 2918
DUPTXD= 000200 921#
DX.ABA= 000100 841#
DX.CBA= 000040 842#
DX.EOM= 000002 846# 2667
DX.LST= 000200 840# 2667
DX.SOM= 000001 847# 1872
DX.SYN= 000020 843# 2715
DX.16 = 000004 845#
DX.17 = 000010 844#
D.ARLP= 000014 808# 810 1687 3582
D.AXLP= 000035 830# 832
D.CSR = 000002 782# 784 4033
D.DCC1= 000007 799# 801 804 2172 3889
D.DCC2= 000010 801# 806 2208
D.DUMM= 000042 834# 836
D.ERC = 000031 826# 828
D.LNG = 000060 857# 4070
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 79-3
KDPMCX.MAC 30-DEC-82 03:47 CROSS REFERENCE TABLE -- USER SYMBOLS
D.ORBA= 000021 812# 814
D.ORBC= 000017 810# 812 2588 3223
D.OXBC= 000040 832# 834
D.OXC = 000052 849# 851
D.RBD = 000024 814# 815 826
D.RBDA= 000026 817# 818 3082 3112
D.RBDC= 000024 815# 817 3227 3915
D.RBDF= 000030 818# 1651 2665 2944 3522
D.RDP = 000011 806# 808 1632 1651 1687 2599 2665 3171 3223 3227 3277 3522 3582
3657
D.RPTR= 000005 795# 797 2475
D.RSTR= 000000 778# 780
D.SADR= 000006 797# 799
D.SILO= 000007 804#
D.STS = 000004 784# 795 1906 2109 2216 2333
D.SYNC= 000053 851# 853
D.TIME= 000001 780# 782
D.XBD = 000045 836# 837 849
D.XBDA= 000047 838# 839
D.XBDC= 000045 837# 838 1803
D.XBDF= 000051 839# 1757 2729 2776 2815
D.XDP = 000032 828# 830 1629 3356
D.XSTS= 000054 853# 1581 1753 2644 2869
ENQ = 000005 944# 2123
ENTRY1 002724R 002 3278 3359#
ENTRY2 002566R 002 3168# 3767
EOFBUF 002400R 002 2968#
EOFMSG 002522R 002 2062 2581 3108#
EOM = 000020 959# 3160
ERREXT 003406R 002 2682 3768#
ERR10 003362R 002 2400 3742#
ERR12 003366R 002 2502 3727 3750#
ER.ABO= 000006 963# 3735
ER.CRC= 000012 965# 3752
ER.DSR= 000016 967# 2546
ER.HBC= 000010 964# 3744
ER.KIL= 000026 971# 2660
ER.NBA= 000014 966# 2954
ER.NXM= 000020 968# 4206
ER.OVR= 000024 970# 3760
ER.UNR= 000022 969# 2881
HLDBUS= 000002 938#
IBA1 = 002004 163# 1336 1373 1618 1721 1819 3617 3669 4130
IBA2 = 002005 164# 1339 1619 1820 3618 3671 4132
IBUS = 020000 46# 1000 1051 1087 1093 1157 1181 1214 1218 1221 1229 1249 1263
1307 1345 1347 1351 1352 1380 1382 1383 1447 1451 1494 1500 1501
1507 1516 1520 1524 1547 1570 1580 1618 1619 1624 1636 1638 1642
1662 1663 1664 1725 1727 1728 1729 1739 1748 1773 1785 1787 1826
1828 1830 1834 1841 1870 2520 2637 2668 2763 2774 2990 3134 3214
3626 3628 3629 3631 3632 3634 3635 3641 3642 3675 3679 3836 3860
3983 3988 3994 4002 4010 4037 4129 4131 4133 4141
IC2IN 003672R 002 3630 3640 4121#
IC2OUT 003542R 002 1543 1587 2858 3240 3972#
IDLE 000070R 002 1051# 1094 1098 1118 1160 1165 1189 1222 1266 4207
IDLE1 000074R 002 1054# 1312
IIBA1 = 020100 118# 1351 1727 4129
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 79-4
KDPMCX.MAC 30-DEC-82 03:47 CROSS REFERENCE TABLE -- USER SYMBOLS
IIBA2 = 020120 119# 1728 4131
IMM = 000000 45# 999 1008 1016 1017 1026 1027 1029 1030 1054 1055 1095 1116
1138 1141 1142 1145 1153 1155 1163 1185 1192 1227 1238 1261 1287
1294 1310 1313 1341 1371 1377 1448 1452 1459 1461 1496 1502 1509
1512 1514 1525 1527 1528 1532 1535 1537 1538 1543 1552 1559 1576
1581 1583 1620 1629 1632 1651 1657 1665 1684 1687 1720 1722 1749
1751 1753 1757 1774 1776 1792 1803 1821 1835 1837 1852 1854 1856
1878 1906 2109 2113 2119 2123 2127 2139 2172 2208 2210 2216 2218
2333 2335 2475 2542 2546 2588 2599 2602 2644 2647 2649 2655 2656
2660 2662 2665 2667 2712 2714 2715 2720 2722 2729 2768 2773 2776
2814 2815 2821 2843 2847 2856 2869 2871 2881 2883 2910 2915 2918
2944 2954 2962 2979 2983 3014 3035 3051 3063 3082 3087 3112 3127
3132 3160 3165 3171 3215 3218 3223 3227 3268 3273 3277 3298 3303
3327 3332 3356 3402 3403 3414 3416 3453 3464 3465 3468 3473 3486
3522 3531 3567 3578 3582 3619 3630 3640 3652 3657 3672 3680 3685
3686 3689 3698 3735 3744 3752 3760 3767 3813 3816 3821 3824 3861
3863 3889 3915 3967 3973 3978 3995 3997 4003 4033 4038 4040 4042
4070 4080 4121 4135 4145 4185 4204 4206
INCA = 060060 181# 1015 1309 1810 1824 3674 3702 4137
INCIN 003674R 002 4123#
INCIN1 003716R 002 4044 4140#
INCMAR= 014000 78# 80 999 1011 1021 1028 1029 1238 1239 1335 1447 1448 1496
1497 1500 1501 1506 1507 1564 1577 1580 1662 1663 1810 1828 1852
1857 2006 2033 2037 2314 2721 2723 2983 3011 3014 3016 3039 3128
3231 3237 3408 3409 3410 3419 3423 3424 3588 3589 3628 3629 3631
3634 3635 3636 3637 3642 3647 3648 3649 3650 3665 3679 3680 3828
3925 3927 3932 4177 4180
INCMEM 003732R 002 3087 3531 4176#
INCMM 003736R 002 1854 4178#
INCOB 003536R 002 1461 3966#
INCON = 120000 88# 1157 1181 1218
INCOT1 003546R 002 3968 3980#
INCOUT 003544R 002 3977#
INDAT1= 020000 114# 1352 1382 1638 1729 1785 1828 3628 3631 3634
INDAT2= 020020 115# 1347 1383 1739 1787 1830 1870 2763 3629 3632 3635 3641 3642
3679
INIT 000000R 002 994#
INIT1 000030R 002 1010# 4076 4083
IOBA1 = 020140 120# 1618 1773 1834 2774 3983
IOBA2 = 020160 121# 1619 3988
IODAT1= 020040 116#
IODAT2= 020060 117#
JUMP = 100000 234# 1002 1003 1014 1023 1053 1056 1088 1094 1098 1118 1144 1151
1152 1158 1160 1165 1182 1183 1187 1189 1193 1215 1216 1219 1222
1252 1253 1254 1255 1264 1266 1298 1308 1312 1326 1329 1346 1350
1353 1358 1365 1366 1381 1385 1413 1417 1421 1461 1495 1498 1511
1517 1521 1526 1529 1536 1543 1549 1553 1571 1587 1626 1630 1637
1643 1655 1675 1677 1689 1718 1719 1726 1737 1738 1740 1756 1761
1765 1766 1771 1772 1779 1786 1788 1793 1798 1802 1803 1811 1827
1842 1843 1851 1853 1854 1860 1869 1871 1876 1880 1914 1920 1950
1974 1998 2035 2040 2062 2121 2125 2129 2133 2141 2178 2225 2255
2284 2316 2320 2328 2341 2368 2399 2400 2406 2411 2435 2437 2441
2449 2453 2478 2501 2502 2521 2522 2546 2577 2581 2602 2610 2611
2639 2650 2655 2662 2670 2671 2679 2682 2685 2711 2717 2727 2731
2759 2764 2766 2768 2780 2788 2789 2792 2793 2813 2819 2848 2858
2872 2883 2914 2917 2919 2948 2954 2962 2965 2970 2976 2979 2991
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 79-5
KDPMCX.MAC 30-DEC-82 03:47 CROSS REFERENCE TABLE -- USER SYMBOLS
2992 2999 3024 3035 3046 3052 3087 3115 3120 3127 3135 3240 3241
3278 3305 3413 3415 3456 3458 3467 3470 3474 3480 3488 3526 3531
3563 3570 3627 3630 3640 3661 3666 3676 3684 3689 3692 3703 3727
3729 3736 3745 3753 3767 3816 3834 3837 3838 3867 3890 3926 3928
3933 3968 3990 3991 4011 4012 4044 4052 4073 4076 4083 4134 4142
4143 4147 4181 4182 4187 4206 4207
KILCOM 002042R 002 2650 2658#
KILLAL 002012R 002 1643 2633#
KILLC1 002056R 002 2664#
KILLRC 002032R 002 2639 2654#
KILLXM 002020R 002 2643#
LDMAPG= 004000 76# 1017 1026 1055 1234 1297 1313 1319 1908 3403 3524 3812 4075
4078
LDMAR = 010000 77# 1020 1027 1054 1116 1117 1138 1155 1231 1236 1242 1296 1317
1320 1582 1652 1659 1688 1754 1758 1907 2110 2173 2209 2217 2334
2476 2589 2645 2666 2730 2777 2816 2870 2945 3083 3113 3211 3224
3228 3394 3402 3404 3453 3464 3485 3523 3530 3583 3587 3616 3923
4034 4071 4081
LINENM= 120060 91# 1229
LSILO 001446R 002 2031#
MAIN = 120020 89#
MARH = 120320 101#
MARL = 120300 100#
MAXDEV= 000020 870 974# 1008 1310
MEMI = 054000 80# 1122 1126 1127 1131 1132 1134 1139 1232 1240 1241 1318 1322
1336 1339 1450 1820 1909 2592 2593 2594 2595 2596 3212 3213 3225
3229 3230 3395 3396 3454 3584 3585 3586 3617 3618 3621 3858 3859
4035 4036
MEMX = 040000 47# 80 1056 1117 1140 1150 1234 1319 1325 1344 1454 1513 1534
1561 1653 1686 1755 1759 1801 1808 1859 1920 2036 2038 2115 2327
2543 2725 2778 2817 2946 2969 2985 2997 3042 3045 3114 3131 3217
3226 3238 3397 3404 3455 3487 3525 3651 3699 3828 3865 3924 3931
4177 4179 4183
MOVE = 000000 373# 994 995 996 997 998 999 1000 1001 1008 1009 1011 1012
1015 1016 1017 1020 1021 1022 1026 1027 1028 1029 1030 1051 1054
1055 1087 1093 1095 1096 1097 1115 1116 1117 1122 1126 1127 1131
1132 1134 1138 1139 1140 1141 1142 1145 1146 1153 1155 1157 1159
1162 1163 1164 1181 1185 1186 1188 1191 1192 1214 1218 1221 1223
1227 1228 1229 1230 1231 1232 1234 1236 1238 1239 1240 1241 1242
1249 1261 1262 1263 1287 1291 1294 1295 1296 1297 1307 1309 1310
1313 1315 1316 1317 1318 1319 1320 1322 1325 1327 1335 1336 1339
1341 1343 1344 1345 1347 1349 1351 1352 1357 1364 1371 1373 1377
1379 1380 1382 1383 1384 1447 1448 1449 1450 1451 1452 1453 1454
1459 1460 1461 1494 1496 1497 1500 1501 1502 1506 1507 1509 1512
1513 1514 1515 1516 1520 1524 1525 1527 1528 1532 1534 1535 1537
1538 1542 1543 1547 1548 1552 1559 1560 1561 1564 1569 1570 1572
1575 1576 1577 1580 1581 1582 1583 1587 1618 1619 1620 1621 1624
1625 1629 1632 1634 1635 1636 1638 1642 1651 1652 1653 1654 1657
1659 1662 1663 1664 1665 1666 1667 1668 1669 1670 1671 1674 1677
1684 1685 1686 1687 1688 1716 1717 1720 1721 1722 1724 1725 1727
1728 1729 1739 1748 1749 1750 1751 1752 1753 1754 1755 1757 1758
1759 1760 1769 1770 1773 1774 1775 1776 1777 1778 1785 1787 1792
1801 1803 1808 1810 1819 1820 1821 1823 1824 1825 1826 1828 1830
1834 1835 1836 1837 1840 1841 1852 1854 1856 1857 1859 1870 1873
1874 1875 1878 1879 1906 1907 1908 1909 1913 1948 1971 1973 2002
2006 2033 2036 2037 2038 2039 2061 2062 2105 2109 2110 2113 2114
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 79-6
KDPMCX.MAC 30-DEC-82 03:47 CROSS REFERENCE TABLE -- USER SYMBOLS
2115 2119 2123 2127 2139 2168 2172 2173 2174 2204 2208 2209 2210
2211 2215 2216 2217 2218 2219 2251 2280 2310 2314 2315 2333 2334
2335 2340 2364 2395 2405 2435 2448 2475 2476 2477 2520 2542 2543
2546 2573 2576 2581 2588 2589 2592 2593 2594 2595 2596 2599 2600
2601 2602 2608 2637 2638 2644 2645 2647 2649 2655 2656 2659 2660
2661 2662 2665 2666 2667 2668 2669 2709 2710 2712 2713 2714 2715
2716 2720 2721 2722 2723 2725 2726 2729 2730 2763 2765 2768 2773
2774 2775 2776 2777 2778 2779 2790 2791 2814 2815 2816 2817 2818
2821 2843 2844 2845 2847 2856 2857 2858 2869 2870 2871 2881 2882
2883 2908 2910 2911 2912 2913 2915 2916 2918 2944 2945 2946 2947
2952 2953 2954 2962 2969 2979 2980 2982 2983 2985 2986 2988 2989
2990 2997 3014 3016 3021 3035 3039 3041 3042 3045 3051 3063 3065
3082 3083 3087 3112 3113 3114 3127 3128 3130 3131 3132 3133 3134
3160 3161 3165 3169 3171 3172 3173 3211 3212 3213 3214 3215 3216
3217 3218 3219 3220 3223 3224 3225 3226 3227 3228 3229 3230 3231
3236 3237 3238 3239 3268 3269 3273 3274 3277 3297 3298 3299 3300
3303 3304 3327 3328 3332 3353 3356 3360 3361 3389 3390 3394 3395
3396 3397 3402 3403 3404 3408 3409 3410 3411 3412 3414 3416 3417
3419 3420 3421 3422 3423 3424 3453 3454 3455 3464 3465 3468 3469
3473 3479 3485 3486 3487 3522 3523 3524 3525 3530 3531 3562 3567
3568 3578 3579 3582 3583 3584 3585 3586 3587 3588 3589 3590 3616
3617 3618 3619 3620 3621 3626 3628 3629 3630 3631 3632 3634 3635
3636 3637 3640 3641 3642 3647 3648 3649 3650 3651 3652 3653 3654
3657 3658 3665 3669 3670 3671 3672 3673 3674 3675 3679 3680 3682
3683 3685 3686 3687 3688 3689 3698 3699 3700 3702 3728 3735 3744
3752 3760 3766 3767 3785 3786 3812 3813 3814 3815 3816 3821 3822
3823 3824 3825 3828 3832 3833 3835 3836 3858 3859 3860 3861 3862
3863 3864 3865 3866 3889 3915 3923 3924 3925 3931 3932 3967 3973
3978 3983 3984 3988 3989 3994 3995 3996 3997 3998 4002 4003 4004
4005 4006 4010 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042
4043 4070 4071 4075 4078 4080 4081 4121 4129 4130 4131 4132 4133
4135 4136 4137 4141 4145 4146 4176 4177 4179 4180 4183 4185 4186
4204 4205 4206
MSGIN 001736R 002 2411 2501 2570#
MSGIN1 002004R 002 2581 2606 2607#
NMSENT= 000035 867# 868
NPR = 120200 96# 1000 1345 1380 1516 1636 1725 1826 1841 2520 2990 3134 3626
3675 3836 4002 4010 4133 4141
NPRWP1 001714R 002 2518 2519# 2521 3087
NXBEXT 003334R 002 3684 3692#
NXBUF 003064R 002 3389 3518#
NXDP1 = 001066R 002 1679# 3531
NXDSCP 003150R 002 1677 3613#
NXDSC1 003230R 002 2602 3646#
NXLST 003110R 002 3526 3557#
NXMERR 003756R 002 1264 1308 4203#
NXRBUF 003336R 002 3661 3697#
NXTTBL 003646R 002 1023 4069#
OBA1 = 002006 165# 1240 1450 1727 1775 1836 2775 2982 3130 3212 3858 3984 4035
OBA2 = 002007 166# 1241 1454 1728 3213 3859 3989 4036
OBR = 001011 142# 1164 1239 1291 1752 3220 3866 3998 4041 4205
OBSEL0= 001000 148#
OBSEL1= 001001 149#
OBSEL2= 001002 150#
OBSEL3= 001003 151#
OBSEL4= 001004 152#
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 79-7
KDPMCX.MAC 30-DEC-82 03:47 CROSS REFERENCE TABLE -- USER SYMBOLS
OBSEL5= 001005 153#
OBSEL6= 001006 154#
OBSEL7= 001007 155#
OCON = 120040 90# 1087 1093 1214 1221 1249 1624 2637
OIDAT1= 002000 159#
OIDAT2= 002001 160#
OINCON= 001000 133# 994
OLINEN= 001003 136# 1122
OMAIN = 001001 134#
OMARH = 001015 146#
OMARL = 001014 145#
ONPR = 001010 141# 1343 1379 1515 1621 1724 1824 1840 2986 3065 3133 3621 3674
3825 4006 4043 4137
OOCON = 001002 135# 995 1096 1134 1186 1262
OPCHGH= 001013 144#
OPCLOW= 001012 143#
OPORT1= 001004 137# 1126
OPORT2= 001005 138# 1127
OPORT3= 001006 139# 1131
OPORT4= 001007 140# 1132
OUTDA1= 002002 161# 1506 1524 1534 1564 1778 1828 1859 2713 2721 2845 2911 2985
3042 3131 3229 3688 3815 3823
OUTDA2= 002003 162# 1460 1513 1542 1577 1825 1857 1879 2714 2723 2857 2916 3041
3231
OVRUN 003372R 002 3729 3758#
OXREG0= 002010 167#
OXREG1= 002011 168#
OXREG2= 002012 169#
OXREG3= 002013 170#
OXREG4= 002014 171#
OXREG5= 002015 172#
OXREG6= 002016 173#
OXREG7= 002017 174#
PCHGH = 120260 99#
PCLOW = 120240 98#
PORT1 = 120100 92# 1500 1501 1662
PORT2 = 120120 93# 1663
PORT3 = 120140 94# 1447 1524 1580
PORT4 = 120160 95# 1451 1494 1507 1520 1547 1570 1642 1664 2668
P.LADR= 001457 870# 1017 1227 1313
P.MSTA= 002000 861# 862
P.NPR = 001517 868# 870 1029 1141 3473
P.PLST= 001775 865# 868 869
P.PORT= 001775 864# 865 1026 1027 1054 1055 1155
P.SLIN= 001776 863# 864 1138 3402 3403 3453 3464
P.SLOT= 001777 862# 863 1116
P0 = 000000 216# 2040 4012
P1 = 004000 217# 4182 4187
P2 = 010000 218# 3570 3692 3703 3838 3867 3928 3933
P3 = 014000 219# 3470 3474 3488 4143
QPDATA 002730R 002 1413 3241 3388#
QPDAT1 002744R 002 3305 3401#
RBDONE 001464R 002 1998 2060#
RB1 001426R 002 1572 1947# 2061 3835
RB2 001432R 002 1948 1970#
RB3 001440R 002 1971 1994#
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 79-8
KDPMCX.MAC 30-DEC-82 03:47 CROSS REFERENCE TABLE -- USER SYMBOLS
RB3P0 000526R 002 1421# 2002
RCVDON 001410R 002 1365 1905#
RCVEXT 002506R 002 3024 3076#
RDATA1 001666R 002 2436# 2685
RDCRC1 001700R 002 2441 2471#
RDCRC2 001710R 002 2477 2497#
RDDATA 001660R 002 2395 2431#
RDH1 001474R 002 1569 2103# 2573 3832
RDH2 001540R 002 2105 2164#
RDH3 001552R 002 2168 2200#
RDH4 001600R 002 2204 2247#
RDH5 001604R 002 2251 2276#
RDH6 001610R 002 2280 2306#
RDH6A 001634R 002 2141 2225 2340#
RDICLR 000250R 002 1188 1213#
RDICL1 000262R 002 1191 1220#
RDOCLR 000102R 002 1086# 1159
RDOCL1 000106R 002 1092# 1162
RDOSET 000122R 002 1028 1114# 1183 1223
RDOST1 000202R 002 1088 1156#
RDOST2 000212R 002 1158 1162#
RDOST3 000216R 002 1164# 1193
RERROR 003374R 002 3736 3745 3753 3764#
RERRP2 002076R 002 2682# 3767
RESYNC 003412R 002 2655 2954 3809#
RHCRC1 001640R 002 2310 2360#
RHCRC2 001644R 002 2364 2391#
RP = 004000 1920 1928#
RQICL2 000334R 002 1261# 1461 1587 1675 2671
RQICR2 002072R 002 1677 2671#
RQISET 000222R 002 1097 1115 1181#
RQIST1 000242R 002 1187 1191# 1219
RSNCRT 003406R 002 2133 2610 3784#
SELA = 060200 186# 1021 1022 1186 1236 1242 1320 1364 1384 1659 1716 1769 1874
1908 1913 2033 2037 2039 2040 2174 2314 2405 2448 2576 2709 2765
2790 2912 3021 3039 3045 3211 3394 3408 3409 3410 3411 3412 3424
3470 3474 3479 3485 3488 3524 3530 3570 3587 3588 3589 3590 3616
3636 3637 3647 3648 3649 3650 3670 3682 3692 3703 3812 3838 3867
3928 3933 4012 4075 4143 4182 4187
SELB = 000220 187# 994 995 996 997 998 1009 1012 1056 1096 1117 1122 1126
1127 1131 1132 1134 1139 1140 1164 1228 1232 1234 1239 1240 1241
1262 1295 1296 1297 1315 1318 1319 1322 1325 1335 1336 1339 1343
1344 1379 1450 1454 1460 1461 1506 1513 1515 1534 1543 1560 1564
1587 1621 1635 1653 1671 1677 1686 1724 1755 1759 1778 1801 1803
1808 1819 1820 1840 1854 1857 1859 1879 1909 1920 2006 2036 2038
2062 2115 2435 2546 2581 2592 2593 2594 2595 2596 2601 2602 2655
2659 2661 2662 2713 2721 2723 2725 2768 2778 2779 2817 2857 2858
2882 2883 2911 2916 2946 2953 2954 2962 2969 2979 2982 2985 2986
2989 2997 3035 3041 3042 3065 3087 3114 3127 3130 3131 3133 3161
3169 3173 3212 3213 3217 3225 3226 3231 3237 3238 3269 3274 3297
3299 3300 3304 3328 3353 3361 3390 3395 3396 3397 3404 3417 3454
3455 3525 3531 3584 3585 3586 3617 3618 3620 3630 3640 3651 3669
3671 3688 3689 3699 3766 3767 3786 3815 3816 3823 3825 3828 3858
3859 3864 3924 3931 4006 4035 4036 4043 4081 4176 4179 4183 4206
SENTRY= 000006 866# 868 869 1145 3468
SETRBA 003462R 002 2979 3035 3127 3856#
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 79-9
KDPMCX.MAC 30-DEC-82 03:47 CROSS REFERENCE TABLE -- USER SYMBOLS
SHFTBR= 001400 55# 1357 1548 1625 1654 1667 1668 1669 1670 1717 1760 1770 1875
2315 2638 2669 2710 2779 2791 2818 2913 2947 3239 3683 3833
SILOED= 001767 869# 1142 3465
SOH = 000201 943# 2119
SPBRX = 003400 59# 1000 1051 1157 1263 1307 1347 1352 1496 1520 1570 1653 1755
1777 1801 1808 1823 2778 2946 2969 3114 3298 3422 3525 3687 3814
3822
SPX = 003000 58# 996 997 998 1009 1012 1015 1139 1140 1185 1228 1229 1232
1234 1295 1296 1297 1309 1315 1318 1319 1325 1344 1351 1382 1383
1447 1451 1461 1543 1560 1575 1587 1635 1638 1664 1677 1686 1748
1750 1773 1792 1803 1834 1854 1909 2006 2036 2038 2062 2115 2215
2435 2542 2546 2581 2592 2593 2594 2595 2596 2601 2602 2655 2659
2661 2662 2725 2768 2774 2821 2858 2882 2883 2953 2954 2962 2979
2989 3035 3087 3127 3161 3169 3173 3214 3216 3217 3225 3226 3237
3269 3274 3297 3299 3300 3304 3328 3353 3361 3390 3395 3396 3397
3417 3419 3420 3421 3454 3486 3531 3584 3585 3586 3620 3628 3629
3630 3631 3632 3640 3641 3651 3673 3689 3699 3700 3766 3767 3786
3816 3860 3862 3864 3924 3931 3967 3978 3983 3988 3994 3996 4002
4037 4039 4071 4078 4081 4129 4131 4133 4136 4146 4176 4179 4183
4206
SP.CHR= 000007 876# 1382 2037 2038 2120 2124 2128 2174 2211 2219 2327 3021 3039
SP.CS0= 000017 884# 1352 1364 1384 1638 1777 3682 3687 3814 3822
SP.LN = 000012 879# 1229 1230 1295 1309 1311 1316 3408
SP.RM0= 000013 880# 997 1021 1232 1236 1242 1296 1318 1320 1582 1634 1754 1758
1907 2110 2173 2209 2217 2334 2476 2589 2600 2645 2730 2777 2816
2870 2945 3083 3113 3172 3360 3658 3923 4034 4071 4072 4081
SP.RM1= 000014 881# 996 1022 1234 1297 1319 1908 3524 3812 4075 4078
SP.RST= 000010 877# 1383 1913 3728
SP.SB1= 000015 882# 1677 2062 2581 2602 2655 2662 2768 2883 2953 2989 3570 3692
3703 3767 3786 3838
SP.STS= 000011 878# 1344 1349 1769 1874 1909 2033 2114 2115 2215 2314 2340 2405
2448 2576 2608 2709 2790 2844 2912
SP.SUB= 000016 883# 1461 1543 1587 1803 1854 2006 2040 2435 2546 2858 2954 2962
2979 3035 3087 3127 3237 3390 3470 3474 3488 3531 3630 3640 3689
3816 3867 3928 3933 4012 4143 4182 4187 4206
SP0 = 000000 197# 1000 1001 1012 1020 1051 1140 1143 1146 1157 1185 1263 1307
1315 1317 1325 1327 1351 1447 1449 1451 1453 1496 1497 1520 1560
1561 1570 1575 1664 1666 1748 1750 1755 1773 1792 1801 1823 1825
1834 1873 2036 2039 2596 2716 2765 2774 2778 2821 2908 3214 3216
3225 3298 3395 3409 3454 3457 3466 3469 3479 3485 3486 3487 3525
3562 3568 3579 3584 3588 3620 3641 3654 3673 3699 3700 3702 3860
3862 3983 3988 3994 3996 4002 4004 4037 4039 4129 4131 4133 4136
4146 4176 4177 4179 4180 4183 4186
SP1 = 000001 198# 1139 1150 1347 1716 1808 1810 2725 2726 3217 3219 3226 3230
3299 3396 3410 3585 3589 3864 3865 3924 3925 3931 3932 3967 3978
4005
SP10 = 000010 205# 877
SP11 = 000011 206# 878
SP12 = 000012 207# 879
SP13 = 000013 208# 880
SP14 = 000014 209# 881
SP15 = 000015 210# 882
SP16 = 000016 211# 883
SP17 = 000017 212# 884
SP2 = 000002 199# 2541 2542 2543 2592 2659 2946 2969 2980 3016 3045 3114 3128
3169 3274 3304 3353 3412 3424 3586 3590 3631 3647 3651 3653
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 79-10
KDPMCX.MAC 30-DEC-82 03:47 CROSS REFERENCE TABLE -- USER SYMBOLS
SP3 = 000003 200# 2593 2661 2882 3161 3269 3297 3328 3411 3417 3423 3632 3648
3766
SP4 = 000004 201# 998 1011 1015 2594 3300 3397 3419 3420 3421 3422 3628 3636
3649 3665
SP5 = 000005 202# 1009 1013 1228 1231 1653 1674 1685 1686 2595 3629 3637 3650
3670
SP6 = 000006 203# 1635 1652 1659 1688 2601 2666 3173 3211 3224 3228 3361 3394
3523 3530 3583 3587 3616 3660
SP7 = 000007 204# 876
START 000000R 002 37# 1002 1003 1014 1023 1028 1053 1088 1094 1097 1098 1115 1118
1144 1151 1152 1158 1159 1160 1162 1165 1182 1183 1187 1188 1189
1191 1193 1215 1216 1219 1222 1223 1252 1253 1254 1255 1264 1266
1298 1308 1312 1326 1329 1346 1350 1353 1358 1365 1366 1381 1385
1413 1417 1421 1461 1495 1498 1511 1517 1521 1526 1529 1536 1543
1549 1553 1569 1571 1572 1587 1626 1630 1637 1643 1655 1675 1677
1689 1718 1719 1726 1737 1738 1740 1756 1761 1765 1766 1771 1772
1779 1786 1788 1793 1798 1802 1803 1811 1827 1842 1843 1851 1853
1854 1860 1869 1871 1876 1880 1914 1928 1948 1950 1971 1973 1974
1998 2002 2035 2061 2062 2105 2121 2125 2129 2133 2141 2168 2178
2204 2225 2251 2255 2280 2284 2310 2316 2320 2328 2341 2364 2368
2369 2395 2399 2400 2406 2411 2435 2437 2441 2449 2453 2477 2478
2501 2502 2518 2521 2522 2546 2573 2577 2581 2602 2606 2610 2611
2639 2650 2655 2662 2670 2671 2675 2679 2682 2685 2687 2711 2717
2727 2731 2756 2759 2764 2766 2768 2780 2788 2789 2792 2793 2813
2819 2848 2858 2872 2883 2914 2917 2919 2948 2952 2954 2962 2965
2970 2976 2979 2988 2991 2992 2999 3024 3035 3046 3052 3087 3115
3120 3127 3135 3236 3240 3241 3278 3305 3389 3413 3415 3456 3458
3467 3480 3526 3531 3563 3627 3630 3640 3661 3666 3676 3684 3689
3727 3729 3736 3745 3753 3767 3785 3816 3832 3834 3835 3837 3890
3926 3968 3990 3991 4011 4044 4051 4052 4073 4076 4083 4134 4142
4147 4181 4206 4207
STFSLO 003012R 002 3449#
STORE 002342R 002 1421 2035 2125 2178 2255 2284 2320 2328 2341 2453 2941# 2988
STREVN 002444R 002 3005#
STRODD 002456R 002 2999 3030#
SUB = 000340 192# 3229
SUBC = 000040 180# 3230
SUBOC = 000360 193# 1013 1143 1150 1311 2120 2124 2128 2327 3457 3466 3660
SYNC = 000226 946# 1532 2720
SYNCNT= 000007 948# 3680
TIMER 000346R 002 1053 1287#
TIMRP1 001642R 002 2368# 2369
TIMRP2 002074R 002 2062 2679# 2952 3785
TIMRP3 003644R 002 2546 4051 4052#
TIMRTN 000364R 002 1304# 1973 2368 2406 2449 2478 2522 2611 2679 4052
TIMRT1 000416R 002 1298 1321#
TIMRT3 000470R 002 1362# 1719 1738 1740 1766 1772 1788 1798 1843 2789 2793 2872
TWOA = 060120 183# 1011 1230 1316 1575 1674 2608 3419 3420 3421 3422 3562 3728
TWOAC = 060140 184#
UBBR = 120220 97# 1051 1263 1307 1748 3214 3860 3994 4037
WAIT 003606R 002 4009#
WRMEM = 002400 57# 999 1016 1021 1022 1028 1029 1030 1097 1115 1141 1146 1153
1159 1162 1188 1191 1223 1327 1335 1449 1453 1497 1500 1501 1509
1512 1525 1527 1532 1535 1537 1561 1569 1572 1580 1583 1657 1662
1663 1671 1685 1810 1830 1873 1948 1971 2037 2039 2061 2105 2114
2168 2174 2204 2211 2251 2280 2310 2340 2364 2395 2477 2543 2573
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 79-11
KDPMCX.MAC 30-DEC-82 03:47 CROSS REFERENCE TABLE -- USER SYMBOLS
2647 2667 2716 2726 2814 2871 2908 3016 3021 3408 3409 3410 3411
3414 3423 3424 3469 3473 3479 3487 3568 3579 3588 3589 3590 3634
3635 3636 3637 3642 3647 3648 3649 3650 3654 3679 3680 3685 3702
3832 3835 3925 3932 4177 4180 4186
WROUT = 002000 56#
WROUTX= 001000 54#
WRTEBR= 000400 53# 1001 1008 1011 1017 1087 1093 1095 1142 1145 1163 1181 1192
1214 1218 1221 1227 1230 1238 1249 1261 1287 1294 1310 1313 1316
1322 1341 1345 1349 1364 1371 1377 1380 1384 1448 1452 1459 1461
1494 1502 1507 1514 1516 1528 1538 1543 1547 1552 1559 1576 1581
1587 1620 1624 1629 1632 1634 1636 1642 1651 1665 1666 1674 1677
1684 1687 1716 1720 1722 1725 1729 1739 1749 1751 1753 1757 1759
1769 1774 1776 1785 1787 1803 1821 1826 1835 1837 1841 1852 1854
1856 1870 1874 1878 1906 1913 1973 2002 2033 2062 2109 2113 2119
2123 2127 2139 2172 2208 2210 2216 2218 2219 2314 2333 2335 2405
2435 2448 2475 2520 2546 2576 2581 2588 2599 2600 2602 2608 2637
2644 2649 2655 2656 2660 2662 2665 2668 2709 2712 2715 2720 2722
2729 2763 2765 2768 2773 2776 2790 2815 2817 2843 2844 2847 2856
2858 2869 2881 2883 2910 2912 2915 2918 2944 2952 2954 2962 2979
2980 2983 2988 2990 2997 3014 3035 3039 3045 3051 3063 3082 3087
3112 3127 3128 3132 3134 3160 3165 3171 3172 3215 3218 3219 3223
3227 3230 3236 3238 3268 3273 3277 3303 3327 3332 3356 3360 3389
3412 3416 3455 3465 3468 3522 3531 3562 3567 3578 3582 3619 3626
3630 3640 3652 3653 3657 3658 3665 3670 3672 3675 3682 3686 3689
3698 3728 3735 3744 3752 3760 3767 3785 3813 3816 3821 3824 3828
3836 3861 3863 3865 3889 3915 3973 3995 3997 4003 4004 4005 4010
4033 4038 4040 4042 4070 4080 4121 4135 4141 4145 4185 4204 4206
WRTRT 001320R 002 1833# 1860 1880 2717 2727 2917
XMTABT 002224R 002 1756 2812#
XMTAB1 002314R 002 2813 2907#
XMTBCZ 002152R 002 2762#
XMTBC0 002162R 002 1417 2767#
XMTBC1 002170R 002 2772# 2883
XMTCNT 002150R 002 1803 2756 2759#
XMTDN1 001146R 002 1737 1746#
XMTDN2 001266R 002 1808# 2759
XMTDN3 001234R 002 1783# 2819
XMTDN4 001250R 002 1798# 2780
XMTDN6 001330R 002 1839# 2848
XMTDON 001104R 002 1358 1715#
XMTEM0 000524R 002 1417# 2858
XMTSND 002244R 002 1793 2842#
XMTSN0 002252R 002 1779 2846#
XMTSYN 002102R 002 1869 2708#
XMTUNR 002300R 002 2764 2880#
XREG0 = 020200 122#
XREG1 = 020220 123#
XREG2 = 020240 124#
XREG3 = 020260 125#
XREG4 = 020300 126#
XREG5 = 020320 127#
XREG6 = 020340 128#
XREG7 = 020360 129#
ZCOND = 001400 67# 1014 1118 1144 1151 1312 1326 2121 2125 2129 2328 3456 3458
3467 3661 3926
$KDPMC 000000RG 002 992# 4212
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 79-12
KDPMCX.MAC 30-DEC-82 03:47 CROSS REFERENCE TABLE -- USER SYMBOLS
$KDPML= 000040 G 4212#
. = 003774R 002 1543 1679 1854 1928 2602 2655 2662 2675 2687 2768 2962 2979 3035
3127 3630 3640 3689 3816 4206 4212
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 80
KDPMCX.MAC 30-DEC-82 03:47 CROSS REFERENCE TABLE -- MACRO NAMES
ALWAYS 241# 1003 1023 1098 1152 1160 1165 1183 1189 1193 1216 1254 1266 1298 1366
1385 1413 1417 1421 1461 1498 1529 1543 1553 1587 1630 1677 1689 1719 1766
1772 1779 1793 1803 1843 1853 1854 1860 1880 1950 1974 2062 2133 2141 2178
2225 2255 2284 2320 2341 2368 2400 2411 2435 2441 2453 2478 2502 2522 2546
2581 2602 2611 2650 2655 2662 2671 2679 2682 2685 2717 2731 2768 2789 2793
2848 2858 2872 2883 2917 2919 2954 2962 2976 2979 2992 3024 3035 3052 3087
3120 3127 3241 3278 3305 3415 3480 3531 3630 3640 3689 3736 3745 3753 3767
3816 3890 3968 3991 4044 4052 4076 4083 4147 4206 4207
BRADDR 580# 1461 1587 1677 1803 1973 2002 2062 2435 2546 2581 2858 2883 2952 2954
2988 3087 3236 3389 3531 3767 3785
BRADRE 588#
BREXT 237#
BROTAT 630# 2779
BRSHFT 419# 1357 1548 1625 1654 1667 1668 1669 1670 1717 1760 1770 1875 2315 2638
2669 2710 2791 2818 2913 2947 3239 3683 3833
BRWRTE 405# 1001 1008 1011 1017 1087 1093 1095 1142 1145 1163 1181 1192 1214 1218
1221 1227 1230 1238 1249 1261 1287 1294 1310 1313 1316 1322 1341 1345 1349
1364 1371 1377 1380 1384 1448 1452 1459 1461 1494 1502 1507 1514 1516 1528
1538 1543 1547 1552 1559 1576 1581 1620 1624 1629 1632 1634 1636 1642 1651
1665 1666 1674 1684 1687 1716 1720 1722 1725 1729 1739 1749 1751 1753 1757
1759 1769 1774 1776 1785 1787 1803 1821 1826 1835 1837 1841 1852 1854 1856
1870 1874 1878 1906 1913 2033 2109 2113 2119 2123 2127 2139 2172 2208 2210
2216 2218 2219 2314 2333 2335 2405 2448 2475 2520 2546 2576 2588 2599 2600
2602 2608 2637 2644 2649 2655 2656 2660 2662 2665 2668 2709 2712 2715 2720
2722 2729 2763 2765 2768 2773 2776 2790 2815 2817 2843 2844 2847 2856 2869
2881 2883 2910 2912 2915 2918 2944 2954 2962 2979 2980 2983 2990 2997 3014
3035 3039 3045 3051 3063 3082 3087 3112 3127 3128 3132 3134 3160 3165 3171
3172 3215 3218 3219 3223 3227 3230 3238 3268 3273 3277 3303 3327 3332 3356
3360 3412 3416 3455 3465 3468 3522 3531 3562 3567 3578 3582 3619 3626 3630
3640 3652 3653 3657 3658 3665 3670 3672 3675 3682 3686 3689 3698 3728 3735
3744 3752 3760 3767 3813 3816 3821 3824 3828 3836 3861 3863 3865 3889 3915
3973 3995 3997 4003 4004 4005 4010 4033 4038 4040 4042 4070 4080 4121 4135
4141 4145 4185 4204 4206
BR0 245# 1187 1219 1253 1255 1264 1308 1346 1381 1495 1517 1637 1726 1765 1802
1811 1827 1842 2406 2521 2788 2970 2991 2999 3046 3115 3135 3413 3627 3666
3676 3837 4011 4142
BR1 249# 1252 1350 1358 1526 1626 1740 1788 1998 2316 2639 2766 2813 3684
BR4 253# 1053 1158 1215 1222 1536 1549 1643 1655 1718 1738 1756 1761 1771 1786
1869 1876 2399 2449 2501 2577 2670 2711 2780 2792 2819 2914 2948 3240 3727
3834
BR7 257# 1002 1088 1094 1182 1353 1365 1511 1521 1571 1675 1737 1798 1871 1914
2035 2610 2764 3526 3563 3729
C 265# 1329 1851 2437 2727 2759 2965 3990 4073 4134 4181
CALLEX 671#
CALLSB 642# 1543 1854 2602 2655 2662 2768 2962 2979 3035 3127 3630 3640 3689 3816
4206
CALLSR 655# 1461 1587 1677 1803 2062 2435 2546 2581 2858 2883 2954 3087 3531 3767
CALREX 695#
COMP 616# 1013 1143 1150 1311 2120 2124 2128 2327 3457 3466 3660
INCMA 626# 3011 3927
JMPEXT 620#
LDMA 553# 1020 1027 1054 1116 1117 1138 1155 1231 1236 1242 1317 1320 1582 1652
1659 1688 1754 1758 1907 2110 2173 2209 2217 2334 2476 2589 2645 2666 2730
2777 2816 2870 2945 3083 3113 3211 3224 3228 3394 3402 3404 3453 3464 3485
3523 3530 3583 3587 3616 3923 4034
LDMAP 562# 1026 1055 1908 3403 3524 3812 4075
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 80-1
KDPMCX.MAC 30-DEC-82 03:47 CROSS REFERENCE TABLE -- MACRO NAMES
MEM 441# 1016 1022 1030 1141 1146 1153 1327 1449 1453 1509 1512 1525 1527 1532
1535 1537 1561 1583 1657 1671 1685 1830 1873 2039 2114 2174 2211 2340 2543
2647 2667 2716 2726 2814 2871 2908 3021 3411 3414 3469 3473 3479 3487 3568
3579 3590 3654 3685 3702 4186
MEMADE 604#
MEMADR 596# 1028 1097 1115 1159 1162 1188 1191 1223 1569 1572 1948 1971 2061 2105
2168 2204 2251 2280 2310 2364 2395 2477 2573 3832 3835
MEMINC 544# 999 1021 1029 1335 1497 1500 1501 1580 1662 1663 1810 2037 3016 3408
3409 3410 3423 3424 3588 3589 3634 3635 3636 3637 3642 3647 3648 3649 3650
3679 3680 3925 3932 4177 4180
NODST 383# 4072
OUT 503# 994 995 1096 1122 1126 1127 1131 1132 1134 1164 1186 1239 1262 1291
1343 1379 1515 1621 1724 1752 1824 1840 2986 3065 3133 3220 3621 3674 3825
3866 3998 4006 4041 4043 4137 4205
OUTPUT 520# 1240 1241 1336 1339 1373 1450 1454 1460 1506 1513 1524 1534 1542 1564
1577 1618 1619 1721 1727 1728 1775 1778 1819 1820 1825 1828 1836 1857 1859
1879 2713 2714 2721 2723 2775 2845 2857 2911 2916 2982 2985 3041 3042 3130
3131 3212 3213 3229 3231 3617 3618 3669 3671 3688 3815 3823 3858 3859 3984
3989 4035 4036 4130 4132
RSTATE 634# 1569 1572 1948 1971 2061 2105 2168 2204 2251 2280 2310 2364 2395 2477
2573 3832 3835
RTNEX 713#
RTNSUB 663# 2040 3470 3474 3488 3570 3692 3703 3838 3867 3928 3933 4012 4143 4182
4187
SP 462# 996 997 998 1009 1012 1015 1139 1140 1185 1228 1229 1232 1234 1295
1296 1297 1309 1315 1318 1319 1325 1344 1351 1382 1383 1447 1451 1461 1543
1560 1575 1587 1635 1638 1664 1677 1686 1748 1750 1773 1792 1803 1834 1854
1909 2006 2036 2038 2062 2115 2215 2435 2542 2546 2581 2592 2593 2594 2595
2596 2601 2602 2655 2659 2661 2662 2725 2768 2774 2821 2858 2882 2883 2953
2954 2962 2979 2989 3035 3087 3127 3161 3169 3173 3214 3216 3217 3225 3226
3237 3269 3274 3297 3299 3300 3304 3328 3353 3361 3390 3395 3396 3397 3417
3419 3420 3421 3454 3486 3531 3584 3585 3586 3620 3628 3629 3630 3631 3632
3640 3641 3651 3673 3689 3699 3700 3766 3767 3786 3816 3860 3862 3864 3924
3931 3967 3978 3983 3988 3994 3996 4002 4037 4039 4071 4078 4081 4129 4131
4133 4136 4146 4176 4179 4183 4206
SPBR 479# 1000 1051 1157 1263 1307 1347 1352 1496 1520 1570 1653 1755 1777 1801
1808 1823 2778 2946 2969 3114 3298 3422 3525 3687 3814 3822
Z 261# 1014 1118 1144 1151 1312 1326 2121 2125 2129 2328 3456 3458 3467 3661
3926
.ALWAY 286# 1056 1920 2040 3470 3474 3488 3570 3692 3703 3838 3867 3928 3933 4012
4143 4182 4187
.BREXT 278#
.BR0 298#
.BR1 310#
.BR4 322#
.BR7 334#
.C 358#
.Z 346#
. ABS. 000000 000 CON RW ABS LCL I
000000 001 CON RW ABS LCL I
$$MIC$ 003774 002 CON RO REL LCL D
ERRORS DETECTED: 0
KDPMC - COMMUNICATION IO PROCESSOR MICROCODE FOR THE DUP11 DNMAC X24.07-563 25-JAN-83 10:02 PAGE 80-2
KDPMCX.MAC 30-DEC-82 03:47 CROSS REFERENCE TABLE -- MACRO NAMES
DEFAULT GLOBALS GENERATED: 0
KDPMC,KDPMC/CR/NL:MEB=KDP:KMCMAC,KDP:KDPMCX
RUN-TIME: 12 16 1 SECONDS
RUN-TIME RATIO: 99/30=3.2
CORE USED: 11K (21 PAGES)