Trailing-Edge
-
PDP-10 Archives
-
BB-P363B-SM_1985
-
mcb/cex/mdt.lst
There are no other files named mdt.lst in the archive.
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25
DDT.MAC 30-DEC-82 01:45 TABLE OF CONTENTS
3364 SYMBOL TABLES
3385 DDT - DDT Initialization
3465 D.DCD - Decode User Command
3530 D.PRIM - Get a Primary
3953 D.COLN - Define symbol
4007 D.KILL - Kill symbol
4131 D.ALTM - Process altmode
4168 D.BYT - Open byte
4200 D.SBYT - Set for Byte Display
4232 D.WRD - Open word
4264 D.SWRD - Set for Word Display
4296 D.OPNW - Open word
4332 D.SEMI - Retype word
4362 D.ORAB - Open indirect
4394 D.EXCL - Open word silently
4425 D.OPNX - Open next word
4470 D.OPBR - Open word as numeric
4502 D.CLBR - Open word as instruction
4534 D.BACK - Open previous word
4572 D.ORPC - Type word symbolically
4607 D.EQAL - Type word as number
4639 D.DCOM - Comma parameter
4672 D.FWAS - Store first word address for search
4755 D.ZERO - Zero core
4792 D.SNGL - Second set of instructions
4831 D.GRAP - Return user display
4865 D.ESCH - Effective search
4896 D.NSCH - No search
4927 D.WSCH - Word search
4958 D.WDS - Do search
5042 D.INNM - Set numeric typeout
5090 D.INTX - Text typeout
5125 D.BYTE - Byte typeout
5158 D.INMD - Instruction typeout
5190 D.ABS - Absolute address typeout
5221 D.INRD - Set radix
5255 D.CRET - Close word and reset permanent modes
5292 D.CLSE - Close Word or Byte
5360 D.LWAS - Store last word address for search
5420 D.BKPT - Set and remove breakpoints
5498 D.BKCK - Check Breakpoint Availability
5555 D.BKST - Set Breakpoint
5602 D.MAST - Type and set mask
5640 D.ALTV - Get contents of Dot byte-swapped.
5676 D.ALTQ - Get contents of Dot
5711 D.TEXT - Get Text
5763 M.DBG - Set debugging mode
5845 D.SOFT - Soft restart
5878 D.EXEC - Execute instruction
5949 D.PROC - Proceede
5999 D.GO - Go
6054 M.LAST - Last Chance Exceptional Condition Handler
6190 M.PRIM - Primary Exception Condition Handler
6235 D.NXMT - Non-existent memory trap
6270 D.ILGT - Illegal instruction trap
6305 D.BRKT - Breakpoint Handler
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25
DDT.MAC 30-DEC-82 01:45 TABLE OF CONTENTS
6396 D.BCHK - Check for Valid Breakpoint
6447 D.SAVE - Save the world
6590 D.REST - Restore the world
6684 D.RFND - Display Address
6737 D.CADV - Display Number at Current Address
6776 D.ASCI - Display ASCII Bytes at Current Address
6819 D.PART - Display Multi-byte Word at Current Address
6879 D.RADC - Display Radix-50 Word at Current Address
6927 D.INST - Display Instruction at Current Address
7136 M.PROC - Display Current Process Name
7230 D.TTAB - Display a Tab Character
7274 D.CRLF - Display a CR/LF
7306 D.STYP - Display a Local ASCII String
7340 D.TYPN - Display a Number in the Current Radix
7420 D.TYPE - Display a Character on the Controlling TTY
7490 D.GET - Get a Character from the Controlling TTY
7590 D.POLL - Poll for a Received Character from the TTY
7633 M.TTCK - Check if TTY Requested Interrupt
7676 M.TTIN - TTY Interrupt Code
7731 M.TTON - Enable TTY Interrupts
7784 M.TTOF - Disable TTY Interrupts
7826 M.SNCK - Check if Trap caused by DDT Synch
7868 M.SNIN - Synchronization Code
7916 M.SNOF - Cancel a Process Synchronization
7958 M.SNON - Set Up to Synchronize with Process
8010 M.USCK - Check if Break in User Space Caused by MDT
8054 M.USON - Set Up to Synchronize with Task
8103 D.RD50 - Convert three ASCII Characters to Radix-50 Word
8161 D.CHAR - Convert Radix-50 Word to three ASCII Characters
8213 D.DIVD - Division Routine
8258 D.VLD - Check for Valid Word Address
8292 D.FTCH - Fetch Word or Byte at Given Address
8331 D.REL - Relocate Address for Fetch or Store
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 1
DDT.MAC 30-DEC-82 01:45
1 ; COPYRIGHT (C) 1980, 1981, 1982
2 ; DIGITAL EQUIPMENT CORPORATION
3 ; MAYNARD, MASSACHUSETTS
4 ;
5 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED
6 ; AND COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE
7 ; AND WITH THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS
8 ; SOFTWARE OR ANY OTHER COPIES THEREOF MAY NOT BE PROVIDED OR
9 ; OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON. NO TITLE TO
10 ; AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.
11 ;
12 ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE
13 ; WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT
14 ; BY DIGITAL EQUIPMENT CORPORATION.
15 ;
16 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
17 ; OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY
18 ; DIGITAL.
19
20 .TITLE DDT - DYNAMIC DEBUGGING TECHNIQUE FOR A PDP-11.
21 .IDENT /X03350/
22 .ENABL LC
23 000130 D.FORM = 'X ; DDT form
24 000003 D.VER = 3. ; DDT version
25 000002 D.LVL = 2. ; DDT level
26 000043 D.EDIT = 35. ; DDT edit
27
28 ; IT RESEMBLES DDT FOR A PDP-10 IN AS MANY WAYS AS POSSIBLE
29 ; AND FALLS SHORT ONLY SLIGHTLY DUE TO THE VARIETY OF PDP-11
30 ; CONFIGURATIONS AVAILABLE.
31 ;
32 ; AUTHOR: STEVEN M. RUBIN (SR12) AT CARNEGIE-MELLON UNIVERSITY
33 ;MUNGED BY RIC WERME FOR INHOUSE DEBUGGING OF THE DN87S
34 ;AND REMUNGED BY SAME FOR USE ON RSX-11M!
35 ;AND REMUNGED AGAIN BY SCOTT ROBINSON TO DO THINGS CORRECTLY FOR
36 ;RSX11M.
37 ;AND REMUNGED AGAIN BY ALAN PECKHAM FOR USE ON MCB!
38
39 ; UN-COMMENT THE NEXT LINE IF DDT IS TO RUN ON AN LSI-11
40 ;D.LSI = 1 ; DEFINED IF PROCESSOR IS AN LSI-11
41
42 ; THE NEXT DEFINES DESCRIBE THE MAIN OUTPUT DEVICE THAT
43 ; DDT WILL USE. ONLY 1 MAY BE DEFINED AND THE REST MUST BE
44 ; COMMENTED OUT.
45 ;D.GDP = 1 ; TTY IS GRAPHICS DISPLAY PROCESSOR
46 ;D.KSR = 1 ; TTY IS KSR-33
47 ;D.GT40 = 1 ; TTY IS DEC GT40
48 ;D.RSX = 1 ; TTY IS ON (BLETCH) RSX-11M
49 000001 D.MCB = 1 ; TTY IS ON (YAY!!!) MCB
50
51 001 .IF DF,D.LSI
52 .PRINT ; *****DDT for an LSI-11*****
53 .ENABLE NSF
54 .OPDEF MFPS,TST,106700
55 .OPDEF MTPS,TST,106400
56 000 .ENDC
DDT - DYNAMIC DEBUGGING TECHNIQUE FOR A PDP-11. DNMAC X24.07-563 28-MAY-85 14:25 PAGE 1-1
DDT.MAC 30-DEC-82 01:45
57 177777 D.OKTTY=-1
58 001 .IF DF,D.GDP
59 D.OKTTY=D.OKTTY+1
60 .TITLE D.GDP
61 .PRINT ; *****DDT for a GDP*****
62 D.RDB = 165202 ; READER DATA BUFFER
63 D.RCSR = 165200 ; READER STATUS REGISTER
64 D.PRIO = 0 ; RUN AT PRIORITY ZERO
65 000 .ENDC
66 001 .IF DF,D.GT40
67 D.OKTTY=D.OKTTY+1
68 .TITLE D.GT40
69 .PRINT ; *****DDT for a GT40*****
70 D.RCSR = 177560 ; READER STATUS REGISTER
71 D.RDB = 177562 ; READER DATA BUFFER
72 D.PRIO = 200 ; RUN AT PRIORITY FOUR
73 000 .ENDC
74 001 .IF DF,D.KSR
75 D.OKTTY=D.OKTTY+1
76 .TITLE D.KSR
77 .PRINT ; *****DDT for a TTY*****
78 D.RCSR = 177560 ; READER STATUS REGISTER
79 D.RDB = 177562 ; READER DATA BUFFER
80 D.RCHR = 25. ; Input type-ahead buffer length
81 D.TCSR = 177564 ; PRINTER STATUS REGISTER
82 D.TDB = 177566 ; PRINTER DATA BUFFER
83 D.TCOL = 72. ; Number of printer columns
84 D.PRIO = 340 ; RUN AT PRIORITY SEVEN
85 000 .ENDC
86 001 .IF DF D.RSX
87 D.OKTTY=D.OKTTY+1
88 .TITLE D.RSX
89 .PRINT ; *****DDT FOR RSX-11M*****
90 D.PRIO = 0 ;WE DON'T USE THIS
91 .MCALL EXIT$S,QIOW$S,ALUN$S,SVDB$S
92 000 .ENDC
93 001 .IF DF,D.MCB
94 000000 D.OKTTY=D.OKTTY+1
95 .TITLE MDT - DDT for MCB
96 .MCALL CCBDF$,HDRDF$,SYNDF$,TCBDF$,DSP$B,PHD$B,CALL$C
97 000000' CCBDF$ ; Define CCB symbols
98 000000' SYNDF$ ; Define SYNCH block symbols
99 000000' TCBDF$ ; Define TCB symbols
100 000000' HDRDF$ ; Define Task Header symbols
101 177560 D.RCSR = 177560 ; READER STATUS REGISTER
102 177562 D.RDB = 177562 ; READER DATA BUFFER
103 000031 D.RCHR = 25. ; Input type-ahead buffer length
104 177564 D.TCSR = 177564 ; PRINTER STATUS REGISTER
105 177566 D.TDB = 177566 ; PRINTER DATA BUFFER
106 000110 D.TCOL = 72. ; Number of printer columns
107 000340 D.PRIO = 7*40 ; RUN AT PRIORITY SEVEN
108 177640 UISAR0 = 177640 ; User mode APR registers.
109 000 .ENDC
110
111 .IIF NE,D.OKTTY,.ERROR ; INVALID OUTPUT DEVICE FOR DDT
112 000010 D.BKP = 8. ; NUMBER OF BREAKPOINTS
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 1-2
DDT.MAC 30-DEC-82 01:45
113 000000 D.BKS = 0 ; Number of single-step breakpoint
114 000012 D.SYML = 10. ; MAX NUMBER CHARS IN A SYMBOL
115 000024 D.SYMU = 20. ; Number of user symbol entries.
116 000000 R0 = %0
117 000001 R1 = %1
118 000002 R2 = %2
119 000003 R3 = %3
120 000004 R4 = %4
121 000005 R5 = %5
122 000006 SP = %6
123 000007 PC = %7
124 177776 PS = 177776 ; PROCESSOR STATUS
125
126 001 .IF NDF D.LSI
127 .MACRO MFPS val
128 .IF NB,<val>
129 MOV @#PS,val
130 .IFF
131 MOV @#PS,-(SP)
132 .ENDC
133 .ENDM MFPS
134 .MACRO MTPS val
135 .IF NB,<val>
136 MOV val,@#PS
137 .IFF
138 MOV (SP)+,@#PS
139 .ENDC
140 .ENDM MTPS
141 000 .ENDC
142
143 .MACRO EXTEND
144 .IF DF D.MCB
145 MAP$ D.DAR6
146 .ENDC
147 .ENDM EXTEND
148
149 001 .IF NE,0
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 2
DDT.MAC 30-DEC-82 01:45
151 DDT/11 - Dynamic Debugging Technique on the PDP-11
152
153 Each command in DDT/11 is identical to the PDP-10 version whenever
154 possible. In some cases, DDT/10 commands have been omitted in the
155 interest of saving core and making good sense. The following is a
156 list of the DDT/11 commands:
157 n/ Open word n. Type contents in current mode
158 / Open word pointed to by last typed value
159 n\ Open byte n. Type contents in current mode
160 \ Open byte pointed to by last typed value
161 n[ Open location n, type as a numeric
162 n] Open location n, type as instruction
163 n! Open location n, do not type value
164 n<CR> Modify currently open word to be n. Close word.
165 n<LF> Modify, close, open next word
166 n^ Modify, close, open previous word
167 n<BS> (same as ^)
168 n<TAB> Modify, close, open word pointed to by last typed address
169 $A Addresses will be typed as absolute numbers ($$A for permanence)
170 $R Addresses will be typed relative to symbols ($$R for permanence)
171 $nR Same as above, but change offset limit to n.
172 $C Change current mode to numeric type out ($$C for permanence)
173 $nC Change current radix for $C to n (n is decimal, $$nC for permanence)
174 $nO Change current mode to n bit byte typeout ($$nO for permanence)
175 $S Change current mode to instruction type out ($$S for permanence)
176 $T Change current mode to ASCII text output ($$T for permanence)
177 $5T Change current mode to Radix-50 text output ($$5T for permanence)
178 ; Retype currently open word
179 = Retype currently open word as number
180 n= Type value of n as a number
181 _ Retype currently open word as instruction
182 $X Execute next instruction
183 i$X Execute instruction i (don't execute branches)
184 $$X Execute instructions until PC = <next instruction after current>
185 n$G Start executing program at location n.
186 Default is to start executing at address in JOBSA (start of program)
187 v$nB Set breakpoint n at address v (n from 1 to 8 or can be omitted)
188 a,v$nB Same as above but open address a at breakpoint
189 If two altmodes are used, automatic proceding is enabled.
190 The breakpoint will cause the message to be typed and the program
191 resumed. If you type a character, the automatic proceding will stop.
192 0$nB Remove breakpoint n
193 $B Remove all breakpoints
194 $P Procede from breakpoint
195 n$P Procede from breakpoint "n" times (without halting)
196 If two altmodes are used, the breakpoint will be proceded automatically
197 a: Make symbolic name "a" have value of current location
198 v<a: Make symbolic name "a" have value "v"
199 a$$K Delete symbolic name "a"
200 a$K Delete symbolic name "a" from typeout only
201 $$K Delete last symbol coloned (:)
202 $K Delete last symbol coloned (:) from typeout only
203 n$M Set mask for searches (below) to "n"
204 l<u>s$W Search core from "l" to "u" for word "s"
205 l<u>s$E Search core from "l" to "u" for effective address "s"
206 l<u>s$N Search core from "l" to "u" for word not equal to "s"
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 2-1
DDT.MAC 30-DEC-82 01:45
207 l<u$$Z Zero memory from "l" to "u"
208 $nD Synchronize to process with PIX "n"
209 1$nD Break on severity code "n"
210 -1$nD Continue on severity code "n"
211 0$$D Disable DDT
212 -1$$D Crash the system and cause a panic dump
213 <CALL> Soft restart at address 1004 (Graphics DDT only)
214 ctl-D Interrupt execution (only good during program execution)
215
216 Note that numbers can be as any combination of the following:
217
218 <Octal number>
219 <Decimal number> .
220 <Program symbol>
221 " <Delimeter> <Two ASCII Characters> <Delimeter>
222 "$ <Delimeter> <Three Radix-50 Characters> <Delimeter>
223 <Instruction>
224
225 The operators + (addition), - (subtraction), * (multiplication), and
226 ' (division) are evaluated from left to right unless parenthesis are
227 included. The space is treated like a plus except after instructions
228 when it is merely a separator. All input is accepted in lower or
229 upper case and is folded (except for text.)
230
231 If you are not in DDT, you can re-enter with a Meta-BREAK on a
232 graphics or a restart at DDT (location typed out initially). In
233 addition to program symbols, the following are also defined for you:
234
235 R0-R5 are the user registers. R1/ would open register 1.
236 SP is the user's stack pointer
237 PC is the user's program counter
238 PS is the user status
239 $M is the mask for searches
240 $Q is the value at the current address
241 $V is the value at the current address with the bytes switched
242 $nB is the address of breakpoint n
243 JOBSA is the starting address of your program.
244 . represents the current location.
245 Thus .$1B puts breakpoint 1 at the currently opened location.
246
247 When your program is executing, the following unexpected traps may
248 occur:
249
250 NXM! is caused when your program requests a non-existant memory or
251 does a word operation on an odd address.
252 ILG! is caused by an illegal instruction.
253 BPT! is caused by an entry to DDT that is unexpected (i.e.
254 executing the BPT instruction or setting the T-bit).
255 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 3
DDT.MAC 30-DEC-82 01:45
257 ; INSTRUCTION DECODE/ENCODE TABLE
258
259 .MACRO INSTRS
260 ; THE FIVE PARAMETERS TO THE CODE OP-CODE DESCRIBE AN INSTRUCTION:
261 ; THE FIRST PARAMETER IS THE LOWER LIMIT OF VALUES THAT WILL FALL
262 ; INTO THAT OP-CODE (THE TABLE MUST BE SCANNED SEQUENTIALLY)
263 ; THE SECOND PARAMETER IS THE OP-CODE TEXT
264 ; THE THIRD PARAMETER TELLS THE MACHINE SUITABILITY
265 ; 0 MEANS ANY MACHINE HAS THIS INSTRUCTION. 1 MEANS
266 ; 11/40 AND UP ONLY, 2 MEANS 11/45 ONLY.
267 ; THE FOURTH PARAMETER TELLS HOW TO DECODE THE PARAMETERS:
268 ; 0 MEANS NO PARAMETERS
269 ; 1 MEANS "NNNNNN" (16 BIT NUMBER)
270 ; 2 MEANS DECODE CONDITION CODE BITS (NZVC)
271 ; 3 MEANS "N" (3 BIT NUMBER)
272 ; 4 MEANS "XXX" (8 BIT DISPLACEMENT)
273 ; 5 MEANS "R,DD"
274 ; 6 MEANS "NN" (6 BIT NUMBER)
275 ; 7 MEANS "SS,DD" (OR "DD,SS")
276 ; 10 MEANS "R"
277 ; 11 MEANS "R,NN" (6 BIT DISPLACEMENT)
278 ; 12 MEANS "NNN" (8 BIT NUMBER)
279 ; 13 MEANS "DD" (OR "SS")
280 ; 14 MEANS "SS,R"
281 ; THE FIFTH PARAMETER IS 1 IF THIS INSTRUCTION IS LEGAL IN BYTE MODE
282 CODE 0,HALT,0,0,0
283 CODE 1,WAIT,0,0,0
284 CODE 2,RTI,0,0,0
285 CODE 3,BPT,0,0,0
286 CODE 4,IOT,0,0,0
287 CODE 5,RESET,0,0,0
288 CODE 6,RTT,1,0,0
289 CODE 7,,0,1,0
290 CODE 100,JMP,0,13,0
291 CODE 200,RTS,0,10,0
292 CODE 210,,0,1,0
293 CODE 230,SPL,2,3,0
294 CODE 240,NOP,0,0,0
295 CODE 241,CL,0,2,0
296 CODE 257,CCC,0,0,0
297 CODE 260,,0,1,0
298 CODE 261,SE,0,2,0
299 CODE 277,SCC,0,0,0
300 CODE 300,SWAB,0,13,0
301 CODE 400,BR,0,4,0
302 CODE 1000,BNE,0,4,0
303 CODE 1400,BEQ,0,4,0
304 CODE 2000,BGE,0,4,0
305 CODE 2400,BLT,0,4,0
306 CODE 3000,BGT,0,4,0
307 CODE 3400,BLE,0,4,0
308 CODE 4000,JSR,0,5,0
309 CODE 5000,CLR,0,13,1
310 CODE 5100,COM,0,13,1
311 CODE 5200,INC,0,13,1
312 CODE 5300,DEC,0,13,1
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 3-1
DDT.MAC 30-DEC-82 01:45
313 CODE 5400,NEG,0,13,1
314 CODE 5500,ADC,0,13,1
315 CODE 5600,SBC,0,13,1
316 CODE 5700,TST,0,13,1
317 CODE 6000,ROR,0,13,1
318 CODE 6100,ROL,0,13,1
319 CODE 6200,ASR,0,13,1
320 CODE 6300,ASL,0,13,1
321 CODE 6400,MARK,1,6,0
322 CODE 6500,MFPI,1,13,0
323 CODE 6600,MTPI,1,13,0
324 CODE 6700,SXT,1,13,0
325 CODE 7000,,0,1,0
326 CODE 10000,MOV,0,7,1
327 CODE 20000,CMP,0,7,1
328 CODE 30000,BIT,0,7,1
329 CODE 40000,BIC,0,7,1
330 CODE 50000,BIS,0,7,1
331 CODE 60000,ADD,0,7,0
332 CODE 70000,MUL,1,14,0
333 CODE 71000,DIV,1,14,0
334 CODE 72000,ASH,1,14,0
335 CODE 73000,ASHC,1,14,0
336 CODE 74000,XOR,1,5,0
337 CODE 75000,FADD,1,10,0
338 CODE 75010,FSUB,1,10,0
339 CODE 75020,FMUL,1,10,0
340 CODE 75030,FDIV,1,10,0
341 CODE 75040,,0,1,0
342 CODE 77000,SOB,1,11,0
343 CODE 100000,BPL,0,4,0
344 CODE 100400,BMI,0,4,0
345 CODE 101000,BHI,0,4,0
346 CODE 101400,BLOS,0,4,0
347 CODE 102000,BVC,0,4,0
348 CODE 102400,BVS,0,4,0
349 CODE 103000,BCC,0,4,0
350 CODE 103000,BHIS,0,4,0
351 CODE 103400,BCS,0,4,0
352 CODE 103400,BLO,0,4,0
353 CODE 104000,EMT,0,12,0
354 CODE 104400,TRAP,0,12,0
355 CODE 105000,,0,1,0
356 .IF DF D.LSI
357 CODE 106400,MTPS,1,13,0
358 .IFTF
359 CODE 106500,MFPD,2,13,0
360 CODE 106600,MTPD,2,13,0
361 .IFT
362 CODE 106700,MFPS,1,13,0
363 CODE 107000,,0,1,0
364 .IFF
365 CODE 106700,,0,1,0
366 .ENDC
367 CODE 160000,SUB,0,7,0
368 CODE 170000,,0,1,0
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 3-2
DDT.MAC 30-DEC-82 01:45
369 CODE 177777,,0,1,0
370 .ENDM
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 4
DDT.MAC 30-DEC-82 01:45
372 ; WORD ALIGNED CONSTANTS
373
374 000000' .PSECT $PLIT$,D
375 000000' D.LGDR: ; COMMAND DISPATCH TABLE
376 000000' 000144' D.ERR ; @ ERROR
377 000002' 000144' D.ERR ; # ERROR
378 000004' 000144' D.ERR ; ( ERROR
379 000006' 002106' D.ADD ; +
380 000010' 002106' D.ADD ; <SP>
381 000012' 002122' D.MULT ; * MULTIPLICATION
382 000014' 002142' D.DIV ; ' DIVISION
383 000016' 002114' D.SUBT ; - SUBTS SIGN
384 000020' 000144' D.ERR ; ) ERROR
385 000022' 005446' D.TEXT ; " MAKE ASCII
386 000024' 004674' D.LWAS ; >
387 000026' 003350' D.FWAS ; < SET FIRST WORD OF SEARCH
388 000030' 003320' D.EQAL ; =
389 000032' 002676' D.ALTM ; $ ALTMODE
390 000034' 002164' D.COLN ; : DEFINES SYMBOL
391 000036' 003044' D.SEMI ; ; RE-TYPE WORD
392 000040' 002764' D.WRD ; / OPEN WORD
393 000042' 002732' D.BYT ; \ OPEN BYTE
394 000044' 003334' D.DCOM ; , COMMA PARAMETER
395 000046' 004452' D.CRET ; <CR> CLOSE
396 000050' 003074' D.OPNX ; <LF> MODIFY, CLOSE, OPEN NEXT
397 000052' 003272' D.ORPC ; _ TYPE WORD AS INSTRUCTION
398 000054' 003230' D.BACK ; ^ OPEN PREVIOUS
399 000056' 003230' D.BACK ; <BS> OPEN PREVIOUS
400 001 .IF DF D.GDP
401 D.SOFT ; <CALL> SOFT RESTART AT 1004
402 000 .ENDC
403 000060' 003050' D.ORAB ; <TAB> OPEN RELATED, ABSOLUTE
404 000062' 003200' D.OPBR ; [ OPEN WORD AS NUMERIC
405 000064' 003214' D.CLBR ; ] OPEN WORD AS INSTRUCTION
406 000066' 003064' D.EXCL ; ! OPEN WORD SILENTLY
407 000070' 000144' D.ERR ; <SP> SECOND SPACE (ERROR)
408 000072' 004424' D.ABS ; A ABSOLUTE ADDRESSES
409 000074' 005034' D.BKPT ; B BREAKPOINTS
410 000076' 004230' D.INNM ; C IN NUMERICS
411 000100' 005550' M.DBG ; D Set debugging mode
412 000102' 003766' D.ESCH ; E SEARCH EFFECTIVE ADDRESS
413 000104' 000144' D.ERR ; F (undefined)
414 000106' 006176' D.GO ; G GO TO ADDRESS K
415 000110' 000144' D.ERR ; H (undefined)
416 000112' 000144' D.ERR ; I (undefined)
417 000114' 000144' D.ERR ; J (undefined)
418 000116' 002310' D.KILL ; K SYMBOL TABLE DELETION
419 000120' 000144' D.ERR ; L (undefined)
420 000122' 005340' D.MAST ; M SET MASK
421 000124' 003774' D.NSCH ; N NON-SEARCH
422 000126' 004362' D.BYTE ; O TYPEOUT IN BYTES
423 000130' 006070' D.PROC ; P PROCEED
424 000132' 005422' D.ALTQ ; Q CURRENT WORD
425 000134' 004434' D.INRD ; R SET RADIX
426 000136' 004406' D.INMD ; S IN INSTRUCTION MODE
427 000140' 004330' D.INTX ; T IN TEXT
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 4-1
DDT.MAC 30-DEC-82 01:45
428 000142' 003730' D.SNGL ; U SECOND SET OF ROUTINES
429 000144' 005374' D.ALTV ; V SWAB OF CURRENT WORD
430 000146' 004002' D.WSCH ; W SEARCH WORD
431 000150' 005752' D.EXEC ; X EXECUTE INSTRUCTION
432 000152' 000144' D.ERR ; Y (undefined)
433 000154' 003700' D.ZERO ; Z ZERO CORE
434
435 000156' D.UADD:
436 001 .IF DF D.GDP
437 D.GRAP ; UG RETURN USER DISPLAY
438 000 .ENDC
439
440 000156' 001152' D.PARG: D.NONE ; NO PARAMETERS
441 000160' 001152' D.NONE ; 16-BIT NUMBER NOT AN INSTRUCTION
442 000162' 001152' D.NONE ; CONDITION CODE ALREADY DECODED
443 000164' 001152' D.NONE ; 3 BIT OPERAND ADDED IN AUTOMATICALLY
444 000166' 001154' D.DISP ; GET 8-BIT DISPLACEMENT
445 000170' 001176' D.GRSS ; GET "R,SS"
446 000172' 001216' D.GNUM ; GET 6-BIT NUMBER (MARK OPERAND)
447 000174' 001222' D.GSD ; GET "SS,DD"
448 000176' 001242' D.GR ; GET "R"
449 000200' 001262' D.GRNN ; GET "R,NN"
450 000202' 001216' D.GNUM ; GET 8-BIT OPERAND
451 000204' 001306' D.GDD ; GET "DD" (OR "SS")
452 000206' 001674' D.GDDR ; GET "DD,R"
453
454 000210' 010122' D.PARM: D.RTS
455 000212' 010704' D.N16
456 000214' 010722' D.CZVN
457 000216' 010746' D.N3
458 000220' 011014' D.X8
459 000222' 011022' D.RDD
460 000224' 010752' D.N6
461 000226' 010710' D.SSDD
462 000230' 011234' D.R
463 000232' 010766' D.RN6
464 000234' 010756' D.N8
465 000236' 011044' D.DD
466 000240' 011214' D.DDR
467 001 .IF DF D.MCB
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 4-2
DDT.MAC 30-DEC-82 01:45
469 ;
470 ; Debug process header and LLC dispatch vector
471 ;
472
473 000242' PHD$B MDT
474 000040' PHD$D MDTDSP
475 000020' PHD$E
476
477 000242' .PSECT $PLIT$,D
478 000242' MDTDSP: DSP$B
479 000242' DSP$ FC.AST ; Asynchronous Notification
480 000244' DSP$ FC.XME ; Transmit
481 000246' DSP$ FC.RCE ; Receive
482 000250' DSP$ FC.KIL ; Kill
483 000252' DSP$ FC.CTL ; Control
484 000254' DSP$ FC.TIM,DDT ; Timeout
485 000256' DSP$ FC.XCP ; Transmit Complete
486 000260' DSP$ FC.RCP ; Receive Complete
487 000262' DSP$ FC.KCP ; Kill Complete
488 000264' DSP$ FC.CCP ; Control Complete
489 000266' DSP$E
490 000 .ENDC
491
492 001 .IF DF D.RSX
493 D.TRPV: .WORD 4,250,14,20,10,30,34,244
494 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 5
DDT.MAC 30-DEC-82 01:45
496 000266' .PSECT $PLIT$,D
497
498 .MACRO CODE TOP,STR,LEG,PARM,BYT
499 .WORD TOP-1
500 .ENDM
501
502 000266' D.TOPS: INSTRS
503 000526' 177777 .WORD -1
504
505 .MACRO CODE TOP,STR,LEG,PARM,BYT
506 .BYTE <BYT*200>+<PARM*4>+LEG
507 .NCHR D.LEN,STR
508 OFFSET=OFFSET+D.LEN
509 .BYTE OFFSET
510 .ENDM
511 000000 OFFSET=0
512
513 000530' 000 D.COUS: .BYTE OFFSET
514 000531' D.LEGS: INSTRS
515 000770' D.ECNT=.-1
516
517 .MACRO CODE TOP,STR,LEG,PARM,BYT
518 .ASCII "STR"
519 .ENDM
520
521 000771' D.STRS: INSTRS
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 6
DDT.MAC 30-DEC-82 01:45
523
524 001335' .PSECT $PLIT$,D
525 001335' 000 024050 024100 D.FIRS: .ASCII <0> "((@(-(@-(" <0> "@" <0> "))+)+))))??#@#??" <0> "@"
001342' 024055 026500 000050
001350' 000100 024451 024453
001356' 024453 024451 037451
001364' 021477 021500 037477
001372' 040000
526 001374' 053103 047132 D.NZVC: .ASCII "CVZN"
527 001400' 000 001 002 D.OPCH: .BYTE 0,1,2,3,5,7,12,13
001403' 003 005 007
001406' 012 013
528 001410' 014 015 016 D.CLOS: .BYTE 14,15,16,20,22,23,24,25
001413' 020 022 023
001416' 024 025
529 001420' 026 027 030 D.MOD7: .BYTE 26,27,30,31,33,34,35,36,37
001423' 031 033 034
001426' 035 036 037
530 001 .IF DF D.MCB
531 001431' 104 052104 054040 D.HELO: .ASCII "DDT "<D.FORM>
532 000012 .RADIX 10.
533 .IRP ver,<\D.VER>
534 .ASCII "'ver'"
535 .ENDM
536 002 .IF NE,D.LVL
537 .IRP lvl,<\D.LVL>
538 .ASCII ".'lvl'"
539 .ENDM
540 001 .ENDC
541 .IRP edt,<\D.EDIT>
542 .ASCII "('edt')"
543 .ENDM
544 000010 .RADIX 8.
545 001445' 040 067145 061141 .ASCIZ " enabled"<15><12><12>
001452' 062554 006544 005012
001460' 000
546 .IFF
547 D.GRET: .ASCII <15><12>"DDT EXECUTION"
548 002 .IF NDF D.GDP
549 .ASCII "; MANUAL RESTART = "
550 001 .ENDC
551 .ASCIZ ""
552 D.BE: .ASCIZ ";BPT!"
553 D.NM: .ASCIZ ";NXM!"
554 D.IM: .ASCIZ ";ILG!"
555 000 .ENDC
556 001461' D.UTAB:
557 001 .IF DF D.GDP
558 .BYTE 'G ; G
559 000 .ENDC
560 000000 D.ENUT =.-D.UTAB
561 001461' D.LGCH: ; FIRST CHARACTERS MUST BE "@#(+ *'-)"
562 001461' 100 .BYTE '@ ; @
563 000001 D.HASH =.-D.LGCH
564 001462' 043 .BYTE '# ; #
565 000002 D.OPAR =.-D.LGCH
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 6-1
DDT.MAC 30-DEC-82 01:45
566 001463' 050 .BYTE '( ; (
567 000003 D.ADDS =.-D.LGCH
568 001464' 053 .BYTE '+ ; +
569 000004 D.SPAC =.-D.LGCH
570 001465' 040 .BYTE ' ; <SP>
571 001466' 052 .BYTE '* ; *
572 001467' 047 .BYTE '' ; '
573 000007 D.DASH =.-D.LGCH
574 001470' 055 .BYTE '- ; -
575 000010 D.CPAR =.-D.LGCH
576 001471' 051 .BYTE ') ; )
577 001472' 042 .BYTE '" ; "
578 001473' 076 .BYTE '> ; >
579 001474' 074 .BYTE '< ; <
580 001475' 075 .BYTE '= ; =
581 001476' 033 .BYTE 33 ; <ALT>
582 000016 D.COLO =.-D.LGCH
583 001477' 072 .BYTE ': ; :
584 001500' 073 .BYTE '; ; ;
585 001501' 057 .BYTE '/ ; /
586 001502' 134 .BYTE '\ ; \
587 000022 D.COMM =.-D.LGCH
588 001503' 054 .BYTE ', ; ,
589 001504' 015 .BYTE 15 ; <CR>
590 001505' 012 .BYTE 12 ; <LF>
591 001506' 137 .BYTE '_ ; _
592 001507' 136 .BYTE '^ ; ^
593 001510' 010 .BYTE 10 ; <BS>
594 001 .IF DF D.GDP
595 .BYTE 3 ; <CALL>
596 000 .ENDC
597 001511' 011 .BYTE 11 ; <TAB>
598 001512' 133 .BYTE '[ ; [
599 001513' 135 .BYTE '] ; ]
600 001514' 041 .BYTE '! ; !
601 000034 D.LETR =.-D.LGCH
602 001515' 040 041101 042103 D.RDTB: .ASCII " ABCDEFGHIJKLMNOPQRSTUVWXYZ"
001522' 043105 044107 045111
001530' 046113 047115 050117
001536' 051121 052123 053125
001544' 054127 055131
603 000067 D.CLGT =.-D.LGCH ; COMMAND TABLE END
604 001550' 027044 030052 031061 .ASCII "$.*0123456789"
001556' 032063 033065 034067
001564' 071
605 000050 D.ENTB =.-D.RDTB
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 7
DDT.MAC 30-DEC-82 01:45
607 ; BYTE ALIGNED VARIABLES
608
609 000000' .PSECT $OWN$,D
610 001 .IF DF D.KSR!D.MCB
611 000000' 000 D.CPOS: .BYTE 0 ; CHARACTER POSITION FOR TTY
612 000001' 000031 D.BUFR: .BLKB D.RCHR ; 25 CHARACTER INPUT BUFFER
613 000032' D.ENDB:
614 000 .ENDC
615 000032' 057 D.CDSP: .BYTE '/ ; <LF> display character
616 000033' 040 D.TDSP: .BYTE ' ; <TAB> display character
617 000034' 000 D.USED: .BYTE 0 ; IF ZERO, USE OCTAL NUMBER
618 000035' 001 D.MACH: .BYTE 1 ; 0=11/15 1=11/40 2=11/45
619 000036' 000 D.LEVL: .BYTE 0 ; PARENTHESIS LEVEL
620 000037' 000 D.FWAF: .BYTE 0 ; MARKER OF < PARAMETER
621 000040' 000 D.INPA: .BYTE 0 ; NON-ZERO IF IN AN INSTRUCTION TYPE-IN
622 000041' 377 D.P: .BYTE -1 ; PROCEED FLAG = <1-8>*2 IF NORMAL BREAK
623 ; 0 IF SINGLE STEP BREAK
624 ; -1 IF NOT ENTERED BY BREAK
625 001 .IF DF D.MCB
626 000042' 000 000 000 D.PSVR: .BYTE 0,0,0,0,0,0,0,0 ; Severity proceede switches:
000045' 000 000 000
000050' 000 000
627 ; 0 = unspecified
628 ; >0 = continue
629 ; <0 = break
630 000052' 000 D.E: .BYTE 0 ; Exception type:
631 ; 0 = SIGNAL
632 ; -1 = hardware exception
633 000 .ENDC
634 000053' 000 D.ALTF: .BYTE 0 ; ALTMODE FOUND
635 000054' 005015 000 D.CR: .ASCIZ <15><12>
636 001 .IF DF D.MCB
637 000057' 044 041156 000 M.BMES: .ASCIZ "$nB"
638 .IFF
639 D.BMES: .ASCIZ "$nB >> "
640 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 7-1
DDT.MAC 30-DEC-82 01:45
642 ; WORD ALIGNED VARIABLES
643 000064' .EVEN
644
645 001 .IF DF D.KSR!D.MCB
646 000064' 000001' D.INPU: D.BUFR ; INPUT BUFFER POINTER
647 000066' 000001' D.OUTP: D.BUFR ; OUTPUT BUFFER POINTER
648 000 .ENDC
649 001 .IF DF D.RSX
650 D.STS: .BLKW 2 ;ERROR STATUS FROM TI0: INPUT STORED HERE
651 D.BUFR: .WORD 0
652 D.SVDB: .BLKW 10 ;USED IN SVDB$S CALL
653 000 .ENDC
654 000070' 000013 D.SYM: .BLKB D.SYML+1 ; HOLDS SYMBOL TYPED
655 000104' .EVEN
656 000104' D.SD.T: ; WORD ADDRESS OF D.S AND D.T
657 000104' 000 D.S: .BYTE 0 ; SINGLE STEP FLAG
658 000105' 000 D.T: .BYTE 0 ; T-BIT FLAG
659 000106' D.BOTH: ; WORD ADDRESS OF D.NOTY AND D.FIND
660 000106' 000 D.NOTY: .BYTE 0 ; DON'T TYPE OUT IF EQUALS 1
661 000107' 000 D.FIND: .BYTE 0 ; ADDRESS FOUND (EFF SEARCH) IF EQUALS 1
662 000110' 000000 D.TPC: 0 ; PC OF LAST BPT WE PROCEEDED
663 000112' 000000 D.LFIN: 0 ; LINE FEED INCREMENT
664 ; THE NEXT 4 WORDS FORM THE TEMPORARY MODE TABLE AND MUST BE IN ORDER********
665 000114' 010334' D.CURM: D.INST ; TYPEOUT MODE ADDRESS *****
666 000116' 000010 D.DVTB: 8. ; CURRENT RADIX *****
667 000120' 000002 D.BW: 2 ; BYTE-WORD INDICATOR (1=BYTE, 2=WORD) *****
668 000122' 000000 D.IFMT: 0 ; (1=ABSOLUTE, 0=RELATIVE) *****
669 ; END OF CRITICAL ORDERING***************************************************
670 ; THE NEXT 4 WORDS FORM THE PERMANENT MODE TABLE AND MUST BE IN ORDER********
671 000124' 010334' D.PERM: D.INST ; PERMANENT TYPEOUT MODE *****
672 000126' 000010 D.PERN: 8. ; PERMANENT RADIX *****
673 000130' 000002 D.PEBW: 2 ; PERMANENT BYTE-WORD INDICATOR *****
674 000132' 000000 D.PEFM: 0 ; PERMANENT ADDRESS TYPEOUT INDICATOR *****
675 ; END OF CRITICAL ORDERING***************************************************
676 000134' 010334' D.OMOD: D.INST ; MODE TO OPEN WORDS IN
677 000136' 000000 D.OPER: 0 ; OPERATION
678 000140' 000000 D.DECN: 0 ; DECIMAL NUMBER
679 000142' 000000 D.SVR2: 0 ; SAVE FOR R2
680 ; THE NEXT THREE LINES MUST BE IN THAT ORDER FOR $X INST.********************
681 000144' 000000 D.SVR4: 0 ; SAVE FOR R4 *****
682 000146' 000000 000000 D.PARS: 0,0 ; PARAMETERS FOR INSTR. TYPE-IN *****
683 001 .IF NDF D.MCB
684 JMP D.EXE2 ; RETURN IN CASE INSTRUCTION FINISHES *****
685 000 .ENDC
686 000152' 000000 D.PATR: 0 ;
687 000154' 000137 D.PATI: JMP @(PC)+ ; Patch instruction
688 000156' 000000 D.PATA: 0
689 000160' 000240 NOP
690 000162' 000005 D.PATS: .BLKW 5 ; Patched instruction
691 000174' 000162' D.PATE: D.PATS ; end of patched instruction
692 ; END OF CRITICAL ORDERING***************************************************
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 7-2
DDT.MAC 30-DEC-82 01:45
694 000176' 000000 D.SVR7: 0 ; SAVE FOR PC DURING $X
695 000200' 000000 000000 D.PARO: 0,0 ; RELOCATIOON FOR D.PARS
696 000204' 000000 D.OFST: 0 ; OFFSET FROM COMMA
697 000206' 000177 D.RFNL: 127. ; RFND OFFSET
698 000210' 000000 D.LASV: 0 ; LAST TYPED NUMBER
699 000212' 000000 D.LASW: 0 ; LAST TYPED WORD
700 000214' 000000 D.DOT: 0 ; CURRENT LOCATION
701 000216' 000000 D.CADC: 0 ; COPY OF D.CAD FOR TYPE-IN
702 000220' 000000 D.ERF: 0 ; ADDRESS OF ERROR MESSAGE
703 000222' 000000 D.CAD: 0 ; CURRENT ADDRESS
704 000224' 000000 D.NLWD: 0 ;USED ONLY TO MARK CLOSED WORD
705 000226' 000000 D.XXX: 0 ; TEMPORARY STORAGE
706 000230' 000000 D.COMA: 0 ; ADDRESS BEFORE COMMA
707 000232' 000000 D.SIZE: 0 ; BYTE SIZE FOR "O" TYPEOUT
708 000234' 000000 D.RAD1: 0 ; FIRST WORD OF RAD50 SYMBOL
709 000236' 000000 D.RAD2: 0 ; SECOND WORD OF RAD50 SYMBOL
710 000240' 000000 D.LASC: 0 ; LAST COLONED WORD
711 000242' 000000' D.FENC: S.SMDT ; ADDRESS OF FENCE SYMBOL TABLE
712 000244' 000070' D.POS: D.SYM ; ADDRESS OF CHARACTER IN D.SYM
713 000246' 000000 D.FWA: 0 ; LOW LIMIT
714 000250' 177776' D.LWA: DDT-2 ; HIGH LIMIT
715 000252' 177777 D.MASK: 177777 ; MASK
716
717 000254' 000011 D.BKTB: .REPT 1+D.BKP
718 0 ; ADDRESS OF BREAKPOINTS
719 .ENDR
720 001 .IF DF D.MCB
721 000276' 000011 D.ADDR: .BLKW 1+D.BKP ; APR6 virtual address
722 000320' 000011 D.BIAS: .BLKW 1+D.BKP ; APR6 relocation bias
723 000 .ENDC
724 000342' 000011 D.UIN: .BLKW 1+D.BKP ; Saved instruction
725 000364' 000011 D.CT: .BLKW 1+D.BKP ; Proceede counter
726 000406' 000011 D.OPEN: .BLKW 1+D.BKP ; Breakpoint open location
727 ;
728 ; The following are for $$X execution -
729 ; They specify the range of addresses to break on.
730 ;
731 000430' 000000 D.BKLO: .WORD 0 ; Break on PC between this
732 000432' 000000 D.BKHI: .WORD 0 ; and this address.
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 7-3
DDT.MAC 30-DEC-82 01:45
734 ; THE DDT STACK, INCLUDING SOME VARIABLES AT ITS BASE (HIGH ADDRESSES)
735 ; WHICH DESCRIBE THE USER'S PROGRAM STATE:
736
737 ; THE FOLLOWING VARIABLES ARE CRITICALLY ORDERED FOR VARIOUS REASONS.********
738 001 .IF NDF D.MCB
739 .BLKW 40. ; ACTIVE STACK AREA *****
740 D.STK: ; BASE OF ACTIVE DDT STACK *****
741 002 .IF DF D.KSR
742 0 ; SAVE CELL - R C/SR *****
743 001 .ENDC
744 002 .IF NDF D.RSX
745 0 ; SAVE CELL - T C/SR *****
746 001 .ENDC
747 0,0,0,0 ; USER LOCATION 12,10,6,4 *****
748 .IFTF
749 000434' D.URG:
750 000434' 000000 D.UR0: 0 ; USER REGISTER 0 *****
751 000436' 000000 D.UR1: 0 ; USER REGISTER 1 *****
752 000440' 000000 D.UR2: 0 ; USER REGISTER 2 *****
753 000442' 000000 D.UR3: 0 ; USER REGISTER 3 *****
754 000444' 000000 D.UR4: 0 ; USER REGISTER 4 *****
755 000446' 000000 D.UR5: 0 ; USER REGISTER 5 *****
756 000450' 000000 D.UR6: 0 ; USER SP *****
757 000452' 000000 D.UR7: 0 ; USER PC *****
758 .IFT
759 JOBSA: 0 ; USER START ADDRESS *****
760 000 .ENDC
761 ; END OF CRITICALLY ORDERED VARIABLES****************************************
762
763 000454' 000000 D.UPS: 0 ; USER STATUS
764 000456' 000000 D.DAR6: 0 ; DDT's APR6
765 000460' 000000 D.DR6: 0 ; DDT's stack
766 000462' 000340 D.DPS: D.PRIO ; DDT'S entry status
767 001 .IF DF D.MCB
768 000464' MAPR: ; Kernel mapping register:
769 000464' 000000 0 ; APR0 mapping bias.
770 000466' 000000 0 ; APR1 mapping bias.
771 000470' 000000 0 ; APR2 mapping bias.
772 000472' 000000 0 ; APR3 mapping bias.
773 000474' 000000 0 ; APR4 mapping bias.
774 000476' 000000 MAPR5: 0 ; APR5 mapping bias.
775 000500' 000000 MAPR6: 0 ; APR6 mapping bias.
776 000502' 000000 0 ; APR7 mapping bias.
777
778 000504' 000000 MMCHV: 0 ; Mechanism vector.
779 000506' 000000 MSIGV: 0 ; Signal vector.
780 000510' 000000 MTTBK: 0 ; Keyboard interrupt block.
781 000512' 000000 MSNBK: 0 ; Process synchronization block.
782 000514' 000000 000000 000000 NEWEXV: 0,0,0 ; Our exception vector.
783 000522' 000000 000000 000000 EXVPRI: 0,0,0 ; Old primary exception vector.
784 000530' 000000 000000 000000 EXVLST: 0,0,0 ; Old last chance exception vector.
785 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 8
DDT.MAC 30-DEC-82 01:45 SYMBOL TABLES
787 .SBTTL SYMBOL TABLES
788
789 000000' .PSECT $SYM$,D ; Beginning of DDT symbol table.
790 000000' S.SMDT:
791 .IRPC rg,<012345>
792 .RAD50 /R'rg' /
793 177700+'rg
794 .ENDM
795 000044' 074500 000000 .RAD50 /SP /
796 000050' 177706 177706
797 000052' 062170 000000 .RAD50 /PC /
798 000056' 177707 177707
799 000060' 063370 000000 .RAD50 /PS /
800 000064' 177776 177776
801
802 000000' .PSECT $SYM.,D
803 000024 .REPT D.SYMU ; For user defined symbols.
804 0,0,-1
805 .ENDR
806 000170' 177777 177777 -1,-1 ; End of DDT symbol table.
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 9
DDT.MAC 30-DEC-82 01:45 DDT - DDT INITIALIZATION
808 .SBTTL DDT - DDT Initialization
809
810 000000' .PSECT $ABS$,I
811 000000' DDT:
812 001 .IF DF D.MCB
813 000000' 013767 000000G 000456' MOV @#KISAR5,D.DAR6
814 000006' 062767 000200 000456' ADD #200,D.DAR6
815 000014' MAP$ @#KISAR5
816 000022' 016767 000000G 000516' MOV .CRPIX,NEWEXV+2
817 000030' 012767 007002' 000514' MOV #M.PRIM,NEWEXV+0
818 000036' CALL$C #$EXVEN,<#0,#NEWEXV+20000,#EXVPRI+20000>
819 000066' 012767 006252' 000514' MOV #M.LAST,NEWEXV+0
820 000074' CALL$C #$EXVEN,<#2,#NEWEXV+20000,#EXVLST+20000>
821 000126' MAP$ D.DAR6
822 000134' 004767 012440' CALL M.TTON
823 000140' 005737 000000 TST @#0
824 000144' 001023 BNE 10$
825 000146' 012737 000000G 000000 MOV #$NONSI,@#0
826 000154' PUSH$S <(SP),@#14>
827 000162' MFPS 4(SP)
828 000170' MTPS @#16
829 000176' 016701 000510' MOV MTTBK,R1
830 000202' 005261 000030 INC MT.INT(R1)
831 000206' 052766 000020 000004 BIS #20,4(SP)
832 000214' 012701 001431' 10$: MOV #D.HELO,R1
833 000220' 000167 011642' JMP D.STYP
834 .IFF
835 BR 10$ ; HARD ENTRY ADDRESS TO DDT
836 002 .IF DF D.RSX
837 ALUN$S #LUNTI,#"TI,#0 ;TIRED OF TYPING THIS TO TKB
838 CLR D.UPS ;I DON'T THINK THIS IS NECESSARY.
839 .IFF
840 MFPS D.UPS ; GET USER'S STATUS
841 .IFTF
842 POP$S D.UR7 ; SOFT ENTRY ASSUMES STACK HAS RETURN ADDRESS
843 CALL D.SAVE ; SAVE REGISTERS
844 BR D.DDT2 ; FINISH INITIALIZATION
845 10$:
846 .IFF
847 003 .IF NDF D.LSI
848 MFPS D.UPS ; SAVE USER'S STATUS
849 002 .ENDC
850 001 .ENDC
851 002 .IF DF D.LSI
852 HALT ; HALT TO ALLOW TYPEOUT
853 MFPS D.UPS ; GET USER'S STATUS
854 001 .ENDC
855 CMP #400,SP ;IS STACK REASONABLE?
856 BLO 20$ ;YES, SEE IF ITS ADDRESSABLE
857 MOV #D.STK,SP ;NOPE, USE OURS THEN
858 20$: MOV #D.NOSP,@#4 ; SET FOR INVALID STACK INTERRUPT
859 MOV #340,@#6 ; SET HIGH STATUS
860 MOV #D.ILGT,@#10 ; SET FOR ILLEGAL INSTRUCTIONS
861 MOV #340,@#12 ; SET HIGH STATUS
862 MOV SP,D.XXX ; SAVE HIS STACK
863 MOV #D.STK,SP ; USE OURS TEMPORARILY
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 9-1
DDT.MAC 30-DEC-82 01:45 DDT - DDT INITIALIZATION
864 TST @D.XXX ; DOES HIS STACK EXIST?
865 MOV D.XXX,SP ; GIVE HIM BACK HIS STACK
866 D.FIX: MOV #D.NXMT,@#4 ; RESTORE FOR EXTERNAL NXMS
867 MOV JOBSA,D.UR7 ; ASSUME HE CAME FROM STARTING ADDRESS
868 CALL D.SAVE ; SAVE REGISTERS
869 002 .IF DF D.GDP
870 MOV #DDT+2,R0 ; ADDRESS OF RESTART FOR MONITOR
871 TRAP 133 ; DDTCAL
872 001 .ENDC
873 CLRB D.NOTY ; ALLOW TYPEOUT
874 MOV #D.GRET,R1 ; TELL YOU ARE HERE
875 CALL D.STYP ; TYPE MESSAGE
876 002 .IF NDF D.GDP
877 MOV #DDT,R0 ; ADDRESS OF RESTART
878 CALL D.TYPN ; TYPE RESTART ADDRESS
879 001 .ENDC
880 D.DDT2: CALL D.CRLF ; TYPE CARRIAGE RETURN-LINE FEED
881 CLR D.SD.T ; NOT IN SINGLE STEP OR TRACE
882 MOVB #-1,D.P ; DISALLOW PROCEDE
883 BR D.DCD ; GET INTO MAIN LOOP
884 D.NOSP: MOV #D.STK,SP ; SET OWN STACK PERMANENTLY FOR USER
885 BR D.FIX ; RETURN
886 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 10
DDT.MAC 30-DEC-82 01:45 D.DCD - DECODE USER COMMAND
888 .SBTTL D.DCD - Decode User Command
889 ;++
890 ; FUNCTIONAL DESCRIPTION:
891 ; None
892 ;
893 ; CALLING SEQUENCE:
894 ; CALL D.COLN
895 ;
896 ; INPUT PARAMETERS:
897 ; None
898 ;
899 ; IMPLICIT INPUTS:
900 ; None
901 ;
902 ; OUTPUT PARAMETERS:
903 ; None
904 ;
905 ; IMPLICIT OUTPUTS:
906 ; None
907 ;
908 ; CONDITION CODES:
909 ; None
910 ;
911 ; SIDE EFFECTS:
912 ; None
913 ;--
914
915 000000' .PSECT $CODE$,I
916 000000' 005067 000230' D.DCD: CLR D.COMA ; NO , PARAMETER. RETURN FROM <CR>HCTSAR>
917 000004' 105067 000037' CLRB D.FWAF ; NO < PARAMETER
918 001 .IF NDF D.RSX
919 000010' MTPS #D.PRIO ; SET DDT STATUS
920 000 .ENDC
921 000016' 012767 000240 000146' MOV #NOP,D.PARS ; FILL $X AREA WITH NOPS
922 000024' 005067 000200' CLR D.PARO ; NO OFFSET
923 000030' 005067 000202' CLR D.PARO+2 ; NO OFFSET
924 000034' 005067 000142' D.DCD2: CLR D.SVR2 ; RETURN FROM ,<
925 000040' 005067 000144' CLR D.SVR4 ; D.SVR4 IS A SAVE REGISTER FOR R4
926 000044' 005067 000204' CLR D.OFST ; TALLY
927 000050' 005002 CLR R2 ; NUMBER TYPED FLAG
928 000052' 105067 000053' D.DCD3: CLRB D.ALTF ; RETURN FROM B"MVQI
929 000056' 105067 000036' D.DCD1: CLRB D.LEVL ; RETURN FROM $
930 000062' 105067 000040' CLRB D.INPA ; NOT IN INSTRUCTION TYPE-IN
931 000066' 016767 000222' 000216' MOV D.CAD,D.CADC ; KEEP A CURRENT COPY FOR INST TYPE-IN
932 000074' 016706 000460' MOV D.DR6,SP ; RESET STACK POINTER
933 000100' 004767 000604 CALL D.EXPR ; GET EXPRESSION (R2,R4,R1)
934 000104' 005702 TST R2 ; NEED OPERANDS FOR INSTRUCTION?
935 000106' 100002 BPL 50$ ; BRANCH IF NOT
936 000110' 004767 001012 CALL D.GETI ; GET OPERANDS
937 000114' 005702 50$: TST R2 ; ANY VALUE TYPED?
938 000116' 001404 BEQ 60$ ; BRANCH IF NOT
939 000120' 010467 000210' MOV R4,D.LASV ; STORE LAST TYPED VALUE
940 000124' 010467 000212' MOV R4,D.LASW ; STORE LAST TYPED WORD TOO
941 000130' 006301 60$: ASL R1 ; MULTIPLY BY TWO
942 000132' 004771 000000' CALL @D.LGDR(R1) ; GO TO PROPER ROUTINE
943 000136' 004767 011430 CALL D.TTAB ; TYPE TAB
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 10-1
DDT.MAC 30-DEC-82 01:45 D.DCD - DECODE USER COMMAND
944 000142' 000716 BR D.DCD ; GET NEXT COMMAND
945
946 000144' 012700 000040 D.ERR: MOV #' ,R0 ; TYPE A SPACE
947 000150' 004767 011612 CALL D.TYPE
948 000154' 012700 000077 MOV #'?,R0 ; ? TO BE TYPED
949 000160' 004767 011602 CALL D.TYPE ; TYPE CHARACTER
950 000164' 004767 011402 CALL D.TTAB ; TYPE TAB
951 000170' 000703 BR D.DCD
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 11
DDT.MAC 30-DEC-82 01:45 D.PRIM - GET A PRIMARY
953 .SBTTL D.PRIM - Get a Primary
954 ;++
955 ; FUNCTIONAL DESCRIPTION:
956 ; None
957 ;
958 ; CALLING SEQUENCE:
959 ; CALL D.PRIM
960 ;
961 ; INPUT PARAMETERS:
962 ; None
963 ;
964 ; IMPLICIT INPUTS:
965 ; None
966 ;
967 ; OUTPUT PARAMETERS:
968 ; None
969 ;
970 ; IMPLICIT OUTPUTS:
971 ; None
972 ;
973 ; CONDITION CODES:
974 ; None
975 ;
976 ; SIDE EFFECTS:
977 ; None
978 ;--
979
980 000172' .PSECT $CODE$,I
981 000172' 005004 D.PRIM: CLR R4 ; R4 CONTAINS THE CONVERTED OCTAL
982 000174' 005067 000140' CLR D.DECN ; CLEAR DECIMAL NUMBER
983 000200' 105067 000034' CLRB D.USED ; CLEAR USE-DECIMAL NUMBER INDICATOR
984 000204' 004767 001652 CALL D.CLSM ; CLEAR SYMBOL
985 000210' 004767 011674 10$: CALL D.GET ; GET A CHAR, RETURN IN R0
986 000214' 022700 000060 CMP #'0,R0 ; COMPARE WITH ASCII 0
987 000220' 101034 BHI 30$ ; CHECK LEGALITY IF NON-NUMERIC
988 000222' 022700 000071 CMP #'9,R0 ; COMPARE WITH ASCII 9
989 000226' 103431 BLO 30$ ; CHECK LEGALITY IF NOT OCTAL
990 000230' 026727 000244' 000070' CMP D.POS,#D.SYM ; IN THE MIDDLE OF A SYMBOL?
991 000236' 001040 BNE 50$ ; YES, PUT DIGIT IN SYMBOL
992 000240' 162700 000060 SUB #'0,R0 ; CONVERT TO BCD
993 001 .IF DF D.MCB
994 000244' 072427 000003 ASH #3,R4
995 .IFF
996 ASL R4 ; MAKE ROOM
997 ASL R4 ; IN
998 ASL R4 ; R4
999 .IFTF
1000 000250' 060004 ADD R0,R4 ; PACK THREE BITS IN R4
1001 000252' 016701 000140' MOV D.DECN,R1 ; GET DECIMAL NUMBER
1002 .IFT
1003 000256' 070127 000012 MUL #10.,R1 ; MULTIPLY BY 10
1004 .IFF
1005 ASL R1 ; MULTIPLY BY 2
1006 ADD R1,R0 ; ADD 2X
1007 ASL R1 ; MULTIPLY BY 4
1008 ASL R1 ; MULTIPLY BY 8
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 11-1
DDT.MAC 30-DEC-82 01:45 D.PRIM - GET A PRIMARY
1009 000 .ENDC
1010 000262' 060001 ADD R0,R1 ; ADD IN NEW DIGIT
1011 000264' 010167 000140' MOV R1,D.DECN ; STORE IN DECIMAL NUMBER
1012 000270' 005202 INC R2 ; R2 HAS NUMERIC FLAG
1013 000272' 000746 BR 10$ ; AND TRY AGAIN
1014 000274' 012700 000125 20$: MOV #'U,R0 ; UNDEFINED MESSAGE
1015 000300' 004767 011462 CALL D.TYPE ; DISPLAY IT
1016 000304' 004767 011262 CALL D.TTAB ; TYPE TAB
1017 000310' 000633 BR D.DCD ; PROCESS NEW COMMAND
1018 000312' 120027 000056 30$: CMPB R0,#'. ; DOT FOUND?
1019 000316' 001415 BEQ 60$ ; BRANCH IF SO
1020 000320' 005001 CLR R1 ; BASE OF CHARACTER TABLE
1021 000322' 126100 001461' 40$: CMPB D.LGCH(R1),R0 ; MATCH?
1022 000326' 001416 BEQ 70$ ; YES
1023 000330' 005201 INC R1 ; NEXT CHARACTER
1024 000332' 020127 000067 CMP R1,#D.CLGT ; ANY MORE?
1025 000336' 002771 BLT 40$ ; LOOP IF SO
1026 000340' 005704 50$: TST R4 ; NUMBER ALREADY?
1027 000342' 001300 BNE D.ERR ; ERROR TO START SYMBOL
1028 000344' 004767 001470 CALL D.PTSM ; PUT SYMBOL IN D.SYM
1029 000350' 000717 BR 10$ ; DECODE MORE CHARACTERS
1030 000352' 005702 60$: TST R2 ; NUMBER BEING TYPED?
1031 000354' 001771 BEQ 50$ ; BRANCH IF NOT
1032 000356' 105267 000034' INCB D.USED ; IT IS, MAKE IT DECIMAL
1033 000362' 000712 BR 10$ ; CONTINUE SCANNING
1034 000364' 105767 000053' 70$: TSTB D.ALTF ; ALTMODE FOUND?
1035 000370' 001003 BNE 80$ ; YES, DO IT
1036 000372' 020127 000034 CMP R1,#D.LETR ; IS IT A LETTER?
1037 000376' 002360 BGE 50$ ; YES
1038 000400' 122767 000040 000070' 80$: CMPB #' ,D.SYM ; ANY SYMBOL?
1039 000406' 001423 BEQ 110$ ; NO, RETURN
1040 000410' 022767 020056 000070' CMP #". ,D.SYM ; IS SYMBOL A DOT?
1041 000416' 001004 BNE 90$ ; BRANCH IF NOT
1042 000420' 016704 000214' MOV D.DOT,R4 ; USE VALUE OF D.DOT
1043 000424' 005202 INC R2 ; NOTE THAT IT IS A NUMBER
1044 000426' 000413 BR 110$ ; DO THE REST
1045 000430' 012700 000070' 90$: MOV #D.SYM,R0 ; ADDRESS OF SYMBOL
1046 000434' 004767 000432 CALL D.GTAD ; GET ADDRESS
1047 000440' 020127 000016 CMP R1,#D.COLO ; COLON?
1048 000444' 001411 BEQ 120$ ; RETURN IF SO
1049 000446' 005700 TST R0 ; CHECK SYMBOL ADDRESS
1050 000450' 001410 BEQ 130$ ; BRANCH IF NOT AN ADDRESS
1051 000452' 011004 MOV (R0),R4 ; GET SYMBOL VALUE
1052 000454' 005202 100$: INC R2 ; MARK R2 AS A NUMBER
1053 000456' 105767 000034' 110$: TSTB D.USED ; USE DECIMAL NUMBER?
1054 000462' 001402 BEQ 120$ ; BRANCH IF NOT
1055 000464' 016704 000140' MOV D.DECN,R4 ; USE DECIMAL NUMBER
1056 000470' 000207 120$: RETURN ; RETURN
1057 000472' 012700 000530' 130$: MOV #D.COUS,R0 ; ADDRESS OF OFFSET TABLE
1058 000476' 020027 000770' 140$: CMP R0,#D.ECNT ; END OF LIST?
1059 000502' 103274 BHIS 20$ ; YES, LOSE
1060 000504' 012705 000070' MOV #D.SYM,R5 ; SCAN THE SYMBOL
1061 000510' 012003 MOV (R0)+,R3 ; GET OFFSET OF CHARACTERS
1062 000512' 042703 177400 BIC #^C377,R3 ; TURN OFF EXTRA CRUFT
1063 000516' 120310 CMPB R3,(R0) ; NULL STRING?
1064 000520' 001766 BEQ 140$ ; YES, IGNORE IT
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 11-2
DDT.MAC 30-DEC-82 01:45 D.PRIM - GET A PRIMARY
1065 000522' 126325 000771' 150$: CMPB D.STRS(R3),(R5)+; IS IT A CHARACTER MATCH?
1066 000526' 001363 BNE 140$ ; BRANCH IF NOT
1067 000530' 005203 INC R3 ; NEXT CHARACTER
1068 000532' 120310 CMPB R3,(R0) ; END OF STRING?
1069 000534' 001372 BNE 150$ ; BRANCH IF NOT
1070 000536' 016004 177534 MOV D.TOPS-D.COUS-2(R0),R4 ;GET THE INSTRUCTION-1
1071 000542' 116003 177777 MOVB -1(R0),R3 ; GET LEGALITY BYTE
1072 000546' 120327 000010 CMPB R3,#10 ; IS IT A CONDITION CODE SET/CLEAR?
1073 000552' 001440 BEQ 200$ ; MAY BE
1074 000554' 005204 INC R4 ; FIX INSTRUCTION
1075 000556' 122715 000040 160$: CMPB #' ,(R5) ; BLANK AT END OF SYMBOL?
1076 000562' 001014 BNE 180$ ; NO, HOW ABOUT "B"?
1077 000564' 042703 177774 BIC #^C3,R3 ; STRIP TO MACHINE TYPE
1078 000570' 120367 000035' CMPB R3,D.MACH ; VALID ON THIS MACHINE?
1079 000574' 003237 BGT 20$ ; UNDEFINED SYMBOL
1080 000576' 114003 170$: MOVB -(R0),R3 ; RE-FETCH LEGALITY BYTE
1081 000600' 020127 000004 CMP R1,#D.SPAC ; IS INSTRUCTION TERMINATED WITH SPACE?
1082 000604' 001323 BNE 100$ ; DON'T GET OPERANDS IF NOT
1083 000606' 012702 177776 MOV #-2,R2 ; MARK INSTRUCTION
1084 000612' 000720 BR 100$ ; ALL DONE
1085 000614' 122725 000102 180$: CMPB #'B,(R5)+ ; BYTE INSTRUCTION MUST TERMINATE WITH "B"
1086 000620' 001326 BNE 140$ ; NOT AN INSTRUCTION
1087 000622' 105703 TSTB R3 ; TEST LEGALITY BYTE
1088 000624' 100324 BPL 140$ ; NO
1089 000626' 062704 100000 ADD #100000,R4 ; ADD IN BYTE OFFSET
1090 000632' 103351 BCC 160$ ; AND CONTINUE, UNLESS THAT WAS A SECOND "B"
1091 000634' 000720 BR 140$ ; IN WHICH CASE WE LOSE
1092
1093 000636' 131604 190$: BITB (SP),R4 ; BIT ALREADY ON?
1094 000640' 001015 BNE 220$ ; YES, LOSE
1095 000642' 151604 BISB (SP),R4 ; SET IT
1096 000644' 122625 CMPB (SP)+,(R5)+ ; BUMP SP BY 2, R5 BY 1
1097 000646' 122715 000040 CMPB #' ,(R5) ; SPACE YET?
1098 000652' 001751 BEQ 170$ ; YES, ALL DONE.
1099 000654' 200$: PUSH$S #10 ; SET UP MAGIC BIT
1100 000660' 012703 001400' MOV #D.NZVC+4,R3 ; CHARACTER POINTER
1101 000664' 121543 210$: CMPB (R5),-(R3) ; MATCH?
1102 000666' 001763 BEQ 190$ ; BRANCH IF SO
1103 000670' 106216 ASRB (SP) ; MOVE BIT
1104 000672' 001374 BNE 210$ ; AND LOOP
1105 000674' 220$: POP$S ,1
1106 000676' 000677 BR 140$ ; ELSE NOT THE RIGHT INSTRUCTION
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 12
DDT.MAC 30-DEC-82 01:45 D.PRIM - GET A PRIMARY
1108 ; ROUTINE TO GET AN EXPRESSION (VALUE IN R4, FLAG IN R2, TERMINATOR IN R1)
1109
1110 000700' 105267 000040' D.CEXP: INCB D.INPA ; NOT IN INSTRUCTION
1111 000704' 005067 000204' CLR D.OFST ; START OUT FRESH
1112 000710' 012767 002106' 000136' D.EXPR: MOV #D.ADD,D.OPER ; INITIAL FUNCTION
1113 000716' 004767 177250 10$: CALL D.PRIM ; GET PRIMARY EXPRESSION
1114 000722' 005702 TST R2 ; INSTRUCTION?
1115 000724' 100410 BMI 20$ ; EXIT IF SO
1116 000726' 020127 000002 CMP R1,#D.OPAR ; OPEN PARENTHESIS OR OPERATOR?
1117 000732' 002405 BLT 20$ ; BRANCH IF NEITHER
1118 000734' 001411 BEQ 30$ ; BRANCH IF OPEN PARENTHESIS
1119 000736' 020127 000010 CMP R1,#D.CPAR ; CLOSE PARENTHESIS OR OPERATOR?
1120 000742' 002442 BLT 60$ ; BRANCH IF OPERATOR
1121 000744' 001431 BEQ 40$ ; BRANCH IF CLOSE PARENTHESIS
1122 000746' 105767 000036' 20$: TSTB D.LEVL ; TERMINATOR FOUND...AT UPPER LEVEL?
1123 000752' 001431 BEQ 50$ ; BRANCH IF SO
1124 000754' 000167 177164 JMP D.ERR ; ERROR
1125 000760' 105767 000040' 30$: TSTB D.INPA ; IN AN INSTRUCTION TYPE-IN?
1126 000764' 001024 BNE 50$ ; BRANCH IF SO (INSTRUCTION FORMAT)
1127 000766' 105267 000036' INCB D.LEVL ; GO DOWN TO NEXT PARENTHESIS LEVEL
1128 000772' PUSH$S <D.OFST,D.OPER> ; SAVE TALLY AND OPERATION
1129 001002' 005067 000204' CLR D.OFST ; CLEAR TALLY
1130 001006' 004767 177676 CALL D.EXPR ; RECURSION!
1131 001012' POP$S <D.OPER,D.OFST> ; RESTORE OPERATION and TALLY
1132 001022' 004777 000136' CALL @D.OPER ; COMBINE THEM
1133 001026' 000730 BR D.EXPR ; LOOP
1134 001030' 105367 000036' 40$: DECB D.LEVL ; UP TO HIGHER PARENTHESIS LEVEL
1135 001034' 100414 BMI 70$ ; ERROR IF NONE HIGHER
1136 001036' 004777 000136' 50$: CALL @D.OPER ; DO OPERATION
1137 001042' 016704 000204' MOV D.OFST,R4 ; GET TALLY AS RETURN PARAMETER
1138 001046' 000207 RETURN ; RETURN (POSSIBLY TO SELF)
1139 001050' 004777 000136' 60$: CALL @D.OPER ; DO OPERATION
1140 001054' 006301 ASL R1 ; AND GET
1141 001056' 016167 000000' 000136' MOV D.LGDR(R1),D.OPER ; THE NEXT
1142 001064' 000714 BR 10$ ; LOOP
1143 001066' 000167 177052 70$: JMP D.ERR ; ERROR
1144
1145 001072' D.GTAD: PUSH$S R0 ; SAVE CHARACTER ADDRESS
1146 001074' 004767 012124 CALL D.RD50 ; CONVERT FIRST 3 TO RAD50
1147 001100' 010067 000234' MOV R0,D.RAD1 ; SAVE VALUE
1148 001104' POP$S R0 ; GET CHARACTER ADDRESS
1149 001106' 062700 000003 ADD #3,R0 ; POINT TO LAST 3 CHARACTERS
1150 001112' 004767 012106 CALL D.RD50 ; CONVERT TO RAD50
1151 001116' 010067 000236' MOV R0,D.RAD2 ; STORE IT AWAY
1152 001122' 000167 001266 JMP D.GTAC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 13
DDT.MAC 30-DEC-82 01:45 D.PRIM - GET A PRIMARY
1154 ; ROUTINE TO HANDLE PARAMETERS FOR INSTRUCTION TYPE-IN
1155
1156 001126' 006203 D.GETI: ASR R3 ; PARAMETER CODE
1157 001130' 042703 177741 BIC #^C<17*2>,R3 ; MASK OUT OTHER BITS
1158 001134' PUSH$S R4 ; SAVE OPERATION MASK
1159 001136' 004773 000156' CALL @D.PARG(R3) ; GET PARAMETERS
1160 001142' 052604 BIS (SP)+,R4 ; PUT OPERATION MASK INTO OPERANDS
1161 001144' 012702 000001 MOV #1,R2 ; MARK A GOOD NUMBER
1162 001150' 000207 RETURN ; RETURN
1163
1164 001152' 000207 D.NONE: RETURN ; RETURN
1165
1166 001154' 004767 177520 D.DISP: CALL D.CEXP ; GET EXPRESSION
1167 001160' 166704 000214' SUB D.DOT,R4 ; COMPUTE OFFSET
1168 001164' 006204 ASR R4 ; SHIFT
1169 001166' 005304 DEC R4 ; POINTS TO PROPER WORD
1170 001170' 042704 177400 BIC #^C377,R4 ; CLEAR HIGH BITS
1171 001174' 000207 RETURN ; RETURN
1172
1173 001176' 004767 000040 D.GRSS: CALL D.GR ; GET REGISTER
1174 001202' 004767 000534 CALL D.PSAV ; SAVE PARAMETER
1175 001206' 004767 000074 CALL D.GDD ; GET OTHER PARAMETER
1176 001212' 052604 BIS (SP)+,R4 ; ADD IN REGISTER
1177 001214' 000207 RETURN ; RETURN
1178
1179 001216' 000167 176750 D.GNUM: JMP D.PRIM ; GET NUMBER AND RETURN
1180
1181 001222' 004767 000060 D.GSD: CALL D.GDD ; GET 6-BIT OPERAND
1182 001226' 004767 000510 CALL D.PSAV ; SAVE PARAMETER
1183 001232' 004767 000050 CALL D.GDD ; GET OTHER PARAMETER
1184 001236' 052604 BIS (SP)+,R4 ; ADD IN REGISTER
1185 001240' 000207 RETURN ; RETURN
1186
1187 001242' 004767 176724 D.GR: CALL D.PRIM ; GET PRIMARY
1188 001246' 004767 000520 CALL D.RCHK
1189 001252' 103401 BCS 10$
1190 001254' 000207 RETURN
1191 001256' 000167 176662 10$: JMP D.ERR ; ERROR
1192
1193 001262' 004767 177754 D.GRNN: CALL D.GR ; GET REGISTER
1194 001266' 004767 000450 CALL D.PSAV ; SAVE PARAMETERS
1195 001272' 004767 177656 CALL D.DISP ; GET ADDRESS
1196 001276' 042704 177700 BIC #^C77,R4 ; REDUCE TO 6-BITS
1197 001302' 052604 BIS (SP)+,R4 ; ADD IN REGISTER
1198 001304' 000207 RETURN ; RETURN
1199
1200 001306' 005002 D.GDD: CLR R2 ; NO PARAMETERS YET
1201 001310' 004767 177364 CALL D.CEXP ; GET EXPRESSION
1202 001314' 020127 000002 CMP R1,#D.OPAR ; OPEN PARENTHESIS?
1203 001320' 001425 BEQ 30$ ; BRANCH IF SO
1204 001322' 020127 000001 CMP R1,#D.HASH ; HASH MARK?
1205 001326' 001405 BEQ 10$ ; BRANCH IF SO
1206 001330' 103455 BLO 60$ ; BRANCH IF AT-SIGN
1207 001332' 004767 000434 CALL D.RCHK
1208 001336' 103542 BCS D.NOTR
1209 001340' 000207 RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 13-1
DDT.MAC 30-DEC-82 01:45 D.PRIM - GET A PRIMARY
1210
1211 001342' 004767 177332 10$: CALL D.CEXP ; GET EXPRESSION
1212 001346' 004767 000444 20$: CALL D.NEXP ; NEXT PARAMETER
1213 001352' 166700 000222' SUB D.CAD,R0 ; GET PARAMETER OFFSET
1214 001356' 005060 000174' CLR D.PARO-4(R0) ; NO RELOCATION
1215 001362' 010460 000142' MOV R4,D.PARS-4(R0) ; PUT VALUE IN
1216 001366' 012704 000027 MOV #27,R4 ; IMMEDIATE ADDRESSING
1217 001372' 000207 RETURN ; RETURN
1218 001374' 005702 30$: TST R2 ; "(" FOUND, ANY OFFSET?
1219 001376' 001023 BNE 50$ ; BRANCH IF SO (INDEX ADDRESSING)
1220 001400' 026727 000136' 002114' CMP D.OPER,#D.SUBT ; "-(R)" ?
1221 001406' 001005 BNE 40$ ; BRANCH IF NOT
1222 001410' 004767 177626 CALL D.GR ; GET REGISTER
1223 001414' 062704 000040 ADD #40,R4 ; ADD IN AUTO-DECR OFFSET
1224 001420' 000455 BR 100$ ; SKIP TO COMMAND AND RETURN
1225 001422' 004767 177614 40$: CALL D.GR ; GET REGISTER..."(R)" OR "(R)+"
1226 001426' 004767 000122 CALL 100$ ; SKIP TO NEXT PARAMETER
1227 001432' 020127 000003 CMP R1,#D.ADDS ; PLUS SIGN?
1228 001436' 001026 BNE 70$ ; BRANCH IF NOT
1229 001440' 062704 000020 ADD #20,R4 ; ADD IN AUTO-INCR OFFSET
1230 001444' 000443 BR 100$ ; SKIP TO COMMAND AND RETURN
1231 001446' 004767 177674 50$: CALL 20$ ; PUT PARAMETER IN
1232 001452' 004767 177564 CALL D.GR ; GET REGISTER
1233 001456' 062704 000060 ADD #60,R4 ; ADD IN INDEX OFFSET
1234 001462' 000434 BR 100$ ; SKIP TO COMMAND AND RETURN
1235 001464' 005002 60$: CLR R2 ; "@" FOUND, MARK NO NUMBER FOUND YET
1236 001466' 004767 177206 CALL D.CEXP ; AN "@" WAS FOUND, LOOK TO NEXT
1237 001472' 020127 000001 CMP R1,#D.HASH ; "@#" MEANS ABSOLUTE ADDRESSING
1238 001476' 001455 BEQ 130$ ; BRANCH IF SO
1239 001500' 020127 000002 CMP R1,#D.OPAR ; COULD BE "@(" OR "@X("
1240 001504' 001413 BEQ 90$ ; BRANCH IF EITHER
1241 001506' 004767 000260 CALL D.RCHK
1242 001512' 103403 BCS 80$
1243 001514' 062704 000010 70$: ADD #10,R4 ; ADD IN REG-DEFERRED OFFSET
1244 001520' 000207 RETURN ; THATS ALL...RETURN
1245 001522' 004767 000116 80$: CALL D.NOTR ; PERFORM NORMAL RELOCATION
1246 001526' 012704 000077 MOV #77,R4 ; MARK RELATIVE DEFERRED ADDRESSING
1247 001532' 000207 RETURN ; RETURN
1248 001534' 005702 90$: TST R2 ; ANY NUMBER THERE?
1249 001536' 001413 BEQ 110$ ; BRANCH IF "@("
1250 001540' 004767 177602 CALL 20$ ; GET OFFSET INTO PARAMETER
1251 001544' 004767 177472 CALL D.GR ; NOW GET REGISTER
1252 001550' 062704 000070 ADD #70,R4 ; ADD IN INDEX DEFERRED OFFSET
1253 001554' 100$: PUSH$S R4 ; SAVE VALUE
1254 001556' 004767 176410 CALL D.PRIM ; SKIP TO NEXT COMMAND
1255 001562' POP$S R4 ; RESTORE VALUE
1256 001564' 000207 RETURN ; RETURN
1257 001566' 026727 000136' 002114' 110$: CMP D.OPER,#D.SUBT ; "@-(" ?
1258 001574' 001005 BNE 120$ ; BRANCH IF NOT
1259 001576' 004767 177440 CALL D.GR ; GET REGISTER
1260 001602' 062704 000050 ADD #50,R4 ; ADD IN AUTO-DECR DEFERRED OFFSET
1261 001606' 000762 BR 100$ ; SKIP TO COMMAND AND RETURN
1262 001610' 004767 177426 120$: CALL D.GR ; GET REGISTER
1263 001614' 012700 000053 MOV #'+,R0 ; FORM IS "@(R)+"
1264 001620' 004767 000074 CALL D.GGET ; GET THE PLUS
1265 001624' 062704 000030 ADD #30,R4 ; ADD IN AUTO-INCR DEFERRED OFFSET
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 13-2
DDT.MAC 30-DEC-82 01:45 D.PRIM - GET A PRIMARY
1266 001630' 000751 BR 100$ ; SKIP TO COMMAND AND RETURN
1267 001632' 004767 177504 130$: CALL 10$ ; GET ABSOLUTE ADDRESS
1268 001636' 012704 000037 MOV #37,R4 ; MARK ABSOLUTE MODE
1269 001642' 000207 RETURN ; DONE
1270
1271 001644' 004767 000146 D.NOTR: CALL D.NEXP ; POINT TO NEXT PARAMETER
1272 001650' PUSH$S R0 ; SAVE RELOCATION
1273 001652' 166700 000222' SUB D.CAD,R0 ; GET PARAMETER OFFSET
1274 001656' POP$S D.PARO-4(R0) ; PUT IN OFFSET
1275 001662' 010460 000142' MOV R4,D.PARS-4(R0) ; PUT VALUE IN
1276 001666' 012704 000067 MOV #67,R4 ; RELATIVE PC ADDRESSING
1277 001672' 000207 RETURN ; DONE
1278
1279 001674' 004767 177406 D.GDDR: CALL D.GDD ; GET 6-BIT-OPERAND
1280 001700' PUSH$S R4 ; SAVE OPERAND
1281 001702' 004767 177334 CALL D.GR ; GET REGISTER
1282 001706' 000304 SWAB R4 ; SHIFT
1283 001710' 006204 ASR R4 ; INTO
1284 001712' 006204 ASR R4 ; HIGH PLACE
1285 001714' 052604 BIS (SP)+,R4 ; ADD IN REGISTER
1286 001716' 000207 RETURN ; RETURN
1287
1288 001720' D.GGET: PUSH$S R0 ; SAVE WHAT MUST BE READ
1289 001722' 004767 010162 CALL D.GET ; GET LETTER
1290 001726' 020016 CMP R0,(SP) ; EQUAL?
1291 001730' 001002 BNE 10$ ; YES, RETURN
1292 001732' POP$S ,1 ; FIX STACK
1293 001734' 000207 RETURN ; RETURN
1294 001736' 000167 176202 10$: JMP D.ERR ; ERROR
1295
1296 001742' D.PSAV: PUSH$S (SP) ; PUSH RETURN ADDRESS DOWN
1297 001744' 000304 SWAB R4 ; MOVE
1298 001746' 006204 ASR R4 ; TO
1299 001750' 006204 ASR R4 ; HIGH POSITION
1300 001752' 010466 000002 MOV R4,2(SP) ; PUT PARAMETERS IN
1301 001756' 020127 000022 CMP R1,#D.COMM ; COMMA IN-BETWEEN?
1302 001762' 001001 BNE 10$ ; ERROR IF NOT
1303 001764' 000207 RETURN ; RETURN
1304 001766' 000167 176152 10$: JMP D.ERR ; ERROR
1305
1306 001772' 020427 177700 D.RCHK: CMP R4,#177700
1307 001776' 103406 BLO 90$
1308 002000' 022704 177707 CMP #177707,R4
1309 002004' 103403 BLO 90$
1310 002006' 162704 177700 SUB #177700,R4
1311 002012' 000241 CLC
1312 002014' 000207 90$: RETURN
1313
1314 002016' 016700 000216' D.NEXP: MOV D.CADC,R0 ; GET CAD COPY
1315 002022' 062700 000002 ADD #2,R0 ; BUMP TO NEXT
1316 002026' 010067 000216' MOV R0,D.CADC ; RESTORE NEW VALUE
1317 002032' 062700 000002 ADD #2,R0 ; INCREMENT AGAIN
1318 002036' 000207 RETURN ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 14
DDT.MAC 30-DEC-82 01:45 D.PRIM - GET A PRIMARY
1320 ; SYMBOL MANIPULATION SUBROUTINES
1321
1322 002040' 016701 000244' D.PTSM: MOV D.POS,R1 ; GET POSITION ADDRESS
1323 002044' 020127 000102' CMP R1,#D.SYM+D.SYML; NO MORE ROOM?
1324 002050' 103003 BHIS 10$ ; EXIT IF SO
1325 002052' 110021 MOVB R0,(R1)+ ; PUT CHARACTER IN
1326 002054' 010167 000244' MOV R1,D.POS ; RESTORE POINTER
1327 002060' 000207 10$: RETURN ; RETURN
1328
1329 002062' 012700 000102' D.CLSM: MOV #D.SYM+D.SYML,R0
1330 002066' 112740 000040 D.CLS3: MOVB #' ,-(R0)
1331 002072' 020027 000070' CMP R0,#D.SYM
1332 002076' 101373 BHI D.CLS3
1333 002100' 010067 000244' MOV R0,D.POS
1334 002104' 000207 RETURN ; RETURN
1335
1336 ; ADDITION, SUBTRACTION, MULTIPLICATION, DIVISION FOR DECODER
1337
1338 002106' 060467 000204' D.ADD: ADD R4,D.OFST ; ADD OPERANDS
1339 002112' 000207 RETURN ; RETURN
1340 002114' 160467 000204' D.SUBT: SUB R4,D.OFST ; SUBTRACT OPERANDS
1341 002120' 000207 RETURN ; RETURN
1342 002122' D.MULT:
1343 001 .IF DF D.MCB
1344 002122' PUSH$S R1
1345 002124' 016701 000204' MOV D.OFST,R1
1346 002130' 070104 MUL R4,R1
1347 002132' 010167 000204' MOV R1,D.OFST
1348 002136' POP$S R1
1349 .IFF
1350 CLR R0 ; MULTIPLY THEM
1351 PUSH$S #16. ; LOOPER
1352 10$: ASR R4 ; GET BOTTOM BIT
1353 BCC 20$ ; SKIP IF OFF
1354 ADD D.OFST,R0 ; ADD IN OPERAND
1355 20$: ASL D.OFST ; SHIFT OPERAND
1356 DEC (SP) ; MORE TO LOOP?
1357 BGT 10$ ; LOOP IF SO
1358 MOV R0,D.OFST ; RESULT IN D.OFST
1359 POP$S ,1 ; FIX STACK
1360 .IFTF
1361 002140' 000207 RETURN ; RETURN
1362 002142' D.DIV: PUSH$S R1 ; SAVE R1
1363 .IFT
1364 002144' 016701 000204' MOV D.OFST,R1 ; GET OPERAND
1365 002150' 006700 SXT R0
1366 002152' 071004 DIV R4,R0
1367 .IFF
1368 MOV D.OFST,R0 ; GET OPERAND
1369 MOV R4,R2 ; GET OTHER OPERAND
1370 CALL D.DIVD ; DIVIDE THEM
1371 000 .ENDC
1372 002154' 010067 000204' MOV R0,D.OFST ; GET RESULT
1373 002160' POP$S R1 ; RESTORE R1
1374 002162' 000207 RETURN ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 15
DDT.MAC 30-DEC-82 01:45 D.COLN - DEFINE SYMBOL
1376 .SBTTL D.COLN - Define symbol
1377 ;++
1378 ; FUNCTIONAL DESCRIPTION:
1379 ; None
1380 ;
1381 ; CALLING SEQUENCE:
1382 ; CALL D.COLN
1383 ;
1384 ; INPUT PARAMETERS:
1385 ; None
1386 ;
1387 ; IMPLICIT INPUTS:
1388 ; None
1389 ;
1390 ; OUTPUT PARAMETERS:
1391 ; None
1392 ;
1393 ; IMPLICIT OUTPUTS:
1394 ; None
1395 ;
1396 ; CONDITION CODES:
1397 ; None
1398 ;
1399 ; SIDE EFFECTS:
1400 ; None
1401 ;--
1402
1403 002164' .PSECT $CODE$,I
1404 002164' 126727 000070' 000040 D.COLN: CMPB D.SYM,#' ; NULL SYMBOL?
1405 002172' 001444 BEQ 40$ ; ERROR IF SO
1406 002174' 016704 000214' MOV D.DOT,R4 ; ASSUME DOT ADDRESS
1407 002200' 105767 000037' TSTB D.FWAF ; REAL VALUE GIVEN?
1408 002204' 001402 BEQ 10$ ; BRANCH IF NOT
1409 002206' 016704 000246' MOV D.FWA,R4 ; GET REAL VALUE
1410 002212' 005700 10$: TST R0 ; IN SYMBOL TABLE?
1411 002214' 001017 BNE 20$ ; BRANCH IF SO
1412 002216' PUSH$S <D.RAD1,D.RAD2> ; SAVE RAD50 OF NAME
1413 002226' 005067 000234' CLR D.RAD1 ; ASSUME NULL RAD50 LABEL
1414 002232' 005067 000236' CLR D.RAD2 ; IN BOTH HALVES
1415 002236' 004767 000152 CALL D.GTAC ; LOOK IT UP
1416 002242' 005700 TST R0 ; FOUND?
1417 002244' 001417 BEQ 40$ ; ERROR IF NOT
1418 002246' POP$S <-(R0),-(R0)> ; FILL LABEL IN BY SETTING BOTH WORDS
1419 002252' 022020 CMP (R0)+,(R0)+ ; NOW FIX POSITION
1420 002254' 010410 20$: MOV R4,(R0) ; AND SET VALUE
1421 002256' 010067 000240' MOV R0,D.LASC ; SET LAST COLONED WORD
1422 002262' 016701 000242' MOV D.FENC,R1 ; GET FENCE
1423 002266' 020001 CMP R0,R1 ; BEHIND FENCE?
1424 002270' 101004 BHI 30$ ; DONE IF NOT
1425 002272' 004767 000360 CALL D.SWAP ; SWAP SYMBOLS
1426 002276' 010167 000242' MOV R1,D.FENC ; STORE IN FENCE
1427 002302' 000207 30$: RETURN ; RETURN
1428 002304' 000167 175634 40$: JMP D.ERR ; ERROR
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 16
DDT.MAC 30-DEC-82 01:45 D.KILL - KILL SYMBOL
1430 .SBTTL D.KILL - Kill symbol
1431 ;++
1432 ; FUNCTIONAL DESCRIPTION:
1433 ; None
1434 ;
1435 ; CALLING SEQUENCE:
1436 ; CALL D.KILL
1437 ;
1438 ; INPUT PARAMETERS:
1439 ; None
1440 ;
1441 ; IMPLICIT INPUTS:
1442 ; None
1443 ;
1444 ; OUTPUT PARAMETERS:
1445 ; None
1446 ;
1447 ; IMPLICIT OUTPUTS:
1448 ; None
1449 ;
1450 ; CONDITION CODES:
1451 ; None
1452 ;
1453 ; SIDE EFFECTS:
1454 ; None
1455 ;--
1456
1457 002310' .PSECT $CODE$,I
1458 002310' 016700 000240' D.KILL: MOV D.LASC,R0 ; Get last coloned symbol
1459 002314' 001407 BEQ 10$ ; (if there is one)
1460 002316' EXTEND
1461 002324' 122767 000040 000070' CMPB #' ,D.SYM ; and if no symbol specified
1462 002332' 001404 BEQ 12$ ; then
1463 002334' 004767 000054 10$: CALL D.GTAC ; GET ADDRESS OF SYMBOL
1464 002340' 005700 TST R0 ; ANY SYMBOL?
1465 002342' 001022 BNE 100$ ; If not,
1466 002344' 126727 000053' 000001 12$: CMPB D.ALTF,#1 ; HOW MANY ALTMODES?
1467 002352' 003012 BGT 20$ ; BRANCH IF 2
1468 002354' 016701 000242' MOV D.FENC,R1 ; GET FENCE
1469 002360' 020001 CMP R0,R1 ; SYMBOL BEHIND FENCE?
1470 002362' 103411 BLO 90$ ; BRANCH IF ALREADY KILLED
1471 002364' 062701 000006 ADD #6,R1 ; PUSH UP FENCE
1472 002370' 010167 000242' MOV R1,D.FENC ; AND STORE IT
1473 002374' 000167 000256 JMP D.SWAP ; SWAP SYMBOLS AND RETURN
1474 002400' 005010 20$: CLR (R0) ; CLEAR ADDRESS
1475 002402' 005040 CLR -(R0) ; PUT IN NULL SYMBOL
1476 002404' 005040 CLR -(R0) ; IN BOTH WORDS
1477 002406' 000207 90$: RETURN ; RETURN
1478
1479 002410' 000167 175530 100$: JMP D.ERR ; ERROR
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 17
DDT.MAC 30-DEC-82 01:45 D.KILL - KILL SYMBOL
1481 ; ROUTINES TO HANDLE THE SYMBOL TABLE
1482
1483 002414' D.GTAC: EXTEND
1484 002422' 012700 000000' MOV #S.SMDT,R0 ; ADDRESS OF SYMBOL TABLE
1485 002426' 004767 000016 CALL 110$ ; Check for symbol
1486 002432' 103001 BCC 90$ ; and if not found
1487 002434' 005000 CLR R0 ; then return failure indication.
1488 002436' 000207 90$: RETURN
1489
1490 002440' 022720 177777 100$: CMP #-1,(R0)+
1491 002444' 001411 BEQ 120$
1492 002446' 005720 TST (R0)+
1493 002450' 026720 000234' 110$: CMP D.RAD1,(R0)+ ; YES, HOW ABOUT THE FIRST THREE?
1494 002454' 001371 BNE 100$ ; NO, GO TO NEXT SYMBOL
1495 002456' 026710 000236' CMP D.RAD2,(R0) ; DO SECOND THREE CHARACTERS MATCH?
1496 002462' 001366 BNE 100$ ; NO, GO TO NEXT SYMBOL
1497 002464' 005720 TST (R0)+
1498 002466' 000207 RETURN
1499 002470' 000261 120$: SEC
1500 002472' 000207 RETURN
1501
1502 002474' 016702 000242' D.GTSM: MOV D.FENC,R2 ; FIND CLOSEST SYMBOL <= R0
1503 002500' 016701 000206' MOV D.RFNL,R1 ; WHICH IS ALSO >= R0-D.RFNL
1504 002504' D.GTSS: EXTEND
1505 002512' PUSH$S #0 ; SPACE FOR TEMPORARIES
1506 002514' 000410 BR 30$
1507 002516' 005722 10$: TST (R2)+ ; Bypass symbol value
1508 002520' 000406 BR 30$ ; and go on to next.
1509 002522' 162203 20$: SUB (R2)+,R3 ; OBTAIN DIFERENCE
1510 002524' 103404 BLO 30$ ; IF SYMBOL HIGHER THAN R0, NO GO
1511 002526' 160103 SUB R1,R3 ; ARE WE CLOSER THAN BEFORE?
1512 002530' 101002 BHI 30$ ; NO, FURTHER
1513 002532' 010216 MOV R2,(SP) ; SAVE POINTER TO SYMBOL
1514 002534' 060301 ADD R3,R1 ; SAVE DIFFERENCE
1515 002536' 010003 30$: MOV R0,R3 ; SET A TEMPORARY
1516 002540' 022222 CMP (R2)+,(R2)+ ; SKIP OVER THE NAME
1517 002542' 001367 BNE 20$ ; AND LOOK FOR ONE CLOSER
1518 002544' 005762 177774 TST -4(R2) ; If an undefined symbol
1519 002550' 001762 BEQ 10$ ; then skip over.
1520 002552' 022762 177777 177774 CMP #-1,-4(R2) ; AT END OF TABLE?
1521 002560' 001360 BNE 20$ ; NO, KEEP GOING
1522 002562' POP$S R1 ; GET SYMBOL PTR
1523 002564' 001432 BEQ 90$ ; BRANCH IF NOT FOUND.
1524 002566' 022741 000400 CMP #400,-(R1) ; IGNORE SMALL SYMBOLS
1525 002572' 103403 BLO 70$
1526 002574' 026701 000242' CMP D.FENC,R1
1527 002600' 103424 BLO 90$
1528 002602' 161100 70$: SUB (R1),R0 ; RECOMPUTE DIFFERENCE
1529 002604' PUSH$S <R0,-(R1)> ; AND SAVE IT AND LAST THREE CHARACTERS
1530 002610' 014100 MOV -(R1),R0 ; GET FIRST THREE
1531 002612' 012701 000070' MOV #D.SYM,R1 ; ADDRESS TO PUT CHARACTERS
1532 002616' 004767 010466 CALL D.CHAR ; CONVERT TO ASCII
1533 002622' POP$S R0 ; GET FIRST RAD50 WORD
1534 002624' 004767 010460 CALL D.CHAR ; CONVERT TO ASCII
1535 002630' 122741 000040 80$: CMPB #' ,-(R1)
1536 002634' 001775 BEQ 80$
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 17-1
DDT.MAC 30-DEC-82 01:45 D.KILL - KILL SYMBOL
1537 002636' 105061 000001 CLRB 1(R1)
1538 002642' 012701 000070' MOV #D.SYM,R1
1539 002646' POP$S R0 ; RESTORE DIFFERENCE
1540 002650' 000207 RETURN ; RETURN
1541
1542 002652' 005001 90$: CLR R1 ; NOT FOUND...MARK IT SO
1543 002654' 000207 RETURN ; RETURN
1544
1545 ; MANIPULATION OF THE SYMBOL TABLE
1546 002656' 012702 000003 D.SWAP: MOV #3,R2 ; COUNTER
1547 002662' 10$: PUSH$S -(R1) ; GET WORD
1548 002664' 011011 MOV (R0),(R1) ; PUT OTHER WORD IN
1549 002666' POP$S (R0) ; AND FINISH SWAP
1550 002670' 005740 TST -(R0) ; MOVE WORD
1551 002672' 077205 SOB R2,10$ ; LOOP IF MORE
1552 002674' 000207 RETURN ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 18
DDT.MAC 30-DEC-82 01:45 D.ALTM - PROCESS ALTMODE
1554 .SBTTL D.ALTM - Process altmode
1555 ;++
1556 ; FUNCTIONAL DESCRIPTION:
1557 ; None
1558 ;
1559 ; CALLING SEQUENCE:
1560 ; CALL D.ALTM
1561 ;
1562 ; INPUT PARAMETERS:
1563 ; None
1564 ;
1565 ; IMPLICIT INPUTS:
1566 ; None
1567 ;
1568 ; OUTPUT PARAMETERS:
1569 ; None
1570 ;
1571 ; IMPLICIT OUTPUTS:
1572 ; None
1573 ;
1574 ; CONDITION CODES:
1575 ; None
1576 ;
1577 ; SIDE EFFECTS:
1578 ; None
1579 ;--
1580
1581 002676' .PSECT $CODE$,I
1582 002676' 105767 000053' D.ALTM: TSTB D.ALTF ; ALREADY AN ALTMODE TYPED?
1583 002702' 001004 BNE 10$ ; BRANCH IF SO
1584 002704' 010267 000142' MOV R2,D.SVR2 ; AN ALTMODE HAS BEEN RECEIVED
1585 002710' 010467 000144' MOV R4,D.SVR4 ; NUMERIC FLAG TO D.SVR2, CONTENTS TO D.SVR4
1586 002714' 005002 10$: CLR R2 ; NO ARGS TYPED YET
1587 002716' 005067 000204' CLR D.OFST ; CLEAR OFFSET
1588 002722' 105267 000053' INCB D.ALTF ; COUNT NUMBER OF ALTMODES
1589 002726' 000167 175124 JMP D.DCD1 ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 19
DDT.MAC 30-DEC-82 01:45 D.BYT - OPEN BYTE
1591 .SBTTL D.BYT - Open byte
1592 ;++
1593 ; FUNCTIONAL DESCRIPTION:
1594 ; None
1595 ;
1596 ; CALLING SEQUENCE:
1597 ; CALL D.BYT
1598 ;
1599 ; INPUT PARAMETERS:
1600 ; None
1601 ;
1602 ; IMPLICIT INPUTS:
1603 ; None
1604 ;
1605 ; OUTPUT PARAMETERS:
1606 ; None
1607 ;
1608 ; IMPLICIT OUTPUTS:
1609 ; None
1610 ;
1611 ; CONDITION CODES:
1612 ; None
1613 ;
1614 ; SIDE EFFECTS:
1615 ; None
1616 ;--
1617
1618 002732' .PSECT $CODE$,I
1619 002732' 004767 000010 D.BYT: CALL D.SBYT ; Set for byte display.
1620 002736' 016767 000114' 000134' MOV D.CURM,D.OMOD ; TEMP COPY OF ROUTINE ADDRESS
1621 002744' 000424 BR D.OPNW ; OPEN WORD
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 20
DDT.MAC 30-DEC-82 01:45 D.SBYT - SET FOR BYTE DISPLAY
1623 .SBTTL D.SBYT - Set for Byte Display
1624 ;++
1625 ; FUNCTIONAL DESCRIPTION:
1626 ; None
1627 ;
1628 ; CALLING SEQUENCE:
1629 ; CALL D.SBYT
1630 ;
1631 ; INPUT PARAMETERS:
1632 ; None
1633 ;
1634 ; IMPLICIT INPUTS:
1635 ; None
1636 ;
1637 ; OUTPUT PARAMETERS:
1638 ; None
1639 ;
1640 ; IMPLICIT OUTPUTS:
1641 ; None
1642 ;
1643 ; CONDITION CODES:
1644 ; None
1645 ;
1646 ; SIDE EFFECTS:
1647 ; None
1648 ;--
1649
1650 002746' .PSECT $CODE$,I
1651 002746' 012767 000001 000120' D.SBYT: MOV #1,D.BW ; Set byte mode
1652 002754' 112767 000134 000032' MOVB #'\,D.CDSP
1653 002762' 000207 RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 21
DDT.MAC 30-DEC-82 01:45 D.WRD - OPEN WORD
1655 .SBTTL D.WRD - Open word
1656 ;++
1657 ; FUNCTIONAL DESCRIPTION:
1658 ; None
1659 ;
1660 ; CALLING SEQUENCE:
1661 ; CALL D.WRD
1662 ;
1663 ; INPUT PARAMETERS:
1664 ; None
1665 ;
1666 ; IMPLICIT INPUTS:
1667 ; None
1668 ;
1669 ; OUTPUT PARAMETERS:
1670 ; None
1671 ;
1672 ; IMPLICIT OUTPUTS:
1673 ; None
1674 ;
1675 ; CONDITION CODES:
1676 ; None
1677 ;
1678 ; SIDE EFFECTS:
1679 ; None
1680 ;--
1681
1682 002764' .PSECT $CODE$,I
1683 002764' 004767 000010 D.WRD: CALL D.SWRD ; Set for word display.
1684 002770' 016767 000114' 000134' MOV D.CURM,D.OMOD ; TEMP COPY OF ROUTINE ADDRESS
1685 002776' 000407 BR D.OPNW ; OPEN WORD
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 22
DDT.MAC 30-DEC-82 01:45 D.SWRD - SET FOR WORD DISPLAY
1687 .SBTTL D.SWRD - Set for Word Display
1688 ;++
1689 ; FUNCTIONAL DESCRIPTION:
1690 ; None
1691 ;
1692 ; CALLING SEQUENCE:
1693 ; CALL D.SWRD
1694 ;
1695 ; INPUT PARAMETERS:
1696 ; None
1697 ;
1698 ; IMPLICIT INPUTS:
1699 ; None
1700 ;
1701 ; OUTPUT PARAMETERS:
1702 ; None
1703 ;
1704 ; IMPLICIT OUTPUTS:
1705 ; None
1706 ;
1707 ; CONDITION CODES:
1708 ; None
1709 ;
1710 ; SIDE EFFECTS:
1711 ; None
1712 ;--
1713
1714 003000' .PSECT $CODE$,I
1715 003000' 012767 000002 000120' D.SWRD: MOV #2,D.BW ; Set fullword mode.
1716 003006' 112767 000057 000032' MOVB #'/,D.CDSP
1717 003014' 000207 RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 23
DDT.MAC 30-DEC-82 01:45 D.OPNW - OPEN WORD
1719 .SBTTL D.OPNW - Open word
1720 ;++
1721 ; FUNCTIONAL DESCRIPTION:
1722 ; None
1723 ;
1724 ; CALLING SEQUENCE:
1725 ; CALL D.OPNW
1726 ;
1727 ; INPUT PARAMETERS:
1728 ; None
1729 ;
1730 ; IMPLICIT INPUTS:
1731 ; None
1732 ;
1733 ; OUTPUT PARAMETERS:
1734 ; None
1735 ;
1736 ; IMPLICIT OUTPUTS:
1737 ; None
1738 ;
1739 ; CONDITION CODES:
1740 ; None
1741 ;
1742 ; SIDE EFFECTS:
1743 ; None
1744 ;--
1745
1746 003016' .PSECT $CODE$,I
1747 003016' 005702 D.OPNW: TST R2 ; NUMBER THERE?
1748 003020' 001403 BEQ 10$ ; IF NOT,
1749 003022' 010467 000214' MOV R4,D.DOT ; SET DOT
1750 003026' 000402 BR 20$
1751 003030' 016704 000210' 10$: MOV D.LASV,R4 ; GET LAST ADDRESS
1752 003034' 010467 000222' 20$: MOV R4,D.CAD ; SET CURRENT ADDRESS
1753 003040' 000177 000134' JMP @D.OMOD ; TYPE WORD AND RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 24
DDT.MAC 30-DEC-82 01:45 D.SEMI - RETYPE WORD
1755 .SBTTL D.SEMI - Retype word
1756 ;++
1757 ; FUNCTIONAL DESCRIPTION:
1758 ; None
1759 ;
1760 ; CALLING SEQUENCE:
1761 ; CALL D.SEMI
1762 ;
1763 ; INPUT PARAMETERS:
1764 ; None
1765 ;
1766 ; IMPLICIT INPUTS:
1767 ; None
1768 ;
1769 ; OUTPUT PARAMETERS:
1770 ; None
1771 ;
1772 ; IMPLICIT OUTPUTS:
1773 ; None
1774 ;
1775 ; CONDITION CODES:
1776 ; None
1777 ;
1778 ; SIDE EFFECTS:
1779 ; None
1780 ;--
1781
1782 003044' .PSECT $CODE$,I
1783 003044' 000177 000134' D.SEMI: JMP @D.OMOD ; TYPE WORD AND RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 25
DDT.MAC 30-DEC-82 01:45 D.ORAB - OPEN INDIRECT
1785 .SBTTL D.ORAB - Open indirect
1786 ;++
1787 ; FUNCTIONAL DESCRIPTION:
1788 ; None
1789 ;
1790 ; CALLING SEQUENCE:
1791 ; CALL D.ORAB
1792 ;
1793 ; INPUT PARAMETERS:
1794 ; None
1795 ;
1796 ; IMPLICIT INPUTS:
1797 ; None
1798 ;
1799 ; OUTPUT PARAMETERS:
1800 ; None
1801 ;
1802 ; IMPLICIT OUTPUTS:
1803 ; None
1804 ;
1805 ; CONDITION CODES:
1806 ; None
1807 ;
1808 ; SIDE EFFECTS:
1809 ; None
1810 ;--
1811
1812 003050' .PSECT $CODE$,I
1813 003050' 004767 001434 D.ORAB: CALL D.CLSE ; CLOSE WORD
1814 003054' 016767 000210' 000214' MOV D.LASV,D.DOT ; INDIRECT REFERENCE
1815 003062' 000427 BR D.OP2 ; OPEN IT AND RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 26
DDT.MAC 30-DEC-82 01:45 D.EXCL - OPEN WORD SILENTLY
1817 .SBTTL D.EXCL - Open word silently
1818 ;++
1819 ; FUNCTIONAL DESCRIPTION:
1820 ; None
1821 ;
1822 ; CALLING SEQUENCE:
1823 ; CALL D.EXCL
1824 ;
1825 ; INPUT PARAMETERS:
1826 ; None
1827 ;
1828 ; IMPLICIT INPUTS:
1829 ; None
1830 ;
1831 ; OUTPUT PARAMETERS:
1832 ; None
1833 ;
1834 ; IMPLICIT OUTPUTS:
1835 ; None
1836 ;
1837 ; CONDITION CODES:
1838 ; None
1839 ;
1840 ; SIDE EFFECTS:
1841 ; None
1842 ;--
1843
1844 003064' .PSECT $CODE$,I
1845 003064' 012767 010122' 000134' D.EXCL: MOV #D.RTS,D.OMOD ; NULL ROUTINE FOR TYPING
1846 003072' 000751 BR D.OPNW ; OPEN WORD
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 27
DDT.MAC 30-DEC-82 01:45 D.OPNX - OPEN NEXT WORD
1848 .SBTTL D.OPNX - Open next word
1849 ;++
1850 ; FUNCTIONAL DESCRIPTION:
1851 ; None
1852 ;
1853 ; CALLING SEQUENCE:
1854 ; CALL D.OPNX
1855 ;
1856 ; INPUT PARAMETERS:
1857 ; None
1858 ;
1859 ; IMPLICIT INPUTS:
1860 ; None
1861 ;
1862 ; OUTPUT PARAMETERS:
1863 ; None
1864 ;
1865 ; IMPLICIT OUTPUTS:
1866 ; None
1867 ;
1868 ; CONDITION CODES:
1869 ; None
1870 ;
1871 ; SIDE EFFECTS:
1872 ; None
1873 ;--
1874
1875 003074' .PSECT $CODE$,I
1876 003074' 004767 001410 D.OPNX: CALL D.CLSE ; CLOSE WORD
1877 003100' 026727 000214' 177700 CMP D.DOT,#177700
1878 003106' 103407 BLO 10$
1879 003110' 026727 000214' 177707 CMP D.DOT,#177707
1880 003116' 101003 BHI 10$
1881 003120' 005267 000214' INC D.DOT
1882 003124' 000406 BR D.OP2
1883 003126' 066767 000120' 000214' 10$: ADD D.BW,D.DOT ; ADD IN BYTE/WORD INCREMENT
1884 003134' 066767 000112' 000214' ADD D.LFIN,D.DOT ; ADD IN LINE-FEED INCREMENT
1885 003142' 004767 006462 D.OP2: CALL D.CRLF ; TYPE CRLF
1886 003146' 016700 000214' D.OP3: MOV D.DOT,R0 ; GET WORD
1887 003152' 004767 004542 CALL D.RFND ; TYPE ADDRESS
1888 003156' 116700 000032' MOVB D.CDSP,R0 ; SLASH
1889 003162' 004767 006600 CALL D.TYPE ; TYPE IT
1890 003166' 016767 000214' 000222' MOV D.DOT,D.CAD ; SET CURRENT ADDRESS
1891 003174' 000177 000134' JMP @D.OMOD ; TYPE WORD AND RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 28
DDT.MAC 30-DEC-82 01:45 D.OPBR - OPEN WORD AS NUMERIC
1893 .SBTTL D.OPBR - Open word as numeric
1894 ;++
1895 ; FUNCTIONAL DESCRIPTION:
1896 ; None
1897 ;
1898 ; CALLING SEQUENCE:
1899 ; CALL D.OPBR
1900 ;
1901 ; INPUT PARAMETERS:
1902 ; None
1903 ;
1904 ; IMPLICIT INPUTS:
1905 ; None
1906 ;
1907 ; OUTPUT PARAMETERS:
1908 ; None
1909 ;
1910 ; IMPLICIT OUTPUTS:
1911 ; None
1912 ;
1913 ; CONDITION CODES:
1914 ; None
1915 ;
1916 ; SIDE EFFECTS:
1917 ; None
1918 ;--
1919
1920 003200' .PSECT $CODE$,I
1921 003200' 004767 177574 D.OPBR: CALL D.SWRD ; Set word mode.
1922 003204' 012767 010020' 000134' MOV #D.CADV,D.OMOD ; NUMBER ROUTINE
1923 003212' 000701 BR D.OPNW ; DO ROUTINE
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 29
DDT.MAC 30-DEC-82 01:45 D.CLBR - OPEN WORD AS INSTRUCTION
1925 .SBTTL D.CLBR - Open word as instruction
1926 ;++
1927 ; FUNCTIONAL DESCRIPTION:
1928 ; None
1929 ;
1930 ; CALLING SEQUENCE:
1931 ; CALL D.CLBR
1932 ;
1933 ; INPUT PARAMETERS:
1934 ; None
1935 ;
1936 ; IMPLICIT INPUTS:
1937 ; None
1938 ;
1939 ; OUTPUT PARAMETERS:
1940 ; None
1941 ;
1942 ; IMPLICIT OUTPUTS:
1943 ; None
1944 ;
1945 ; CONDITION CODES:
1946 ; None
1947 ;
1948 ; SIDE EFFECTS:
1949 ; None
1950 ;--
1951
1952 003214' .PSECT $CODE$,I
1953 003214' 004767 177560 D.CLBR: CALL D.SWRD ; Set word display.
1954 003220' 012767 010334' 000134' MOV #D.INST,D.OMOD ; INSTRUCTION ROUTINE
1955 003226' 000673 BR D.OPNW ; DO IT
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 30
DDT.MAC 30-DEC-82 01:45 D.BACK - OPEN PREVIOUS WORD
1957 .SBTTL D.BACK - Open previous word
1958 ;++
1959 ; FUNCTIONAL DESCRIPTION:
1960 ; None
1961 ;
1962 ; CALLING SEQUENCE:
1963 ; CALL D.BACK
1964 ;
1965 ; INPUT PARAMETERS:
1966 ; None
1967 ;
1968 ; IMPLICIT INPUTS:
1969 ; None
1970 ;
1971 ; OUTPUT PARAMETERS:
1972 ; None
1973 ;
1974 ; IMPLICIT OUTPUTS:
1975 ; None
1976 ;
1977 ; CONDITION CODES:
1978 ; None
1979 ;
1980 ; SIDE EFFECTS:
1981 ; None
1982 ;--
1983
1984 003230' .PSECT $CODE$,I
1985 003230' 004767 001254 D.BACK: CALL D.CLSE ; CLOSE WORD
1986 003234' 026727 000214' 177700 CMP D.DOT,#177700
1987 003242' 103404 BLO 10$
1988 003244' 026727 000214' 177710 CMP D.DOT,#177710
1989 003252' 101404 BLOS 20$
1990 003254' 166767 000120' 000214' 10$: SUB D.BW,D.DOT ; SUBTRACT BYTE/WORD INCREMENT
1991 003262' 000727 BR D.OP2 ; OPEN WORD
1992 003264' 005367 000214' 20$: DEC D.DOT ; Back up a register
1993 003270' 000724 BR D.OP2 ; and open it.
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 31
DDT.MAC 30-DEC-82 01:45 D.ORPC - TYPE WORD SYMBOLICALLY
1995 .SBTTL D.ORPC - Type word symbolically
1996 ;++
1997 ; FUNCTIONAL DESCRIPTION:
1998 ; None
1999 ;
2000 ; CALLING SEQUENCE:
2001 ; CALL D.ORPC
2002 ;
2003 ; INPUT PARAMETERS:
2004 ; None
2005 ;
2006 ; IMPLICIT INPUTS:
2007 ; None
2008 ;
2009 ; OUTPUT PARAMETERS:
2010 ; None
2011 ;
2012 ; IMPLICIT OUTPUTS:
2013 ; None
2014 ;
2015 ; CONDITION CODES:
2016 ; None
2017 ;
2018 ; SIDE EFFECTS:
2019 ; None
2020 ;--
2021
2022 003272' .PSECT $CODE$,I
2023 003272' 005067 000112' D.ORPC: CLR D.LFIN ; NO LINE-FEED INCREMENT
2024 003276' 105767 000053' TSTB D.ALTF ; IS IT AN $_ ?
2025 003302' 001404 BEQ 10$ ; BRANCH IF NOT
2026 003304' 016700 000212' MOV D.LASW,R0 ; GET LAST TYPED WORD
2027 003310' 000167 004404 JMP D.RFND ; TYPE SYMBOLICALLY AND RETURN
2028 003314' 000167 005014 10$: JMP D.INST ; TYPE INSTRUCTION AND RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 32
DDT.MAC 30-DEC-82 01:45 D.EQAL - TYPE WORD AS NUMBER
2030 .SBTTL D.EQAL - Type word as number
2031 ;++
2032 ; FUNCTIONAL DESCRIPTION:
2033 ; None
2034 ;
2035 ; CALLING SEQUENCE:
2036 ; CALL D.EQAL
2037 ;
2038 ; INPUT PARAMETERS:
2039 ; None
2040 ;
2041 ; IMPLICIT INPUTS:
2042 ; None
2043 ;
2044 ; OUTPUT PARAMETERS:
2045 ; None
2046 ;
2047 ; IMPLICIT OUTPUTS:
2048 ; None
2049 ;
2050 ; CONDITION CODES:
2051 ; None
2052 ;
2053 ; SIDE EFFECTS:
2054 ; None
2055 ;--
2056
2057 003320' .PSECT $CODE$,I
2058 003320' 016700 000212' D.EQAL: MOV D.LASW,R0 ; GET LAST TYPED WORD
2059 003324' 005067 000112' CLR D.LFIN ; NO LINE-FEED INCREMENT
2060 003330' 000167 006314 JMP D.TYPN ; TYPE AS A NUMBER
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 33
DDT.MAC 30-DEC-82 01:45 D.DCOM - COMMA PARAMETER
2062 .SBTTL D.DCOM - Comma parameter
2063 ;++
2064 ; FUNCTIONAL DESCRIPTION:
2065 ; None
2066 ;
2067 ; CALLING SEQUENCE:
2068 ; CALL D.DCOM
2069 ;
2070 ; INPUT PARAMETERS:
2071 ; None
2072 ;
2073 ; IMPLICIT INPUTS:
2074 ; None
2075 ;
2076 ; OUTPUT PARAMETERS:
2077 ; None
2078 ;
2079 ; IMPLICIT OUTPUTS:
2080 ; None
2081 ;
2082 ; CONDITION CODES:
2083 ; None
2084 ;
2085 ; SIDE EFFECTS:
2086 ; None
2087 ;--
2088
2089 003334' .PSECT $CODE$,I
2090 003334' 005702 D.DCOM: TST R2 ; ANY PARAMETER?
2091 003336' 001402 BEQ 10$ ; BRANCH IF NOT
2092 003340' 010467 000230' MOV R4,D.COMA ; PUT IN PARAMETER AREA
2093 003344' 000167 174464 10$: JMP D.DCD2 ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 34
DDT.MAC 30-DEC-82 01:45 D.FWAS - STORE FIRST WORD ADDRESS FOR SEARCH
2095 .SBTTL D.FWAS - Store first word address for search
2096 ;++
2097 ; FUNCTIONAL DESCRIPTION:
2098 ; None
2099 ;
2100 ; CALLING SEQUENCE:
2101 ; CALL D.FWAS
2102 ;
2103 ; INPUT PARAMETERS:
2104 ; None
2105 ;
2106 ; IMPLICIT INPUTS:
2107 ; None
2108 ;
2109 ; OUTPUT PARAMETERS:
2110 ; None
2111 ;
2112 ; IMPLICIT OUTPUTS:
2113 ; None
2114 ;
2115 ; CONDITION CODES:
2116 ; None
2117 ;
2118 ; SIDE EFFECTS:
2119 ; None
2120 ;--
2121
2122 003350' .PSECT $CODE$,I
2123 003350' 105767 000053' D.FWAS: TSTB D.ALTF
2124 003354' 001006 BNE 10$
2125 003356' 010467 000246' MOV R4,D.FWA ; SET FIRST WORD
2126 003362' 105267 000037' INCB D.FWAF ; MARK FIRST WORD FOUND
2127 003366' 000167 174442 JMP D.DCD2 ; RETURN
2128 003372' 126727 000053' 000002 10$: CMPB D.ALTF,#2
2129 003400' 103135 BHIS 100$
2130 003402' 026727 000222' 000224' CMP D.CAD,#D.NLWD ; If word not open
2131 003410' 001531 BEQ 100$ ; then don't allow.
2132 003412' 026727 000120' 000001 CMP D.BW,#1 ; If in byte mode
2133 003420' 001525 BEQ 100$ ; then don't allow.
2134 003422' 005767 000156' TST D.PATA ; If already patching
2135 003426' 001122 BNE 100$ ; then don't allow.
2136 003430' 026727 000112' 000004 CMP D.LFIN,#4 ; At least 2 words must be open
2137 003436' 103516 BLO 100$ ; or it will not work.
2138 003440' 005767 000142' TST D.SVR2 ; If patch address not given
2139 003444' 001014 BNE 30$ ; then
2140 003446' 012767 062074 000234' MOV #^RPAT,D.RAD1 ; look for "PAT..".
2141 003454' 012767 131540 000236' MOV #^R..,D.RAD2
2142 003462' 004767 176726 CALL D.GTAC
2143 003466' 005700 TST R0
2144 003470' 001501 BEQ 100$ ; No place to patch to
2145 003472' 011067 000144' MOV (R0),D.SVR4 ; or here is where we go.
2146 003476' 016767 000214' 000156' 30$: MOV D.DOT,D.PATA ; This is the address we are patching from
2147 003504' 016767 000144' 000156' MOV D.SVR4,D.PATI+2 ; and this is the patch area.
2148 003512' 016767 000156' 000214' MOV D.PATI+2,D.DOT
2149 003520' 012767 000162' 000174' MOV #D.PATS,D.PATE
2150 003526' 126727 000053' 000001 CMPB D.ALTF,#1
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 34-1
DDT.MAC 30-DEC-82 01:45 D.FWAS - STORE FIRST WORD ADDRESS FOR SEARCH
2151 003534' 001021 BNE 50$
2152 003536' 016704 000222' 40$: MOV D.CAD,R4 ; Get the patched instruction(s).
2153 003542' 004767 000400' CALL D.GETW
2154 003546' 062767 000002 000222' ADD #2,D.CAD
2155 003554' 010077 000174' MOV R0,@D.PATE ; Save the word
2156 003560' 062767 000002 000174' ADD #2,D.PATE
2157 003566' 026767 000216' 000222' CMP D.CADC,D.CAD
2158 003574' 103360 BHIS 40$
2159 003576' 000422 BR 60$
2160 003600' 016704 000222' 50$: MOV D.CAD,R4 ; Get patched instruction(s).
2161 003604' 004767 000400' CALL D.GETW
2162 003610' 062767 000002 000222' ADD #2,D.CAD
2163 003616' 016704 000214' MOV D.DOT,R4
2164 003622' 004767 000420' CALL D.STRW
2165 003626' 062767 000002 000214' ADD #2,D.DOT
2166 003634' 026767 000216' 000222' CMP D.CADC,D.CAD
2167 003642' 103356 BHIS 50$
2168 003644' 016701 000174' 60$: MOV D.PATE,R1 ; Now insert
2169 003650' 012721 MOV (PC)+,(R1)+ ; the instrution
2170 003652' 000137 JMP @(PC)+ ; that jumps back
2171 003654' 010421 MOV R4,(R1)+ ; to the main line code.
2172 003656' 010167 000174' MOV R1,D.PATE
2173 003662' 012767 000224' 000222' MOV #D.NLWD,D.CAD ; Close the words.
2174 003670' 000167 177246 JMP D.OP2 ; Open the patch area.
2175
2176 003674' 000167 174244 100$: JMP D.ERR
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 35
DDT.MAC 30-DEC-82 01:45 D.ZERO - ZERO CORE
2178 .SBTTL D.ZERO - Zero core
2179 ;++
2180 ; FUNCTIONAL DESCRIPTION:
2181 ; None
2182 ;
2183 ; CALLING SEQUENCE:
2184 ; CALL D.ZERO
2185 ;
2186 ; INPUT PARAMETERS:
2187 ; None
2188 ;
2189 ; IMPLICIT INPUTS:
2190 ; None
2191 ;
2192 ; OUTPUT PARAMETERS:
2193 ; None
2194 ;
2195 ; IMPLICIT OUTPUTS:
2196 ; None
2197 ;
2198 ; CONDITION CODES:
2199 ; None
2200 ;
2201 ; SIDE EFFECTS:
2202 ; None
2203 ;--
2204
2205 003700' .PSECT $CODE$,I
2206 003700' 016704 000246' D.ZERO: MOV D.FWA,R4 ; FIRST WORD
2207 003704' 020467 000144' 10$: CMP R4,D.SVR4 ; AT LAST WORD?
2208 003710' 101006 BHI 20$ ; DONE IF SO
2209 003712' 005000 CLR R0 ; Zero the word
2210 003714' 004767 000420' CALL D.STRW
2211 003720' 062704 000002 ADD #2,R4
2212 003724' 000767 BR 10$ ; LOOP
2213 003726' 000207 20$: RETURN ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 36
DDT.MAC 30-DEC-82 01:45 D.SNGL - SECOND SET OF INSTRUCTIONS
2215 .SBTTL D.SNGL - Second set of instructions
2216 ;++
2217 ; FUNCTIONAL DESCRIPTION:
2218 ; None
2219 ;
2220 ; CALLING SEQUENCE:
2221 ; CALL D.SNGL
2222 ;
2223 ; INPUT PARAMETERS:
2224 ; None
2225 ;
2226 ; IMPLICIT INPUTS:
2227 ; None
2228 ;
2229 ; OUTPUT PARAMETERS:
2230 ; None
2231 ;
2232 ; IMPLICIT OUTPUTS:
2233 ; None
2234 ;
2235 ; CONDITION CODES:
2236 ; None
2237 ;
2238 ; SIDE EFFECTS:
2239 ; None
2240 ;--
2241
2242 003730' .PSECT $CODE$,I
2243 003730' 004767 006154 D.SNGL: CALL D.GET ; GET CHARACTER
2244 003734' 005005 CLR R5 ; OFFSET
2245 003736' 126500 001461' 10$: CMPB D.UTAB(R5),R0 ; MATCH?
2246 003742' 001003 BNE 20$ ; NO
2247 003744' 006305 ASL R5 ; MULTIPLY BY 2
2248 003746' 000175 000156' JMP @D.UADD(R5) ; DO THIS ROUTINE
2249 003752' 005205 20$: INC R5 ; NEXT CHARACTER
2250 003754' 020527 000000 CMP R5,#D.ENUT ; END OF LIST?
2251 003760' 002766 BLT 10$ ; LOOP IF NOT
2252 003762' 000167 174156 JMP D.ERR ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 37
DDT.MAC 30-DEC-82 01:45 D.GRAP - RETURN USER DISPLAY
2254 .SBTTL D.GRAP - Return user display
2255 ;++
2256 ; FUNCTIONAL DESCRIPTION:
2257 ; None
2258 ;
2259 ; CALLING SEQUENCE:
2260 ; CALL D.GRAP
2261 ;
2262 ; INPUT PARAMETERS:
2263 ; None
2264 ;
2265 ; IMPLICIT INPUTS:
2266 ; None
2267 ;
2268 ; OUTPUT PARAMETERS:
2269 ; None
2270 ;
2271 ; IMPLICIT OUTPUTS:
2272 ; None
2273 ;
2274 ; CONDITION CODES:
2275 ; None
2276 ;
2277 ; SIDE EFFECTS:
2278 ; None
2279 ;--
2280 001 .IF DF D.GDP
2281
2282 .PSECT $CODE$,I
2283 D.GRAP: TRAP 144
2284 MOV #104544,D.SAV9 ; UG! SELF MODIFYING-CODE
2285 RETURN
2286 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 38
DDT.MAC 30-DEC-82 01:45 D.ESCH - EFFECTIVE SEARCH
2288 .SBTTL D.ESCH - Effective search
2289 ;++
2290 ; FUNCTIONAL DESCRIPTION:
2291 ; None
2292 ;
2293 ; CALLING SEQUENCE:
2294 ; CALL D.ESCH
2295 ;
2296 ; INPUT PARAMETERS:
2297 ; None
2298 ;
2299 ; IMPLICIT INPUTS:
2300 ; None
2301 ;
2302 ; OUTPUT PARAMETERS:
2303 ; None
2304 ;
2305 ; IMPLICIT OUTPUTS:
2306 ; None
2307 ;
2308 ; CONDITION CODES:
2309 ; None
2310 ;
2311 ; SIDE EFFECTS:
2312 ; None
2313 ;--
2314
2315 003766' .PSECT $CODE$,I
2316 003766' 012701 000001 D.ESCH: MOV #1,R1 ; SET EFFECTIVE SEARCH
2317 003772' 000405 BR D.WDS ; DO SEARCH
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 39
DDT.MAC 30-DEC-82 01:45 D.NSCH - NO SEARCH
2319 .SBTTL D.NSCH - No search
2320 ;++
2321 ; FUNCTIONAL DESCRIPTION:
2322 ; None
2323 ;
2324 ; CALLING SEQUENCE:
2325 ; CALL D.NSCH
2326 ;
2327 ; INPUT PARAMETERS:
2328 ; None
2329 ;
2330 ; IMPLICIT INPUTS:
2331 ; None
2332 ;
2333 ; OUTPUT PARAMETERS:
2334 ; None
2335 ;
2336 ; IMPLICIT OUTPUTS:
2337 ; None
2338 ;
2339 ; CONDITION CODES:
2340 ; None
2341 ;
2342 ; SIDE EFFECTS:
2343 ; None
2344 ;--
2345
2346 003774' .PSECT $CODE$,I
2347 003774' 012701 177777 D.NSCH: MOV #-1,R1 ; SET NON-SEARCH
2348 004000' 000402 BR D.WDS ; DO SEARCH
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 40
DDT.MAC 30-DEC-82 01:45 D.WSCH - WORD SEARCH
2350 .SBTTL D.WSCH - Word search
2351 ;++
2352 ; FUNCTIONAL DESCRIPTION:
2353 ; None
2354 ;
2355 ; CALLING SEQUENCE:
2356 ; CALL D.WSCH
2357 ;
2358 ; INPUT PARAMETERS:
2359 ; None
2360 ;
2361 ; IMPLICIT INPUTS:
2362 ; None
2363 ;
2364 ; OUTPUT PARAMETERS:
2365 ; None
2366 ;
2367 ; IMPLICIT OUTPUTS:
2368 ; None
2369 ;
2370 ; CONDITION CODES:
2371 ; None
2372 ;
2373 ; SIDE EFFECTS:
2374 ; None
2375 ;--
2376
2377 004002' .PSECT $CODE$,I
2378 004002' 005001 D.WSCH: CLR R1 ; SET WORD SEARCH
2379 004004' 000400 BR D.WDS
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 41
DDT.MAC 30-DEC-82 01:45 D.WDS - DO SEARCH
2381 .SBTTL D.WDS - Do search
2382 ;++
2383 ; FUNCTIONAL DESCRIPTION:
2384 ; None
2385 ;
2386 ; CALLING SEQUENCE:
2387 ; CALL D.WDS
2388 ;
2389 ; INPUT PARAMETERS:
2390 ; None
2391 ;
2392 ; IMPLICIT INPUTS:
2393 ; None
2394 ;
2395 ; OUTPUT PARAMETERS:
2396 ; None
2397 ;
2398 ; IMPLICIT OUTPUTS:
2399 ; None
2400 ;
2401 ; CONDITION CODES:
2402 ; None
2403 ;
2404 ; SIDE EFFECTS:
2405 ; None
2406 ;--
2407
2408 004006' .PSECT $CODE$,I
2409 004006' 005767 000142' D.WDS: TST D.SVR2 ; NUMBER TO SEARCH FOR?
2410 004012' 001504 BEQ 80$ ; ERROR IF NOT
2411 004014' 004767 176760 CALL D.SWRD ; Set word mode
2412 004020' PUSH$S D.CAD ; THIS IS "MOST RECENT VALUE" OF D.CAD
2413 004024' 016702 000246' MOV D.FWA,R2 ; SET ORIGIN
2414 004030' 10$:
2415 001 .IF NDF D.RSX
2416 002 .IF NDF D.KSR&D.MCB
2417 TSTB @#D.RCSR ; CHARACTER TYPED?
2418 BMI 70$ ; BRANCH IF SO
2419 001 .ENDC
2420 000 .ENDC
2421 001 .IF DF D.KSR!D.MCB
2422 004030' 004767 006274 CALL D.POLL ; CHECK FOR TYPED CHARACTER
2423 004034' 026767 000064' 000066' CMP D.INPU,D.OUTP ; ANY CHARACTERS IN BUFFER?
2424 004042' 001065 BNE 70$
2425 000 .ENDC
2426 004044' 020267 000250' CMP R2,D.LWA ; IS THE SEARCH ALL DONE?
2427 004050' 101062 BHI 70$ ; YES
2428 004052' 016705 000144' MOV D.SVR4,R5 ; GET NUMBER TO SEARCH FOR
2429 004056' 016704 000252' MOV D.MASK,R4 ; GET MASK
2430 004062' 005104 COM R4 ; COMPLEMENT IT
2431 004064' PUSH$S R4
2432 004066' 010204 MOV R2,R4 ; OBJECT ADDRESS
2433 004070' 004767 000400' CALL D.GETW ; pick it up
2434 004074' POP$S R4
2435 004076' 010267 000222' MOV R2,D.CAD ; THIS IS CURRENT ADDRESS
2436 004102' 040400 BIC R4,R0 ; TURN OFF BITS NOT BEING SEARCHED FOR
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 41-1
DDT.MAC 30-DEC-82 01:45 D.WDS - DO SEARCH
2437 004104' 040405 BIC R4,R5 ; TURN OFF BITS NOT BEING SEARCHED FOR
2438 004106' PUSH$S R1 ; STORE AND TEST
2439 004110' 100440 BMI 60$ ; BRANCH IF NON-SEARCH
2440 004112' 003026 BGT 40$ ; BRANCH IF EFFECTIVE SEARCH
2441 004114' 020005 CMP R0,R5 ; EQUALITY?
2442 004116' 001016 BNE 30$ ; RE-LOOP IF NO MATCH
2443 004120' 004767 005504 20$: CALL D.CRLF ; TYPE CRLF
2444 004124' 016700 000222' MOV D.CAD,R0 ; GET READY TO TYPE
2445 004130' 010066 000002 MOV R0,2(SP) ; SET MOST RECENT VALUE OF D.CAD
2446 004134' 004767 003560 CALL D.RFND ; RELOCATE
2447 004140' 116700 000032' MOVB D.CDSP,R0 ; SLASH TO R0
2448 004144' 004767 005616 CALL D.TYPE ; TYPE IT
2449 004150' 004777 000114' CALL @D.CURM ; TYPE CONTENTS
2450 004154' 30$: POP$S R1 ; RESTORE R1
2451 004156' 016702 000222' MOV D.CAD,R2 ; RESTORE R2
2452 004162' 062702 000002 ADD #2,R2 ; INCREMENT TO NEXT CELL AND
2453 004166' 000720 BR 10$ ; RETURN
2454 004170' 012767 000001 000106' 40$: MOV #1,D.BOTH ; MARK NOTHING FOUND AND DON'T TYPE INSTRUCTION
2455 004176' 004767 004132 CALL D.INST ; "TYPE" THE INSTRUCTION
2456 004202' 005367 000106' DEC D.BOTH ; ALLOW TYPEOUT AND TEST FOUND INDICATOR
2457 004206' 001762 50$: BEQ 30$ ; BRANCH IF NOT FOUND
2458 004210' 000743 BR 20$ ; BRANCH IF FOUND
2459 004212' 020005 60$: CMP R0,R5 ; EQUALITY?
2460 004214' 000774 BR 50$ ; BRANCH TO DECIDE
2461 004216' 70$: POP$S D.CAD ; RESTORE MOST RECENT VALUE OF D.CAD
2462 004222' 000207 RETURN ; RETURN
2463 004224' 000167 173714 80$: JMP D.ERR ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 42
DDT.MAC 30-DEC-82 01:45 D.INNM - SET NUMERIC TYPEOUT
2465 .SBTTL D.INNM - Set numeric typeout
2466 ;++
2467 ; FUNCTIONAL DESCRIPTION:
2468 ; None
2469 ;
2470 ; CALLING SEQUENCE:
2471 ; CALL D.INNM
2472 ;
2473 ; INPUT PARAMETERS:
2474 ; None
2475 ;
2476 ; IMPLICIT INPUTS:
2477 ; None
2478 ;
2479 ; OUTPUT PARAMETERS:
2480 ; None
2481 ;
2482 ; IMPLICIT OUTPUTS:
2483 ; None
2484 ;
2485 ; CONDITION CODES:
2486 ; None
2487 ;
2488 ; SIDE EFFECTS:
2489 ; None
2490 ;--
2491
2492 004230' .PSECT $CODE$,I
2493 004230' 005702 D.INNM: TST R2 ; If radix specified
2494 004232' 001411 BEQ 20$ ; then
2495 004234' 022727 000140' 000002 CMP #D.DECN,#2 ; check if in range.
2496 004242' 002002 BGE 10$ ; If not,
2497 004244' 000167 173674 JMP D.ERR ; then tell him so;
2498 004250' 016767 000140' 000116' 10$: MOV D.DECN,D.DVTB ; otherwise set the decimal radix.
2499 004256' 012767 010020' 000114' 20$: MOV #D.CADV,D.CURM ; SET NUMERIC MODE
2500 004264' 016767 000114' 000134' MOV D.CURM,D.OMOD ; SET LF AND ^ TYPEOUT MODE
2501
2502 004272' 126727 000053' 000002 D.PRM: CMPB D.ALTF,#2 ; TWO ALTMODES TYPED?
2503 004300' 002411 BLT 90$ ; RETURN IF NOT
2504 004302' 012700 000114' MOV #D.CURM,R0 ; ADDRESS OF TEMPORARY TABLE
2505 004306' 012701 000124' MOV #D.PERM,R1 ; ADDRESS OF PERMANENT TABLE
2506 004312' 012702 000004 MOV #4,R2 ; SWAP MODES: WORD COUNTER IN R2
2507 004316' 012021 10$: MOV (R0)+,(R1)+ ; MOVE A WORD
2508 004320' 077202 SOB R2,10$ ; LOOP TILL DONE
2509 004322' 000207 RETURN ; RETURN
2510
2511 004324' 000167 173450 90$: JMP D.DCD ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 43
DDT.MAC 30-DEC-82 01:45 D.INTX - TEXT TYPEOUT
2513 .SBTTL D.INTX - Text typeout
2514 ;++
2515 ; FUNCTIONAL DESCRIPTION:
2516 ; None
2517 ;
2518 ; CALLING SEQUENCE:
2519 ; CALL D.INTX
2520 ;
2521 ; INPUT PARAMETERS:
2522 ; None
2523 ;
2524 ; IMPLICIT INPUTS:
2525 ; None
2526 ;
2527 ; OUTPUT PARAMETERS:
2528 ; None
2529 ;
2530 ; IMPLICIT OUTPUTS:
2531 ; None
2532 ;
2533 ; CONDITION CODES:
2534 ; None
2535 ;
2536 ; SIDE EFFECTS:
2537 ; None
2538 ;--
2539
2540 004330' .PSECT $CODE$,I
2541 004330' 012767 010054' 000114' D.INTX: MOV #D.ASCI,D.CURM ; DEFAULT TO ASCII
2542 004336' 020427 000005 CMP R4,#5 ; RAD50?
2543 004342' 001003 BNE 10$ ; RETURN IF NOT
2544 004344' 012767 010244' 000114' MOV #D.RADC,D.CURM ; RAD50
2545 004352' 016767 000114' 000134' 10$: MOV D.CURM,D.OMOD ; SET LF AND ^ TYPEOUT MODE
2546 004360' 000744 BR D.PRM ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 44
DDT.MAC 30-DEC-82 01:45 D.BYTE - BYTE TYPEOUT
2548 .SBTTL D.BYTE - Byte typeout
2549 ;++
2550 ; FUNCTIONAL DESCRIPTION:
2551 ; None
2552 ;
2553 ; CALLING SEQUENCE:
2554 ; CALL D.BYTE
2555 ;
2556 ; INPUT PARAMETERS:
2557 ; None
2558 ;
2559 ; IMPLICIT INPUTS:
2560 ; None
2561 ;
2562 ; OUTPUT PARAMETERS:
2563 ; None
2564 ;
2565 ; IMPLICIT OUTPUTS:
2566 ; None
2567 ;
2568 ; CONDITION CODES:
2569 ; None
2570 ;
2571 ; SIDE EFFECTS:
2572 ; None
2573 ;--
2574
2575 004362' .PSECT $CODE$,I
2576 004362' 012767 010124' 000114' D.BYTE: MOV #D.PART,D.CURM ; IN BYTE TYPEOUT MODE
2577 004370' 012767 010124' 000134' MOV #D.PART,D.OMOD ; SET LF AND ^ TYPEOUT MODE
2578 004376' 016767 000140' 000232' MOV D.DECN,D.SIZE ; SET BYTE SIZE
2579 004404' 000732 BR D.PRM ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 45
DDT.MAC 30-DEC-82 01:45 D.INMD - INSTRUCTION TYPEOUT
2581 .SBTTL D.INMD - Instruction typeout
2582 ;++
2583 ; FUNCTIONAL DESCRIPTION:
2584 ; None
2585 ;
2586 ; CALLING SEQUENCE:
2587 ; CALL D.INMD
2588 ;
2589 ; INPUT PARAMETERS:
2590 ; None
2591 ;
2592 ; IMPLICIT INPUTS:
2593 ; None
2594 ;
2595 ; OUTPUT PARAMETERS:
2596 ; None
2597 ;
2598 ; IMPLICIT OUTPUTS:
2599 ; None
2600 ;
2601 ; CONDITION CODES:
2602 ; None
2603 ;
2604 ; SIDE EFFECTS:
2605 ; None
2606 ;--
2607
2608 004406' .PSECT $CODE$,I
2609 004406' 012767 010334' 000114' D.INMD: MOV #D.INST,D.CURM ; IN INSTRUCTION MODE
2610 004414' 016767 000114' 000134' MOV D.CURM,D.OMOD ; SET LF AND ^ TYPEOUT MODE
2611 004422' 000723 BR D.PRM ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 46
DDT.MAC 30-DEC-82 01:45 D.ABS - ABSOLUTE ADDRESS TYPEOUT
2613 .SBTTL D.ABS - Absolute address typeout
2614 ;++
2615 ; FUNCTIONAL DESCRIPTION:
2616 ; None
2617 ;
2618 ; CALLING SEQUENCE:
2619 ; CALL D.ABS
2620 ;
2621 ; INPUT PARAMETERS:
2622 ; None
2623 ;
2624 ; IMPLICIT INPUTS:
2625 ; None
2626 ;
2627 ; OUTPUT PARAMETERS:
2628 ; None
2629 ;
2630 ; IMPLICIT OUTPUTS:
2631 ; None
2632 ;
2633 ; CONDITION CODES:
2634 ; None
2635 ;
2636 ; SIDE EFFECTS:
2637 ; None
2638 ;--
2639
2640 004424' .PSECT $CODE$,I
2641 004424' 012767 000001 000122' D.ABS: MOV #1,D.IFMT ; SET ABSOLUTE ADDRESSING
2642 004432' 000717 BR D.PRM ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 47
DDT.MAC 30-DEC-82 01:45 D.INRD - SET RADIX
2644 .SBTTL D.INRD - Set radix
2645 ;++
2646 ; FUNCTIONAL DESCRIPTION:
2647 ; None
2648 ;
2649 ; CALLING SEQUENCE:
2650 ; CALL D.INRD
2651 ;
2652 ; INPUT PARAMETERS:
2653 ; None
2654 ;
2655 ; IMPLICIT INPUTS:
2656 ; None
2657 ;
2658 ; OUTPUT PARAMETERS:
2659 ; None
2660 ;
2661 ; IMPLICIT OUTPUTS:
2662 ; None
2663 ;
2664 ; CONDITION CODES:
2665 ; None
2666 ;
2667 ; SIDE EFFECTS:
2668 ; None
2669 ;--
2670
2671 004434' .PSECT $CODE$,I
2672 004434' 005702 D.INRD: TST R2 ; If limit specified
2673 004436' 001402 BEQ 10$ ; then
2674 004440' 010467 000206' MOV R4,D.RFNL ; set it in out data base.
2675 004444' 005067 000122' 10$: CLR D.IFMT ; Turn on relative addressing.
2676 004450' 000710 BR D.PRM
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 48
DDT.MAC 30-DEC-82 01:45 D.CRET - CLOSE WORD AND RESET PERMANENT MODES
2678 .SBTTL D.CRET - Close word and reset permanent modes
2679 ;++
2680 ; FUNCTIONAL DESCRIPTION:
2681 ; None
2682 ;
2683 ; CALLING SEQUENCE:
2684 ; CALL D.CRET
2685 ;
2686 ; INPUT PARAMETERS:
2687 ; None
2688 ;
2689 ; IMPLICIT INPUTS:
2690 ; None
2691 ;
2692 ; OUTPUT PARAMETERS:
2693 ; None
2694 ;
2695 ; IMPLICIT OUTPUTS:
2696 ; None
2697 ;
2698 ; CONDITION CODES:
2699 ; None
2700 ;
2701 ; SIDE EFFECTS:
2702 ; None
2703 ;--
2704
2705 004452' .PSECT $CODE$,I
2706 004452' 004767 000032 D.CRET: CALL D.CLSE ; CLOSE LOCATION
2707 004456' 012700 000124' MOV #D.PERM,R0 ; ADDRESS OF PERMANENT TABLE
2708 004462' 012701 000114' MOV #D.CURM,R1 ; ADDRESS OF TEMPORARY TABLE
2709 004466' 012702 000004 MOV #4,R2 ; SWAP MODES: WORD COUNTER IN R2
2710 004472' 012021 10$: MOV (R0)+,(R1)+ ; MOVE A WORD
2711 004474' 077202 SOB R2,10$ ; LOOP TILL DONE
2712 004476' 016767 000114' 000134' MOV D.CURM,D.OMOD ; SET LF AND ^ TYPEOUT MODE
2713 004504' 000167 173270 JMP D.DCD ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 49
DDT.MAC 30-DEC-82 01:45 D.CLSE - CLOSE WORD OR BYTE
2715 .SBTTL D.CLSE - Close Word or Byte
2716 ;++
2717 ; FUNCTIONAL DESCRIPTION:
2718 ; None
2719 ;
2720 ; CALLING SEQUENCE:
2721 ; CALL D.CLSE
2722 ;
2723 ; INPUT PARAMETERS:
2724 ; R2 =
2725 ;
2726 ; IMPLICIT INPUTS:
2727 ; D.CAD =
2728 ; D.NLWD =
2729 ; D.BW =
2730 ; D.CADC =
2731 ; D.PARS =
2732 ; D.PARO =
2733 ;
2734 ; OUTPUT PARAMETERS:
2735 ; None
2736 ;
2737 ; IMPLICIT OUTPUTS:
2738 ; D.CAD =
2739 ; D.LFIN =
2740 ;
2741 ; CONDITION CODES:
2742 ; None
2743 ;
2744 ; SIDE EFFECTS:
2745 ; None
2746 ;--
2747
2748 004510' .PSECT $CODE$,I
2749 004510' 005702 D.CLSE: TST R2 ; IF NO NUMBER WAS TYPED THERE IS
2750 004512' 001462 BEQ 20$ ; NOTHING TO CLOSE
2751 004514' 026727 000222' 000224' CMP D.CAD,#D.NLWD ; ANY OPEN WORD?
2752 004522' 001456 BEQ 20$ ; BRANCH IF NOT
2753 004524' 005067 000112' CLR D.LFIN ; NO LINE FEED INCREMENT
2754 001 .IF DF D.MCB
2755 004530' 026727 000222' 177706 CMP D.CAD,#177706 ; If modifying the SP
2756 004536' 001454 BEQ 30$ ; then crash.
2757 000 .ENDC
2758 004540' 010400 MOV R4,R0
2759 004542' 016704 000222' MOV D.CAD,R4 ; WORD ADDRESS
2760 004546' 022767 000001 000120' CMP #1,D.BW ; BYTE MODE?
2761 004554' 001437 BEQ 10$ ; JUMP IF BYTE MODE
2762 004556' 004767 000420' CALL D.STRW
2763 004562' 026704 000216' CMP D.CADC,R4 ; SUBTRACT COPY
2764 004566' 101434 BLOS 20$ ; BRANCH IF NO MORE
2765 004570' 062704 000002 ADD #2,R4
2766 004574' 062767 000002 000112' ADD #2,D.LFIN ; LINE FEED INCREMENT
2767 004602' 016700 000146' MOV D.PARS,R0 ; MOVE ANOTHER WORD (2 OR 3 WORD INST)
2768 004606' 166700 000200' SUB D.PARO,R0 ; RELOCATE WORD
2769 004612' 004767 000420' CALL D.STRW
2770 004616' 026704 000216' CMP D.CADC,R4 ; THIRD PARAMETER?
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 49-1
DDT.MAC 30-DEC-82 01:45 D.CLSE - CLOSE WORD OR BYTE
2771 004622' 101416 BLOS 20$ ; BRANCH IF NOT
2772 004624' 062704 000002 ADD #2,R4
2773 004630' 062767 000002 000112' ADD #2,D.LFIN ; LINE FEED INCREMENT
2774 004636' 016700 000150' MOV D.PARS+2,R0 ; PUT THIRD WORD IN
2775 004642' 166700 000202' SUB D.PARO+2,R0 ; RELOCATE WORD
2776 004646' 004767 000420' CALL D.STRW
2777 004652' 000402 BR 20$ ; FINISH UP
2778 004654' 004767 000410' 10$: CALL D.STRB
2779 004660' 012767 000224' 000222' 20$: MOV #D.NLWD,D.CAD ; CLOSE WORD
2780 004666' 000207 RETURN ; RETURN
2781 004670' 000167 173250 30$: JMP D.ERR
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 50
DDT.MAC 30-DEC-82 01:45 D.LWAS - STORE LAST WORD ADDRESS FOR SEARCH
2783 .SBTTL D.LWAS - Store last word address for search
2784 ;++
2785 ; FUNCTIONAL DESCRIPTION:
2786 ; None
2787 ;
2788 ; CALLING SEQUENCE:
2789 ; CALL D.LWAS
2790 ;
2791 ; INPUT PARAMETERS:
2792 ; None
2793 ;
2794 ; IMPLICIT INPUTS:
2795 ; None
2796 ;
2797 ; OUTPUT PARAMETERS:
2798 ; None
2799 ;
2800 ; IMPLICIT OUTPUTS:
2801 ; None
2802 ;
2803 ; CONDITION CODES:
2804 ; None
2805 ;
2806 ; SIDE EFFECTS:
2807 ; None
2808 ;--
2809
2810 004674' .PSECT $CODE$,I
2811 004674' 126727 000053' 000001 D.LWAS: CMPB D.ALTF,#1
2812 004702' 002011 BGE 20$
2813 004704' 010467 000250' MOV R4,D.LWA ; SET LAST WORD
2814 004710' 005702 TST R2 ; ANY WORD THERE?
2815 004712' 001003 BNE 10$ ; BRANCH IF NOT
2816 004714' 012767 177776' 000250' MOV #DDT-2,D.LWA ; SET HIGH LAST WORD
2817 004722' 000167 173052 10$: JMP D.DCD ; RETURN
2818 004726' 001040 20$: BNE 100$
2819 004730' 005767 000156' TST D.PATA ; If not patching
2820 004734' 001035 BNE 100$ ; then don't allow.
2821 004736' 012701 000162' MOV #D.PATS,R1
2822 004742' 016702 000174' MOV D.PATE,R2
2823 004746' 016704 000214' MOV D.DOT,R4
2824 004752' 004767 000026 CALL 30$
2825 004756' 012701 000154' MOV #D.PATI,R1
2826 004762' 014202 MOV -(R2),R2
2827 004764' 016704 000156' MOV D.PATA,R4
2828 004770' 160402 SUB R4,R2
2829 004772' 060102 ADD R1,R2
2830 004774' 004767 000004 CALL 30$
2831 005000' 000167 176136 JMP D.OP2
2832
2833 005004' 012100 30$: MOV (R1)+,R0
2834 005006' 004767 000420' CALL D.STRW
2835 005012' 062704 000002 ADD #2,R4
2836 005016' 020201 CMP R2,R1
2837 005020' 001371 BNE 30$
2838 005022' 010467 000214' MOV R4,D.DOT
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 50-1
DDT.MAC 30-DEC-82 01:45 D.LWAS - STORE LAST WORD ADDRESS FOR SEARCH
2839 005026' 000207 RETURN
2840
2841 005030' 000167 173110 100$: JMP D.ERR
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 51
DDT.MAC 30-DEC-82 01:45 D.BKPT - SET AND REMOVE BREAKPOINTS
2843 .SBTTL D.BKPT - Set and remove breakpoints
2844 ;++
2845 ; FUNCTIONAL DESCRIPTION:
2846 ; None
2847 ;
2848 ; CALLING SEQUENCE:
2849 ; CALL D.BKPT
2850 ;
2851 ; INPUT PARAMETERS:
2852 ; None
2853 ;
2854 ; IMPLICIT INPUTS:
2855 ; None
2856 ;
2857 ; OUTPUT PARAMETERS:
2858 ; None
2859 ;
2860 ; IMPLICIT OUTPUTS:
2861 ; None
2862 ;
2863 ; CONDITION CODES:
2864 ; None
2865 ;
2866 ; SIDE EFFECTS:
2867 ; None
2868 ;--
2869
2870 005034' .PSECT $CODE$,I
2871 005034' 005767 000142' D.BKPT: TST D.SVR2 ; DID HE GIVE A FIRST ARG?
2872 005040' 001465 BEQ 90$
2873 005042' 006304 ASL R4 ; MULTIPLY NUMBER BY TWO
2874 005044' 016705 000144' MOV D.SVR4,R5 ; GET FIRST NUMBER
2875 005050' 001437 BEQ 50$ ; REMOVE BREAK IF FIRST ARG 0
2876 005052' 004767 006272 CALL D.VLD ; Validate address.
2877 005056' 005704 TST R4 ; SPECIFIC CELL REQUESTED?
2878 005060' 001012 BNE 20$ ; JUMP IF SO
2879 005062' 012704 000002 MOV #2,R4
2880 005066' 004767 000164 10$: CALL D.BKCK ; Check breakpoint
2881 005072' 103410 BCS 30$ ; It is free
2882 005074' 001407 BEQ 30$ ; or the same
2883 005076' 005724 TST (R4)+ ; INCREMENT BY TWO
2884 005100' 020427 000020 CMP R4,#D.BKP*2 ; ARE WE AT THE END OF OUR ROPE?
2885 005104' 101770 BLOS 10$ ; NO, KEEP LOOKING
2886 005106' 020427 000020 20$: CMP R4,#D.BKP*2 ; REQUESTED NUMBER TOO LARGE?
2887 005112' 101057 BHI 100$ ; ERROR IF TOO LARGE
2888 005114' 004767 000174 30$: CALL D.BKST ; SET BREAKPOINT
2889 005120' 016764 000230' 000406' MOV D.COMA,D.OPEN(R4) ; SET WORD TO OPEN AT BREAKPOINT
2890 005126' 005064 000364' CLR D.CT(R4) ; SET CONTINUE COUNT
2891 005132' 126727 000053' 000001 CMPB D.ALTF,#1 ; TWO ALTMODES?
2892 005140' 003002 BGT 40$ ; BRANCH IF NOT
2893 005142' 005264 000364' INC D.CT(R4) ; DO NOT SET AUTOMATIC PROCEDE
2894 005146' 000207 40$: RETURN ; RETURN
2895 005150' 005702 50$: TST R2 ; IF NO NUMBER WAS TYPED...
2896 005152' 001407 BEQ 62$ ; GO REMOVE ALL
2897 005154' 020427 000020 CMP R4,#D.BKP*2 ; WAS THE TYPED NUMBER VALID?
2898 005160' 101034 BHI 100$ ; JUMP IF NOT
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 51-1
DDT.MAC 30-DEC-82 01:45 D.BKPT - SET AND REMOVE BREAKPOINTS
2899 005162' 004767 000126 CALL D.BKST ; CLEAR BREAKPOINT
2900 005166' 000207 RETURN ; RETURN
2901 005170' 005005 60$: CLR R5
2902 005172' 012704 000002 62$: MOV #2,R4
2903 005176' 004767 000112 64$: CALL D.BKST ; Clear breakpoint
2904 005202' 005724 TST (R4)+ ; INCREMENT BY TWO
2905 005204' 020427 000020 CMP R4,#D.BKP*2 ; ARE WE AT THE END OF OUR ROPE?
2906 005210' 101772 BLOS 64$ ; NO, KEEP LOOKING
2907 005212' 000207 RETURN ; RETURN
2908 005214' 005702 90$: TST R2 ; If a number typed
2909 005216' 001764 BEQ 60$ ; then
2910 005220' 006304 ASL R4 ; Validate the number.
2911 005222' 001413 BEQ 100$
2912 005224' 022704 000020 CMP #<D.BKP*2>,R4
2913 005230' 103410 BLO 100$ ; Jump if invalid.
2914 005232' 016404 000254' MOV D.BKTB(R4),R4
2915 005236' 004777 000136' CALL @D.OPER ; COMBINE VALUE WITH CURRENT EXPRESSION
2916 005242' POP$S ,1
2917 005244' 005202 INC R2 ; MARK A TYPED NUMBER
2918 005246' 000167 172600 JMP D.DCD3 ; CONTINUE SCANNING
2919 005252' 000167 172666 100$: JMP D.ERR ; INTERMEDIATE HELP
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 52
DDT.MAC 30-DEC-82 01:45 D.BKCK - CHECK BREAKPOINT AVAILABILITY
2921 .SBTTL D.BKCK - Check Breakpoint Availability
2922 ;++
2923 ; FUNCTIONAL DESCRIPTION:
2924 ; Compare given breakpoint against given address
2925 ;
2926 ; CALLING SEQUENCE:
2927 ; CALL D.BKCK
2928 ;
2929 ; INPUT PARAMETERS:
2930 ; R5 = Address to compare
2931 ; R4 = breakpoint index
2932 ;
2933 ; IMPLICIT INPUTS:
2934 ; Process context or task context of given address
2935 ;
2936 ; OUTPUT PARAMETERS:
2937 ; None
2938 ;
2939 ; IMPLICIT OUTPUTS:
2940 ; None
2941 ;
2942 ; CONDITION CODES:
2943 ; C-bit set = breakpoint undefined
2944 ; N-bit set = breakpoint does not match address
2945 ; N-bit clear = breakpoint matches address
2946 ;
2947 ; SIDE EFFECTS:
2948 ; Register R0 is modified.
2949 ;--
2950
2951 005256' .PSECT $CODE$,I
2952 005256' 016400 000254' D.BKCK: MOV D.BKTB(R4),R0 ; IS THIS CELL FREE?
2953 005262' 001412 BEQ 80$ ; JUMP IF YES
2954 001 .IF DF D.MCB
2955 005264' PUSH$S R4
2956 005266' 010400 MOV R4,R0
2957 005270' 010504 MOV R5,R4
2958 005272' 004767 000224' CALL D.CMPB ; Check APR6 address
2959 005276' POP$S R4
2960 005300' MTPS R0
2961 .IFF
2962 CMP R0,R5 ; Check address
2963 .IFTF
2964 005304' 000241 CLC
2965 005306' 000207 RETURN
2966 005310' 005100 80$: COM R0 ; Set C-bit and N-bit
2967 005312' 000207 90$: RETURN
2968 .IFT
2969 000224' .PSECT $ABS$,I
2970 000224' 004367 000200 D.CMPB: JSR R3,D.REL
2971 000230' 026037 000320' 000000G CMP D.BIAS(R0),@#KISAR6
2972 000236' 001002 BNE 10$
2973 000240' 026003 000276' CMP D.ADDR(R0),R3
2974 000244' 10$: MFPS R0
2975 000250' 000207 RETURN
2976 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 53
DDT.MAC 30-DEC-82 01:45 D.BKST - SET BREAKPOINT
2978 .SBTTL D.BKST - Set Breakpoint
2979 ;++
2980 ; FUNCTIONAL DESCRIPTION:
2981 ; Set given breakpoint as given address
2982 ;
2983 ; CALLING SEQUENCE:
2984 ; CALL D.BKST
2985 ;
2986 ; INPUT PARAMETERS:
2987 ; R5 = Address to set
2988 ; R4 = breakpoint index
2989 ;
2990 ; IMPLICIT INPUTS:
2991 ; Process context or task context of given address
2992 ;
2993 ; OUTPUT PARAMETERS:
2994 ; None
2995 ;
2996 ; IMPLICIT OUTPUTS:
2997 ; None
2998 ;
2999 ; CONDITION CODES:
3000 ; None
3001 ;
3002 ; SIDE EFFECTS:
3003 ; Register R0 is modified.
3004 ;--
3005
3006 005314' .PSECT $CODE$,I
3007 005314' 010564 000254' D.BKST: MOV R5,D.BKTB(R4) ; Set address
3008 005320' 001406 BEQ 90$
3009 001 .IF DF D.MCB
3010 005322' PUSH$S R4
3011 005324' 010400 MOV R4,R0
3012 005326' 010504 MOV R5,R4
3013 005330' 004767 000252' CALL D.SETB ; Set APR6 address
3014 005334' POP$S R4
3015 .IFTF
3016 005336' 000207 90$: RETURN
3017 .IFT
3018 000252' .PSECT $ABS$,I
3019 000252' 004367 000152 D.SETB: JSR R3,D.REL
3020 000256' 013760 000000G 000320' MOV @#KISAR6,D.BIAS(R0)
3021 000264' 010360 000276' MOV R3,D.ADDR(R0)
3022 000270' 000207 RETURN
3023 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 54
DDT.MAC 30-DEC-82 01:45 D.MAST - TYPE AND SET MASK
3025 .SBTTL D.MAST - Type and set mask
3026 ;++
3027 ; FUNCTIONAL DESCRIPTION:
3028 ; None
3029 ;
3030 ; CALLING SEQUENCE:
3031 ; CALL D.MAST
3032 ;
3033 ; INPUT PARAMETERS:
3034 ; None
3035 ;
3036 ; IMPLICIT INPUTS:
3037 ; None
3038 ;
3039 ; OUTPUT PARAMETERS:
3040 ; None
3041 ;
3042 ; IMPLICIT OUTPUTS:
3043 ; None
3044 ;
3045 ; CONDITION CODES:
3046 ; None
3047 ;
3048 ; SIDE EFFECTS:
3049 ; None
3050 ;--
3051
3052 005340' .PSECT $CODE$,I
3053 005340' D.MAST: PUSH$S #D.MASK ; GET MASK
3054 005344' 005767 000142' TST D.SVR2 ; NUMBER THERE?
3055 005350' 001006 BNE 10$ ; BRANCH IF SO
3056 005352' POP$S R4 ; ADDRESS TO OPEN
3057 005354' 004777 000136' CALL @D.OPER ; COMBINE VALUE WITH CURRENT EXPRESSION
3058 005360' 005202 INC R2 ; MARK A TYPED NUMBER
3059 005362' 000167 172464 JMP D.DCD3 ; CONTINUE SCANNING
3060 005366' 016736 000144' 10$: MOV D.SVR4,@(SP)+ ; SET MASK
3061 005372' 000207 RETURN ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 55
DDT.MAC 30-DEC-82 01:45 D.ALTV - GET CONTENTS OF DOT BYTE-SWAPPED.
3063 .SBTTL D.ALTV - Get contents of Dot byte-swapped.
3064 ;++
3065 ; FUNCTIONAL DESCRIPTION:
3066 ; None
3067 ;
3068 ; CALLING SEQUENCE:
3069 ; CALL D.ALTV
3070 ;
3071 ; INPUT PARAMETERS:
3072 ; None
3073 ;
3074 ; IMPLICIT INPUTS:
3075 ; None
3076 ;
3077 ; OUTPUT PARAMETERS:
3078 ; None
3079 ;
3080 ; IMPLICIT OUTPUTS:
3081 ; None
3082 ;
3083 ; CONDITION CODES:
3084 ; None
3085 ;
3086 ; SIDE EFFECTS:
3087 ; None
3088 ;--
3089
3090 005374' .PSECT $CODE$,I
3091 005374' 016704 000214' D.ALTV: MOV D.DOT,R4 ; ADDRESS OF WORD
3092 005400' 004767 000400' CALL D.GETW ; RELOCATE IT
3093 005404' 010004 MOV R0,R4 ; FETCH THE WORD
3094 005406' 000304 SWAB R4 ; SWAB IT
3095 005410' 004777 000136' CALL @D.OPER ; COMBINE VALUE WITH CURRENT EXPRESSION
3096 005414' 005202 INC R2 ; MARK A TYPED NUMBER
3097 005416' 000167 172430 JMP D.DCD3 ; CONTINUE SCANNING
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 56
DDT.MAC 30-DEC-82 01:45 D.ALTQ - GET CONTENTS OF DOT
3099 .SBTTL D.ALTQ - Get contents of Dot
3100 ;++
3101 ; FUNCTIONAL DESCRIPTION:
3102 ; None
3103 ;
3104 ; CALLING SEQUENCE:
3105 ; CALL D.ALTQ
3106 ;
3107 ; INPUT PARAMETERS:
3108 ; None
3109 ;
3110 ; IMPLICIT INPUTS:
3111 ; None
3112 ;
3113 ; OUTPUT PARAMETERS:
3114 ; None
3115 ;
3116 ; IMPLICIT OUTPUTS:
3117 ; None
3118 ;
3119 ; CONDITION CODES:
3120 ; None
3121 ;
3122 ; SIDE EFFECTS:
3123 ; None
3124 ;--
3125
3126 005422' .PSECT $CODE$,I
3127 005422' 016704 000214' D.ALTQ: MOV D.DOT,R4 ; ADDRESS OF WORD
3128 005426' 004767 000400' CALL D.GETW ; RELOCATE IT
3129 005432' 010004 MOV R0,R4
3130 005434' 004777 000136' CALL @D.OPER ; COMBINE VALUE WITH CURRENT EXPRESSION
3131 005440' 005202 INC R2 ; MARK A TYPED NUMBER
3132 005442' 000167 172404 JMP D.DCD3 ; CONTINUE SCANNING
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 57
DDT.MAC 30-DEC-82 01:45 D.TEXT - GET TEXT
3134 .SBTTL D.TEXT - Get Text
3135 ;++
3136 ; FUNCTIONAL DESCRIPTION:
3137 ; None
3138 ;
3139 ; CALLING SEQUENCE:
3140 ; CALL D.TEXT
3141 ;
3142 ; INPUT PARAMETERS:
3143 ; None
3144 ;
3145 ; IMPLICIT INPUTS:
3146 ; None
3147 ;
3148 ; OUTPUT PARAMETERS:
3149 ; None
3150 ;
3151 ; IMPLICIT OUTPUTS:
3152 ; None
3153 ;
3154 ; CONDITION CODES:
3155 ; None
3156 ;
3157 ; SIDE EFFECTS:
3158 ; None
3159 ;--
3160
3161 005446' .PSECT $CODE$,I
3162 005446' 004767 004436 D.TEXT: CALL D.GET ; GET NEXT CHARACTER
3163 005452' 005002 CLR R2 ; RAD50/ASCII INDICATOR
3164 005454' 020027 000033 CMP R0,#33 ; ALTMODE?
3165 005460' 001003 BNE 10$ ; BRANCH IF NOT
3166 005462' 005202 INC R2 ; SET INDICATOR
3167 005464' 004767 004420 CALL D.GET ; GET NEXT CHARACTER
3168 005470' 010105 10$: MOV R1,R5 ; DELIMETER (EXACT CHARACTER)
3169 005472' 004767 004412 20$: CALL D.GET ; GET CHARACTER
3170 005476' 020105 CMP R1,R5 ; DELEMETER?
3171 005500' 001404 BEQ 30$ ; BRANCH IF SO
3172 005502' 010100 MOV R1,R0 ; PUT IN ARGUMENT PLACE
3173 005504' 004767 174330 CALL D.PTSM ; PUT IN SYMBOL
3174 005510' 000770 BR 20$ ; LOOP
3175 005512' 005702 30$: TST R2 ; ASCII?
3176 005514' 001003 BNE 40$ ; BRANCH IF NOT
3177 005516' 016704 000070' MOV D.SYM,R4 ; GET ASCII CHARACTERS
3178 005522' 000405 BR 50$ ; RETURN
3179 005524' 012700 000070' 40$: MOV #D.SYM,R0 ; ADDRESS OF FIRST THREE CHARACTERS
3180 005530' 004767 005470 CALL D.RD50 ; CONVERT TO RAD50
3181 005534' 010004 MOV R0,R4 ; NOW CURRENT VALUE
3182 005536' 004777 000136' 50$: CALL @D.OPER ; COMBINE VALUE WITH CURRENT EXPRESSION
3183 005542' 005202 INC R2 ; MARK A TYPED NUMBER
3184 005544' 000167 172302 JMP D.DCD3 ; CONTINUE SCANNING
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 58
DDT.MAC 30-DEC-82 01:45 M.DBG - SET DEBUGGING MODE
3186 .SBTTL M.DBG - Set debugging mode
3187 ;++
3188 ; FUNCTIONAL DESCRIPTION:
3189 ; None
3190 ;
3191 ; CALLING SEQUENCE:
3192 ; CALL M.DBG
3193 ;
3194 ; INPUT PARAMETERS:
3195 ; None
3196 ;
3197 ; IMPLICIT INPUTS:
3198 ; None
3199 ;
3200 ; OUTPUT PARAMETERS:
3201 ; None
3202 ;
3203 ; IMPLICIT OUTPUTS:
3204 ; None
3205 ;
3206 ; CONDITION CODES:
3207 ; None
3208 ;
3209 ; SIDE EFFECTS:
3210 ; None
3211 ;--
3212
3213 005550' .PSECT $CODE$,I
3214 005550' M.DBG:
3215 001 .IF DF D.MCB
3216 005550' 126727 000053' 000002 CMPB D.ALTF,#2 ; If two altmodes typed
3217 005556' 002050 BGE 60$ ; then dangerous function requested.
3218 005560' 005767 000142' TST D.SVR2 ; If operating switch
3219 005564' 001026 BNE 20$ ; then check what is requested.
3220 005566' 005702 TST R2 ; If PIX specified
3221 005570' 001466 BEQ 100$ ; then
3222 005572' 026704 000000G CMP .PDBNM,R4 ; check its range
3223 005576' 103403 BLO 10$ ; and if so
3224 005600' 004767 005120 CALL M.SNON ; request synchronization.
3225 005604' 000411 BR 18$
3226 005606' 005204 10$: INC R4
3227 005610' 001056 BNE 100$
3228 005612' 013704 000000G MOV @#$TKTCB,R4 ; Get current task
3229 005616' 005764 000030 TST T.TCBL(R4) ; and if not null task
3230 005622' 001451 BEQ 100$ ; then
3231 005624' 004767 005262 CALL M.USON ; set task to break.
3232 005630' 005002 18$: CLR R2
3233 005632' 005067 000142' CLR D.SVR2
3234 005636' 000167 000226 JMP D.PROC ; Simulate $$P function.
3235 005642' 016700 000144' 20$: MOV D.SVR4,R0 ; Get switch number
3236 005646' 001437 BEQ 100$ ; and check range
3237 005650' 100001 BPL 22$ ; of
3238 005652' 005400 NEG R0 ; absolute value.
3239 005654' 022700 000001 22$: CMP #1,R0
3240 005660' 001032 BNE 100$
3241 005662' 022704 000007 CMP #7,R4 ; If severity out of range
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 58-1
DDT.MAC 30-DEC-82 01:45 M.DBG - SET DEBUGGING MODE
3242 005666' 103427 BLO 100$ ; then razz him.
3243 005670' 116764 000144' 000042' MOVB D.SVR4,D.PSVR(R4)
3244 005676' 000207 RETURN
3245 005700' 005767 000142' 60$: TST D.SVR2 ; If argument specified
3246 005704' 001420 BEQ 100$ ; and
3247 005706' 005767 000144' TST D.SVR4 ; if zero
3248 005712' 001006 BNE 70$ ; then
3249 005714' 004767 004630 CALL M.TTOF ; disable the TTY trap
3250 005720' 004767 004672 CALL M.SNCK ; process synchronize
3251 005724' 000167 000272' JMP EXVEN
3252 005730' 005267 000144' 70$: INC D.SVR4 ; If minus one (-1)
3253 005734' 001004 BNE 100$ ; then
3254 005736' 004767 001542 CALL D.REST ; restore the signal context
3255 005742' 005000 CLR R0 ; and request re-signalling.
3256 005744' 000207 RETURN
3257 .IFTF
3258 005746' 000167 172172 100$: JMP D.ERR ; Not defined
3259 .IFT
3260 000272' .PSECT $ABS$,I
3261 000272' EXVEN: MAP$ @#KISAR5
3262 000300' CALL$C #$EXVEN,<#0,#EXVPRI+20000,#0> ; and
3263 000326' CALL$C #$EXVEN,<#2,#EXVLST+20000,#0> ; DDT.
3264 000356' MAP$ D.DAR6
3265 000364' 000207 RETURN
3266 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 59
DDT.MAC 30-DEC-82 01:45 D.SOFT - SOFT RESTART
3268 .SBTTL D.SOFT - Soft restart
3269 ;++
3270 ; FUNCTIONAL DESCRIPTION:
3271 ; None
3272 ;
3273 ; CALLING SEQUENCE:
3274 ; CALL D.SOFT
3275 ;
3276 ; INPUT PARAMETERS:
3277 ; None
3278 ;
3279 ; IMPLICIT INPUTS:
3280 ; None
3281 ;
3282 ; OUTPUT PARAMETERS:
3283 ; None
3284 ;
3285 ; IMPLICIT OUTPUTS:
3286 ; None
3287 ;
3288 ; CONDITION CODES:
3289 ; None
3290 ;
3291 ; SIDE EFFECTS:
3292 ; None
3293 ;--
3294 001 .IF DF D.GDP
3295
3296 .PSECT $CODE$,I
3297 D.SOFT: MOV #1004,R5 ; ADDRESS OF SOFT RESTART
3298 BR D.GO3 ; GO THERE
3299 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 60
DDT.MAC 30-DEC-82 01:45 D.EXEC - EXECUTE INSTRUCTION
3301 .SBTTL D.EXEC - Execute instruction
3302 ;++
3303 ; FUNCTIONAL DESCRIPTION:
3304 ; None
3305 ;
3306 ; CALLING SEQUENCE:
3307 ; CALL D.EXEC
3308 ;
3309 ; INPUT PARAMETERS:
3310 ; None
3311 ;
3312 ; IMPLICIT INPUTS:
3313 ; None
3314 ;
3315 ; OUTPUT PARAMETERS:
3316 ; None
3317 ;
3318 ; IMPLICIT OUTPUTS:
3319 ; None
3320 ;
3321 ; CONDITION CODES:
3322 ; None
3323 ;
3324 ; SIDE EFFECTS:
3325 ; None
3326 ;--
3327
3328 005752' .PSECT $CODE$,I
3329 005752' 005767 000142' D.EXEC: TST D.SVR2 ; ANY INSTRUCTION?
3330 005756' 001402 BEQ 30$ ; ERROR IF NOT
3331 001 .IF DF D.MCB
3332 005760' 000167 172160 JMP D.ERR ; Unsupported
3333 .IFF
3334 MOV #D.SVR4,R5 ; INSTRUCTION STARTING ADDRESS
3335 TST D.PARO ; RELOCATE FIRST WORD?
3336 BEQ 10$ ; BRANCH IF NOT
3337 SUB #D.PARS+2,D.PARS; RELOCATE FIRST WORD
3338 10$: TST D.PARO+2 ; RELOCATE SECOOND WORD?
3339 BEQ 20$ ; BRANCH IF NOT
3340 SUB #D.PARS+4,D.PARS+2 ; RELOCATE SECOND WORD
3341 20$: MOV D.UR7,D.SVR7 ; SAVE PC
3342 BR D.GO5 ; EXECUTE INSTRUCTION
3343 .IFT
3344 005764' 016705 000452' 30$: MOV D.UR7,R5 ; GET PC
3345 005770' 004767 005354 CALL D.VLD ; Validate address.
3346 005774' 016767 000230' 000406' MOV D.COMA,D.OPEN+<D.BKS*2>
3347 006002' 112767 000001 000104' MOVB #1,D.S
3348 006010' 126727 000053' 000001 CMPB D.ALTF,#1 ; If to execute to next instruction
3349 006016' 003414 BLE 32$ ; then
3350 006020' 105467 000104' NEGB D.S ; set multiple step mode
3351 006024' 010567 000430' MOV R5,D.BKLO
3352 006030' 062767 000002 000430' ADD #1*2,D.BKLO ; and set
3353 006036' 010567 000432' MOV R5,D.BKHI
3354 006042' 062767 000006 000432' ADD #3*2,D.BKHI ; break address range.
3355 006050' 012704 000001 32$: MOV #1,R4
3356 006054' 010467 000364' MOV R4,D.CT+<D.BKS*2>
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 60-1
DDT.MAC 30-DEC-82 01:45 D.EXEC - EXECUTE INSTRUCTION
3357 006060' 116700 000041' MOVB D.P,R0 ; DID WE ENTER VIA A BREAK?
3358 006064' 002446 BLT D.GO3 ; NO, OKAY.
3359 006066' 000425 BR D.PRO6
3360 .IFF
3361
3362 D.EXE2:
3363 002 .IF NDF D.RSX
3364 MFPS D.UPS ; GET PS
3365 001 .ENDC
3366 MOV D.SVR7,D.UR7 ; RESTORE CORRECT PC
3367 CALL D.SAVE ; SAVE ALL REGISTERS
3368 CALL D.TTAB ; TYPE TAB
3369 JMP D.DCD ; RETURN
3370 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 61
DDT.MAC 30-DEC-82 01:45 D.PROC - PROCEEDE
3372 .SBTTL D.PROC - Proceede
3373 ;++
3374 ; FUNCTIONAL DESCRIPTION:
3375 ; None
3376 ;
3377 ; CALLING SEQUENCE:
3378 ; CALL D.PROC
3379 ;
3380 ; INPUT PARAMETERS:
3381 ; None
3382 ;
3383 ; IMPLICIT INPUTS:
3384 ; None
3385 ;
3386 ; OUTPUT PARAMETERS:
3387 ; None
3388 ;
3389 ; IMPLICIT OUTPUTS:
3390 ; None
3391 ;
3392 ; CONDITION CODES:
3393 ; None
3394 ;
3395 ; SIDE EFFECTS:
3396 ; None
3397 ;--
3398
3399 006070' .PSECT $CODE$,I
3400 006070' 005702 D.PROC: TST R2 ; CHECK FOR ILLEGAL COUNT
3401 006072' 001037 BNE D.PRO9 ; JUMP IF ILLEGAL
3402 006074' 016705 000452' MOV D.UR7,R5 ; GET PC
3403 006100' 004767 005244 CALL D.VLD ; Validate address.
3404 006104' 116700 000041' MOVB D.P,R0 ; DID WE ENTER VIA A BREAK?
3405 006110' 002425 BLT D.PRO3 ; NO, RETURN TO CALLER
3406 006112' 016704 000144' MOV D.SVR4,R4 ; GET COUNT
3407 006116' 005767 000142' TST D.SVR2 ; WAS COUNT SPECIFIED?
3408 006122' 001002 BNE D.PRO1 ; NO
3409 006124' 012704 000001 MOV #1,R4 ; SET COUNT OF 1
3410 006130' 126727 000053' 000001 D.PRO1: CMPB D.ALTF,#1 ; AUTOMATIC PROCEDE?
3411 006136' 003401 BLE D.PRO6 ; BRANCH IF NOT
3412 006140' 005404 NEG R4 ; SET TO AUTOMATIC
3413 006142' 010460 000364' D.PRO6: MOV R4,D.CT(R0) ; PUT AWAY COUNT
3414 006146' 004767 003456 D.PRO7: CALL D.CRLF ; CARRIAGE RETURN LINE FEED
3415 006152' 105267 000105' D.PRO2: INCB D.T ; SET SPECIAL BIT TO 1
3416 006156' 010567 000110' MOV R5,D.TPC ; SAVE PC FOR 11/40 KLUDGE
3417 006162' 000413 BR D.GO5
3418 006164' 005767 000142' D.PRO3: TST D.SVR2 ; COUNT SPECIFIED?
3419 006170' 001404 BEQ D.GO3 ; NO, OK, RETURN TO CALLER OF DDT
3420 006172' 000167 171746 D.PRO9: JMP D.ERR ; ELSE ERROR
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 62
DDT.MAC 30-DEC-82 01:45 D.GO - GO
3422 .SBTTL D.GO - Go
3423 ;++
3424 ; FUNCTIONAL DESCRIPTION:
3425 ; None
3426 ;
3427 ; CALLING SEQUENCE:
3428 ; CALL D.GO
3429 ;
3430 ; INPUT PARAMETERS:
3431 ; None
3432 ;
3433 ; IMPLICIT INPUTS:
3434 ; None
3435 ;
3436 ; OUTPUT PARAMETERS:
3437 ; None
3438 ;
3439 ; IMPLICIT OUTPUTS:
3440 ; None
3441 ;
3442 ; CONDITION CODES:
3443 ; None
3444 ;
3445 ; SIDE EFFECTS:
3446 ; None
3447 ;--
3448
3449 006176' .PSECT $CODE$,I
3450 .ENABL LSB
3451 006176' D.GO:
3452 001 .IF DF D.MCB
3453 006176' 000167 171742 JMP D.ERR ; no starting address available
3454 .IFF
3455 MOV D.SVR4,R5 ; GET STARTING ADDRESS
3456 TST D.SVR2 ; STARTING ADDRESS SPECIFIED?
3457 BNE D.GO3 ; IF NOT,
3458 MOV JOBSA,R5 ; GET STARTING ADDRESS
3459 000 .ENDC
3460 006202' 004767 005142 D.GO3: CALL D.VLD ; Validate address.
3461 006206' 004767 003416 CALL D.CRLF
3462 006212' 042767 000020 000454' D.GO5: BIC #20,D.UPS ; Assume T-bit off
3463 006220' 005767 000104' TST D.SD.T ; and if it should be on
3464 006224' 001403 BEQ 40$ ; then
3465 006226' 052767 000020 000454' D.GO4: BIS #20,D.UPS ; set it.
3466 006234' 010567 000452' 40$: MOV R5,D.UR7
3467 006240' 004767 001240 CALL D.REST ; Restore user context
3468 001 .IF DF D.MCB
3469 006244' 012700 000001 MOV #1,R0 ; and request signal continuation.
3470 006250' 000207 RETURN
3471 .IFF
3472 PUSH$S <D.UPS,D.UR7> ; Set status and PC
3473 D.GO1: RTI ; THIS IS "RTT" IF 11/40...
3474 000 .ENDC
3475 .DSABL LSB
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 63
DDT.MAC 30-DEC-82 01:45 M.LAST - LAST CHANCE EXCEPTIONAL CONDITION HANDLER
3477 .SBTTL M.LAST - Last Chance Exceptional Condition Handler
3478 ;++
3479 ; FUNCTIONAL DESCRIPTION:
3480 ; None
3481 ;
3482 ; CALLING SEQUENCE:
3483 ; CALL M.LAST
3484 ;
3485 ; INPUT PARAMETERS:
3486 ; None
3487 ;
3488 ; IMPLICIT INPUTS:
3489 ; None
3490 ;
3491 ; OUTPUT PARAMETERS:
3492 ; None
3493 ;
3494 ; IMPLICIT OUTPUTS:
3495 ; None
3496 ;
3497 ; CONDITION CODES:
3498 ; None
3499 ;
3500 ; SIDE EFFECTS:
3501 ; None
3502 ;--
3503 001 .IF DF D.MCB
3504
3505 006252' .PSECT $CODE$,I
3506 006252' 016600 000006 M.LAST: MOV 6(SP),R0 ; Get signal vector
3507 006256' 005720 TST (R0)+ ; and if status specified
3508 006260' 003404 BLE 20$ ; and
3509 006262' 026710 000004G CMP S.SDTE+4,(R0) ; it is a DTE "magic finger"
3510 006266' 001001 BNE 20$ ; then fall into panic dump.
3511 006270' 000207 RETURN
3512 006272' 004767 000656 20$: CALL D.SAVE ; Save the context.
3513 006276' 112767 177777 000041' MOVB #-1,D.P
3514 006304' 016700 000506' MOV MSIGV,R0
3515 006310' 016000 000002 MOV 2(R0),R0
3516 006314' 026700 000004G CMP S.SBPT+4,R0
3517 006320' 001056 BNE 60$
3518 006322' 004767 004042 CALL M.TTCK
3519 006326' 103005 BCC 24$
3520 006330' 004767 004262 CALL M.SNCK
3521 006334' 103002 BCC 24$
3522 006336' 004767 004466 CALL M.USCK
3523 006342' 016705 000452' 24$: MOV D.UR7,R5 ; GET PC, IT POINTS TO THE INSTRUCTION
3524 006346' 105767 000105' TSTB D.T ; WERE WE PROCEEDING AFTER A BREAK?
3525 006352' 003413 BLE 28$ ; YES, FIX IT UP
3526 006354' 105767 000035' TSTB D.MACH ; 11/40,45?
3527 006360' 001403 BEQ 26$ ; NO, DON'T NEED TO KLUDGE
3528 006362' 020567 000110' CMP R5,D.TPC ; DID WE NOT EXECUTE THE BROKEN INSTRUCTION?
3529 006366' 001717 BEQ D.GO4 ; YES, TRY IT AGAIN
3530 006370' 105067 000105' 26$: CLRB D.T ; WE CAN CONTINUE NORMALLY
3531 006374' 105767 000104' TSTB D.S ; UNLESS WE ARE SINGLE STEPPING
3532 006400' 001704 BEQ D.GO5
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 63-1
DDT.MAC 30-DEC-82 01:45 M.LAST - LAST CHANCE EXCEPTIONAL CONDITION HANDLER
3533 006402' 004767 000450 28$: CALL D.BCHK ; Check for a breakpoint
3534 006406' 103415 BCS 34$
3535 006410' 110467 000041' MOVB R4,D.P ; and if it is
3536 006414' 003420 BLE 60$ ; then
3537 006416' 005764 000364' TST D.CT(R4) ; check the proceede count.
3538 006422' 100003 BPL 32$ ; BRANCH IF GETTING THERE
3539 006424' 005264 000364' INC D.CT(R4) ; COUNT 'EM OFF
3540 006430' 100404 BMI 34$ ; PROCEDE IF STILL NEGATIVE
3541 006432' 001411 32$: BEQ 60$ ; BRANCH IF AUTOMATIC PROCEDE
3542 006434' 005364 000364' DEC D.CT(R4) ; TEST REPEAT COUNT
3543 006440' 001404 BEQ 36$ ; BRANCH IF NO REPEAT
3544 006442' 016705 000452' 34$: MOV D.UR7,R5 ; Get user PC
3545 006446' 000167 177500 JMP D.PRO2 ; and procede.
3546 006452' 005264 000364' 36$: INC D.CT(R4) ; RESET COUNT TO 1
3547 006456' 105067 000105' 60$: CLRB D.T ; TURN OFF BIT
3548 006462' 004767 002572 CALL M.PROC
3549 006466' 116704 000041' MOVB D.P,R4
3550 006472' 001466 BEQ 80$
3551 006474' 112700 000072 MOVB #':,R0
3552 006500' 004767 003262 CALL D.TYPE
3553 006504' 110400 MOVB R4,R0
3554 006506' 100423 BMI 70$
3555 006510' 006200 ASR R0
3556 006512' 062700 000060 ADD #'0,R0
3557 006516' 012701 000057' MOV #M.BMES,R1
3558 006522' 110061 000001 MOVB R0,1(R1)
3559 006526' 004767 003110 CALL D.STYP
3560 006532' 016400 000406' MOV D.OPEN(R4),R0
3561 006536' 001444 BEQ 80$
3562 006540' 010067 000222' MOV R0,D.CAD
3563 006544' 004767 003022 CALL D.TTAB
3564 006550' 004777 000134' CALL @D.OMOD
3565 006554' 000435 BR 80$
3566 006556' 016701 000506' 70$: MOV MSIGV,R1
3567 006562' PUSH$S <(R1)+,R1>
3568 006566' 012100 MOV (R1)+,R0
3569 006570' 005001 CLR R1
3570 006572' 012702 000000G MOV #S.CSTS,R2
3571 006576' 004767 173702 CALL D.GTSS
3572 006602' 005701 TST R1
3573 006604' 001407 BEQ 74$
3574 006606' 004767 003030 CALL D.STYP
3575 006612' 000410 BR 76$
3576 006614' 112700 000040 72$: MOVB #' ,R0
3577 006620' 004767 003142 CALL D.TYPE
3578 006624' 011667 000222' 74$: MOV (SP),D.CAD
3579 006630' 004767 001164 CALL D.CADV
3580 006634' 062716 000002 76$: ADD #2,(SP)
3581 006640' 005366 000002 DEC 2(SP)
3582 006644' 001363 BNE 72$
3583 006646' POP$S ,2
3584 006650' 004767 002754 80$: CALL D.CRLF ; Type <CR><LF>,
3585 006654' 116704 000041' MOVB D.P,R4 ; If it is a breakpoint
3586 006660' 003412 BLE 84$ ; then
3587 006662' 005764 000364' TST D.CT(R4) ; AUTOMATIC PROCEDE?
3588 006666' 001031 BNE 88$ ; RETURN IF NOT
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 63-2
DDT.MAC 30-DEC-82 01:45 M.LAST - LAST CHANCE EXCEPTIONAL CONDITION HANDLER
3589 006670' 105737 177560 TSTB @#D.RCSR ; CHARACTER TYPED?
3590 006674' 100426 BMI 88$ ; EXIT IF SO
3591 006676' 016705 000452' 82$: MOV D.UR7,R5 ; RESTORE R5
3592 006702' 000167 177244 JMP D.PRO2 ; CONTINUE BREAKPOINT
3593 006706' 016700 000506' 84$: MOV MSIGV,R0 ; Pick up status code
3594 006712' 005720 TST (R0)+ ; if there is one.
3595 006714' 001416 BEQ 88$
3596 006716' 011000 MOV (R0),R0
3597 006720' 042700 177770 BIC #^C7,R0 ; Isolate the severity
3598 006724' 105760 000042' TSTB D.PSVR(R0) ; and check on action:
3599 006730' 100410 BMI 88$ ; <0 break
3600 006732' 003002 BGT 86$ ; >0 continue
3601 006734' 006200 ASR R0 ; =0 continue on success.
3602 006736' 103005 BCC 88$
3603 006740' 004767 000540 86$: CALL D.REST
3604 006744' 012700 000001 MOV #1,R0
3605 006750' 000207 RETURN
3606 006752' 016767 000452' 000214' 88$: MOV D.UR7,D.DOT ; exception address
3607 006760' 012767 010334' 000134' MOV #D.INST,D.OMOD ; with instruction typeout
3608 006766' 004767 174154 CALL D.OP3 ; (open it),
3609 006772' 004767 002574 CALL D.TTAB ; and a <tab>.
3610 006776' 000167 170776 JMP D.DCD
3611 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 64
DDT.MAC 30-DEC-82 01:45 M.PRIM - PRIMARY EXCEPTION CONDITION HANDLER
3613 .SBTTL M.PRIM - Primary Exception Condition Handler
3614 ;++
3615 ; FUNCTIONAL DESCRIPTION:
3616 ; None
3617 ;
3618 ; CALLING SEQUENCE:
3619 ; CALL M.PRIM
3620 ;
3621 ; INPUT PARAMETERS:
3622 ; None
3623 ;
3624 ; IMPLICIT INPUTS:
3625 ; None
3626 ;
3627 ; OUTPUT PARAMETERS:
3628 ; None
3629 ;
3630 ; IMPLICIT OUTPUTS:
3631 ; None
3632 ;
3633 ; CONDITION CODES:
3634 ; C-bit set = exception caused by DDT.
3635 ; C-bit clear = exception not caused by DDT.
3636 ;
3637 ; SIDE EFFECTS:
3638 ; None
3639 ;--
3640 001 .IF DF D.MCB
3641
3642 007002' .PSECT $CODE$,I
3643 007002' 016600 000004 M.PRIM: MOV 4(SP),R0 ; Get mechanism vector address.
3644 007006' 026037 000000G 000000G CMP M.AR5(R0),@#KISAR5 ; If a crash in us
3645 007014' 001017 BNE 90$ ; then
3646 007016' 016600 000006 MOV 6(SP),R0 ; get signal vector
3647 007022' 026760 000004G 000002 CMP S.SDTE+4,2(R0) ; and if not "DTE magic finger"
3648 007030' 001411 BEQ 90$ ; then
3649 007032' 062000 ADD (R0)+,R0 ; bypass parameter count
3650 007034' 067600 000006 ADD @6(SP),R0 ; to get address of signal PC.
3651 007040' 022710 120000 CMP #120000,(R0) ; If within the process
3652 007044' 101003 BHI 90$ ; then
3653 007046' 012710 000144' MOV #D.ERR,(R0) ; set to return from handler.
3654 007052' 005200 INC R0
3655 007054' 000207 90$: RETURN
3656 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 65
DDT.MAC 30-DEC-82 01:45 D.NXMT - NON-EXISTENT MEMORY TRAP
3658 .SBTTL D.NXMT - Non-existent memory trap
3659 ;++
3660 ; FUNCTIONAL DESCRIPTION:
3661 ; None
3662 ;
3663 ; CALLING SEQUENCE:
3664 ; CALL D.NXMT
3665 ;
3666 ; INPUT PARAMETERS:
3667 ; None
3668 ;
3669 ; IMPLICIT INPUTS:
3670 ; None
3671 ;
3672 ; OUTPUT PARAMETERS:
3673 ; None
3674 ;
3675 ; IMPLICIT OUTPUTS:
3676 ; None
3677 ;
3678 ; CONDITION CODES:
3679 ; None
3680 ;
3681 ; SIDE EFFECTS:
3682 ; None
3683 ;--
3684 001 .IF NDF D.MCB
3685
3686 .PSECT $CODE$,I
3687 D.NXMT: POP$S <D.UR7,D.UPS> ; SAVE PC AND STATUS
3688 CALL D.SAVE ; SAVE VARIOUS REGISTERS
3689 MOV #D.NM,D.ERF ; NXM TRAP SERVICE
3690 BR D.BRK ; HANDLE BREAKPOINT
3691 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 66
DDT.MAC 30-DEC-82 01:45 D.ILGT - ILLEGAL INSTRUCTION TRAP
3693 .SBTTL D.ILGT - Illegal instruction trap
3694 ;++
3695 ; FUNCTIONAL DESCRIPTION:
3696 ; None
3697 ;
3698 ; CALLING SEQUENCE:
3699 ; CALL D.ILGT
3700 ;
3701 ; INPUT PARAMETERS:
3702 ; None
3703 ;
3704 ; IMPLICIT INPUTS:
3705 ; None
3706 ;
3707 ; OUTPUT PARAMETERS:
3708 ; None
3709 ;
3710 ; IMPLICIT OUTPUTS:
3711 ; None
3712 ;
3713 ; CONDITION CODES:
3714 ; None
3715 ;
3716 ; SIDE EFFECTS:
3717 ; None
3718 ;--
3719 001 .IF NDF D.MCB
3720
3721 .PSECT $CODE$,I
3722 D.ILGT: POP$S <D.UR7,D.UPS> ; SAVE PC AND STATUS
3723 CALL D.SAVE ; SAVE VARIOUS REGISTERS
3724 MOV #D.IM,D.ERF ; ILLEGAL INSTRUCTION
3725 BR D.BRK ; HANDLE BREAKPOINT
3726 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 67
DDT.MAC 30-DEC-82 01:45 D.BRKT - BREAKPOINT HANDLER
3728 .SBTTL D.BRKT - Breakpoint Handler
3729 ;++
3730 ; FUNCTIONAL DESCRIPTION:
3731 ; None
3732 ;
3733 ; CALLING SEQUENCE:
3734 ; CALL D.BRKT
3735 ;
3736 ; INPUT PARAMETERS:
3737 ; None
3738 ;
3739 ; IMPLICIT INPUTS:
3740 ; None
3741 ;
3742 ; OUTPUT PARAMETERS:
3743 ; None
3744 ;
3745 ; IMPLICIT OUTPUTS:
3746 ; None
3747 ;
3748 ; CONDITION CODES:
3749 ; None
3750 ;
3751 ; SIDE EFFECTS:
3752 ; None
3753 ;--
3754
3755 007056' .PSECT $CODE$,I
3756 007056' D.BRKT:
3757 001 .IF NDF D.MCB
3758 POP$S <D.UR7,D.UPS> ; SAVE PC AND STATUS
3759 CALL D.SAVE ; SAVE VARIOUS REGISTERS
3760 MOV D.UR7,R5 ; GET PC, IT POINTS TO THE INSTRUCTION
3761 TSTB D.T ; WERE WE PROCEEDING AFTER A BREAK?
3762 BLE 40$ ; YES, FIX IT UP
3763 TSTB D.MACH ; 11/40,45?
3764 BEQ 34$ ; NO, DON'T NEED TO KLUDGE
3765 CMP R5,D.TPC ; DID WE NOT EXECUTE THE BROKEN INSTRUCTION?
3766 BEQ D.GO4 ; YES, TRY IT AGAIN
3767 34$: CLRB D.T ; WE CAN CONTINUE NORMALLY
3768 TSTB D.S ; UNLESS WE ARE SINGLE STEPPING
3769 BEQ D.GO5
3770 40$: CALL D.BCHK ; Check for a breakpoint
3771 BCS 54$
3772 MOVB R4,D.P ; and set the breakpoint flag.
3773 BMI 90$
3774 TST D.CT(R4) ; AUTOMATIC PROCEDE?
3775 BPL 52$ ; BRANCH IF GETTING THERE
3776 INC D.CT(R4) ; COUNT 'EM OFF
3777 BMI 54$ ; PROCEDE IF STILL NEGATIVE
3778 52$: BEQ 62$ ; BRANCH IF AUTOMATIC PROCEDE
3779 DEC D.CT(R4) ; TEST REPEAT COUNT
3780 BEQ 60$ ; BRANCH IF NO REPEAT
3781 54$: MOV D.UR7,R5 ; Get user PC
3782 JMP D.PRO2 ; and procede.
3783 60$: INC D.CT(R4) ; RESET COUNT TO 1
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 67-1
DDT.MAC 30-DEC-82 01:45 D.BRKT - BREAKPOINT HANDLER
3784 62$: PUSH$S D.CT(R4) ; Save count.
3785 MOV #D.BMES,R1 ; Get breakpoint message
3786 ASR R4 ; and
3787 ADD #'0,R4 ; insert
3788 MOVB R4,1(R1) ; breakpoint number.
3789 CALL D.STYP ; Type it
3790 MOV D.UR7,R0 ; Get address of break
3791 CALL D.RFND ; and relocate.
3792 MOV D.OPEN(R4),R0 ; a word is to be opened
3793 BEQ 68$ ; then
3794 MOV R0,D.DOT ; put in current word
3795 CALL D.TTAB ; type a tab
3796 CALL D.OP3 ; and open it.
3797 68$: TST (SP)+ ; AUTOMATIC PROCEDE?
3798 BNE D.BRK8 ; RETURN IF NOT
3799 002 .IF NDF D.RSX
3800 TSTB @#D.RCSR ; CHARACTER TYPED?
3801 BMI D.BRK8 ; EXIT IF SO
3802 001 .ENDC
3803 MOV D.UR7,R5 ; RESTORE R5
3804 JMP D.PRO7 ; CONTINUE BREAKPOINT
3805 90$: MOV #D.BE,D.ERF ; ERROR: UNEXPECTED BREAK
3806
3807 D.BRK: MOVB #-1,D.P ; DISALLOW PROCEED
3808 CLRB D.T ; TURN OFF BIT
3809 MOV D.UR7,R0 ; GET ADDRESS OF BREAK
3810 CALL D.RFND ; RELOCATE
3811 MOV D.ERF,R1 ; GET CODE
3812 CALL D.STYP ; TYPE MESSAGE
3813 CLR D.ERF ; REMOVE TRACES OF THIS ENTRY
3814
3815 D.BRK8: CALL D.TTAB ; TYPE TAB
3816 JMP D.DCD ; RETURN
3817 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 68
DDT.MAC 30-DEC-82 01:45 D.BCHK - CHECK FOR VALID BREAKPOINT
3819 .SBTTL D.BCHK - Check for Valid Breakpoint
3820 ;++
3821 ; FUNCTIONAL DESCRIPTION:
3822 ; None
3823 ;
3824 ; CALLING SEQUENCE:
3825 ; CALL D.BCHK
3826 ;
3827 ; INPUT PARAMETERS:
3828 ; None
3829 ;
3830 ; IMPLICIT INPUTS:
3831 ; None
3832 ;
3833 ; OUTPUT PARAMETERS:
3834 ; R4 = proceede index
3835 ;
3836 ; IMPLICIT OUTPUTS:
3837 ; None
3838 ;
3839 ; CONDITION CODES:
3840 ; Carry set = proceede
3841 ; Carry clear = break
3842 ;
3843 ; SIDE EFFECTS:
3844 ; Registers R0, R4 and R5 are modified.
3845 ;--
3846
3847 007056' .PSECT $CODE$,I
3848 007056' 005004 D.BCHK: CLR R4 ; Assume single stepping.
3849 007060' 105767 000104' TSTB D.S ; If single stepping
3850 007064' 001021 BNE 70$ ; then all is well.
3851 007066' 016705 000452' MOV D.UR7,R5 ; Get breakpoint
3852 007072' 162705 000002 SUB #2,R5 ; and back up over BPT.
3853 007076' 012704 000020 MOV #D.BKP*2,R4 ; GET A COUNTER
3854 007102' 004767 176150 10$: CALL D.BKCK
3855 007106' 001405 BEQ 60$ ; BRANCH IF YES
3856 007110' 162704 000002 18$: SUB #2,R4
3857 007114' 001372 BNE 10$ ; LOOP, UNLESS DONE
3858 007116' 005304 DEC R4
3859 007120' 000412 BR 80$
3860 007122' 010567 000452' 60$: MOV R5,D.UR7 ; Back up PC to our BPT.
3861 007126' 000407 BR 80$
3862 007130' 100006 70$: BPL 80$
3863 007132' 026705 000432' CMP D.BKHI,R5
3864 007136' 103405 BLO 90$
3865 007140' 020567 000430' CMP R5,D.BKLO
3866 007144' 103402 BLO 90$
3867 007146' 105067 000104' 80$: CLRB D.S
3868 007152' 000207 90$: RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 69
DDT.MAC 30-DEC-82 01:45 D.SAVE - SAVE THE WORLD
3870 .SBTTL D.SAVE - Save the world
3871 ;++
3872 ; FUNCTIONAL DESCRIPTION:
3873 ; None
3874 ;
3875 ; CALLING SEQUENCE:
3876 ; CALL D.SAVE
3877 ;
3878 ; INPUT PARAMETERS:
3879 ; None
3880 ;
3881 ; IMPLICIT INPUTS:
3882 ; None
3883 ;
3884 ; OUTPUT PARAMETERS:
3885 ; None
3886 ;
3887 ; IMPLICIT OUTPUTS:
3888 ; None
3889 ;
3890 ; CONDITION CODES:
3891 ; None
3892 ;
3893 ; SIDE EFFECTS:
3894 ; None
3895 ;--
3896
3897 007154' .PSECT $CODE$,I
3898 007154' D.SAVE: POP$S D.XXX ; PICK UP RETURN ADDRESS FROM STACK
3899 001 .IF DF D.MCB
3900 007160' MFPS D.DPS ; Save DDT PS
3901 007166' 010667 000460' MOV SP,D.DR6 ; and stack pointer.
3902 007172' 016667 000004 000504' MOV 4(SP),MMCHV ; Get mechanism
3903 007200' 016667 000006 000506' MOV 6(SP),MSIGV ; and signal vector addresses.
3904 007206' 016700 000504' MOV MMCHV,R0
3905 007212' 016067 000000G 000434' MOV M.R0(R0),D.UR0 ; Get registers.
3906 .IRPC rg,<12345>
3907 MOV R'rg',D.UR'rg'
3908 .ENDM
3909 007244' 012701 172340 MOV #172340,R1
3910 007250' 012702 000464' MOV #MAPR,R2
3911 007254' 012703 000010 MOV #8.,R3
3912 007260' 012122 10$: MOV (R1)+,(R2)+
3913 007262' 077302 SOB R3,10$
3914 007264' 016067 000000G 000476' MOV M.AR5(R0),MAPR5
3915 007272' SMAP$ MAPR6
3916 007300' 016700 000506' MOV MSIGV,R0 ; Get the signal vector
3917 007304' 010067 000450' MOV R0,D.UR6 ; to set default user stack pointer,
3918 007310' 014067 000452' MOV -(R0),D.UR7 ; user PC
3919 007314' 016767 000462' 000454' MOV D.DPS,D.UPS ; and PS.
3920 007322' 105067 000052' CLRB D.E ; Assume SIGNAL
3921 007326' 012702 000000G MOV #S.SSTS,R2 ; Check if it is an exception.
3922 007332' 005001 CLR R1
3923 007334' 016000 000004 MOV 2+2(R0),R0
3924 007340' 004767 173140 CALL D.GTSS
3925 007344' 005701 TST R1
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 69-1
DDT.MAC 30-DEC-82 01:45 D.SAVE - SAVE THE WORLD
3926 007346' 001424 BEQ 20$ ; If so,
3927 007350' 105167 000052' COMB D.E ; set hardware exception,
3928 007354' 016700 000506' MOV MSIGV,R0 ; get
3929 007360' 062000 ADD (R0)+,R0 ; address
3930 007362' 067700 000506' ADD @MSIGV,R0 ; of
3931 007366' 012067 000452' MOV (R0)+,D.UR7 ; user PC,
3932 007372' 012067 000454' MOV (R0)+,D.UPS ; user PS,
3933 007376' 010067 000450' MOV R0,D.UR6 ; user stack pointer.
3934 007402' 032767 140000 000454' BIT #140000,D.UPS
3935 007410' 001403 BEQ 20$
3936 007412' 006506 MFPI SP
3937 007414' POP$S D.UR6
3938 007420' 20$:
3939 .IFF
3940 MOV SP,D.UR6 ; SAVE USER STACK ADDRESS
3941 MOV #D.UR6,SP ; SET TO INTERNAL STACK
3942 PUSH$S <R5,R4,R3,R2,R1,R0>
3943 002 .IF DF D.GDP
3944 TRAP 72 ; USECLR
3945 D.SAV9: NOP ; MAY HAVE USERET
3946 TRAP 107 ; SCRUNB
3947 001 .ENDC
3948 .IFTF
3949 007420' 005767 000104' TST D.SD.T ; TEST D.S AND D.T
3950 007424' 001022 BNE 50$ ; SKIP BREAKPOINTS IF SO
3951 .IFT
3952 007426' SMAP$S
3953 .IFTF
3954 007432' 005001 CLR R1 ; REMOVE ALL BREAKPOINTS
3955 007434' 016104 000254' 30$: MOV D.BKTB(R1),R4 ; GET ADDRESS OF BREAKPOINT
3956 007440' 001406 BEQ 38$ ; BRANCH IF NOT FILLED
3957 .IFT
3958 007442' MAP$ D.BIAS(R1)
3959 007450' 016171 000342' 000276' MOV D.UIN(R1),@D.ADDR(R1) ; RESTORE USER'S INSTRUCTION
3960 .IFF
3961 MOV D.UIN(R1),(R4) ; RESTORE USER'S INSTRUCTION
3962 .IFTF
3963 007456' 005721 38$: TST (R1)+ ; LOOP
3964 007460' 020127 000020 CMP R1,#D.BKP*2 ; AT END?
3965 007464' 003763 BLE 30$ ; RE-LOOP UNTIL DONE
3966 .IFT
3967 007466' MAP$S
3968 .IFTF
3969 007472' 50$:
3970 .IFF
3971 MOV #340,R1 ; PS
3972 MOV #4,R0 ; START FILLING AT WORD 4
3973 PUSH$S (R0) ; 4
3974 MOV #D.SAV5,(R0)+ ; INTERNAL NXMS
3975 PUSH$S (R0) ; 6
3976 MOV R1,(R0)+ ; SET VECTOR PS
3977 PUSH$S (R0) ; 10
3978 MOV #D.SAV5,(R0)+ ; INTERRUPT FOR ILLEGAL INSTRUCTION
3979 PUSH$S (R0) ; 12
3980 MOV R1,(R0)+ ; SET VECTOR PS
3981
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 69-2
DDT.MAC 30-DEC-82 01:45 D.SAVE - SAVE THE WORLD
3982 MOV #D.BRKT,(R0)+ ; BPT VECTOR
3983 MOV R1,(R0) ; SET VECTOR PS
3984 002 .IF NDF D.RSX
3985 PUSH$S @#D.RCSR ; SAVE KEYBOARD STATUS
3986 CLR @#D.RCSR ; TURN OFF ALL INTERRUPTS
3987 003 .IF DF D.KSR!D.MCB
3988 PUSH$S @#D.TCSR ; SAVE PRINTER STATUS
3989 CLR @#D.TCSR ; REMOVE ALL ENABLES
3990 002 .ENDC
3991 001 .ENDC
3992 MOV SP,D.DR6 ; Set DDT stack pointer.
3993 MOVB #2,D.MACH ; SET MACHINE TO 11/45
3994 SXT R1 ; 11/40,45 INSTRUCTION
3995 CMPB D.MACH,#1 ; 11/15?
3996 BEQ 70$ ; BRANCH IF NOT
3997 MOV #RTT,D.GO1 ; USE RTT INSTRUCTION
3998 70$:
3999 002 .IF NDF D.RSX
4000 TST @#177772 ; WORD ONLY EXISTS ON 11/45
4001 001 .ENDC
4002 MOV #D.ERR,@#4 ; RESET NXM ADDRESS
4003 MOV #D.ILGT,@#10 ; ILLEGAL INSTRUCTION
4004 .IFTF
4005 007472' 012767 000224' 000222' MOV #D.NLWD,D.CAD ; No word is open
4006 007500' 000177 000226' JMP @D.XXX ; RETURN
4007 .IFF
4008
4009 D.SAV5: DECB D.MACH ; IT FAILED, DIFFERENT MACHINE
4010 RTI ; RETURN
4011 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 70
DDT.MAC 30-DEC-82 01:45 D.REST - RESTORE THE WORLD
4013 .SBTTL D.REST - Restore the world
4014 ;++
4015 ; FUNCTIONAL DESCRIPTION:
4016 ; None
4017 ;
4018 ; CALLING SEQUENCE:
4019 ; CALL D.REST
4020 ;
4021 ; INPUT PARAMETERS:
4022 ; None
4023 ;
4024 ; IMPLICIT INPUTS:
4025 ; None
4026 ;
4027 ; OUTPUT PARAMETERS:
4028 ; None
4029 ;
4030 ; IMPLICIT OUTPUTS:
4031 ; None
4032 ;
4033 ; CONDITION CODES:
4034 ; None
4035 ;
4036 ; SIDE EFFECTS:
4037 ; None
4038 ;--
4039
4040 007504' .PSECT $CODE$,I
4041 007504' D.REST: POP$S D.XXX ; GET RETURN ADDRESS FROM STACK
4042 007510' 005767 000104' TST D.SD.T ; TEST D.S AND D.T
4043 007514' 001025 BNE 30$ ; SKIP BREAKPOINTS IF SO
4044 001 .IF DF D.MCB
4045 007516' SMAP$S
4046 .IFTF
4047 007522' 012701 000020 MOV #<D.BKP*2>,R1 ; RESTORE ALL BREAKPOINTS
4048 007526' 016104 000254' 10$: MOV D.BKTB(R1),R4 ; GET ADDRESS OF BREAKPOINT
4049 007532' 001411 BEQ 18$ ; BRANCH IF NO BREAKPOINT
4050 .IFT
4051 007534' MAP$ D.BIAS(R1)
4052 007542' 017161 000276' 000342' MOV @D.ADDR(R1),D.UIN(R1) ; SAVE CONTENTS OF USER LOCATION
4053 007550' 012771 000003 000276' MOV #3,@D.ADDR(R1) ; and set BPT
4054 .IFF
4055 MOV (R4),D.UIN(R1) ; SAVE CONTENTS OF USER LOCATION
4056 MOV #3,(R4) ; and set BPT
4057 .IFTF
4058 007556' 162701 000002 18$: SUB #2,R1 ; DECREMENT
4059 007562' 002361 BGE 10$ ; RE-LOOP UNTIL DONE
4060 .IFT
4061 007564' MAP$S
4062 .IFTF
4063 007570' 016706 000460' 30$: MOV D.DR6,SP ; Reset DDT stack.
4064 .IFT
4065 007574' 105767 000052' TSTB D.E ; If it is an exception
4066 007600' 100012 BPL 50$ ; then
4067 007602' 016700 000506' MOV MSIGV,R0 ; get
4068 007606' 062000 ADD (R0)+,R0 ; address
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 70-1
DDT.MAC 30-DEC-82 01:45 D.REST - RESTORE THE WORLD
4069 007610' 067700 000506' ADD @MSIGV,R0 ; of
4070 007614' 016720 000452' MOV D.UR7,(R0)+ ; and user PC.
4071 007620' 016710 000454' MOV D.UPS,(R0) ; user PS,
4072 007624' 000403 BR 60$
4073 007626' 016767 000454' 000462' 50$: MOV D.UPS,D.DPS
4074 007634' 016700 000504' 60$: MOV MMCHV,R0
4075 007640' 016760 000434' 000000G MOV D.UR0,M.R0(R0)
4076 .IRPC rg,<12345>
4077 MOV D.UR'rg',R'rg'
4078 .ENDM
4079 007672' MAP$ MAPR6
4080 007700' 016760 000476' 000000G MOV MAPR5,M.AR5(R0)
4081 007706' MTPS D.DPS ; Reset DDT status.
4082 .IFF
4083 002 .IF NDF D.RSX
4084 003 .IF DF D.KSR!D.MCB
4085 POP$S @#D.TCSR ; PUT TELETYPE STATUS BACK
4086 002 .ENDC
4087 POP$S @#D.RCSR ; PUT KEYBOARD STATUS BACK
4088 001 .ENDC
4089 MOV #12,R0 ; RESTORE HIS VECTORS
4090 POP$S <(R0),-(R0),-(R0),-(R0)>
4091 002 .IF DF D.RSX
4092 MOV #D.SVDB,R0 ;THIS IS THE WRONG WAY TO DO THIS, BUT TOO BAD!
4093 MOV #D.TRPV,R1 ;VECTOR OF TRAP VECTORS
4094 MOV #10,R2 ;LAST I COUNTED THERE WERE THIS MANY
4095 40$: MOV @(R1)+,(R0)+ ;MOVE ONE OF THEM
4096 SOB R2,40$ ;MOVE REST
4097 SVDB$S #D.SVDB,#10
4098 001 .ENDC
4099 002 .IF DF D.GDP
4100 TRAP 144 ; USERET
4101 001 .ENDC
4102 POP$S <R0,R1,R2,R3,R4,R5>
4103 MOV (SP),SP ; RESTORE USER STACK
4104 000 .ENDC
4105 007714' 000177 000226' JMP @D.XXX ; AND RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 71
DDT.MAC 30-DEC-82 01:45 D.RFND - DISPLAY ADDRESS
4107 .SBTTL D.RFND - Display Address
4108 ;++
4109 ; FUNCTIONAL DESCRIPTION:
4110 ; None
4111 ;
4112 ; CALLING SEQUENCE:
4113 ; CALL D.RFND
4114 ;
4115 ; INPUT PARAMETERS:
4116 ; R0 = word to display.
4117 ;
4118 ; IMPLICIT INPUTS:
4119 ; D.SVR4 =
4120 ; D.FMT =
4121 ;
4122 ; OUTPUT PARAMETERS:
4123 ; None
4124 ;
4125 ; IMPLICIT OUTPUTS:
4126 ; D.FIND =
4127 ; D.LASW =
4128 ; D.LASV =
4129 ;
4130 ; CONDITION CODES:
4131 ; None
4132 ;
4133 ; SIDE EFFECTS:
4134 ; Registers R0, R2 through R4 are modified.
4135 ; Routines D.GTSM, D.TYPE and D.TYPN are called.
4136 ;--
4137
4138 007720' .PSECT $CODE$,I
4139 007720' D.RFND: PUSH$S <R1,R0> ; SAVE R1 and ADDRESS FOR LATER
4140 007724' 020067 000144' CMP R0,D.SVR4 ; IS IT THE ADDRESS WE ARE LOOKING FOR?
4141 007730' 001002 BNE 10$ ; BRANCH IF NOT
4142 007732' 105267 000107' INCB D.FIND ; MARK IT FOUND
4143 007736' 005767 000122' 10$: TST D.IFMT ; ABSOLUTE ADDRESSING?
4144 007742' 001016 BNE 40$ ; BRANCH IF SO
4145 007744' 004767 172524 CALL D.GTSM ; GET SYMBOL (IF ANY)
4146 007750' 005701 TST R1 ; ANY SYMBOL?
4147 007752' 001412 BEQ 40$ ; BRANCH IF NOT
4148 007754' PUSH$S R0
4149 007756' 004767 001660 CALL D.STYP
4150 007762' POP$S R1 ; GET OFFSET
4151 007764' 001407 BEQ 50$ ; BRANCH IF NONE
4152 007766' 012700 000053 MOV #'+,R0 ; MAKE A PLUS
4153 007772' 004767 001770 CALL D.TYPE ; TYPE IT
4154 007776' 010100 MOV R1,R0 ; GET OFFSET
4155 010000' 004767 001644 40$: CALL D.TYPN ; TYPE THE NUMBER
4156 010004' 011667 000212' 50$: MOV (SP),D.LASW ; LAST TYPED WORD
4157 010010' POP$S <D.LASV,R1> ; LAST TYPED ADDRESS and R1
4158 010016' 000207 RETURN ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 72
DDT.MAC 30-DEC-82 01:45 D.CADV - DISPLAY NUMBER AT CURRENT ADDRESS
4160 .SBTTL D.CADV - Display Number at Current Address
4161 ;++
4162 ; FUNCTIONAL DESCRIPTION:
4163 ; None
4164 ;
4165 ; CALLING SEQUENCE:
4166 ; CALL D.CADV
4167 ;
4168 ; INPUT PARAMETERS:
4169 ; None
4170 ;
4171 ; IMPLICIT INPUTS:
4172 ; D.BW =
4173 ; D.CAD =
4174 ;
4175 ; OUTPUT PARAMETERS:
4176 ; None
4177 ;
4178 ; IMPLICIT OUTPUTS:
4179 ; D.LFIN =
4180 ;
4181 ; CONDITION CODES:
4182 ; None
4183 ;
4184 ; SIDE EFFECTS:
4185 ; Registers R0 through R3 are modified.
4186 ; Routines D.RFND and D.TYPN are called.
4187 ;--
4188
4189 010020' .PSECT $CODE$,I
4190 010020' 004767 003344 D.CADV: CALL D.FTCH ; Fetch the byte/word
4191 010024' 022767 000001 000120' CMP #1,D.BW ; BYTE MODE?
4192 010032' 001403 BEQ 10$ ; BRANCH IF SO
4193 010034' 004767 177660 CALL D.RFND ; TYPE NUMBER
4194 010040' 000402 BR 20$ ; RETURN
4195 010042' 004767 001602 10$: CALL D.TYPN ; TYPE IT
4196 010046' 005067 000112' 20$: CLR D.LFIN ; TURN OFF LINE-FEED SKIPPING
4197 010052' 000207 RETURN ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 73
DDT.MAC 30-DEC-82 01:45 D.ASCI - DISPLAY ASCII BYTES AT CURRENT ADDRESS
4199 .SBTTL D.ASCI - Display ASCII Bytes at Current Address
4200 ;++
4201 ; FUNCTIONAL DESCRIPTION:
4202 ; None
4203 ;
4204 ; CALLING SEQUENCE:
4205 ; CALL D.ASCI
4206 ;
4207 ; INPUT PARAMETERS:
4208 ; None
4209 ;
4210 ; IMPLICIT INPUTS:
4211 ; D.CAD =
4212 ;
4213 ; OUTPUT PARAMETERS:
4214 ; None
4215 ;
4216 ; IMPLICIT OUTPUTS:
4217 ; D.LASV =
4218 ; D.LASW =
4219 ; D.LFIN =
4220 ;
4221 ; CONDITION CODES:
4222 ; None
4223 ;
4224 ; SIDE EFFECTS:
4225 ; Registers R0 and R5 are modified.
4226 ; Routine D.TYPE are called.
4227 ;--
4228
4229 010054' .PSECT $CODE$,I
4230 010054' 004767 003310 D.ASCI: CALL D.FTCH
4231 010060' 010067 000210' MOV R0,D.LASV ; LAST TYPED DATA
4232 010064' 010067 000212' MOV R0,D.LASW ; LAST TYPED WORD TOO
4233 010070' 004767 001672 CALL D.TYPE ; TYPE IT
4234 010074' 022767 000001 000120' CMP #1,D.BW ; If in byte mode
4235 010102' 001405 BEQ 10$ ; then only one character.
4236 010104' 005000 CLR R0
4237 010106' 156700 000211' BISB D.LASV+1,R0 ; GET NEXT CHARACTER
4238 010112' 004767 001650 CALL D.TYPE ; TYPE IT
4239 010116' 005067 000112' 10$: CLR D.LFIN ; TURN OFF LINE-FEED SKIPPING
4240 010122' 000207 D.RTS: RETURN ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 74
DDT.MAC 30-DEC-82 01:45 D.PART - DISPLAY MULTI-BYTE WORD AT CURRENT ADDRESS
4242 .SBTTL D.PART - Display Multi-byte Word at Current Address
4243 ;++
4244 ; FUNCTIONAL DESCRIPTION:
4245 ; None
4246 ;
4247 ; CALLING SEQUENCE:
4248 ; CALL D.PART
4249 ;
4250 ; INPUT PARAMETERS:
4251 ; None
4252 ;
4253 ; IMPLICIT INPUTS:
4254 ; D.CAD =
4255 ; D.SIZE =
4256 ;
4257 ; OUTPUT PARAMETERS:
4258 ; None
4259 ;
4260 ; IMPLICIT OUTPUTS:
4261 ; D.LASV =
4262 ; D.LASW =
4263 ; D.LFIN =
4264 ;
4265 ; CONDITION CODES:
4266 ; None
4267 ;
4268 ; SIDE EFFECTS:
4269 ; Registers R0, R1, R2, R3 and R5 are modified.
4270 ; Routines D.TYPN and D.TYPE are called.
4271 ;--
4272
4273 010124' .PSECT $CODE$,I
4274 010124' 004767 003240 D.PART: CALL D.FTCH ; Get byte/word.
4275 010130' 010067 000210' MOV R0,D.LASV ; LAST TYPED DATA
4276 010134' 010067 000212' MOV R0,D.LASW ; LAST TYPED WORD TOO
4277 010140' 010005 MOV R0,R5
4278 010142' PUSH$S #16. ; Assume 16 bits
4279 010146' 022767 000001 000120' CMP #1,D.BW ; and if byte
4280 010154' 001002 BNE 10$ ; then
4281 010156' 012716 000010 MOV #8.,(SP) ; set as 8 bits.
4282 010162' 010500 10$: MOV R5,R0 ; ACCUMULATOR FOR BYTE
4283 010164' 012703 177777 MOV #177777,R3 ; MASK FOR BYTE
4284 010170' 016702 000232' MOV D.SIZE,R2 ; BYTE SIZE
4285 010174' 006205 20$: ASR R5 ; REMOVE ONE BIT
4286 010176' 006303 ASL R3 ; ONE MORE BIT IN MASK
4287 010200' 005316 DEC (SP) ; ONE LESS BIT IN WORD
4288 010202' 003402 BLE 30$ ; EXIT IF DONE
4289 010204' 005302 DEC R2 ; ONE LESS BIT IN BYTE
4290 010206' 003372 BGT 20$ ; LOOP IF NOT DONE
4291 010210' 040300 30$: BIC R3,R0 ; MASK WORD
4292 010212' 004767 001432 CALL D.TYPN ; TYPE BYTE
4293 010216' 005716 TST (SP) ; ALL DONE?
4294 010220' 003405 BLE 40$ ; BRANCH IF SO
4295 010222' 012700 000054 MOV #',,R0 ; COMMA
4296 010226' 004767 001534 CALL D.TYPE ; TYPE IT
4297 010232' 000753 BR 10$ ; GET NEXT BYTE
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 74-1
DDT.MAC 30-DEC-82 01:45 D.PART - DISPLAY MULTI-BYTE WORD AT CURRENT ADDRESS
4298 010234' 40$: POP$S ,1 ; FIX STACK
4299 010236' 005067 000112' CLR D.LFIN ; TURN OFF LINE-FEED SKIPPING
4300 010242' 000207 RETURN ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 75
DDT.MAC 30-DEC-82 01:45 D.RADC - DISPLAY RADIX-50 WORD AT CURRENT ADDRESS
4302 .SBTTL D.RADC - Display Radix-50 Word at Current Address
4303 ;++
4304 ; FUNCTIONAL DESCRIPTION:
4305 ; None
4306 ;
4307 ; CALLING SEQUENCE:
4308 ; CALL D.RADC
4309 ;
4310 ; INPUT PARAMETERS:
4311 ; None
4312 ;
4313 ; IMPLICIT INPUTS:
4314 ; D.CAD =
4315 ;
4316 ; OUTPUT PARAMETERS:
4317 ; None
4318 ;
4319 ; IMPLICIT OUTPUTS:
4320 ; D.SYM =
4321 ; D.LASV =
4322 ; D.LASW =
4323 ; D.LFIN =
4324 ;
4325 ; CONDITION CODES:
4326 ; None
4327 ;
4328 ; SIDE EFFECTS:
4329 ; Registers R0 through R4 are modified.
4330 ; Routines , D.CHAR and D.STYP are called.
4331 ;--
4332
4333 010244' .PSECT $CODE$,I
4334 010244' 022767 000001 000120' D.RADC: CMP #1,D.BW ; If in byte mode
4335 010252' 001426 BEQ 90$ ; then display as numeric.
4336 010254' 004767 003110 CALL D.FTCH ; Fetch the word
4337 010260' 012701 000070' MOV #D.SYM,R1 ; ADDRESS FOR RESULT
4338 010264' 004767 003020 CALL D.CHAR ; MAKE CHARACTERS OF IT
4339 010270' 105011 CLRB (R1)
4340 010272' 012701 000070' MOV #D.SYM,R1 ; ADDRESS OF FIRST CHARACTER
4341 010276' 004767 001340 CALL D.STYP ; TYPE THEM
4342 010302' 016704 000222' MOV D.CAD,R4
4343 010306' 004767 000400' CALL D.GETW
4344 010312' 010067 000210' MOV R0,D.LASV ; LAST TYPED DATA
4345 010316' 010067 000212' MOV R0,D.LASW ; LAST TYPED WORD TOO
4346 010322' 005067 000112' CLR D.LFIN ; TURN OFF LINE-FEED SKIPPING
4347 010326' 000207 RETURN ; RETURN
4348 010330' 000167 177464 90$: JMP D.CADV ; Display as numeric.
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 76
DDT.MAC 30-DEC-82 01:45 D.INST - DISPLAY INSTRUCTION AT CURRENT ADDRESS
4350 .SBTTL D.INST - Display Instruction at Current Address
4351 ;++
4352 ; FUNCTIONAL DESCRIPTION:
4353 ; None
4354 ;
4355 ; CALLING SEQUENCE:
4356 ; CALL D.INST
4357 ;
4358 ; INPUT PARAMETERS:
4359 ; None
4360 ;
4361 ; IMPLICIT INPUTS:
4362 ; D.CAD =
4363 ; D.DOT =
4364 ;
4365 ; OUTPUT PARAMETERS:
4366 ; None
4367 ;
4368 ; IMPLICIT OUTPUTS:
4369 ; D.LFIN =
4370 ; D.LASW =
4371 ;
4372 ; CONDITION CODES:
4373 ; None
4374 ;
4375 ; SIDE EFFECTS:
4376 ; Registers R0 through R5 are modified.
4377 ; Routines D.TTAB, D.DC49 and D.STYP are called.
4378 ;--
4379 001565' .PSECT $PLIT$,D
4380 001566' .EVEN
4381 001566' D.REGT: .IRP rg,<R0,R1,R2,R3,R4,R5,SP,PC>
4382 .WORD "rg
4383 .ENDM
4384
4385 010334' .PSECT $CODE$,I
4386 010334' 022767 000001 000120' D.INST: CMP #1,D.BW ; If in byte mode
4387 010342' 001427 BEQ 90$ ; then just type value.
4388 010344' 016705 000222' MOV D.CAD,R5 ; PUT CURRENT ADDRESS INTO DECODE
4389 001 .IF DF D.MCB
4390 010350' 022705 177700 CMP #177700,R5 ; and if in registers
4391 010354' 101422 BLOS 90$ ; then use numeric typeout.
4392 000 .ENDC
4393 010356' 004767 001210 CALL D.TTAB ; TYPE TAB
4394 010362' 004767 000040 CALL D.DC49 ; DECODE IT
4395 010366' 166705 000222' SUB D.CAD,R5 ; GET INSTRUCTION LENGTH
4396 010372' 005745 TST -(R5) ; DECREMENT TO BE OFFSET OF INSTR
4397 010374' 026767 000214' 000222' CMP D.DOT,D.CAD ; ARE WE AT THE DOT?
4398 010402' 001002 BNE 10$ ; DON'T SET INCREMENT IF NOT
4399 010404' 010567 000112' MOV R5,D.LFIN ; PUT IN LINE-FEED INCREMENT
4400 010410' 004767 002754 10$: CALL D.FTCH
4401 010414' 010067 000212' MOV R0,D.LASW ; LAST TYPED WORD
4402 010420' 000207 RETURN ; RETURN
4403 010422' 000167 177372 90$: JMP D.CADV ; Display as numeric.
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 76-1
DDT.MAC 30-DEC-82 01:45 D.INST - DISPLAY INSTRUCTION AT CURRENT ADDRESS
4405 ; TYPE WORD(S) AT R5 IN INSTRUCTION FORMAT
4406
4407 .ENABL LSB
4408 010426' D.DC49: PUSH$S R4
4409 010430' 010504 MOV R5,R4
4410 010432' 004767 000400' CALL D.GETW
4411 010436' POP$S R4
4412 010440' 062705 000002 ADD #2,R5
4413 010444' 012701 000270' MOV #D.TOPS+2,R1 ; POINT TO ARRAY OF INSTRUCTION VALUES
4414 010450' 010004 MOV R0,R4 ; SAVE INSTRUCTION
4415 010452' 005003 CLR R3 ; DON'T TYPE A "B"
4416 010454' 042700 100000 BIC #100000,R0 ; START OUT LOOKING FOR INS. WITHOUT "B"
4417 010460' 020021 10$: CMP R0,(R1)+ ; DOES INSTRUCTION FALL IN HERE?
4418 010462' 101376 BHI 10$ ; NO, LOOP
4419 010464' 020400 CMP R4,R0 ; DID WE GET REAL INSTRUCTION MATCH?
4420 010466' 001405 BEQ 20$ ; YES
4421 010470' 010400 MOV R4,R0 ; NO, BUT DO SO NEXT TIME
4422 010472' 105761 000237 TSTB D.LEGS-D.TOPS-4(R1) ; BYTE INSTRUCTION?
4423 010476' 100370 BPL 10$ ; NO!
4424 010500' 005303 DEC R3 ; PRINT A "B"
4425 010502' 116102 000237 20$: MOVB D.LEGS-D.TOPS-4(R1),R2 ; GET LEGAL CONSIDERATION BYTE
4426 010506' 042702 177774 BIC #^C3,R2 ; CLEAR HIGH BITS
4427 010512' 120267 000035' CMPB R2,D.MACH ; MACHINE TYPE RIGHT?
4428 010516' 003072 BGT D.N16 ; TYPE NUMBER IF BAD
4429 010520' 062701 000236 ADD #D.COUS-D.TOPS-4,R1 ; ADD IN ADDRESS OF STRING
4430 010524' 012102 MOV (R1)+,R2 ; GET OFFSET OF CHARACTERS
4431 010526' 042702 177400 BIC #^C377,R2 ; TURN OFF EXTRA CRUFT
4432 010532' 120211 30$: CMPB R2,(R1) ; AT END?
4433 010534' 001406 BEQ 40$ ; BRANCH IF SO
4434 010536' 116200 000771' MOVB D.STRS(R2),R0 ; GET A CHARACTER
4435 010542' 004767 001220 CALL D.TYPE ; TYPE IT
4436 010546' 005202 INC R2 ; NEXT CHARACTER
4437 010550' 000770 BR 30$ ; LOOP
4438 010552' 005703 40$: TST R3 ; BYTE INSTRUCTION?
4439 010554' 001404 BEQ 50$ ; BRANCH IF NOT
4440 010556' 012700 000102 MOV #'B,R0 ; BYTE INSTRUCTION: TYPE "B"
4441 010562' 004767 001200 CALL D.TYPE ; TYPE IT
4442 010566' 114103 50$: MOVB -(R1),R3 ; RE-GET LEGALITY BYTE
4443 010570' 042703 177703 BIC #^C<17*4>,R3 ; GET LEGAL CONSIDERATION
4444 010574' 020327 000010 CMP R3,#10 ; TYPE A SPACE AFTER OP-CODE?
4445 010600' 003404 BLE 60$ ; BRANCH IF NOT
4446 010602' 012700 000040 MOV #' ,R0 ; SPACE
4447 010606' 004767 001154 CALL D.TYPE ; TYPE IT
4448 010612' 010400 60$: MOV R4,R0 ; GET INSTRUCTION BACK
4449 010614' 006304 ASL R4 ; GET OPERAND THAT STARTS AT BIT 6
4450 010616' 006304 ASL R4 ; WITH TWO SHIFTS AND...
4451 010620' 000304 SWAB R4 ; A SWAB
4452 010622' 006203 ASR R3
4453 010624' 000173 000210' JMP @D.PARM(R3) ; TYPE PARAMETERS
4454 010630' 010001 70$: MOV R0,R1 ; GET R1 FOR D.DC5
4455 010632' 062701 001420' ADD #D.MOD7,R1 ; DISPLACEMENT OF OPENING CHARACTERS
4456 010636' 111102 MOVB (R1),R2 ; GET OFFSET OF CHARACTERS
4457 010640' 126227 001335' 000077 CMPB D.FIRS(R2),#'? ; IS IT LEGAL?
4458 010646' 001511 BEQ 90$ ; BRANCH IF NOT
4459 010650' 004767 000310 CALL D.DC5 ; TYPE THEM
4460 010654' PUSH$S <R0,R4>
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 76-2
DDT.MAC 30-DEC-82 01:45 D.INST - DISPLAY INSTRUCTION AT CURRENT ADDRESS
4461 010660' 010504 MOV R5,R4
4462 010662' 004767 000400' CALL D.GETW ; GET INSTRUCTION INTO R0
4463 010666' POP$S R4
4464 010670' 062705 000002 ADD #2,R5
4465 010674' 022627 000006 CMP (SP)+,#6 ; RELATIVE ADDRESSING?
4466 010700' 103401 BCS D.N16 ; BRANCH IF IMMEDIATE
4467 010702' 060500 80$: ADD R5,R0 ; FUDGE FOR RELATIVE.
4468 010704' 000167 177010 D.N16: JMP D.RFND ; TYPE IN CURRENT ADDRESSING MODE
4469
4470 010710' D.SSDD: PUSH$S R0 ; SAVE SECOND PARAMETER
4471 010712' 010400 MOV R4,R0 ; GET FIRST ONE
4472 010714' 004767 000124 CALL D.DD ; TYPE IT
4473 010720' 000444 BR D.SS ; DO THE REST
4474 010722' 012701 001374' D.CZVN: MOV #D.NZVC,R1 ; LOOP ON BITS OF CODE
4475 010726' 010002 MOV R0,R2 ; SAVE OPERATION IN R2
4476 010730' 004717 CALL (PC) ; DO WHAT FOLLOWS TWICE
4477 010732' 004717 CALL (PC) ; NO, I MEAN 4 TIMES
4478 010734' 112100 MOVB (R1)+,R0 ; GET CHARACTER
4479 010736' 006002 ROR R2 ; TEST A BIT
4480 010740' 103124 BCC 130$ ; BRANCH IF NOT ON
4481 010742' 000167 001020 JMP D.TYPE ; TYPE IT AND RETURN
4482 010746' 042700 177770 D.N3: BIC #^C7,R0 ; MASK OUT ALL BUT LOW 3 BITS
4483 010752' 042700 177700 D.N6: BIC #^C77,R0 ; MASK OUT ALL BUT LOW 6 BITS
4484 010756' 042700 177400 D.N8: BIC #^C377,R0 ; MASK OUT ALL BUT LOW 8 BITS
4485 010762' 000167 000662 JMP D.TYPN ; TYPE THE NUMBER
4486 010766' D.RN6: PUSH$S R0 ; SAVE R0
4487 010770' 010400 MOV R4,R0 ; GET FIRST PARAMETER
4488 010772' 004767 000236 CALL D.R ; TYPE AS REGISTER
4489 010776' 012700 000054 MOV #',,R0 ; INSERT COMMA BETWEEN PARAMETERS
4490 011002' 004767 000760 CALL D.TYPE ; TYPE IT
4491 011006' POP$S R0 ; GET SECOND PARAMETER
4492 011010' 052700 000300 BIS #300,R0 ; TURN ON HIGH TWO BITS IN LOW BYTE
4493 011014' 110000 D.X8: MOVB R0,R0 ; SIGN EXTEND
4494 011016' 006300 ASL R0 ; MULTIPLY BY 2
4495 011020' 000730 BR 80$ ; DO THE REST AND RETURN
4496 011022' D.RDD: PUSH$S R0 ; SAVE SECOND PARAMETER
4497 011024' 010400 MOV R4,R0 ; GET FIRST ONE
4498 011026' 004767 000202 CALL D.R ; TYPE AS A REGISTER
4499 011032' 012700 000054 D.SS: MOV #',,R0 ; PUT COMMA...
4500 011036' 004767 000724 CALL D.TYPE ; ... INBETWEEN PARAMETERS
4501 011042' POP$S R0 ; GET SECOND PARAMETER
4502
4503 011044' D.DD: ; THIS ROUTINE TYPES A MODE/REGISTER OPERAND IN R0
4504 011044' 010003 MOV R0,R3 ; LOW 6 BITS OF R0 HAVE MODE/REG
4505 011046' 042703 177770 BIC #^C7,R3 ; R3 HAS REGISTER
4506 011052' 006200 ASR R0 ; GET MODE
4507 011054' 006200 ASR R0 ; BY SHIFTING
4508 011056' 006200 ASR R0 ; INTO LOW BITS
4509 011060' 042700 177770 BIC #^C7,R0 ; R0 HAS MODE
4510 011064' 020327 000007 CMP R3,#7 ; PC ADDRESSING?
4511 011070' 001657 BEQ 70$ ; BRANCH IF SO
4512 011072' 90$: PUSH$S R0 ; MAKE THIS SAVED DATA
4513 011074' 010001 MOV R0,R1 ; PUT IN R1 FOR D.DC5
4514 011076' 062701 001400' ADD #D.OPCH,R1 ; ADD IN DISPLACEMENT OF SPECIAL CHARACTERS
4515 011102' 004767 000056 CALL D.DC5 ; TYPE PRECEDING CHARACTERS
4516 011106' PUSH$S R3 ; SAVE R3
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 76-3
DDT.MAC 30-DEC-82 01:45 D.INST - DISPLAY INSTRUCTION AT CURRENT ADDRESS
4517 011110' 020027 000006 CMP R0,#6 ; IS THERE AN INDEX?
4518 011114' 002415 BLT 100$ ; BRANCH IF NOT
4519 011116' PUSH$S R4
4520 011120' 010504 MOV R5,R4
4521 011122' 004767 000400' CALL D.GETW ; PUT ADDRESS IN R0
4522 011126' POP$S R4
4523 011130' 062705 000002 ADD #2,R5
4524 011134' 004767 176560 CALL D.RFND ; TYPE ADDRESS AND OFFSET
4525 011140' 012700 000050 MOV #'(,R0 ; PUT "(" IN OUTPUT
4526 011144' 004767 000616 CALL D.TYPE ; TYPE IT
4527 011150' 100$: POP$S R0 ; GET REGISTER
4528 011152' 004767 000056 CALL D.R ; TYPE REGISTER NUMBER
4529 011156' POP$S R1 ; RESTORE MODE
4530 011160' 062701 001410' ADD #D.CLOS,R1 ; ADD IN CLOSING CHARACTERS
4531
4532 011164' D.DC5: ; THIS ROUTINE TYPES A STRING INDEXED BY R1
4533 011164' PUSH$S R0 ; SAVE R0
4534 011166' 112102 MOVB (R1)+,R2 ; GET OFFSET OF CHARACTERS
4535 011170' 116200 001335' 110$: MOVB D.FIRS(R2),R0 ; GET CHARACTER
4536 011174' 001402 BEQ 120$ ; SKIP IF NULL CHARACTER
4537 011176' 004767 000564 CALL D.TYPE ; TYPE IT
4538 011202' 005202 120$: INC R2 ; NEXT CHARACTER
4539 011204' 120211 CMPB R2,(R1) ; AT END?
4540 011206' 103770 BLO 110$ ; BRANCH IF NOT
4541 011210' POP$S R0 ; RETURN R0
4542 011212' 000207 130$: RETURN ; RETURN
4543
4544 011214' D.DDR: PUSH$S R4 ; SAVE FIRST PARAMETER
4545 011216' 004767 177622 CALL D.DD ; TYPE SECOND PARAMETER
4546 011222' 012700 000054 MOV #',,R0 ; COMMA
4547 011226' 004767 000534 CALL D.TYPE ; TYPE IT
4548 011232' POP$S R0 ; RESTORE REGISTER
4549
4550 011234' 042700 177770 D.R: BIC #^C7,R0 ; Isolate the reigster
4551 011240' 006300 ASL R0 ; and index
4552 011242' 016001 001566' MOV D.REGT(R0),R1 ; into register name table.
4553 011246' 004717 CALL (PC) ; Do this twice:
4554 011250' 110100 MOVB R1,R0 ; copy next character
4555 011252' 000301 SWAB R1 ; switch them
4556 011254' 000167 000506 JMP D.TYPE ; and type the character.
4557 .DSABL LSB
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 77
DDT.MAC 30-DEC-82 01:45 M.PROC - DISPLAY CURRENT PROCESS NAME
4559 .SBTTL M.PROC - Display Current Process Name
4560 ;++
4561 ; FUNCTIONAL DESCRIPTION:
4562 ; None
4563 ;
4564 ; CALLING SEQUENCE:
4565 ; CALL M.PROC
4566 ;
4567 ; INPUT PARAMETERS:
4568 ; None
4569 ;
4570 ; IMPLICIT INPUTS:
4571 ; None
4572 ;
4573 ; OUTPUT PARAMETERS:
4574 ; None
4575 ;
4576 ; IMPLICIT OUTPUTS:
4577 ; None
4578 ;
4579 ; CONDITION CODES:
4580 ; None
4581 ;
4582 ; SIDE EFFECTS:
4583 ; Registers R0 through R3 are modified.
4584 ; Routine D.TYPE is called.
4585 ;--
4586 001 .IF DF D.MCB
4587 001606' .PSECT $PLIT$,D
4588 001606' 051522 026530 000 INRSX: .ASCIZ "RSX-"
4589 001613' 115 041103 000055 INMCB: .ASCIZ "MCB-"
4590 001620' 074145 061545 072165 INEXEC: .ASCIZ "executive"
001626' 073151 000145
4591 001632' 067151 062564 071162 ININTR: .ASCIZ "interrupt"
001640' 070165 000164
4592 001644' 072556 066154 072040 INNULL: .ASCIZ "null task"
001652' 071541 000153
4593
4594 011260' .PSECT $CODE$,I
4595 011260' 005767 000000G M.PROC: TST .CEXDP
4596 011264' 100035 BPL 20$
4597 011266' 012701 001606' MOV #INRSX,R1
4598 011272' 004767 000344 CALL D.STYP
4599 011276' 026727 000000G 177777 CMP $STKDP,#-1
4600 011304' 002475 BLT 50$ ; RSX-interrupt
4601 011306' 001471 BEQ 40$ ; RSX-executive
4602 011310' 005767 000000G TST $HEADR
4603 011314' 001416 BEQ 10$ ; RSX-null task
4604 011316' 016701 000000G MOV $TKTCB,R1 ; RSX-task
4605 011322' PUSH$S T.NAM+2(R1)
4606 011326' 016100 000006 MOV T.NAM(R1),R0
4607 011332' 012701 000070' MOV #D.SYM,R1
4608 011336' 004767 001746 CALL D.CHAR
4609 011342' POP$S R0
4610 011344' 004767 001740 CALL D.CHAR
4611 011350' 000477 BR 74$
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 77-1
DDT.MAC 30-DEC-82 01:45 M.PROC - DISPLAY CURRENT PROCESS NAME
4612 011352' 012701 001644' 10$: MOV #INNULL,R1
4613 011356' 000503 BR 80$
4614 011360' 012701 001613' 20$: MOV #INMCB,R1
4615 011364' 004767 000252 CALL D.STYP
4616 011370' 005767 000000G TST .INTCB
4617 011374' 001044 BNE 60$ ; MCB-interrupt
4618 011376' 027767 000000G 000476' CMP @.PDBVB,MAPR5
4619 011404' 001432 BEQ 40$ ; MCB-executive
4620 011406' MAP$ @.CRPDB ; MCB process
4621 011414' 013700 140000 MOV @#PHDNAM+20000,R0
4622 011420' PUSH$S R0
4623 011422' 012701 000070' MOV #D.SYM,R1
4624 011426' 004767 001656 CALL D.CHAR
4625 011432' 122741 000040 22$: CMPB #' ,-(R1)
4626 011436' 001775 BEQ 22$
4627 011440' 105061 000001 CLRB 1(R1)
4628 011444' 012701 000070' MOV #D.SYM,R1
4629 011450' MAP$ MAPR5
4630 011456' 023726 140000 CMP @#PHDNAM+20000,(SP)+
4631 011462' 001441 BEQ 80$
4632 011464' 004767 000152 CALL D.STYP
4633 011470' 000415 BR 70$
4634 011472' 012701 001620' 40$: MOV #INEXEC,R1
4635 011476' 000433 BR 80$
4636 011500' 012701 001632' 50$: MOV #ININTR,R1
4637 011504' 000430 BR 80$
4638 011506' 012701 001632' 60$: MOV #ININTR,R1
4639 011512' 004767 000124 CALL D.STYP
4640 011516' MAP$ MAPR5
4641 011524' 112700 000076 70$: MOVB #'>,R0
4642 011530' 004767 000232 CALL D.TYPE
4643 011534' 013700 140000 MOV @#PHDNAM+20000,R0
4644 011540' 012701 000070' MOV #D.SYM,R1
4645 011544' 004767 001540 CALL D.CHAR
4646 011550' 122741 000040 74$: CMPB #' ,-(R1)
4647 011554' 001775 BEQ 74$
4648 011556' 105061 000001 CLRB 1(R1)
4649 011562' 012701 000070' MOV #D.SYM,R1
4650 011566' 000167 000050 80$: JMP D.STYP
4651 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 78
DDT.MAC 30-DEC-82 01:45 D.TTAB - DISPLAY A TAB CHARACTER
4653 .SBTTL D.TTAB - Display a Tab Character
4654 ;++
4655 ; FUNCTIONAL DESCRIPTION:
4656 ; None
4657 ;
4658 ; CALLING SEQUENCE:
4659 ; CALL D.TTAB
4660 ;
4661 ; INPUT PARAMETERS:
4662 ; None
4663 ;
4664 ; IMPLICIT INPUTS:
4665 ; D.NOTY = don't display if non-zero.
4666 ; D.CPOS = current horizontal carriage position.
4667 ;
4668 ; OUTPUT PARAMETERS:
4669 ; None
4670 ;
4671 ; IMPLICIT OUTPUTS:
4672 ; D.CPOS = current horizontal carriage position.
4673 ;
4674 ; CONDITION CODES:
4675 ; None
4676 ;
4677 ; SIDE EFFECTS:
4678 ; Register R0 is modified.
4679 ; Routine D.TYPE is called.
4680 ;--
4681
4682 011572' .PSECT $CODE$,I
4683 011572' D.TTAB:
4684 001 .IF NDF D.KSR
4685 011572' 116700 000033' MOVB D.TDSP,R0 ; Tab display character.
4686 011576' 001073 BNE D.TYPE
4687 .IFTF
4688 011600' 105767 000106' 10$: TSTB D.NOTY ; IN NON-TYPEOUT MODE?
4689 011604' 001010 BNE 90$ ; EXIT IF SO
4690 011606' 112700 000040 MOVB #' ,R0 ; SPACE
4691 011612' 004767 000150 CALL D.TYPE ; TYPE IT
4692 011616' 132767 000007 000000' BITB #7,D.CPOS ; ON A MULTIPLE OF 8?
4693 011624' 001365 BNE 10$ ; LOOP ON SPACES IF NOT
4694 011626' 000207 90$: RETURN ; RETURN
4695 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 79
DDT.MAC 30-DEC-82 01:45 D.CRLF - DISPLAY A CR/LF
4697 .SBTTL D.CRLF - Display a CR/LF
4698 ;++
4699 ; FUNCTIONAL DESCRIPTION:
4700 ; None
4701 ;
4702 ; CALLING SEQUENCE:
4703 ; CALL D.CRLF
4704 ;
4705 ; INPUT PARAMETERS:
4706 ; None
4707 ;
4708 ; IMPLICIT INPUTS:
4709 ; None
4710 ;
4711 ; OUTPUT PARAMETERS:
4712 ; None
4713 ;
4714 ; IMPLICIT OUTPUTS:
4715 ; None
4716 ;
4717 ; CONDITION CODES:
4718 ; None
4719 ;
4720 ; SIDE EFFECTS:
4721 ; Registers R0 through R2 are modified.
4722 ; Routine D.STYP is called.
4723 ;--
4724
4725 011630' .PSECT $CODE$,I
4726 011630' 012701 000054' D.CRLF: MOV #D.CR,R1 ; FWA <CR,LF>
4727 011634' 000402 BR D.STYP
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 80
DDT.MAC 30-DEC-82 01:45 D.STYP - DISPLAY A LOCAL ASCII STRING
4729 .SBTTL D.STYP - Display a Local ASCII String
4730 ;++
4731 ; FUNCTIONAL DESCRIPTION:
4732 ; None
4733 ;
4734 ; CALLING SEQUENCE:
4735 ; CALL D.STYP
4736 ;
4737 ; INPUT PARAMETERS:
4738 ; R1 = address of ASCIZ string.
4739 ;
4740 ; IMPLICIT INPUTS:
4741 ; None
4742 ;
4743 ; OUTPUT PARAMETERS:
4744 ; None
4745 ;
4746 ; IMPLICIT OUTPUTS:
4747 ; None
4748 ;
4749 ; CONDITION CODES:
4750 ; None
4751 ;
4752 ; SIDE EFFECTS:
4753 ; Registers R0 and R1 are modified.
4754 ; Routine D.TYPE is called.
4755 ;--
4756
4757 011636' .PSECT $CODE$,I
4758 011636' 004767 000124 D.STY1: CALL D.TYPE ; TYPE ONE CHARACTER
4759 011642' 112100 D.STYP: MOVB (R1)+,R0 ; GET A CHARACTER
4760 011644' 001374 BNE D.STY1
4761 011646' 000207 RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 81
DDT.MAC 30-DEC-82 01:45 D.TYPN - DISPLAY A NUMBER IN THE CURRENT RADIX
4763 .SBTTL D.TYPN - Display a Number in the Current Radix
4764 ;++
4765 ; FUNCTIONAL DESCRIPTION:
4766 ; None
4767 ;
4768 ; CALLING SEQUENCE:
4769 ; CALL D.TYPN
4770 ;
4771 ; INPUT PARAMETERS:
4772 ; R0 = number to be displayed.
4773 ;
4774 ; IMPLICIT INPUTS:
4775 ; D.DVTB = radix to type number in.
4776 ;
4777 ; OUTPUT PARAMETERS:
4778 ; None
4779 ;
4780 ; IMPLICIT OUTPUTS:
4781 ; D.LASV = last number to be typed.
4782 ; D.LASW = last word to be typed.
4783 ;
4784 ; CONDITION CODES:
4785 ; None
4786 ;
4787 ; SIDE EFFECTS:
4788 ; Registers R0 through R3 are modified.
4789 ; Routines D.DIVD and D.TYPE are called.
4790 ;--
4791
4792 011650' .PSECT $CODE$,I
4793 011650' 010067 000210' D.TYPN: MOV R0,D.LASV ; MARK LAST NUMBER TYPED
4794 011654' 010067 000212' MOV R0,D.LASW ; LAST TYPED WORD TOO
4795 011660' 016702 000116' MOV D.DVTB,R2 ; GET RADIX
4796 001 .IF DF D.MCB
4797 011664' 010001 MOV R0,R1
4798 011666' 022702 000012 CMP #10.,R2
4799 011672' 001014 BNE 60$
4800 011674' 005701 TST R1
4801 011676' 100005 BPL 10$
4802 011700' 112700 000055 MOVB #'-,R0
4803 011704' 004767 000056 CALL D.TYPE
4804 011710' 005401 NEG R1
4805 011712' 004767 000006 10$: CALL 60$
4806 011716' 012700 000056 MOV #'.,R0
4807 011722' 000417 BR 68$
4808
4809 011724' 005000 60$: CLR R0
4810 011726' 071002 62$: DIV R2,R0
4811 011730' PUSH$S R1
4812 011732' 010001 MOV R0,R1
4813 011734' 001402 BEQ 64$
4814 011736' 004767 177762 CALL 60$
4815 011742' 64$: POP$S R0
4816 011744' 022700 000012 CMP #10.,R0
4817 011750' 101002 BHI 66$
4818 011752' 062700 000007 ADD #'A-'0-10.,R0
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 81-1
DDT.MAC 30-DEC-82 01:45 D.TYPN - DISPLAY A NUMBER IN THE CURRENT RADIX
4819 011756' 062700 000060 66$: ADD #'0,R0
4820 011762' 000167 000000 68$: JMP D.TYPE
4821 .IFF
4822 CMP #10.,R2 ; DECIMAL?
4823 BEQ 40$ ; YES
4824 10$: CALL D.DIVD ; DIVIDE IT.
4825 ADD #60,R1 ; CONVERT REMAINDER TO ASCII
4826 PUSH$S R1 ; AND SAVE IT.
4827 TST R0 ; DONE?
4828 BEQ 30$ ; YES, TYPE THE DIGIT AND RETURN
4829 20$: CALL 10$ ; CALL OURSELF RECURSIVELY
4830 30$: POP$S R0 ; RESTORE THE DIGIT
4831 BR D.TYPE ; PRINT IT, AND RETURN
4832
4833 40$: PUSH$S #'. ; PUT A . AT THE END OF THE NUMBER
4834 MOV R0,R3 ; GET THE NUMBER
4835 BPL 20$ ; AND TYPE IF POSITIVE
4836 MOV #'-,R0 ; ELSE PRINT A -
4837 CALL D.TYPE
4838 MOV R3,R0 ; RESTORE NUMBER
4839 NEG R0 ; BUT TAKE ABSOLUTE VALUE
4840 BR 20$
4841 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 82
DDT.MAC 30-DEC-82 01:45 D.TYPE - DISPLAY A CHARACTER ON THE CONTROLLING TTY
4843 .SBTTL D.TYPE - Display a Character on the Controlling TTY
4844 ;++
4845 ; FUNCTIONAL DESCRIPTION:
4846 ; None
4847 ;
4848 ; CALLING SEQUENCE:
4849 ; CALL D.TYPE
4850 ;
4851 ; INPUT PARAMETERS:
4852 ; R0 = character to display.
4853 ;
4854 ; IMPLICIT INPUTS:
4855 ; D.NOTY = don't display if non-zero.
4856 ; D.CPOS = current horizontal carriage position.
4857 ; D.TCSR = address of transmit status register.
4858 ; D.TDB = address of transmit data buffer.
4859 ;
4860 ; OUTPUT PARAMETERS:
4861 ; None
4862 ;
4863 ; IMPLICIT OUTPUTS:
4864 ; D.CPOS = current horizontal carriage position.
4865 ;
4866 ; CONDITION CODES:
4867 ; None
4868 ;
4869 ; SIDE EFFECTS:
4870 ; Register R0 is modified.
4871 ; Routine D.POLL is called.
4872 ;--
4873
4874 011766' .PSECT $CODE$,I
4875 011766' 105767 000106' D.TYPE: TSTB D.NOTY ; SHOULD WE TYPE?
4876 011772' 001045 BNE 90$ ; BRANCH IF NOT
4877 001 .IF DF D.GDP
4878 TRAP 120 ; SCRRTN
4879 000 .ENDC
4880 001 .IF DF D.GT40
4881 EMT 0
4882 000 .ENDC
4883 001 .IF DF D.KSR!D.MCB
4884 011774' 004767 000042 CALL 20$ ; TYPE CHARACTER
4885 012000' 122700 000015 CMPB #15,R0 ; CARRIAGE RETURN?
4886 012004' 001413 BEQ 10$ ; ZERO POSITION COUNTER IF SO
4887 012006' 132700 000140 BITB #140,R0 ; CONTROL CHARACTER?
4888 012012' 001435 BEQ 90$ ; RETURN IF SO
4889 012014' 105267 000000' INCB D.CPOS ; INCREMENT CHARACTER POSITION
4890 012020' 122767 000110 000000' CMPB #D.TCOL,D.CPOS
4891 012026' 101027 BHI 90$ ; RETURN IF NOT
4892 012030' 004767 000026 CALL 40$
4893 012034' 105067 000000' 10$: CLRB D.CPOS ; CLEAR CHARACTER POSITION
4894 012040' 000207 RETURN ; RETURN
4895 012042' 105737 177564 20$: TSTB @#D.TCSR ; PRINTER READY FOR CHARACTER?
4896 012046' 100375 BPL 20$ ; LOOP IF NOT
4897 012050' 110037 177566 MOVB R0,@#D.TDB ; PUT OUT CHARACTER
4898 012054' 004767 000250 CALL D.POLL ; CHECK FOR TYPED-IN CHARACTERS
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 82-1
DDT.MAC 30-DEC-82 01:45 D.TYPE - DISPLAY A CHARACTER ON THE CONTROLLING TTY
4899 000 .ENDC
4900 001 .IF DF D.RSX
4901 MOV R0,D.BUFR
4902 QIOW$S #IO.WLB,#LUNTI,#52.,,,,<#D.BUFR,#1>
4903 000 .ENDC
4904 012060' 000207 RETURN ; RETURN
4905 012062' 40$: PUSH$S R0 ; SAVE CHARACTER
4906 012064' 012700 000015 MOV #15,R0 ; YES, GENERATE CARRIAGE RETURN
4907 012070' 004767 177746 CALL 20$ ; TYPE IT
4908 012074' 012700 000012 MOV #12,R0 ; AND A LINE FEED
4909 012100' 004767 177736 CALL 20$ ; TYPE IT
4910 012104' POP$S R0 ; RESTORE CHARACTER
4911 012106' 000207 90$: RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 83
DDT.MAC 30-DEC-82 01:45 D.GET - GET A CHARACTER FROM THE CONTROLLING TTY
4913 .SBTTL D.GET - Get a Character from the Controlling TTY
4914 ;++
4915 ; FUNCTIONAL DESCRIPTION:
4916 ; None
4917 ;
4918 ; CALLING SEQUENCE:
4919 ; CALL D.GET
4920 ;
4921 ; INPUT PARAMETERS:
4922 ; None
4923 ;
4924 ; IMPLICIT INPUTS:
4925 ; D.RCSR = address of receive status register.
4926 ; D.RDB = address of receive data buffer.
4927 ; D.INPU = ring buffer pointer to insert next character.
4928 ; D.OUTP = ring buffer pointer to extract next character.
4929 ; D.BUFR = beginning of ring buffer.
4930 ; D.ENDB = end of ring buffer.
4931 ;
4932 ; OUTPUT PARAMETERS:
4933 ; R0 = received character.
4934 ;
4935 ; IMPLICIT OUTPUTS:
4936 ; D.OUTP = ring buffer pointer to extract next character.
4937 ;
4938 ; CONDITION CODES:
4939 ; None
4940 ;
4941 ; SIDE EFFECTS:
4942 ; Routines D.POLL and D.TYPE are called.
4943 ;--
4944
4945 012110' .PSECT $CODE$,I
4946 012110' D.GET:
4947 001 .IF DF D.RSX
4948 QIOW$S #IO.RLB!TF.RAL!TF.RNE,#LUNTI,#52.,,#D.STS,,<#D.BUFR,#1>
4949 BCC 20$ ;CHECK FOR ERROR
4950 10$: EXIT$S ;CAN'T DO MUCH IF TTY DOESN'T WORK!
4951
4952 20$: MOV D.BUFR,R0 ;GET IT
4953 BIC #^C177,R0 ;CLEAR PARITY BIT
4954 CMP #3,R0 ;JUST GOT A CTRL/C?
4955 BEQ 10$ ;YES, EXIT
4956 .IFF
4957 002 .IF NDF D.KSR&D.MCB
4958 TSTB @#D.RCSR ; CHARACTER TYPED?
4959 BPL D.GET ; LOOP UNTIL FOUND
4960 MOVB @#D.RDB,R0 ; GET A CHARACTER
4961 001 .ENDC
4962 000 .ENDC
4963 001 .IF DF D.KSR!D.MCB
4964 012110' 004767 000214 CALL D.POLL ; CHECK FOR CHARACTERS IN I/O BUFFER
4965 012114' 026767 000064' 000066' CMP D.INPU,D.OUTP ; ANY CHARACTERS TYPED?
4966 012122' 001772 BEQ D.GET ; LOOP IF BUFFER EMPTY
4967 012124' 117700 000066' MOVB @D.OUTP,R0 ; GET CHARACTER FROM BUFFER
4968 012130' 005267 000066' INC D.OUTP ; POINT TO NEXT CHARACTER
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 83-1
DDT.MAC 30-DEC-82 01:45 D.GET - GET A CHARACTER FROM THE CONTROLLING TTY
4969 012134' 026727 000066' 000032' CMP D.OUTP,#D.ENDB ; AT END OF BUFFER?
4970 012142' 001003 BNE 30$ ; BRANCH IF NOT
4971 012144' 012767 000001' 000066' MOV #D.BUFR,D.OUTP ; WRAP-AROUND
4972 012152' 30$:
4973 000 .ENDC
4974 001 .IF DF D.GDP
4975 TRAP 64 ; KEYASC
4976 000 .ENDC
4977 012152' 042700 177600 BIC #^C177,R0 ; CLEAR META, CNTL AND SHIFT STUFF
4978 012156' 010001 MOV R0,R1 ; EXACT (UNFOLDED COPY IN R1)
4979 012160' 001753 BEQ D.GET ; IGNORE NULLS
4980 012162' 122700 000015 CMPB #15,R0 ; SEE IF A <CR>
4981 012166' 001006 BNE 40$ ; BRANCH IF NOT
4982 012170' 012700 000012 MOV #12,R0 ; LINE FEED
4983 012174' 004767 177566 CALL D.TYPE ; TYPE IT
4984 012200' 012700 000015 MOV #15,R0 ; RESET TO CR
4985 012204' 122700 000177 40$: CMPB #177,R0 ; IS IT A BACKSPACE
4986 012210' 001433 BEQ 70$ ; GUARANTEED TO GET A ?
4987 012212' 022700 000012 CMP #12,R0 ; IS IT A LINE FEED?
4988 012216' 001420 BEQ 50$ ; IF SO, SAVE THE PAPER
4989 012220' 122700 000033 CMPB #33,R0 ; IS IT AN ESCAPE?
4990 012224' 001416 BEQ 60$ ; TYPE DOLLAR SIGN IF SO
4991 001 .IF DF D.KSR!D.MCB
4992 012226' 122700 000175 CMPB #175,R0 ; IS IT AN ALTMODE?
4993 012232' 003413 BLE 60$ ; TYPE DOLLAR SIGN IF SO
4994 000 .ENDC
4995 012234' 004767 177526 CALL D.TYPE ; ECHO CHARACTER
4996 012240' 122700 000141 CMPB #'a,R0 ; FOLD TO UPPER CASE
4997 012244' 003005 BGT 50$ ; BRANCH IF NOT A LETTER
4998 012246' 122700 000172 CMPB #'z,R0 ; IS IT IN ALPHABET?
4999 012252' 002402 BLT 50$ ; BRANCH IF STILL NOT
5000 012254' 162700 000040 SUB #'a-'A,R0 ; FOLD DOWN
5001 012260' 000207 50$: RETURN ; RETURN
5002 012262' 012700 000044 60$: MOV #'$,R0 ; DOLLAR SIGN
5003 012266' 004767 177474 CALL D.TYPE ; TYPE IT
5004 012272' 012700 000033 MOV #33,R0 ; RESTORE R0
5005 012276' 000207 RETURN ; RETURN
5006 012300' 012700 000130 70$: MOV #'X,R0 ; TYPE "XXX"
5007 012304' 004767 177456 CALL D.TYPE ; TYPE FIRST
5008 012310' 004767 177452 CALL D.TYPE ; TYPE SECOND
5009 012314' 004767 177446 CALL D.TYPE ; TYPE THIRD
5010 012320' 004767 177246 CALL D.TTAB ; TYPE TAB
5011 012324' 000167 165450 JMP D.DCD ; AND PROCESS NEW COMMAND
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 84
DDT.MAC 30-DEC-82 01:45 D.POLL - POLL FOR A RECEIVED CHARACTER FROM THE TTY
5013 .SBTTL D.POLL - Poll for a Received Character from the TTY
5014 ;++
5015 ; FUNCTIONAL DESCRIPTION:
5016 ; None
5017 ;
5018 ; CALLING SEQUENCE:
5019 ; CALL D.POLL
5020 ;
5021 ; INPUT PARAMETERS:
5022 ; None
5023 ;
5024 ; IMPLICIT INPUTS:
5025 ; D.RCSR = address of receive status register.
5026 ; D.RDB = address of receive data buffer.
5027 ; D.INPU = ring buffer pointer to insert next character.
5028 ; D.BUFR = beginning of ring buffer.
5029 ; D.ENDB = end of ring buffer.
5030 ;
5031 ; OUTPUT PARAMETERS:
5032 ; None
5033 ;
5034 ; IMPLICIT OUTPUTS:
5035 ; D.INPU = ring buffer pointer to insert next character.
5036 ;
5037 ; CONDITION CODES:
5038 ; None
5039 ;
5040 ; SIDE EFFECTS:
5041 ; None
5042 ;--
5043 001 .IF DF D.KSR!D.MCB
5044
5045 012330' .PSECT $CODE$,I
5046 012330' 105737 177560 D.POLL: TSTB @#D.RCSR ; ANY CHARACTER TYPED?
5047 012334' 100014 BPL 10$ ; BRANCH IF NOT
5048 012336' 113777 177562 000064' MOVB @#D.RDB,@D.INPU ; PUT CHARACTER IN BUFFER
5049 012344' 005267 000064' INC D.INPU ; NEXT
5050 012350' 026727 000064' 000032' CMP D.INPU,#D.ENDB ; AT END OF BUFFER?
5051 012356' 001003 BNE 10$ ; BRANCH IF NOT
5052 012360' 012767 000001' 000064' MOV #D.BUFR,D.INPU ; WRAP-AROUND
5053 012366' 000207 10$: RETURN ; RETURN
5054 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 85
DDT.MAC 30-DEC-82 01:45 M.TTCK - CHECK IF TTY REQUESTED INTERRUPT
5056 .SBTTL M.TTCK - Check if TTY Requested Interrupt
5057 ;++
5058 ; FUNCTIONAL DESCRIPTION:
5059 ; None
5060 ;
5061 ; CALLING SEQUENCE:
5062 ; CALL M.TTCK
5063 ;
5064 ; INPUT PARAMETERS:
5065 ; None
5066 ;
5067 ; IMPLICIT INPUTS:
5068 ; None
5069 ;
5070 ; OUTPUT PARAMETERS:
5071 ; None
5072 ;
5073 ; IMPLICIT OUTPUTS:
5074 ; None
5075 ;
5076 ; CONDITION CODES:
5077 ; C-bit set = TTY interrupt not requested.
5078 ; C-bit clear = TTY interrupt requested.
5079 ;
5080 ; SIDE EFFECTS:
5081 ; None
5082 ;--
5083 001 .IF DF D.MCB
5084
5085 012370' .PSECT $CODE$,I
5086 012370' 016700 000510' M.TTCK: MOV MTTBK,R0
5087 012374' 001417 BEQ 80$
5088 012376' 005760 000030 TST MT.INT(R0)
5089 012402' 001414 BEQ 80$
5090 012404' 005060 000030 CLR MT.INT(R0)
5091 012410' 042767 000020 000454' BIC #20,D.UPS
5092 012416' 112767 000001 000104' MOVB #1,D.S
5093 012424' 012767 000001 000364' MOV #1,D.CT+<D.BKS*2>
5094 012432' 005727 TST (PC)+
5095 012434' 000261 80$: SEC
5096 012436' 000207 90$: RETURN
5097 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 86
DDT.MAC 30-DEC-82 01:45 M.TTIN - TTY INTERRUPT CODE
5099 .SBTTL M.TTIN - TTY Interrupt Code
5100 ;++
5101 ; FUNCTIONAL DESCRIPTION:
5102 ; None
5103 ;
5104 ; CALLING SEQUENCE:
5105 ; Through TTY interrupt vector.
5106 ;
5107 ; INPUT PARAMETERS:
5108 ; None
5109 ;
5110 ; IMPLICIT INPUTS:
5111 ; None
5112 ;
5113 ; OUTPUT PARAMETERS:
5114 ; None
5115 ;
5116 ; IMPLICIT OUTPUTS:
5117 ; None
5118 ;
5119 ; CONDITION CODES:
5120 ; None
5121 ;
5122 ; SIDE EFFECTS:
5123 ; None
5124 ;--
5125
5126 001 .IF DF D.MCB
5127 001656' .PSECT $PLIT$,D
5128 .EVEN
5129 001656' 023727 000000G M.TTIN: CMP @#KISAR5,(PC)+
5130 000004 MT.AR5 = .-M.TTIN
5131 001662' 000000 .WORD 0
5132 001664' 001426 BEQ 30$
5133 001666' 113746 177562 MOVB @#D.RDB,-(SP)
5134 001672' 042716 177600 BIC #^C177,(SP)
5135 001676' 122726 000004 CMPB #'D-100,(SP)+
5136 001702' 001017 BNE 30$
5137 001704' 005227 INC (PC)+
5138 000030 MT.INT = .-M.TTIN
5139 001706' 000000 .WORD 0
5140 001710' 032766 140000 000002 BIT #140000,2(SP)
5141 001716' 001004 BNE 20$
5142 001720' 052766 000020 000002 10$: BIS #20,2(SP)
5143 001726' 000002 RTI
5144 001730' 20$: MFPS
5145 001734' 004767 177760 JSR PC,10$
5146 001740' 000002 RTI
5147 001742' 000137 30$: JMP @(PC)+
5148 000066 MT.ADR = .-M.TTIN
5149 001744' 000000 .WORD 0
5150 000070 MT.TLN = .-M.TTIN
5151 001746' 000002 RTI
5152 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 87
DDT.MAC 30-DEC-82 01:45 M.TTON - ENABLE TTY INTERRUPTS
5154 .SBTTL M.TTON - Enable TTY Interrupts
5155 ;++
5156 ; FUNCTIONAL DESCRIPTION:
5157 ; None
5158 ;
5159 ; CALLING SEQUENCE:
5160 ; CALL M.TTON
5161 ;
5162 ; INPUT PARAMETERS:
5163 ; None
5164 ;
5165 ; IMPLICIT INPUTS:
5166 ; None
5167 ;
5168 ; OUTPUT PARAMETERS:
5169 ; None
5170 ;
5171 ; IMPLICIT OUTPUTS:
5172 ; None
5173 ;
5174 ; CONDITION CODES:
5175 ; None
5176 ;
5177 ; SIDE EFFECTS:
5178 ; None
5179 ;--
5180 001 .IF DF D.MCB
5181
5182 012440' .PSECT $CODE$,I
5183 012440' 005767 000510' M.TTON: TST MTTBK
5184 012444' 001033 BNE 60$
5185 012446' 012701 000072 MOV #2+MT.TLN,R1
5186 012452' 004767 000000G CALL $ALOCB
5187 012456' 103433 BCS 90$
5188 012460' 010120 MOV R1,(R0)+
5189 012462' 010003 MOV R0,R3
5190 012464' 012702 001656' MOV #M.TTIN,R2
5191 012470' 012701 000034 MOV #MT.TLN/2,R1
5192 012474' 012220 10$: MOV (R2)+,(R0)+
5193 012476' 077102 SOB R1,10$
5194 012500' 013763 000000G 000004 MOV @#KISAR5,MT.AR5(R3)
5195 012506' 013740 000060 MOV @#60,-(R0)
5196 012512' 023710 000064 CMP @#64,(R0)
5197 012516' 001002 BNE 20$
5198 012520' 005010 CLR (R0)
5199 012522' 011240 MOV (R2),-(R0)
5200 012524' 010367 000510' 20$: MOV R3,MTTBK
5201 012530' 010337 000060 MOV R3,@#60
5202 012534' 005737 177562 60$: TST @#D.RDB
5203 012540' 052737 000100 177560 BIS #100,@#D.RCSR
5204 012546' 000207 90$: RETURN
5205 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 88
DDT.MAC 30-DEC-82 01:45 M.TTOF - DISABLE TTY INTERRUPTS
5207 .SBTTL M.TTOF - Disable TTY Interrupts
5208 ;++
5209 ; FUNCTIONAL DESCRIPTION:
5210 ; None
5211 ;
5212 ; CALLING SEQUENCE:
5213 ; CALL M.TTOF
5214 ;
5215 ; INPUT PARAMETERS:
5216 ; None
5217 ;
5218 ; IMPLICIT INPUTS:
5219 ; None
5220 ;
5221 ; OUTPUT PARAMETERS:
5222 ; None
5223 ;
5224 ; IMPLICIT OUTPUTS:
5225 ; None
5226 ;
5227 ; CONDITION CODES:
5228 ; None
5229 ;
5230 ; SIDE EFFECTS:
5231 ; None
5232 ;--
5233 001 .IF DF D.MCB
5234
5235 012550' .PSECT $CODE$,I
5236 012550' 016700 000510' M.TTOF: MOV MTTBK,R0
5237 012554' 001417 BEQ 90$
5238 012556' 005067 000510' CLR MTTBK
5239 012562' 016001 000066 MOV MT.ADR(R0),R1
5240 012566' 001005 BNE 10$
5241 012570' 042737 000100 177560 BIC #100,@#D.RCSR
5242 012576' 013701 000064 MOV @#64,R1
5243 012602' 010137 000060 10$: MOV R1,@#60
5244 012606' 014001 MOV -(R0),R1
5245 012610' 004767 000000G CALL $DEACB
5246 012614' 000207 90$: RETURN
5247 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 89
DDT.MAC 30-DEC-82 01:45 M.SNCK - CHECK IF TRAP CAUSED BY DDT SYNCH
5249 .SBTTL M.SNCK - Check if Trap caused by DDT Synch
5250 ;++
5251 ; FUNCTIONAL DESCRIPTION:
5252 ; None
5253 ;
5254 ; CALLING SEQUENCE:
5255 ; CALL M.SNCK
5256 ;
5257 ; INPUT PARAMETERS:
5258 ; None
5259 ;
5260 ; IMPLICIT INPUTS:
5261 ; None
5262 ;
5263 ; OUTPUT PARAMETERS:
5264 ; None
5265 ;
5266 ; IMPLICIT OUTPUTS:
5267 ; None
5268 ;
5269 ; CONDITION CODES:
5270 ; C-bit set = SYNCH not effected.
5271 ; C-bit clear = SYNCH sprung.
5272 ;
5273 ; SIDE EFFECTS:
5274 ; None
5275 ;--
5276 001 .IF DF D.MCB
5277
5278 012616' .PSECT $CODE$,I
5279 012616' 016700 000512' M.SNCK: MOV MSNBK,R0
5280 012622' 001414 BEQ 80$
5281 012624' 005760 000026 TST MS.INT(R0)
5282 012630' 001411 BEQ 80$
5283 012632' 005067 000512' CLR MSNBK
5284 012636' 112767 000001 000104' MOVB #1,D.S
5285 012644' 012767 000001 000364' MOV #1,D.CT+<D.BKS*2>
5286 012652' 005727 TST (PC)+
5287 012654' 000261 80$: SEC
5288 012656' 000207 90$: RETURN
5289 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 90
DDT.MAC 30-DEC-82 01:45 M.SNIN - SYNCHRONIZATION CODE
5291 .SBTTL M.SNIN - Synchronization Code
5292 ;++
5293 ; FUNCTIONAL DESCRIPTION:
5294 ; None
5295 ;
5296 ; CALLING SEQUENCE:
5297 ; Through $SYNCH dispatch
5298 ;
5299 ; INPUT PARAMETERS:
5300 ; None
5301 ;
5302 ; IMPLICIT INPUTS:
5303 ; None
5304 ;
5305 ; OUTPUT PARAMETERS:
5306 ; None
5307 ;
5308 ; IMPLICIT OUTPUTS:
5309 ; None
5310 ;
5311 ; CONDITION CODES:
5312 ; None
5313 ;
5314 ; SIDE EFFECTS:
5315 ; None
5316 ;--
5317
5318 001 .IF DF D.MCB
5319 001750' .PSECT $PLIT$,D
5320 .EVEN
5321 001750' 000000 M.SBLK: .WORD 0
5322 000002 MS.PDB = .-M.SBLK
5323 001752' 000000 .WORD 0
5324 000004 MS.ADR = .-M.SBLK
5325 001754' 000006 .WORD M.SNIN-M.SBLK
5326 001756' M.SNIN: PUSH$S R4
5327 001760' 004767 000010 CALL 10$
5328 001764' POP$S R0
5329 001766' 014001 MOV -(R0),R1
5330 001770' 000137 000000G JMP @#$DEACB
5331 001774' 005227 10$: INC (PC)+
5332 000026 MS.INT = .-M.SBLK
5333 001776' 000000 .WORD 0
5334 002000' 000003 BPT
5335 002002' 000207 RETURN
5336 000034 MS.NLN = .-M.SBLK
5337 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 91
DDT.MAC 30-DEC-82 01:45 M.SNOF - CANCEL A PROCESS SYNCHRONIZATION
5339 .SBTTL M.SNOF - Cancel a Process Synchronization
5340 ;++
5341 ; FUNCTIONAL DESCRIPTION:
5342 ; None
5343 ;
5344 ; CALLING SEQUENCE:
5345 ; CALL M.SNOF
5346 ;
5347 ; INPUT PARAMETERS:
5348 ; None
5349 ;
5350 ; IMPLICIT INPUTS:
5351 ; None
5352 ;
5353 ; OUTPUT PARAMETERS:
5354 ; None
5355 ;
5356 ; IMPLICIT OUTPUTS:
5357 ; None
5358 ;
5359 ; CONDITION CODES:
5360 ; None
5361 ;
5362 ; SIDE EFFECTS:
5363 ; None
5364 ;--
5365 001 .IF DF D.MCB
5366
5367 012660' .PSECT $CODE$,I
5368 012660' 016700 000512' M.SNOF: MOV MSNBK,R0
5369 012664' 001416 BEQ 90$
5370 012666' 005067 000512' CLR MSNBK
5371 012672' 026700 000000G CMP .SYNQH,R0
5372 012676' 001406 BEQ 70$
5373 012700' 011067 000000G MOV (R0),.SYNQH+0
5374 012704' 001003 BNE 70$
5375 012706' 012767 000000G 000002G MOV #.SYNQH,.SYNQH+2
5376 012714' 014001 70$: MOV -(R0),R1
5377 012716' 004767 000000G CALL $DEACB
5378 012722' 000207 90$: RETURN
5379 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 92
DDT.MAC 30-DEC-82 01:45 M.SNON - SET UP TO SYNCHRONIZE WITH PROCESS
5381 .SBTTL M.SNON - Set Up to Synchronize with Process
5382 ;++
5383 ; FUNCTIONAL DESCRIPTION:
5384 ; None
5385 ;
5386 ; CALLING SEQUENCE:
5387 ; CALL M.SNON
5388 ;
5389 ; INPUT PARAMETERS:
5390 ; R4 = PIX of process to activate.
5391 ;
5392 ; IMPLICIT INPUTS:
5393 ; None
5394 ;
5395 ; OUTPUT PARAMETERS:
5396 ; None
5397 ;
5398 ; IMPLICIT OUTPUTS:
5399 ; None
5400 ;
5401 ; CONDITION CODES:
5402 ; None
5403 ;
5404 ; SIDE EFFECTS:
5405 ; Register R4 is modified
5406 ;--
5407 001 .IF DF D.MCB
5408
5409 012724' .PSECT $CODE$,I
5410 012724' 016703 000512' M.SNON: MOV MSNBK,R3
5411 012730' 001032 BNE 80$
5412 012732' 012701 000036 MOV #2+MS.NLN,R1
5413 012736' 004767 000000G CALL $ALOCB
5414 012742' 103431 BCS 90$
5415 012744' 010120 MOV R1,(R0)+
5416 012746' 010003 MOV R0,R3
5417 012750' 012702 001750' MOV #M.SBLK,R2
5418 012754' 012701 000016 MOV #MS.NLN/2,R1
5419 012760' 012220 10$: MOV (R2)+,(R0)+
5420 012762' 077102 SOB R1,10$
5421 012764' 060363 000004 ADD R3,MS.ADR(R3)
5422 012770' 016713 000000G MOV .SYNQH+0,(R3)
5423 012774' 001002 BNE 70$
5424 012776' 010367 000002G MOV R3,.SYNQH+2
5425 013002' 010367 000000G 70$: MOV R3,.SYNQH+0
5426 013006' 005267 000000G INC .CEXRQ
5427 013012' 010367 000512' MOV R3,MSNBK
5428 013016' 006304 80$: ASL R4
5429 013020' 016463 000000G 000002 MOV .PDBVB(R4),MS.PDB(R3)
5430 013026' 000207 90$: RETURN
5431 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 93
DDT.MAC 30-DEC-82 01:45 M.USCK - CHECK IF BREAK IN USER SPACE CAUSED BY MDT
5433 .SBTTL M.USCK - Check if Break in User Space Caused by MDT
5434 ;++
5435 ; FUNCTIONAL DESCRIPTION:
5436 ; None
5437 ;
5438 ; CALLING SEQUENCE:
5439 ; CALL M.USCK
5440 ;
5441 ; INPUT PARAMETERS:
5442 ; None
5443 ;
5444 ; IMPLICIT INPUTS:
5445 ; None
5446 ;
5447 ; OUTPUT PARAMETERS:
5448 ; None
5449 ;
5450 ; IMPLICIT OUTPUTS:
5451 ; None
5452 ;
5453 ; CONDITION CODES:
5454 ; None
5455 ;
5456 ; SIDE EFFECTS:
5457 ; Register R0 is modified
5458 ;--
5459 001 .IF DF D.MCB
5460
5461 013030' .PSECT $CODE$,I
5462 013030' 012700 140020 M.USCK: MOV #140020,R0 ; If user space
5463 013034' 046700 000454' BIC D.UPS,R0 ; and t-bit on
5464 013040' 001022 BNE 80$ ; and
5465 013042' 105767 000105' TSTB D.T ; not proceeding after a break
5466 013046' 003017 BGT 80$ ; then
5467 013050' 042767 000020 000454' BIC #20,D.UPS ; turn off T-bit,
5468 013056' 013700 000000G MOV @#$HEADR,R0 ; get header
5469 013062' 042760 000020 000014 BIC #20,H.IPS(R0) ; to clear the T-bit in initial PS,
5470 013070' 112767 000001 000104' MOVB #1,D.S ; and simulate
5471 013076' 012767 000001 000364' MOV #1,D.CT+<D.BKS*2> ; a single step.
5472 013104' 005727 TST (PC)+
5473 013106' 000261 80$: SEC
5474 013110' 000207 RETURN
5475 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 94
DDT.MAC 30-DEC-82 01:45 M.USON - SET UP TO SYNCHRONIZE WITH TASK
5477 .SBTTL M.USON - Set Up to Synchronize with Task
5478 ;++
5479 ; FUNCTIONAL DESCRIPTION:
5480 ; None
5481 ;
5482 ; CALLING SEQUENCE:
5483 ; CALL M.USON
5484 ;
5485 ; INPUT PARAMETERS:
5486 ; R4 = TCB of task to break into.
5487 ;
5488 ; IMPLICIT INPUTS:
5489 ; None
5490 ;
5491 ; OUTPUT PARAMETERS:
5492 ; None
5493 ;
5494 ; IMPLICIT OUTPUTS:
5495 ; None
5496 ;
5497 ; CONDITION CODES:
5498 ; None
5499 ;
5500 ; SIDE EFFECTS:
5501 ; Register R0 is modified
5502 ;--
5503 001 .IF DF D.MCB
5504
5505 013112' .PSECT $CODE$,I
5506 013112' 023704 000000G M.USON: CMP @#$TKTCB,R4
5507 013116' 001004 BNE 10$
5508 013120' 052767 000020 177776G BIS #20,$STACK-2 ; Set the current task T-bit
5509 013126' 000424 BR 90$
5510 013130' 005764 000032 10$: TST T.STAT(R4) ; Check TS.EXE
5511 013134' 100412 BMI 20$ ; and if executing
5512 013136' 016400 000046 MOV T.PCB(R4),R0 ; then follow the PCB
5513 013142' 016000 000000G MOV P.HDR(R0),R0 ; to the header
5514 013146' 016000 000072 MOV H.GARD(R0),R0 ; to the guard word
5515 013152' 052760 000020 177760 BIS #20,-<8.*2>(R0) ; and set the T-bit in the PS.
5516 013160' 000407 BR 90$ ; Not executing:
5517 013162' 016400 000046 20$: MOV T.PCB(R4),R0 ; follow the PCB
5518 013166' 016000 000000G MOV P.HDR(R0),R0 ; to the header
5519 013172' 052760 000020 000014 BIS #20,H.IPS(R0) ; and set the T-bit in initial PS.
5520 013200' 012767 000240 000000G 90$: MOV #240,$EX14+0 ; Allow user breakpoints
5521 013206' 012767 000240 000002G MOV #240,$EX14+2
5522 013214' 012767 000240 000004G MOV #240,$EX14+4
5523 013222' 000207 RETURN
5524 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 95
DDT.MAC 30-DEC-82 01:45 D.RD50 - CONVERT THREE ASCII CHARACTERS TO RADIX-50 WORD
5526 .SBTTL D.RD50 - Convert three ASCII Characters to Radix-50 Word
5527 ;++
5528 ; FUNCTIONAL DESCRIPTION:
5529 ; None
5530 ;
5531 ; CALLING SEQUENCE:
5532 ; CALL D.RD50
5533 ;
5534 ; INPUT PARAMETERS:
5535 ; R0 = address of character string.
5536 ;
5537 ; IMPLICIT INPUTS:
5538 ; None
5539 ;
5540 ; OUTPUT PARAMETERS:
5541 ; R0 = Radix-50 word
5542 ;
5543 ; IMPLICIT OUTPUTS:
5544 ; None
5545 ;
5546 ; CONDITION CODES:
5547 ; None
5548 ;
5549 ; SIDE EFFECTS:
5550 ; None
5551 ;--
5552
5553 013224' .PSECT $CODE$,I
5554 013224' D.RD50: PUSH$S <R2,R1,#-3> ; SAVE R2, R1 and character looper.
5555 013234' 005001 CLR R1 ; NOW CLEAR IT
5556 013236' 005002 10$: CLR R2 ; OFFSET OF CHARACTERS
5557 013240' 126210 001515' 20$: CMPB D.RDTB(R2),(R0) ; CHARACTER MATCH?
5558 013244' 001406 BEQ 30$ ; BRANCH IF SO
5559 013246' 005202 INC R2 ; NEXT CHARACTER
5560 013250' 020227 000050 CMP R2,#D.ENTB ; AT END OF TABLE
5561 013254' 002771 BLT 20$ ; BRANCH IF NOT
5562 013256' 000167 164662 JMP D.ERR ; BAD CHARACTERS
5563 013262' 30$:
5564 001 .IF DF D.MCB
5565 013262' 070127 000050 MUL #50,R1 ; multiply by 50
5566 .IFF
5567 ASL R1 ; MULTIPLY BY 2
5568 ASL R1 ; MULTIPLY BY 4
5569 ASL R1 ; MULTIPLY BY 8
5570 PUSH$S R1 ; STORE AWAY
5571 ASL R1 ; MULTIPLY BY 16
5572 ASL R1 ; MULTIPLY BY 32
5573 ADD (SP)+,R1 ; ADD 8X TO MAKE IT 40X
5574 000 .ENDC
5575 013266' 060201 ADD R2,R1 ; PUT IN NEW CHARACTER
5576 013270' 005200 INC R0 ; POINT TO NEXT CHARACTER
5577 013272' 005216 INC (SP) ; INCREMENT LOOPER
5578 013274' 100760 BMI 10$ ; BRANCH IF MORE
5579 013276' POP$S ,1 ; RESET STACK
5580 013300' 010100 MOV R1,R0 ; RESULT IN R0
5581 013302' POP$S <R1,R2> ; RESTORE R1 and R2
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 95-1
DDT.MAC 30-DEC-82 01:45 D.RD50 - CONVERT THREE ASCII CHARACTERS TO RADIX-50 WORD
5582 013306' 000207 RETURN ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 96
DDT.MAC 30-DEC-82 01:45 D.CHAR - CONVERT RADIX-50 WORD TO THREE ASCII CHARACTERS
5584 .SBTTL D.CHAR - Convert Radix-50 Word to three ASCII Characters
5585 ;++
5586 ; FUNCTIONAL DESCRIPTION:
5587 ; None
5588 ;
5589 ; CALLING SEQUENCE:
5590 ; CALL D.CHAR
5591 ;
5592 ; INPUT PARAMETERS:
5593 ; R1 = address of character buffer.
5594 ; R0 = Radix-50 word.
5595 ;
5596 ; IMPLICIT INPUTS:
5597 ; None
5598 ;
5599 ; OUTPUT PARAMETERS:
5600 ; R1 = adjusted to point past characters inserted in buffer.
5601 ;
5602 ; IMPLICIT OUTPUTS:
5603 ; None
5604 ;
5605 ; CONDITION CODES:
5606 ; None
5607 ;
5608 ; SIDE EFFECTS:
5609 ; Registers R0, R2 and R3 are modified.
5610 ;--
5611
5612 013310' .PSECT $CODE$,I
5613 013310' 010103 D.CHAR: MOV R1,R3 ; INDEX HERE SINCE D.DIVD WILL USE R1
5614 001 .IF DF D.MCB
5615 013312' 010001 MOV R0,R1
5616 013314' 005000 CLR R0
5617 013316' 071027 003100 DIV #50*50,R0
5618 .IFF
5619 MOV #50*50,R2 ; OTHER OPERAND
5620 CALL D.DIVD ; DIVIDE THEM
5621 .IFTF
5622 013322' 116023 001515' MOVB D.RDTB(R0),(R3)+ ; MOVE A CHARACTER IN
5623 .IFT
5624 013326' 005000 CLR R0
5625 013330' 071027 000050 DIV #50,R0
5626 .IFF
5627 MOV #50,R2 ; OPERAND
5628 MOV R1,R0 ; GET NEW NUMERATOR
5629 CALL D.DIVD ; DIVIDE THEM
5630 000 .ENDC
5631 013334' 116023 001515' MOVB D.RDTB(R0),(R3)+ ; MOVE ANOTHER CHARACTER IN
5632 013340' 116123 001515' MOVB D.RDTB(R1),(R3)+ ; MOVE LAST CHARACTER IN
5633 013344' 010301 MOV R3,R1 ; RESTORE FOR THE USER
5634 013346' 000207 RETURN ; RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 97
DDT.MAC 30-DEC-82 01:45 D.DIVD - DIVISION ROUTINE
5636 .SBTTL D.DIVD - Division Routine
5637 ;++
5638 ; FUNCTIONAL DESCRIPTION:
5639 ; None
5640 ;
5641 ; CALLING SEQUENCE:
5642 ; CALL D.DIVD
5643 ;
5644 ; INPUT PARAMETERS:
5645 ; R0 = dividend.
5646 ; R2 = divisor.
5647 ;
5648 ; IMPLICIT INPUTS:
5649 ; None
5650 ;
5651 ; OUTPUT PARAMETERS:
5652 ; R0 = quotient.
5653 ; R1 = remainder.
5654 ;
5655 ; IMPLICIT OUTPUTS:
5656 ; None
5657 ;
5658 ; CONDITION CODES:
5659 ; None
5660 ;
5661 ; SIDE EFFECTS:
5662 ; None
5663 ;--
5664 001 .IF NDF D.MCB
5665
5666 .PSECT $CODE$,I
5667 D.DIVD: PUSH$S #16. ; SHIFT COUNT
5668 CLR R1 ; ASSUME NO HIGH PART
5669 10$: ASL R0 ; DOUBLE PRECISON SHIFT
5670 ROL R1
5671 CMP R2,R1 ; WILL DIVISOR GO IN?
5672 BHI 20$
5673 SUB R2,R1
5674 INC R0
5675 20$: DEC (SP)
5676 BGT 10$ ; SOB?
5677 POP$S ,1
5678 RETURN
5679 000 .ENDC
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 98
DDT.MAC 30-DEC-82 01:45 D.VLD - CHECK FOR VALID WORD ADDRESS
5681 .SBTTL D.VLD - Check for Valid Word Address
5682 ;++
5683 ; FUNCTIONAL DESCRIPTION:
5684 ; None
5685 ;
5686 ; CALLING SEQUENCE:
5687 ; CALL D.VLD
5688 ;
5689 ; INPUT PARAMETERS:
5690 ; R5 = virtual address of word to be checked
5691 ;
5692 ; IMPLICIT INPUTS:
5693 ; None
5694 ;
5695 ; OUTPUT PARAMETERS:
5696 ; None
5697 ;
5698 ; IMPLICIT OUTPUTS:
5699 ; None
5700 ;
5701 ; CONDITION CODES:
5702 ; None
5703 ;
5704 ; SIDE EFFECTS:
5705 ; None
5706 ;--
5707
5708 013350' .PSECT $CODE$,I
5709 013350' D.VLD: PUSH$S <R4,R0>
5710 013354' 010504 MOV R5,R4
5711 013356' 004767 000400' CALL D.GETW
5712 013362' POP$S <R0,R4>
5713 013366' 000207 RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 99
DDT.MAC 30-DEC-82 01:45 D.FTCH - FETCH WORD OR BYTE AT GIVEN ADDRESS
5715 .SBTTL D.FTCH - Fetch Word or Byte at Given Address
5716 ;++
5717 ; FUNCTIONAL DESCRIPTION:
5718 ; None
5719 ;
5720 ; CALLING SEQUENCE:
5721 ; CALL D.FTCH
5722 ;
5723 ; INPUT PARAMETERS:
5724 ; None
5725 ;
5726 ; IMPLICIT INPUTS:
5727 ; D.CAD = Address of byte/word to fetch
5728 ; D.BW = 1/byte or 2/word
5729 ;
5730 ; OUTPUT PARAMETERS:
5731 ; R0 = Value fetched
5732 ;
5733 ; IMPLICIT OUTPUTS:
5734 ; None
5735 ;
5736 ; CONDITION CODES:
5737 ; None
5738 ;
5739 ; SIDE EFFECTS:
5740 ; None
5741 ;--
5742
5743 013370' .PSECT $CODE$,I
5744 013370' D.FTCH: PUSH$S R4
5745 013372' 016704 000222' MOV D.CAD,R4
5746 013376' 022767 000001 000120' CMP #1,D.BW
5747 013404' 001003 BNE 20$
5748 013406' 004767 000366' CALL D.GETB
5749 013412' 000402 BR 80$
5750 013414' 004767 000400' 20$: CALL D.GETW
5751 013420' 80$: POP$S R4
5752 013422' 000207 RETURN
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 100
DDT.MAC 30-DEC-82 01:45 D.REL - RELOCATE ADDRESS FOR FETCH OR STORE
5754 .SBTTL D.REL - Relocate Address for Fetch or Store
5755 ;++
5756 ; FUNCTIONAL DESCRIPTION:
5757 ; None
5758 ;
5759 ; CALLING SEQUENCE:
5760 ; CALL D.REL
5761 ;
5762 ; INPUT PARAMETERS:
5763 ; R4 = virtual address of byte/word to access.
5764 ;
5765 ; IMPLICIT INPUTS:
5766 ; None
5767 ;
5768 ; OUTPUT PARAMETERS:
5769 ; R4 = mapped address to access byte/word.
5770 ; KISAR6 = mapped to specified address.
5771 ;
5772 ; IMPLICIT OUTPUTS:
5773 ; None
5774 ;
5775 ; CONDITION CODES:
5776 ; None
5777 ;
5778 ; SIDE EFFECTS:
5779 ; None
5780 ;--
5781
5782 000366' .PSECT $ABS$,I
5783 000366' 004367 000036 D.GETB: JSR R3,D.REL
5784 000372' 005000 CLR R0
5785 000374' 151300 BISB (R3),R0
5786 000376' 000207 RETURN
5787 000400' 004367 000024 D.GETW: JSR R3,D.REL
5788 000404' 011300 MOV (R3),R0
5789 000406' 000207 RETURN
5790 000410' 004367 000014 D.STRB: JSR R3,D.REL
5791 000414' 110013 MOVB R0,(R3)
5792 000416' 000207 RETURN
5793 000420' 004367 000004 D.STRW: JSR R3,D.REL
5794 000424' 010013 MOV R0,(R3)
5795 000426' 000207 RETURN
5796
5797 000430' D.REL: PUSH$S R3
5798 000432' 010403 MOV R4,R3
5799 000434' 022704 177700 CMP #177700,R4
5800 000440' 101021 BHI 30$
5801 000442' 022704 177707 CMP #177707,R4
5802 000446' 103010 BHIS 20$
5803 000450' 022704 177776 CMP #177776,R4
5804 000454' 101013 BHI 30$
5805 000456' 162703 177776 SUB #177776,R3 ; Display saved PS
5806 000462' 062703 000454' ADD #D.UPS,R3
5807 000466' 000451 BR 70$
5808 000470' 162703 177700 20$: SUB #177700,R3 ; Display saved register
5809 000474' 006303 ASL R3
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 100-1
DDT.MAC 30-DEC-82 01:45 D.REL - RELOCATE ADDRESS FOR FETCH OR STORE
5810 000476' 062703 000434' ADD #D.URG,R3
5811 001 .IF DF D.MCB
5812 000502' 000443 BR 70$
5813 000504' 032767 140000 000454' 30$: BIT #140000,D.UPS
5814 000512' 001410 BEQ 40$
5815 000514' 072327 177764 ASH #-14,R3 ; Display user mode virtual
5816 000520' 042703 177761 BIC #^C<7*2>,R3
5817 000524' MAP$ UISAR0(R3)
5818 000532' 000422 BR 60$
5819 000534' 022704 172340 40$: CMP #172340,R4
5820 000540' 101010 BHI 50$
5821 000542' 022704 172400 CMP #172400,R4
5822 000546' 101405 BLOS 50$
5823 000550' 162703 172340 SUB #172340,R3 ; Display saved APR
5824 000554' 062703 000464' ADD #MAPR,R3
5825 000560' 000414 BR 70$
5826 000562' 072327 177764 50$: ASH #-14,R3 ; Display kernel mode virtual
5827 000566' 042703 177761 BIC #^C<7*2>,R3
5828 000572' MAP$ MAPR(R3)
5829 000600' 010403 60$: MOV R4,R3
5830 000602' 042703 160000 BIC #160000,R3
5831 000606' 052703 140000 BIS #140000,R3
5832 .IFF
5833 30$:
5834 000 .ENDC
5835 000612' 004736 70$: CALL @(SP)+
5836 000614' MAP$ D.DAR6
5837 000622' POP$S R3
5838 000624' 000207 RETURN
5839
5840 000000' .END DDT
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 101
DDT.MAC 30-DEC-82 01:45 CROSS REFERENCE TABLE -- USER SYMBOLS
CE.ABO= 177770 97#
CE.BUF= 177600 97#
CE.DCR= 177570 97#
CE.DEV= 177532 97#
CE.DIS= 177520 97#
CE.ERR= 177760 97#
CE.HFE= 177560 97#
CE.MOP= 177750 97#
CE.MTL= 177550 97#
CE.NTE= 177720 97#
CE.ROV= 177540 97#
CE.RTE= 177730 97#
CE.SRC= 177740 97#
CE.TMO= 177710 97#
CE.UDR= 177510 97#
CS.SUC= 000001 97#
C.BUF 000016 97#
C.CHN 000002 97#
C.CNT 000022 97#
C.FNC 000012 97#
C.LIN 000010 97#
C.LIX 000010 97#
C.LNK 000000 97#
C.MOD 000013 97#
C.OWN 000006 97#
C.PIX 000011 97#
C.PRM 000024 97#
C.PRM1 000024 97#
C.PRM2 000026 97#
C.PRM3 000030 97#
C.PRM4 000032 97#
C.PRM5 000034 97#
C.STK 000004 97#
C.STS 000014 97#
C..ARG= 000003 818# 820# 3262# 3263#
C..IDX= 000000 818# 820# 3262# 3263#
DDT 000000R 006 484 714 811# 2816 5840
D.ABS 004424R 007 408 2641#
D.ADD 002106R 007 379 380 1112 1338#
D.ADDR 000276R 003 721# 2973 3021* 3959* 4052 4053*
D.ADDS= 000003 567# 1227
D.ALTF 000053R 003 634# 928* 1034 1466 1582 1588* 2024 2123 2128 2150 2502 2811 2891
3216 3348 3410
D.ALTM 002676R 007 389 1582#
D.ALTQ 005422R 007 424 3127#
D.ALTV 005374R 007 429 3091#
D.ASCI 010054R 007 2541 4230#
D.BACK 003230R 007 398 399 1985#
D.BCHK 007056R 007 3533* 3848#
D.BIAS 000320R 003 722# 2971 3020* 3958 4051
D.BKCK 005256R 007 2880* 2952# 3854*
D.BKHI 000432R 003 732# 3353* 3354* 3863
D.BKLO 000430R 003 731# 3351* 3352* 3865
D.BKP = 000010 112# 717 721 722 724 725 726 2884 2886 2897 2905 2912 3853
3964 4047
D.BKPT 005034R 007 409 2871#
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 101-1
DDT.MAC 30-DEC-82 01:45 CROSS REFERENCE TABLE -- USER SYMBOLS
D.BKS = 000000 113# 3346* 3356* 5093* 5285* 5471*
D.BKST 005314R 007 2888* 2899* 2903* 3007#
D.BKTB 000254R 003 717# 2914 2952 3007* 3955 4048
D.BOTH 000106R 003 659# 2454* 2456*
D.BRKT 007056R 007 3756#
D.BUFR 000001R 003 612# 646 647 4971 5052
D.BW 000120R 003 667# 1651* 1715* 1883 1990 2132 2760 4191 4234 4279 4334 4386 5746
D.BYT 002732R 007 393 1619#
D.BYTE 004362R 007 422 2576#
D.CAD 000222R 003 703# 931 1213 1273 1752* 1890* 2130 2152 2154* 2157 2160 2162* 2166
2173* 2412 2435* 2444 2451 2461* 2751 2755 2759 2779* 3562* 3578* 4005*
4342 4388 4395 4397 5745
D.CADC 000216R 003 701# 931* 1314 1316* 2157 2166 2763 2770
D.CADV 010020R 007 1922 2499 3579* 4190# 4348 4403
D.CDSP 000032R 003 615# 1652* 1716* 1888 2447
D.CEXP 000700R 007 1110# 1166* 1201* 1211* 1236*
D.CHAR 013310R 007 1532* 1534* 4338* 4608* 4610* 4624* 4645* 5613#
D.CLBR 003214R 007 405 1953#
D.CLGT= 000067 603# 1024
D.CLOS 001410R 002 528# 4530
D.CLSE 004510R 007 1813* 1876* 1985* 2706* 2749#
D.CLSM 002062R 007 984* 1329#
D.CLS3 002066R 007 1330# 1332
D.CMPB 000224R 006 2958* 2970#
D.COLN 002164R 007 390 1404#
D.COLO= 000016 582# 1047
D.COMA 000230R 003 706# 916* 2092* 2889 3346
D.COMM= 000022 587# 1301
D.COUS 000530R 002 513# 1057 1070 4429
D.CPAR= 000010 575# 1119
D.CPOS 000000R 003 611# 4692 4889* 4890 4893*
D.CR 000054R 003 635# 4726
D.CRET 004452R 007 395 2706#
D.CRLF 011630R 007 1885* 2443* 3414* 3461* 3584* 4726#
D.CT 000364R 003 725# 2890* 2893* 3356* 3413* 3537 3539* 3542* 3546* 3587 5093* 5285* 5471*
D.CURM 000114R 003 665# 1620 1684 2449* 2499* 2500 2504 2541* 2544* 2545 2576* 2609* 2610
2708 2712
D.CZVN 010722R 007 456 4474#
D.DAR6 000456R 003 764# 813* 814* 821 1460 1483 1504 3264 5836
D.DASH= 000007 573#
D.DCD 000000R 007 916# 944 951 1017 2511 2713 2817 3610 5011
D.DCD1 000056R 007 929# 1589
D.DCD2 000034R 007 924# 2093 2127
D.DCD3 000052R 007 928# 2918 3059 3097 3132 3184
D.DCOM 003334R 007 394 2090#
D.DC49 010426R 007 4394* 4408#
D.DC5 011164R 007 4459* 4515* 4532#
D.DD 011044R 007 465 4472* 4503# 4545*
D.DDR 011214R 007 466 4544#
D.DECN 000140R 003 678# 982* 1001 1011* 1055 2495 2498 2578
D.DISP 001154R 007 444 1166# 1195*
D.DIV 002142R 007 382 1362#
D.DOT 000214R 003 700# 1042 1167 1406 1749* 1814* 1877 1879 1881* 1883* 1884* 1886 1890
1986 1988 1990* 1992* 2146 2148* 2163 2165* 2823 2838* 3091 3127 3606*
4397
D.DPS 000462R 003 766# 3900* 3919 4073* 4081
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 101-2
DDT.MAC 30-DEC-82 01:45 CROSS REFERENCE TABLE -- USER SYMBOLS
D.DR6 000460R 003 765# 932 3901* 4063
D.DVTB 000116R 003 666# 2498* 4795
D.E 000052R 003 630# 3920* 3927* 4065
D.ECNT= 000770R 002 515# 1058
D.EDIT= 000043 26# 541
D.ENDB 000032R 003 613# 4969 5050
D.ENTB= 000050 605# 5560
D.ENUT= 000000 560# 2250
D.EQAL 003320R 007 388 2058#
D.ERF 000220R 003 702#
D.ERR 000144R 007 376 377 378 384 407 413 415 416 417 419 432 946# 1027
1124 1143 1191 1294 1304 1428 1479 2176 2252 2463 2497 2781 2841
2919 3258 3332 3420 3453 3653 5562
D.ESCH 003766R 007 412 2316#
D.EXCL 003064R 007 406 1845#
D.EXEC 005752R 007 431 3329#
D.EXPR 000710R 007 933* 1112# 1130* 1133
D.FENC 000242R 003 711# 1422 1426* 1468 1472* 1502 1526
D.FIND 000107R 003 661# 4142*
D.FIRS 001335R 002 525# 4457 4535
D.FORM= 000130 23# 531
D.FTCH 013370R 007 4190* 4230* 4274* 4336* 4400* 5744#
D.FWA 000246R 003 713# 1409 2125* 2206 2413
D.FWAF 000037R 003 620# 917* 1407 2126*
D.FWAS 003350R 007 387 2123#
D.GDD 001306R 007 451 1175* 1181* 1183* 1200# 1279*
D.GDDR 001674R 007 452 1279#
D.GDP = ****** U 58 400 436 557 594 2280 3294 4877 4974
D.GET 012110R 007 985* 1289* 2243* 3162* 3167* 3169* 4946# 4966 4979
D.GETB 000366R 006 5748* 5783#
D.GETI 001126R 007 936* 1156#
D.GETW 000400R 006 2153* 2161* 2433* 3092* 3128* 4343* 4410* 4462* 4521* 5711* 5750* 5787#
D.GGET 001720R 007 1264* 1288#
D.GNUM 001216R 007 446 450 1179#
D.GO 006176R 007 414 3451#
D.GO3 006202R 007 3358 3419 3460#
D.GO4 006226R 007 3465# 3529
D.GO5 006212R 007 3417 3462# 3532
D.GR 001242R 007 448 1173* 1187# 1193* 1222* 1225* 1232* 1251* 1259* 1262* 1281*
D.GRNN 001262R 007 449 1193#
D.GRSS 001176R 007 445 1173#
D.GSD 001222R 007 447 1181#
D.GTAC 002414R 007 1152 1415* 1463* 1483# 2142*
D.GTAD 001072R 007 1046* 1145#
D.GTSM 002474R 007 1502# 4145*
D.GTSS 002504R 007 1504# 3571* 3924*
D.GT40= ****** U 66 4880
D.HASH= 000001 563# 1204 1237
D.HELO 001431R 002 531# 832
D.IFMT 000122R 003 668# 2641* 2675* 4143
D.INMD 004406R 007 426 2609#
D.INNM 004230R 007 410 2493#
D.INPA 000040R 003 621# 930* 1110* 1125
D.INPU 000064R 003 646# 2423 4965 5048* 5049* 5050 5052*
D.INRD 004434R 007 425 2672#
D.INST 010334R 007 665 671 676 1954 2028 2455* 2609 3607 4386#
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 101-3
DDT.MAC 30-DEC-82 01:45 CROSS REFERENCE TABLE -- USER SYMBOLS
D.INTX 004330R 007 427 2541#
D.KILL 002310R 007 418 1458#
D.KSR = ****** U 74 610 645 2416 2421 4684 4883 4957 4963 4991 5043
D.LASC 000240R 003 710# 1421* 1458
D.LASV 000210R 003 698# 939* 1751 1814 4157* 4231* 4237 4275* 4344* 4793*
D.LASW 000212R 003 699# 940* 2026 2058 4156* 4232* 4276* 4345* 4401* 4794*
D.LEGS 000531R 002 514# 4422 4425
D.LEN = 000000 514#
D.LETR= 000034 601# 1036
D.LEVL 000036R 003 619# 929* 1122 1127* 1134*
D.LFIN 000112R 003 663# 1884 2023* 2059* 2136 2753* 2766* 2773* 4196* 4239* 4299* 4346* 4399*
D.LGCH 001461R 002 561# 563 565 567 569 573 575 582 587 601 603 1021
D.LGDR 000000R 002 375# 942* 1141
D.LSI = ****** U 51 126 502 514 521
D.LVL = 000002 25# 536 537
D.LWA 000250R 003 714# 2426 2813* 2816*
D.LWAS 004674R 007 386 2811#
D.MACH 000035R 003 618# 1078 3526 4427
D.MASK 000252R 003 715# 2429 3053
D.MAST 005340R 007 420 3053#
D.MCB = 000001 49# 93 467 530 610 625 636 645 683 720 738 767 812
993 1343 1460 1483 1504 2416 2421 2754 2954 3009 3215 3331 3452
3468 3503 3640 3684 3719 3757 3899 4044 4389 4586 4796 4883 4957
4963 4991 5043 5083 5126 5180 5233 5276 5318 5365 5407 5459 5503
5564 5614 5664 5811
D.MOD7 001420R 002 529# 4455
D.MULT 002122R 007 381 1342#
D.NEXP 002016R 007 1212* 1271* 1314#
D.NLWD 000224R 003 704# 2130 2173 2751 2779 4005
D.NONE 001152R 007 440 441 442 443 1164#
D.NOTR 001644R 007 1208 1245* 1271#
D.NOTY 000106R 003 660# 4688 4875
D.NSCH 003774R 007 421 2347#
D.NZVC 001374R 002 526# 1100 4474
D.N16 010704R 007 455 4428 4466 4468#
D.N3 010746R 007 457 4482#
D.N6 010752R 007 460 4483#
D.N8 010756R 007 464 4484#
D.OFST 000204R 003 696# 926* 1111* 1128 1129* 1131* 1137 1338* 1340* 1345 1347* 1364 1372*
1587*
D.OKTT= 000000 57# 94# 111
D.OMOD 000134R 003 676# 1620* 1684* 1753 1783 1845* 1891 1922* 1954* 2500* 2545* 2577* 2610*
2712* 3564* 3607*
D.OPAR= 000002 565# 1116 1202 1239
D.OPBR 003200R 007 404 1921#
D.OPCH 001400R 002 527# 4514
D.OPEN 000406R 003 726# 2889* 3346* 3560
D.OPER 000136R 003 677# 1112* 1128 1131* 1132* 1136* 1139* 1141* 1220 1257 2915* 3057* 3095*
3130* 3182*
D.OPNW 003016R 007 1621 1685 1747# 1846 1923 1955
D.OPNX 003074R 007 396 1876#
D.OP2 003142R 007 1815 1882 1885# 1991 1993 2174 2831
D.OP3 003146R 007 1886# 3608*
D.ORAB 003050R 007 403 1813#
D.ORPC 003272R 007 397 2023#
D.OUTP 000066R 003 647# 2423 4965 4967 4968* 4969 4971*
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 101-4
DDT.MAC 30-DEC-82 01:45 CROSS REFERENCE TABLE -- USER SYMBOLS
D.P 000041R 003 622# 3357 3404 3513* 3535* 3549 3585
D.PARG 000156R 002 440# 1159*
D.PARM 000210R 002 454# 4453
D.PARO 000200R 003 695# 922* 923* 1214* 1274* 2768 2775
D.PARS 000146R 003 682# 921* 1215* 1275* 2767 2774
D.PART 010124R 007 2576 2577 4274#
D.PATA 000156R 003 688# 2134 2146* 2819 2827
D.PATE 000174R 003 691# 2149* 2155* 2156* 2168 2172* 2822
D.PATI 000154R 003 687# 2147* 2148 2825
D.PATR 000152R 003 686#
D.PATS 000162R 003 690# 691 2149 2821
D.PEBW 000130R 003 673#
D.PEFM 000132R 003 674#
D.PERM 000124R 003 671# 2505 2707
D.PERN 000126R 003 672#
D.POLL 012330R 007 2422* 4898* 4964* 5046#
D.POS 000244R 003 712# 990 1322 1326* 1333*
D.PRIM 000172R 007 981# 1113* 1179 1187* 1254*
D.PRIO= 000340 107# 766 919
D.PRM 004272R 007 2502# 2546 2579 2611 2642 2676
D.PROC 006070R 007 423 3234 3400#
D.PRO1 006130R 007 3408 3410#
D.PRO2 006152R 007 3415# 3545 3592
D.PRO3 006164R 007 3405 3418#
D.PRO6 006142R 007 3359 3411 3413#
D.PRO7 006146R 007 3414#
D.PRO9 006172R 007 3401 3420#
D.PSAV 001742R 007 1174* 1182* 1194* 1296#
D.PSVR 000042R 003 626# 3243* 3598
D.PTSM 002040R 007 1028* 1322# 3173*
D.R 011234R 007 462 4488* 4498* 4528* 4550#
D.RADC 010244R 007 2544 4334#
D.RAD1 000234R 003 708# 1147* 1412 1413* 1493 2140*
D.RAD2 000236R 003 709# 1151* 1412 1414* 1495 2141*
D.RCHK 001772R 007 1188* 1207* 1241* 1306#
D.RCHR= 000031 103# 612
D.RCSR= 177560 101# 3589 5046 5203* 5241*
D.RDB = 177562 102# 5048 5133 5202
D.RDD 011022R 007 459 4496#
D.RDTB 001515R 002 602# 605 5557 5622 5631 5632
D.RD50 013224R 007 1146* 1150* 3180* 5554#
D.REGT 001566R 002 4381# 4552
D.REL 000430R 006 2970 3019 5783 5787 5790 5793 5797#
D.REST 007504R 007 3254* 3467* 3603* 4041#
D.RFND 007720R 007 1887* 2027 2446* 4139# 4193* 4468 4524*
D.RFNL 000206R 003 697# 1503 2674*
D.RN6 010766R 007 463 4486#
D.RSX = ****** U 86 492 649 918 2415 4900 4947
D.RTS 010122R 007 454 1845 4240#
D.S 000104R 003 657# 3347* 3350* 3531 3849 3867* 5092* 5284* 5470*
D.SAVE 007154R 007 3512* 3898#
D.SBYT 002746R 007 1619* 1651#
D.SD.T 000104R 003 656# 3463 3949 4042
D.SEMI 003044R 007 391 1783#
D.SETB 000252R 006 3013* 3019#
D.SIZE 000232R 003 707# 2578* 4284
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 101-5
DDT.MAC 30-DEC-82 01:45 CROSS REFERENCE TABLE -- USER SYMBOLS
D.SNGL 003730R 007 428 2243#
D.SPAC= 000004 569# 1081
D.SS 011032R 007 4473 4499#
D.SSDD 010710R 007 461 4470#
D.STRB 000410R 006 2778* 5790#
D.STRS 000771R 002 521# 1065 4434
D.STRW 000420R 006 2164* 2210* 2762* 2769* 2776* 2834* 5793#
D.STYP 011642R 007 833 3559* 3574* 4149* 4341* 4598* 4615* 4632* 4639* 4650 4727 4759#
D.STY1 011636R 007 4758# 4760
D.SUBT 002114R 007 383 1220 1257 1340#
D.SVR2 000142R 003 679# 924* 1584* 2138 2409 2871 3054 3218 3233* 3245 3329 3407 3418
D.SVR4 000144R 003 681# 925* 1585* 2145* 2147 2207 2428 2874 3060 3235 3243 3247 3252*
3406 4140
D.SVR7 000176R 003 694#
D.SWAP 002656R 007 1425* 1473 1546#
D.SWRD 003000R 007 1683* 1715# 1921* 1953* 2411*
D.SYM 000070R 003 654# 712 990 1038 1040 1045 1060 1323 1329 1331 1404 1461 1531
1538 3177 3179 4337 4340 4607 4623 4628 4644 4649
D.SYML= 000012 114# 654 1323 1329
D.SYMU= 000024 115# 803
D.T 000105R 003 658# 3415* 3524 3530* 3547* 5465
D.TCOL= 000110 106# 4890
D.TCSR= 177564 104# 4895
D.TDB = 177566 105# 4897*
D.TDSP 000033R 003 616# 4685
D.TEXT 005446R 007 385 3162#
D.TOPS 000266R 002 502# 1070 4413 4422 4425 4429
D.TPC 000110R 003 662# 3416* 3528
D.TTAB 011572R 007 943* 950* 1016* 3563* 3609* 4393* 4683# 5010*
D.TYPE 011766R 007 947* 949* 1015* 1889* 2448* 3552* 3577* 4153* 4233* 4238* 4296* 4435* 4441*
4447* 4481 4490* 4500* 4526* 4537* 4547* 4556 4642* 4686 4691* 4758* 4803*
4820 4875# 4983* 4995* 5003* 5007* 5008* 5009*
D.TYPN 011650R 007 2060 4155* 4195* 4292* 4485 4793#
D.UADD 000156R 002 435# 2248
D.UIN 000342R 003 724# 3959 4052*
D.UPS 000454R 003 763# 3462* 3465* 3919* 3932* 3934 4071 4073 5091* 5463 5467* 5806 5813
D.URG 000434R 003 749# 5810
D.UR0 000434R 003 750# 3905* 4075
D.UR1 000436R 003 751# 3908* 4078
D.UR2 000440R 003 752# 3908* 4078
D.UR3 000442R 003 753# 3908* 4078
D.UR4 000444R 003 754# 3908* 4078
D.UR5 000446R 003 755# 3908* 4078
D.UR6 000450R 003 756# 3917* 3933* 3937*
D.UR7 000452R 003 757# 3344 3402 3466* 3523 3544 3591 3606 3851 3860* 3918* 3931* 4070
D.USED 000034R 003 617# 983* 1032* 1053
D.UTAB 001461R 002 556# 560 2245
D.VER = 000003 24# 533
D.VLD 013350R 007 2876* 3345* 3403* 3460* 5709#
D.WDS 004006R 007 2317 2348 2379 2409#
D.WRD 002764R 007 392 1683#
D.WSCH 004002R 007 430 2378#
D.XXX 000226R 003 705# 3898* 4006 4041* 4105
D.X8 011014R 007 458 4493#
D.ZERO 003700R 007 433 2206#
EXVEN 000272R 006 3251 3261#
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 101-6
DDT.MAC 30-DEC-82 01:45 CROSS REFERENCE TABLE -- USER SYMBOLS
EXVLST 000530R 003 784# 820 3263
EXVPRI 000522R 003 783# 818 3262
FC.AST= 000000 97# 479
FC.CCP= 000022 97# 488
FC.CTL= 000010 97# 483
FC.KCP= 000020 97# 487
FC.KIL= 000006 97# 482
FC.RCE= 000004 97# 481
FC.RCP= 000016 97# 486
FC.SYS= 000012 97#
FC.TIM= 000012 97# 484
FC.XCP= 000014 97# 485
FC.XME= 000002 97# 480
FD.AST= 000000 97#
FD.CCP= 000014 97#
FD.CTL= 000014 97#
FD.KCP= 000004 97#
FD.KIL= 000004 97#
FD.RCE= 000004 97#
FD.RCP= 000004 97#
FD.SYS= 000012 97#
FD.TIM= 000012 97#
FD.XCP= 000000 97#
FD.XME= 000000 97#
FM.CCB= 000010 97#
FM.CRA= 000002 97#
FM.DAT= 000000 97#
FM.GET= 000014 97#
FM.KIL= 000000 97#
FM.LTM= 000002 97#
FM.NM = 000006 97#
FM.PIN= 000006 97#
FM.PWF= 000004 97#
FM.RDB= 000012 97#
FM.RTN= 000002 97#
FM.SET= 000012 97#
FM.STM= 000000 97#
FM.STP= 000004 97#
FM.STR= 000002 97#
FM.SYN= 000004 97#
FM.XKL= 000004 97#
H.GARD 000072 5514
H.IPS 000014 5469* 5519*
INEXEC 001620R 002 4590# 4634
ININTR 001632R 002 4591# 4636 4638
INMCB 001613R 002 4589# 4614
INNULL 001644R 002 4592# 4612
INRSX 001606R 002 4588# 4597
KISAR5= ****** GX 813 815 3261 3644 5129 5194
KISAR6= ****** G 815#* 821#* 1460#* 1483#* 1504#* 2971 3020 3261#* 3264#* 3915# 3952# 3958#* 3967#*
4045# 4051#* 4061#* 4079#* 4620#* 4629#* 4640#* 5817#* 5828#* 5836#*
MAPR 000464R 003 768# 3910 5824 5828
MAPR5 000476R 003 774# 3914* 4080 4618 4629 4640
MAPR6 000500R 003 775# 3915* 4079
MCB$V0= ****** G 473#
MCB$V1= ****** G 473#
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 101-7
DDT.MAC 30-DEC-82 01:45 CROSS REFERENCE TABLE -- USER SYMBOLS
MDTDSP 000242R 002 474 478#
MMCHV 000504R 003 778# 3902* 3904 4074
MSIGV 000506R 003 779# 3514 3566 3593 3903* 3916 3928 3930 4067 4069
MSNBK 000512R 003 781# 5279 5283* 5368 5370* 5410 5427*
MS.ADR= 000004 5324# 5421*
MS.INT= 000026 5281 5332#
MS.NLN= 000034 5336# 5412 5418
MS.PDB= 000002 5322# 5429*
MTTBK 000510R 003 780# 829 5086 5183 5200* 5236 5238*
MT.ADR= 000066 5148# 5239
MT.AR5= 000004 5130# 5194*
MT.INT= 000030 830* 5088 5090* 5138#
MT.TLN= 000070 5150# 5185 5191
M.AR5 = ****** GX 3644 3914 4080*
M.BMES 000057R 003 637# 3557
M.DBG 005550R 007 411 3214#
M.LAST 006252R 007 819 3506#
M.PRIM 007002R 007 817 3643#
M.PROC 011260R 007 3548* 4595#
M.R0 = ****** GX 3905 4075*
M.SBLK 001750R 002 5321# 5322 5324 5325 5332 5336 5417
M.SNCK 012616R 007 3250* 3520* 5279#
M.SNIN 001756R 002 5325 5326#
M.SNOF 012660R 007 5368#
M.SNON 012724R 007 3224* 5410#
M.TTCK 012370R 007 3518* 5086#
M.TTIN 001656R 002 5129# 5130 5138 5148 5150 5190
M.TTOF 012550R 007 3249* 5236#
M.TTON 012440R 007 822* 5183#
M.USCK 013030R 007 3522* 5462#
M.USON 013112R 007 3231* 5506#
NEWEXV 000514R 003 782# 816* 817* 818 819* 820
OFFSET= 000344 511# 513 514#
PHDNAM 120000 4621 4630 4643
PHD$A 000000R 473# 474 475
PS = 177776 124# 827 828* 919* 2960* 2974 3900 4081* 5144
P.HDR = ****** GX 5513 5518
S.CSTS= ****** GX 3570
S.DSP 000004 98#
S.LNK 000000 98#
S.PDB 000002 98#
S.SBPT= ****** GX 3516
S.SDTE= ****** GX 3509 3647
S.SMDT 000000R 004 711 790# 1484
S.SSTS= ****** GX 3921
T.NAM 000006 4605 4606
T.PCB 000046 5512 5517
T.STAT 000032 5510
T.TCBL 000030 3229
UISAR0= 177640 108# 5817
$ALOCB= ****** GX 5186* 5413*
$CALLI= ****** G 818#* 820#* 3262#* 3263#*
$DEACB= ****** GX 5245* 5330 5377*
$DSPCR= ****** G 479# 480# 481# 482# 483# 485# 486# 487# 488#
$EX14 = ****** GX 5520* 5521* 5522*
$HEADR= ****** GX 4602 5468
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 101-8
DDT.MAC 30-DEC-82 01:45 CROSS REFERENCE TABLE -- USER SYMBOLS
$NONSI= ****** GX 825
$STACK= ****** GX 5508*
$STKDP= ****** GX 4599
$TKTCB= ****** GX 3228 4604 5506
$$TABG= 000242R 002 478# 479 480 481 482 483 484 485 486 487 488
. = 000626R 006 97# 98# 474# 475# 478 479 480 481 482 483 484 485 486
487 488 515 560 563 565 567 569 573 575 582 587 601
603 605 612# 643# 654# 655# 690# 721# 722# 724# 725# 726# 4380#
5130 5138 5148 5150 5322 5324 5332 5336
.CEXDP= ****** GX 4595
.CEXRQ= ****** GX 5426*
.CRPDB= ****** GX 4620
.CRPIX= ****** GX 816
.DSPCR= ****** G 474#
.INTCB= ****** GX 4616
.PDBNM= ****** GX 3222
.PDBVB= ****** GX 4618 5429
.SYNQH= ****** GX 5371 5373* 5375* 5422 5424* 5425*
...C = 000000 818# 820# 3262# 3263#
MDT - DDT FOR MCB DNMAC X24.07-563 28-MAY-85 14:25 PAGE 102
DDT.MAC 30-DEC-82 01:45 CROSS REFERENCE TABLE -- MACRO NAMES
CALL$A 818# 820# 3262# 3263#
CALL$C 96# 818 820 3262 3263
CCBDF$ 96# 97
CODE 498# 502 505# 514 517# 521
DSP$ 478# 479 480 481 482 483 484 485 486 487 488
DSP$B 96# 478
DSP$E 478# 489
EXTEND 143# 1460 1483 1504
HDRDF$ 96# 100
INSTRS 259# 502 514 521
MAP$ 815 821 1460 1483 1504 3261 3264 3958 4051 4079 4620 4629 4640 5817 5828
5836
MAP$S 3967 4061
MFPS 127# 827 2974 3900 5144
MTPS 134# 828 919 2960 4081
PHD$B 96# 473
PHD$D 473# 474
PHD$E 473# 475
PHD$I 473#
PHD$S 473#
POP$S 818# 820# 1105 1131 1148 1255 1274 1292 1348 1373 1418 1522 1533 1539 1549
2434 2450 2461 2916 2959 3014 3056 3262# 3263# 3583 3898 3937 4041 4150 4157
4298 4411 4463 4491 4501 4522 4527 4529 4541 4548 4609 4815 4910 5328 5579
5581 5712 5751 5837
PUSH$S 818# 820# 826 1099 1128 1145 1158 1253 1272 1280 1288 1296 1344 1362 1412
1505 1529 1547 2412 2431 2438 2955 3010 3053 3262# 3263# 3567 4139 4148 4278
4408 4460 4470 4486 4496 4512 4516 4519 4533 4544 4605 4622 4811 4905 5326
5554 5709 5744 5797
SMAP$ 3915
SMAP$S 3952 4045
SYNDF$ 96# 98
TCBDF$ 96# 99
. ABS. 000036 000 OVR RO ABS LCL I
000040 001 CON RW REL LCL I
$PLIT$ 002004 002 CON RW REL LCL D
$OWN$ 000536 003 CON RW REL LCL D
$SYM$ 000066 004 CON RW REL LCL D
$SYM. 000174 005 CON RW REL LCL D
$ABS$ 000626 006 CON RW REL LCL I
$CODE$ 013424 007 CON RW REL LCL I
ERRORS DETECTED: 0
DEFAULT GLOBALS GENERATED: 24
MDT,MDT/CR=MCB:RSXLIB/PA:1,MCBLIB/PA:1,CEX:CEXLIB/PA:1,DDT
RUN-TIME: 10 13 1 SECONDS
RUN-TIME RATIO: 74/25=2.8
CORE USED: 17K (33 PAGES)