Trailing-Edge
-
PDP-10 Archives
-
BB-H348C-RM_1982
-
swskit-v21/listings/mcb/kdp.list
There are no other files named kdp.list in the archive.
KDP MACRO M1110 27-DEC-79 09:26
TABLE OF CONTENTS
4- 96 MACRO CALLS AND MACRO DEFINITIONS
8- 298 KMC/DUP INTERRUPT-ENTRY DISPATCH TABLES
9- 345 KMC/DUP PROCESS DISPATCH TABLES
10- 400 KMC/DUP OFFSETS TO DUP-11 LINE TABLES
12- 459 $CDIRI -- INPUT INTERRUPT DISPATCH SERVICE
13- 508 $CDORI -- OUTPUT INTERRUPT DISPATCH SERVICE
14- 563 CIXBA -- TRANSMIT/RECEIVE BUFFER ADDRESS IN
16- 646 CICTL -- CONTROL-IN INTERRUPT HANDLER
17- 690 CIBAS -- DUP-11 CSR BASE ADDRESS IN
18- 725 COTBA -- TRANSMIT BUFFER ADDRESS OUT
19- 770 CORBA -- RECEIVE BUFFER ADDRESS OUT
20- 819 COXCT -- CONTROL-OUT INTERRUPT DISPATCH
21- 878 CORCP -- COMMON RECEIVE COMPLETE PROCESSING
22- 931 CEABO -- SDLC/ADCCP FRAME ABORT RECEIVED
23- 998 CEKCM -- KILL-I/O COMPLETE FROM KMC-11
25- 1108 CDTRN -- TRANSMIT ENABLE ENTRY
26- 1163 CDRCV -- RECEIVE ENABLE ENTRY
27- 1198 CDKIO -- KILL-I/O ENABLE ENTRY
28- 1227 CDKIL -- RECEIVE AND TRANSMIT KILL-I/O
29- 1277 CDRKL -- RECEIVE KILL-I/O
30- 1323 CDXKL -- TRANSMIT KILL-I/O
31- 1360 CDTMO -- TIME-OUT ENTRY
32- 1416 CDCTL -- CONTROL ENABLE ENTRY
33- 1446 CDSTR -- START A DUP-11 LINE
34- 1486 CDSTP -- STOP A DUP-11 LINE
35- 1531 CDENB -- ENABLE DUP-11 LINE PRIOR TO START
36- 1581 CDDIS -- DISABLE DUP-11 LINE AFTER STOP
37- 1626 CDMSN -- SENSE MODEM STATUS
38- 1667 SETCHR -- SET LINE CONTROL WORD FROM CHARACTERISTICS
39- 1721 POLCHK -- CHECK IF POLLING RATE SHOULD BE ADJUSTED ;AP0009
40- 1767 TRNASN -- ASSIGN BUFFER(S) TO BE TRANSMITTED
41- 1824 RCVGET -- ALLOCATE AND ASSIGN A RECEIVE BUFFER
42- 1867 RCVASN -- ASSIGN A RECEIVE DATA BUFFER
43- 1925 INSIQB -- INSERT A CCB IN INTERRUPT QUEUE
44- 1968 RQIRL -- RELEASE INTERRUPT REQUEST + POP QUEUE
46- 2038 BDSET -- SETUP KMC-11 BUFFER DESCRIPTOR
47- 2090 CLTA -- COMPUTE KMC-11 LINE TABLE ADDRESS
47- 2116 DLTA -- COMPUTE DUP-11 LINE TABLE ADDRESS
48- 2138 EVENT LOGGING ;BH0001
KDP MACRO M1110 27-DEC-79 09:26 PAGE 3
1 .TITLE KDP
2 .IDENT /V02.17/
3 ;% .FILE KDP.MAC
4 ;
5 ; COPYRIGHT (C) 1977
6 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
7 ;
8 ;
9 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
10 ; SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE
11 ; INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANY
12 ; OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE MADE
13 ; AVAILABLE TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND
14 ; TO ONE WHO AGREES TO THESE LICENSE TERMS. TITLE TO AND
15 ; OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.
16 ;
17 ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
18 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
19 ; EQUIPMENT CORPORATION.
20 ;
21 ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
22 ; OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
23 ;
24 ;
25 ; KMC-11/DUP-11 DEVICE DRIVER
26 ;
27 ; VERSION X02
28 ;
29 ; S. I. GOLDFARB 25-MAR-1977
30 ; R. H. ROSENBAUM 30-AUG-1977
31 ; L. J. TWAITS 10-SEP-1977
32 ; D. B. TUTTLE 10-OCT-1977
33 ;
34 ; 2.01 17-NOV-78 BUREN HOFFMAN ;BH0001
35 ; EXTRACTED DEVICE LINE TABLE FROM BODY OF CODE AND
36 ; PUT IT INTO DDML.MAC, FOR INCLUSION IN NETLIB.
37 ; ALSO MODIFICATIONS TO ACCOMODATE EVENT LOGGING.
38 ; 2.02 6-DEC-78 L. WEBBER ;LW0002
39 ; FIX TRANSPOSED OFFSET IN 'CITBA'
40 ; 2.03 22-JAN-79 BUREN HOFFMAN ;BH0003
41 ; ADDED EVENT LOGGING FOR XMITTER TIMEOUT.
42 ; 2.04 12-JAN-79 BUREN HOFFMAN ;BH0004
43 ; MODIFIED TO USE NEW $CMLOG (V1.01).
44 ; 2.05 30-JAN-79 BUREN HOFFMAN ;BH0005
45 ; ADDED CODE TO ASSURE THE SIGN BIT IS SET IN REASON CODE
46 ; ON CALLS TO $CMLOG.
47 ; 2.06 1-FEB-79 BUREN HOFFMAN ;BH0006
48 ; CHANGED TO GLOBAL INVOCATION OF LINE TABLE DEFINITION MACROS.
49 ; 2.07 2-FEB-79 BUREN HOFFMAN ;BH0007
50 ; ADDED ERROR RETURN DETECTION IN COROUTINE CALL TO $CMLOG.
51 ; ALSO, STARTED UTILIZING EVLDF$ MACRO FOR LOGGING SYMBOLS.
52 ; OMITTED SIGN BIT REQMT OF 1.05.
53 ; 2.08 10-FEB-79 ALAN D. PECKHAM
54 ; GLOBALIZE KDP LINE TABLE BIT DEFINITIONS.
55 ; 2.09 21-FEB-79 ALAN D. PECKHAM
56 ; APPLY SOME CHECKS FOR KDP PROBLEMS.
57 ; 2.10 27-FEB-79 ALAN D. PECKHAM
KDP MACRO M1110 27-DEC-79 09:26 PAGE 3-1
58 ; MORE DEBUGGING CODE.
59 ; 2.11 14-MAR-79 ALAN D. PECKHAM
60 ; MORE DEBUGGING CODE.
61 ; 2.12 21-MAR-79 ALAN D. PECKHAM
62 ; BUG FOUND ! DEBUGGING CODE REMOVED.
63 ; KILL COMPLETE WAS RE-ASSIGNING A BUFFER TWICE.
64 ; 2.13 22-MAR-79 ALAN D. PECKHAM
65 ; DO NOT DO A RECEIVE KILL WHEN NO BUFFERS ARE ASSIGNED.
66 ; 2.14 21-MAY-79 ALAN D. PECKHAM
67 ; SET UP COMMON KILL COMPLETE TO AVOID CONTROL STOP BUG.
68 ; 2.15 11-JUN-79 ALAN D. PECKHAM
69 ; DETECT RETURN OF UNASSIGNED TRANSMIT DESCRIPTOR.
70 ; TRANSMITTER UNDERRUN DOES NOT RETURN A BUFFER DESCRIPTOR.
71 ; CORRECT TIMEOUT ERROR CODE TO TRANSMIT TIMEOUT ERROR.
72 ; 2.16 29-AUG-79 ALAN D. PECKHAM
73 ; DO NOT LOG THE FIRST DSR CHANGE AFTER A START.
74 ; 2.17 27-DEC-79 SCOTT G. ROBINSON
75 ; DO NOT LOG TIMEOUTS OR DSR CHANGES BUT ALLOW A PATCH TO
76 ; REENABLE LOGGING OF EACH SEPERATELY.
77
78 ;---------------------------------------------------------------;
79 ; ;
80 ; NOTES: ;
81 ; THERE MAY BE AS MANY AS 16. DUP-11 DEVICES CONTROLLED ;
82 ; BY A SINGLE KMC-11, WHERE EACH DUP-11 INTERFACES TO A ;
83 ; SINGLE FULL- OR HALF-DUPLEX COMMUNICATIONS LINE. EACH ;
84 ; LINE MAY OPERATE IN EITHER DDCMP (DEC) MODE OR ADCCP/ ;
85 ; SDLC (BIT-STUFF) MODE. LINE RECEIVE OPERATIONS ARE AT ;
86 ; MOST DOUBLE-BUFFERED, WHILE TRANSMIT OPERATIONS WILL ;
87 ; ATTEMPT TO USE AS MANY BUFFERS AS POSSIBLE. ;
88 ; ;
89 ; ALL TRANSMIT CCB'S MUST HAVE NO MORE THAN ONE BUFFER ;
90 ; DESCRIPTOR, AND THE 'CF.LB' FLAG MUST BE SET IN THE ;
91 ; FLAGS WORD. ALL RECEIVE COMPLETE CCB'S WILL HAVE THE ;
92 ; 'CF.SOM', 'CF.EOM', AND 'CF.LB' FLAGS SET. ;
93 ; ;
94 ;---------------------------------------------------------------;
KDP MACRO M1110 27-DEC-79 09:26 PAGE 4
MACRO CALLS AND MACRO DEFINITIONS
96 .SBTTL MACRO CALLS AND MACRO DEFINITIONS
97
98 .MCALL INHIB$,ENABL$,$INTSX
99 .MCALL HWDDF$,CCBDF$,MDCDF$,KDPDF$,DEVDF,CMLDF$,EVLDF$ ;BH0007
100 000000 HWDDF$ ; DEFINE THE I/O PAGE SYMBOLS ;**-1
101 000000 CCBDF$ ; " COMMUNICATIONS CONTROL BLOCK
102 000000 MDCDF$ ; MODEM CONTROL DEFINITIONS ;**-1
103 ;
104 ; 'PUSH' + 'POP' MACROS FOR STACK MANIPULATION
105 ;
106 .MACRO PUSH VAL
107 .IRP S,<VAL>
108 MOV S,-(SP) ; PUSH ARGUMENT ONTO STACK
109 .ENDR
110 .ENDM PUSH
111
112 .MACRO POP VAL
113 .IRP D,<VAL>
114 MOV (SP)+,D ; POP ARGUMENT FROM STACK
115 .ENDR
116 .ENDM POP
117
118 ;
119 ; 'GOTO' MACRO FOR CONTROL LINKAGE
120 ;
121 .MACRO GOTO VAL
122 JMP VAL ; TRANSFER CONTROL
123 .ENDM GOTO
124
125
126 ;
127 ; '$ENQ' MACRO FOR QUEUEING WITH TWO-WORD LISTHEAD
128 ;
129 .MACRO $ENQ BASE,OFFSET,NODE
130 .IF NB NODE
131 CLR (NODE)
132 .IF NB OFFSET
133 MOV NODE,@'OFFSET'+2(BASE)
134 MOV NODE,OFFSET'+2(BASE)
135 .IFF
136 MOV NODE,@2(BASE)
137 MOV NODE,2(BASE)
138 .ENDC
139 .IFF
140 CLR (R4)
141 .IF NB OFFSET
142 MOV R4,@'OFFSET'+2(BASE)
143 MOV R4,OFFSET'+2(BASE)
144 .IFF
145 MOV R4,@2(BASE)
146 MOV R4,2(BASE)
147 .ENDC
148 .ENDC
149 .ENDM $ENQ
KDP MACRO M1110 27-DEC-79 09:26 PAGE 5
MACRO CALLS AND MACRO DEFINITIONS
151 ;
152 ; '$DEQ' MACRO FOR REMOVING ELEMENT FROM A QUEUE
153 ;
154 .MACRO $DEQ BASE,OFFSET,NODE,TAG,?TAG2,?TAG3
155 .IF NB NODE
156 .IF NB OFFSET
157 MOV OFFSET'(BASE),NODE
158 .IFF
159 MOV (BASE),NODE
160 .IFTF
161 .IF NB TAG
162 BEQ TAG
163 .IFF
164 BEQ TAG3
165 .ENDC
166 .IFT
167 MOV (NODE),OFFSET'(BASE)
168 BNE TAG2
169 MOV BASE,OFFSET'+2(BASE)
170 ADD #'OFFSET,OFFSET'+2(BASE)
171 .IFF
172 MOV (NODE),(BASE)
173 BNE TAG2
174 MOV BASE,2(BASE)
175 .ENDC
176 .IFF
177 .IF NB OFFSET
178 MOV OFFSET'(BASE),R4
179 .IFF
180 MOV (BASE),R4
181 .IFTF
182 .IF NB TAG
183 BEQ TAG
184 .IFF
185 BEQ TAG3
186 .ENDC
187 .IFT
188 MOV (R4),OFFSET'(BASE)
189 BNE TAG2
190 MOV BASE,OFFSET'+2(BASE)
191 ADD #'OFFSET,OFFSET'+2(BASE)
192 .IFF
193 MOV (R4),(BASE)
194 BNE TAG2
195 MOV BASE,2(BASE)
196 .ENDC
197 .IFTF
198 TAG2:
199 .IFT
200 CLR (NODE)
201 .IFF
202 CLR (R4)
203 .ENDC
204 TAG3:
205 .ENDM $DEQ
KDP MACRO M1110 27-DEC-79 09:26 PAGE 6
MACRO CALLS AND MACRO DEFINITIONS
207 ; ;BH0001
208 ; DEFINE THE DEVICE CODE ;BH0001
209 ; ;BH0001
210 000000 DEVDF ;BH0001
211 ;BH0007
212 000000 EVLDF$ ;BH0007
213 ;BH0007
214 000000 KDPDF$ <:>,<=>,LST ;BH0006
;---------------------------------------------------------------;
; K M C - 1 1 D E V I C E : I N E T A = : E ;
;---------------------------------------------------------------;
000000 .ASECT
000000 .=0
000000 CMIRI:: .INT1 $CDIRI ; INPUT INTERRUPT CALL SEQUENCE
.EVEN
.IF DF M$$MGE
000000 .BLKW 7
.IFF
.BLKW 2
.ENDC
000016 CMIPR:: .PRI ; INPUT DEVICE PRIORITY FOR $INTSX
.EVEN
000016 .BLKW 1
000020 CMORI:: .INT2 $CDORI ; OUTPUT INTERRUPT CALL SEQUENCE
.EVEN
.IF DF M$$MGE
000020 .BLKW 7
.IFF
.BLKW 2
.ENDC
000036 CMOPR:: .PRI ; OUTPUT DEVICE PRIORITY FOR $INTSX
.EVEN
000036 .BLKW 1
000040 CMCSR:: .CSR ; KMC-11 CSR ADDRESS [SEL 0]
.EVEN
000040 .BLKW 1
000042 CMSWT:: .BLKW 1 ; KMC-11 CONTROL SWITCHES
100000 CM.INI == 100000 ; KMC-11 HAS BEEN INITIALIZED
000200 CM.RQI == 000200 ; AN INTERRUPT HAS BEEN REQUESTED
000044 CMIQH:: .LSTHD ; KMC-11 INPUT INTERRUPT REQUEST QUEUE
.EVEN
000044 .BLKW 2
000050 CMKQH:: .LSTHD ; KMC-11 KILL I/O IN PROGRESS QUEUE
.EVEN
000050 .BLKW 2
000054 CMLEN:: ; KMC-11 DEVICE TABLE LENGTH
;---------------------------------------------------------------;
; D U P - 1 1 D E V I C E : I N E T A = : E ;
;---------------------------------------------------------------;
000000 .=0
000000 CTLTW:: .BLKW 1 ; LONG TIMER WORD
000002 CTCSR:: .SECSR ; DUP-11 CSR ADDRESS [SEL 0]
.EVEN
000002 .BLKW 1
000004 CTFLG:: .BLKW 1 ; DUP-11 CONTROL FLAGS
000001 CT.XKL == 000001 ; TRANSMIT KILL-I/O IN PROGRESS
000002 CT.RKL == 000002 ; RECEIVE KILL-I/O IN PROGRESS
KDP MACRO M1110 27-DEC-79 09:26 PAGE 6-1
MACRO CALLS AND MACRO DEFINITIONS
000004 CS.ROV == 000004 ; RECEIVER OVERRUN HAS OCCURRED
000010 CT.RKC == 000010 ; RECEIVER WILL BE RE-SYNCHRONIZED
000020 CT.BAS == 000020 ; CSR BASE-IN HAS BEEN PERFORMED
000040 CT.STR == 000040 ; BUP-11 LINE HAS BEEN STARTED
000100 CS.ABO == 000100 ; RECEIVED ABORT SEQUENCE
000200 CS.BUF == 000200 ; PREVIOUS BUFFER ALLOCATION FAILED
000400 CS.DCR == 000400 ; RECEIVER DETECTED CRC EROR
001000 CT.DRU == 001000 ; DSR CHANGE UNEXPECTED
002000 CS.HFE == 002000 ; DDCMP - HEADER FORMAT ERROR
004000 CS.MTL == 004000 ; RECEIVED MESSAGE TOO LONG
010000 CS.RSN == 010000 ; RECEIVER RE-SYNCHED BEFORE THIS MESSAGE
040000 CT.LDA == 040000 ; 1=CTTD2 LAST DESCRIPTOR ASSIGNED
100000 CS.ERR == 100000 ; INCLUSIVE 'OR' OF ERROR CONDITIONS
040073 CT.MSK == 040073 ; MASK TO TURN OFF DRIVER ONLY FLAGS
000006 CTDUP:: .UNB ; DUP-11 NUMBER (0-17 OCTAL)
000006 .BLKB 1
000007 CTSLN:: .SLNB ; DUP-11 SYSTEM LINE NUMBER
000007 .BLKB 1
000010 CTCHR:: .DVCHA ; DUP-11 LINE CHARACTERISTICS (TWO WORDS)
.EVEN
000010 .BLKW 2
000001 DC.HDX == 000001 ; HALF-DUPLEX LINE OPERATION (WORD #0)
000007 DC.PRT == 000007 ; PROTOCOL SELECTION MASK (WORD #1)
000001 DC.DEC == 000001 ; PROTOCOL SELECTION = DDCMP
000002 DC.BSC == 000002 ; PROTOCOL SELECTION = BSC
000003 DC.SDL == 000003 ; PROTOCOL SELECTION = SDLC / ADDCP / HDLC
000004 DC.X25 == 000004 ; PROTOCOL SELECTION = X.25
000010 DC.MPT == 000010 ; MULTI-POINT CONFIGURATION
000020 DC.SEC == 000020 ; MULTIPOINT SECONDARY STATION (WORD #1)
000040 DC.ADR == 000040 ; SECONDARY STATION IN 16 BITS (WORD #1)
000014 CTLOG:: .BLKW 1 ; EVENT LOGGING DESTINATION
000016 CTCTL:: .BLKW 1 ; STATION ADDRESS + CONTROL-IN FLAGS
000020 CTITQ:: .LSTHD ; INACTIVE TRANSMIT CCB QUEUE
.EVEN
000020 .BLKW 2
000024 CTTA1:: .BLKW 1 ; TRANSMIT CCB ACTIVE ON DESCRIPTOR #1
000026 CTTD1:: .BLKW 3 ; TRANSMIT BUFFER DESCRIPTOR #1
000034 CTTA2:: .BLKW 1 ; TRANSMIT CCB ACTIVE ON DESCRIPTOR #2
000036 CTTD2:: .BLKW 3 ; TRANSMIT BUFFER DESCRIPTOR #2
000044 CTRA1:: .BLKW 1 ; RECEIVE CCB ACTIVE ON DESCRIPTOR #1
000046 CTRD1:: .BLKW 3 ; RECEIVE BUFFER DESCRIPTOR #1
000054 CTRA2:: .BLKW 1 ; RECEIVE CCB ACTIVE ON DESCRIPTOR #2
000056 CTRD2:: .BLKW 3 ; RECEIVE BUFFER DESCRIPTOR #2
000064 CTITM:: .BLKB 1 ; TEMP STORAGE TIMER MUX.
.EVEN
000066 CTLEN:: ; DUP-11 DEVICE LINE TABLE LENGTH
;
; KMC-11 BUFFER DESCRIPTOR BITS
;
000400 BD.SOM == 000400 ; START OF MESSAGE
001000 BD.EOM == 001000 ; END OF MESSAGE
006000 BD.MEX == 006000 ; MEMORY EXTENSION BITS
010000 BD.SYN == 010000 ; PRECEED BUFFER BY SYNCHS
100000 BD.LBD == 100000 ; LAST BUFFER DESCRIPTOR
002000 BD.MXA == 2000 ; INCREMENT VALUE FOR 'BD.MEX' SUB-FIELD
000000 .PSECT
215 ;**-48
KDP MACRO M1110 27-DEC-79 09:26 PAGE 6-2
MACRO CALLS AND MACRO DEFINITIONS
216 000000 .PSECT $KDP11
217 ; ;BH0001
218 ; DEFINE THE EVENT CODE MAPPING TABLE ;BH0001
219 ; ;BH0001
220 040000 CS.TTM=40000 ; XMITTER TIMEOUT - THIS IS A LOCAL DEFINITION ;BH0003
221 ; AND MUST BE UNIQUE WITHIN FOLLOWING SET. ;BH0003
222 000000 000007 ERRTB: .WORD ERRTBL ;**LENGTH OF TABLE ;BH0001
223 000002 000100 000017 .WORD CS.ABO,E$RABO ; SDLC OPERATION ABORTED ;BH0007
224 000006 002000 000016 .WORD CS.HFE,E$RHFE ; DDCMP HEADER FORMAT ERROR ;BH0007
225 000012 000400 000023 .WORD CS.DCR,E$RCRC ; CRC ERROR ;BH0007
226 000016 000010 000005 .WORD CS.RNG,E$RDSC ; DATA SET CARRIER TRANSITION ;BH0007
227 000022 000004 000012 .WORD CS.ROV,E$ROVR ; RECEIVE OVERRUN ;BH0007
228 000026 020000 000006 .WORD CS.TMO,E$RRTO ; RECEIVE TIMEOUT ;BH0007
229 000032 040000 000027 .WORD CS.TTM,E$RXTO ; XMIT TIMEOUT ;BH0007
230 000007 ERRTBL=<.-ERRTB-2>/4 ;BH0001
231 ;BH0004
232 ; ;BH0004
233 ; DEFINE THE $CMLOG ARGUMENT BLOCK ;BH0004
234 ; ;BH0004
235 000022 LGDAT=18. ; HDR + 8.*REGS = 9.WORDS = 18.BYTES ;BH0007
236 000036 CMLDF$ KDP,E$THDW,,KDP,ERRTB,LGDAT ;BH0007
000036 000000 PDST: .WORD 0 ; LOGGING DESTINATION
000040 000000 PRSN: .WORD 0 ; " REASON
000042 177777 PDT1: .WORD -1 ; FORMAT DEPENDENT ARG #1
000044 000034 PDT2: .WORD KDP ; " " " #2
000046 000022 PLNG: .WORD LGDAT ; BYTES OF COROUTINE-ADDED INFO
000050 042560 PNAM: .RAD50 /KDP/ ; PROCESS NAME
000052 000003 PTYP: .WORD E$THDW ; EVENT TYPE CODE
000054 000000' PTAB: .WORD ERRTB ; ERROR CODE MAPPING TABLE
000056 000000 PSTA: .WORD 0 ; STATE WORD FOR USE BY $CMLOG
237 000042' PLIN=PDT1 ; SYS LINE # ;BH0004
238 000044' PDID=PDT2 ; DEVICE ID ;BH0004
KDP MACRO M1110 27-DEC-79 09:26 PAGE 7
MACRO CALLS AND MACRO DEFINITIONS
240 ;
241 ; KMC-11 CSR BIT DEFINITIONS FOR DUP-11 SUPPORT
242 ;
243 000000 CD.TBA = 000000 ; TRANSMIT BUFFER ADDR IN/OUT [SEL 0/2]
244 000001 CD.CTL = 000001 ; CONTROL FUNCTION IN/OUT [SEL 0/2]
245 000003 CD.BAS = 000003 ; DUP-11 CSR BASE ADDRESS IN [SEL 0]
246 000004 CD.RBA = 000004 ; RECEIVE BUFFER ADDR IN/OUT [SEL 0/2]
247 000200 CD.REQ = 000200 ; REQUEST DATA PORTS [SEL 0]
248 000001 CD.IEI = 000001 ; ENABLE INPUT-REQ INTERRUPTS [SEL 0] **RHR 31AUG77
249 000020 CD.IEO = 000020 ; ENABLE OUTPUT-REQ INTERRUPTS [SEL 0] **RHR 31AUG77
250 000020 CD.RDI = 000020 ; DATA PORTS READY [SEL 2] **RHR 31AUG77
251 040000 CD.MCL = 040000 ; MASTER CLEAR [SEL 0]
252 100000 CD.RUN = 100000 ; RUN [SEL 0]
253 177400 CD.DPN = 177400 ; DUP-11 NUMBER (0-15.) [SEL 2]
254
255 ;
256 ; KMC/DUP CONTROL-IN BITS [SEL 6]
257 ;
258 000400 CD.ENB = 000400 ; ENABLE RECEIVE, TRANSMIT, DATA TERMINAL READY
259 010000 CD.SEC = 010000 ; SECONDARY-STATION ADDRESS-CHECK MODE
260 020000 CD.DUP = 020000 ; DUPLEX SWITCH (0=FULL, 1=HALF)
261 100000 CD.DEC = 100000 ; OPERATING MODE (0=SDLC, 1=DDCMP)
262
263 ;
264 ; BUFFER ADDRESS IN/OUT SPECIAL DATA PORT BITS [SEL 6]
265 ;
266 010000 CD.KIL = 010000 ; KILL I/O (XMT/RCV BUFFER ADDR IN)
267 010000 CD.EOM = 010000 ; END OF MESSAGE (XMT/RCV BUFFER ADDR OUT)
268
269 ;
270 ; DUP-11 CSR MODEM CONTROL BITS [SEL 0]
271 ;
272 040000 DU.RNG = 040000 ; RING STATE
273 010000 DU.CAR = 010000 ; CARRIER STATE
274 001000 DU.DSR = 001000 ; DATA SET READY STATE
275 ;**-36
276 000005 CTIME = 005 ; TRANSMIT RESPONSE TIMEOUT VALUE (5 SECS)
277
278
279 ;
280 ; INTERUPT QUEUE FLAG BITS (IN C.STS OF THE CCB)
281 ;
282 000007 CQ.COM = 000007 ; FUNCTION FOR KMC-11 TO PERFORM
283 000004 CQ.RCV = 000004 ; FUNCTION RELATES TO RECEIVE BUFFER
284 000370 CQ.ARG = 000370 ; USED FOR ANY ADDITIONAL INFO
285 000010 CQ.AR1 = 000010 ; CQ.ARG = 1
286 000020 CQ.AR2 = 000020 ; CQ.ARG = 2
287 000040 CQ.AR3 = 000040 ; CQ.ARG = 4
288 000100 CQ.AR4 = 000100 ; CQ.ARG = 10
289 177400 CQ.LIN = 177400 ; USED FOR DUP NUMBER (0-15.)
KDP MACRO M1110 27-DEC-79 09:26 PAGE 8
MACRO CALLS AND MACRO DEFINITIONS
291 .IF DF R$$11D ! I$$AS
292
293 .MCALL PRCHD$
294 PRCHD$ $KDPTB,DRIVER ;; BUILD RSX-11D/IAS PROCESS HEADER
295 .ENDC
296
297
298 .SBTTL KMC/DUP INTERRUPT-ENTRY DISPATCH TABLES
299 ;---------------------------------------------------------------;
300 ; I N P U T I N T E R R U P T D I S P A T C H ;
301 ;---------------------------------------------------------------;
302 000060 CDITB:
303 000060 000544' .WORD CITBA ; TRANSMIT BUFFER ADDRESS IN
304 000062 000664' .WORD CICTL ; CONTROL FUNCTION IN
305 000064 000072' .WORD CIINV ; --INVALID--
306 000066 000744' .WORD CIBAS ; DUP-11 CSR BASE ADDRESS IN
307 000070 000602' .WORD CIRBA ; RECEIVE BUFFER ADDRESS IN
308
309 000072 000003 CIINV: BPT
310
311
312 ;---------------------------------------------------------------;
313 ; O U T P U T I N T E R R U P T D I S P A T C H ;
314 ;---------------------------------------------------------------;
315 000074 CDOTB:
316 000074 001004' .WORD COTBA ; TRANSMIT BUFFER ADDRESS OUT
317 000076 001140' .WORD COTCT ; TRANSMIT CONTROL OUT
318 000100 000110' .WORD COINV ; --INVALID--
319 000102 000110' .WORD COINV ; --INVALID--
320 000104 001062' .WORD CORBA ; RECEIVE BUFFER ADDRESS OUT
321 000106 001142' .WORD CORCT ; RECEIVE CONTROL OUT
322
323 000110 000003 COINV: BPT
324
325
326 ;---------------------------------------------------------------;
327 ; C O N T R O L - O U T D I S P A T C H ;
328 ;---------------------------------------------------------------;
329 000112 CDETB:
330 000112 000142' .WORD CEINV ; --INVALID--
331 000114 000142' .WORD CEINV ; --INVALID--
332 000116 000142' .WORD CEINV ; --INVALID--
333 000120 001342' .WORD CEABO ; SDLC -- OPERATION ABORTED
334 000122 001152' .WORD CEBDH ; DDCMP - INVALID HEADER FORMAT
335 000124 001160' .WORD CECRC ; RECEIVE CRC ERROR
336 000126 001372' .WORD CENRB ; NO RECEIVE BUFFER ASSIGNED
337 000130 001402' .WORD CEDSR ; DATA SET READY TRANSITION
338 000132 000142' .WORD CEINV ; --INVALID--
339 000134 001440' .WORD CEUDR ; TRANSMITTER UNDERRUN
340 000136 001166' .WORD CEOVR ; RECEIVER OVERRUN
341 000140 001446' .WORD CEKCM ; KILL-I/O COMPLETE
342
343 000142 000003 CEINV: BPT
KDP MACRO M1110 27-DEC-79 09:26 PAGE 9
KMC/DUP PROCESS DISPATCH TABLES
345 .SBTTL KMC/DUP PROCESS DISPATCH TABLES
346 ;---------------------------------------------------------------;
347 ; D D M P R O C E S S D I S P A T C H T A B L E ;
348 ;---------------------------------------------------------------;
349 000144 $KDPTB::
350 000144 002050' .WORD CDTRN ; TRANSMIT ENABLE
351 000146 002202' .WORD CDRCV ; RECEIVE ENABLE
352 000150 002244' .WORD CDKIO ; KILL I/O ENABLE
353 000152 002670' .WORD CDCTL ; CONTROL ENABLE
354
355 000154 002536' .WORD CDTMO ; TIMEOUT
356
357 ; TRANSMIT COMPLETE (VIA INTERRUPT)
358 ; RECEIVE COMPLETE (VIA INTERRUPT)
359 ; KILL I/O COMPLETE (VIA INTERRUPT)
360 ; CONTROL COMPLETE (VIA INTERRUPT)
361
362
363 ;---------------------------------------------------------------;
364 ; K I L L - I / O D I S P A T C H T A B L E ;
365 ;---------------------------------------------------------------;
366 000156 KILTAB:
367 000156 002264' .WORD CDKIL ; TRANSMIT AND RECEIVE KILL
368 000160 002372' .WORD CDRKL ; RECEIVE KILL
369 000162 002472' .WORD CDXKL ; TRANSMIT KILL
370
371
372 ;---------------------------------------------------------------;
373 ; C O N T R O L E N A B L E D I S P A T C H ;
374 ;---------------------------------------------------------------;
375 000164 CTLTAB:
376 000164 000216' .WORD CD.INV ; INITIALIZATION
377 000166 002702' .WORD CDSTR ; START LINE
378 000170 002762' .WORD CDSTP ; STOP LINE
379 000172 000216' .WORD CD.INV ; TERMINATION
380 000174 000216' .WORD CD.INV ; MAINTENANCE
381 000176 000216' .WORD CD.INV ; SET CHARACTERISTICS
382 000200 000216' .WORD CD.INV ; GET CHARACTERISTICS
383 000202 000226' .WORD CD.NOP ; XON
384 000204 000226' .WORD CD.NOP ; XOFF
385 000206 000226' .WORD CD.NOP ; LOOK FOR RING
386 000210 003046' .WORD CDENB ; ENABLE LINE
387 000212 003154' .WORD CDDIS ; DISABLE LINE
388 000214 003250' .WORD CDMSN ; SENSE MODEM STATUS
389
390
391 000216 CD.INV:
392 000216 012703 100000 MOV #CS.ERR,R3 ; UNSUPPORTED FUNCTION
393 000222 000241 CLC ; SYNCHRONOUS COMPLETION
394 000224 RETURN
395
396 000226 CD.NOP:
397 000226 005003 CLR R3 ; SUCCESSFUL NO-OPERATION
398 000230 RETURN ; SYNCHRONOUS COMPLETION
KDP MACRO M1110 27-DEC-79 09:26 PAGE 10
KMC/DUP OFFSETS TO DUP-11 LINE TABLES
400 .SBTTL KMC/DUP OFFSETS TO DUP-11 LINE TABLES
401 ;+
402 ; WORD TABLE OF OFFSETS FROM THE BEGINNING OF THE KMC-11 LINE
403 ; TABLE TO THE BEGINNING OF EACH POSSIBLE DUP-11 LINE TABLE.
404 ; INDEXED BY THE DUP-11 UNIT NUMBER TIMES 2.
405 ;-
406
407 ;---------------------------------------------------------------;
408 ; D U P - 1 1 L I N E T A B L E O F F S E T S ;
409 ;---------------------------------------------------------------;
410 000232 DSPTAB:
411 000232 000054 .WORD CMLEN+<CTLEN*00>
412 000234 000142 .WORD CMLEN+<CTLEN*01>
413 000236 000230 .WORD CMLEN+<CTLEN*02>
414 000240 000316 .WORD CMLEN+<CTLEN*03>
415 000242 000404 .WORD CMLEN+<CTLEN*04>
416 000244 000472 .WORD CMLEN+<CTLEN*05>
417 000246 000560 .WORD CMLEN+<CTLEN*06>
418 000250 000646 .WORD CMLEN+<CTLEN*07>
419 000252 000734 .WORD CMLEN+<CTLEN*10>
420 000254 001022 .WORD CMLEN+<CTLEN*11>
421 000256 001110 .WORD CMLEN+<CTLEN*12>
422 000260 001176 .WORD CMLEN+<CTLEN*13>
423 000262 001264 .WORD CMLEN+<CTLEN*14>
424 000264 001352 .WORD CMLEN+<CTLEN*15>
425 000266 001440 .WORD CMLEN+<CTLEN*16>
426 000270 001526 .WORD CMLEN+<CTLEN*17>
KDP MACRO M1110 27-DEC-79 09:26 PAGE 11
KMC/DUP OFFSETS TO DUP-11 LINE TABLES
428 ;+ ;AP0009
429 ; POLLING CLASS TABLE FOR DETERMINING LIMITS FOR GIVEN SPEED ;AP0009
430 ; ;AP0009
431 ; ENTRIES ARE SET FOR THE STANDARD SPEED ENTRIES: ;AP0009
432 ; ;AP0009
433 ; NUM BAUD NUM BAUD NUM BAUD ;AP0009
434 ; 0 50. 1 75. 2 110. ;AP0009
435 ; 3 134.5 4 150. 5 1800. ;AP0009
436 ; 6 600. 7 1200. 10 1800. ;AP0009
437 ; 11 2000. 12 2400. 13 3600. ;AP0009
438 ; 14 4800. 15 7200. 16 9600. ;AP0009
439 ; 17 EXTERNAL ;AP0009
440 ;- ;AP0009
441 ;AP0009
442 000004 POLTHR == 4. ; NUMBER OF OVER/UNDER-RUNS TO ACCEPT ;AP0009
443 ; BEFORE ADJUSTING POLLING RATE. ;AP0009
444 ;AP0009
445 000272 004 004 004 HIPOL: .BYTE 4.,4.,4. ; FASTEST POLLING RATE ;AP0009
446 000275 004 004 004 .BYTE 4.,4.,4. ;AP0009
447 000300 004 004 004 .BYTE 4.,4.,4. ;AP0009
448 000303 004 004 003 .BYTE 4.,4.,3. ;AP0009
449 000306 002 001 001 .BYTE 2.,1.,1. ;AP0009
450 000311 000 .BYTE 0. ;AP0009
451 ;AP0009
452 000312 014 014 014 LOPOL: .BYTE 12.,12.,12. ; SLOWEST POLLING RATE ;AP0009
453 000315 014 014 014 .BYTE 12.,12.,12. ;AP0009
454 000320 014 014 014 .BYTE 12.,12.,12. ;AP0009
455 000323 014 014 010 .BYTE 12.,12.,8. ;AP0009
456 000326 006 005 003 .BYTE 6.,5.,3. ;AP0009
457 000331 000 .BYTE 0. ;AP0009
KDP MACRO M1110 27-DEC-79 09:26 PAGE 12
$CDIRI -- INPUT INTERRUPT DISPATCH SERVICE
459 .SBTTL $CDIRI -- INPUT INTERRUPT DISPATCH SERVICE
460 ;+
461 ; FUNCTION:
462 ;
463 ; INPUT-RELATED INTERRUPTS ARE VECTORED TO '$CDIRI' BY A CALL
464 ; SEQUENCE AT OFFSET 'CMIRI' IN THE KMC-11 DEVICE LINE TABLE.
465 ; THE FIRST CCB ON THE INTERRUPT QUEUE ('CMIQH') IS REMOVED,
466 ; THE FUNCTION CODE AND DUP-11 NUMBER ARE SET IN THE KMC-11
467 ; CSR [SEL 2] FROM THE 'C.STS' WORD OF THE INTERRUPT CCB, AND
468 ; THE APPROPRIATE ROUTINE IS CALLED THROUGH THE 'CDITB' TABLE.
469 ;
470 ; ON ENTRY:
471 ;
472 ; R5 = ADDRESS OF 'CMIPR' IN THE KMC-11 LINE TABLE
473 ; ALL INTERRUPTS ARE DISABLED
474 ;
475 ; ON EXIT: (VIA DISPATCH TABLE 'CDITB')
476 ;
477 ; R0 = KMC-11 CSR ADDRESS [SEL 4]
478 ; R1 = KMC-11 LINE TABLE ADDRESS
479 ; R4 = ADDRESS OF CCB REQUESTING THE INTERRUPT
480 ; R5 = DUP-11 LINE TABLE ADDRESS
481 ; ALL REGISTERS HAVE BEEN SAVED
482 ;-
483
484 ;---------------------------------------------------------------;
485 ; I N P U T I N T E R R U P T D I S P A T C H ;
486 ;---------------------------------------------------------------;
487 000332 $CDIRI::
488 000332 $INTSX ;; DROP TO DEVICE PRIORITY LEVEL
489 000336 PUSH <R0,R1,R2,R3> ;; SAVE THE REST OF THE REGISTERS
490 000346 010501 MOV R5,R1 ;; R5 NOW POINTS AT CMIPR+2 = CMORI
491 000350 162701 000020 SUB #CMORI,R1 ;; POINT R1 AT KMC-11 LINE TABLE START
492
493 000354 016100 000040 MOV CMCSR(R1),R0 ;; POINT R0 AT KMC-11 CSR [SEL 0]
494 000360 042720 000200 BIC #CD.REQ,(R0)+ ;; CLEAR THE DATA PORT REQUEST
495
496 000364 $DEQ R1,CMIQH,,20$ ;; TAKE FIRST CCB ON INTERRUPT QUEUE
497 000414 016403 000012 MOV C.STS(R4),R3 ;; STATUS WORD TO R3
498 000420 142703 177770 BICB #^C<CQ.COM>,R3 ;; CLEAR ALL BUT FUNCTION CODE FROM LOW BYTE
499 000424 150320 BISB R3,(R0)+ ;; SET FUNCTION CODE IN CSR [BSEL 2]
500 000426 000303 SWAB R3 ;; EXCHANGE TO GET DUP# LOW-ORDER
501 000430 110320 MOVB R3,(R0)+ ;; SET DUP-11 NUMBER IN CSR [BSEL 3]
502 000432 012702 000060' MOV #CDITB,R2 ;; BRANCH TABLE ADDRESS TO R2
503 000436 000424 BR CDISRV ;; GO CALL THE APPROPRIATE ROUTINE
504
505 000440 000003 20$: BPT ;; >>>>DEBUG<<<< -- 'CMIQH' IS EMPTY
506 000442 CRASH
KDP MACRO M1110 27-DEC-79 09:26 PAGE 13
$CDORI -- OUTPUT INTERRUPT DISPATCH SERVICE
508 .SBTTL $CDORI -- OUTPUT INTERRUPT DISPATCH SERVICE
509 ;+
510 ; FUNCTION:
511 ;
512 ; OUTPUT-RELATED INTERRUPTS ARE VECTORED TO HERE VIA A CALL
513 ; SEQUENCE AT OFFSET 'CMORI' IN THE KMC-11 DEVICE LINE TABLE.
514 ; THE FUNCTION CODE AND THE DUP-11 NUMBER ARE TAKEN FROM THE
515 ; KMC-11 CSR [SEL 2], THE DUP-11 LINE TABLE IS LOCATED, AND
516 ; THE APPROPRIATE ROUTINE IS CALLED THROUGH TABLE 'CDOTB'.
517 ;
518 ; ON ENTRY:
519 ;
520 ; R5 = ADDRESS OF 'CMOPR' IN THE KMC-11 LINE TABLE
521 ; ALL INTERRUPTS ARE DISABLED
522 ;
523 ; ON EXIT: (VIA DISPATCH TABLE 'CDOTB')
524 ;
525 ; R0 = KMC-11 CSR ADDRESS [SEL 4]
526 ; R1 = KMC-11 LINE TABLE ADDRESS
527 ; R5 = DUP-11 LINE TABLE ADDRESS
528 ; ALL REGISTERS HAVE BEEN SAVED
529 ;-
530
531 ;---------------------------------------------------------------;
532 ; O U T P U T I N T E R R U P T D I S P A T C H ;
533 ;---------------------------------------------------------------;
534 000444 $CDORI::
535 000444 $INTSX ;; DROP TO DEVICE PRIORITY LEVEL
536 000450 PUSH <R0,R1,R2,R3> ;; SAVE THE REST OF THE REGISTERS
537 000460 010501 MOV R5,R1 ;; R5 NOW POINTS AT CMOPR+2 = CMCSR
538 000462 011100 MOV (R1),R0 ;; POINT R0 AT KMC-11 CSR [SEL 0]
539 000464 162701 000040 SUB #CMCSR,R1 ;; POINT R1 AT KMC-11 LINE TABLE START
540
541 000470 005720 TST (R0)+ ;; POINT TO OUTPUT CSR [SEL 2]
542 000472 012003 MOV (R0)+,R3 ;; INTERRUPT CODE AND DUP# TO R3
543 000474 142703 177770 BICB #^C<CQ.COM>,R3 ;; CLEAR ALL BUT FUNCTION CODE FROM LOW BYTE
544 000500 000303 SWAB R3 ;; EXCHANGE TO GET DUP# LOW-ORDER
545 000502 100417 BMI BADLIN ;; NEGATIVE INDICATES COMPLETION OVERRUN ;AP0009
546 000504 012702 000074' MOV #CDOTB,R2 ;; BRANCH TABLE ADDRESS TO R2
547
548 000510 CDISRV: ;; FIND THE DUP-11 LINE TABLE + DISPATCH
549 000510 110305 MOVB R3,R5 ;; DUP-11 NUMBER FROM CSR [BSEL 3]
550 000512 CALL DLTA ;; POINT R5 AT THE DUP-11 LINE TABLE
551 000516 105003 CLRB R3 ;; CLEAR OUT THE DUP NUMBER
552 000520 000303 SWAB R3 ;; EXCHANGE TO GET FUNCTION CODE LOW-ORDER
553 000522 006303 ASL R3 ;; SHIFT FOR BRANCH TABLE INDEX
554 000524 060203 ADD R2,R3 ;; POINT TO THE CORRECT ENTRY
555
556 000526 CALL @(R3)+ ;; INDIRECT CALL VIA DISPATCH TABLE
557
558 000530 POP <R3,R2,R1,R0> ;; RESTORE SAVED REGISTERS
559 000540 RETURN ;; RETURN TO THE SYSTEM
560 ;AP0009
561 000542 000003 BADLIN: BPT ;; >>>>DEBUG<<<< COMPLETION OVERRUN. ;AP0009
KDP MACRO M1110 27-DEC-79 09:26 PAGE 14
CIXBA -- TRANSMIT/RECEIVE BUFFER ADDRESS IN
563 .SBTTL CIXBA -- TRANSMIT/RECEIVE BUFFER ADDRESS IN
564 ;+
565 ; FUNCTION:
566 ;
567 ; ONE OF THE TRANSMIT OR RECEIVE BUFFER DESCRIPTORS HAS BEEN
568 ; INITIALIZED FOR THE REQUESTING CCB, AND THE INPUT INTERRUPT
569 ; REQUESTED. IF 'CQ.AR1' IN THE 'C.STS' WORD IS ZERO, BUFFER
570 ; DESCRIPTOR #1 (TRANSMIT OR RECEIVE) WAS ASSIGNED, OTHERWISE
571 ; BUFFER DESCRIPTOR #2 WAS ASSIGNED. IF 'CQ.AR2' IS SET, THE
572 ; CCB REPRESENTS A TRANSMIT OR RECEIVE KILL-I/O, AND THE KILL
573 ; REQUEST IS PASSED ON TO THE KMC-11 VIA CSR [SEL 6].
574 ;
575 ; ON ENTRY:
576 ;
577 ; R0 = KMC-11 CSR ADDRESS [SEL 4]
578 ; R1 = KMC-11 LINE TABLE ADDRESS
579 ; R4 = ADDRESS OF CCB REQUESTING INTERRUPT
580 ; R5 = DUP-11 LINE TABLE ADDRESS
581 ;
582 ; ON EXIT:
583 ;
584 ; R0,R5 DESTROYED, OTHER REGISTERS PRESERVED.
585 ; INPUT INTERRUPT REQUESTED IF 'CMIQH' NOT EMPTY.
586 ;-
587
588 .ENABL LSB
589 ;---------------------------------------------------------------;
590 ; T R A N S M I T B U F F E R A D D R E S S I N ;
591 ;---------------------------------------------------------------;
592 000544 CITBA:
593 000544 032764 000020 000012 BIT #CQ.AR2,C.STS(R4) ;; SHOULD A TRANSMIT KILL BE DONE ?
594 000552 001032 BNE CIKIL ;; YES - KILL INSTEAD OF ASSIGN
595 000554 112715 000005 MOVB #CTIME,(R5) ;; START UP THE TRANSMIT TIMER ;AP0009
596 000560 062705 000026 ADD #CTTD1,R5 ;; POINT TO TRANSMIT DESCRIPTOR #1 ;**-1
597 000564 032764 000010 000012 BIT #CQ.AR1,C.STS(R4) ;; IS THAT THE ONE TO USE ?
598 000572 001417 BEQ CIBUF ;; YES - SET DESCRIPTOR ADDR IN THE CSR
599 000574 062705 000010 ADD #CTTD2-CTTD1,R5 ;; NO -- POINT TO DESCRIPTOR #2
600 000600 000414 BR CIBUF ;; ...AND SET THAT ADDRESS IN THE CSR
601
602
603 ;---------------------------------------------------------------;
604 ; R E C E I V E B U F F E R A D D R E S S I N ;
605 ;---------------------------------------------------------------;
606 000602 CIRBA:
607 000602 032764 000020 000012 BIT #CQ.AR2,C.STS(R4) ;; SHOULD A RECEIVE KILL BE DONE ?
608 000610 001013 BNE CIKIL ;; YES - KILL INSTEAD OF ASSIGN
609 000612 062705 000046 ADD #CTRD1,R5 ;; POINT TO RECEIVE DESCRIPTOR #1
610 000616 032764 000010 000012 BIT #CQ.AR1,C.STS(R4) ;; IS THAT THE ONE TO USE ?
611 000624 001402 BEQ CIBUF ;; YES - SET DESCRIPTOR ADDR IN THE CSR
612 000626 062705 000010 ADD #CTRD2-CTRD1,R5 ;; NO -- POINT TO DESCRIPTOR #2
613 ; BR CIBUF ;; SET DESCRIPTOR ADDR IN THE CSR
KDP MACRO M1110 27-DEC-79 09:26 PAGE 15
CIXBA -- TRANSMIT/RECEIVE BUFFER ADDRESS IN
615 000632 CIBUF:
616 .IF DF R$$11D ! I$$AS
617 PUSH <R2,R3> ;; SAVE SOME WORK REGISTERS
618 MOV R5,R2 ;; DESCRIPTOR VIRTUAL ADDRESS TO R2
619 CLR R3 ;; ZERO BIAS = USE CURRENT MAPPING
620 CALL $CNV18 ;; CONVERT TO 18-BIT UNIBUS ADDRESS
621 MOV R2,(R0)+ ;; SET ADDRESS BITS 0-15 IN CSR [SEL 4]
622 CLC ;; CLEAR THE CARRY BIT, SO THAT...
623 ROR R3 ;; ...WE CAN SHIFT MEMORY EXTENSION...
624 ROR R3 ;; ...BITS INTO THE HIGH-ORDER BITS...
625 ROR R3 ;; ...OF REGISTER R3, FOR THE KMC CSR
626 MOV R3,(R0) ;; MEMORY EXTENSION BITS TO CSR [SEL 6]
627 POP <R3,R2> ;; RESTORE WORK REGISTERS
628 BR 60$ ;; RELEASE DATA PORTS AND EXIT
629 .IFF
630 000632 010520 MOV R5,(R0)+ ;; DESCRIPTOR ADDRESS TO CSR [SEL 4]
631 000634 005010 CLR (R0) ;; MEMORY EXTENSION BITS ARE ALWAYS ZERO
632 000636 000410 BR 60$ ;; RELEASE THE DATA PORTS + EXIT
633 .ENDC
634
635
636 ;---------------------------------------------------------------;
637 ; T R A N S M I T O R R E C E I V E K I L L ;
638 ;---------------------------------------------------------------;
639 000640 CIKIL:
640 000640 005020 CLR (R0)+ ;; NO BUFFER ADDRESS
641 000642 012710 010000 MOV #CD.KIL,(R0) ;; SET KILL I/O BIT
642 000646 $ENQ R1,CMKQH ;; ADD CCB TO THE KILL-I/O QUEUE
643 000660 000167 003266 60$: JMP RQIRL ;; RELEASE PORTS AND GET NEXT REQ
644 .DSABL LSB
KDP MACRO M1110 27-DEC-79 09:26 PAGE 16
CICTL -- CONTROL-IN INTERRUPT HANDLER
646 .SBTTL CICTL -- CONTROL-IN INTERRUPT HANDLER
647 ;+
648 ; FUNCTION:
649 ;
650 ; A CONTROL-IN INTERRUPT IS REQUESTED WHEN AN 'ENABLE LINE' OR
651 ; 'DISABLE LINE' CONTROL-ENABLE CCB IS RECEIVED. IF 'DISABLE',
652 ; THE SPECIFIED DUP-11 IS DISABLED BY CLEARING 'CD.ENB' IN THE
653 ; KMC-11 CSR [SEL 6]. IF 'ENABLE', THE LINE PARAMETERS, WHICH
654 ; HAVE BEEN SET IN THE 'CTCTL' WORD, ARE MOVED TO CSR [SEL 6].
655 ;
656 ; ON ENTRY:
657 ;
658 ; R0 = KMC-11 CSR ADDRESS [SEL 4]
659 ; R1 = KMC-11 LINE TABLE ADDRESS
660 ; R4 = ADDRESS OF CCB REQUESTING INTERRUPT
661 ; R5 = DUP-11 LINE TABLE ADDRESS
662 ;
663 ; ON EXIT:
664 ;
665 ; R0,R3,R4 DESTROYED. CONTROL CCB POSTED COMPLETE.
666 ;-
667
668 ;---------------------------------------------------------------;
669 ; C O N T R O L I N I N T E R R U P T ;
670 ;---------------------------------------------------------------;
671 000664 CICTL:
672 000664 116502 000065 MOVB CTITM+1(R5),R2 ;; GET POLLING RATE PARAMETER ;AP0009
673 000670 010220 MOV R2,(R0)+ ;; AND SET IT [SEL 4] ;AP0009
674 000672 005010 CLR (R0) ;; CLEAR CSR [SEL 6] ;**-1
675 000674 122764 000026 000011 CMPB #FS.DIS/400,C.MOD(R4) ;; IS THIS A DISABLE REQUEST ?
676 000702 001004 BNE 20$ ;; NO -- MUST BE AN ENABLE
677 000704 042765 000400 000016 BIC #CD.ENB,CTCTL(R5) ;; FLAG THE LINE AS DISABLED
678 000712 000402 BR 40$ ;; EXIT - CSR IS ALREADY SET
679
680 000714 016510 000016 20$: MOV CTCTL(R5),(R0) ;; MOVE PRESET CONTROL WORD TO CSR
681
682 000720 40$: CALL RQIRL ;; RELEASE DATA PORTS + RE-REQUEST
683 000724 105764 000010 TSTB C.FNC(R4) ;; IS THIS HIS ? ;AP0009
684 000730 001403 BEQ 50$ ;; IF SO, ;AP0009
685 000732 005003 CLR R3 ;; STATUS = SUCCESSFUL
686 000734 GOTO $DDCCP ;; POST CONTROL COMPLETE
687 ;AP0009
688 000740 50$: GOTO $CCBRT ;; RETURN OUR CCB. ;AP0009
KDP MACRO M1110 27-DEC-79 09:26 PAGE 17
CIBAS -- DUP-11 CSR BASE ADDRESS IN
690 .SBTTL CIBAS -- DUP-11 CSR BASE ADDRESS IN
691 ;+
692 ; FUNCTION:
693 ;
694 ; A CSR-BASE-IN INTERRUPT IS REQUESTED WHEN AN 'ENABLE LINE'
695 ; CONTROL CCB IS RECEIVED FOR A DUP-11 WITHOUT THE 'CT.BAS'
696 ; FLAG SET. THE CSR-BASE-IN FUNCTION IS PERFORMED, AND THE
697 ; CCB IS RE-SCHEDULED FOR THE 'ENABLE LINE' CONTROL-IN.
698 ;
699 ; ON ENTRY:
700 ;
701 ; R0 = KMC-11 CSR ADDRESS [SEL 4]
702 ; R1 = KMC-11 LINE TABLE ADDRESS
703 ; R4 = ADDRESS OF CCB REQUESTING INTERRUPT
704 ; R5 = DUP-11 LINE TABLE ADDRESS
705 ;
706 ; ON EXIT:
707 ;
708 ; R0,R5 DESTROYED, OTHER REGISTERS PRESERVED.
709 ;-
710
711 ;---------------------------------------------------------------;
712 ; D U P - 1 1 C S R B A S E A D D R I N ;
713 ;---------------------------------------------------------------;
714 000744 CIBAS:
715 000744 005020 CLR (R0)+ ;; CLEAR CSR [SEL 4]
716 000746 052765 000020 000004 BIS #CT.BAS,CTFLG(R5) ;; SAY BASE IN DONE NOW
717 000754 016505 000002 MOV CTCSR(R5),R5 ;; GET THE DUP-11 CSR ADDRESS
718 000760 042705 160007 BIC #^C017770,R5 ;; ONLY BITS 3-12 ARE WANTED
719 000764 010510 MOV R5,(R0) ;; SET THE CSR ADDRESS IN [SEL 6]
720
721 000766 CALL RQIRL ;; RELEASE PORTS AND RESCHEDULE
722 000772 112764 000001 000012 MOVB #CD.CTL,C.STS(R4) ;; SET NEW OPERATION CODE
723 001000 000167 003120 JMP INSIQT ;; PUT CCB BACK AT HEAD OF QUEUE
KDP MACRO M1110 27-DEC-79 09:26 PAGE 18
COTBA -- TRANSMIT BUFFER ADDRESS OUT
725 .SBTTL COTBA -- TRANSMIT BUFFER ADDRESS OUT
726 ;+
727 ; FUNCTION:
728 ;
729 ; A TRANSMIT BUFFER ADDRESS OUT FUNCTION IS A 'TRANSMIT COM-
730 ; PLETE' FOR THE BUFFER DESCRIPTOR ADDRESSED IN CSR [SEL 4].
731 ; THE COMPLETED CCB IS POSTED COMPLETE AND ANOTHER ASSIGNED.
732 ;
733 ; ON ENTRY:
734 ;
735 ; R0 = KMC-11 CSR ADDRESS [SEL 4]
736 ; R1 = KMC-11 LINE TABLE ADDRESS
737 ; R5 = DUP-11 LINE TABLE ADDRESS
738 ;
739 ; ON EXIT:
740 ;
741 ; R2,R3,R4 DESTROYED, OTHER REGISTERS PRESERVED.
742 ;-
743
744 ;---------------------------------------------------------------;
745 ; T R A N S M I T B U F F E R A D D R E S S O U T ;
746 ;---------------------------------------------------------------;
747 001004 COTBA:
748 001004 105015 CLRB (R5) ;; RESET THE TRANSMIT TIMER ;AP0009
749 001006 012002 MOV (R0)+,R2 ;; DESCRIPTOR ADDRESS FROM CSR [SEL 4] ;**-1
750 .IF DF R$$11D ! I$$AS
751 CALL CVTDSC ;; CONVERT DESCRIPTOR ADDRESS TO 16 BITS
752 .ENDC
753 001010 005003 CLR R3 ;; COMPLETION STATUS = SUCCESS
754 001012 122765 000004 000064 CMPB #POLTHR,CTITM(R5) ;; IF POLLING THRESHOLD ;AP0009
755 001020 101402 BLOS COTCP ;; IS ENDANGERED, THEN ;AP0009
756 001022 105265 000064 INCB CTITM(R5) ;; BUMP IT BACK UP. ;AP0009
757
758 001026 COTCP: ;; COMMON TRANSMIT COMPLETE PROCESSING
759 001026 014204 MOV -(R2),R4 ;; ACTIVE CCB ADDRESS TO R4
760 001030 001413 BEQ 100$ ;; IF THERE IS ONE ;AP0015
761 001032 005012 CLR (R2) ;; DESCRIPTOR NO LONGER IN USE
762 001034 142764 000177 000023 BICB #177,C.FLG+1(R4) ;;CLEAR KMC-11 FLAGS FROM CCB
763 001042 CALL $DDXMP ;; POST TRANSMIT COMPLETE
764 001046 CALL TRNASN ;; TRY TO ASSIGN ANOTHER BUFFER
765 001052 105060 177774 CLRB -4(R0) ;; RELEASE THE DATA PORTS
766 001056 RETURN ;; EXIT -- ALL DONE
767 ;AP0015
768 001060 000003 100$: BPT ;; >>>>DEBUG<<<< INACTIVE DESCRIPTOR RELEASED ;AP0015
KDP MACRO M1110 27-DEC-79 09:26 PAGE 19
CORBA -- RECEIVE BUFFER ADDRESS OUT
770 .SBTTL CORBA -- RECEIVE BUFFER ADDRESS OUT
771 ;+
772 ; FUNCTION:
773 ;
774 ; A RECEIVE BUFFER ADDRESS OUT IS A 'RECEIVE COMPLETE' FOR
775 ; THE BUFFER DESCRIPTOR ADDRESSED BY THE CSR [SEL 4]. IF THE
776 ; 'CD.EOM' FLAG IS SET IN CSR [SEL 6], THE INCOMING MESSAGE
777 ; IS POSTED COMPLETE VIA THE 'CORCP' ROUTINE. IF 'CD.EOM'
778 ; IS NOT SET, 'CS.MTL' IS SET IN 'CTFLG' TO INDICATE THAT
779 ; THE NEXT COMPLETION (WITH 'CD.EOM') WAS FOR A MESSAGE THAT
780 ; WAS TOO LONG FOR A SINGLE BUFFER. THE COMPLETED BUFFER IS
781 ; RE-ASSIGNED FOR THE NEXT RECEIVE.
782 ;
783 ; ON ENTRY:
784 ;
785 ; R0 = KMC-11 CSR ADDRESS [SEL 4]
786 ; R1 = KMC-11 LINE TABLE ADDRESS
787 ; R5 = DUP-11 LINE TABLE ADDRESS
788 ;
789 ; ON EXIT:
790 ;
791 ; R0,R2,R4 DESTROYED, OTHER REGISTERS PRESERVED.
792 ;-
793
794 ;---------------------------------------------------------------;
795 ; R E C E I V E B U F F E R A D D R E S S O U T ;
796 ;---------------------------------------------------------------;
797 001062 CORBA:
798 001062 012002 MOV (R0)+,R2 ;; DESCRIPTOR ADDRESS FROM CSR [SEL 4]
799 .IF DF R$$11D ! I$$AS
800 CALL CVTDSC ;; CONVERT DESCRIPTOR ADDRESS TO 16 BITS
801 .ENDC
802 001064 032710 010000 BIT #CD.EOM,(R0) ;; DID WE RECEIVE END-OF-MESSAGE ?
803 001070 001410 BEQ 20$ ;; NO -- MESSAGE IS TOO LONG
804 001072 005003 CLR R3 ;; INITIAL COMPLETION STATUS = SUCCESS
805 001074 122765 000004 000064 CMPB #POLTHR,CTITM(R5) ;; IF POLLING THRESHOLD ;AP0009
806 001102 101442 BLOS CORCP ;; IS ENDANGERED, THEN ;AP0009
807 001104 105265 000064 INCB CTITM(R5) ;; BUMP IT BACK UP. ;AP0009
808 001110 000437 BR CORCP ;; JOIN COMMON RECEIVE COMPLETE CODE
809
810 001112 105060 177774 20$: CLRB -4(R0) ;; RELEASE THE DATA PORTS
811 001116 052765 104000 000004 BIS #CS.ERR!CS.MTL,CTFLG(R5) ;; STATUS WHEN MSG COMPLETES
812 001124 014204 MOV -(R2),R4 ;; ACTIVE CCB ADDRESS TO R4
813 001126 001403 BEQ 100$ ;; IF THERE IS ONE ;AP0010
814 001130 005022 CLR (R2)+ ;; RECORD NO LONGER IN USE ;AP0010
815 001132 000167 002620 JMP RCVASN ;; RE-ASSIGN THE SAME CCB ;**-2
816 ;AP0010
817 001136 000003 100$: BPT ;; >>>>DEBUG<<<< INACTIVE DESCRIPTOR RELEASED ;AP0010
KDP MACRO M1110 27-DEC-79 09:26 PAGE 20
COXCT -- CONTROL-OUT INTERRUPT DISPATCH
819 .SBTTL COXCT -- CONTROL-OUT INTERRUPT DISPATCH
820 ;+
821 ; FUNCTION:
822 ;
823 ; CONTROL OUT ACTS AS AN ERROR REPORTING MECHANISM. THE IN-
824 ; TERRUPT IS DISPATCHED BASED ON THE ERROR CODE RECEIVED IN
825 ; THE KMC-11 CSR [SEL 6].
826 ;
827 ; ON ENTRY:
828 ;
829 ; R0 = KMC-11 CSR ADDRESS [SEL 4]
830 ; R1 = KMC-11 LINE TABLE ADDRESS
831 ; R5 = DUP-11 LINE TABLE ADDRESS
832 ;
833 ; ON EXIT: (VIA DISPATCH TABLE 'CDETB')
834 ;
835 ; R0 = KMC-11 CSR ADDRESS [SEL 6]
836 ; R2 = BUFFER DESCRIPTOR ADDRESS FROM CSR [SEL 4]
837 ; R1,R5 UNMODIFIED
838 ;-
839
840 ;---------------------------------------------------------------;
841 ; C O N T R O L O U T D I S P A T C H E R ;
842 ;---------------------------------------------------------------;
843 001140 COTCT: ;; TRANSMIT-RELATED CONTROL OUT
844 001140 105015 CLRB (R5) ;; RESET THE TRANSMIT TIMER ;AP0009
845 001142 CORCT: ;; RECEIVE-RELATED CONTROL OUT ;**-1
846 001142 012002 MOV (R0)+,R2 ;; DESCRIPTOR ADDRESS FROM CSR [SEL 4]
847 001144 111004 MOVB (R0),R4 ;; FUNCTION CODE BITS FROM CSR [BSEL 6]
848 .IF DF R$$11D ! I$$AS
849 CALL CVTDSC ;; CONVERT DESCRIPTOR ADDRESS TO 16 BITS
850 .ENDC
851 001146 000174 000112' JMP @CDETB(R4) ;; GO SERVICE THE ERROR
852
853
854 ;---------------------------------------------------------------;
855 ; D D C M P H E A D E R F O R M A T E R R O R ;
856 ;---------------------------------------------------------------;
857 001152 CEBDH:
858 001152 012703 102000 MOV #CS.ERR!CS.HFE,R3 ;; ERROR STATUS TO R3
859 001156 000407 BR CERSN ;; POST RECEIVE COMPLETE
860
861
862 ;---------------------------------------------------------------;
863 ; R E C E I V E D D A T A C R C E R R O R ;
864 ;---------------------------------------------------------------;
865 001160 CECRC:
866 001160 012703 100400 MOV #CS.ERR!CS.DCR,R3 ;; ERROR STATUS TO R3
867 001164 000404 BR CERSN ;; POST RECEIVE COMPLETE
KDP MACRO M1110 27-DEC-79 09:26 PAGE 21
COXCT -- CONTROL-OUT INTERRUPT DISPATCH
869 ;---------------------------------------------------------------;
870 ; R E C E I V E R O V E R R U N E R R O R ;
871 ;---------------------------------------------------------------;
872 001166 CEOVR:
873 001166 CALL POLCHK ;; CHECK IF POLLING SHOULD BE ADJUSTED ;AP0009
874 001172 012703 100004 MOV #CS.ERR!CS.ROV,R3 ;; ERROR STATUS TO R3
875 001176 052765 000010 000004 CERSN: BIS #CT.RKC,CTFLG(R5) ;; RE-SYNCH WILL OCCUR NEXT
876 001204 CALL LOGG3 ;; LOG THE EVENT ;BH0001
877
878 .SBTTL CORCP -- COMMON RECEIVE COMPLETE PROCESSING
879 ;+
880 ; FUNCTION:
881 ;
882 ; THE COMPLETED RECEIVE CCB IS POSTED COMPLETE WITH STATUS
883 ; AS ACCUMULATED IN THE 'CTFLG' WORD AND R3 ON ENTRY. A NEW
884 ; RECEIVE BUFFER IS ALLOCATED AND ASSIGNED VIA 'RCVGET'.
885 ;
886 ; ON ENTRY:
887 ;
888 ; R0 = KMC-11 CSR ADDRESS [SEL 6]
889 ; R1 = KMC-11 LINE TABLE ADDRESS
890 ; R2 = BUFFER DESCRIPTOR ADDRESS FROM CSR [SEL 4]
891 ; R3 = STATUS TO BE RETURNED VIA $DDRCP
892 ; R5 = DUP-11 LINE TABLE ADDRESS
893 ;
894 ; ON EXIT:
895 ;
896 ; R2,R3,R4 DESTROYED, OTHER REGISTERS PRESERVED.
897 ;-
898
899 ;---------------------------------------------------------------;
900 ; C O M M O N R E C E I V E C O M P L E T E ;
901 ;---------------------------------------------------------------;
902 001210 CORCP:
903 001210 105060 177774 CLRB -4(R0) ;; NO LONGER NEED DATA PORT
904 001214 014204 MOV -(R2),R4 ;; ACTIVE CCB ADDRESS TO R4
905 001216 001450 BEQ 100$ ;; IF THERE IS ONE ;AP0010
906 001220 005022 CLR (R2)+ ;; RECORD NO LONGER IN USE ;AP0010
907 001222 016264 000002 000020 MOV 2(R2),C.CNT1(R4) ;; SET BYTE COUNT FROM DESCRIPTOR ;AP0010
908 001230 032765 100000 000016 BIT #CD.DEC,CTCTL(R5) ;; ARE WE RUNNING DDCMP ? ;**-2
909 001236 001006 BNE 20$ ;; YES - BYTE COUNT IS CORRECT
910 001240 032765 010000 000016 BIT #CD.SEC,CTCTL(R5) ;; SECONDARY-STATION MODE ?
911 001246 001402 BEQ 20$ ;; NO -- BYTE COUNT IS CORRECT
912 001250 005264 000020 INC C.CNT1(R4) ;; INCREMENT FOR ADDRESS BYTE
913
914 001254 20$: PUSH R5 ;; SAVE THE LINE TABLE ADDRESS
915 001256 062705 000004 ADD #CTFLG,R5 ;; POINT R5 TO THE FLAGS WORD
916 001262 051503 BIS (R5),R3 ;; SET ACCUMULATED STATUS IN R3
917 001264 042703 040073 BIC #CT.MSK,R3 ;; CLEAR OUT DRIVER-ONLY FLAGS
918 001270 042715 137704 BIC #^C<CT.MSK>,(R5) ;;CLEAR STATUS FROM LINE TABLE
919 001274 032715 000010 BIT #CT.RKC,(R5) ;; WILL RECEIVER RE-SYNCH AFTER THIS MSG ?
920 001300 001404 BEQ 40$ ;; NO -- FLAGS WORD IS ALL SET
921 001302 042715 000010 BIC #CT.RKC,(R5) ;; REMOVE THE 'WILL RE-SYNCH' FLAG
922 001306 052715 010000 BIS #CS.RSN,(R5) ;; SET 'RE-SYNCH' FLAG FOR NEXT TIME
923 001312 40$: POP R5 ;; RECOVER LINE TABLE START ADDRESS
924 001314 112764 000002 000011 MOVB #FS.DVC/400,C.MOD(R4) ;; DEVICE CHECKS CRC, CRC NOT IN BUFFER
925 001322 012764 100014 000022 MOV #CF.LB!CF.SOM!CF.EOM,C.FLG(R4) ;; SET BUFFER FLAGS
KDP MACRO M1110 27-DEC-79 09:26 PAGE 21-1
CORCP -- COMMON RECEIVE COMPLETE PROCESSING
926 001330 CALL $DDRCP ;; POST RECEIVE COMPLETE
927 001334 000167 002344 JMP RCVGET ;; GET AND ASSIGN A NEW RECEIVE BUFFER
928 ;AP0010
929 001340 000003 100$: BPT ;; >>>>DEBUG<<<< INACTIVE DESCRIPTOR RELEASED ;AP0010
KDP MACRO M1110 27-DEC-79 09:26 PAGE 22
CEABO -- SDLC/ADCCP FRAME ABORT RECEIVED
931 .SBTTL CEABO -- SDLC/ADCCP FRAME ABORT RECEIVED
932 ;+
933 ; FUNCTION:
934 ;
935 ; THE KMC-11 HAS DETECTED AN ABORT SEQUENCE WHILE RECEIVING
936 ; IN SDLC/ADCCP (BIT-STUFF) MODE. THE RECEIVE BUFFER IS RE-
937 ; ASSIGNED AND THE CONDITION IS IGNORED.
938 ;
939 ; ON ENTRY:
940 ;
941 ; R0 = KMC-11 CSR ADDRESS [SEL 6]
942 ; R1 = KMC-11 LINE TABLE ADDRESS
943 ; R2 = BUFFER DESCRIPTOR ADDRESS FROM CSR [SEL 4]
944 ; R5 = DUP-11 LINE TABLE ADDRESS
945 ;
946 ; ON EXIT:
947 ;
948 ; R2,R4 DESTROYED, OTHER REGISTERS PRESERVED.
949 ;-
950
951 ;---------------------------------------------------------------;
952 ; B I T - S T U F F A B O R T R E C E I V E D ;
953 ;---------------------------------------------------------------;
954 001342 CEABO:
955 001342 012704 100100 MOV #CS.ERR!CS.ABO,R4 ;; LOG THIS EVENT ;BH0001
956 001346 CALL LOGG4 ;; ... ;BH0001
957 001352 105060 177774 CLRB -4(R0) ;; RELEASE THE DATA PORTS
958 001356 014204 MOV -(R2),R4 ;; ABORTED CCB ADDRESS TO R4
959 001360 001403 BEQ 100$ ;; IF THERE IS ONE ;AP0010
960 001362 005022 CLR (R2)+ ;; RECORD NO LONGER IN USE ;AP0010
961 001364 000167 002366 JMP RCVASN ;; RE-ASSIGN THE SAME CCB ;**-2
962 ;AP0010
963 001370 000003 100$: BPT ;; >>>>DEBUG<<<< INACTIVE DESCRIPTOR RELEASED ;AP0010
964
965
966 ;---------------------------------------------------------------;
967 ; N O R E C E I V E B U F F E R A S S I G N E D ;
968 ;---------------------------------------------------------------;
969 001372 CENRB:
970 001372 052765 010000 000004 BIS #CS.RSN,CTFLG(R5) ;; NO BUFFER, BUT WAIT REQUEST ALREADY SET
971 001400 000414 BR CERDP ;; LEAVE ;BH0001
972 ;**-1
973
974 ;---------------------------------------------------------------;
975 ; D A T A - S E T - R E A D Y S T A T E C H A N G E ;
976 ;---------------------------------------------------------------;
977 001402 CEDSR:
978 001402 032765 001000 000004 BIT #CT.DRU,CTFLG(R5) ;; IF THIS ONE EXPECTED ;AP0016
979 001410 001004 BNE 10$ ;; THEN ;AP0016
980 001412 052765 001000 000004 BIS #CT.DRU,CTFLG(R5) ;; NEXT ONE WON'T BE. ;AP0016
981 001420 000404 BR CERDP ;AP0016
982 001422 012704 100010 10$: MOV #CS.ERR!CS.RNG,R4 ;; LOG THIS EVENT ;BH0001
983 001426 000401 BR 1$ ;; DON'T LOG THIS EVENT ;SR0017
984 001430 004316' .WORD LOGG4 ;; PATCH BR TO JSR TO REENABLE ;SR0017
985 001432 1$: ;; ;SR0017
986 001432 CERDP: ;BH0001
987 001432 105060 177774 CLRB -4(R0) ;; 'DSR' CHANGED -- IGNORE IT
KDP MACRO M1110 27-DEC-79 09:26 PAGE 22-1
CEABO -- SDLC/ADCCP FRAME ABORT RECEIVED
988 001436 RETURN ;; EXIT WITH DATA PORTS RELEASED
989
990
991 ;---------------------------------------------------------------;
992 ; T R A N S M I T T E R U N D E R R U N ;
993 ;---------------------------------------------------------------;
994 001440 CEUDR:
995 001440 CALL POLCHK ;; CHECK IF POLLING SHOULD BE ADJUSTED ;AP0009
996 001444 000772 BR CERDP ;; AND EXIT. ;AP0015
KDP MACRO M1110 27-DEC-79 09:26 PAGE 23
CEKCM -- KILL-I/O COMPLETE FROM KMC-11
998 .SBTTL CEKCM -- KILL-I/O COMPLETE FROM KMC-11
999 ;+
1000 ; FUNCTION:
1001 ;
1002 ; 'CEKCM' IS ENTERED ON A CONTROL-OUT INTERRUPT INDICATING
1003 ; THAT A KILL-I/O REQUESTED BY THE DRIVER IS NOW COMPLETE.
1004 ; THE KILL COMPLETE INDICATES THAT ALL BUFFERS, PREVIOUSLY
1005 ; ASSIGNED FOR THE FUNCTION (XMT/RCV) KILLED, ARE NO LONGER
1006 ; IN USE BY THE KMC-11. IF IT IS A RECEIVE KILL DUE TO A
1007 ; KILL-I/O, THE BUFFERS ARE RE-ASSIGNED. IF RECEIVE KILL
1008 ; DUE TO A CONTROL-STOP, THE BUFFERS ARE RELEASED. FOR A
1009 ; TRANSMIT KILL OF ANY TYPE, ALL OUTSTANDING BUFFERS WILL
1010 ; BE RETURNED TO THE DLC IN THE ORDER IN WHICH THEY CAME.
1011 ; IF IT IS THE FIRST HALF OF A TRANSMIT AND RECEIVE KILL,
1012 ; THE SECOND HALF (ALWAYS TRANSMIT KILL) IS SCHEDULED.
1013 ;
1014 ; ON ENTRY:
1015 ;
1016 ; R0 = KMC-11 CSR ADDRESS [SEL 6]
1017 ; R1 = KMC-11 LINE TABLE ADDRESS
1018 ; R2 = BUFFER DESCRIPTOR ADDRESS FROM CSR [SEL 4]
1019 ; R5 = DUP-11 LINE TABLE ADDRESS
1020 ;
1021 ; ON EXIT:
1022 ;
1023 ; R2,R3,R4 DESTROYED, OTHER REGISTERS PRESERVED.
1024 ;-
1025
1026 ;---------------------------------------------------------------;
1027 ; K M C - 1 1 K I L L - I / O C O M P L E T E ;
1028 ;---------------------------------------------------------------;
1029 001446 CEKCM:
1030 001446 105060 177774 CLRB -4(R0) ;; NO LONGER NEED DATA PORT
1031 001452 $DEQ R1,CMKQH,R0 ;; FIRST CCB ON THE KILL-I/O QUEUE
1032 001502 014204 MOV -(R2),R4 ;; 'KILLED' CCB ADDRESS TO R4
1033 001504 001001 BNE 10$ ;; IF NONE, THEN ;AP0011
1034 001506 000003 BPT ;; >>>>DEBUG<<<< INACTIVE DESCRIPTOR RELEASED ;AP0011
1035 001510 005022 10$: CLR (R2)+ ;; RECORD NO LONGER IN USE ;AP0011
1036 ;**-1
1037 001512 132760 000004 000012 BITB #CD.RBA,C.STS(R0) ;; RECEIVE OR TRANSMIT KILL ?
1038 001520 001436 BEQ 100$ ;; TRANSMIT -- RETURN CCB'S TO THE DLC
1039 001522 042765 000002 000004 BIC #CT.RKL,CTFLG(R5) ;; RECEIVE KILL-I/O COMPLETE
1040 001530 052765 010000 000004 BIS #CS.RSN,CTFLG(R5) ;; SET 'RE-SYNCH' FLAG FOR NEXT TIME
1041 001536 012702 003756' MOV #RCVASN,R2 ;; ASSUME WE'RE RE-ASSIGNING BUFFERS
1042 001542 122760 000006 000010 CMPB #FC.CTL,C.FNC(R0) ;; KILL-I/O OR CONTROL-STOP ?
1043 001550 001002 BNE 20$ ;; KILL-I/O -- 'RCVASN' IS IT
1044 001552 012702 000000G MOV #$RDBRT,R2 ;; CONTROL-STOP -- RELEASE THE BUFFERS
1045
1046 001556 016546 000044 20$: MOV CTRA1(R5),-(SP) ;; CHECK DESCRIPTOR #1 ;AP0012
1047 001562 001403 BEQ 40$ ;; NOPE - THAT ONE WAS 'KILLED' ;**-2
1048 001564 005065 000044 CLR CTRA1(R5) ;; RELEASE THE DESCRIPTOR
1049 001570 000405 BR 60$ ;; CALL + EXIT -- THERE ARE ONLY TWO
KDP MACRO M1110 27-DEC-79 09:26 PAGE 24
CEKCM -- KILL-I/O COMPLETE FROM KMC-11
1051 001572 016516 000054 40$: MOV CTRA2(R5),(SP) ;; CHECK DESCRIPTOR #2 ;AP0012
1052 001576 001402 BEQ 60$ ;; NOPE - RELEASE THE FOUND BUFFERS ;AP0012
1053 001600 005065 000054 CLR CTRA2(R5) ;; RELEASE THE DESCRIPTOR ;**-2
1054 001604 60$: CALL (R2) ;; RELEASE OR RE-ASSIGN THE CCB
1055 001606 012604 MOV (SP)+,R4 ;; IF THERE IS ANOTHER CCB ;AP0012
1056 001610 001471 BEQ CEKCP ;; THEN ;AP0012
1057 001612 CALL (R2) ;; RELEASE OR RE-ASSIGN THIS ALSO ;AP0012
1058 001614 000467 BR CEKCP ;; CHECK FOR TRANSMIT KILL NEXT
1059
1060 001616 042765 000001 000004 100$: BIC #CT.XKL,CTFLG(R5) ;; TRANSMIT KILL-I/O COMPLETE
1061 001624 016514 000024 MOV CTTA1(R5),(R4) ;; CHAIN DESCRIPTOR #1 CCB TO 'KILLED' CCB
1062 001630 001406 BEQ 120$ ;; NOPE - THAT'S THE 'KILLED' ONE
1063 001632 016575 000020 000024 MOV CTITQ(R5),@CTTA1(R5) ;; PUT BOTH BEFORE INACTIVE CCB'S
1064 001640 005065 000024 CLR CTTA1(R5) ;; RELEASE BUFFER DESCRIPTOR #1
1065 001644 000413 BR 160$ ;; RETURN CCB'S - ALL ACCOUNTED FOR
1066
1067 001646 016514 000034 120$: MOV CTTA2(R5),(R4) ;; CHAIN DESCRIPTOR #2 CCB TO 'KILLED' CCB
1068 001652 001406 BEQ 140$ ;; NOPE - THERE WAS ONLY ONE
1069 001654 016575 000020 000034 MOV CTITQ(R5),@CTTA2(R5) ;; PUT BOTH BEFORE INACTIVE CCB'S
1070 001662 005065 000034 CLR CTTA2(R5) ;; RELEASE BUFFER DESCRIPTOR #2
1071 001666 000402 BR 160$ ;; RETURN CCB'S - ALL ACCOUNTED FOR
1072
1073 001670 016514 000020 140$: MOV CTITQ(R5),(R4) ;; RETURN 'KILLED' CCB FIRST
1074 001674 010465 000020 160$: MOV R4,CTITQ(R5) ;; COLLAPSE INTO A SINGLE QUEUE
1075 001700 PUSH #CS.ERR!CS.ABO ;; STATUS CODES IF NORMAL KILL-I/O
1076 001704 122760 000010 000010 CMPB #FC.TIM,C.FNC(R0) ;; TRANSMIT KILL DUE TO TIME-OUT ?
1077 001712 001004 BNE 180$ ;; NO -- COMPLETION CODES CORRECT
1078 001714 012716 140000 MOV #CS.ERR!CS.TTM,(SP) ;; TIMEOUT ERROR INSTEAD ;AP0015
1079 001720 000401 BR 1$ ;; DON'T LOG THIS EVENT ;SR0017
1080 001722 004310' .WORD LOGGS ;; PATCH BR TO JSR TO ENABLE ;SR0017
1081 001724 1$: ;; ;SR0017
1082 ;**-1
1083 001724 180$: $DEQ R5,CTITQ,,200$ ;; REMOVE UNTIL NO MORE ARE LEFT
1084 001754 011603 MOV (SP),R3 ;; PICK UP COMPLETION CODES
1085 001756 142764 000177 000023 BICB #177,C.FLG+1(R4) ;; REMOVE KMC-11 BUFFER FLAGS
1086 001764 CALL $DDXMP ;; RETURN CCB'S TO THE DLC PROCESS
1087 001770 000755 BR 180$ ;; . . .ALL OF THEM
1088 001772 005726 200$: TST (SP)+ ;; CLEAN OFF THE STACK
1089
1090
1091 001774 CEKCP: ;; CHECK FOR ANOTHER KILL REQUEST
1092 001774 010004 MOV R0,R4 ;; RECOVER CONTROL CCB ADDRESS
1093 001776 132764 000010 000012 BITB #CQ.AR1,C.STS(R4) ;; FIRST HALF OF KILL BOTH ?
1094 002004 001405 BEQ CDKCP ;; NO -- KILL OR STOP COMPLETE ;AP0014
1095 002006 042760 000014 000012 BIC #CD.RBA!CQ.AR1,C.STS(R0) ;; SECOND IS ALWAYS TRANSMIT KILL ;**-1
1096 002014 000167 002104 JMP INSIQT ;; RE-REQUEST AS FIRST INTERRUPT
1097
1098 002020 005003 CDKCP: CLR R3 ;; STATUS = SUCCESSFUL ;AP0014
1099 002022 126427 000010 000006 CMPB C.FNC(R4),#FC.CTL ;; KILL DUE TO CONTROL-STOP ? ;**-1
1100 002030 001002 BNE 40$ ;; NO -- CHECK OTHER POSSIBILITIES
1101 002032 GOTO $DDCCP ;; POST CONTROL FUNCTION COMPLETE
1102
1103 002036 101002 40$: BHI 60$ ;; 'FC.TIM' IS HIGHER THAN 'FC.CTL'
1104 002040 GOTO $DDKCP ;; POST KILL-I/O COMPLETE
1105
1106 002044 60$: GOTO $CCBRT ;; RELEASE CCB FROM TIMEOUT KILL
KDP MACRO M1110 27-DEC-79 09:26 PAGE 25
CDTRN -- TRANSMIT ENABLE ENTRY
1108 .SBTTL CDTRN -- TRANSMIT ENABLE ENTRY
1109 ;+
1110 ; FUNCTION:
1111 ;
1112 ; 'CDTRN' WILL ACCEPT A ONE- OR TWO-CCB CHAIN OF BUFFERS TO
1113 ; BE TRANSMITTED ON THE DUP-11 WHOSE LINE TABLE IS ADDRESSED
1114 ; BY R5. EACH CCB IS INITIALIZED WITH THE KMC-11 BUFFER FLAG
1115 ; BITS SET IN THE HIGH-ORDER BYTE OF 'C.FLG', THE DUP UNIT #
1116 ; IN 'C.STS'+1, AND THE FUNCTION CODE 'CD.TBA' IN 'C.STS'.
1117 ; EACH CCB IS ADDED TO THE INACTIVE TRANSMIT QUEUE, AND AN
1118 ; ATTEMPT IS MADE TO ASSIGN NEW TRANSMIT BUFFERS TO THE KMC.
1119 ;
1120 ; ON ENTRY:
1121 ;
1122 ; R4 = ADDRESS OF FIRST TRANSMIT ENABLE CCB
1123 ; R5 = DUP-11 LINE TABLE ADDRESS
1124 ;
1125 ; ON EXIT:
1126 ;
1127 ; R4 DESTROYED, OTHER REGISTERS PRESERVED.
1128 ;-
1129
1130 ;---------------------------------------------------------------;
1131 ; T R A N S M I T E N A B L E E N T R Y ;
1132 ;---------------------------------------------------------------;
1133 002050 CDTRN:
1134 002050 PUSH R1 ; SAVE R1
1135 002052 CALL CLTA ; KMC-11 LINE TABLE ADDRESS TO R1
1136
1137 002056 20$: PUSH <(R4),R4> ; SAVE CCB LINK AND ADDRESS
1138 002062 062704 000012 ADD #C.STS,R4 ; POINT TO THE CCB STATUS WORD
1139 002066 105024 CLRB (R4)+ ; SET 'CD.TBA' IN THE LOW-ORDER BYTE
1140 002070 116524 000006 MOVB CTDUP(R5),(R4)+ ; SET THE DUP# IN THE HIGH-ORDER BYTE
1141 002074 062704 000006 ADD #C.FLG-C.BUF,R4 ; POINT TO THE BUFFER FLAGS WORD
1142
1143 002100 032714 000010 BIT #CF.SOM,(R4) ; IS THIS A START-OF-MESSAGE ?
1144 002104 001402 BEQ 40$ ; NO -- CHECK OTHER FLAGS
1145 002106 052714 000400 BIS #BD.SOM,(R4) ; USE HIGH-ORDER BYTE FOR KMC-11 FLAGS
1146 002112 032714 000004 40$: BIT #CF.EOM,(R4) ; IS THIS AN END-OF-MESSAGE ?
1147 002116 001402 BEQ 60$ ; NO --
1148 002120 052714 001000 BIS #BD.EOM,(R4) ; SET KMC-11 DESCRIPTOR FLAGS
1149 002124 032714 000040 60$: BIT #CF.SYN,(R4) ; PRECEDE FRAME WITH SYNC-TRAIN ?
1150 002130 001402 BEQ 80$ ; NO --
1151 002132 052714 010000 BIS #BD.SYN,(R4) ; SET KMC-11 DESCRIPTOR FLAGS
1152 002136 80$: POP R4 ; RECOVER CCB - 'CF.LB' SAME AS 'BD.LBD'
1153
1154 002140 INHIB$ ;;; DISABLE COMIOP INTERRUPTS
1155 002152 $ENQ R5,CTITQ ;;; ADD CCB TO THE INACTIVE QUEUE
1156 002164 CALL TRNASN ;;; TRY TO ASSIGN NEW BUFFERS
1157 002170 ENABL$ ;;; ENABLE COMIOP INTERRUPTS
1158
1159 002174 POP R4 ; RECOVER CCB LINK INTO R4
1160 002176 001327 BNE 20$ ; MORE TO GO - CONTINUE
1161 002200 000417 BR CDEXT ; RESTORE R1 AND EXIT
KDP MACRO M1110 27-DEC-79 09:26 PAGE 26
CDRCV -- RECEIVE ENABLE ENTRY
1163 .SBTTL CDRCV -- RECEIVE ENABLE ENTRY
1164 ;+
1165 ; FUNCTION:
1166 ;
1167 ; THE RECEIVE ENABLE ROUTINE IS ENTERED WHEN A RECEIVE BUFFER
1168 ; HAS BECOME AVAILABLE FOLLOWING AN ALLOCATION FAILURE AND A
1169 ; CALL TO '$RDBWT'. THE RECEIVE CCB AND BUFFER IS INITIALIZED
1170 ; AND ASSIGNED TO THE APPROPRIATE DUP-11 LINE.
1171 ;
1172 ; ON ENTRY:
1173 ;
1174 ; R4 = ADDRESS OF CCB WITH LARGE DATA BUFFER
1175 ; R5 = DUP-11 LINE TABLE ADDRESS
1176 ;
1177 ; ON EXIT:
1178 ;
1179 ; R4 DESTROYED, OTHER REGISTERS PRESERVED.
1180 ;-
1181
1182 ;---------------------------------------------------------------;
1183 ; R E C E I V E E N A B L E E N T R Y ;
1184 ;---------------------------------------------------------------;
1185 002202 CDRCV:
1186 002202 PUSH R1 ; SAVE R1
1187 002204 CALL CLTA ; GET ADDRESS OF COMIOP DLT
1188
1189 002210 INHIB$ ;;; DISABLE KMC-11 INTERRUPTS
1190 002222 CALL RCVUSE ;;; SETUP + ASSIGN THE NEW BUFFER
1191 002226 052765 000200 000004 BIS #CS.BUF,CTFLG(R5) ;;; SET ALLOCATION FAILURE BIT
1192 002234 ENABL$ ;;; ENABLE KMC-11 INTERRUPTS
1193
1194 002240 CDEXT:
1195 002240 POP R1 ; RECOVER R1
1196 002242 RETURN ; RETURN TO THE SYSTEM
KDP MACRO M1110 27-DEC-79 09:26 PAGE 27
CDKIO -- KILL-I/O ENABLE ENTRY
1198 .SBTTL CDKIO -- KILL-I/O ENABLE ENTRY
1199 ;+
1200 ; FUNCTION:
1201 ;
1202 ; THE KILL-I/O ENABLE REQUEST IS DISPATCHED ACCORDING
1203 ; TO THE FUNCTION MODIFIER CODE IN C.MOD OF THE CCB.
1204 ;
1205 ; ON ENTRY:
1206 ;
1207 ; R3 = CCB FUNCTION MODIFIER CODE
1208 ; R4 = ADDRESS OF KILL-I/O ENABLE CCB
1209 ; R5 = DUP-11 LINE TABLE ADDRESS
1210 ;
1211 ; ON EXIT: (VIA DISPATCH TABLE 'KILTAB')
1212 ;
1213 ; R1 = KMC-11 LINE TABLE ADDRESS
1214 ; (SP)= SAVED VALUE OF R1 AT ENTRY
1215 ; R4,R5 UNMODIFIED
1216 ;-
1217
1218 ;---------------------------------------------------------------;
1219 ; K I L L - I / O E N A B L E E N T R Y ;
1220 ;---------------------------------------------------------------;
1221 002244 CDKIO:
1222 002244 PUSH R1 ; SAVE R1 FOR EVERYBODY
1223 002246 CALL CLTA ; KMC-11 LINE TABLE ADDRESS TO R1
1224 002252 116564 000006 000013 MOVB CTDUP(R5),C.STS+1(R4) ; SET DUP# IN C.STS+1 OF CCB
1225 002260 000173 000156' JMP @KILTAB(R3) ; CALL KILL I/O ROUTINE
KDP MACRO M1110 27-DEC-79 09:26 PAGE 28
CDKIL -- RECEIVE AND TRANSMIT KILL-I/O
1227 .SBTTL CDKIL -- RECEIVE AND TRANSMIT KILL-I/O
1228 ;+
1229 ; FUNCTION:
1230 ;
1231 ; 'CDKIL' WILL EXECUTE A RECEIVE KILL FOR A SPECIFIED DUP-11
1232 ; LINE, FORCING A RECEIVER RE-SYNCHRONIZATION. IF THERE ARE
1233 ; TRANSMIT CCB'S ACTIVE FOR THE LINE, A TRANSMIT KILL WILL BE
1234 ; PERFORMED, RETURNING THE OUTSTANDING CCB'S TO THE DLC. THIS
1235 ; ROUTINE IS ALSO ENTERED AT 'CMKIL' TO KILL I/O AS A RESULT
1236 ; OF A 'STOP LINE' CONTROL REQUEST.
1237 ;
1238 ; ON ENTRY:
1239 ;
1240 ; R1 = KMC-11 LINE TABLE ADDRESS
1241 ; R4 = ADDRESS OF CONTROL OR KILL-I/O CCB
1242 ; R5 = DUP-11 LINE TABLE ADDRESS
1243 ; (SP)= SAVED VALUE OF R1 AT ENTRY
1244 ;
1245 ; ON EXIT:
1246 ;
1247 ; ALL REGISTERS ARE PRESERVED.
1248 ;-
1249
1250 ;---------------------------------------------------------------;
1251 ; K I L L R E C E I V E A N D T R A N S M I T ;
1252 ;---------------------------------------------------------------;
1253 002264 CDKIL:
1254 002264 105064 000012 CLRB C.STS(R4) ; KILL I/O NOT FROM 'STOP'
1255
1256 002270 CMKIL:
1257 002270 042764 000007 000012 BIC #CQ.COM,C.STS(R4) ; COMMAND MUST BE ZEROED
1258 ;**-2
1259 002276 INHIB$ ;;; DISABLE COMIOP INTERRUPTS
1260 002310 005765 000044 TST CTRA1(R5) ;;; IF A ;AP0013
1261 002314 001003 BNE 10$ ;;; RECEIVE BUFFER ;AP0013
1262 002316 005765 000054 TST CTRA2(R5) ;;; IS NOT ASSIGNED ;AP0013
1263 002322 001470 BEQ CDXK1 ;;; THEN TRY FOR TRANSMIT. ;AP0013
1264 ;AP0013
1265 002324 152764 000034 000012 10$: BISB #CD.RBA!CQ.AR1!CQ.AR2,C.STS(R4) ;;; ASSUME KILL RCV + XMT ;AP0013
1266 002332 052765 000003 000004 BIS #CT.XKL!CT.RKL,CTFLG(R5) ;;; INDICATE BOTH IN PROGRESS ;AP0013
1267 ;AP0013
1268 002340 005765 000024 TST CTTA1(R5) ;;; TEST FOR ACTIVE TRANSMIT
1269 002344 001033 BNE CDKXT ;;; YES - MUST KILL BOTH
1270 002346 005765 000034 TST CTTA2(R5) ;;; CHECK THE SECOND CCB SLOT
1271 002352 001030 BNE CDKXT ;;; YES - MUST KILL BOTH
1272
1273 002354 142764 000010 000012 BICB #CQ.AR1,C.STS(R4) ;;; ONLY NEED RECEIVE KILL
1274 002362 042765 000001 000004 BIC #CT.XKL,CTFLG(R5) ;;; XMT KILL NOT IN PROGRESS
1275 002370 000421 BR CDKXT ;;; REQUEST INTERRUPT + EXIT
KDP MACRO M1110 27-DEC-79 09:26 PAGE 29
CDRKL -- RECEIVE KILL-I/O
1277 .SBTTL CDRKL -- RECEIVE KILL-I/O
1278 ;+
1279 ; FUNCTION:
1280 ;
1281 ; 'CDRKL' WILL EXECUTE A RECEIVE KILL FOR THE SPECIFIED
1282 ; DUP-11 LINE, FORCING RECEIVER RE-SYNCHRONIZATION.
1283 ;
1284 ; ON ENTRY:
1285 ;
1286 ; R1 = KMC-11 LINE TABLE ADDRESS
1287 ; R4 = ADDRESS OF KILL-I/O ENABLE CCB
1288 ; R5 = DUP-11 LINE TABLE ADDRESS
1289 ; (SP)= SAVED VALUE OF R1 AT ENTRY
1290 ;
1291 ; ON EXIT:
1292 ;
1293 ; ALL REGISTERS ARE PRESERVED.
1294 ;-
1295
1296 ;---------------------------------------------------------------;
1297 ; R E C E I V E K I L L - I / O E N A B L E ;
1298 ;---------------------------------------------------------------;
1299 002372 CDRKL:
1300 002372 INHIB$ ;;; DISABLE COMIOP INTERRUPTS ;**-2
1301 002404 005765 000044 TST CTRA1(R5) ;;; IF A ;AP0013
1302 002410 001003 BNE 10$ ;;; RECEIVE BUFFER ;AP0013
1303 002412 005765 000054 TST CTRA2(R5) ;;; IS NOT ASSIGNED ;AP0013
1304 002416 001415 BEQ CDKRD ;;; THEN RETURN SUCCESS. ;AP0013
1305 ;AP0013
1306 002420 112764 000024 000012 10$: MOVB #CD.RBA!CQ.AR2,C.STS(R4) ;;; SET TO RECEIVE KILL ;AP0013
1307 002426 052765 000002 000004 BIS #CT.RKL,CTFLG(R5) ;;; RECEIVE KILL IN PROGRESS
1308
1309 002434 CDKXT:
1310 002434 CALL INSIQB ;;; QUEUE UP THE INTERRUPT
1311 002440 ENABL$ ;;; ENABLE COMIOP INTERRUPTS
1312
1313 002444 CDKX2:
1314 002444 POP R1 ; RESTORE R1
1315 002446 000261 SEC ; RETURN IS ASYNCHRONOUS
1316 002450 RETURN
1317 ;AP0013
1318 002452 052765 010000 000004 CDKRD: BIS #CS.RSN,CTFLG(R5) ;;; SET 'RE-SYNCH' FLAG FOR NEXT TIME ;AP0013
1319 002460 CDKXD: ENABL$ ;;; RE-ENABLE INTERRUPTS ;AP0013
1320 002464 CALL CDKCP ; KILL COMPLETE RIGHT AWAY ;AP0014
1321 002470 000765 BR CDKX2 ; FINISH UP. ;AP0013
KDP MACRO M1110 27-DEC-79 09:26 PAGE 30
CDXKL -- TRANSMIT KILL-I/O
1323 .SBTTL CDXKL -- TRANSMIT KILL-I/O
1324 ;+
1325 ; FUNCTION:
1326 ;
1327 ; 'CDXKL' WILL CHECK FOR ANY ACTIVE TRANSMIT CCB'S ON THE
1328 ; THE SPECIFIED DUP-11 LINE. IF NONE, THE KILL-I/O IS RE-
1329 ; TURNED WITH AN IMMEDIATE COMPLETION. OTHERWISE THE KILL
1330 ; CCB IS USED TO REQUEST AN INPUT INTERRUPT, AND THE CCB
1331 ; IS SET TO PERFORM A TRANSMIT KILL TO THE KMC-11.
1332 ;
1333 ; ON ENTRY:
1334 ;
1335 ; R1 = KMC-11 LINE TABLE ADDRESS
1336 ; R4 = ADDRESS OF KILL-I/O ENABLE CCB
1337 ; R5 = DUP-11 LINE TABLE ADDRESS
1338 ; (SP)= SAVED VALUE OF R1 AT ENTRY
1339 ;
1340 ; ON EXIT:
1341 ;
1342 ; R3,R4 DESTROYED, OTHER REGISTERS PRESERVED.
1343 ;-
1344
1345 ;---------------------------------------------------------------;
1346 ; T R A N S M I T K I L L - I / O E N A B L E ;
1347 ;---------------------------------------------------------------;
1348 002472 CDXKL:
1349 002472 INHIB$ ;;; DISABLE COMIOP INTERRUPTS
1350 002504 CDXK1: ;AP0013
1351 002504 005765 000024 TST CTTA1(R5) ;;; ANY ACTIVE TRANSMITS ?
1352 002510 001003 BNE 20$ ;;; YES - TELL KMC-11 TO KILL
1353 002512 005765 000034 TST CTTA2(R5) ;;; CHECK BOTH DESCRIPTOR SLOTS
1354 002516 001760 BEQ CDKXD ;;; NOTHING TO DO - DO KILL COMPLETE ;AP0013
1355 ;**-6
1356 002520 112764 000020 000012 20$: MOVB #CD.TBA!CQ.AR2,C.STS(R4) ;;; TRANSMIT KILL
1357 002526 052765 000001 000004 BIS #CT.XKL,CTFLG(R5) ;;; XMT KILL IN PROGRESS
1358 002534 000737 BR CDKXT ;;; REQUEST INTRPT AND EXIT
KDP MACRO M1110 27-DEC-79 09:26 PAGE 31
CDTMO -- TIME-OUT ENTRY
1360 .SBTTL CDTMO -- TIME-OUT ENTRY
1361 ;+
1362 ; FUNCTION:
1363 ;
1364 ; WHENEVER A TRANSMIT BUFFER ADDRESS IN IS PERFORMED, A FIVE
1365 ; SECOND TIMER IS SET IN THE DUP-11 LINE TABLE. IF NO RESP-
1366 ; ONSE IS RECEIVED, THE TIMER WILL EXPIRE AND ENTER HERE. IF
1367 ; THERE ARE ACTIVE TRANSMIT REQUESTS, AND A TRANSMIT KILL IS
1368 ; NOT IN PROGRESS, A TRANSMIT KILL IS INITIATED. IF A CCB IS
1369 ; NOT AVAILABLE, A ONE-SECOND TIMER IS SET FOR A RETRY.
1370 ;
1371 ; ON ENTRY:
1372 ;
1373 ; R5 = DUP-11 LINE TABLE ADDRESS
1374 ;
1375 ; ON EXIT:
1376 ;
1377 ; R4 DESTROYED, OTHER REGISTERS PRESERVED.
1378 ;-
1379
1380 ;---------------------------------------------------------------;
1381 ; T R A N S M I T T I M E - O U T E N T R Y ;
1382 ;---------------------------------------------------------------;
1383 002536 CDTMO:
1384 002536 PUSH R1 ; SAVE R1 AT ENTRY
1385 002540 CALL CLTA ; LOCATE THE KMC-11 LINE TABLE
1386
1387 002544 INHIB$ ;;; DISABLE INTERRUPTS
1388 002556 005765 000024 TST CTTA1(R5) ;;; CHECK FOR ACTIVE TRANSMIT'S
1389 002562 001003 BNE 20$ ;;; YES - SCHEDULE TRANSMIT KILL
1390 002564 005765 000034 TST CTTA2(R5) ;;; CHECK BOTH DESCRIPTORS
1391 002570 001433 BEQ 60$ ;;; NO -- LEAVE TIMER ZERO + EXIT
1392
1393 002572 032765 000001 000004 20$: BIT #CT.XKL,CTFLG(R5) ;;; TRANSMIT KILL ALREADY ACTIVE ?
1394 002600 001027 BNE 60$ ;;; YES - RE-ENABLE AND EXIT
1395 002602 CALL $CCBGT ;;; TRY TO GET A CCB
1396 002606 103423 BCS 40$ ;;; FAILED - WAIT A SECOND AND RETRY
1397 002610 052765 000001 000004 BIS #CT.XKL,CTFLG(R5) ;;; TRANSMIT KILL IN PROGRESS
1398 002616 PUSH R4 ;;; SAVE CCB START ADDRESS
1399
1400 002620 062704 000006 ADD #C.LIN,R4 ;;; POINT TO LINE-NUMBER SLOT
1401 002624 116524 000007 MOVB CTSLN(R5),(R4)+ ;;; SET THE SYSTEM LINE NUMBER
1402 002630 105024 CLRB (R4)+ ;;; CLEAR THE STATION ADDRESS
1403 002632 012724 000010 MOV #FC.TIM,(R4)+ ;;; SET FUNCTION = TIME-OUT
1404 002636 112724 000020 MOVB #CD.TBA!CQ.AR2,(R4)+ ;;; FLAGS = TRANSMIT KILL-I/O ;AP0013
1405 002642 116514 000006 MOVB CTDUP(R5),(R4) ;;; DUP UNIT NUMBER TO C.STS+1 ;**-1
1406 002646 POP R4 ;;; RECOVER CCB START ADDRESS
1407 002650 CALL INSIQT ;;; INSERT CCB AT TOP OF QUEUE
1408 002654 000401 BR 60$ ;;; RE-ENABLE AND EXIT
1409
1410 002656 105215 40$: INCB (R5) ;;; SET A ONE SECOND TIMER FOR RETRY ;AP0009
1411 ;**-1
1412 002660 60$: ENABL$ ;;; RE-ENABLE INTERRUPTS
1413 002664 POP R1 ; RECOVER SAVED R1
1414 002666 RETURN ; RETURN TO THE COMM/EXEC
KDP MACRO M1110 27-DEC-79 09:26 PAGE 32
CDCTL -- CONTROL ENABLE ENTRY
1416 .SBTTL CDCTL -- CONTROL ENABLE ENTRY
1417 ;+
1418 ; FUNCTION:
1419 ;
1420 ; 'CDCTL' IS ENTERED WHEN THE DLC PROCESS HAS REQUESTED A
1421 ; CONTROL FUNCTION FOR ONE OF THE DUP-11 LINES. THE REQUEST
1422 ; IS DISPATCHED ACCORDING TO THE FUNCTION MODIFIER IN C.MOD
1423 ;
1424 ; ON ENTRY:
1425 ;
1426 ; R3 = FUNCTION MODIFIER CODE
1427 ; R4 = ADDRESS OF CONTROL ENABLE CCB,
1428 ; OR OPTIONAL CALLING PARAMETER (TYPE DEPENDENT)
1429 ; R5 = DUP-11 LINE TABLE ADDRESS
1430 ;
1431 ; ON EXIT: (VIA DISPATCH TABLE 'CTLTAB')
1432 ;
1433 ; R1 = KMC-11 LINE TABLE ADDRESS
1434 ; (SP)= SAVED VALUE OF R1 AT ENTRY
1435 ; R4,R5 UNMODIFIED
1436 ;-
1437
1438 ;---------------------------------------------------------------;
1439 ; C O N T R O L E N A B L E E N T R Y ;
1440 ;---------------------------------------------------------------;
1441 002670 CDCTL:
1442 002670 PUSH R1 ; SAVE R1 FOR EVERYBODY
1443 002672 CALL CLTA ; KMC-11 LINE TABLE ADDRESS TO R1
1444 002676 000173 000164' JMP @CTLTAB(R3) ; DISPATCH TO APPROPRIATE ROUTINE
KDP MACRO M1110 27-DEC-79 09:26 PAGE 33
CDSTR -- START A DUP-11 LINE
1446 .SBTTL CDSTR -- START A DUP-11 LINE
1447 ;+
1448 ; FUNCTION:
1449 ;
1450 ; THE SPECIFIED DUP-11 LINE IS STARTED BY ASSIGNING RECEIVE
1451 ; BUFFERS AND SETTING THE 'CT.STR' FLAG, ALLOWING TRANSMIT
1452 ; BUFFER ASSIGNMENTS. AN 'ENABLE LINE' FUNCTION MUST HAVE
1453 ; PERFORMED PRIOR TO THE 'START LINE'.
1454 ;
1455 ; ON ENTRY:
1456 ;
1457 ; R1 = KMC-11 LINE TABLE ADDRESS
1458 ; R4 = ADDRESS OF CONTROL ENABLE CCB
1459 ; R5 = DUP-11 LINE TABLE ADDRESS
1460 ; (SP)= SAVED VALUE OF R1 AT ENTRY
1461 ;
1462 ; ON EXIT:
1463 ;
1464 ; R3 DESTROYED, OTHER REGISTERS PRESERVED.
1465 ;-
1466
1467 ;---------------------------------------------------------------;
1468 ; S T A R T A D U P - 1 1 L I N E ;
1469 ;---------------------------------------------------------------;
1470 002702 CDSTR:
1471 002702 032765 000400 000016 BIT #CD.ENB,CTCTL(R5) ; HAS THE LINE BEEN ENABLED ?
1472 002710 001421 BEQ 20$ ; NO -- REJECT THE 'START'
1473 002712 052765 000040 000004 BIS #CT.STR,CTFLG(R5) ; TELL EVERYONE WE ARE STARTING
1474 002720 PUSH R4
1475
1476 002722 INHIB$ ;;; DISABLE COMIOP INTERRUPTS
1477 002734 CALL RCVGET ;;; ASSIGN A NEW RECEIVE BUFFER
1478 002740 CALL RCVGET ;;; MAKE THAT TWO
1479 002744 ENABL$ ;;; ENABLE COMIOP INTERRUPTS
1480 002750 POP R4
1481 002752 000432 BR CDSXT ; RESTORE R1, SYNCHRONOUS COMPLETION
1482
1483 002754 012703 100040 20$: MOV #CS.ERR!CS.DIS,R3 ; START REJECT, LINE DISABLED
1484 002760 000430 BR CDSX2 ; RETURN SYNCHRONOUS COMPLETION
KDP MACRO M1110 27-DEC-79 09:26 PAGE 34
CDSTP -- STOP A DUP-11 LINE
1486 .SBTTL CDSTP -- STOP A DUP-11 LINE
1487 ;+
1488 ; FUNCTION:
1489 ;
1490 ; THE 'STOP LINE' FUNCTION WILL PERFORM A RECEIVE AND
1491 ; TRANSMIT KILL-I/O FUNCTION AND TURN OFF THE 'STARTED'
1492 ; FLAG TO PREVENT FURTHER BUFFER ASSIGNMENTS. THE LINE
1493 ; IS NOT DISABLED.
1494 ;
1495 ; ON ENTRY:
1496 ;
1497 ; R1 = KMC-11 LINE TABLE ADDRESS
1498 ; R4 = ADDRESS OF CONTROL ENABLE CCB
1499 ; R5 = DUP-11 LINE TABLE ADDRESS
1500 ; (SP)= SAVED VALUE OF R1 AT ENTRY
1501 ;
1502 ; ON EXIT:
1503 ;
1504 ; R4 DESTROYED, OTHER REGISTERS PRESERVED.
1505 ;-
1506
1507 ;---------------------------------------------------------------;
1508 ; S T O P A D U P - 1 1 L I N E ;
1509 ;---------------------------------------------------------------;
1510 002762 CDSTP:
1511 002762 105015 CLRB (R5) ; MAKE SURE TIMER IS STOPPED ;AP0009
1512 002764 032765 000040 000004 BIT #CT.STR,CTFLG(R5) ; ARE WE STARTED? ;**-1
1513 002772 001422 BEQ CDSXT ; NO -- IMMEDIATE COMPLETION
1514 002774 042765 000040 000004 BIC #CT.STR,CTFLG(R5) ; YES - BUT NOT FOR LONG
1515
1516 003002 PUSH R4 ; SAVE ADDRESS OF CONTROL CCB
1517 003004 005004 CLR R4 ; ZERO OUT R4
1518 003006 156504 000007 BISB CTSLN(R5),R4 ; GET THE SYSTEM LINE NUMBER
1519 003012 CALL $RDBQP ; PURGE THE BUFFER WAIT QUEUE
1520 003016 POP R4 ; RECOVER R4
1521 003020 112764 000040 000012 MOVB #CQ.AR3,C.STS(R4) ; SET 'STOP' FLAG, CLEAR CQ.COM
1522 003026 116564 000006 000013 MOVB CTDUP(R5),C.STS+1(R4) ; SET DUP NUM. IN CCB
1523 003034 000167 177230 JMP CMKIL ; KILL TRANSMIT AND RECEIVE
1524
1525 003040 CDSXT:
1526 003040 005003 CLR R3 ; STATUS = GOOD, CLEAR CARRY
1527 003042 CDSX2:
1528 003042 POP R1 ; RESTORE R1 SAVED AT ENTRY
1529 003044 RETURN
KDP MACRO M1110 27-DEC-79 09:26 PAGE 35
CDENB -- ENABLE DUP-11 LINE PRIOR TO START
1531 .SBTTL CDENB -- ENABLE DUP-11 LINE PRIOR TO START
1532 ;+
1533 ; FUNCTION:
1534 ;
1535 ; THE 'ENABLE LINE' FUNCTION MUST BE PERFORMED BEFORE A LINE
1536 ; CAN BE EITHER STARTED OR USED FOR XMT/RCV FUNCTIONS. ONLY
1537 ; GET/SET CHARACTERISTICS AND MODEM SENSE OPERATIONS CAN BE
1538 ; PROCESSED PRIOR TO ENABLING. IF NECESSARY, THE KMC-11 WILL
1539 ; BE INITIALIZED, THEN THE LINE PARAMETER WORD ('CTCTL') IS
1540 ; SETUP FOR A CONTROL-IN OPERATION. IF THE CSR-BASE-ADDR-IN
1541 ; HAS NOT BEEN DONE, IT IS SCHEDULED PRIOR TO THE CONTROL-IN
1542 ;
1543 ; ON ENTRY:
1544 ;
1545 ; R1 = KMC-11 LINE TABLE ADDRESS
1546 ; R4 = ADDRESS OF CONTROL ENABLE CCB
1547 ; R5 = DUP-11 LINE TABLE ADDRESS
1548 ; (SP)= SAVED VALUE OF R1 AT ENTRY
1549 ;
1550 ; ON EXIT:
1551 ;
1552 ; R2,R4 DESTROYED, OTHER REGISTERS PRESERVED.
1553 ;-
1554
1555 ;---------------------------------------------------------------;
1556 ; E N A B L E A D U P - 1 1 L I N E ;
1557 ;---------------------------------------------------------------;
1558 003046 CDENB:
1559 003046 005761 000042 TST CMSWT(R1) ; IS THE KMC-11 INITIALIZED ?
1560 003052 100420 BMI 40$ ; YES -- JUST ENABLE THE DUP-11
1561
1562 003054 016102 000040 MOV CMCSR(R1),R2 ; POINT R2 AT THE INPUT CSR
1563 003060 052712 040000 BIS #CD.MCL,(R2) ; MASTER CLEAR THE KMC-11
1564
1565 003064 112762 000377 000002 MOVB #377,2(R2) ; PUT A NON-ZERO IN CSR [BSEL 2]
1566 003072 012722 100000 MOV #CD.RUN,(R2)+ ; SET THE KMC-11 TO 'RUN' STATE
1567 003076 105712 20$: TSTB (R2) ; HAS THE CLEAR COMPLETED YET ?
1568 003100 001376 BNE 20$ ; NO -- LOOP AND WAIT FOR IT
1569
1570 003102 052742 000021 BIS #CD.IEI!CD.IEO,-(R2) ; ALLOW INTERRUPTS **RHR 31AUG77
1571 003106 012761 100000 000042 MOV #CM.INI,CMSWT(R1) ; KMC-11 NOW INITIALIZED
1572
1573 003114 40$: CALL SETCHR ; SET 'CTCTL' WORD FROM 'CTCHR'
1574 003120 042765 001000 000004 BIC #CT.DRU,CTFLG(R5) ; THE NEXT DSR CHANGE IS NOT UNEXPECTED ;AP0016
1575 003126 112764 000001 000012 MOVB #CD.CTL,C.STS(R4) ; SET CODE FOR A CONTROL-IN
1576 003134 032765 000020 000004 BIT #CT.BAS,CTFLG(R5) ; HAS A BASE-IN BEEN DONE?
1577 003142 001023 BNE CDCXT ; YES - CONTROL IS ENOUGH
1578 003144 112764 000003 000012 MOVB #CD.BAS,C.STS(R4) ; SET CODE FOR BASE-IN FIRST
1579 003152 000417 BR CDCXT ; REQUEST INTERRUPT AND EXIT
KDP MACRO M1110 27-DEC-79 09:26 PAGE 36
CDDIS -- DISABLE DUP-11 LINE AFTER STOP
1581 .SBTTL CDDIS -- DISABLE DUP-11 LINE AFTER STOP
1582 ;+
1583 ; FUNCTION:
1584 ;
1585 ; THE 'DISABLE LINE' FUNCTION WILL SCHEDULE A CONTROL-IN
1586 ; FOR THE SPECIFIED DUP-11 TO CLEAR THE 'CD.ENB' CSR BIT,
1587 ; CAUSING THE KMC-11 TO DROP DATA-TERMINAL-READY.
1588 ;
1589 ; ON ENTRY:
1590 ;
1591 ; R1 = KMC-11 LINE TABLE ADDRESS
1592 ; R4 = ADDRESS OF CONTROL ENABLE CCB
1593 ; R5 = DUP-11 LINE TABLE ADDRESS
1594 ; (SP)= SAVED VALUE OF R1 AT ENTRY
1595 ;
1596 ; ON EXIT:
1597 ;
1598 ; R3,R4 DESTROYED, OTHER REGISTERS PRESERVED.
1599 ;-
1600
1601 ;---------------------------------------------------------------;
1602 ; D I S A B L E A D U P - 1 1 L I N E ;
1603 ;---------------------------------------------------------------;
1604 .ENABL LSB
1605 003154 CDDIS:
1606 003154 005003 CLR R3 ; SET STATUS AND CLEAR CARRY
1607 003156 032765 000400 000016 BIT #CD.ENB,CTCTL(R5) ; IS THE LINE ENABLED ?
1608 003164 001427 BEQ 40$ ; NO -- JUST POST COMPLETE
1609 003166 032765 000040 000004 BIT #CT.STR,CTFLG(R5) ; IS THE LINE STOPPED ?
1610 003174 001403 BEQ 20$ ; YES - THAT'S REQUIRED
1611 003176 012703 100020 MOV #CS.ERR!CS.ENB,R3 ; NO -- REJECT THE DISABLE
1612 003202 000420 BR 40$ ; POST IMMEDIATE COMPLETION
1613
1614 003204 112764 000011 000012 20$: MOVB #CD.CTL+CQ.AR1,C.STS(R4) ; CONTROL IN, DISABLE STYLE
1615
1616 003212 CDCXT:
1617 003212 116564 000006 000013 MOVB CTDUP(R5),C.STS+1(R4) ; SET DUP NUM. IN CCB
1618 003220 INHIB$ ;;; DISABLE
1619 003232 CALL INSIQB ;;; SCHEDULE THE INTERRUPT
1620 003236 ENABL$ ;;; ENABLE
1621
1622 003242 000261 SEC ; COMPLETION IS ASYNCHRONOUS
1623 003244 40$: POP R1 ; RECOVER SAVED R1
1624 003246 RETURN
KDP MACRO M1110 27-DEC-79 09:26 PAGE 37
CDMSN -- SENSE MODEM STATUS
1626 .SBTTL CDMSN -- SENSE MODEM STATUS
1627 ;+
1628 ; FUNCTION:
1629 ;
1630 ; 'MODEM SENSE' IS ENTERED WITHOUT A CONTROL CCB, IN ORDER
1631 ; TO POLL THE MODEM STATUS BITS IN THE DUP-11 CSR. MODEM
1632 ; STATUS IS REPORTED VIA FLAG BITS RETURNED IN R4.
1633 ;
1634 ; ON ENTRY:
1635 ;
1636 ; R1 = KMC-11 LINE TABLE ADDRESS
1637 ; R5 = DUP-11 LINE TABLE ADDRESS
1638 ; (SP)= SAVED VALUE OF R1 AT ENTRY
1639 ;
1640 ; ON EXIT:
1641 ;
1642 ; R4 = MODEM STATUS IN MODEM CONTROLLER FORMAT
1643 ; R2 DESTROYED, OTHER REGISTERS PRESERVED.
1644 ;-
1645
1646 ;---------------------------------------------------------------;
1647 ; S E N S E M O D E M S T A T U S ;
1648 ;---------------------------------------------------------------;
1649 003250 CDMSN:
1650 003250 016502 000002 MOV CTCSR(R5),R2 ; GET THE DUP-11 CSR ADDRESS
1651 003254 005004 CLR R4 ; CLEAR RESULT REGISTER + CARRY BIT
1652
1653 003256 032712 040000 BIT #DU.RNG,(R2) ; IS THE PHONE RINGING ?
1654 003262 001402 BEQ 60$ ; NO --
1655 003264 052704 000004 BIS #MC.RNG,R4 ; RING INDICATOR IS ON
1656
1657 003270 032712 010000 60$: BIT #DU.CAR,(R2) ; IS CARRIER UP ?
1658 003274 001402 BEQ 80$ ; NO --
1659 003276 052704 000001 BIS #MC.CAR,R4 ; CARRIER IS UP
1660
1661 003302 032712 001000 80$: BIT #DU.DSR,(R2) ; IS THE DATA SET READY ?
1662 003306 001756 BEQ 40$ ; NO -- POST COMPLETE
1663 003310 052704 000002 BIS #MC.DSR,R4 ; DATA SET IS READY
1664 003314 000753 BR 40$ ; POST COMPLETE - CARRY IS CLEAR
1665 .DSABL LSB
KDP MACRO M1110 27-DEC-79 09:26 PAGE 38
SETCHR -- SET LINE CONTROL WORD FROM CHARACTERISTICS
1667 .SBTTL SETCHR -- SET LINE CONTROL WORD FROM CHARACTERISTICS
1668 ;+
1669 ; FUNCTION:
1670 ;
1671 ; 'SETCHR' INTERPRETS THE LINE CHARACTERISTICS STORED IN
1672 ; THE 'CTCHR' WORD OF A DUP-11 LINE TABLE AND SETS UP THE
1673 ; 'CTCTL' WORD FOR A CONTROL-IN OPERATION TO THE KMC-11.
1674 ;
1675 ; ON ENTRY:
1676 ;
1677 ; R5 = DUP-11 LINE TABLE ADDRESS
1678 ;
1679 ; ON EXIT:
1680 ;
1681 ; R2,R3 DESTROYED, OTHER REGISTERS PRESERVED.
1682 ;-
1683
1684 ;---------------------------------------------------------------;
1685 ; S E T ' C T C T L ' F O R C O N T R O L - I N ;
1686 ;---------------------------------------------------------------;
1687 003316 SETCHR:
1688 003316 010502 MOV R5,R2 ; COPY LINE TABLE START TO R2
1689 003320 010503 MOV R5,R3 ; . . .AND TO R3
1690 003322 062702 000012 ADD #CTCHR+2,R2 ; R2 = ADDRESS OF CHARACTERISTICS WORD #1
1691 003326 062703 000016 ADD #CTCTL,R3 ; R3 = ADDRESS OF THE CONTROL WORD
1692
1693 ;**** NOTE- STATION ADDRESS CHECKING DISABLED FOR SLAVE MODE ******
1694
1695 ; BIT #DC.ADR,(R2) ; 16-BIT SECONDARY-STATION ADDRESS ?
1696 ; BEQ 20$ ; NO -- 8-BIT ADDRESS, IF ANY
1697 ; SWAB (R3) ; GIVE MOST-SIGNIFICANT BYTE TO KMC-11
1698 ; BIC #DC.ADR,(R2) ; ADDRESS-SIZE NO LONGER SIGNIFICANT
1699
1700 ;20$: BIT #DC.SEC,(R2) ; MULTI-POINT SECONDARY STATION ?
1701 ; BEQ 40$ ; NO -- SET THE ADDRESS BYTE ZERO
1702 ; MOVB #<CD.ENB!CD.SEC>/400,1(R3) ; SET HIGH-BYTE FLAGS
1703 ; BR 60$
1704 003332 012713 000400 40$: MOV #CD.ENB,(R3) ; SET 'ENABLED' FLAG, CLEAR ADDRESS BYTE
1705
1706 003336 011246 60$: MOV (R2),-(SP) ; CHARACTERISTICS WORD TO THE STACK
1707 003340 042716 177770 BIC #^C<DC.PRT>,(SP) ;ISOLATE PROTOCOL SELECTION FIELD
1708 003344 022627 000001 CMP (SP)+,#DC.DEC ; SELECTION = DDCMP OR SDLC ?
1709 003350 001002 BNE 80$ ; SDLC -- NO CONTROL BITS TO BE SET
1710 003352 052713 100000 BIS #CD.DEC,(R3) ; DDCMP - SET THE 'DEC-MODE' FLAG
1711
1712 003356 114200 80$: MOVB -(R2),R0 ; PICK UP TRANSMIT SPEED ;AP0009
1713 003360 042700 177760 BIC #^C<17>,R0 ; ISOLATE IT ;AP0009
1714 003364 116065 000312' 000065 MOVB LOPOL(R0),CTITM+1(R5) ; SET INITIAL POLLING RATE ;AP0009
1715 003372 112765 000004 000064 MOVB #POLTHR,CTITM(R5) ; AND OVER/UNDER-RUN THRESHOLD. ;AP0009
1716 003400 132742 000001 BITB #DC.HDX,-(R2) ; HALF-DUPLEX OPERATION ? ;AP0009
1717 003404 001402 BEQ 100$ ; NO -- CONTROL WORD IS ALL SET ;**-1
1718 003406 052713 020000 BIS #CD.DUP,(R3) ; TELL THE KMC-11 TO RUN HALF-DUPLEX
1719 003412 100$: RETURN ; RETURN WITH 'CTCTL' INITIALIZED
KDP MACRO M1110 27-DEC-79 09:26 PAGE 39
POLCHK -- CHECK IF POLLING RATE SHOULD BE ADJUSTED
1721 .SBTTL POLCHK -- CHECK IF POLLING RATE SHOULD BE ADJUSTED ;AP0009
1722 ;+ ;AP0009
1723 ; FUNCTION: ;AP0009
1724 ; ;AP0009
1725 ; THE RATE AT WHICH THE KMC POLLS THE DUP FOR ACTIVITY IS INITIALLY ;AP0009
1726 ; SET TO BE THE SLOWEST SO AS TO KEEP THE UNIBUS ACTIVITY TO A ;AP0009
1727 ; MINIMUM. IF OVERRUNS OR UNDERRUNS OCCUR WITH ANY FREQUENCE, THEN ;AP0009
1728 ; THE RATE SHOULD BE ADJUSTED TO KEEP UP WITH THE DUP. ;AP0009
1729 ; THIS ROUTINE IS CALLED WHENEVER A OVER OR UNDER-RUN IS DETECTED ;AP0009
1730 ; AND INITIATES AND ADJUSTMENT IF TOO MANY ERRORS HAVE OCCURRED. ;AP0009
1731 ; IF WE HIT THE HIGH POLLING LIMIT FOR THE SPEED, NO FURTHER ADJUSTMENT ;AP0009
1732 ; IS MADE, AND THE THRESHOLD IS LEFT TO DRIFT. ;AP0009
1733 ; ;AP0009
1734 ; ON ENTRY: ;AP0009
1735 ; ;AP0009
1736 ; R1 = KMC-11 LINE TABLE ADDRESS ;AP0009
1737 ; R5 = DUP-11 LINE TABLE ADDRESS ;AP0009
1738 ;- ;AP0009
1739 ;AP0009
1740 ;---------------------------------------------------------------; ;AP0009
1741 ; C H E C K P O L L I N G A N D A D J U S T ; ;AP0009
1742 ;---------------------------------------------------------------; ;AP0009
1743 003414 POLCHK: ;AP0009
1744 003414 105365 000064 DECB CTITM(R5) ;; COUNT THIS ERROR ;AP0009
1745 003420 001044 BNE 90$ ;; AND IF TOO MANY ;AP0009
1746 003422 010446 MOV R4,-(SP) ;; SAVE R4 ;AP0009
1747 003424 116504 000011 MOVB CTCHR+1(R5),R4 ;; GET TRANSMIT SPEED ;AP0009
1748 003430 042704 177760 BIC #^C<17>,R4 ;; ISOLATE IT ;AP0009
1749 003434 126465 000272' 000065 CMPB HIPOL(R4),CTITM+1(R5) ;; AND IF WE HIT THE LIMIT ;AP0009
1750 003442 001432 BEQ 80$ ;; DON'T WANT TO BE CAUGHT SPEEDING... ;AP0009
1751 003444 CALL $CCBGT ;; GET A CCB ;AP0009
1752 003450 103003 BCC 10$ ;; IF WE CAN'T GET ONE ;AP0009
1753 003452 105265 000064 INCB CTITM(R5) ;; THEN BUMP THE COUNT BACK UP ;AP0009
1754 003456 000424 BR 80$ ;; AND WAIT THIS ONE OUT. ;AP0009
1755 003460 005064 000010 10$: CLR C.FNC(R4) ;; NO FUNCTION ;AP0009
1756 003464 112764 000001 000012 MOVB #CD.CTL,C.STS(R4) ;; CONTROL-IN IS REAL FUNCTION ;AP0009
1757 003472 116564 000006 000013 MOVB CTDUP(R5),C.STS+1(R4) ;; ON THIS DUP. ;AP0009
1758 003500 062765 177404 000064 ADD #<-1*400+POLTHR>,CTITM(R5) ;; BUMP RATE AND SET THRESHOLD. ;AP0009
1759 ;AP0009
1760 003506 INHIB$ ;;; DISABLE INTERRUPTS ;AP0009
1761 003520 CALL INSIQB ;;; SCHEDULE AN INTERRUPT ;AP0009
1762 003524 ENABL$ ;;; DROP PRIORITY BACK DOWN ;AP0009
1763 ;AP0009
1764 003530 012604 80$: MOV (SP)+,R4 ;; RESTORE R4 ;AP0009
1765 003532 90$: RETURN ;; AND GO AWAY. ;AP0009
KDP MACRO M1110 27-DEC-79 09:26 PAGE 40
TRNASN -- ASSIGN BUFFER(S) TO BE TRANSMITTED
1767 .SBTTL TRNASN -- ASSIGN BUFFER(S) TO BE TRANSMITTED
1768 ;+
1769 ; FUNCTION:
1770 ;
1771 ; THIS ROUTINE WILL ATTEMPT TO ASSIGN TRANSMIT CCB'S TO ONE
1772 ; OR BOTH OF THE TRANSMIT BUFFER DESCRIPTORS, DEPENDING ON
1773 ; DESCRIPTOR AVAILABILITY. IF FREE, THE DESCRIPTOR IS INIT-
1774 ; IALIZED WITH THE BUFFER ADDRESS, BYTE COUNT, AND FLAGS AS
1775 ; SET IN THE TRANSMIT CCB, THE CCB ADDRESS IS USED TO MARK
1776 ; THE DESCRIPTOR IN USE, AND AN INPUT INTERRUPT IS REQUESTED.
1777 ;
1778 ; ON ENTRY:
1779 ;
1780 ; R1 = KMC-11 LINE TABLE ADDRESS
1781 ; R5 = DUP-11 LINE TABLE ADDRESS
1782 ; INTERRUPTS ARE DISABLED
1783 ;
1784 ; ON EXIT:
1785 ;
1786 ; R4 DESTROYED, OTHER REGISTERS PRESERVED.
1787 ;-
1788
1789 ;---------------------------------------------------------------;
1790 ; A S S I G N T R A N S M I T B U F F E R S ;
1791 ;---------------------------------------------------------------;
1792 003534 TRNASN:
1793 003534 032765 000001 000004 BIT #CT.XKL,CTFLG(R5) ;;; IS A TRANSMIT KILL IN PROGRESS ?
1794 003542 001057 BNE 100$ ;;; YES - NO ASSIGNS NOW
1795 003544 PUSH <R0,R2> ;;; SAVE WORK REGISTERS
1796 003550 012702 000002 MOV #2,R2 ;;; LOOP LIMIT = TWO DESCRIPTORS
1797
1798 003554 20$: $DEQ R5,CTITQ,,80$ ;;; TAKE FIRST INACTIVE CCB, IF ANY
1799 003604 010500 MOV R5,R0 ;;; COPY LINE TABLE ADDRESS TO R0
1800 003606 062700 000024 ADD #CTTA1,R0 ;;; POINT TO FIRST ACTIVE CCB SLOT
1801 003612 005710 TST (R0) ;;; IS DESCRIPTOR #1 IN USE ?
1802 003614 001410 BEQ 40$ ;;; NO -- SETUP AND USE IT
1803 003616 005302 DEC R2 ;;; ADJUST LOOP COUNTER
1804 003620 062700 000010 ADD #CTTA2-CTTA1,R0 ;;; POINT TO SECOND ACTIVE CCB SLOT
1805 003624 005710 TST (R0) ;;; IS DESCRIPTOR #2 IN USE ?
1806 003626 001013 BNE 60$ ;;; YES - RE-QUEUE THE INACTIVE CCB
1807 003630 052764 000010 000012 BIS #CQ.AR1,C.STS(R4) ;;; DESCRIPTOR #2 WILL BE USED
1808 003636 010420 40$: MOV R4,(R0)+ ;;; SET ACTIVE CCB, DESCRIPTOR IN USE
1809 003640 CALL BDSET ;;; SETUP KMC-11 BUFFER DESCRIPTOR
1810 003644 CALL INSIQB ;;; PLACE INPUT INTERRUPT REQUEST
1811 003650 005302 DEC R2 ;;; SHOULD WE TRY FOR ANOTHER ASSIGN ?
1812 003652 003340 BGT 20$ ;;; YES - ONE MORE TIME THROUGH
1813 003654 000410 BR 80$ ;;; NO -- WE'VE DONE AS MUCH AS WE CAN
1814
1815 003656 016514 000020 60$: MOV CTITQ(R5),(R4) ;;; REPLACE CCB ON TOP OF THE QUEUE
1816 003662 010465 000020 MOV R4,CTITQ(R5) ;;; ...SINCE WE COULDN'T ASSIGN IT
1817 003666 005714 TST (R4) ;;; WAS IT THE ONLY ONE LEFT ?
1818 003670 001002 BNE 80$ ;;; NO -- LISTHEAD IS ALL SET
1819 003672 010465 000022 MOV R4,CTITQ+2(R5) ;;; COMPLETE THE RE-QUEUEING JOB
1820
1821 003676 80$: POP <R2,R0> ;;; RESTORE WORK REGISTERS
1822 003702 100$: RETURN
KDP MACRO M1110 27-DEC-79 09:26 PAGE 41
RCVGET -- ALLOCATE AND ASSIGN A RECEIVE BUFFER
1824 .SBTTL RCVGET -- ALLOCATE AND ASSIGN A RECEIVE BUFFER
1825 ;+
1826 ; FUNCTION:
1827 ;
1828 ; WHEN ENTERED AT 'RCVGET', THIS ROUTINE WILL TRY TO ALLOCATE
1829 ; A RECEIVE CCB AND BUFFER AND ASSIGN IT TO ONE OF THE DUP-11
1830 ; LINES. WHEN ENTERED AT 'RCVUSE', IT WILL INITIALIZE A CCB
1831 ; AND BUFFER AND ASSIGN IT TO THE LINE. IF A CCB ALLOCATION
1832 ; ATTEMPT FAILS, A BUFFER WAIT REQUEST IS QUEUED VIA $RDBWT.
1833 ;
1834 ; ON ENTRY:
1835 ;
1836 ; R1 = KMC-11 LINE TABLE ADDRESS
1837 ; R4 = ADDRESS OF A RECEIVE CCB + BUFFER ('RCVUSE' ONLY)
1838 ; R5 = DUP-11 LINE TABLE ADDRESS
1839 ; INTERRUPTS ARE DISABLED
1840 ;
1841 ; ON EXIT:
1842 ;
1843 ; R4 IS DESTROYED, OTHERS PRESERVED.
1844 ;-
1845
1846 ;---------------------------------------------------------------;
1847 ; A L L O C A T E R E C E I V E B U F F E R ;
1848 ;---------------------------------------------------------------;
1849 .ENABL LSB
1850 003704 RCVGET:
1851 003704 CALL $RDBGT ;;; GET A RECEIVE DATA BUFFER
1852 003710 103415 BCS 10$ ;;; BR IF WE COULDN'T
1853
1854 003712 RCVUSE:
1855 003712 005014 CLR (R4) ;;; CLEAR THE CCB LINK WORD
1856 003714 105064 000007 CLRB C.STA(R4) ;;; CLEAR THE STATION ADDRESS
1857 003720 116564 000007 000006 MOVB CTSLN(R5),C.LIN(R4) ;;; SET THE SYSTEM LINE NUMBER
1858 003726 116564 000006 000013 MOVB CTDUP(R5),C.STS+1(R4) ;;; DUP-11 UNIT NUMBER TO C.STS+1 ;**-1
1859 003734 012764 100000 000022 MOV #CF.LB,C.FLG1(R4) ;;; SET MINIMUM BUFFER FLAGS
1860 003742 000405 BR RCVASN ;;; ASSIGN THE BUFFER
1861
1862 003744 005004 10$: CLR R4 ;;; ZERO OUT R4
1863 003746 156504 000007 BISB CTSLN(R5),R4 ;;; SYSTEM LINE NUMBER TO R4
1864 003752 GOTO $RDBWT ;;; ASK FOR A BUFFER WHEN ONE IS AVAILABLE
1865 .DSABL LSB
KDP MACRO M1110 27-DEC-79 09:26 PAGE 42
RCVASN -- ASSIGN A RECEIVE DATA BUFFER
1867 .SBTTL RCVASN -- ASSIGN A RECEIVE DATA BUFFER
1868 ;+
1869 ; FUNCTION:
1870 ;
1871 ; THIS ROUTINE WILL ASSIGN A RECEIVE BUFFER TO ONE OF THE
1872 ; RECEIVE BUFFER DESCRIPTORS, INITIALIZE THE DESCRIPTOR VIA
1873 ; THE 'BDSET' ROUTINE, AND QUEUE THE CCB FOR A RECEIVE BUF-
1874 ; FER ADDRESS INPUT INTERRUPT. IF THE LINE IS RUNNING SDLC/
1875 ; ADCCP SECONDARY-STATION MODE, THE BUFFER ADDRESS IS INCRE-
1876 ; MENTED TO ALLOW FOR THE "MISSING" STATION ADDRESS BYTE.
1877 ;
1878 ; ON ENTRY:
1879 ;
1880 ; R1 = KMC-11 LINE TABLE ADDRESS
1881 ; R4 = ADDRESS OF RECEIVE CCB AND BUFFER
1882 ; R5 = DUP-11 LINE TABLE ADDRESS
1883 ; INTERRUPTS ARE DISABLED
1884 ;
1885 ; ON EXIT:
1886 ;
1887 ; R4 IS DESTROYED.
1888 ;-
1889
1890 ;---------------------------------------------------------------;
1891 ; A S S I G N A R E C E I V E B U F F E R ;
1892 ;---------------------------------------------------------------;
1893 003756 RCVASN:
1894 003756 PUSH R0 ;;; SAVE A WORK REGISTER
1895 003760 010500 MOV R5,R0 ;;; COPY LINE TABLE ADDRESS TO R0
1896 003762 112764 000004 000012 MOVB #CD.RBA,C.STS(R4) ;;; KMC-11 ACCESS CODE ;AP0010
1897 003770 062700 000044 ADD #CTRA1,R0 ;;; POINT TO FIRST ACTIVE CCB SLOT
1898
1899 003774 005710 TST (R0) ;;; IS DESCRIPTOR #1 IN USE ?
1900 003776 001407 BEQ 20$ ;;; NO -- SETUP AND USE IT
1901 004000 062700 000010 ADD #CTRA2-CTRA1,R0 ;;; POINT TO SECOND ACTIVE CCB SLOT
1902 004004 005710 TST (R0) ;;; IS DESCRIPTOR #2 IN USE ?
1903 004006 001030 BNE 80$ ;;; YES - THAT BODES ILL FOR OUR HEALTH
1904 004010 052764 000010 000012 BIS #CQ.AR1,C.STS(R4) ;;; DESCRIPTOR #2 WILL BE USED
1905
1906 004016 010420 20$: MOV R4,(R0)+ ;;; SET ACTIVE CCB, DESCRIPTOR IN USE
1907 004020 032765 000002 000004 BIT #CT.RKL,CTFLG(R5) ;;; IS A RECEIVE KILL IN PROGRESS ?
1908 004026 001014 BNE 40$ ;;; YES - 'KILL COMPLETE' WILL RE-ASSIGN
1909
1910 004030 CALL BDSET ;;; SETUP KMC-11 BUFFER DESCRIPTOR
1911 004034 032765 100000 000016 BIT #CD.DEC,CTCTL(R5) ;;; RUNNING DDCMP PROTOCOL MODE ?
1912 004042 001006 BNE 40$ ;;; YES - NOTHING SPECIAL REQUIRED
1913 004044 032765 010000 000016 BIT #CD.SEC,CTCTL(R5) ;;; BIT-STUFF SECONDARY MODE ?
1914 004052 001402 BEQ 40$ ;;; NO -- ALSO NOTHING SPECIAL
1915 004054 005260 177774 INC -4(R0) ;;; LET THE DATA COME IN WORD-ALIGNED
1916
1917 004060 40$: CALL INSIQB ;;; REQUEST AN INPUT INTERRUPT
1918
1919 004064 60$: POP R0 ;;; RESTORE WORK REGISTER
1920 004066 RETURN ;;; RETURN TO CALLER
1921
1922 004070 000003 80$: BPT ;;; 'RCVASN' CALLED WITH NO FREE DESCRIPTOR
1923 004072 CRASH ;;; SAY GOOD-NIGHT, DICK
KDP MACRO M1110 27-DEC-79 09:26 PAGE 43
INSIQB -- INSERT A CCB IN INTERRUPT QUEUE
1925 .SBTTL INSIQB -- INSERT A CCB IN INTERRUPT QUEUE
1926 ;+
1927 ; FUNCTION:
1928 ;
1929 ; WHEN ENTERED AT 'INSIQB', A CCB IS ADDED TO THE END OF THE
1930 ; INTERRUPT REQUEST QUEUE ON THE KMC-11 LINE TABLE. ENTERED
1931 ; AT 'INSIQT', A CCB IS ADDED AS THE FIRST ENTRY ON THE QUEUE.
1932 ; FOR EITHER ENTRY, IF THE QUEUE WAS PREVIOUSLY EMPTY, A KMC
1933 ; INPUT INTERRUPT IS REQUESTED.
1934 ;
1935 ; ON ENTRY:
1936 ;
1937 ; R1 = KMC-11 LINE TABLE ADDRESS
1938 ; R4 = ADDRESS OF INTERRUPT REQUEST CCB
1939 ; INTERRUPTS ARE DISABLED
1940 ;
1941 ; ON EXIT:
1942 ;
1943 ; ALL REGISTERS ARE PRESERVED.
1944 ;-
1945
1946 ;---------------------------------------------------------------;
1947 ; R E Q U E S T I N P U T I N T E R R U P T ;
1948 ;---------------------------------------------------------------;
1949 004074 INSIQB:
1950 004074 $ENQ R1,CMIQH ;;; ADD CCB TO THE INTERRUPT QUEUE
1951 004106 005771 000044 TST @CMIQH(R1) ;;; WAS THE QUEUE EMPTY BEFORE ?
1952 004112 001003 BNE 20$ ;;; NO -- INTERRUPT REQUEST UNNECESSARY
1953 004114 052771 000200 000040 BIS #CD.REQ,@CMCSR(R1) ;;; REQUEST AN INPUT INTERRUPT
1954 004122 20$: RETURN ;;; ALL DONE
1955
1956
1957 ;---------------------------------------------------------------;
1958 ; R E Q U E S T A T T O P O F Q U E U E ;
1959 ;---------------------------------------------------------------;
1960 004124 INSIQT:
1961 004124 016114 000044 MOV CMIQH(R1),(R4) ;;; LINK QUEUE TO CCB
1962 004130 001005 BNE 10$ ;;; BR IF NOT EMPTY
1963 004132 010461 000046 MOV R4,CMIQH+2(R1) ;;; POINT END OF LIST AT CCB
1964 004136 052771 000200 000040 BIS #CD.REQ,@CMCSR(R1) ;;; REQUEST AN INPUT INTERRUPT
1965 004144 010461 000044 10$: MOV R4,CMIQH(R1) ;;; SET THE QUEUE HEADER
1966 004150 RETURN
KDP MACRO M1110 27-DEC-79 09:26 PAGE 44
RQIRL -- RELEASE INTERRUPT REQUEST + POP QUEUE
1968 .SBTTL RQIRL -- RELEASE INTERRUPT REQUEST + POP QUEUE
1969 ;+
1970 ; FUNCTION:
1971 ;
1972 ; THIS ROUTINE WILL RELEASE THE INPUT INTERRUPT CURRENTLY
1973 ; IN PROCESS AND, IF THE INTERRUPT REQUEST QUEUE IS NOT
1974 ; EMPTY, REQUEST ANOTHER KMC-11 INPUT INTERRUPT.
1975 ;
1976 ; ON ENTRY:
1977 ;
1978 ; R1 = KMC-11 LINE TABLE ADDRESS
1979 ; INTERRUPTS ARE DISABLED
1980 ;
1981 ; ON EXIT:
1982 ;
1983 ; ALL REGISTERS ARE PRESERVED.
1984 ;-
1985
1986 ;---------------------------------------------------------------;
1987 ; R E L E A S E I N P U T I N T E R R U P T ;
1988 ;---------------------------------------------------------------;
1989 004152 RQIRL:
1990 004152 PUSH R2 ;;; GET A SCRATCH REGISTER **RHR 31AUG77
1991 004154 016102 000040 MOV CMCSR(R1),R2 ;;; GET KMC-11 CSR ADDRESS **RHR 31AUG77
1992 004160 042762 000020 000002 BIC #CD.RDI,2(R2) ;;; CLEAR READY IN **RHR 31AUG77
1993 004166 005761 000044 TST CMIQH(R1) ;;; NEED TO REQ. PORTS AGAIN ? **RHR 31AUG77
1994 004172 001402 BEQ 20$ ;;; NO -- JUST EXIT **RHR 31AUG77
1995
1996 004174 052712 000200 BIS #CD.REQ,(R2) ;;; REQUEST INTERRUPT
1997 004200 20$: POP R2 ;;; RESTORE SCRATCH REGISTER
1998 004202 RETURN ;;; RETURN
KDP MACRO M1110 27-DEC-79 09:26 PAGE 45
RQIRL -- RELEASE INTERRUPT REQUEST + POP QUEUE
2000 .IF DF R$$11D ! I$$AS
2001
2002 .SBTTL CVTDSC -- CONVERT DESCRIPTOR ADDRESS TO 16 BITS
2003 ;+
2004 ; FUNCTION:
2005 ;
2006 ; WHEN THE KMC-11 PRESENTS A BUFFER ADDRESS OUT OR CONTROL
2007 ; OUT INTERRUPT, CSR [SEL 4] CONTAINS THE 18-BIT UNIBUS AD-
2008 ; DRESS OF THE BUFFER DESCRIPTOR ACTIVE AT THE TIME OF THE
2009 ; INTERRUPT. THIS ROUTINE CONVERTS THE 18-BIT ADDRESS TO A
2010 ; 16-BIT VIRTUAL ADDRESS FOR USE WITHIN THE DRIVER.
2011 ;
2012 ; ON ENTRY:
2013 ;
2014 ; R2 = BITS 0-15 OF THE 18-BIT DESCRIPTOR ADDRESS
2015 ; R5 = DUP-11 LINE TABLE ADDRESS
2016 ;
2017 ; ON EXIT:
2018 ;
2019 ; R2 = 16-BIT VIRTUAL ADDRESS OF BUFFER DESCRIPTOR
2020 ;-
2021
2022 ;---------------------------------------------------------------;
2023 ; C O N V E R T D E S C R I P T O R A D D R E S S ;
2024 ;---------------------------------------------------------------;
2025 CVTDSC:
2026 PUSH <R3,R2> ;; SAVE WORK R3, PUSH R2 VALUE
2027 MOV R5,R2 ;; LINE TABLE BASE ADDRESS TO R5
2028 CLR R3 ;; ZERO BIAS = USE CURRENT MAPPING
2029 CALL $CNV18 ;; CONVERT LINE TABLE BASE TO 18-BITS
2030 SUB R2,(SP) ;; SUBTRACT BASE FROM DESCRIPTOR ADDR
2031 ;; (BITS 16-17 CAN BE IGNORED)
2032 ADD R5,(SP) ;; ADD (VIRTUAL) BASE ADDRESS
2033 POP <R2,R3> ;; R2 = DESCRIPTOR ADDRESS, RESTORE R3
2034 RETURN ;; RETURN TO CALLER
2035
2036 .ENDC
KDP MACRO M1110 27-DEC-79 09:26 PAGE 46
BDSET -- SETUP KMC-11 BUFFER DESCRIPTOR
2038 .SBTTL BDSET -- SETUP KMC-11 BUFFER DESCRIPTOR
2039 ;+
2040 ; FUNCTION:
2041 ;
2042 ; THIS ROUTINE WILL INITIALIZE A KMC-11 BUFFER DESCRIPTOR
2043 ; TO BE USED FOR A TRANSMIT OR RECEIVE BUFFER ASSIGNMENT.
2044 ; THE CCB HAS PREVIOUSLY BEEN SETUP WITH THE KMC-11 FLAGS
2045 ; IN THE HIGH-ORDER BYTE OF THE 'C.FLG1' WORD.
2046 ;
2047 ; ON ENTRY:
2048 ;
2049 ; R0 = ADDRESS OF A THREE-WORD KMC-11 BUFFER DESCRIPTOR
2050 ; R4 = ADDRESS OF A TRANSMIT OR RECEIVE CCB
2051 ;
2052 ; ON EXIT:
2053 ;
2054 ; R0 = ADDRESS OF THE BUFFER DESCRIPTOR FLAGS WORD
2055 ; ALL OTHER REGISTERS PRESERVED.
2056 ;-
2057
2058 ;---------------------------------------------------------------;
2059 ; S E T K M C - 1 1 B U F F E R D E S C R I P T O R ;
2060 ;---------------------------------------------------------------;
2061 004204 BDSET:
2062 .IF NDF M$$MGE
2063 PUSH R4 ;; SAVE THE CCB START ADDRESS
2064 ADD #C.BUF1+2,R4 ;; POINT TO THE BUFFER ADDRESS
2065 MOV (R4)+,(R0)+ ;; SET THE ADDRESS
2066 MOV (R4)+,(R0)+ ;; SET THE BYTE COUNT
2067 MOV (R4),(R0) ;; SET THE FLAGS FROM THE CCB...
2068 CLRB (R0) ;; ...AND CLEAR THE HIGH-ORDER BYTE
2069 POP R4 ;; RECOVER THE CCB ADDRESS
2070 RETURN
2071 .IFF
2072 004204 PUSH <R2,R3,R4> ;; SAVE SOME REGISTERS
2073 004212 062704 000014 ADD #C.BUF,R4 ;; POINT TO BUFFER RELOCATION BIAS
2074 004216 012403 MOV (R4)+,R3 ;; RELOCATION BIAS TO R3
2075 004220 012402 MOV (R4)+,R2 ;; VIRTUAL ADDRESS TO R2
2076 004222 CALL $CNV18 ;; CONVERT TO AN 18 BIT ADDRESS
2077 004226 010220 MOV R2,(R0)+ ;; SET THE LOW ORDER ADDRESS WORD
2078 004230 012420 MOV (R4)+,(R0)+ ;; SET THE BYTE COUNT
2079 004232 011410 MOV (R4),(R0) ;; SET THE BUFFER FLAG BITS...
2080 004234 105020 CLRB (R0)+ ;; ...AND CLEAR THE LOW-ORDER BYTE
2081 004236 006303 ASL R3 ;; SHIFT MEMORY EXTENSION BITS...
2082 004240 006303 ASL R3 ;; ...TWO PLACES FOR THE KMC-11
2083 004242 150310 BISB R3,(R0) ;; SET THE MEMORY EXTENSION BITS
2084 004244 005300 DEC R0 ;; RE-ADJUST R0 POINTER
2085
2086 004246 POP <R4,R3,R2> ;; RESTORE REGISTERS
2087 004254 RETURN
2088 .ENDC
KDP MACRO M1110 27-DEC-79 09:26 PAGE 47
CLTA -- COMPUTE KMC-11 LINE TABLE ADDRESS
2090 .SBTTL CLTA -- COMPUTE KMC-11 LINE TABLE ADDRESS
2091 ;+
2092 ; ON ENTRY:
2093 ;
2094 ; R5 = ADDRESS OF A DUP-11 LINE TABLE
2095 ;
2096 ; ON EXIT:
2097 ;
2098 ; R1 = KMC-11 LINE TABLE ADDRESS
2099 ; OTHER REGISTERS PRESERVED.
2100 ;-
2101
2102 ;---------------------------------------------------------------;
2103 ; L O C A T E K M C - 1 1 L I N E T A B L E ;
2104 ;---------------------------------------------------------------;
2105 004256 CLTA:
2106 004256 PUSH R5 ; SAVE DUP-11 LINE TABLE ADDRESS
2107 004260 116501 000006 MOVB CTDUP(R5),R1 ; GET DUP NUMBER (0-17)
2108 004264 006301 ASL R1 ; MAKE INTO WORD INDEX
2109 004266 166116 000232' SUB DSPTAB(R1),(SP) ; SUBTRACT DISPLACEMENT FROM DUP-11 TABLE
2110 004272 POP R1 ; . . .TO GET KMC-11 LINE TABLE ADDRESS
2111 004274 RETURN
2112
2113
2114
2115
2116 .SBTTL DLTA -- COMPUTE DUP-11 LINE TABLE ADDRESS
2117 ;+
2118 ; ON ENTRY:
2119 ;
2120 ; R1 = KMC-11 LINE TABLE ADDRESS
2121 ; R5 = DUP-11 UNIT NUMBER
2122 ;
2123 ; ON EXIT:
2124 ;
2125 ; R5 = DUP-11 LINE TABLE ADDRESS
2126 ; OTHER REGISTERS PRESERVED
2127 ;-
2128
2129 ;---------------------------------------------------------------;
2130 ; L O C A T E D U P - 1 1 L I N E T A B L E ;
2131 ;---------------------------------------------------------------;
2132 004276 DLTA:
2133 004276 006305 ASL R5 ; MAKE DUP NUMBER INTO INDEX
2134 004300 016505 000232' MOV DSPTAB(R5),R5 ; GET OFFSET TO DUP-11 TABLE
2135 004304 060105 ADD R1,R5 ; CONVERT TO LINE TABLE ADDRESS
2136 004306 RETURN
KDP MACRO M1110 27-DEC-79 09:26 PAGE 48
EVENT LOGGING
2138 .SBTTL EVENT LOGGING ;BH0001
2139 ;+ ;BH0001
2140 ; ** - LOGGX ;BH0001
2141 ; ;BH0001
2142 ; HERE TO FIX STUFF FOR CALL TO $CMLOG. ;BH0001
2143 ; ;BH0001
2144 ; INPUTS: ;BH0001
2145 ; R1 = KMC11 LINE TABLE ADDRESS ;BH0001
2146 ; R5 = DUP11 LINE TABLE ADDRESS ;BH0001
2147 ; THE REASON CODE IS PASSED ACCORDING TO ;BH0001
2148 ; WHICH ROUTINE IS CALLED, AS FOLLOWS: ;BH0001
2149 ; LOGGS: 2(SP) = REASON CODE ;BH0001
2150 ; LOGG4: R4 = REASON CODE ;BH0001
2151 ; LOGG3: R3 = REASON CODE ;BH0001
2152 ; ;BH0001
2153 ; OUTPUTS: ;BH0001
2154 ; MESSAGE IS SENT. ;BH0001
2155 ; ;BH0001
2156 ; SIDE EFFECTS: ;BH0001
2157 ; CALLING CONTEXT IS PRESERVED. ;BH0001
2158 ;- ;BH0001
2159 .ENABL LSB ;BH0001
2160 004310 016646 000002 LOGGS: MOV 2(SP),-(SP) ;; STACK THE REASON CODE ;BH0001
2161 004314 000403 BR 10$ ;; JOIN COMMON CODE ;BH0001
2162 ;BH0001
2163 004316 010446 LOGG4: MOV R4,-(SP) ;; STACK THE REASON CODE ;BH0001
2164 004320 000401 BR 10$ ;; JOIN COMMON CODE ;BH0001
2165 ;BH0001
2166 004322 010346 LOGG3: MOV R3,-(SP) ;; STACK THE REASON CODE ;BH0001
2167 004324 012667 173510 10$: MOV (SP)+,PRSN ;; STASH THE ERROR CODE ;BH0001
2168 004330 016567 000014 173500 MOV CTLOG(R5),PDST ;; SET LOGGING DESTINATION ;BH0001
2169 004336 001427 BEQ 20$ ;; WE AREN'T ENABLED ;BH0001
2170 004340 010046 MOV R0,-(SP) ;; SAVE R0 ;BH0001
2171 004342 010146 MOV R1,-(SP) ;; AND R1 ;BH0001
2172 004344 116567 000007 173470 MOVB CTSLN(R5),PLIN ;; SET SYS LINE # ;BH0001
2173 004352 012700 000036' MOV #PDST,R0 ;; POINT TO ARG BLOCK ;BH0001
2174 004356 CALL $CMLOG ;; LOG IT >>>ENTER COROUTINE ;BH0001
2175 004362 103413 BCS 15$ ;; >>>$CMLOG POINTS R2 AT MSG BUFFER ;BH0007
2176 004364 012722 MOV (PC)+,(R2)+ ;; >>>SET THE DATA TYPE AND ;BH0007
2177 004366 001 020 .BYTE E$DREG,16. ;; >>> LENGTH ;BH0007
2178 004370 016101 000040 MOV CMCSR(R1),R1 ;; >>>KMC SEL0 ADDRESS ;BH0004
2179 004374 CALL 30$ ;; >>>MOVE 4 REGISTERS ;BH0004
2180 004400 016501 000002 MOV CTCSR(R5),R1 ;; >>>DUP SEL0 ADDRESS ;BH0004
2181 004404 CALL 30$ ;; >>>MOVE 4 REGISTERS ;BH0004
2182 004410 CALL @(SP)+ ;; FINISH LOGGING >>>EXIT COROUTINE ;BH0004
2183 004412 012601 15$: MOV (SP)+,R1 ;; RESTORE THE REGISTERS ;BH0007
2184 004414 012600 MOV (SP)+,R0 ;; ... ;BH0004
2185 004416 20$: RETURN ;BH0004
2186 ;BH0004
2187 ;BH0004
2188 ; ROUTINE TO MOVE FOUR WORDS FROM (R1)+ TO (R2)+. ;BH0004
2189 004420 012122 30$: MOV (R1)+,(R2)+ ;; WORD 1 ;BH0004
2190 004422 012122 MOV (R1)+,(R2)+ ;; WORD 2 ;BH0004
2191 004424 012122 MOV (R1)+,(R2)+ ;; WORD 3 ;BH0004
2192 004426 012122 MOV (R1)+,(R2)+ ;; WORD 4 ;BH0004
2193 004430 RETURN ;BH0004
2194 .DSABL LSB ;BH0004
KDP MACRO M1110 27-DEC-79 09:26 PAGE 48-1
EVENT LOGGING
2195
2196 000001 .END
KDP MACRO M1110 27-DEC-79 09:26 PAGE 48-2
SYMBOL TABLE
A$$CHK= 000000 CD.RUN= 100000 CQ.ARG= 000370 C.BID 000003 E$DOSI= 000010
A$$CPS= 000000 CD.SEC= 010000 CQ.AR1= 000010 C.BUF 000014 E$DREC= 000007
A$$PRI= 000000 CD.TBA= 000000 CQ.AR2= 000020 C.BUF1 000014 E$DREG= 000001
A$$TRP= 000000 CEABO 001342R 002 CQ.AR3= 000040 C.BUF2 000024 E$DRSN= 000006
BADLIN 000542R 002 CEBDH 001152R 002 CQ.AR4= 000100 C.CNT 000020 E$DTHR= 000015
BDSET 004204R 002 CECRC 001160R 002 CQ.COM= 000007 C.CNT1 000020 E$DTIM= 000002
BD.EOM= 001000 G CEDSR 001402R 002 CQ.LIN= 177400 C.CNT2 000030 E$DTPC= 000014
BD.LBD= 100000 G CEINV 000142R 002 CQ.RCV= 000004 C.FLG 000022 E$DTXT= 000016
BD.MEX= 006000 G CEKCM 001446R 002 CS.ABO= 000100 G C.FLG1 000022 E$DUPT= 000004
BD.MXA= 002000 G CEKCP 001774R 002 CS.BUF= 000200 G C.FLG2 000032 E$RABO= 000017
BD.SOM= 000400 G CENRB 001372R 002 CS.DCR= 000400 G C.FNC 000010 E$RCRC= 000023
BD.SYN= 010000 G CEOVR 001166R 002 CS.DEV= 000002 C.LIN 000006 E$RDSC= 000005
CB.CCB= 000002 CERDP 001432R 002 CS.DIS= 000040 C.LNK 000000 E$RFRM= 000024
CB.RDB= 000004 CERSN 001176R 002 CS.ENB= 000020 C.MOD 000011 E$RHFE= 000016
CDCTL 002670R 002 CEUDR 001440R 002 CS.EOF= 000001 C.NSP 000004 E$RLIN= 000003
CDCXT 003212R 002 CE.ABO= 100362 CS.ERR= 100000 G C.RSV 000002 E$RMOP= 000014
CDDIS 003154R 002 CE.DIS= 100366 CS.HFE= 002000 G C.STA 000007 E$RMTL= 000013
CDENB 003046R 002 CE.ERR= 100370 CS.LST= 040000 C.STS 000012 E$RNAK= 000032
CDETB 000112R 002 CE.MOP= 100372 CS.MTL= 004000 G DA = 000010 E$RNXM= 000002
CDEXT 002240R 002 CE.NTE= 100361 CS.RNG= 000010 DC.ADR= 000040 G E$ROVR= 000012
CDISRV 000510R 002 CE.RTE= 100376 CS.ROV= 000004 G DC.BSC= 000002 G E$RPEC= 000022
CDITB 000060R 002 CE.SRC= 100364 CS.RSN= 010000 G DC.DEC= 000001 G E$RPEM= 000021
CDKCP 002020R 002 CE.TMO= 100374 CS.SUC= 000001 DC.HDX= 000001 G E$RPET= 000020
CDKIL 002264R 002 CF.EOM= 000004 CS.TMO= 020000 DC.MPT= 000010 G E$RPRC= 000025
CDKIO 002244R 002 CF.HDR= 000020 CS.TTM= 040000 DC.PRT= 000007 G E$RPWF= 000007
CDKRD 002452R 002 CF.LB = 100000 CTCHR 000010 G DC.SDL= 000003 G E$RPWR= 000010
CDKXD 002460R 002 CF.SOM= 000010 CTCSR 000002 G DC.SEC= 000020 G E$RRET= 000031
CDKXT 002434R 002 CF.SYN= 000040 CTCTL 000016 G DC.X25= 000004 G E$RRTE= 000011
CDKX2 002444R 002 CF.TRN= 000100 CTDUP 000006 G DL = 000004 E$RRTO= 000006
CDMSN 003250R 002 CIBAS 000744R 002 CTFLG 000004 G DLA = 000020 E$RSEL= 000030
CDOTB 000074R 002 CIBUF 000632R 002 CTIME = 000005 DLTA 004276R 002 E$RSIN= 000004
CDRCV 002202R 002 CICTL 000664R 002 CTITM 000064 G DLV = 000004 E$RSRC= 000015
CDRKL 002372R 002 CIINV 000072R 002 CTITQ 000020 G DMC = 000014 E$RTRN= 000026
CDSTP 002762R 002 CIKIL 000640R 002 CTLEN 000066 G DP = 000000 E$RUCL= 000001
CDSTR 002702R 002 CIRBA 000602R 002 CTLOG 000014 G DQ = 000006 E$RXTO= 000027
CDSXT 003040R 002 CITBA 000544R 002 CTLTAB 000164R 002 DSPTAB 000232R 002 E$TASC= 000001
CDSX2 003042R 002 CLTA 004256R 002 CTLTW 000000 G DTE = 000024 E$TASX= 000002
CDTMO 002536R 002 CMCSR 000040 G CTRA1 000044 G DU = 000002 E$THDW= 000003
CDTRN 002050R 002 CMIPR 000016 G CTRA2 000054 G DUP = 000012 E$TSFT= 000004
CDXKL 002472R 002 CMIQH 000044 G CTRD1 000046 G DUV = 000002 E$TTOP= 000005
CDXK1 002504R 002 CMIRI 000000 G CTRD2 000056 G DU.CAR= 010000 E$$XPR= 000000
CD.BAS= 000003 CMKIL 002270R 002 CTSLN 000007 G DU.DSR= 001000 FC.CCP= 000020
CD.CTL= 000001 CMKQH 000050 G CTTA1 000024 G DU.RNG= 040000 FC.CTL= 000006
CD.DEC= 100000 CMLEN 000054 G CTTA2 000034 G DV = 000026 FC.KCP= 000016
CD.DPN= 177400 CMODE = 140000 CTTD1 000026 G DZ = 000030 FC.KIL= 000004
CD.DUP= 020000 CMOPR 000036 G CTTD2 000036 G D$$BUG= 177514 FC.RCE= 000002
CD.ENB= 000400 CMORI 000020 G CT.BAS= 000020 G D$$ISK= 000000 FC.RCP= 000014
CD.EOM= 010000 CMSWT 000042 G CT.DRU= 001000 G D$$L11= 000001 FC.TIM= 000010
CD.IEI= 000001 CM.INI= 100000 G CT.LDA= 040000 G D$$YNC= 000000 FC.XCP= 000012
CD.IEO= 000020 CM.RQI= 000200 G CT.MSK= 040073 G D$$YNM= 000000 FC.XME= 000000
CD.INV 000216R 002 COINV 000110R 002 CT.RKC= 000010 G ERRTB 000000R 002 FE.CAL= 000040
CD.KIL= 010000 CORBA 001062R 002 CT.RKL= 000002 G ERRTBL= 000007 FE.DRV= 000010
CD.MCL= 040000 CORCP 001210R 002 CT.STR= 000040 G E$DDAT= 000003 FE.EXP= 000200
CD.NOP 000226R 002 CORCT 001142R 002 CT.XKL= 000001 G E$DDEV= 000005 FE.EXT= 000001
CD.RBA= 000004 COTBA 001004R 002 C$$CKP= 000000 E$DLPC= 000013 FE.EXV= 000004
CD.RDI= 000020 COTCP 001026R 002 C$$ORE= 000400 E$DMCD= 000012 FE.LSI= 000400
CD.REQ= 000200 COTCT 001140R 002 C$$RSH= 177564 E$DNOD= 000011 FE.MUP= 000002
KDP MACRO M1110 27-DEC-79 09:26 PAGE 48-3
SYMBOL TABLE
FE.MXT= 040000 HIPOL 000272R 002 L$$11R= 000000 PR1 = 000040 UBMPR = 170200
FE.NLG= 100000 INSIQB 004074R 002 MC.CAR= 000001 PR4 = 000200 UDSAR0= 177660
FE.PKT= 000100 INSIQT 004124R 002 MC.CCB= 000200 PR5 = 000240 UDSDR0= 177620
FE.PLA= 000020 I$$RAR= 000000 MC.DSR= 000002 PR6 = 000300 UISAR0= 177640
FS.AST= 000000 I$$RDN= 000000 MC.RNG= 000004 PR7 = 000340 UISAR4= 177650
FS.CIB= 002000 KDP = 000034 MPAR = 172100 PS = 177776 UISAR5= 177652
FS.CRA= 001000 KDSAR0= 172360 MPCSR = 177746 PSTA 000056R 002 UISAR6= 177654
FS.DIS= 013000 KDSDR0= 172320 MS.SCA= 000002 PTAB 000054R 002 UISAR7= 177656
FS.DVC= 001000 KDZ = 000036 MS.SYN= 000001 PTYP 000052R 002 UISDR0= 177600
FS.ENB= 012000 KILTAB 000156R 002 M$$CRB= 000124 P$$P45= 000000 UISDR4= 177610
FS.GET= 006000 KISAR0= 172340 M$$CRX= 000000 P$$WRD= 000000 UISDR5= 177612
FS.INI= 000000 KISAR5= 172352 M$$FCS= 000000 Q$$OPT= 000010 UISDR6= 177614
FS.KIL= 000000 KISAR6= 172354 M$$MGE= 000000 RCVASN 003756R 002 UISDR7= 177616
FS.LTM= 001000 KISAR7= 172356 M$$OVR= 000000 RCVGET 003704R 002 V$$CTR= 001000
FS.MNT= 004000 KISDR0= 172300 N$$LDV= 000001 RCVUSE 003712R 002 X$$DBT= 000000
FS.MSN= 014000 KISDR6= 172314 N$$MOV= 000010 RQIRL 004152R 002 $CCBGT= ****** GX
FS.RNG= 011000 KISDR7= 172316 N$$SYS= 000001 R$$DER= 000000 $CCBRT= ****** GX
FS.RTN= 001000 KL = 000040 N$$USR= 000001 R$$K11= 000001 $CDIRI 000332RG 002
FS.SET= 005000 K$$CNT= 177546 PDID = 000044R 002 R$$SND= 000000 $CDORI 000444RG 002
FS.STM= 000000 K$$CSR= 177546 PDST 000036R 002 R$$11M= 000000 $CMLOG= ****** GX
FS.STP= 002000 K$$LDC= 000000 PDT1 000042R 002 SETCHR 003316R 002 $CNV18= ****** GX
FS.STR= 001000 K$$TPS= 000074 PDT2 000044R 002 SISDR0= 172200 $DDCCP= ****** GX
FS.TRM= 003000 LD$LP = 000000 PIRQ = 177772 SR0 = 177572 $DDKCP= ****** GX
FS.XKL= 002000 LGDAT = 000022 PLIN = 000042R 002 SR3 = 172516 $DDRCP= ****** GX
FS.XOF= 010000 LOGGS 004310R 002 PLNG 000046R 002 SWR = 177570 $DDXMP= ****** GX
FS.XON= 007000 LOGG3 004322R 002 PMODE = 030000 S$$WRG= 000000 $INTSX= ****** GX
F$$LVL= 000001 LOGG4 004316R 002 PNAM 000050R 002 S$$YSZ= 007600 $KDPTB 000144RG 002
G$$TPP= 000000 LOPOL 000312R 002 POLCHK 003414R 002 TPS = 177564 $RDBGT= ****** GX
G$$TSS= 000000 L$$ASG= 000000 POLTHR= 000004 G TRNASN 003534R 002 $RDBQP= ****** GX
G$$TTK= 000000 L$$DRV= 000000 PRSN 000040R 002 T$$KMG= 000000 $RDBRT= ****** GX
G$$WRD= 000000 L$$P11= 000001 PR0 = 000000 T$$MIN= 000000 $RDBWT= ****** GX
. ABS. 000066 000
000000 001
$KDP11 004432 002
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 10862 WORDS ( 43 PAGES)
DYNAMIC MEMORY: 12172 WORDS ( 46 PAGES)
ELAPSED TIME: 00:01:42
KDP,[131,34]KDP/CR=[130,10]NETLIB/ML,RSXMC4/PA:1,[131,10]KDP
KDP CREATED BY MACRO ON 27-DEC-79 AT 09:27 PAGE 1
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
BADLIN 000542 R 13-545 #13-561
BDSET 004204 R 40-1809 42-1910 #46-2061
BD.EOM = 001000 G #6-214 25-1148
BD.LBD = 100000 G #6-214
BD.MEX = 006000 G #6-214
BD.MXA = 002000 G #6-214
BD.SOM = 000400 G #6-214 25-1145
BD.SYN = 010000 G #6-214 25-1151
CDCTL 002670 R 9-353 #32-1441
CDCXT 003212 R 35-1577 35-1579 #36-1616
CDDIS 003154 R 9-387 #36-1605
CDENB 003046 R 9-386 #35-1558
CDETB 000112 R #8-329 20-851
CDEXT 002240 R 25-1161 #26-1194
CDISRV 000510 R 12-503 #13-548
CDITB 000060 R #8-302 12-502
CDKCP 002020 R 24-1094 #24-1098 29-1320
CDKIL 002264 R 9-367 #28-1253
CDKIO 002244 R 9-352 #27-1221
CDKRD 002452 R 29-1304 #29-1318
CDKXD 002460 R #29-1319 30-1354
CDKXT 002434 R 28-1269 28-1271 28-1275 #29-1309 30-1358
CDKX2 002444 R #29-1313 29-1321
CDMSN 003250 R 9-388 #37-1649
CDOTB 000074 R #8-315 13-546
CDRCV 002202 R 9-351 #26-1185
CDRKL 002372 R 9-368 #29-1299
CDSTP 002762 R 9-378 #34-1510
CDSTR 002702 R 9-377 #33-1470
CDSXT 003040 R 33-1481 34-1513 #34-1525
CDSX2 003042 R 33-1484 #34-1527
CDTMO 002536 R 9-355 #31-1383
CDTRN 002050 R 9-350 #25-1133
CDXKL 002472 R 9-369 #30-1348
CDXK1 002504 R 28-1263 #30-1350
CD.BAS = 000003 #7-245 35-1578
CD.CTL = 000001 #7-244 17-722 35-1575 36-1614 39-1756
CD.DEC = 100000 #7-261 21-908 38-1710 42-1911
CD.DPN = 177400 #7-253
CD.DUP = 020000 #7-260 38-1718
CD.ENB = 000400 #7-258 16-677 33-1471 36-1607 38-1704
CD.EOM = 010000 #7-267 19-802
CD.IEI = 000001 #7-248 35-1570
CD.IEO = 000020 #7-249 35-1570
CD.INV 000216 R 9-376 9-379 9-380 9-381 9-382 #9-391
CD.KIL = 010000 #7-266 15-641
CD.MCL = 040000 #7-251 35-1563
CD.NOP 000226 R 9-383 9-384 9-385 #9-396
CD.RBA = 000004 #7-246 23-1037 24-1095 28-1265 29-1306 42-1896
CD.RDI = 000020 #7-250 44-1992
CD.REQ = 000200 #7-247 12-494 43-1953 43-1964 44-1996
CD.RUN = 100000 #7-252 35-1566
KDP CREATED BY MACRO ON 27-DEC-79 AT 09:27 PAGE 2
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
CD.SEC = 010000 #7-259 21-910 42-1913
CD.TBA = 000000 #7-243 30-1356 31-1404
CEABO 001342 R 8-333 #22-954
CEBDH 001152 R 8-334 #20-857
CECRC 001160 R 8-335 #20-865
CEDSR 001402 R 8-337 #22-977
CEINV 000142 R 8-330 8-331 8-332 8-338 #8-343
CEKCM 001446 R 8-341 #23-1029
CEKCP 001774 R 24-1056 24-1058 #24-1091
CENRB 001372 R 8-336 #22-969
CEOVR 001166 R 8-340 #21-872
CERDP 001432 R 22-971 22-981 #22-986 22-996
CERSN 001176 R 20-859 20-867 #21-875
CEUDR 001440 R 8-339 #22-994
CF.EOM = 000004 21-925 25-1146
CF.LB = 100000 21-925 41-1859
CF.SOM = 000010 21-925 25-1143
CF.SYN = 000040 25-1149
CIBAS 000744 R 8-306 #17-714
CIBUF 000632 R 14-598 14-600 14-611 #15-615
CICTL 000664 R 8-304 #16-671
CIINV 000072 R 8-305 #8-309
CIKIL 000640 R 14-594 14-608 #15-639
CIRBA 000602 R 8-307 #14-606
CITBA 000544 R 8-303 #14-592
CLTA 004256 R 25-1135 26-1187 27-1223 31-1385 32-1443 #47-2105
CMCSR 000040 G #6-214 12-493 13-539 35-1562 43-1953 43-1964 44-1991 48-2178
CMIPR 000016 G #6-214
CMIQH 000044 G #6-214 12-496 *12-496 *12-496 12-496 *12-496 43-1950 *43-1950 43-1951
43-1961 *43-1963 *43-1965 44-1993
CMIRI 000000 G #6-214
CMKIL 002270 R #28-1256 34-1523
CMKQH 000050 G #6-214 15-642 *15-642 23-1031 *23-1031 *23-1031 23-1031 *23-1031
CMLEN 000054 G #6-214 10-411 10-412 10-413 10-414 10-415 10-416 10-417 10-418
10-419 10-420 10-421 10-422 10-423 10-424 10-425 10-426
CMOPR 000036 G #6-214
CMORI 000020 G #6-214 12-491
CMSWT 000042 G #6-214 35-1559 *35-1571
CM.INI = 100000 G #6-214 35-1571
CM.RQI = 000200 G #6-214
COINV 000110 R 8-318 8-319 #8-323
CORBA 001062 R 8-320 #19-797
CORCP 001210 R 19-806 19-808 #21-902
CORCT 001142 R 8-321 #20-845
COTBA 001004 R 8-316 #18-747
COTCP 001026 R 18-755 #18-758
COTCT 001140 R 8-317 #20-843
CQ.ARG = 000370 #7-284
CQ.AR1 = 000010 #7-285 14-597 14-610 24-1093 24-1095 28-1265 28-1273 36-1614 40-1807
42-1904
CQ.AR2 = 000020 #7-286 14-593 14-607 28-1265 29-1306 30-1356 31-1404
CQ.AR3 = 000040 #7-287 34-1521
KDP CREATED BY MACRO ON 27-DEC-79 AT 09:27 PAGE 3
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
CQ.AR4 = 000100 #7-288
CQ.COM = 000007 #7-282 12-498 13-543 28-1257
CQ.LIN = 177400 #7-289
CQ.RCV = 000004 #7-283
CS.ABO = 000100 G #6-214 6-223 22-955 24-1075
CS.BUF = 000200 G #6-214 26-1191
CS.DCR = 000400 G #6-214 6-225 20-866
CS.DIS = 000040 33-1483
CS.ENB = 000020 36-1611
CS.ERR = 100000 G #6-214 9-392 19-811 20-858 20-866 21-874 22-955 22-982 24-1075
24-1078 33-1483 36-1611
CS.HFE = 002000 G #6-214 6-224 20-858
CS.MTL = 004000 G #6-214 19-811
CS.RNG = 000010 6-226 22-982
CS.ROV = 000004 G #6-214 6-227 21-874
CS.RSN = 010000 G #6-214 21-922 22-970 23-1040 29-1318
CS.TMO = 020000 6-228
CS.TTM = 040000 #6-220 6-229 24-1078
CTCHR 000010 G #6-214 38-1690 39-1747
CTCSR 000002 G #6-214 17-717 37-1650 48-2180
CTCTL 000016 G #6-214 *16-677 16-680 21-908 21-910 33-1471 36-1607 38-1691 42-1911
42-1913
CTDUP 000006 G #6-214 25-1140 27-1224 31-1405 34-1522 36-1617 39-1757 41-1858 47-2107
CTFLG 000004 G #6-214 *17-716 *19-811 *21-875 21-915 *22-970 22-978 *22-980 *23-1039
*23-1040 *24-1060 *26-1191 *28-1266 *28-1274 *29-1307 *29-1318 *30-1357 31-1393
*31-1397 *33-1473 34-1512 *34-1514 *35-1574 35-1576 36-1609 40-1793 42-1907
CTIME = 000005 #7-276 14-595
CTITM 000064 G #6-214 16-672 18-754 *18-756 19-805 *19-807 *38-1714 *38-1715 *39-1744
39-1749 *39-1753 *39-1758
CTITQ 000020 G #6-214 24-1063 24-1069 24-1073 *24-1074 24-1083 *24-1083 *24-1083 24-1083
*24-1083 25-1155 *25-1155 40-1798 *40-1798 *40-1798 40-1798 *40-1798 40-1815
*40-1816 *40-1819
CTLEN 000066 G #6-214 10-411 10-412 10-413 10-414 10-415 10-416 10-417 10-418
10-419 10-420 10-421 10-422 10-423 10-424 10-425 10-426
CTLOG 000014 G #6-214 48-2168
CTLTAB 000164 R #9-375 32-1444
CTLTW 000000 G #6-214
CTRA1 000044 G #6-214 23-1046 *23-1048 28-1260 29-1301 42-1897 42-1901
CTRA2 000054 G #6-214 24-1051 *24-1053 28-1262 29-1303 42-1901
CTRD1 000046 G #6-214 14-609 14-612
CTRD2 000056 G #6-214 14-612
CTSLN 000007 G #6-214 31-1401 34-1518 41-1857 41-1863 48-2172
CTTA1 000024 G #6-214 24-1061 24-1063 *24-1064 28-1268 30-1351 31-1388 40-1800 40-1804
CTTA2 000034 G #6-214 24-1067 24-1069 *24-1070 28-1270 30-1353 31-1390 40-1804
CTTD1 000026 G #6-214 14-596 14-599
CTTD2 000036 G #6-214 14-599
CT.BAS = 000020 G #6-214 17-716 35-1576
CT.DRU = 001000 G #6-214 22-978 22-980 35-1574
CT.LDA = 040000 G #6-214
CT.MSK = 040073 G #6-214 21-917 21-918
CT.RKC = 000010 G #6-214 21-875 21-919 21-921
CT.RKL = 000002 G #6-214 23-1039 28-1266 29-1307 42-1907
KDP CREATED BY MACRO ON 27-DEC-79 AT 09:27 PAGE 4
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
CT.STR = 000040 G #6-214 33-1473 34-1512 34-1514 36-1609
CT.XKL = 000001 G #6-214 24-1060 28-1266 28-1274 30-1357 31-1393 31-1397 40-1793
C.BUF 000014 25-1141 46-2073
C.CNT1 000020 *21-907 *21-912
C.FLG 000022 *18-762 *21-925 *24-1085 25-1141
C.FLG1 000022 *41-1859
C.FNC 000010 16-683 23-1042 24-1076 24-1099 *39-1755
C.LIN 000006 31-1400 *41-1857
C.MOD 000011 16-675 *21-924
C.STA 000007 *41-1856
C.STS 000012 12-497 14-593 14-597 14-607 14-610 *17-722 23-1037 24-1093 *24-1095
25-1138 *27-1224 *28-1254 *28-1257 *28-1265 *28-1273 *29-1306 *30-1356 *34-1521
*34-1522 *35-1575 *35-1578 *36-1614 *36-1617 *39-1756 *39-1757 *40-1807 *41-1858
*42-1896 *42-1904
DC.ADR = 000040 G #6-214
DC.BSC = 000002 G #6-214
DC.DEC = 000001 G #6-214 38-1708
DC.HDX = 000001 G #6-214 38-1716
DC.MPT = 000010 G #6-214
DC.PRT = 000007 G #6-214 38-1707
DC.SDL = 000003 G #6-214
DC.SEC = 000020 G #6-214
DC.X25 = 000004 G #6-214
DLTA 004276 R 13-550 #47-2132
DSPTAB 000232 R #10-410 47-2109 47-2134
DU.CAR = 010000 #7-273 37-1657
DU.DSR = 001000 #7-274 37-1661
DU.RNG = 040000 #7-272 37-1653
ERRTB 000000 R #6-222 6-230 6-236
ERRTBL = 000007 6-222 #6-230
E$DREG = 000001 48-2177
E$RABO = 000017 6-223
E$RCRC = 000023 6-225
E$RDSC = 000005 6-226
E$RHFE = 000016 6-224
E$ROVR = 000012 6-227
E$RRTO = 000006 6-228
E$RXTO = 000027 6-229
E$THDW = 000003 6-236
FC.CTL = 000006 23-1042 24-1099
FC.TIM = 000010 24-1076 31-1403
FS.DIS = 013000 16-675
FS.DVC = 001000 21-924
HIPOL 000272 R #11-445 39-1749
INSIQB 004074 R 29-1310 36-1619 39-1761 40-1810 42-1917 #43-1949
INSIQT 004124 R 17-723 24-1096 31-1407 #43-1960
I$$AS = ****** 8-291 15-616 18-750 19-799 20-848 45-2000
KDP = 000034 6-236
KILTAB 000156 R #9-366 27-1225
LGDAT = 000022 #6-235 6-236
LOGGS 004310 R 24-1080 #48-2160
LOGG3 004322 R 21-876 #48-2166
KDP CREATED BY MACRO ON 27-DEC-79 AT 09:27 PAGE 5
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
LOGG4 004316 R 22-956 22-984 #48-2163
LOPOL 000312 R #11-452 38-1714
L$$SI1 = ****** 25-1154 25-1157 26-1189 26-1192 28-1259 29-1300 29-1311 29-1319 30-1349
31-1387 31-1412 33-1476 33-1479 36-1618 36-1620 39-1760 39-1762
MC.CAR = 000001 37-1659
MC.DSR = 000002 37-1663
MC.RNG = 000004 37-1655
M$$MGE = 000000 6-214 6-214 46-2062
PDID = 000044 R #6-238
PDST 000036 R #6-236 *48-2168 48-2173
PDT1 000042 R #6-236 6-237
PDT2 000044 R #6-236 6-238
PLIN = 000042 R #6-237 *48-2172
PLNG 000046 R #6-236
PNAM 000050 R #6-236
POLCHK 003414 R 21-873 22-995 #39-1743
POLTHR = 000004 G #11-442 18-754 19-805 38-1715 39-1758
PRSN 000040 R #6-236 *48-2167
PR7 = 000340 25-1154 26-1189 28-1259 29-1300 30-1349 31-1387 33-1476 36-1618 39-1760
PS = 177776 25-1154 25-1154 25-1157 26-1189 26-1189 26-1192 28-1259 28-1259 29-1300
29-1300 29-1311 29-1319 30-1349 30-1349 31-1387 31-1387 31-1412 33-1476
33-1476 33-1479 36-1618 36-1618 36-1620 39-1760 39-1760 39-1762
PSTA 000056 R #6-236
PTAB 000054 R #6-236
PTYP 000052 R #6-236
RCVASN 003756 R 19-815 22-961 23-1041 41-1860 #42-1893
RCVGET 003704 R 21-927 33-1477 33-1478 #41-1850
RCVUSE 003712 R 26-1190 #41-1854
RQIRL 004152 R 15-643 16-682 17-721 #44-1989
R$$11D = ****** 8-291 15-616 18-750 19-799 20-848 45-2000
SETCHR 003316 R 35-1573 #38-1687
TRNASN 003534 R 18-764 25-1156 #40-1792
$CCBGT = ****** GX 31-1395 39-1751
$CCBRT = ****** GX 16-688 24-1106
$CDIRI 000332 RG #12-487
$CDORI 000444 RG #13-534
$CMLOG = ****** GX 48-2174
$CNV18 = ****** GX 46-2076
$DDCCP = ****** GX 16-686 24-1101
$DDKCP = ****** GX 24-1104
$DDRCP = ****** GX 21-926
$DDXMP = ****** GX 18-763 24-1086
$INTSX = ****** GX 12-488 13-535
$KDPTB 000144 RG #9-349
$RDBGT = ****** GX 41-1851
$RDBQP = ****** GX 34-1519
$RDBRT = ****** GX 23-1044
$RDBWT = ****** GX 41-1864
KDP CREATED BY MACRO ON 27-DEC-79 AT 09:27 PAGE 6
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
CALL 13-550 13-556 16-682 17-721 18-763 18-764 21-873 21-876 21-926 22-956
22-995 24-1054 24-1057 24-1086 25-1135 25-1156 26-1187 26-1190 27-1223 29-1310
29-1320 31-1385 31-1395 31-1407 32-1443 33-1477 33-1478 34-1519 35-1573 36-1619
39-1751 39-1761 40-1809 40-1810 41-1851 42-1910 42-1917 46-2076 48-2174 48-2179
48-2181 48-2182
CCBDF$ #4-99 4-101
CMLDF$ #4-99 6-236
CRASH #12-506 #42-1923
DEVDF #4-99 6-210
ENABL$ #4-98 #25-1157 #26-1192 #29-1311 #29-1319 #31-1412 #33-1479 #36-1620 #39-1762
EVLDF$ #4-99 #6-212
GOTO #4-121 #16-686 #16-688 #24-1101 #24-1104 #24-1106 #41-1864
HWDDF$ #4-99 #4-100
INHIB$ #4-98 25-1154 26-1189 28-1259 29-1300 30-1349 31-1387 33-1476 36-1618 39-1760
KDPDF$ #4-99 #6-214
MDCDF$ #4-99 #4-102
POP #4-112 #13-558 #21-923 #25-1152 #25-1159 #26-1195 #29-1314 #31-1406 #31-1413 #33-1480
#34-1520 #34-1528 #36-1623 #40-1821 #42-1919 #44-1997 #46-2086 #47-2110
PUSH #4-106 #12-489 #13-536 #21-914 #24-1075 #25-1134 #25-1137 #26-1186 #27-1222 #31-1384
#31-1398 #32-1442 #33-1474 #34-1516 #40-1795 #42-1894 #44-1990 #46-2072 #47-2106
RETURN 9-394 9-398 13-559 18-766 22-988 26-1196 29-1316 31-1414 34-1529 36-1624
38-1719 39-1765 40-1822 42-1920 43-1954 43-1966 44-1998 46-2087 47-2111 47-2136
48-2185 48-2193
TMPDF$ #6-214 6-214
$DEQ #5-154 12-496 23-1031 24-1083 40-1798
$ENQ #4-129 15-642 25-1155 43-1950
$INTSX #4-98 #12-488 #13-535
.BIN #6-214
.CNB #6-214
.CNW #6-214
.CORE #6-214
.CSR #6-214 6-214
.DVCHA #6-214 6-214
.INT #6-214
.INT1 #6-214 6-214
.INT2 #6-214 #6-214
.INT3 #6-214
.LFLHD #6-214
.LIBR #6-214
.LINKS #6-214
.LSTHD #6-214 6-214 6-214 6-214
.LTAB #6-214
.MPLHD #6-214
.POOL #6-214
.PRI #6-214 6-214 6-214
.SCOM #6-214
.SECSR #6-214 #6-214
.SLNB #6-214 #6-214
.SLNW #6-214
.STNB #6-214
.STNW #6-214
.UNB #6-214 #6-214
KDP CREATED BY MACRO ON 27-DEC-79 AT 09:27 PAGE 7
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
.UNW #6-214
.VFY #6-214