Google
 

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)