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