Google
 

Trailing-Edge - PDP-10 Archives - BB-H311B-RM - rsx20f-swskit/listings/mac.lis
There are no other files named mac.lis in the archive.
ASGMT	MACRO M1108  05-DEC-77 23:14  PAGE 4


      1						.TITLE	ASGMT
      2						.IDENT	/03/
      3
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION 03
     23					;
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 6-FEB-73
     29					;	C.A. D'ELIA	22-MAR-74	014
     30					;	H.A. NICHOLS	18-JUN-74	017
     31					;
     32					;
     33					;+
     34					; **-ASGMT-ASSIGNMENT PROCESSOR
     35					; **-ASGMTF-ALTERNATE ENTRY
     36					;
     37					;-
     38
     39	000000					PURE	PUREI,I		;++017
     40	000000				ASGMT::	GETNB			;BYPASS "="
     41	000004	005046 				CLR	-(SP)		;ASSUME NO GLOBAL DEFINITION
     42	000006	020527 	000075 			CMP	R5,#CH.EQU	;SECOND EQUAL SIGN?
     43	000012	001004 				BNE	10$		;IF NE NO
     44	000014	012716 	000100 			MOV	#GLBFLG,(SP)	;SET GLOBAL DEFINITION BIT
     45	000020					GETNB			;BYPASS SECOND EQUAL SIGN
     46	000024	012701 	000004G		10$:	MOV	#SYMBOL+4,R1	;SET ADDRESS OF MODE,SECTOR
     47	000030	014146 				MOV	-(R1),-(SP)	;STACK SYMBOL
     48	000032	014146 				MOV	-(R1),-(SP)
     49	000034					RELEXP			;GET NON-EXTERNAL EXPRESSION
     50	000040	012621 				MOV	(SP)+,(R1)+	;RESTORE SYMBOL
     51	000042	012621 				MOV	(SP)+,(R1)+
     52	000044	000401 				BR	ASGMT1		;BRANCH AROUND SECONDARY ENTRY
     53	000046	005046 			ASGMTF::CLR	-(SP)		;CLEAR GLOBAL DEFINITION FLAG
     54	000050				ASGMT1:	SETPF1			;SET LISTING FIELD
     55	000054					SETXPR			;SET EXPRESSION REGISTERS
     56	000060	032767 	000000C	000000G		BIT	#ERR.U!ERR.A,ERRBTS ;++014 ANY ERRORS DETECTED?
     57	000066	001002 				BNE	20$		;++014 BRANCH IF SOME WERE FOUND
ASGMT	MACRO M1108  05-DEC-77 23:14  PAGE 4-1


     58	000070	052713 	000010 			BIS	#DEFFLG,(R3)	;++014 ELSE, SET DEFINED FLAG
     59	000074	051316 			20$:	BIS	(R3),(SP)	;++014 MERGE FLAGS AND SAVE VALUE
     60	000076	011446 				MOV	(R4),-(SP)
     61	000100					SSRCH			;SEARCH SYMBOL TABLE
     62	000104	012614 				MOV	(SP)+,(R4)	;RESTORE VALUE
     63	000106	032713 	000006 			BIT	#LBLFLG!MDFFLG,(R3) ;++014 MULTI-DEFINED OR LABEL?
     64	000112	001405 				BEQ	30$		;++014 BRANCH IF NOT
     65	000114					ERROR	M		;++014 YES, DECLARE "M" ERROR
     66	000122	052716 	000004 			BIS	#MDFFLG,(SP)	;++014 SET MULTI-DEFINED FLAG
     67	000126	032713 	000100 		30$:	BIT	#GLBFLG,(R3)	;++014 IS THIS A GLOBAL?
     68	000132	001405 				BEQ	40$		;++014 SKIP IF NOT
     69	000134	032713 	000010 			BIT	#DEFFLG,(R3)	;++014 WAS IT DEFINED IN PASS 1?
     70	000140	001002 				BNE	40$		;++014 SKIP IF IT WAS
     71	000142	004767 	000050 			CALL	2$		;++014 ELSE, CALL TO SET "A" ERROR
     72	000146				40$:				;++014
     73	000146	032713 	000020 			BIT	#DFGFLG,(R3)	;DEFAULTED GLOBAL FROM REF?
     74	000152	001402 				BEQ	11$		;IF EQ NO
     75	000154	042713 	000120 			BIC	#DFGFLG!GLBFLG,(R3);CLEAR DEFAULT FLAGS
     76	000160	042713 	177677 		11$:	BIC	#^C<GLBFLG>,(R3);CLEAR ALL BUT GLOBAL FLAG
     77	000164	052613 				BIS	(SP)+,(R3)
     78	000166	021167 	000000G			CMP	(R1),R50DOT	;MESSING WITH THE PC?
     79	000172	001403 				BEQ	1$		;  YES
     80	000174					INSERT			;INSERT NEW VALUE
     81	000200					CRFDEF			;++014
     82	000200	000411 				BR	3$		;
     83	000202	121267 	000000G		1$:	CMPB	(R2),CLCSEC	;SAME SECTOR?
     84	000206	001003 				BNE	2$		;  NO, ERROR
     85	000210	011467 	000000G			MOV	(R4),CLCLOC	;YES, SET NEW LOCATION
     86	000214	000403 				BR	3$		;
     87	000216				2$:	ERROR	A		;++014 SET "A" ERROR
     88	000224				3$:				;++014
     89	000224	000207 				RETURN
     90
     91		000001 				.END
ASGMT	MACRO M1108  05-DEC-77 23:14  PAGE 4-2
SYMBOL TABLE

AM.DEC= 000040   	CH.LAB= 000074   	CPXSUB= 000002   	INSERT= ****** GX	RLDT11= 000011
AM.DEF= 000010   	CH.LP = 000050   	CR    = 000015   	LBLFLG= 000002   	RLDT15= 000015
AM.IMM= 000027   	CH.MUL= 000052   	CSTACC= 000020   	LET.A = 000101   	RLDT16= 000016
AM.INC= 000020   	CH.PCT= 000045   	CSTALO= 000004   	LET.B = 000102   	RLDT17= 000017
AM.NDX= 000060   	CH.QM = 000077   	CSTFLG= 000050   	LET.C = 000103   	RSX11M= 000000
AM.PC = 000007   	CH.QTM= 000042   	CSTGBL= 000100   	LET.D = 000104   	R$$11M= 000000
AM.REL= 000067   	CH.RAB= 000076   	CSTMEM= 000001   	LET.E = 000105   	R50DOT= ****** GX
ASGMT   000000RG    002	CH.RP = 000051   	CSTREL= 000040   	LET.F = 000106   	SETPF1= ****** GX
ASGMTF  000046RG    002	CH.SMC= 000073   	CSTTYP= 000200   	LET.G = 000107   	SETXPR= ****** GX
ASGMT1  000050R     002	CH.SUB= 000055   	DEFFLG= 000010   	LET.O = 000117   	SPACE = 000040
ASTFLG= 000114   	CH.UAR= 000136   	DFGFLG= 000020   	LET.Z = 000132   	SSRCH = ****** GX
BLKT01= 000001   	CH.XCL= 000047   	DIG.0 = 000060   	LF    = 000012   	SYMBOL= ****** GX
BLKT02= 000002   	CLCLOC= ****** GX	DIG.9 = 000071   	LST.KB= 000001   	TAB   = 000011
BLKT03= 000003   	CLCSEC= ****** GX	ERRBTS= ****** GX	LST.LP= 000002   	VT    = 000013
BLKT04= 000004   	CPXADD= 000001   	ERR.A = ****** GX	MDFFLG= 000004   	XBSRCH= 000000
BLKT05= 000005   	CPXAND= 000005   	ERR.M = ****** GX	PSTFLG= 000050   	XCREF = 000000
BLKT06= 000006   	CPXCOM= 000011   	ERR.U = ****** GX	REGFLG= 000001   	XEDABS= 000000
CH.ADD= 000053   	CPXCON= 000020   	FF    = 000014   	RELEXP= ****** GX	XEDCDR= 000000
CH.AND= 000046   	CPXDIV= 000004   	GETNB = ****** GX	RELFLG= 000040   	XEDFPT= 000000
CH.BSL= 000134   	CPXFLG= 000200   	GLBFLG= 000100   	RLDT00= 000000   	XEDLC = 000000
CH.COL= 000072   	CPXGLB= 000016   	GSDT00= 000000   	RLDT01= 000001   	XEDPIC= 000000
CH.COM= 000054   	CPXIOR= 000006   	GSDT01= 000400   	RLDT02= 000002   	XEDPNC= 000000
CH.DIV= 000057   	CPXMUL= 000003   	GSDT02= 001000   	RLDT03= 000003   	XFCSQN= 000000
CH.DOL= 000044   	CPXNEG= 000010   	GSDT03= 001400   	RLDT04= 000004   	XFLTG = 000000
CH.DOT= 000056   	CPXOPC= 000010   	GSDT04= 002000   	RLDT05= 000005   	XOPEXP= 000000
CH.EQU= 000075   	CPXREL= 000017   	GSDT05= 002400   	RLDT06= 000006   	XSUBD = 000000
CH.HSH= 000043   	CPXSDS= 000013   	GSDT06= 003000   	RLDT07= 000007   	XZERR = 000000
CH.IND= 000100   	CPXSTO= 000012   	ILVL  = 000004   	RLDT10= 000010   	X45   = 000000
CH.IOR= 000041

. ABS.	000000	   000
      	000000	   001
PUREI 	000226	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2590 WORDS  ( 11 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:18
[45,10]ASGMT,[45,20]ASGMT/-SP=[45,30]RSXPAR,GENMC,FLGDF,ASGMT
ASSEM	MACRO M1108  05-DEC-77 23:15  PAGE 6


      1						.TITLE	ASSEM
      2						.IDENT	/X07.03/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MANYARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X07.03                                                                ;**NEW**
     24					;                                                                               ;**-1
     25					; B. BOWERING MAIN AUTHOR
     26					;
     27					; MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 20-JAN-73
     30					;	C.A. D'ELIA	15-NOV-73	007
     31					;	C.A. D'ELIA	25-JAN-74	011
     32					;	C.A. D'ELIA	22-MAR-74	014
     33					;	C.A. D'ELIA	07-APR-74	015
     34					;	C.A. D'ELIA	24-APR-74	016
     35					;	H.A. NICHOLS	18-JUN-74	017
     36					;	C.A. D'ELIA	26-SEP-74	017
     37					;	C.A. D'ELIA	19-NOV-74	018
     38					;	C.A. D'ELIA	20-MAR-75	019
     39					;	C.A. D'ELIA	10-JUL-75	020
     40					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     41					;	C.A. D'ELIA	01-NOV-75	022	(CREF)                          ;**NEW**
     42					;	C.A. D'ELIA	08-SEP-76	027	(EXTEND TASK)                   ;**NEW**
     43					;
     44					;
     45					                                                                                ;**-5
     46
     47					;++015
     48					;
     49					; IMPURE/PASS DATA INITIALIZATION CODE
     50					;
     51					;--015
     52
     53	000000					PURE	XCTPRG,I	;++017
     54	000000	012700 	000000G		XCTPRG::MOV	#IMPURE,R0	;++015 PUT ADDR OF IMPURE AREA IN R0
     55	000004	005020 			1$:	CLR	(R0)+		;++015 ZERO THE ENTIRE IMPURE P-SECTION
     56	000006	022700 	000000G			CMP	#IMPURT,R0	;++015
     57	000012	101374 				BHI	1$		;++015
ASSEM	MACRO M1108  05-DEC-77 23:15  PAGE 6-1


     58		000016'			EDBITS==.+2			;++015 REF LABEL (FOR GLOBAL PATCH)
     59	000014	012767 	000000G	000000G		MOV	#EDINIT,EDMBAK	;++015 SET .ENABL/.DSABL DEFAULTS
     60		000024'			LCBITS==.+2			;++015 REF LABEL (FOR GLOBAL PATCH)
     61	000022	012767 	000000G	000000C		MOV	#LCINIT,LCSBAK+<LCMASK-LCSAVE>  ;++015 SET LISTING DEFAULTS
     62	000030	005267 	000006G			INC	ENDVEC+6	;++015 DEFAULT TO NO '.END' VECTOR
     63	000034	000167 	000000'			JMP	XCTPAS		;++015 NOW PERFORM PASS INITIALIZATION
     64
     65
     66	000040					PURE	XCTPAS,I	;++017
     67	000000	012700 	000000G		XCTPAS::MOV	#IMPPAS,R0	;++015 PUT ADDR OF IMPURE PASS AREA IN R0
     68	000004	005020 			2$:	CLR	(R0)+		;++015 ZERO THE ENTIRE IMPURE PASS...
     69	000006	022700 	000000G			CMP	#IMPPAT,R0	;++015 ...P-SECTION
     70	000012	101374 				BHI	2$		;++015
     71	000014	016767 	000000G	000000G		MOV	EDMBAK,EDMASK	;++015 SET .ENABL/.DSABL FLAGS
     72	000022	012701 	000000G			MOV	#LCSBAK,R1	;++015 PREPARE TO SET THE ...
     73	000026	012702 	000000G			MOV	#LCSAVE,R2	;++015 ... LISTING CONTROL INFO
     74	000032	004767 	000000C			CALL	XMIT0-LCSAVL	;++015 TRANSFER THE INFORMATION
     75	000036	012767 	000010 	000000G		MOV	#8.,CRADIX	;++015 SET CURRENT RADIX TO OCTAL
     76	000044	105167 	000000G			COMB	OBJSEC		;++015 SET OBJECT PSECT LESS THAN 0
     77	000050	000167 	000000G			JMP	XCTLIN		;++015 NOW PERFORM LINE INITIALIZATION
     78
     79	000054					PURE	PUREI,I		;++017
     80
     81
     82					;++014                                                                          ;**-26
     83					;
     84					; *-ASSEM-*- INITIALIZE ASSEMBLER DYNAMIC STORAGE
     85					; IN THE RSX-11 ENVIRONMENT, THE AMOUNT OF DYNAMIC STORAGE WILL                 ;**NEW**
     86					; DEPEND UPON THE SIZE OF THE PARTITION IN WHICH THE ASSEMBLER                  ;**NEW**
     87					; IS RUNNING.  THIS SETS THE INITIAL DYNAMIC STORAGE POINTER                    ;**NEW**
     88					; TO THE WORD FOLLOWING THE MACRO-11 CODE PROPER.  ALL MEMORY                   ;**NEW**
     89					; BETWEEN THAT POINT AND THE END OF THE TASK'S ADDRESS SPACE                    ;**NEW**
     90					; WILL BE ALLOCATED TO DYNAMIC MEMORY.                                          ;**NEW**
     91					;                                                                               ;**NEW**
     92					;
     93					; NOTE: THIS ROUTINE WILL ALLOCATE SPACE FROM DYNAMIC MEMORY TO THE FREE
     94					; LIST FOR FILE STORAGE IF THE COUNT IN 'ACTFIL' INDICATES AN ADDITIONAL
     95					; STORAGE BLOCK IS REQUIRED.  ALSO, THE VIRTUAL MEMORY LIST                     ;**NEW**
     96					; POINTERS ARE ALL INITIALIZED.                                                 ;**NEW**
     97					;                                                                               ;**-4
     98					;--014
     99
    100
    101	000000				ASSEM::				;++014
    102	000000	012700 	000000G			MOV	#$FRHD,R0	;++027 POINT R0 TO FREE MEMORY LISTHEAD         ;**NEW**
    103	000004	004767 	000000G			CALL	$INIDM		;++027 CALC AMOUNT OF FREE MEMORY AVAIL         ;**NEW**
    104	000010	010146 				MOV	R1,-(SP)	;++027 SAVE END OF TASK ADDRESS                 ;**NEW**
    105	000012	012700 	000000G			MOV	#$FRHD,R0	;++021 GET ADDR OF VIRT MEMORY LIST HEAD        ;**NEW**
    106	000016	010046 				MOV	R0,-(SP)	;++021 SAVE LISTHEAD ADDR ON STACK              ;**NEW**
    107	000020	012701 	000000G			MOV	#NU$SEC,R1	;++021 GET # OF PSECT NAMES TO SAVE             ;**NEW**
    108	000024	001410 				BEQ	5$		;++021 IF EQ NONE                               ;**NEW**
    109	000026	006301 				ASL	R1		;++021 ELSE, CONVERT TO DOUBLE WORD             ;**NEW**
    110	000030	006301 				ASL	R1		;++021 TABLE LENGTH                             ;**NEW**
    111	000032	004767 	000000G			CALL	$RQCB		;++021 ALLOCATE FROM DYNAMIC MEMORY             ;**NEW**
    112	000036	103540 				BCS	100$		;++021 IF CS FAILURE                            ;**NEW**
    113	000040	010067 	000000G			MOV	R0,$NAMSC	;++021 ELSE, SAVE ADDR OF START OF TABLE        ;**NEW**
    114	000044	011600 				MOV	(SP),R0		;++021 RESET LIST HEAD ADDR IN R0               ;**NEW**
ASSEM	MACRO M1108  05-DEC-77 23:15  PAGE 6-2


    115	000046				5$:				;++021                                          ;**NEW**
    116	000046	005067 	000002G			CLR	FDBTBL+SRCCHN	;++022 USE FLOATING FDB FOR SOURCE FILE         ;**NEW**
    117	000052	005777 	000000G			TST	@$NXFDB		;++022 LOOK AT REMAINING FDB ADDR               ;**NEW**
    118	000056	001014 				BNE	12$		;++022 IF NE ONE REMAINS                        ;**NEW**
    119	000060	012701 	000000G			MOV	#S.FDB,R1	;++021 ELSE, GET SIZE TO ALLOCATE AN FDB        ;**NEW**
    120	000064	004767 	000000G			CALL	$RQCB		;++021 ALLOCATE THE CORE BLOCK                  ;**NEW**
    121	000070	103523 				BCS	100$		;++021 IF CS FAILURE                            ;**NEW**
    122	000072	010077 	000000G			MOV	R0,@$NXFDB	;++022 USE BLOCK AS NEEDED FDB                  ;**NEW**
    123	000076	012701 	000000C			MOV	#<S.FDB/2>,R1	;++021 GET FDB SIZE IN WORDS                    ;**NEW**
    124	000102	005020 			10$:	CLR	(R0)+		;++021 CLEAR THE ENTIRE FDB                     ;**NEW**
    125	000104					SOB	R1,10$		;++021                                          ;**NEW**
    126	000110				12$:				;++022                                          ;**NEW**
    127					                                                                                ;**NEW**
    128					                                                                                ;**NEW**
    129						.IF NDF	XCREF & RSX11M	;++022 RSX-11D MACRO WITH CREF                  ;**NEW**
    130					                                                                                ;**NEW**
    131					FSRALC=0			;++022 SET TO GENERATE FSR ALLOCN CODE          ;**NEW**
    132						TSTB	OBJFIL		;++022 WAS AN OBJECT FILE OPENED?               ;**NEW**
    133						BEQ	15$		;++022 IF EQ NO                                 ;**NEW**
    134						TSTB	CRFFIL		;++022 WAS A CRF FILE OPENED?                   ;**NEW**
    135						BEQ	15$		;++022 IF EQ NO                                 ;**NEW**
    136						MOV	#512.+S.BFHD,R1	;++022 IF OBJ + LST + CRF FILES,                ;**NEW**
    137									;++022 NEED ANOTHER FSR FOR INPUT FILE          ;**NEW**
    138					                                                                                ;**NEW**
    139						.ENDC                                                                   ;**NEW**
    140					                                                                                ;**NEW**
    141					                                                                                ;**NEW**
    142						.IF DF	RSX11M		;++022 RSX-11M MACRO                            ;**NEW**
    143					                                                                                ;**NEW**
    144		000000 			FSRALC=0			;++022 SET TO GENERATE FSR ALLOCN CODE          ;**NEW**
    145					                                                                                ;**NEW**
    146						.IF DF	XCREF		;++022 RSX-11M MACRO WITHOUT CREF               ;**NEW**
    147					                                                                                ;**NEW**
    148	000110	105767 	000000G			TSTB	OBJFIL		;++022 WAS AN OBJECT FILE OPENED?               ;**NEW**
    149	000114	001422 				BEQ	15$		;++022 IF EQ NO                                 ;**NEW**
    150	000116	105767 	000000G			TSTB	LSTFIL		;++022 WAS A LISTING FILE OPENED?               ;**NEW**
    151	000122	001417 				BEQ	15$		;++022 IF EQ NO                                 ;**NEW**
    152	000124	016701 	000000G			MOV	$LSTVZ,R1	;++022 IF OBJ + LST FILES THEN NEED             ;**NEW**
    153	000130	062701 	000000G			ADD	#S.BFHD,R1	;++022 ANOTHER FSR (FOR LST FILE)               ;**NEW**
    154					                                                                                ;**NEW**
    155						.IFF			;++022 RSX-11M MACRO WITH CREF                  ;**NEW**
    156					                                                                                ;**NEW**
    157						MOVB	OBJFIL,R0	;++022 PUT OBJECT FILE FLAG IN R0               ;**NEW**
    158						MOVB	LSTFIL,R1	;++022 PUT LST FILE FLAG INTO R1                ;**NEW**
    159						ADD	R1,R0		;++022 WILL BUMP FILE COUNT IF SET              ;**NEW**
    160						MOVB	CRFFIL,R1	;++022 PUT CRF FILE FLAG INTO R1                ;**NEW**
    161						ADD	R1,R0		;++022 WIL BUMP FILE COUNT IF SET               ;**NEW**
    162						SUB	#2,R0		;++022 DETERMINE IF MORE FSR'S ARE NEEDED       ;**NEW**
    163						BLT	15$		;++022 IF LT NO                                 ;**NEW**
    164						MOV	$LSTVZ,R1	;++022 ELSE, ALLOCATE ONE FOR THE               ;**NEW**
    165						ADD	#S.BFHD,R1	;++022 LISTING FILE                             ;**NEW**
    166						DEC	R0		;++022 SEE IF ANOTHER ONE IS NEEDED             ;**NEW**
    167						BLT	13$		;++022 IF LT NO                                 ;**NEW**
    168						ADD	#512.+S.BFHD,R1	;++022 ALLOC ONE FOR CRF FILE                   ;**NEW**
    169					13$:				;++022                                          ;**NEW**
    170					                                                                                ;**NEW**
    171						.ENDC			;++022                                          ;**NEW**
ASSEM	MACRO M1108  05-DEC-77 23:15  PAGE 6-3


    172					                                                                                ;**NEW**
    173						.ENDC			;++022                                          ;**NEW**
    174					                                                                                ;**NEW**
    175					                                                                                ;**NEW**
    176						.IF DF	FSRALC		;++022                                          ;**NEW**
    177					                                                                                ;**NEW**
    178	000134	010104 				MOV	R1,R4		;++021 SAVE THE NEEDED FSR SIZE                 ;**NEW**
    179	000136	011600 				MOV	(SP),R0		;++021 GET DYNAMIC MEMORY LISTHEAD ADDR         ;**NEW**
    180	000140	004767 	000000G			CALL	$RQCB		;++021 ALLOCATE THE CORE BLOCK                  ;**NEW**
    181	000144	103475 				BCS	100$		;++021 IF CS FAILURE                            ;**NEW**
    182	000146	010002 				MOV	R0,R2		;++021 COPY ADDR OF THE BLOCK IN R2             ;**NEW**
    183	000150	010401 				MOV	R4,R1		;++021 RESTORE THE FSR SIZE INTO R1             ;**NEW**
    184	000152	016700 	000000G			MOV	.FSRPT,R0	;++021 GET ADDR OF FSR LIST HEAD                ;**NEW**
    185	000156	004767 	000000G			CALL	$RLCB		;++014 LINK BLOCK INTO FSR2 FREE LIST           ;**-25
    186					                                                                                ;**-1
    187						.ENDC			;++017
    188
    189
    190	000162	012701 	000000G		15$:	MOV	#VM$LST,R1	;++021 GET NUMBER OF VIRT MEMORY LISTS          ;**NEW**
    191	000166	005061 	000000G		20$:	CLR	$LSBAS(R1)	;++021 CLEAR START OF LIST POINTER              ;**NEW**
    192	000172	005061 	000000G			CLR	$LSTOP(R1)	;++021 CLEAR END OF LIST POINTER                ;**NEW**
    193	000176	005061 	000000G			CLR	$LSCNT(R1)	;++021 CLEAR LIST ENTRY COUNT                   ;**NEW**
    194	000202	162701 	000002 			SUB	#2,R1		;MOVE DOWN A ROLL                               ;**-6
    195	000206	002367 				BGE	20$		;++021 REPEAT FOR ALL LISTS                     ;**NEW**
    196	000210	012701 	000000G			MOV	#N$SYPR,R1	;++021 GET NUMBER OF SYMTBL PARTITIONS          ;**NEW**
    197	000214	020127 	000010 			CMP	R1,#8.		;++021 CAN HAVE NO FEWER THAN EIGHT             ;**NEW**
    198	000220	002002 				BGE	30$		;++021 IF GE O.K.                               ;**NEW**
    199	000222	012701 	000010 			MOV	#8.,R1		;++021 ELSE, FORCE EIGHT                        ;**NEW**
    200	000226	010167 	000000G		30$:	MOV	R1,$NMPAR	;++021 SAVE NUMBER OF PARTITIONS                ;**NEW**
    201	000232	006301 				ASL	R1		;++021 CONVERT TO SINGLE-WORD TABLE             ;**NEW**
    202	000234	010100 				MOV	R1,R0		;++021 SAVE INTERMEDIATE RESULT                 ;**NEW**
    203	000236	006301 				ASL	R1		;++021 CONVERT TO DOUBLE-WORD TABLE             ;**NEW**
    204	000240	010167 	000000G			MOV	R1,$SYLHD	;++021 USE IT IN LATER CALCULATION              ;**NEW**
    205	000244	060001 				ADD	R0,R1		;++021 CALC SIZE OF THE TWO TABLES              ;**NEW**
    206	000246	011600 				MOV	(SP),R0		;++021 GET DYNAMIC MEMORY LIST HEAD ADDR        ;**NEW**
    207	000250	010146 				MOV	R1,-(SP)	;++021 SAVE SIZE TO BE ALLOCATED                ;**NEW**
    208	000252	004767 	000000G			CALL	$RQCB		;++021 ALLOCATE BLK FROM DYNAMIC MEMORY         ;**NEW**
    209	000256	103430 				BCS	100$		;++021 IF CS FAILURE                            ;**NEW**
    210	000260	060016 				ADD	R0,(SP)		;++021 CALC ADDR OF END OF ALLOCATED BLK        ;**NEW**
    211	000262	010067 	000000G			MOV	R0,$SYPAR	;++021 SAVE ADDR OF PARTITION TABLE             ;**NEW**
    212	000266	060067 	000000G			ADD	R0,$SYLHD	;++021 CALC ADDR OF SUB-LIST HEAD TABLE         ;**NEW**
    213	000272	012701 	000010 			MOV	#8.,R1		;++021 GET SIZE OF PARTITION TABLE              ;**NEW**
    214									;++021 (ALWAYS 8 IN PASS ONE)                   ;**NEW**
    215	000276	012702 	000350'			MOV	#SY8PAR,R2	;++021 GET ADDR OF 8-WAY SPLIT TABLE            ;**NEW**
    216	000302	012220 			35$:	MOV	(R2)+,(R0)+	;++021 COPY IT INTO USER'S TABLE                ;**NEW**
    217	000304	005020 				CLR	(R0)+		;++021 (SECOND WORD ALWAYS ZERO)                ;**NEW**
    218	000306					SOB	R1,35$		;++021                                          ;**NEW**
    219	000312	012601 				MOV	(SP)+,R1	;++021 GET ADDR OF END OF BLOCK                 ;**NEW**
    220	000314	005020 			40$:	CLR	(R0)+		;++021 CLEAR REMAINDER OF BOTH TABLES           ;**NEW**
    221	000316	020001 				CMP	R0,R1		;++021                                          ;**NEW**
    222	000320	103775 				BLO	40$		;++021                                          ;**NEW**
    223	000322	013600 				MOV	@(SP)+,R0	;++021 GET ADDR OF LIST HEAD                    ;**NEW**
    224	000324	012601 				MOV	(SP)+,R1	;++027 GET END OF TASK ADDRESS                  ;**NEW**
    225	000326	016067 	000002 	000000G		MOV	2(R0),$FRSIZ	;++027 SAVE SIZE OF AVAIL REAL MEMORY           ;**NEW**
    226	000334					CALLR	$INIVM		;++021 INIT VIRT MEMORY AND RETURN              ;**NEW**
    227					                                                                                ;**NEW**
    228					                                                                                ;**NEW**
ASSEM	MACRO M1108  05-DEC-77 23:15  PAGE 6-4


    229	000340	012703 	000000G		100$:	MOV	#VIRTM1,R3	;++021 SPECIFY ERROR MESSAGE (INSUFF            ;**NEW**
    230									;++021 DYNAMIC MEMORY)                          ;**NEW**
    231	000344	000167 	000000G			JMP	RESTRT		;++021 REPORT ERROR AND RESTART                 ;**NEW**
    232					                                                                                ;**NEW**
    233					                                                                                ;**NEW**
    234					;                                                                               ;**NEW**
    235					; EIGHT-WAY SPLIT OF ALPHABET FOR FIRST PASS PARTITIONING OF THE                ;**NEW**
    236					; SYMBOL TABLE.                                                                 ;**NEW**
    237					;                                                                               ;**NEW**
    238					                                                                                ;**NEW**
    239	000350	012670 			SY8PAR:	.RAD50	/CS /		;++021  (A  - CR9999)                           ;**NEW**
    240	000352	031000 				.RAD50	/H  /		;++021  (CS - G99999)                           ;**NEW**
    241	000354	040570 				.RAD50	/JS /		;++021  (H  - JR9999)                           ;**NEW**
    242	000356	056700 				.RAD50	/O  /		;++021  (JS - N99999)                           ;**NEW**
    243	000360	066470 				.RAD50	/QS /		;++021  (O  - QR9999)                           ;**NEW**
    244	000362	104600 				.RAD50	/V  /		;++021  (QS - U99999)                           ;**NEW**
    245	000364	114370 				.RAD50	/XS /		;++021  (V  - XR9999)                           ;**NEW**
    246	000366	177777 				.WORD	-1		;++021  (XS - .99999)                           ;**NEW**
    247					                                                                                ;**NEW**
    248					                                                                                ;**NEW**
    249					                                                                                ;**NEW**
    250	000370				MACP1::				;++011                                          ;**-12
    251	000370	012701 	000000G			MOV	#LCSAVE,R1	;++011 PREPARE TO SAVE INITIAL...
    252	000374	012702 	000000G			MOV	#LCSBAK,R2	;++011 ...LISTING CONTROL INFORMATION
    253	000400	012746 	000000G			MOV	#XMIT0,-(SP)	;++011 ADDR OF MOVE VECTOR
    254	000404	162716 	000000G			SUB	#LCSAVL,(SP)	;++011 CALC ENTRY POINT
    255	000410	004736 				CALL	@(SP)+		;++011 SAVE THE BLOCK
    256	000412	016767 	000000G	000000G		MOV	EDMASK,EDMBAK	;++011 SAVE ENABL/DSABL FLAGS
    257	000420	004767 	000000'			CALL	XCTPAS		;++011 INIT PASS VARIABLES
    258						.IF NDF	XSML		;++007
    259	000424					APPEND	LIBLST		;++021 RESERVE SLOT IN LIBLST FOR SML           ;**NEW**
    260						.ENDC			;++007                                          ;**-1
    261	000434	012700 	000400 			MOV	#LST.KB*400,R0	;SET ERROR SLOT
    262	000440	105767 	000000G			TSTB	LSTFIL		;++014 IS THERE A LISTING FILE?
    263	000444	001410 				BEQ	1$		;  NO
    264	000446	052700 	100201 			BIS	#LST.KB!100200,R0	;YES, ASSUME TELETYPE
    265	000452	032767 	000000G	000004G		BIT	#IO.TTY,IOFTBL+LSTCHN	;TRUE?
    266	000460	001002 				BNE	1$		;  YES
    267	000462	062700 	000401 			ADD	#<LST.LP-LST.KB>*401,R0	;NO, UPGRADE TO LP
    268	000466	010067 	000000G		1$:	MOV	R0,LSTDEV	;SET FLAGS
    269	000472	004767 	000000G			CALL	SETHDR		;SET UP HEADER
    270	000476	000167 	000000G			JMP	MACP2F		;++011 JUMP TO COMMON PASS CODE
    271
    272
    273					                                                                                ;**-57
    274
    275		000001 				.END
ASSEM	MACRO M1108  05-DEC-77 23:15  PAGE 6-5
SYMBOL TABLE

AM.DEC= 000040   	CH.XCL= 000047   	GSDT01= 000400   	MAXCHN= 000014   	TTLLEN= 000040
AM.DEF= 000010   	CMOCHN= 000000   	GSDT02= 001000   	MDFFLG= 000004   	VIRTM1= ****** GX
AM.IMM= 000027   	CPL   = 000120   	GSDT03= 001400   	NU$SEC= ****** GX	VM$LST= ****** GX
AM.INC= 000020   	CPXADD= 000001   	GSDT04= 002000   	N$SYPR= ****** GX	VT    = 000013
AM.NDX= 000060   	CPXAND= 000005   	GSDT05= 002400   	OBJFIL= ****** GX	XBSRCH= 000000
AM.PC = 000007   	CPXCOM= 000011   	GSDT06= 003000   	OBJLEN= 000052   	XCREF = 000000
AM.REL= 000067   	CPXCON= 000020   	ILVL  = 000004   	OBJSEC= ****** GX	XCTLIN= ****** GX
APPEND= ****** GX	CPXDIV= 000004   	IMPPAS= ****** GX	PSTFLG= 000050   	XCTPAS  000000RG    003
ASSEM   000000RG    004	CPXFLG= 000200   	IMPPAT= ****** GX	REGFLG= 000001   	XCTPRG  000000RG    002
ASTFLG= 000114   	CPXGLB= 000016   	IMPURE= ****** GX	RELCHN= 000010   	XEDABS= 000000
BINCHN= 000006   	CPXIOR= 000006   	IMPURT= ****** GX	RELFLG= 000040   	XEDCDR= 000000
BLKT01= 000001   	CPXMUL= 000003   	IOFTBL= ****** GX	RESTRT= ****** GX	XEDCRF= 000000
BLKT02= 000002   	CPXNEG= 000010   	IO.TTY= ****** GX	RLDLEN= 000052   	XEDFPT= 000000
BLKT03= 000003   	CPXOPC= 000010   	LBLFLG= 000002   	RLDT00= 000000   	XEDLC = 000000
BLKT04= 000004   	CPXREL= 000017   	LCBITS= 000024RG    002	RLDT01= 000001   	XEDPIC= 000000
BLKT05= 000005   	CPXSDS= 000013   	LCINIT= ****** GX	RLDT02= 000002   	XEDPNC= 000000
BLKT06= 000006   	CPXSTO= 000012   	LCMASK= ****** GX	RLDT03= 000003   	XFCSQN= 000000
BPMB  = 000020   	CPXSUB= 000002   	LCSAVE= ****** GX	RLDT04= 000004   	XFLTG = 000000
CH.ADD= 000053   	CR    = 000015   	LCSAVL= ****** GX	RLDT05= 000005   	XMIT0 = ****** GX
CH.AND= 000046   	CRADIX= ****** GX	LCSBAK= ****** GX	RLDT06= 000006   	XOPEXP= 000000
CH.BSL= 000134   	CSTACC= 000020   	LET.A = 000101   	RLDT07= 000007   	XSUBD = 000000
CH.COL= 000072   	CSTALO= 000004   	LET.B = 000102   	RLDT10= 000010   	XZERR = 000000
CH.COM= 000054   	CSTFLG= 000050   	LET.C = 000103   	RLDT11= 000011   	X45   = 000000
CH.DIV= 000057   	CSTGBL= 000100   	LET.D = 000104   	RLDT15= 000015   	YQCMO = 000000
CH.DOL= 000044   	CSTMEM= 000001   	LET.E = 000105   	RLDT16= 000016   	$FRHD = ****** GX
CH.DOT= 000056   	CSTREL= 000040   	LET.F = 000106   	RLDT17= 000017   	$FRSIZ= ****** GX
CH.EQU= 000075   	CSTTYP= 000200   	LET.G = 000107   	RSX11M= 000000   	$INIDM= ****** GX
CH.HSH= 000043   	DEFFLG= 000010   	LET.O = 000117   	R$$11M= 000000   	$INIVM= ****** GX
CH.IND= 000100   	DFGFLG= 000020   	LET.Z = 000132   	SETHDR= ****** GX	$LSBAS= ****** GX
CH.IOR= 000041   	DIG.0 = 000060   	LF    = 000012   	SMLCHN= 000012   	$LSCNT= ****** GX
CH.LAB= 000074   	DIG.9 = 000071   	LIBLST= ****** GX	SMLLEN= 000120   	$LSTOP= ****** GX
CH.LP = 000050   	EDBITS= 000016RG    002	LINLEN= 000204   	SPACE = 000040   	$LSTVZ= ****** GX
CH.MUL= 000052   	EDINIT= ****** GX	LPP   = 000074   	SRCCHN= 000002   	$NAMSC= ****** GX
CH.PCT= 000045   	EDMASK= ****** GX	LSTCHN= 000004   	SRCLEN= 000204   	$NMPAR= ****** GX
CH.QM = 000077   	EDMBAK= ****** GX	LSTDEV= ****** GX	STLLEN= 000100   	$NXFDB= ****** GX
CH.QTM= 000042   	ENDVEC= ****** GX	LSTFIL= ****** GX	SY8PAR  000350R     004	$RLCB = ****** GX
CH.RAB= 000076   	FDBTBL= ****** GX	LSTLEN= 000204   	S.BFHD= ****** GX	$RQCB = ****** GX
CH.RP = 000051   	FF    = 000014   	LST.KB= 000001   	S.FDB = ****** GX	$SYLHD= ****** GX
CH.SMC= 000073   	FSRALC= 000000   	LST.LP= 000002   	TAB   = 000011   	$SYPAR= ****** GX
CH.SUB= 000055   	GLBFLG= 000100   	MACP1   000370RG    004	TMPCNT= 000014   	.FSRPT= ****** GX
CH.UAR= 000136   	GSDT00= 000000   	MACP2F= ****** GX

. ABS.	000000	   000
      	000000	   001
XCTPRG	000040	   002
XCTPAS	000054	   003
PUREI 	000502	   004
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  4390 WORDS  ( 18 PAGES)
DYNAMIC MEMORY:  5216 WORDS  ( 20 PAGES)
ELAPSED TIME:  00:00:37
[45,10]ASSEM,[45,20]ASSEM/-SP=[45,30]RSXPAR,MPARAM,MCIOCH,GENMC,FLGDF,ASSEM
CNDTL	MACRO M1108  05-DEC-77 23:15  PAGE 4


      1						.TITLE	CNDTL
      2						.IDENT	/X06.02/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X06.02                                                                ;**NEW**
     24					;                                                                               ;**-1
     25					; B. BOWERING
     26					;
     27					;	MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 6-FEB-73
     30					;	C.A. D'ELIA	12-NOV-73	006
     31					;	H.A. NICHOLS	18-JUN-74	017
     32					;	C.A. D'ELIA	01-AUG-74	017
     33					;	C.A. D'ELIA	31-DEC-74	018
     34					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     35					;	C.A. D'ELIA	08-SEP-76	028	(COMPLEX EXPR BUG)              ;**NEW**
     36					;
     37					;
     38					; LOCAL MACROS
     39					;
     40					;
     41					;THE MACRO "GENCND" IS USED TO SPECIFY CONDITIONAL
     42					;ARGUMENTS.  IT TAKES TWO OR THREE ARGUMENTS:
     43					;
     44					;	1-	MNEMONIC
     45					;	2-	SUBROUTINE TO BE CALLED
     46					;	3-	IF NON-BLANK, COMPLEMENT CONDITION
     47
     48						.MACRO	GENCND	MNE,SUBR,TOGGLE	;GENERATE CONDITIONAL
     49						.RAD50	/MNE/
     50						.IF B	<TOGGLE>
     51						.WORD	SUBR
     52						.IFF
     53						.WORD	SUBR+1
     54						.ENDC
     55						.ENDM
     56
     57	000000					PURE	CNDSEC,D,GBL	;++017
CNDTL	MACRO M1108  05-DEC-77 23:15  PAGE 4-1


     58	000000				CNDBAS::			;REF LABEL
     59	000000					GENCND	B,	TCB		;++021 .IF B	<STR>                   ;**NEW**
     60	000004					GENCND	DF,	TCONDF		;++021 .IF DF	SYM                     ;**NEW**
     61	000010					GENCND	DIF,	TCID,	F	;++021 .IF DIF	<STR1><STR2>            ;**NEW**
     62	000014					GENCND	EQ,	TCONEQ		;++021 .IF EQ	EXP                     ;**NEW**
     63	000020					GENCND	G,	TCONGT		;++021 .IF G	EXP                     ;**NEW**
     64	000024					GENCND	GE,	TCONLT,	F	;++021 .IF GE	EXP                     ;**NEW**
     65	000030					GENCND	GT,	TCONGT		;++021 .IF GT	EXP                     ;**NEW**
     66	000034					GENCND	IDN,	TCID		;++021 .IF IDN	EXP                     ;**NEW**
     67	000040					GENCND	L,	TCONLT		;++021 .IF L	EXP                     ;**NEW**
     68	000044					GENCND	LE,	TCONGT,	F	;++021 .IF LE	EXP                     ;**NEW**
     69	000050					GENCND	LT,	TCONLT		;++021 .IF LT	EXP                     ;**NEW**
     70	000054					GENCND	NB,	TCB,	F	;++021 .IF NB	<STR>                   ;**NEW**
     71	000060					GENCND	NDF,	TCONDF,	F	;++021 .IF NDF	SYM                     ;**NEW**
     72	000064					GENCND	NE,	TCONEQ,	F	;++021 .IF NE	EXP                     ;**NEW**
     73	000070					GENCND	NZ,	TCONEQ,	F	;++021 .IF NZ	EXP                     ;**NEW**
     74	000074					GENCND	Z,	TCONEQ		;++021 .IF Z	EXP                     ;**NEW**
     75	000100				CNDTOP::			;REF LABEL                                      ;**-16
     76					                                                                                ;**NEW**
     77					                                                                                ;**NEW**
     78	000100					PURE	PUREI,I		;++017
     79
     80					;+
     81					; **-IIF-IMMEDIATE IF
     82					; **-IF-MICRO PROGRAMMED CONDITIONAL
     83					; **-IFT-IF TRUE
     84					; **-IFF-IF FALSE
     85					; **-IFTF-IF TRUE OR FALSE
     86					; **-ENDC-END CONDITIONAL
     87					;-
     88
     89	000000	004767 	000234 		IIF::	CALL	TCON		;TEST ARGUMENT
     90	000004	005703 				TST	R3
     91	000006	100425 				BMI	3$		;  BRANCH IF UNSATISFIED
     92	000010	022705 	000054 			CMP	#CH.COM,R5	;COMMA?
     93	000014	001002 				BNE	1$		;  NO
     94	000016					GETCHR			;YES, BYPASS
     95	000022	016701 	000000G		1$:	MOV	CHRPNT,R1	;SAVE CURRENT LOCATION
     96	000026					SETNB			;SET TO NOM-BLANK
     97	000032	032767 	000000G	000000G		BIT	#LC.CND,LCMASK	;CONDITIONAL SUPPRESSION?
     98	000040	001402 				BEQ	2$		;  NO
     99	000042	010167 	000000G			MOV	R1,LCBEGL	;YES, SUPPRESS ALL UP TO COMMA
    100	000046	005067 	000000G		2$:	CLR	ARGCNT
    101	000052	004767 	000000G			CALL	ZAPCPX		;++028 CLEANUP COMPLEX EXPR SCRATCH LIST        ;**NEW**
    102	000056	000167 	000000G			JMP	OVSTMT		;++006 JMP INTO ROOT TO PROCESS STMT
    103	000062	005005 			3$:	CLR	R5		;FALSE, BUT NO "Q" ERROR
    104	000064	000443 				BR	ENDCX
    105
    106
    107						.IF NDF	XSUBD		;++018
    108
    109
    110					IFDF::				;++017
    111						MOV	SYMBOL+2,SYMBOL	;TREAT SECOND HALF AS ARGUMENT
    112						CALL	TCONF		;EXAMINE IT
    113						BR	IF1		;INTO THE MAIN STREAM
    114
CNDTL	MACRO M1108  05-DEC-77 23:15  PAGE 4-2


    115
    116						.ENDC			;++018 (XSUBD -- SUBSET DIRECTIVES)
    117
    118	000066	004767 	000146 		IF::	CALL	TCON		;TEST ARGUMENT
    119	000072	012701 	000000G		IF1:	MOV	#CNDLVL,R1	;POINT TO LEVEL
    120	000076	021127 	000017 			CMP	(R1),#15.	;ROOM FOR ANOTHER?
    121	000102	003052 				BGT	IFOERR		;  NO, ERROR
    122	000104	005211 				INC	(R1)		;YES, BUMP LEVEL
    123	000106	006303 				ASL	R3		;SET CARRY TO TRUE (0) OR FALSE (1)
    124	000110	006041 				ROR	-(R1)		;ROTATE INTO CNDMSK
    125	000112	006303 				ASL	R3
    126	000114	006041 				ROR	-(R1)		;DITTO FOR CNDWRD
    127	000116	000426 				BR	ENDCX
    128	000120	016703 	000000G		IFT::	MOV	CNDMSK,R3	;GET CURRENT CONDITION
    129	000124	000403 				BR	IFTF		;  AND BRANCH
    130	000126	016703 	000000G		IFF::	MOV	CNDMSK,R3	;GET CURRENT CONDITION
    131	000132	005103 				COM	R3		;USE COMPLEMENT AND FALL THROUGH
    132	000134	005767 	000000G		IFTF::	TST	CNDLVL		;CONDITION IN PROGRESS?
    133	000140	003433 				BLE	IFOERR		;  NO, ERROR
    134	000142	006367 	000000G			ASL	CNDWRD		;MOVE OFF CURRENT FLAG
    135	000146	006303 				ASL	R3		;SET CARRY
    136	000150	006067 	000000G			ROR	CNDWRD		;MOV ON
    137	000154	000407 				BR	ENDCX
    138	000156	012701 	000000G		ENDC::	MOV	#CNDLVL,R1	;POINT TO LEVEL
    139	000162	005711 				TST	(R1)		;IN CONDITIONAL?
    140	000164	003421 				BLE	IFOERR		;  NO, ERROR
    141	000166	005311 				DEC	(R1)		;YES, DECREMENT
    142	000170	006341 				ASL	-(R1)		;REDUCE MASK
    143	000172	006341 				ASL	-(R1)		;  AND TEST WORD
    144	000174	032767 	000000G	000000G	ENDCX:	BIT	#LC.CND,LCMASK	;SUPPRESSION REQUESTED?
    145	000202	001411 				BEQ	2$		;  NO
    146	000204	016700 	000000G			MOV	LBLEND,R0	;YES, ANY LABEL?
    147	000210	001403 				BEQ	1$		;  NO, SUPPRESS WHOLE LINE
    148	000212	010067 	000000G			MOV	R0,LCENDL	;YES, LIST ONLY LABEL
    149	000216	000403 				BR	2$
    150	000220	052767 	000000G	000000G	1$:	BIS	#LC.CND,LCFLAG	;MARK CONDITIONAL
    151	000226	000207 			2$:	RETURN
    152	000230				IFOERR:	ERROR	O		;CONDITION ERROR
    153	000236	000207 				RETURN
    154	000240				TCON:	GSARG			;GET A SYMBOLIC ARGUMENT
    155	000244				TCONF:	SCANW	CNDROL		;SCAN FOR ARGUMENT
    156	000254	001415 				BEQ	IFAERR		;  ERROR IF NOT FOUND
    157	000256	016701 	000002G			MOV	SYMBOL+2,R1	;GET ADDRESS
    158	000262	006201 				ASR	R1		;LOW BIT USED FOR TOGGLE FLAG
    159	000264	005603 				SBC	R3		;R3 GOES TO -1 IF ODD
    160	000266	006301 				ASL	R1		;BACK TO NORMAL (AND EVEN)
    161	000270	016746 	000000G			MOV	CNDWRD,-(SP)	;++017 GET CURRENT CONDITIONAL STATUS...
    162	000274	056726 	000000G			BIS	CNDMEX,(SP)+	;++017 AND MACRO EXIT (.MEXIT) STATUS
    163	000300	001006 				BNE	IFAERX		;++017 IF UNSAT OR MEXIT, DON'T EVALUATE
    164	000302					TSTARG			;BYPASS COMMA
    165	000306	000111 				JMP	(R1)		;JUMP TO HANDLER
    166	000310				IFAERR:	ERROR	A
    167	000316	005005 			IFAERX:	CLR	R5		;NO "Q" ERROR
    168	000320	000207 				RETURN
    169	000322				TCONEQ:	ABSEXP			;EQ/NE, TEST EXPRESSION
    170	000326	001401 				BEQ	TCONTR		;BRANCH IF SAT
    171	000330	005103 			TCONFA:	COM	R3		;  FALSE, TOGGLE
CNDTL	MACRO M1108  05-DEC-77 23:15  PAGE 4-3


    172	000332	000207 			TCONTR:	RETURN			;TRUE, JUST EXIT
    173	000334				TCONGT:	ABSEXP
    174	000340	003374 				BGT	TCONTR
    175	000342	000772 				BR	TCONFA
    176	000344				TCONLT:	ABSEXP
    177	000350	002770 				BLT	TCONTR
    178	000352	000766 				BR	TCONFA
    179	000354	010301 			TCONDF:	MOV	R3,R1		;SAVE INITIAL CONDITION
    180	000356	005002 				CLR	R2		;SET "&"
    181	000360	005003 				CLR	R3		;START OFF TRUE
    182	000362				1$:	GETSYM			;GET A SYMBOL
    183	000366	001750 				BEQ	IFAERR		;  ERROR IF NOT A SYM
    184	000370					SSRCH			;SEARCH USER SYMBOL TABLE
    185	000374					CRFREF
    186	000374	005000 				CLR	R0		;ASSUME DEFINED
    187	000376	032767 	000010 	000000G		BIT	#DEFFLG,MODE	;GOOD GUESS?
    188	000404	001001 				BNE	2$		;  YES
    189	000406	005100 				COM	R0		;NO, TOGGLE
    190	000410	020003 			2$:	CMP	R0,R3		;YES, MATCH?
    191	000412	001402 				BEQ	3$		;  YES, ALL SET
    192	000414	010203 				MOV	R2,R3		;  NO
    193	000416	005103 				COM	R3
    194	000420	010102 			3$:	MOV	R1,R2		;ASSUME "&"
    195	000422	020527 	000046 			CMP	R5,#CH.AND	; "&"
    196	000426	001404 				BEQ	4$		;  BRANCH IF GOOD GUESS
    197	000430	020527 	000041 			CMP	R5,#CH.IOR	;PERHAPS OR?
    198	000434	001004 				BNE	5$		;  NO
    199	000436	005102 				COM	R2		;YES, TOGGLE MODE
    200	000440				4$:	GETNB			;BYPASS OP
    201	000444	000746 				BR	1$		;TRY AGAIN
    202	000446	005701 			5$:	TST	R1		;IFDF?
    203	000450	001401 				BEQ	6$		;  YES
    204	000452	005103 				COM	R3		;NO, TOGGLE
    205	000454	000207 			6$:	RETURN
    206	000456	001411 			TCB:	BEQ	TCBERX		;OK IF NULL
    207	000460	004767 	000000G			CALL	GMARGF		;ISOLATE ARGUMENT
    208	000464					SETNB			;BYPASS ANY BLANKS
    209	000470	001436 				BEQ	TCIDT		;TRUE IF POINTING AT DELIMITER
    210	000472	000434 				BR	TCIDF		;ELSE FALSE
    211	000474				TCBERR:	ERROR	A		;NAUGHTY
    212	000502	000207 			TCBERX:	RETURN
    213	000504	001773 			TCID:	BEQ	TCBERR		;ERROR IF NULL
    214	000506	004767 	000000G			CALL	GMARGF		;ISOLATE FIRST ARG
    215	000512	016701 	000000G			MOV	CHRPNT,R1	;SAVE CHARACTER POINTER
    216	000516	005740 				TST	-(R0)
    217	000520	014002 				MOV	-(R0),R2	;POINTER TO TERMINATOR
    218	000522	004767 	000000G			CALL	RMARG		;RETURN THIS ARG
    219	000526	004767 	000000G			CALL	GMARG		;GET THE NEXT
    220	000532	001760 				BEQ	TCBERR
    221	000534	111100 			1$:	MOVB	(R1),R0		;SET CHARACTER FROM FIRST FIELD
    222	000536	020102 				CMP	R1,R2		;IS IT THE LAST?
    223	000540	001001 				BNE	2$		;  NO
    224	000542	005000 				CLR	R0		;YES, CLEAR IT
    225	000544	020005 			2$:	CMP	R0,R5		;MATCH?
    226	000546	001006 				BNE	TCIDF		;  NO
    227	000550	005705 				TST	R5		;YES, FINISHED?
    228	000552	001405 				BEQ	TCIDT		;  YES, GOOD SHOW
CNDTL	MACRO M1108  05-DEC-77 23:15  PAGE 4-4


    229	000554					GETCHR			;NO, GET THE NEXT CHARACTER
    230	000560	005201 				INC	R1		;ADVANCE FIRST ARG POINTER
    231	000562	000764 				BR	1$		;TRY AGAIN
    232	000564	005103 			TCIDF:	COM	R3		;FALSE, TOGGLE CONDITION
    233	000566	000167 	000000G		TCIDT:	JMP	RMARG		;OK, RESTORE ARGUMENT
    234
    235		000001 				.END
CNDTL	MACRO M1108  05-DEC-77 23:15  PAGE 4-5
SYMBOL TABLE

ABSEXP= ****** GX	CH.SMC= 000073   	DIG.9 = 000071   	LC.CND= ****** GX	SETNB = ****** GX
AM.DEC= 000040   	CH.SUB= 000055   	ENDC    000156RG    003	LET.A = 000101   	SPACE = 000040
AM.DEF= 000010   	CH.UAR= 000136   	ENDCX   000174R     003	LET.B = 000102   	SSRCH = ****** GX
AM.IMM= 000027   	CH.XCL= 000047   	ERRBTS= ****** GX	LET.C = 000103   	SYMBOL= ****** GX
AM.INC= 000020   	CNDBAS  000000RG    002	ERR.A = ****** GX	LET.D = 000104   	TAB   = 000011
AM.NDX= 000060   	CNDLVL= ****** GX	ERR.O = ****** GX	LET.E = 000105   	TCB     000456R     003
AM.PC = 000007   	CNDMEX= ****** GX	FF    = 000014   	LET.F = 000106   	TCBERR  000474R     003
AM.REL= 000067   	CNDMSK= ****** GX	GETCHR= ****** GX	LET.G = 000107   	TCBERX  000502R     003
ARGCNT= ****** GX	CNDROL= ****** GX	GETNB = ****** GX	LET.O = 000117   	TCID    000504R     003
ASTFLG= 000114   	CNDTOP  000100RG    002	GETSYM= ****** GX	LET.Z = 000132   	TCIDF   000564R     003
BLKT01= 000001   	CNDWRD= ****** GX	GLBFLG= 000100   	LF    = 000012   	TCIDT   000566R     003
BLKT02= 000002   	CPXADD= 000001   	GMARG = ****** GX	LST.KB= 000001   	TCON    000240R     003
BLKT03= 000003   	CPXAND= 000005   	GMARGF= ****** GX	LST.LP= 000002   	TCONDF  000354R     003
BLKT04= 000004   	CPXCOM= 000011   	GSARG = ****** GX	MDFFLG= 000004   	TCONEQ  000322R     003
BLKT05= 000005   	CPXCON= 000020   	GSDT00= 000000   	MODE  = ****** GX	TCONF   000244R     003
BLKT06= 000006   	CPXDIV= 000004   	GSDT01= 000400   	OVSTMT= ****** GX	TCONFA  000330R     003
CHRPNT= ****** GX	CPXFLG= 000200   	GSDT02= 001000   	PSTFLG= 000050   	TCONGT  000334R     003
CH.ADD= 000053   	CPXGLB= 000016   	GSDT03= 001400   	REGFLG= 000001   	TCONLT  000344R     003
CH.AND= 000046   	CPXIOR= 000006   	GSDT04= 002000   	RELFLG= 000040   	TCONTR  000332R     003
CH.BSL= 000134   	CPXMUL= 000003   	GSDT05= 002400   	RLDT00= 000000   	TSTARG= ****** GX
CH.COL= 000072   	CPXNEG= 000010   	GSDT06= 003000   	RLDT01= 000001   	VT    = 000013
CH.COM= 000054   	CPXOPC= 000010   	IF      000066RG    003	RLDT02= 000002   	XBSRCH= 000000
CH.DIV= 000057   	CPXREL= 000017   	IFAERR  000310R     003	RLDT03= 000003   	XCREF = 000000
CH.DOL= 000044   	CPXSDS= 000013   	IFAERX  000316R     003	RLDT04= 000004   	XEDABS= 000000
CH.DOT= 000056   	CPXSTO= 000012   	IFF     000126RG    003	RLDT05= 000005   	XEDCDR= 000000
CH.EQU= 000075   	CPXSUB= 000002   	IFOERR  000230R     003	RLDT06= 000006   	XEDFPT= 000000
CH.HSH= 000043   	CR    = 000015   	IFT     000120RG    003	RLDT07= 000007   	XEDLC = 000000
CH.IND= 000100   	CSTACC= 000020   	IFTF    000134RG    003	RLDT10= 000010   	XEDPIC= 000000
CH.IOR= 000041   	CSTALO= 000004   	IF1     000072R     003	RLDT11= 000011   	XEDPNC= 000000
CH.LAB= 000074   	CSTFLG= 000050   	IIF     000000RG    003	RLDT15= 000015   	XFCSQN= 000000
CH.LP = 000050   	CSTGBL= 000100   	ILVL  = 000004   	RLDT16= 000016   	XFLTG = 000000
CH.MUL= 000052   	CSTMEM= 000001   	LBLEND= ****** GX	RLDT17= 000017   	XOPEXP= 000000
CH.PCT= 000045   	CSTREL= 000040   	LBLFLG= 000002   	RMARG = ****** GX	XSUBD = 000000
CH.QM = 000077   	CSTTYP= 000200   	LCBEGL= ****** GX	RSX11M= 000000   	XZERR = 000000
CH.QTM= 000042   	DEFFLG= 000010   	LCENDL= ****** GX	R$$11M= 000000   	X45   = 000000
CH.RAB= 000076   	DFGFLG= 000020   	LCFLAG= ****** GX	SCANW = ****** GX	ZAPCPX= ****** GX
CH.RP = 000051   	DIG.0 = 000060   	LCMASK= ****** GX

. ABS.	000000	   000
      	000000	   001
CNDSEC	000100	   002
PUREI 	000572	   003
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2917 WORDS  ( 12 PAGES)
DYNAMIC MEMORY:  4160 WORDS  ( 16 PAGES)
ELAPSED TIME:  00:00:25
[45,10]CNDTL,[45,20]CNDTL/-SP=[45,30]RSXPAR,GENMC,FLGDF,CNDTL
CODHD	MACRO M1108  05-DEC-77 23:16  PAGE 6


      1						.TITLE	CODHD
      2						.IDENT	/X07.01/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION X07.01                                                                ;**NEW**
     23					;                                                                               ;**-1
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 6-FEB-73
     29					;	C.A. D'ELIA	22-SEP-73	001
     30					;	C.A. D'ELIA	10-NOV-73	004
     31					;	C.A. D'ELIA	22-MAR-74	014
     32					;	C.A. D'ELIA	07-APR-74	015
     33					;	H.A. NICHOLS	18-JUN-74017
     34					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     35					;
     36					;+
     37					; **-STCODE-STORE CODE
     38					; **-PCROLL-PROCESS CODE ROLL
     39					;-
     40
     41	000000					PURE	PUREI,I		;++017
     42	000000	005767 	000000G		STCODE::TST	PASS		;++001 IS THIS FIRST PASS?
     43	000004	001444 				BEQ	4$		;++001 YES, IGNORE COMPLEX ROLL
     44	000006	005767 	000002'			TST	OBJPNT		;++001 OBJECT CODE NEEDED?
     45	000012	001441 				BEQ	4$		;++001 NO, JUST STORE CODE
     46	000014					SAVREG			;++001 SAVE REGISTERS
     47	000020					SETXPR			;++001 SET EXPRESSION REGISTERS
     48	000024	132713 	000200 			BITB	#CPXFLG,(R3)	;++001 COMPLEX RELOCATION EXPRESSION?
     49	000030	001432 				BEQ	4$		;++001 NO, BRANCH TO APPEND CODE ONLY
     50	000032	011446 				MOV	(R4),-(SP)	;++001 SAVE VALUE--IT REVEALS MODE
     51	000034	116724 	000000C			MOVB	$LSCNT+CPXLST,(R4)+  ;++021 PUT # OF CPX ELEMENTS IN VALUE      ;**NEW**
     52	000040	116724 	000000'			MOVB	CPXSTL,(R4)+	;++001 PUT SIZE OF COMPLEX STRING IN VALUE      ;**-1
     53	000044	004767 	000076 			CALL	APPCOD		;++001 APPEND EXPR VALUE TO CODE ROLL
     54	000050	005067 	000000G			CLR	$LSPNT		;++021 INIT POINTER TO START OF LIST            ;**NEW**
     55	000054				2$:	NEXT	CPXLST		;++021 FETCH NEXT COMPLEX EXPR ELEMENT          ;**NEW**
     56	000064	001407 				BEQ	3$		;++001 BRANCH IF NONE LEFT                      ;**-1
     57	000066	016746 	000000G			MOV	$LSPNT,-(SP)	;++021 SAVE LIST POINTER                        ;**NEW**
CODHD	MACRO M1108  05-DEC-77 23:16  PAGE 6-1


     58	000072	004767 	000050 			CALL	APPCOD		;++001 APPEND ELEMENT TO CODE ROLL              ;**-1
     59	000076	012667 	000000G			MOV	(SP)+,$LSPNT	;++021 RESTORE LIST POINTER                     ;**NEW**
     60	000102	000764 				BR	2$		;++001 BRANCH TO GET NEXT CPX ELEMENT           ;**-1
     61	000104	012713 	004012 		3$:	MOV	#<CPXOPC*400!CPXSTO>,(R3) ;++001 FORM CPX STORE OPCODE (BKWDS)
     62	000110	062613 				ADD	(SP)+,(R3)	;++001 MAKE STORE DISPLACED IF 1 ON STACK
     63	000112	000313 				SWAB	(R3)		;++001 STRAIGHTEN OUT THE BYTES
     64	000114	005044 				CLR	-(R4)		;++001 SET COSMETIC VALUE OF ZERO
     65	000116	004767 	000024 		4$:	CALL	APPCOD		;++001 APPEND IT TO CODROL
     66	000122	105267 	000002'			INCB	INSIZE		;++014 INCREMENT INSTRUCTION SIZE
     67					                                                                                ;**NEW**
     68	000126				ZAPCPX::ZAP	CPXLST		;++021 EMPTY COMPLEX EXPR LIST                  ;**NEW**
     69	000136	012767 	000003 	000000'		MOV	#<1*2+1>,CPXSTL ;++001 INIT COMPLEX STRING LENGTH               ;**-1
     70	000144	000207 				RETURN			;++001
     71					                                                                                ;**NEW**
     72					                                                                                ;**NEW**
     73	000146				APPCOD::APPEND	CODLST		;++021 APPEND TO GENERATED CODE LIST            ;**NEW**
     74	000156	000207 			PCR3A:	RETURN			;++001                                          ;**-1
     75					                                                                                ;**NEW**
     76					                                                                                ;**NEW**
     77	000160				PCROLL::NEXT	CODLST		;++021 FETCH NEXT ITEM OF GENERATED CODE        ;**NEW**
     78	000170	001772 				BEQ	PCR3A		;++001 END                                      ;**-1
     79	000172					SAVREG
     80	000176	005005 				CLR	R5		;ASSUME BYTE
     81	000200	005004 				CLR	R4
     82	000202	156704 	000000G			BISB	SECTOR,R4	;GET THE RLD TYPE
     83	000206	100401 				BMI	1$		;BRANCH IF BYTE
     84	000210	005205 				INC	R5		;  WORD, BUMP TO 1
     85	000212	005767 	000000G		1$:	TST	PASS		;PASS ONE?
     86	000216	001441 				BEQ	9$		;++001 YES, JUST UPDATE PC
     87	000220	005267 	000000'			INC	PCRCNT		;EXTENSION LINE?
     88	000224	100402 				BMI	2$		;  YES
     89	000226					SETPF0			;LIST COLUMN ZERO
     90	000232				2$:	SETPF1			;SET PRINT FIELD ONE
     91	000236	106304 				ASLB	R4		;BYTE?
     92	000240	005767 	000002'			TST	OBJPNT		;ANY OBJECT CODE CALLED FOR?
     93	000244	001426 				BEQ	9$		;++001 NO
     94						.IF NDF	XEDPNC
     95						BIT	#ED.PNC,EDMASK	;PUNCH DISABLED?
     96						BNE	9$		;++001 YES
     97						.ENDC
     98						.IF NDF	XREL
     99	000246	016404 	000000'			MOV	PCRTBL(R4),R4	;GET PROPER TABLE ENTRY
    100	000252	126767 	000000G	000001'		CMPB	CLCSEC,OBJSEC	;SECTOR CHANGE?
    101	000260	001422 				BEQ	10$		;  NO
    102	000262	004767 	000576 			CALL	EVNRLD		;++004 INSURE EVEN RLD POINTER
    103	000266	012700 	000010 			MOV	#4*2,R0
    104	000272	004767 	000530 			CALL	TSTRLD		;SOFTEN UP RLD BUFFER
    105	000276	012722 	000007 			MOV	#RLDT07,(R2)+	;SET RLD TYPE 7
    106	000302	016722 	000000G			MOV	CLCNAM,(R2)+	;  AND NEW SECTOR NAME
    107	000306	016722 	000002G			MOV	CLCNAM+2,(R2)+
    108	000312	116767 	000000G	000001'		MOVB	CLCSEC,OBJSEC
    109	000320	000416 				BR	12$
    110						.IFTF
    111	000322	000167 	000326 		9$:	JMP	PCROL2		;++001
    112	000326	026767 	000000G	000002'	10$:	CMP	CLCLOC,OBJLOC	;DID PC MOVE ON US?
    113	000334	001414 				BEQ	14$		;  NO
    114						.IFT
CODHD	MACRO M1108  05-DEC-77 23:16  PAGE 6-2


    115	000336	004767 	000522 			CALL	EVNRLD		;++004 INSURE EVEN RLD POINTER
    116	000342	012700 	000004 			MOV	#2*2,R0
    117	000346	004767 	000454 			CALL	TSTRLD		;MAKE ROOM
    118	000352	012722 	000010 			MOV	#RLDT10,(R2)+
    119	000356				12$:	.IFTF
    120	000356	016712 	000000G			MOV	CLCLOC,(R2)	;SET NEW PC
    121						.IF DF	YPHASE
    122						SUB	PHAOFF,(R2)
    123						.ENDC
    124	000362	004767 	000324 		13$:	CALL	OBJDMP		;DUMP BUFFER
    125	000366	016700 	000002'		14$:	MOV	OBJPNT,R0	;GET CODE POINTER
    126	000372	060500 				ADD	R5,R0		;COMPUTE NEW END
    127	000374	166700 	000006G			SUB	BUFTBL+BINCHN,R0
    128	000400	020027 	000051 			CMP	R0,#OBJLEN-1	;ROOM?
    129	000404	101366 				BHI	13$		;  NO
    130						.IFT
    131	000406	110400 				MOVB	R4,R0		;YES, GET RLD SIZE
    132	000410	100002 				BPL	90$		;++001 IF NEGATIVE, RLD IS COMPLEX
    133	000412	116700 	000001G			MOVB	VALUE+1,R0	;++001 GET THE COMPLEX STRING LENGTH
    134	000416				90$:				;++001
    135	000416	004767 	000404 			CALL	TSTRLD		;BE SURE WE HAVE ROOM
    136						.IFTF
    137	000422	016701 	000002'			MOV	OBJPNT,R1
    138	000426	020167 	000006G			CMP	R1,BUFTBL+BINCHN	;FIRST ITEM?
    139	000432	001004 				BNE	16$		;  NO
    140						.IFT
    141						.IF NDF	XEDABS
    142						BIT	#ED.ABS,EDMASK	;ABS OUTPUT?
    143						BEQ	15$		;  YES
    144						.ENDC
    145	000434	012721 	000003 			MOV	#BLKT03,(R1)+	;NO, SET BLOCK TYPE
    146	000440				15$:	.IF DF	YPHASE
    147						MOV	CLCLOC,(R1)	;GET CURRENT PC
    148						SUB	PHAOFF,(R1)+	;SUBTRACT OUT PHASE OFFSET
    149						.IFF
    150	000440	016721 	000000G			MOV	CLCLOC,(R1)+	;SET NEW PC
    151						.ENDC
    152	000444				16$:	.IFT
    153	000444	006304 				ASL	R4		;ANY RLD?
    154	000446	103060 				BCC	PCROL1		;  NO
    155	000450	116722 	000000G			MOVB	SECTOR,(R2)+	;YES, SET CODE
    156	000454	010100 				MOV	R1,R0
    157	000456	166700 	000006G			SUB	BUFTBL+BINCHN,R0	;COMPUTE INDEX
    158	000462	110022 				MOVB	R0,(R2)+
    159	000464	105704 				TSTB	R4		;++001 IS RLD FOR COMPLEX EXPRESSION?
    160	000466	100050 				BPL	PCROL1		;++001 NO, CONTINUE NORMAL PROCESSING
    161	000470	116746 	000000G			MOVB	VALUE,-(SP)	;++001 PUT # OF CPX ELEMENTS ON STACK
    162	000474				GCODX:	NEXT	CODLST		;++021 FETCH NEXT COMPLEX EXPR ELEMENT          ;**NEW**
    163	000504	116704 	000000G			MOVB	FLAGS,R4	;++001 PUT FLAGS BYTE IN R4                     ;**-1
    164	000510	132704 	000010 			BITB	#CPXOPC,R4	;++001 IS THIS A COMPLEX OP CODE?
    165	000514	001014 				BNE	RELX1		;++001 YES, STORE IT IN RLD
    166	000516	010200 				MOV	R2,R0		;++001 SAVE RLD POINTER--FORM CPX STACK CMD
    167	000520	112722 	000016 			MOVB	#CPXGLB,(R2)+	;++001 ASSUME 'STACK GLOBAL' COMMAND
    168	000524	132704 	000100 			BITB	#GLBFLG,R4	;++001 IS THIS A GLOBAL SYMBOL?
    169	000530	001403 				BEQ	50$		;++001 NO, TRY RELOCATABLE
    170	000532	004767 	000136 			CALL	RLDSYM		;++001 PUT SYMBOL NAME IN RLD
    171	000536	000416 				BR	XMORE		;++001 BRANCH TO GET NEXT ELEMENT
CODHD	MACRO M1108  05-DEC-77 23:16  PAGE 6-3


    172	000540	105210 			50$:	INCB	(R0)		;++001 'STACK' COMMAND IS RELOC OR CONSTANT
    173	000542	105704 				TSTB	R4		;++001 IS IT CONSTANT?
    174	000544	001406 				BEQ	CONSTX		;++001 YES, BRANCH TO MOVE ITS VALUE
    175	000546	116722 	000000G		RELX1:	MOVB	SECTOR,(R2)+	;++001 MOVE INTO RLD, SECTOR # IF RELOCATABLE
    176									;++001      	..., OPCODE # IF OPCODE
    177	000552	132704 	000040 			BITB	#RELFLG,R4	;++001 IS IT RELOCATABLE VALUE?
    178	000556	001406 				BEQ	XMORE		;++001 NO, GET NEXT ELEMENT FROM ROLL
    179	000560	000401 				BR	CONS1X		;++001 YES, MOVE ITS OFFSET
    180	000562	105210 			CONSTX:	INCB	(R0)		;++001 'STACK' COMMAND IS FOR CONSTANT
    181	000564	116722 	000000G		CONS1X:	MOVB	VALUE,(R2)+	;++001 MOVE THE VALUE ...
    182	000570	116722 	000001G			MOVB	VALUE+1,(R2)+	;++001 ... INTO THE RLD
    183	000574	105316 			XMORE:	DECB	(SP)		;++001 DECREMENT ELEMENT COUNT
    184	000576	100336 				BPL	GCODX		;++001 IF NON-NEGATIVE, GET NEXT ELEMENT
    185	000600	005726 				TST	(SP)+		;++001 CLEAN STACK
    186	000602	005067 	000002G			CLR	PF1+2		;++001 SET VALUE TO BE PRINTED TO ZERO
    187	000606	000412 				BR	MVOBJ		;++001 BRANCH TO PUT VALUE IN OBJECT RECORD
    188	000610	006304 			PCROL1:	ASL	R4		;ANY SYMBOL REQUESTED?
    189	000612	103002 				BCC	21$		;  NO
    190	000614	004767 	000054 			CALL	RLDSYM		;++001 PUT SYMBOL NAME IN RLD
    191	000620	006304 			21$:	ASL	R4		;ANY VALUE?
    192	000622	103004 				BCC	22$		;  NO
    193	000624	116722 	000000G			MOVB	VALUE,(R2)+	;++001 MOVE THE VALUE ...
    194	000630	116722 	000001G			MOVB	VALUE+1,(R2)+	;++001 ... INTO THE RLD
    195	000634				22$:	.ENDC
    196	000634				MVOBJ:				;++001
    197	000634	116721 	000000G			MOVB	VALUE,(R1)+
    198	000640	005705 				TST	R5
    199	000642	001402 				BEQ	29$		;BRANCH IF BYTE INSTRUCTION
    200	000644	116721 	000001G			MOVB	VALUE+1,(R1)+
    201	000650	010167 	000002'		29$:	MOV	R1,OBJPNT
    202	000654	005205 			PCROL2:	INC	R5		;MAKE COUNT 1 OR 2
    203	000656	060567 	000000G			ADD	R5,CLCLOC	;UPDATE PC
    204	000662	016767 	000000G	000002'		MOV	CLCLOC,OBJLOC	;SET SEQUENCE BREAK
    205	000670					SETNZ	R0		;SET TRUE RETURN
    206	000672	000207 			PCROL3:	RETURN
    207
    208	000674	012703 	000000G		RLDSYM:	MOV	#SYMBOL,R3	;++001 PUT SYMBOL ADDR IN R3
    209		000004 				.REPT	4		;++001 PUT 4 BYTES OF SYMBOL IN RLD
    210						MOVB	(R3)+,(R2)+	;++001
    211						.ENDR			;++001
    212	000710	000207 				RETURN			;++001
    213
    214	000000					.PSECT	IMPLIN,D,GBL,RW	;++017
    215	000000				PCRCNT::.BLKW	1		;EXTENSION LINE FLAG
    216	000002				INSIZE::.BLKB	1		;++014 INSTRUCTION SIZE (WORD COUNT)
    217						.BLKB	1		;++014 -- UNUSED --
    218
    219					                                                                                ;**NEW**
    220	000000					.PSECT	MIXED,D,RW	;++021                                          ;**NEW**
    221					                                                                                ;**NEW**
    222	000000				$OPCOD::.BLKW	1		;++021 SAVES OPCODE VALUE IN 'PROPC'            ;**NEW**
    223					                                                                                ;**NEW**
    224					                                                                                ;**NEW**
    225						.IF NDF	XREL
    226
    227	000002					PURE	DPURE,D		;++017
    228	000000				PCRTBL::			;REF LABEL
CODHD	MACRO M1108  05-DEC-77 23:16  PAGE 6-4


    229	000000	000000 				.WORD	0
    230	000002	120004 				.WORD	120004		;RLDT01
    231	000004	140006 				.WORD	140006		;RLDT02
    232	000006	120004 				.WORD	120004		;RLDT03
    233	000010	140006 				.WORD	140006		;RLDT04
    234	000012	160010 				.WORD	160010		;RLDT05
    235	000014	160010 				.WORD	160010		;RLDT06
    236	000016	000000 				.WORD	0
    237	000020	000000 				.WORD	0
    238	000022	100002 				.WORD	100002		;RLD11 (.LIMIT)
    239	000024	000000 				.WORD	0
    240	000026	000000 				.WORD	0
    241	000030	000000 				.WORD	0
    242	000032	160010 				.WORD	160010		;RLDT15
    243	000034	160010 				.WORD	160010		;RLDT16
    244	000036	100377 				.WORD	100377		;++001 RLDT17
    245						.ENDC
    246
    247	000000					.PSECT	IMPPAS,D,GBL,RW	;++017
    248						.ODD
    249	000001				OBJSEC::.BLKB	1		;OBJECT FILE SECTOR
    250	000002				OBJLOC::.BLKW	1		;OBJECT FILE LOCATION
    251
    252	000004					PURE	PUREI,I		;++017
    253
    254						.IF NDF	XEDPNC
    255					PNCSET::MOVB	#-1,OBJSEC	;FORCE SEQUENCE BREAK
    256						RETURN
    257						.ENDC
    258
    259					;+
    260					; **-OBJDMP-DUMP OBJECT BUFFER
    261					; **-RLDDMP-DUMP RELOCATION BUFFER
    262					; **-TSTRLD-TEST RELOCATION BUFFER
    263					;-
    264
    265	000712	016777 	000002'	000006G	OBJDMP::MOV	OBJPNT,@CNTTBL+BINCHN;POINT TO COUNT SLOT
    266	000720	001441 				BEQ	OBJINX		;EXIT IF NOT PRE-SET
    267	000722	166777 	000006G	000006G		SUB	BUFTBL+BINCHN,@CNTTBL+BINCHN	;COMPUTE ACTUAL COUNT
    268	000730	001404 				BEQ	1$		;  EMPTY, FORGET IT
    269	000732					$WRITE	BIN		;+;014 ELSE, WRITE OUT OBJECT BUFFER
    270	000742				1$:
    271						.IF NDF	XREL
    272	000742	016700 	000010G			MOV	BUFTBL+RELCHN,R0
    273	000746	005720 				TST	(R0)+		;IGNORE FIRST WORD
    274	000750	026700 	000004'			CMP	RLDPNT,R0	;ANYTHING IN RLD?
    275	000754	101412 				BLOS	OBJINI		;  NO, JUST INIT
    276	000756				RLDDMP::			;REF LABEL
    277						.IF NDF	XEDABS
    278						BIT	#ED.ABS,EDMASK	;ABS OUTPUT?
    279						BEQ	OBJINI		;  YES, NO RLD
    280						.ENDC
    281	000756	016777 	000004'	000010G		MOV	RLDPNT,@CNTTBL+RELCHN
    282	000764	166777 	000010G	000010G		SUB	BUFTBL+RELCHN,@CNTTBL+RELCHN	;COMPUTE BYTE COUNT
    283	000772					$WRITE	REL		;++014 ELSE, WRITE OUT RLD BUFFER
    284						.IFTF
    285	001002	016767 	000006G	000002'	OBJINI::MOV	BUFTBL+BINCHN,OBJPNT;SET BUFFER POINTER
CODHD	MACRO M1108  05-DEC-77 23:16  PAGE 6-5


    286						.IFT
    287	001010	016767 	000010G	000004'		MOV	BUFTBL+RELCHN,RLDPNT
    288	001016	062767 	000002 	000004'		ADD	#2,RLDPNT	;RESERVE WORD FOR BLOCK TYPE
    289						.IFTF
    290	001024	000207 			OBJINX:	RETURN
    291						.IFT
    292	001026	010046 			TSTRLD::MOV	R0,-(SP)	;SAVE BYTE COUNT
    293	001030	066700 	000004'			ADD	RLDPNT,R0
    294	001034	166700 	000010G			SUB	BUFTBL+RELCHN,R0
    295	001040	020027 	000052 			CMP	R0,#RLDLEN	;ROOM TO STORE?
    296	001044	101402 				BLOS	1$		;  YES
    297	001046	004767 	177640 			CALL	OBJDMP		;NO, DUMP CURRENT
    298	001052	016702 	000004'		1$:	MOV	RLDPNT,R2	;RETURN WITH POINTER IN R2
    299	001056	062667 	000004'			ADD	(SP)+,RLDPNT	;UPDATE POINTER
    300	001062	000207 				RETURN
    301	001064	032767 	000001 	000004'	EVNRLD:	BIT	#1,RLDPNT	;++004 IS RLD POINTER ODD?
    302	001072	001402 				BEQ	1$		;++004 NO, JUST RETURN
    303	001074	004767 	177612 			CALL	OBJDMP		;++004 YES, DUMP CURRENT BUFFER
    304	001100	000207 			1$:	RETURN			;++004
    305						.IFTF
    306
    307	000000					.PSECT	IMPURE,D,RW	;++017
    308	000000				CPXSTL::.BLKW	1		;++001 LENGTH OF COMPLEX STRING
    309	000002				OBJPNT::.BLKW	1		;
    310						.IFT
    311	000004				RLDPNT::.BLKW	1		;
    312						.ENDC
    313
    314		000001 				.END
CODHD	MACRO M1108  05-DEC-77 23:16  PAGE 6-6
SYMBOL TABLE

AM.DEC= 000040   	CH.SUB= 000055   	DIG.9 = 000071   	OBJLOC  000002RG    006	SETPF1= ****** GX
AM.DEF= 000010   	CH.UAR= 000136   	EVNRLD  001064R     002	OBJPNT  000002RG    007	SETXPR= ****** GX
AM.IMM= 000027   	CH.XCL= 000047   	FF    = 000014   	OBJSEC  000001RG    006	SMLCHN= 000012
AM.INC= 000020   	CLCLOC= ****** GX	FLAGS = ****** GX	PASS  = ****** GX	SMLLEN= 000120
AM.NDX= 000060   	CLCNAM= ****** GX	GCODX   000474R     002	PCRCNT  000000RG    003	SPACE = 000040
AM.PC = 000007   	CLCSEC= ****** GX	GLBFLG= 000100   	PCROLL  000160RG    002	SRCCHN= 000002
AM.REL= 000067   	CMOCHN= 000000   	GSDT00= 000000   	PCROL1  000610R     002	SRCLEN= 000204
APPCOD  000146RG    002	CNTTBL= ****** GX	GSDT01= 000400   	PCROL2  000654R     002	STCODE  000000RG    002
APPEND= ****** GX	CODLST= ****** GX	GSDT02= 001000   	PCROL3  000672R     002	STLLEN= 000100
ASTFLG= 000114   	CONSTX  000562R     002	GSDT03= 001400   	PCRTBL  000000RG    005	SYMBOL= ****** GX
BINCHN= 000006   	CONS1X  000564R     002	GSDT04= 002000   	PCR3A   000156R     002	TAB   = 000011
BLKT01= 000001   	CPL   = 000120   	GSDT05= 002400   	PF1   = ****** GX	TMPCNT= 000014
BLKT02= 000002   	CPXADD= 000001   	GSDT06= 003000   	PSTFLG= 000050   	TSTRLD  001026RG    002
BLKT03= 000003   	CPXAND= 000005   	ILVL  = 000004   	REGFLG= 000001   	TTLLEN= 000040
BLKT04= 000004   	CPXCOM= 000011   	INSIZE  000002RG    003	RELCHN= 000010   	VALUE = ****** GX
BLKT05= 000005   	CPXCON= 000020   	LBLFLG= 000002   	RELFLG= 000040   	VT    = 000013
BLKT06= 000006   	CPXDIV= 000004   	LET.A = 000101   	RELX1   000546R     002	XBSRCH= 000000
BPMB  = 000020   	CPXFLG= 000200   	LET.B = 000102   	RLDDMP  000756RG    002	XCREF = 000000
BUFTBL= ****** GX	CPXGLB= 000016   	LET.C = 000103   	RLDLEN= 000052   	XEDABS= 000000
CH.ADD= 000053   	CPXIOR= 000006   	LET.D = 000104   	RLDPNT  000004RG    007	XEDCDR= 000000
CH.AND= 000046   	CPXLST= ****** GX	LET.E = 000105   	RLDSYM  000674R     002	XEDCRF= 000000
CH.BSL= 000134   	CPXMUL= 000003   	LET.F = 000106   	RLDT00= 000000   	XEDFPT= 000000
CH.COL= 000072   	CPXNEG= 000010   	LET.G = 000107   	RLDT01= 000001   	XEDLC = 000000
CH.COM= 000054   	CPXOPC= 000010   	LET.O = 000117   	RLDT02= 000002   	XEDPIC= 000000
CH.DIV= 000057   	CPXREL= 000017   	LET.Z = 000132   	RLDT03= 000003   	XEDPNC= 000000
CH.DOL= 000044   	CPXSDS= 000013   	LF    = 000012   	RLDT04= 000004   	XFCSQN= 000000
CH.DOT= 000056   	CPXSTL  000000RG    007	LINLEN= 000204   	RLDT05= 000005   	XFLTG = 000000
CH.EQU= 000075   	CPXSTO= 000012   	LPP   = 000074   	RLDT06= 000006   	XMORE   000574R     002
CH.HSH= 000043   	CPXSUB= 000002   	LSTCHN= 000004   	RLDT07= 000007   	XOPEXP= 000000
CH.IND= 000100   	CR    = 000015   	LSTLEN= 000204   	RLDT10= 000010   	XSUBD = 000000
CH.IOR= 000041   	CSTACC= 000020   	LST.KB= 000001   	RLDT11= 000011   	XZERR = 000000
CH.LAB= 000074   	CSTALO= 000004   	LST.LP= 000002   	RLDT15= 000015   	X45   = 000000
CH.LP = 000050   	CSTFLG= 000050   	MAXCHN= 000014   	RLDT16= 000016   	YQCMO = 000000
CH.MUL= 000052   	CSTGBL= 000100   	MDFFLG= 000004   	RLDT17= 000017   	ZAP   = ****** GX
CH.PCT= 000045   	CSTMEM= 000001   	MVOBJ   000634R     002	RSX11M= 000000   	ZAPCPX  000126RG    002
CH.QM = 000077   	CSTREL= 000040   	NEXT  = ****** GX	R$$11M= 000000   	$LSCNT= ****** GX
CH.QTM= 000042   	CSTTYP= 000200   	OBJDMP  000712RG    002	SAVREG= ****** GX	$LSPNT= ****** GX
CH.RAB= 000076   	DEFFLG= 000010   	OBJINI  001002RG    002	SECTOR= ****** GX	$OPCOD  000000RG    004
CH.RP = 000051   	DFGFLG= 000020   	OBJINX  001024R     002	SETPF0= ****** GX	$WRITE= ****** GX
CH.SMC= 000073   	DIG.0 = 000060   	OBJLEN= 000052

. ABS.	000000	   000
      	000000	   001
PUREI 	001102	   002
IMPLIN	000004	   003
MIXED 	000002	   004
DPURE 	000040	   005
IMPPAS	000004	   006
IMPURE	000006	   007
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  4376 WORDS  ( 18 PAGES)
DYNAMIC MEMORY:  5216 WORDS  ( 20 PAGES)
ELAPSED TIME:  00:00:39
[45,10]CODHD,[45,20]CODHD/-SP=[45,30]RSXPAR,MPARAM,MCIOCH,GENMC,FLGDF,CODHD
CRFFIL                         	MACRO M1108  05-DEC-77 23:17  PAGE 4


      1						.TITLE	CRFFIL                                                          ;**NEW**
      2						.IDENT	/X00.01/                                                        ;**NEW**
      3					;                                                                               ;**NEW**
      4					; COPYRIGHT (C) 1975                                                            ;**NEW**
      5					; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.                                 ;**NEW**
      6					;                                                                               ;**NEW**
      7					; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A                  ;**NEW**
      8					; SINGLE COMPUTER SYSTEM AND  MAY  BE  COPIED  ONLY  WITH  THE                  ;**NEW**
      9					; INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE,  OR                  ;**NEW**
     10					; ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED  OR  OTHERWISE                  ;**NEW**
     11					; MADE AVAILABLE TO ANY OTHER PERSON  EXCEPT FOR USE  ON  SUCH                  ;**NEW**
     12					; SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE  TERMS.  TITLE                  ;**NEW**
     13					; TO AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL  TIMES  REMAIN                  ;**NEW**
     14					; IN DEC.                                                                       ;**NEW**
     15					;                                                                               ;**NEW**
     16					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT                 ;**NEW**
     17					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL                 ;**NEW**
     18					; EQUIPMENT CORPORATION.                                                        ;**NEW**
     19					;                                                                               ;**NEW**
     20					; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY OF                  ;**NEW**
     21					; ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.                       ;**NEW**
     22					;                                                                               ;**NEW**
     23					; VERSION X00.01                                                                ;**NEW**
     24					;                                                                               ;**NEW**
     25					; WRITTEN BY:                                                                   ;**NEW**
     26					;	C.A. D'ELIA	01-NOV-75	022	(CREF)                          ;**NEW**
     27					;                                                                               ;**NEW**
     28					                                                                                ;**NEW**
     29					                                                                                ;**NEW**
     30					                                                                                ;**NEW**
     31						.IF NDF	XCREF		;++022                                          ;**NEW**
     32					                                                                                ;**NEW**
     33						.MCALL	FDAT$R,FDOP$R,CSI$  ;++022                                      ;**NEW**
     34					                                                                                ;**NEW**
     35						CSI$			;++022                                          ;**NEW**
     36					                                                                                ;**NEW**
     37					                                                                                ;**NEW**
     38						PURE	PUREI,I		;++022                                          ;**NEW**
     39					                                                                                ;**NEW**
     40					;                                                                               ;**NEW**
     41					; **-CRFSET-*-SET CREF OPTIONS                                                  ;**NEW**
     42					;                                                                               ;**NEW**
     43					                                                                                ;**NEW**
     44					CRFSET::			;++022                                          ;**NEW**
     45						CALL	GSARG		;++022 GET OPTION ARGUMENT                      ;**NEW**
     46						BEQ	200$		;++022 IF EQ NONE LEFT                          ;**NEW**
     47						SCANW	CRFROL		;++022 CHECK FOR ARGUMENT LEGALITY              ;**NEW**
     48						BEQ	CRFSET		;++022 IF EQ INVALID--IGNORE                    ;**NEW**
     49						BIS	SYMBOL+2,CRMASK	;++022 COPY MASK BITS INTO CONTROL WORD         ;**NEW**
     50						BR	CRFSET		;++022 REPEAT FOR ALL SPECIFIED OPTIONS         ;**NEW**
     51					200$:	TST	CRMASK		;++022 WERE ANY OPTIONS SPECIFIED?              ;**NEW**
     52						BNE	300$		;++022 IF NE YES                                ;**NEW**
     53						MOV	#CRINIT,CRMASK	;++022 IF NOT, SET DEFAULT OPTIONS              ;**NEW**
     54					300$:	RETURN			;++022                                          ;**NEW**
     55					                                                                                ;**NEW**
     56					                                                                                ;**NEW**
     57					;                                                                               ;**NEW**
CRFFIL                         	MACRO M1108  05-DEC-77 23:17  PAGE 4-1


     58					; **-$OPCRF-*-OPEN CRF OUTPUT FILE                                              ;**NEW**
     59					;                                                                               ;**NEW**
     60					                                                                                ;**NEW**
     61					$OPCRF::			;++022                                          ;**NEW**
     62						CLR	FDBTBL+CRFCHN	;++022 ASSUME CREF OUTPUT NOT DESIRED           ;**NEW**
     63						BIT	#CRMSK,CSIBLK+C.MKW1  ;++022 CREF DESIRED?                      ;**NEW**
     64						BEQ	200$		;++022 IF EQ NO                                 ;**NEW**
     65						MOV	FDBTBL+LSTCHN,R1  ;++022 GET ADDR OF LST FILE FDB               ;**NEW**
     66						ADD	#F.FNB+N.FNAM,R1  ;++022 POINT PAST FILE ID                     ;**NEW**
     67						CALL	$GTFDB		;++022 GET NEXT AVAILABLE FDB                   ;**NEW**
     68						MOV	R0,FDBTBL+CRFCHN  ;++022 USE IT FOR THE CRF FILE                ;**NEW**
     69						MOV	R0,R2		;++022 COPY ADDR INTO R2                        ;**NEW**
     70						ADD	#F.FNB+N.FNAM,R2  ;++022 POINT PAST THE FILE ID                 ;**NEW**
     71						MOV	#<S.FNB-6>/2,R3	;++022 GET NUMBER OF WORDS TO COPY              ;**NEW**
     72					100$:	MOV	(R1)+,(R2)+	;++022 CRF FILE WILL HAVE SAVE NAME,            ;**NEW**
     73						SOB	R3,100$		;++022 ETC AS THE LST FILE                      ;**NEW**
     74						CLR	F.FNB+N.FVER(R0)  ;++022 EXCEPT USE DEFAULT VERSION             ;**NEW**
     75						MOV	#^RCRF,F.FNB+N.FTYP(R0)  ;++022 AND FILE TYPE .CRF              ;**NEW**
     76						FDAT$R	R0,#R.FIX	;++022 FILE HAS FIXED LENGTH RECORDS            ;**NEW**
     77						FDOP$R	R0,#7		;++022 USE LUN 7                                ;**NEW**
     78						MOV	#CRFCHN,R1	;++022 PUT CRF SOFTWARE CHANNEL # IN R1         ;**NEW**
     79						MOV	#CSIM5,R3	;++022 SET ERROR MESSAGE IN CASE OF ERROR       ;**NEW**
     80						CALL	$OPNWT		;++022 OPEN OUTPUT FILE                         ;**NEW**
     81					200$:	RETURN			;++022                                          ;**NEW**
     82					                                                                                ;**NEW**
     83						.ENDC			;++022                                          ;**NEW**
     84					                                                                                ;**NEW**
     85					                                                                                ;**NEW**
     86					                                                                                ;**NEW**
     87		000001 				.END                                                                    ;**NEW**
CRFFIL                         	MACRO M1108  05-DEC-77 23:17  PAGE 4-2
SYMBOL TABLE

BINCHN= 000006   	RELCHN= 000010   	TMPCNT= 000014   	XEDFPT= 000000   	XFLTG = 000000
CMOCHN= 000000   	RSX11M= 000000   	XBSRCH= 000000   	XEDLC = 000000   	XOPEXP= 000000
ILVL  = 000004   	R$$11M= 000000   	XCREF = 000000   	XEDPIC= 000000   	XSUBD = 000000
LSTCHN= 000004   	SMLCHN= 000012   	XEDABS= 000000   	XEDPNC= 000000   	XZERR = 000000
MAXCHN= 000014   	SRCCHN= 000002   	XEDCDR= 000000   	XFCSQN= 000000   	X45   = 000000

. ABS.	000000	   000
      	000000	   001
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  3224 WORDS  ( 13 PAGES)
DYNAMIC MEMORY:  4160 WORDS  ( 16 PAGES)
ELAPSED TIME:  00:00:19
[45,10]CRFFIL,[45,20]CRFFIL/-SP=[45,30]RSXPAR,MCIOCH,GENMC,CRFFIL
CRFIO                          	MACRO M1108  05-DEC-77 23:17  PAGE 3


      1						.TITLE	CRFIO                                                           ;**NEW**
      2						.IDENT	/X00.01/                                                        ;**NEW**
      3					;                                                                               ;**NEW**
      4					; COPYRIGHT (C) 1975                                                            ;**NEW**
      5					; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.                                 ;**NEW**
      6					;                                                                               ;**NEW**
      7					; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A                  ;**NEW**
      8					; SINGLE COMPUTER SYSTEM AND  MAY  BE  COPIED  ONLY  WITH  THE                  ;**NEW**
      9					; INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE,  OR                  ;**NEW**
     10					; ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED  OR  OTHERWISE                  ;**NEW**
     11					; MADE AVAILABLE TO ANY OTHER PERSON  EXCEPT FOR USE  ON  SUCH                  ;**NEW**
     12					; SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE  TERMS.  TITLE                  ;**NEW**
     13					; TO AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL  TIMES  REMAIN                  ;**NEW**
     14					; IN DEC.                                                                       ;**NEW**
     15					;                                                                               ;**NEW**
     16					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT                 ;**NEW**
     17					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL                 ;**NEW**
     18					; EQUIPMENT CORPORATION.                                                        ;**NEW**
     19					;                                                                               ;**NEW**
     20					; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY OF                  ;**NEW**
     21					; ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.                       ;**NEW**
     22					;                                                                               ;**NEW**
     23					; VERSION X00.01                                                                ;**NEW**
     24					;                                                                               ;**NEW**
     25					; WRITTEN BY:                                                                   ;**NEW**
     26					;	C.A. D'ELIA	01-NOV-75	022	(CREF)                          ;**NEW**
     27					;                                                                               ;**NEW**
     28					                                                                                ;**NEW**
     29					                                                                                ;**NEW**
     30					                                                                                ;**NEW**
     31						.IF NDF	XCREF		;++022                                          ;**NEW**
     32					                                                                                ;**NEW**
     33						PURE	PUREI,I		;++022                                          ;**NEW**
     34					                                                                                ;**NEW**
     35					;                                                                               ;**NEW**
     36					; **-CRFDEF-*-OUTPUT CREF DEFINITION RECORD                                     ;**NEW**
     37					; **-CRFREF-*-OUTPUT CREF REFERENCE RECORD                                      ;**NEW**
     38					;                                                                               ;**NEW**
     39					                                                                                ;**NEW**
     40					CRFDEF::			;++022                                          ;**NEW**
     41						MOVB	#CR$DEF,$CRATT	;++022 SET CRF DEFN FLAG                        ;**NEW**
     42					                                                                                ;**NEW**
     43					CRFREF::			;++022                                          ;**NEW**
     44						TST	PASS		;++022 IF THIS IS FIRST PASS, THEN              ;**NEW**
     45						BEQ	500$		;++022 JUST RETURN                              ;**NEW**
     46						TSTB	CRFFIL		;++022 OR IF NO CRF FILE, THEN                  ;**NEW**
     47						BEQ	500$		;++022 JUST RETURN                              ;**NEW**
     48						BIT	#ED.CRF,EDMASK	;++022 IF CREF OUTPUT DISABLED?                 ;**NEW**
     49						BNE	500$		;++022 IF NE YES                                ;**NEW**
     50						MOV	R0,-(SP)	;++022 ELSE, SAVE R0                            ;**NEW**
     51						MOV	CRMASK,-(SP)	;++022 COPY CREF OPTIONS MASK                   ;**NEW**
     52						MOV	#$CRTBL,R0	;++022 GET ADDR OF CREF LIST TABLE              ;**NEW**
     53					100$:	CMPB	ROLNDX,(R0)+	;++022 DOES ENTRY MATCH CURRENT LIST?           ;**NEW**
     54						BEQ	200$		;++022 IF EQ YES                                ;**NEW**
     55						ROR	(SP)		;++022 SHIFT CONTROL MASK FOR THIS OPTION       ;**NEW**
     56						BR	100$		;++022 KEEP SEARCHING FOR LIST MATCHUP          ;**NEW**
     57					200$:	ROR	(SP)+		;++022 SHIFT CONTROL MASK FOR THIS OPTION       ;**NEW**
CRFIO                          	MACRO M1108  05-DEC-77 23:17  PAGE 3-1


     58						BCC	400$		;++022 IF CC THIS OPTION NOT ENABLED            ;**NEW**
     59						SUB	#$CRTBL+1,R0	;++022 CALC THE OPTION'S TABLE OFFSET           ;**NEW**
     60						MOVB	R0,$CRFMT	;++022 USE IT AS FORMAT NUMBER                  ;**NEW**
     61						MOV	#$CRSYM,R0	;++022 GET ADDR OF CRF RECORD BUFFER            ;**NEW**
     62						MOV	SYMBOL,(R0)+	;++022 STORE THE SYMBOL NAME                    ;**NEW**
     63						MOV	SYMBOL+2,(R0)+	;++022                                          ;**NEW**
     64						MOV	PAGNUM,(R0)+	;++022 STORE PAGE NUMBER                        ;**NEW**
     65						MOV	LINNUM,(R0)+	;++022 STORE LINE NUMBER                        ;**NEW**
     66						MOV	VALUE,(R0)+	;++022 STORE VALUE                              ;**NEW**
     67						MOVB	FLAGS,-(SP)	;++022 COPY SYMBOL'S FLAGS                      ;**NEW**
     68						BICB	#CR$DRF,(SP)	;++022 ASSUME NO DESTRUCTIVE REF                ;**NEW**
     69						TSTB	CRFDFL		;++022 CHECK FOR A DESTRUCTIVE REF              ;**NEW**
     70						BPL	300$		;++022 IF PL NOT TRUE THIS CASE                 ;**NEW**
     71						BISB	#CR$DRF,(SP)	;++022 SET DESTRUCTIVE REF FLAG                 ;**NEW**
     72					300$:	BISB	(SP)+,(R0)	;++022 MERGE FLAGS INTO BUFFER                  ;**NEW**
     73						$WRITE	CRF		;++022 OUTPUT THE CREF RECORD                   ;**NEW**
     74					400$:	MOV	(SP)+,R0	;++022 RESTORE R0                               ;**NEW**
     75						CLRB	$CRATT		;++022 CLEAR CREF RECORD ATTRIB BYTE            ;**NEW**
     76					500$:	RETURN			;++022                                          ;**NEW**
     77					                                                                                ;**NEW**
     78					                                                                                ;**NEW**
     79						.ENDC			;++022                                          ;**NEW**
     80					                                                                                ;**NEW**
     81					                                                                                ;**NEW**
     82					                                                                                ;**NEW**
     83		000001 				.END                                                                    ;**NEW**
CRFIO                          	MACRO M1108  05-DEC-77 23:17  PAGE 3-2
SYMBOL TABLE

BINCHN= 000006   	RELCHN= 000010   	TMPCNT= 000014   	XEDFPT= 000000   	XFLTG = 000000
CMOCHN= 000000   	RSX11M= 000000   	XBSRCH= 000000   	XEDLC = 000000   	XOPEXP= 000000
ILVL  = 000004   	R$$11M= 000000   	XCREF = 000000   	XEDPIC= 000000   	XSUBD = 000000
LSTCHN= 000004   	SMLCHN= 000012   	XEDABS= 000000   	XEDPNC= 000000   	XZERR = 000000
MAXCHN= 000014   	SRCCHN= 000002   	XEDCDR= 000000   	XFCSQN= 000000   	X45   = 000000

. ABS.	000000	   000
      	000000	   001
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  1518 WORDS  ( 6 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:08
[45,10]CRFIO,[45,20]CRFIO/-SP=[45,30]RSXPAR,MCIOCH,CRFIO
DATDR	MACRO M1108  05-DEC-77 23:17  PAGE 4


      1						.TITLE	DATDR
      2						.IDENT	/X08.01/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION X08.01                                                                ;**NEW**
     23					;                                                                               ;**-1
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 10-FEB-73
     29					;	C.A. D'ELIA	22-SEP-73	002
     30					;	C.A. D'ELIA	15-NOV-73	008
     31					;	C.A. D'ELIA	25-JAN-74	011
     32					;	C.A. D'ELIA	22-MAR-74	014
     33					;	C.A. D'ELIA	07-APR-74	015
     34					;	H.A. NICHOLS	18-JUN-74	017
     35					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     36					;
     37					;
     38					;+
     39					; **-IDENT-PROGRAM IDENTIFICATION
     40					;-
     41	000000					PURE	PUREI,I		;++017
     42
     43	000000	004767 	000166 		IDENT::	CALL	RAD50		;TREAT AS RAD50
     44	000004	005067 	000000G			CLR	$LSPNT		;++021 INIT POINTER TO START OF LIST            ;**NEW**
     45	000010	012702 	000000G			MOV	#PRGIDN,R2	;  AND TO IDENT BLOCK                           ;**-1
     46	000014				1$:	NEXT	CODLST		;++021 FETCH NEXT ITEM OF CODE                  ;**NEW**
     47	000024	016722 	000000G			MOV	VALUE,(R2)+	;STORE IT                                       ;**-1
     48	000030	020227 	000004G			CMP	R2,#PRGIDN+4	;PROCESSED TWO WORDS?
     49	000034	103767 				BLO	1$		;  NO
     50						.IF NDF	XREL
     51	000036	012722 	003000 			MOV	#GSDT06,(R2)+	;YES, SET GSD TYPE
     52						.ENDC
     53	000042					ZAP	CODLST		;++021 EMPTY THE CODE LIST                      ;**NEW**
     54	000052	000207 				RETURN                                                                  ;**-1
     55
     56					;+
     57					; **-BLKB-BLOCK BYTE/WORD
DATDR	MACRO M1108  05-DEC-77 23:17  PAGE 4-1


     58					; **-RADIX-CONVERSION RADIX
     59					;-
     60
     61	000054				BLKB::				;++011 R3=0 IMPLIES ".BLKB"
     62									;++011 R3=1 IMPLIES ".BLKW"
     63	000054					EXPR			;++011 EVALUATE EXPRESSION
     64	000060	001001 				BNE	1$		;BRANCH IF NON-NULL
     65	000062	005214 				INC	(R4)		;NULL, MAKE IT ONE
     66	000064				1$:	ABSTST			;MUST BE ABSOLUTE
     67	000070	060012 			2$:	ADD	R0,(R2)		;UPDATE PC
     68	000072	006203 				ASR	R3		;WORD?
     69	000074	103775 				BCS	2$		;  YES, DOUBLE VALUE
     70	000076	000207 				RETURN
     71	000100	016702 	000000G		RADIX::	MOV	CRADIX,R2	;SAVE IN CASE OF FAILURE
     72	000104	012767 	000012 	000000G		MOV	#10.,CRADIX
     73	000112					EXPR			;++014 EVALUATE EXPRESSION
     74	000116	001002 				BNE	1$		;++014 SKIP IF NOT NULL
     75	000120	012714 	000010 			MOV	#8.,(R4)	;++014 ELSE, USE DEFAULT OCTAL
     76	000124				1$:	ABSTST			;++014 INSURE ABSOLUTE EXPRESSION
     77	000130	020027 	000002 			CMP	R0,#2.
     78	000134	001412 				BEQ	2$		;++014 LEGAL RADIX -- SKIP
     79	000136	020027 	000012 			CMP	R0,#10.
     80	000142	001407 				BEQ	2$		;++014 LEGAL RADIX -- SKIP
     81	000144	020027 	000010 			CMP	R0,#8.		;++014
     82	000150	001404 				BEQ	2$		;++014 LEGAL RADIX -- SKIP
     83	000152					ERROR	A		;++014 ERROR IF NOT 2, 8., OR 10.
     84	000160	010200 				MOV	R2,R0
     85	000162	010067 	000000G		2$:	MOV	R0,CRADIX
     86	000166	000167 	000000G			JMP	SETPF1
     87
     88					;+
     89					; **-RAD50--GENERATE RADIX-50/ASCII/ASCIZ DATA
     90					;-
     91
     92	000172	005303 			RAD50::	DEC	R3		;++011 R3=-1 IMPLIES ".RAD50"
     93									;++011 R3=0 IMPLIES ".ASCII"
     94									;++011 R3=1 IMPLIES ".ASCIZ"
     95	000174	004767 	000206 			CALL	23$		;INIT REGS
     96	000200	010502 			1$:	MOV	R5,R2		;SET TERMINATOR
     97	000202	001427 				BEQ	8$		;ERROR IF EOL
     98	000204	020527 	000074 		2$:	CMP	R5,#CH.LAB	; "<", EXPRESSION?
     99	000210	001440 				BEQ	10$		;  YES
    100	000212				3$:	GETCHR			;NO, GET NEXT CHAR
    101	000216	010500 				MOV	R5,R0		;SET IN WORK REGISTER
    102	000220	001420 				BEQ	8$		;ERROR IF EOL
    103	000222	020502 				CMP	R5,R2		;TERMINATOR?
    104	000224	001410 				BEQ	5$		;  YES
    105	000226	005703 				TST	R3		;NO
    106	000230	100401 				BMI	9$		;BRANCH IF RAD50
    107						.IF NDF	XEDLC
    108						MOV	CHRPNT,R0	;FAKE FOR OVLAY PIC
    109						MOVB	(R0),R0		;FETCH POSSIBLE LOWER CASE
    110						BIC	#177600,R0	;CLEAR POSSIBLE SIGN BIT
    111						.ENDC
    112	000232	000402 				BR	4$
    113	000234				9$:	TSTR50			;TEST RADIX 50
    114	000240	004767 	000064 		4$:	CALL	20$		;PROCESS THE ITEM
DATDR	MACRO M1108  05-DEC-77 23:17  PAGE 4-2


    115	000244	000762 				BR	3$		;BACK FOR ANOTHER
    116	000246				5$:	GETNB			;BYPASS TERMINATOR
    117	000252	105765 	000000G		6$:	TSTB	CTTBL(R5)	;EOL OR COMMENT?
    118	000256	003350 				BGT	1$		;  NO
    119	000260	000403 				BR	7$
    120	000262				8$:	ERROR	A		;ERROR, FLAG AND EXIT
    121	000270	005000 			7$:	CLR	R0		;YES, PREPARE TO CLEAN UP
    122	000272	005703 				TST	R3		;TEST MODE
    123	000274	001446 				BEQ	24$		;NORMAL EXIT IF .ASCII
    124	000276	100014 				BPL	20$		;ONE ZERO BYTE IF .ASCIZ
    125	000300	005701 				TST	R1		;.RAD50, ANYTHING IN PROGRESS?
    126	000302	001443 				BEQ	24$
    127	000304	004767 	000020 			CALL	20$		;YES, PROCESS
    128	000310	000760 				BR	6$		;LOOP UNTIL WORD COMPLETED
    129	000312	011446 			10$:	MOV	(R4),-(SP)	;"<EXPRESSION>", SAVE PARTIAL
    130	000314					ABSTRM			;ABSOLUTE TERM, SETTING R0
    131	000320	012614 				MOV	(SP)+,(R4)	;RESTORE PARTIAL
    132	000322	004767 	000002 			CALL	20$		;PROCESS BYTE
    133	000326	000751 				BR	6$		;TEST FOR END
    134	000330	005703 			20$:	TST	R3		;RAD50?
    135	000332	100020 				BPL	22$		;  NO
    136	000334	020027 	000050 			CMP	R0,#50		;YES, WITHIN RANGE?
    137	000340	103403 				BLO	21$		;  YES
    138	000342					ERROR	Q		;++014 ERROR -- NON-RAD50 CHARACTER
    139	000350	010046 			21$:	MOV	R0,-(SP)	;SAVE CURRENT CHAR
    140	000352	011400 				MOV	(R4),R0		;GET PARTIAL
    141	000354	004767 	000000G			CALL	MULR50		;MULTIPLY
    142	000360	062600 				ADD	(SP)+,R0	;ADD IN CURRENT
    143	000362	010014 				MOV	R0,(R4)		;SAVE
    144	000364	005201 				INC	R1		;BUMP COUNT
    145	000366	020127 	000003 			CMP	R1,#3		;WORD COMPLETE?
    146	000372	001007 				BNE	24$		;  NO
    147	000374	010014 			22$:	MOV	R0,(R4)		;STUFF IN VALUE
    148	000376					SETIMM			;CONVERT TO OBJ MODE
    149	000402					STCODE			;STOW IT
    150	000406	005001 			23$:	CLR	R1		;CLEAR LOOP COUNT
    151	000410	005014 				CLR	(R4)		;  AND VALUE
    152	000412	000207 			24$:	RETURN
    153
    154		000001 				.END
DATDR	MACRO M1108  05-DEC-77 23:17  PAGE 4-3
SYMBOL TABLE

ABSTRM= ****** GX	CH.LP = 000050   	CSTALO= 000004   	LET.B = 000102   	RLDT15= 000015
ABSTST= ****** GX	CH.MUL= 000052   	CSTFLG= 000050   	LET.C = 000103   	RLDT16= 000016
AM.DEC= 000040   	CH.PCT= 000045   	CSTGBL= 000100   	LET.D = 000104   	RLDT17= 000017
AM.DEF= 000010   	CH.QM = 000077   	CSTMEM= 000001   	LET.E = 000105   	RSX11M= 000000
AM.IMM= 000027   	CH.QTM= 000042   	CSTREL= 000040   	LET.F = 000106   	R$$11M= 000000
AM.INC= 000020   	CH.RAB= 000076   	CSTTYP= 000200   	LET.G = 000107   	SETIMM= ****** GX
AM.NDX= 000060   	CH.RP = 000051   	CTTBL = ****** GX	LET.O = 000117   	SETPF1= ****** GX
AM.PC = 000007   	CH.SMC= 000073   	DEFFLG= 000010   	LET.Z = 000132   	SPACE = 000040
AM.REL= 000067   	CH.SUB= 000055   	DFGFLG= 000020   	LF    = 000012   	STCODE= ****** GX
ASTFLG= 000114   	CH.UAR= 000136   	DIG.0 = 000060   	LST.KB= 000001   	TAB   = 000011
BLKB    000054RG    002	CH.XCL= 000047   	DIG.9 = 000071   	LST.LP= 000002   	TSTR50= ****** GX
BLKT01= 000001   	CODLST= ****** GX	ERRBTS= ****** GX	MDFFLG= 000004   	VALUE = ****** GX
BLKT02= 000002   	CPXADD= 000001   	ERR.A = ****** GX	MULR50= ****** GX	VT    = 000013
BLKT03= 000003   	CPXAND= 000005   	ERR.Q = ****** GX	NEXT  = ****** GX	XBSRCH= 000000
BLKT04= 000004   	CPXCOM= 000011   	EXPR  = ****** GX	PRGIDN= ****** GX	XCREF = 000000
BLKT05= 000005   	CPXCON= 000020   	FF    = 000014   	PSTFLG= 000050   	XEDABS= 000000
BLKT06= 000006   	CPXDIV= 000004   	GETCHR= ****** GX	RADIX   000100RG    002	XEDCDR= 000000
CH.ADD= 000053   	CPXFLG= 000200   	GETNB = ****** GX	RAD50   000172RG    002	XEDFPT= 000000
CH.AND= 000046   	CPXGLB= 000016   	GLBFLG= 000100   	REGFLG= 000001   	XEDLC = 000000
CH.BSL= 000134   	CPXIOR= 000006   	GSDT00= 000000   	RELFLG= 000040   	XEDPIC= 000000
CH.COL= 000072   	CPXMUL= 000003   	GSDT01= 000400   	RLDT00= 000000   	XEDPNC= 000000
CH.COM= 000054   	CPXNEG= 000010   	GSDT02= 001000   	RLDT01= 000001   	XFCSQN= 000000
CH.DIV= 000057   	CPXOPC= 000010   	GSDT03= 001400   	RLDT02= 000002   	XFLTG = 000000
CH.DOL= 000044   	CPXREL= 000017   	GSDT04= 002000   	RLDT03= 000003   	XOPEXP= 000000
CH.DOT= 000056   	CPXSDS= 000013   	GSDT05= 002400   	RLDT04= 000004   	XSUBD = 000000
CH.EQU= 000075   	CPXSTO= 000012   	GSDT06= 003000   	RLDT05= 000005   	XZERR = 000000
CH.HSH= 000043   	CPXSUB= 000002   	IDENT   000000RG    002	RLDT06= 000006   	X45   = 000000
CH.IND= 000100   	CR    = 000015   	ILVL  = 000004   	RLDT07= 000007   	ZAP   = ****** GX
CH.IOR= 000041   	CRADIX= ****** GX	LBLFLG= 000002   	RLDT10= 000010   	$LSPNT= ****** GX
CH.LAB= 000074   	CSTACC= 000020   	LET.A = 000101   	RLDT11= 000011

. ABS.	000000	   000
      	000000	   001
PUREI 	000414	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2695 WORDS  ( 11 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:20
[45,10]DATDR,[45,20]DATDR/-SP=[45,30]RSXPAR,GENMC,FLGDF,DATDR
ENBDS	MACRO M1108  05-DEC-77 23:17  PAGE 4


      1						.TITLE	ENBDS
      2						.IDENT	/X06.01/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS  01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A  SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE  INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND  SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION X06.01                                                                ;**NEW**
     23					;                                                                               ;**-1
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 7-FEB-73
     29					;	C.A. D'ELIA	12-NOV-73	006
     30					;	C.A. D'ELIA	25-JAN-74	011
     31					;	C.A. D'ELIA	07-APR-74	015
     32					;	H.A. NICHOLS	18-JUN-74	017
     33					;	C.A. D'ELIA	01-AUG-74	017
     34					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     35					;
     36					                                                                                ;**NEW**
     37					                                                                                ;**NEW**
     38	000000					PURE	PUREI,I		;++017                                          ;**-66
     39
     40					;+
     41					; **-ENABL-ENABLE/DISABLE FUNCTION
     42					;-
     43
     44	000000				ENABL::				;++011 R3=0 IMPLIES ".ENABL"
     45									;++011 R3=-1 IMPLIES ".DSABL"
     46	000000					GSARG			;++011 GET SYMBOLIC ARGUMENT
     47	000004	001441 				BEQ	10$		;++021 JUST RETURN IF NULL                      ;**NEW**
     48	000006					SCANW	EDTROL		;SEARCH THE TABLE                               ;**-1
     49	000016	001431 				BEQ	7$		;  NOT THERE, ERROR
     50	000020	005002 				CLR	R2		;COMPUTE BIT POSITION
     51	000022	000261 				SEC
     52	000024	006102 			2$:	ROL	R2
     53	000026					SOB	R0,2$
     54	000032	005767 	000000G			TST	EXMFLG		;CALLED FROM COMMAND STRING?
     55	000036	001403 				BEQ	3$		;  NO
     56	000040	050267 	000000G			BIS	R2,EDMCSI	;YES, SET DISABLE BITS
     57	000044	000403 				BR	4$		;  AND BYPASS TEST
ENBDS	MACRO M1108  05-DEC-77 23:17  PAGE 4-1


     58	000046	030267 	000000G		3$:	BIT	R2,EDMCSI	;OVER-RIDDEN FROM CSI?
     59	000052	001352 				BNE	ENABL		;IF NE YES-IGNOR
     60	000054	040267 	000000G		4$:	BIC	R2,EDMASK	;NO, CLEAR SELECTED BIT
     61	000060	005703 				TST	R3		;ENDBLE?
     62	000062	001402 				BEQ	5$		;  YES, LEAVE IT CLEAR
     63	000064	050267 	000000G			BIS	R2,EDMASK	;++017 NO, SET THE BIT FOR .DSABL
     64	000070	016746 	000002G		5$:	MOV	SYMBOL+2,-(SP)	;MAKE IT PIC
     65	000074	005703 				TST	R3		;SET FLAGS
     66	000076	004736 				CALL	@(SP)+		;CALL ROUTINE
     67	000100	000737 				BR	ENABL
     68	000102				7$:	ERROR	A
     69	000110	000207 			10$:	RETURN			;++021                                          ;**NEW**
     70					                                                                                ;**-14
     71
     72
     73		000001 				.END
ENBDS	MACRO M1108  05-DEC-77 23:17  PAGE 4-2
SYMBOL TABLE

AM.DEC= 000040   	CH.LP = 000050   	CSTACC= 000020   	GSDT06= 003000   	RLDT10= 000010
AM.DEF= 000010   	CH.MUL= 000052   	CSTALO= 000004   	ILVL  = 000004   	RLDT11= 000011
AM.IMM= 000027   	CH.PCT= 000045   	CSTFLG= 000050   	LBLFLG= 000002   	RLDT15= 000015
AM.INC= 000020   	CH.QM = 000077   	CSTGBL= 000100   	LET.A = 000101   	RLDT16= 000016
AM.NDX= 000060   	CH.QTM= 000042   	CSTMEM= 000001   	LET.B = 000102   	RLDT17= 000017
AM.PC = 000007   	CH.RAB= 000076   	CSTREL= 000040   	LET.C = 000103   	RSX11M= 000000
AM.REL= 000067   	CH.RP = 000051   	CSTTYP= 000200   	LET.D = 000104   	R$$11M= 000000
ASTFLG= 000114   	CH.SMC= 000073   	DEFFLG= 000010   	LET.E = 000105   	SCANW = ****** GX
BLKT01= 000001   	CH.SUB= 000055   	DFGFLG= 000020   	LET.F = 000106   	SPACE = 000040
BLKT02= 000002   	CH.UAR= 000136   	DIG.0 = 000060   	LET.G = 000107   	SYMBOL= ****** GX
BLKT03= 000003   	CH.XCL= 000047   	DIG.9 = 000071   	LET.O = 000117   	TAB   = 000011
BLKT04= 000004   	CPXADD= 000001   	EDMASK= ****** GX	LET.Z = 000132   	VT    = 000013
BLKT05= 000005   	CPXAND= 000005   	EDMCSI= ****** GX	LF    = 000012   	XBSRCH= 000000
BLKT06= 000006   	CPXCOM= 000011   	EDTROL= ****** GX	LST.KB= 000001   	XCREF = 000000
CH.ADD= 000053   	CPXCON= 000020   	ENABL   000000RG    002	LST.LP= 000002   	XEDABS= 000000
CH.AND= 000046   	CPXDIV= 000004   	ERRBTS= ****** GX	MDFFLG= 000004   	XEDCDR= 000000
CH.BSL= 000134   	CPXFLG= 000200   	ERR.A = ****** GX	PSTFLG= 000050   	XEDFPT= 000000
CH.COL= 000072   	CPXGLB= 000016   	EXMFLG= ****** GX	REGFLG= 000001   	XEDLC = 000000
CH.COM= 000054   	CPXIOR= 000006   	FF    = 000014   	RELFLG= 000040   	XEDPIC= 000000
CH.DIV= 000057   	CPXMUL= 000003   	GLBFLG= 000100   	RLDT00= 000000   	XEDPNC= 000000
CH.DOL= 000044   	CPXNEG= 000010   	GSARG = ****** GX	RLDT01= 000001   	XFCSQN= 000000
CH.DOT= 000056   	CPXOPC= 000010   	GSDT00= 000000   	RLDT02= 000002   	XFLTG = 000000
CH.EQU= 000075   	CPXREL= 000017   	GSDT01= 000400   	RLDT03= 000003   	XOPEXP= 000000
CH.HSH= 000043   	CPXSDS= 000013   	GSDT02= 001000   	RLDT04= 000004   	XSUBD = 000000
CH.IND= 000100   	CPXSTO= 000012   	GSDT03= 001400   	RLDT05= 000005   	XZERR = 000000
CH.IOR= 000041   	CPXSUB= 000002   	GSDT04= 002000   	RLDT06= 000006   	X45   = 000000
CH.LAB= 000074   	CR    = 000015   	GSDT05= 002400   	RLDT07= 000007

. ABS.	000000	   000
      	000000	   001
PUREI 	000112	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2536 WORDS  ( 10 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:17
[45,10]ENBDS,[45,20]ENBDS/-SP=[45,30]RSXPAR,GENMC,FLGDF,ENBDS
ENDLN	MACRO M1108  05-DEC-77 23:18  PAGE 6


      1						.TITLE	ENDLN
      2						.IDENT	/X06.02/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION X06.02                                                                ;**NEW**
     23					;                                                                               ;**-2
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 9-FEB-73
     29					;	C.A. D'ELIA	22-SEP-73	001
     30					;	C.A. D'ELIA	28-JAN-74	012
     31					;	C.A. D'ELIA	07-APR-74	015
     32					;	H.A. NICHOLS	18-JUN-74	017
     33					;	C.A. D'ELIA	01-AUG-74	017
     34					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     35					;	C.A. D'ELIA	01-NOV-75	022	(CREF)                          ;**NEW**
     36					;
     37					;+
     38					; **-ENDLIN-END OF LINE PROCESSOR
     39					;-
     40
     41	000000					PURE	PUREI,I		;++017
     42	000000				ENDLIN::SAVREG			;SAVE REGISTERS
     43	000004	005067 	000000G			CLR	$LSPNT		;++021 INIT POINTER TO START OF LIST            ;**NEW**
     44	000010	105765 	000000G			TSTB	CTTBL(R5)	;EOL OR SEMI-COLON?                             ;**-1
     45	000014	003403 				BLE	1$		;  YES
     46	000016					ERROR	Q
     47	000024				1$:	.IF NDF	XEDCDR
     48						MOVB	CDRSAV,LINBUF+72.	;REPLACE BORROWED CHAR
     49						.ENDC
     50	000024	016746 	000000G			MOV	PASS,-(SP)	;PASS 1?
     51	000030	001471 				BEQ	9$		;  YES
     52	000032	016716 	000000G			MOV	LSTDEV,(SP)	;INIT LISTING FLAG
     53	000036	005767 	000000'			TST	ERRBTS		;ANY ERRORS?
     54	000042	001055 				BNE	7$		;  YES, GO DIRECTLY, DO NOT COLLECT, ETC.
     55	000044	105716 				TSTB	(SP)		;ANY LISTING DEVICE?
     56	000046	001462 				BEQ	9$		;  NO
     57	000050	032767 	000000G	000000G		BIT	#LC.LD,LCFLAG	;LISTING DIRECTIVE?
ENDLN	MACRO M1108  05-DEC-77 23:18  PAGE 6-1


     58	000056	001045 				BNE	5$		;  YES
     59	000060	005767 	000000G			TST	LCLVL		;TEST OVER-UNDER RIDE
     60	000064	002442 				BLT	5$		;IF <0, LIST ONLY IF ERRORS
     61	000066	003044 				BGT	8$		;IF >0, LIST UNCONDITIONALLY
     62	000070	032767 	000000G	000000G		BIT	#LC.COM,LCMASK	;COMMENT SUPPRESSION?
     63	000076	001403 				BEQ	2$		;  NO
     64	000100	016767 	000000G	000000G		MOV	CHRPNT,LCENDL	;YES, ASSUME WE'RE SITTING AT COMMENT
     65	000106	032767 	000000G	000000G	2$:	BIT	#LC.SRC,LCMASK	;LINE SUPPRESSION?
     66	000114	001403 				BEQ	3$		;  NO
     67	000116	012767 	000056'	000000G		MOV	#LINBUF,LCENDL	;YES, POINT TO START OF BUFFER
     68	000124				3$:
     69						.IF NDF	XMACRO
     70	000124	005767 	000000C			TST	$LSCNT+CODLST	;++021 IS THERE GENERATED CODE?                 ;**NEW**
     71	000130	001407 				BEQ	4$		;  NO                                           ;**-1
     72	000132	032767 	000000G	000000G		BIT	#LC.MEB,LCMASK	;MACRO BINARY EXPANSION?
     73	000140	001003 				BNE	4$		;  NO
     74	000142	042767 	000000G	000000G		BIC	#LC.ME,LCFLAG	;YES, IGNORE ME FLAG
     75						.ENDC
     76	000150	012701 	000000C		4$:	MOV	#LC.SEQ!LC.LOC!LC.SRC!LC.BIN,R1  ;++012 MASK OF SIG LC BITS
     77	000154	046701 	000000G			BIC	LCMASK,R1	;++012 CLEAR IT VIA CURRENT LIST CTL MASK
     78	000160	001404 				BEQ	5$		;++012 ZERO, LINE WILL BE NULL--SUPPRESS IT
     79	000162	036767 	000000G	000000G		BIT	LCMASK,LCFLAG	;++012 SUPPRESS IT ON OTHER GROUNDS?
     80	000170	001411 				BEQ	9$		;  NO, USE CURRENT FLAGS
     81	000172	005016 			5$:	CLR	(SP)		;YES, CLEAR LISTING MODE
     82	000174	000407 				BR	9$
     83	000176	000316 			7$:	SWAB	(SP)		;ERROR, SET TO ERROR FLAGS
     84	000200	012767 	000056'	000000G	8$:	MOV	#LINBUF,LCBEGL	;LIST ENTIRE LINE
     85	000206	012767 	000262'	000000G		MOV	#LINEND,LCENDL
     86	000214	004767 	000000G		9$:	CALL	PCROLL		;PROCESS ENTRY ON CODE ROLL
     87	000220	111667 	000000G		ENDL10:	MOVB	(SP),LSTREQ	;ANYTHING REQUESTED?
     88	000224	001526 				BEQ	ENDL20		;  NO
     89	000226	105077 	000000G			CLRB	@LCENDL		;SET ASCIZ TERMINATOR
     90	000232	012702 	000004'			MOV	#OCTBUF,R2
     91	000236	012722 	020040 		11$:	MOV	#SPACE*400+SPACE,(R2)+	;BLANK FILL
     92	000242	022702 	000056'			CMP	#LINBUF,R2	;TEST FOR END (BEGINNING OF LINE BUFFER)
     93	000246	001373 				BNE	11$
     94	000250	012702 	000004'			MOV	#OCTBUF,R2	;++012 POINT R2 TO OUTPUT BUFFER
     95	000254	004767 	000312 			CALL	TSTERR		;++012 SET ERROR FLAGS
     96						.IF NDF	XLCSEQ		;++012
     97	000260	012700 	000000G			MOV	#LINNUM,R0	;++012 PNT R0 TO LINE NUMBER (PAIR)
     98	000264	012001 				MOV	(R0)+,R1	;++012 GET LINE # IN R1- PNT R0 TO OLD #
     99	000266	020110 				CMP	R1,(R0)		;++012 DO OLD AND CURRENT #'S MATCH?
    100	000270	001421 				BEQ	20$		;++012 YES, GET NEXT PRINT FIELD
    101	000272	010110 				MOV	R1,(R0)		;++012 NO RESET OLD LINE # TO CURRENT #
    102	000274	032767 	000000G	000000G		BIT	#LC.SEQ,LCMASK	;++012 ARE LINE NUMBERS SUPPRESSED?
    103	000302	001014 				BNE	20$		;++012 YES, GET NEXT PRINT FIELD
    104	000304	010204 				MOV	R2,R4		;++012 SAVE BUFFER POINTER
    105	000306					DNC			;++012 CVT LINE # TO DECIMAL AND STORE
    106	000312	012700 	000013'			MOV	#OCTBUF+7,R0	;++012 PNT R0 TO END OF SEQ FIELD
    107	000316	114240 			15$:	MOVB	-(R2),-(R0)	;++012 RIGHT ADJUST THE SEQUENCE NUMBER
    108	000320	112712 	000040 			MOVB	#SPACE,(R2)	;++012 REPLACE DIGIT WITH BLANK
    109	000324	020204 				CMP	R2,R4		;++012 CONTINUE FOR THE ENTIRE ...
    110	000326	101373 				BHI	15$		;++012 ... SEQUENCE NUMBER
    111	000330	012702 	000013'			MOV	#OCTBUF+7,R2	;++012 NOW UPDATE BUFFER POINTER
    112						.ENDC			;++012
    113	000334	112722 	000011 		20$:	MOVB	#TAB,(R2)+	;++012 INSERT FIELD SEPARATOR
    114	000340	012701 	000000G			MOV	#PF0,R1		;++012 PNT R1 TO LOCATION FIELD DATA
ENDLN	MACRO M1108  05-DEC-77 23:18  PAGE 6-2


    115	000344	032767 	000000G	000000G		BIT	#LC.LOC,LCMASK	;++012 IS LOCN FIELD SUPPRESSED?
    116	000352	001006 				BNE	24$		;++012 YES, TRY NEXT FIELD
    117	000354	005711 				TST	(R1)		;++012 IS LOCN FIELD EMPTY?
    118	000356	001402 				BEQ	22$		;++012 YES, SKIP DATA CONVERSION
    119	000360	004767 	000000G			CALL	SETWRD		;++012 CVT LOCATION AND STORE IN LINE
    120	000364	112722 	000011 		22$:	MOVB	#TAB,(R2)+	;++012 INSERT FIELD SEPARATOR
    121	000370	005011 			24$:	CLR	(R1)		;++012 SET LOCATION FIELD EMPTY
    122	000372	012701 	000000G			MOV	#PF1,R1		;++012 PNT F1 TO BINARY FIELD DATA
    123	000376	032767 	000000G	000000G		BIT	#LC.BIN,LCMASK	;++012 IS BINARY FIELD SUPPRESSED?
    124	000404	001026 				BNE	ENDL19		;++012 YES, GO DIRECTLY TO PRINT
    125						.IF NDF	XLCTTM		;++012
    126	000406	012704 	000001 			MOV	#1,R4		;++012 ASSUME TTMODE (ONE BINARY FIELD)
    127	000412	032767 	000000G	000000G		BIT	#LC.TTM,LCMASK	;++012 ARE WE IN TELETYPE MODE?
    128	000420	001401 				BEQ	30$		;++012 YES, SKIP
    129	000422	122424 				CMPB	(R4)+,(R4)+	;++012 NO, SET TO THREE BINARY FIELDS
    130						.IFTF			;++012
    131	000424	005711 			30$:	TST	(R1)		;++012 IS BINARY FIELD EMPTY?
    132	000426	001402 				BEQ	32$		;++012 YES, SKIP DATA CONVERSION
    133	000430	004767 	000202 			CALL	LINWDB		;++012 CVT BINARY FIELD AND STORE IN LINE
    134	000434	112722 	000011 		32$:	MOVB	#TAB,(R2)+	;++012 INSERT FIELD SEPARATOR
    135	000440	005011 				CLR	(R1)		;++012 SET BINARY FIELD EMPTY
    136						.IFT			;++012
    137	000442	005304 				DEC	R4		;++012 DECR BINARY FIELD COUNT
    138	000444	001406 				BEQ	ENDL19		;++012 WHEN ZERO PRINT THE LINE
    139	000446	005767 	000000G			TST	$LSFLG		;++021 IS ANY GENERATED CODE LEFT?              ;**NEW**
    140	000452	001770 				BEQ	32$		;++012 NO, GENERATE NULL FIELD                  ;**-1
    141	000454	004767 	000000G			CALL	PCROLL		;++012 YES, GET NEXT ENTRY IN CODE ROLL
    142	000460	000761 				BR	30$		;++012 REPEAT FORMAT PROCESS
    143						.ENDC			;++012
    144	000462	016701 	000000G		ENDL19:	MOV	LCBEGL,R1	;POINT TO START OF LISTING LINE
    145	000466					MOVBYT			;MOVE OVER
    146	000472					PUTLIN	#OCTBUF		;TEST FOR HEADER AND LIST
    147	000502				ENDL20:
    148	000502	105077 	000000G			CLRB	@LCBEGL		;DON'T DUPE LINE
    149						.IF NDF	XLCTTM
    150	000506	005767 	000000G			TST	$LSFLG		;++021 IS ANY GENERATED CODE LEFT?              ;**NEW**
    151	000512	001410 				BEQ	ENDL30		;  YES, DON'T LOOP                              ;**-1
    152						.ENDC
    153	000514	004767 	000000G			CALL	PCROLL
    154	000520	001405 				BEQ	ENDL30		;EXIT IF EMPTY
    155	000522	032767 	000000C	000000G		BIT	#LC.BIN!LC.BEX,LCMASK  ;++012 SUPPRESS ADDITIONAL BINARY?
    156	000530	001364 				BNE	ENDL20		;++012 YES
    157	000532	000632 				BR	ENDL10		;++012 NO, FORMAT FOR PRINTING
    158	000534	005726 			ENDL30:	TST	(SP)+		;PRUNE LISTING FLAG
    159	000536					ZAP	CODLST		;++021 EMPTY GENERATED CODE LIST                ;**NEW**
    160	000546	004767 	000000G			CALL	ZAPCPX		;++001 CLEAR CPXROL & INIT COMPLEX STR LENGTH   ;**-1
    161	000552	016700 	000000G			MOV	CLCLOC,R0
    162						.IF DF	YPHASE
    163						SUB	PHAOFF,R0
    164						.ENDC
    165	000556	020067 	000000G			CMP	R0,CLCMAX	;NEW HIGH FOR SECTOR?
    166	000562	101402 				BLOS	31$		;  NO
    167	000564	010067 	000000G			MOV	R0,CLCMAX	;YES, SET IT
    168	000570	000207 			31$:	RETURN
    169
    170
    171	000572	016700 	000000'		TSTERR:	MOV	ERRBTS,R0	;ANY ERRORS?
ENDLN	MACRO M1108  05-DEC-77 23:18  PAGE 6-3


    172	000576	001416 				BEQ	TSTER9		;  NO
    173	000600	042700 	000000G			BIC	#ERR.,R0	;YES, ".PRINT"?
    174	000604	001402 				BEQ	4$		;  YES
    175	000606	005267 	000000'			INC	ERRCNT		;BUMP ERROR COUNT
    176	000612	012701 	177777G		4$:	MOV	#ERRMNE-1,R1
    177	000616	105721 			1$:	TSTB	(R1)+		;MOVE CHAR PNTR AND CLEAR CARRY
    178	000620	006067 	000000'			ROR	ERRBTS		;ROTATE ERROR BITS
    179	000624	103002 				BCC	2$
    180	000626	111122 				MOVB	(R1),(R2)+
    181	000630	000772 				BR	1$                                                              ;**-10
    182	000632	001371 			2$:	BNE	1$
    183	000634	000207 			TSTER9:	RETURN
    184
    185	000636	004767 	000000G		LINWDB:	CALL	SETWDB		;++001 LIST WORD OR BYTE
    186	000642	032711 	000040 			BIT	#RELFLG,(R1)	;++017 IS RELOCATION FLAG SET?
    187	000646	001402 				BEQ	10$		;++017 NO, TRY NEXT TEST
    188	000650	112712 	000047 			MOVB	#'',(R2)	;++001 INDICATE RELOCATION WITH APOSTROPHE
    189	000654	032711 	000100 		10$:	BIT	#GLBFLG,(R1)	;++017 IS GLOBAL REFERENCE FLAG SET?
    190	000660	001402 				BEQ	1$		;++001 NO, NEXT TEST
    191	000662	112712 	000107 			MOVB	#'G,(R2)	;++001 INDICATE GLOBAL WITH LETTER 'G'.
    192	000666	032711 	000200 		1$:	BIT	#CPXFLG,(R1)	;++001 COMPLEX RELOCATION?
    193	000672	001402 				BEQ	2$		;++001 NO, LEAVE
    194	000674	112712 	000103 			MOVB	#'C,(R2)	;++001 INDICATE COMPLEX WITH LETTER 'C'.
    195	000700	005202 			2$:	INC	R2		;++012 INCREMENT LINE BUFFER POINTER
    196	000702	000207 				RETURN			;++012
    197	000000					.PSECT	IMPLIN,D,GBL,RW	;++017
    198	000000				ERRBTS::.BLKW	1		;ERROR BITS
    199
    200	000000					.PSECT	IMPURE,D,RW	;++017
    201						.IF NDF	XEDCDR
    202					CDRSAV::.BLKW	1		;SAVED CHARACTER FROM CARD FORMAT
    203						.ENDC
    204	000000				ERRCNT::.BLKW	1		;ERROR COUNTER
    205
    206
    207						.BLKW	1		;++015 BYTE COUNT FOR LISTING CHANNEL
    208	000004				LSTBUF::			;++015 REF LABEL
    209
    210	000004				OCTBUF:	.BLKW	20.		;++015 BUFFER FOR 40. CHARS OF LINE INFO
    211
    212						.BLKW	1		;
    213	000056				LINBUF::.BLKW	LINLEN/2	;
    214
    215	000262				LINEND::.BLKW	1		;
    216
    217
    218		000001 				.END
ENDLN	MACRO M1108  05-DEC-77 23:18  PAGE 6-4
SYMBOL TABLE

AM.DEC= 000040   	CH.XCL= 000047   	ERRBTS  000000RG    003	LF    = 000012   	RLDT16= 000016
AM.DEF= 000010   	CLCLOC= ****** GX	ERRCNT  000000RG    004	LINBUF  000056RG    004	RLDT17= 000017
AM.IMM= 000027   	CLCMAX= ****** GX	ERRMNE= ****** GX	LINEND  000262RG    004	RSX11M= 000000
AM.INC= 000020   	CMOCHN= 000000   	ERR.  = ****** GX	LINLEN= 000204   	R$$11M= 000000
AM.NDX= 000060   	CODLST= ****** GX	ERR.Q = ****** GX	LINNUM= ****** GX	SAVREG= ****** GX
AM.PC = 000007   	CPL   = 000120   	FF    = 000014   	LINWDB  000636R     002	SETWDB= ****** GX
AM.REL= 000067   	CPXADD= 000001   	GLBFLG= 000100   	LPP   = 000074   	SETWRD= ****** GX
ASTFLG= 000114   	CPXAND= 000005   	GSDT00= 000000   	LSTBUF  000004RG    004	SMLCHN= 000012
BINCHN= 000006   	CPXCOM= 000011   	GSDT01= 000400   	LSTCHN= 000004   	SMLLEN= 000120
BLKT01= 000001   	CPXCON= 000020   	GSDT02= 001000   	LSTDEV= ****** GX	SPACE = 000040
BLKT02= 000002   	CPXDIV= 000004   	GSDT03= 001400   	LSTLEN= 000204   	SRCCHN= 000002
BLKT03= 000003   	CPXFLG= 000200   	GSDT04= 002000   	LSTREQ= ****** GX	SRCLEN= 000204
BLKT04= 000004   	CPXGLB= 000016   	GSDT05= 002400   	LST.KB= 000001   	STLLEN= 000100
BLKT05= 000005   	CPXIOR= 000006   	GSDT06= 003000   	LST.LP= 000002   	TAB   = 000011
BLKT06= 000006   	CPXMUL= 000003   	ILVL  = 000004   	MAXCHN= 000014   	TMPCNT= 000014
BPMB  = 000020   	CPXNEG= 000010   	LBLFLG= 000002   	MDFFLG= 000004   	TSTERR  000572R     002
CHRPNT= ****** GX	CPXOPC= 000010   	LCBEGL= ****** GX	MOVBYT= ****** GX	TSTER9  000634R     002
CH.ADD= 000053   	CPXREL= 000017   	LCENDL= ****** GX	OBJLEN= 000052   	TTLLEN= 000040
CH.AND= 000046   	CPXSDS= 000013   	LCFLAG= ****** GX	OCTBUF  000004R     004	VT    = 000013
CH.BSL= 000134   	CPXSTO= 000012   	LCLVL = ****** GX	PASS  = ****** GX	XBSRCH= 000000
CH.COL= 000072   	CPXSUB= 000002   	LCMASK= ****** GX	PCROLL= ****** GX	XCREF = 000000
CH.COM= 000054   	CR    = 000015   	LC.BEX= ****** GX	PF0   = ****** GX	XEDABS= 000000
CH.DIV= 000057   	CSTACC= 000020   	LC.BIN= ****** GX	PF1   = ****** GX	XEDCDR= 000000
CH.DOL= 000044   	CSTALO= 000004   	LC.COM= ****** GX	PSTFLG= 000050   	XEDCRF= 000000
CH.DOT= 000056   	CSTFLG= 000050   	LC.LD = ****** GX	PUTLIN= ****** GX	XEDFPT= 000000
CH.EQU= 000075   	CSTGBL= 000100   	LC.LOC= ****** GX	REGFLG= 000001   	XEDLC = 000000
CH.HSH= 000043   	CSTMEM= 000001   	LC.ME = ****** GX	RELCHN= 000010   	XEDPIC= 000000
CH.IND= 000100   	CSTREL= 000040   	LC.MEB= ****** GX	RELFLG= 000040   	XEDPNC= 000000
CH.IOR= 000041   	CSTTYP= 000200   	LC.SEQ= ****** GX	RLDLEN= 000052   	XFCSQN= 000000
CH.LAB= 000074   	CTTBL = ****** GX	LC.SRC= ****** GX	RLDT00= 000000   	XFLTG = 000000
CH.LP = 000050   	DEFFLG= 000010   	LC.TTM= ****** GX	RLDT01= 000001   	XOPEXP= 000000
CH.MUL= 000052   	DFGFLG= 000020   	LET.A = 000101   	RLDT02= 000002   	XSUBD = 000000
CH.PCT= 000045   	DIG.0 = 000060   	LET.B = 000102   	RLDT03= 000003   	XZERR = 000000
CH.QM = 000077   	DIG.9 = 000071   	LET.C = 000103   	RLDT04= 000004   	X45   = 000000
CH.QTM= 000042   	DNC   = ****** GX	LET.D = 000104   	RLDT05= 000005   	YQCMO = 000000
CH.RAB= 000076   	ENDLIN  000000RG    002	LET.E = 000105   	RLDT06= 000006   	ZAP   = ****** GX
CH.RP = 000051   	ENDL10  000220R     002	LET.F = 000106   	RLDT07= 000007   	ZAPCPX= ****** GX
CH.SMC= 000073   	ENDL19  000462R     002	LET.G = 000107   	RLDT10= 000010   	$LSCNT= ****** GX
CH.SUB= 000055   	ENDL20  000502R     002	LET.O = 000117   	RLDT11= 000011   	$LSFLG= ****** GX
CH.UAR= 000136   	ENDL30  000534R     002	LET.Z = 000132   	RLDT15= 000015   	$LSPNT= ****** GX

. ABS.	000000	   000
      	000000	   001
PUREI 	000704	   002
IMPLIN	000002	   003
IMPURE	000264	   004
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  4408 WORDS  ( 18 PAGES)
DYNAMIC MEMORY:  5216 WORDS  ( 20 PAGES)
ELAPSED TIME:  00:00:34
[45,10]ENDLN,[45,20]ENDLN/-SP=[45,30]RSXPAR,MPARAM,MCIOCH,GENMC,FLGDF,ENDLN
ENDPS	MACRO M1108  05-DEC-77 23:18  PAGE 5


      1						.TITLE	ENDPS
      2						.IDENT	/X07.03/							;**NEW**
      3															;**-1
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A  SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE  INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND  SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X07.03								;**NEW**
     24					;										;**-1
     25					; B. BOWERING
     26					;
     27					;	MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 6-FEB-73
     30					;	C.A. D'ELIA	28-JAN-74	012
     31					;	C.A. D'ELIA	22-MAR-74	014
     32					;	H.A. NICHOLS	18-JUN-74	017
     33					;	C.A. D'ELIA	31-DEC-74	018
     34					;	C.A. D'ELIA	20-MAR-75	019
     35					;	C.A. D'ELIA	29-JAN-76	021	(VIRT MEMORY)			;**NEW**
     36					;	C.A. D'ELIA	13-APR-76	024	(MISC-FIX SYMBOLS/COL)		;**NEW**
     37					;
     38					;+
     39					; **-ENDP1-END PASS 1
     40					;-
     41
     42					;++012
     43					;
     44					; THE FOLLOWING LOCAL OFFSETS ARE DEFINED FOR USE IN GENERATING A
     45					; SYMBOL TABLE LISTING BY COLUMNS (PAGE ORIENTED).  TEMPORARY DATA
     46					; ARE PLACED ON THE STACK AND ARE REFERENCED BY USING THE
     47					; FOLLOWING SYMBOLS.
     48					;
     49					;--012
     50
     51		000000 			SP.SYM=0			;++021 NUMBER OF SYMBOLS REMAINING		;**NEW**
     52		000002 			SP.LHD=SP.SYM+2			;++021 ADDR OF NEXT COLUMN LISTHEAD		;**NEW**
     53		000004 			SP.PNT=SP.LHD+2			;++021 LIST PTR FOR NEXT PAGE			;**NEW**
     54		000006 			SP.SPP=SP.PNT+2			;++021 MAX SYMBOLS PER PAGE			;**NEW**
     55		000010 			SP.COL=SP.SPP+2			;++021 COLUMNS PER PAGE				;**NEW**
     56		000012 			SP.POP=SP.COL+2			;++021 BYTES OF STACK USED FOR ABOVE		;**NEW**
     57					 										;**NEW**
ENDPS	MACRO M1108  05-DEC-77 23:18  PAGE 5-1


     58					 										;**NEW**
     59	000000					.PSECT	MIXED,D		;++024						;**NEW**
     60					 										;**NEW**
     61	000000				REM:	.BLKW	1		;++024 SYMBOLS/COLUMN REMAINDER			;**NEW**
     62					 										;**NEW**
     63					 										;**NEW**
     64															;**-5
     65	000002					PURE	PUREI,I		;++017
     66	000000				ENDP1::				;REF LABEL
     67						.IF NDF	XREL
     68	000000	004767 	000000G			CALL	SETMAX		;SET MAX LOCATION
     69						.IFTF
     70	000004	004767 	000472 			CALL	LNKSYM		;++021 LINK SYMTBL SUB-LISTS INTO ONE		;**NEW**
     71	000010	105767 	000006G			TSTB	IOFTBL+BINCHN	;ANY OBJ FILE?
     72	000014	001523 				BEQ	ENDP1B		;  NO
     73	000016	004767 	000000G			CALL	OBJINI		;INIT OUTPUT					;**-7
     74						.IFT
     75	000022	012777 	000001 	000010G		MOV	#BLKT01,@BUFTBL+RELCHN	;SET BLOCK TYPE 1
     76	000030	012701 	000000G			MOV	#PRGTTL,R1	;SET "FROM" INDEX
     77	000034	004767 	000426 			CALL	GSDDMP		;OUTPUT GSD BLOCK
     78						.IF NDF	DOSV4
     79	000040	012701 	000000G			MOV	#PRGIDN,R1	;POINT TO SUB-TTL BUFFER
     80	000044	005761 	000004 			TST	4(R1)		;SET?
     81	000050	001402 				BEQ	9$		;  NO
     82	000052	004767 	000410 			CALL	GSDDMP		;YES, STUFF IT
     83						.ENDC
     84	000056	005046 			9$:	CLR	-(SP)		;INIT FOR SECTOR SCAN
     85	000060	012667 	000000G		10$:	MOV	(SP)+,$LSPNT	;++021 SET LIST POINTER				;**NEW**
     86	000064					NEXT	SECLST		;++021 FETCH NEXT SECTOR			;**NEW**
     87	000074	001447 				BEQ	ENDP1A		;BRANCH IF THROUGH				;**-2
     88	000076	016746 	000000G			MOV	$LSPNT,-(SP)	;++021 SAVE LIST ROINTER			;**NEW**
     89	000102	012701 	000000G			MOV	#SECTOR,R1	;GET ADDRESS OF SECTOR				;**-1
     90	000106	005005 				CLR	R5		;CLEAR R5
     91	000110	151105 				BISB	(R1),R5		;PICK UP SECTION NUMBER
     92	000112	112721 	000005 			MOVB	#GSDT05/400,(R1)+;SET GSD TYPE
     93	000116	005021 				CLR	(R1)+		;ASSUME ABS SECTION
     94	000120	132767 	000040 	000000G		BITB	#CSTREL,MODE	;ABS SECTION?
     95	000126	001401 				BEQ	11$		;  OOPS!
     96	000130	011141 				MOV	(R1),-(R1)	;  REL, SET MAX
     97	000132	005067 	000000G		11$:	CLR	$LSPNT		;++021 INIT POINTER TO START OF LIST		;**NEW**
     98	000136	012701 	000000G		12$:	MOV	#SYMBOL,R1							;**-1
     99	000142	004767 	000320 			CALL	GSDDMP		;OUTPUT THIS BLOCK
    100	000146				13$:	NEXT	SYMLST		;++021 FETCH NEXT SYMBOL			;**NEW**
    101	000156	001740 				BEQ	10$		;  FINISHED WITH THIS GUY			;**-1
    102	000160	032767 	000100 	000000G		BIT	#GLBFLG,MODE	;GLOBAL?
    103	000166	001767 				BEQ	13$		;  NO
    104	000170	126705 	000000G			CMPB	SECTOR,R5	;YES, PROPER SECTOR?
    105	000174	001364 				BNE	13$		;  NO
    106	000176	042767 	177627 	000000G		BIC	#^C<DEFFLG!RELFLG!GLBFLG>,MODE	;CLEAR MOST
    107	000204	052767 	002000 	000000G		BIS	#GSDT04,MODE	;SET TYPE 4
    108	000212	000751 				BR	12$		;OUTPUT IT
    109	000214	042767 	177737 	000004G	ENDP1A:	BIC	#^C<RELFLG>,ENDVEC+4	;CLEAR ALL BUT REL FLAG
    110	000222	052767 	001410 	000004G		BIS	#GSDT03+DEFFLG,ENDVEC+4
    111	000230	012701 	000000G			MOV	#ENDVEC,R1
    112	000234	004767 	000226 			CALL	GSDDMP		;OUTPUT END BLOCK
    113	000240	004767 	000000G			CALL	OBJDMP		;DUMP IT
    114	000244	012777 	000002 	000010G		MOV	#BLKT02,@BUFTBL+RELCHN	;SET "END OF GSD"
ENDPS	MACRO M1108  05-DEC-77 23:18  PAGE 5-2


    115	000252	004767 	000000G			CALL	RLDDMP
    116	000256	012777 	000004 	000010G		MOV	#BLKT04,@BUFTBL+RELCHN	;INIT FOR TEXT BLOCKS
    117						.IFTF
    118	000264				ENDP1B:
    119						.IFT
    120	000264	005067 	000000G			CLR	$LSPNT		;++021 INIT POINTER TO START OF LIST		;**NEW**
    121	000270				31$:	NEXT	SECLST		;++021 FETCH NEXT SECTOR			;**NEW**
    122	000300	001405 				BEQ	32$		;  BRANCH IF FINISHED				;**-2
    123	000302	005067 	000000G			CLR	VALUE		;FOUND, RESET PC
    124	000306					INSERT			;PUT BACK IN TABLE
    125	000312	000766 				BR	31$
    126	000314				32$:
    127						.IFTF
    128	000314	016701 	000000C			MOV	$LSCNT+SYMLST,R1  ;++021 GET SYMBOL TABLE ENTRY COUNT		;**NEW**
    129	000320	001457 				BEQ	500$		;++021 IF EQ IT IS EMPTY			;**NEW**
    130	000322	016705 	000000G			MOV	$SYPAR,R5	;++021 GET ADDR OF PARTITION TABLE		;**NEW**
    131	000326	016704 	000000G			MOV	$SYLHD,R4	;++021 GET ADDR OF SUB-LIST HEAD TABLE		;**NEW**
    132	000332	016724 	000000G			MOV	BASSYM,(R4)+	;++021 STORE PTR TO 1ST SUB-LIST ENTRY		;**NEW**
    133	000336	016703 	000000G			MOV	$NMPAR,R3	;++021 GET NUMBER OF SYMTBL PARTITIONS		;**NEW**
    134	000342	005000 				CLR	R0		;++021 PREPARE TO DIVIDE			;**NEW**
    135	000344					DIV	R3,R0		;++021 CALC # OF ENTRIES PER SUB-LIST		;**NEW**
    136	000350	010046 				MOV	R0,-(SP)	;++021 SAVE RESULT ON STACK			;**NEW**
    137	000352	005701 				TST	R1		;++021 TEST FOR A REMAINDER			;**NEW**
    138	000354	001401 				BEQ	100$		;++021 IF EQ NONE				;**NEW**
    139	000356	005216 				INC	(SP)		;++021 ELSE, INCREMENT RESULT			;**NEW**
    140	000360	021627 	000001 		100$:	CMP	(SP),#1		;++021 IF 0 OR 1 SYMBOLS PER SUB-LIST,		;**NEW**
    141	000364	003432 				BLE	400$		;++021 THEN USE ONLY ONE SUB-LIST		;**NEW**
    142	000366	005003 				CLR	R3		;++021 ELSE, INIT SUB-LIST ENTRY COUNTER	;**NEW**
    143	000370	012700 	000000G			MOV	#BASSYM,R0	;++021 PNT TO VIRT LOCN OF 1ST SYMBOL		;**NEW**
    144	000374	011001 			300$:	MOV	(R0),R1		;++021 GET VIRT LOCN OF NEXT ENTRY		;**NEW**
    145	000376	001425 			325$:	BEQ	400$		;++021 IF EQ AT END OF SYMBOL TABLE		;**NEW**
    146	000400	004767 	000000G			CALL	$CVRL		;++021 ELSE, GET ENTRY'S REAL ADDR IN R0	;**NEW**
    147	000404	005203 				INC	R3		;++021 INCREMENT COUNTER			;**NEW**
    148	000406	020316 				CMP	R3,(SP)		;++021 IS THIS LAST SUB-LIST ENTRY?		;**NEW**
    149	000410	002771 				BLT	300$		;++021 IF LT NO					;**NEW**
    150	000412	003006 				BGT	350$		;++021 IF GT START NEXT SUB-LIST		;**NEW**
    151	000414	011014 				MOV	(R0),(R4)	;++021 ELSE, SAVE PTR FOR NEXT SUB-LIST		;**NEW**
    152	000416	005010 				CLR	(R0)		;++021 REMOVE SUB-LIST FROM LIST		;**NEW**
    153	000420	004767 	000000G			CALL	$WRMPG		;++021 MARK PAGE DIRTY				;**NEW**
    154	000424	012401 				MOV	(R4)+,R1	;++021 GET VIRT LOCN OF NEXT ENTRY		;**NEW**
    155	000426	000763 				BR	325$		;++021 PREPARE TO CREATE NEXT SUB-LIST		;**NEW**
    156	000430	016025 	000002 		350$:	MOV	2(R0),(R5)+	;++021 STORE TAG OF NEXT SUB-LIST		;**NEW**
    157	000434	016025 	000004 			MOV	4(R0),(R5)+	;++021						;**NEW**
    158	000440	005710 				TST	(R0)		;++021 IS THIS THE END OF THE TABLE?		;**NEW**
    159	000442	001403 				BEQ	400$		;++021 IF EQ YES				;**NEW**
    160	000444	012703 	000001 			MOV	#1,R3		;++021 ELSE, INIT SUB-LIST ENTRY COUNTER	;**NEW**
    161	000450	000751 				BR	300$		;++021 CONTINUE TO RESTRUCTURE SUB-LISTS	;**NEW**
    162	000452	005726 			400$:	TST	(SP)+		;++021 CLEAN STACK				;**NEW**
    163	000454	012715 	177777 			MOV	#-1,(R5)	;++021 THIS SUB-LIST HAS REST OF SYMBOLS	;**NEW**
    164	000460				500$:				;++021						;**NEW**
    165	000460	005267 	000000G			INC	PASS		;SET FOR PASS 2
    166	000464	000207 			ENDRTN:	RETURN			;++012
    167						.IFT
    168	000466				GSDDMP:				;DUMP A GSD BLOCK
    169	000466	012700 	000010 			MOV	#4*2,R0		;FOUR WORDS PER GSD ENTRY
    170	000472	004767 	000000G			CALL	TSTRLD		;ROOM?
    171	000476	000167 	000000G			JMP	XMIT4		;WE HAVE NOW.  STUFF ENTRY
ENDPS	MACRO M1108  05-DEC-77 23:18  PAGE 5-3


    172
    173						.ENDC
    174					 										;**NEW**
    175	000502	005767 	000000C		LNKSYM:	TST	$LSCNT+SYMLST	;++021 IS THE SYMBOL TABLE EMPTY?		;**NEW**
    176	000506	001433 				BEQ	130$		;++021 IF EQ YES--DON'T PROCESS			;**NEW**
    177	000510	016705 	000000G			MOV	$SYLHD,R5	;++021 GET ADDR OF SUB-LIST HEAD TABLE		;**NEW**
    178	000514	016704 	000000G			MOV	$NMPAR,R4	;++021 GET NUMBER OF SYMTBL PARTITIONS		;**NEW**
    179	000520	006304 				ASL	R4		;++021 CONVERT TO SINGLE-WORD TABLE SIZE	;**NEW**
    180	000522	060504 				ADD	R5,R4		;++021 CALCULATE THE ADDR OF TBL END		;**NEW**
    181	000524	012700 	000000G			MOV	#BASSYM,R0	;++021 POINT TO MAIN TABLE LIST HEAD		;**NEW**
    182	000530	012510 			100$:	MOV	(R5)+,(R0)	;++021 STORE VIRT LOCN OF FIRST ENTRY		;**NEW**
    183	000532	001776 				BEQ	100$		;++021 IF EQ SUB-LIST IS EMPTY			;**NEW**
    184	000534	005065 	177776 			CLR	-2(R5)		;++021 ELSE, CLEAR SUB-LIST HEAD		;**NEW**
    185	000540	005710 			110$:	TST	(R0)		;++021 CHECK VIRT LOCN OF NEXT ENTRY		;**NEW**
    186	000542	001404 				BEQ	120$		;++021 IF EQ END OF THE SUB-LIST		;**NEW**
    187	000544	011001 			115$:	MOV	(R0),R1		;++021 ELSE, PUT IT IN R1			;**NEW**
    188	000546	004767 	000000G			CALL	$CVRL		;++021 GET ITS REAL ADDR IN R0			;**NEW**
    189	000552	000772 				BR	110$		;++021 SCAN TO END OF SUB-LIST			;**NEW**
    190	000554	020504 			120$:	CMP	R5,R4		;++021 ARE WE AT END OF LIST HEAD TABLE?	;**NEW**
    191	000556	001407 				BEQ	130$		;++021 IF EQ YES				;**NEW**
    192	000560	012510 				MOV	(R5)+,(R0)	;++021 ELSE, LINK SUB-LIST TO PREVIOUS		;**NEW**
    193	000562	001774 				BEQ	120$		;++021 IF EQ THIS SUB-LIST IS EMPTY		;**NEW**
    194	000564	005065 	177776 			CLR	-2(R5)		;++021 ELSE, CLEAR THE SUB-LIST HEAD		;**NEW**
    195	000570	004767 	000000G			CALL	$WRMPG		;++021 MARK PAGE DIRTY				;**NEW**
    196	000574	000763 				BR	115$		;++021 REPEAT TO FORM A SINGLE LIST		;**NEW**
    197	000576	010167 	000000C		130$:	MOV	R1,$LSTOP+SYMLST  ;++021 SAVE VIRT LOCN OF LAST ENTRY		;**NEW**
    198	000602	000207 				RETURN			;++021						;**NEW**
    199
    200					;+
    201					; **-ENDP2-END PASS 2
    202					;-
    203
    204	000604				ENDP2::				;REF LABEL
    205	000604	004767 	000000G			CALL	CLOSRC		;++014 CLOSE THE SOURCE FILE
    206						.IF NDF	XREL
    207	000610	004767 	000000G			CALL	SETMAX		;SET MAX LOCATION
    208						.IFTF
    209	000614	005767 	000000G			TST	OBJPNT		;ANY OBJECT OUTPUT?
    210	000620	001407 				BEQ	1$		;  NO
    211	000622	004767 	000000G			CALL	OBJDMP		;YES, DUMP IT
    212						.IFT
    213	000626	012777 	000006 	000010G		MOV	#BLKT06,@BUFTBL+RELCHN	;SET END
    214	000634	004767 	000000G			CALL	RLDDMP		;DUMP IT
    215						.ENDC
    216						.IF NDF	XEDABS
    217						BIT	#ED.ABS,EDMASK	;ABS OUTPUT?
    218						BNE	1$		;  NO
    219						MOV	OBJPNT,R0
    220						MOV	ENDVEC+6,(R0)+	;SET END VECTOR
    221						MOV	R0,OBJPNT
    222						CALL	OBJDMP
    223						.ENDC
    224	000640	105767 	000000G		1$:	TSTB	LSTDEV		;ANY LISTING OUTPUT?
    225	000644	001707 				BEQ	ENDRTN		;++012 NO, BRANCH TO LEAVE
    226	000646	032767 	000000G	000000G		BIT	#LC.SYM,LCMASK	;SYMBOL TABLE SUPPRESSION?
    227	000654	001303 				BNE	ENDRTN		;++012 YES, BRANCH TO LEAVE
    228	000656	012701 	000000'			MOV	#SYMTXT,R1	;++018 GET ADDR OF SYMBOL TABLE TEXT
ENDPS	MACRO M1108  05-DEC-77 23:18  PAGE 5-4


    229	000662	012702 	000000G			MOV	#STLBUF,R2	;++018 AND ADDR OF SUB-TITLE BUFFER
    230	000666					MOVBYT			;++018 SET SYMBOL TABLE SUB-TITLE
    231	000672	005067 	000000G			CLR	LPPCNT		;FORCE NEW PAGE					;**-58
    232	000676	004767 	177600 			CALL	LNKSYM		;++021 LINK SYMTBL SUB-LISTS INTO ONE		;**NEW**
    233	000702	012703 	000003 			MOV	#3,R3		;++012 ASSUME TELETYPE MODE (3 COLUMN LISTING)	;**-2
    234	000706	012702 	000000G			MOV	#LINBUF,R2	;++014 BUF ADDR (IN CASE OF NULL TABLE)
    235						.IF NDF	XLCTTM		;++012
    236	000712	032767 	000000G	000000G		BIT	#LC.TTM,LCMASK	;++012 USING TELETYPE MODE?
    237	000720	001401 				BEQ	20$		;++012 YES, SKIP
    238	000722	122323 				CMPB	(R3)+,(R3)+	;++012 NO, UPDATE TO 5 COLUMN LISTING
    239						.ENDC			;++012
    240	000724	010346 			20$:	MOV	R3,-(SP)	;++012 PUT # COLUMNS ON STACK (SP.COL)
    241	000726	005046 				CLR	-(SP)		;++021 CALCULATE SYMBOLS/PAGE (SP.SPP)		;**NEW**
    242	000730	066716 	000000G		200$:	ADD	LINPPG,(SP)	;++021 ADD IN LINES PER PAGE			;**NEW**
    243	000734	162716 	000003 			SUB	#3,(SP)		;++021 LESS TOP-OF-PAGE HEADING			;**NEW**
    244	000740					SOB	R3,200$		;++021 REPEAT FOR EACH COLUMN			;**NEW**
    245	000744	005046 				CLR	-(SP)		;++021 INIT NEXT PAGE LIST PTR (SP.PNT)		;**NEW**
    246	000746	005046 				CLR	-(SP)		;++021 RESERVE COLUMN LISTHD ADDR (SP.LHD)	;**NEW**
    247	000750	016746 	000000C			MOV	$LSCNT+SYMLST,-(SP)  ;++021 COPY SYMBOL COUNT (SP.SYM)		;**NEW**
    248	000754				22$:				;++021						;**NEW**
    249	000754	016605 	000000 			MOV	SP.SYM(SP),R5	;++012 ASSUME PARTIAL PAGE REMAINING		;**-12
    250	000760	003556 				BLE	ENDP2A		;++012 WHEN NOT POSITIVE, WE'RE DONE
    251	000762	166666 	000006 	000000 		SUB	SP.SPP(SP),SP.SYM(SP)  ;++012 DEDUCT PAGE WORTH OF SYMBOLS
    252	000770	002402 				BLT	24$		;++012 SKIP IF LESS THAN PAGE WAS LEFT
    253	000772	016605 	000006 			MOV	SP.SPP(SP),R5	;++012 ELSE, PRINT A FULL PAGE
    254	000776	010501 			24$:	MOV	R5,R1		;++012 PREPARE TO DIVIDE # SYMBOLS ON ...
    255	001000	005000 				CLR	R0		;++012 ... THIS PAGE BY # OF COLUMNS
    256	001002	016603 	000010 			MOV	SP.COL(SP),R3	;++012 GET # OF COLUMNS DESIRED IN R3
    257	001006					DIV	R3,R0		;++012 CALC # SYMBOLS PER COLUMN
    258	001012	010167 	000000'			MOV	R1,REM		;++024 SAVE REMAINDER				;**NEW**
    259	001016	016702 	000000G			MOV	$SYLHD,R2	;++024 POINT R2 TO COLUMN LISTHEADS		;**NEW**
    260	001022	016722 	000000C		27$:	MOV	$LSTOP+SYMLST,(R2)+  ;++021 INIT LISTHEADS TO END-OF-LIST	;**NEW**
    261	001026					SOB	R3,27$		;++021						;**NEW**
    262	001032	016667 	000004 	000000G		MOV	SP.PNT(SP),$LSPNT  ;++021 INIT LIST PTR FOR THIS PAGE		;**NEW**
    263	001040	010004 				MOV	R0,R4		;++021 COPY SYMBOLS/COLUMN TO R4		;**NEW**
    264	001042	016702 	000000G			MOV	$SYLHD,R2	;++021 POINT R2 TO LISTHEADS AGAIN		;**NEW**
    265	001046	016601 	000010 			MOV	SP.COL(SP),R1	;++021 GET NUMBER OF COLUMNS			;**NEW**
    266	001052	016722 	000000G		270$:	MOV	$LSPNT,(R2)+	;++021 SET COLUMN LISTHEAD			;**NEW**
    267	001056	010403 				MOV	R4,R3		;++021 GET SYMBOLS/COLUMN			;**NEW**
    268	001060				272$:	NEXT	SYMLST		;++021 GET NEXT SYMBOL				;**NEW**
    269	001070	001413 				BEQ	2$		;++021 IF EQ AT END OF LIST			;**NEW**
    270	001072	005303 				DEC	R3		;++024 REDUCE SYMBOL COUNT			;**NEW**
    271	001074	003371 				BGT	272$		;++024 IF GT NOT AT END OF COLUMN YET		;**NEW**
    272	001076	002403 				BLT	274$		;++024 IF LT REMAINDER CHECK MADE		;**NEW**
    273	001100	005367 	000000'			DEC	REM		;++024 DECREMENT REMAINDER			;**NEW**
    274	001104	002365 				BGE	272$		;++024 IF GT ADD SYMBOL TO THIS COLUMN		;**NEW**
    275	001106				274$:	SOB	R1,270$		;++024 REPEAT FOR ALL COLUMNS IN PAGE		;**NEW**
    276	001112	016766 	000000G	000004 		MOV	$LSPNT,SP.PNT(SP)  ;++021 SAVE LIST PTR FOR NEXT PAGE		;**NEW**
    277	001120	012702 	000000G		2$:	MOV	#LINBUF,R2	;POINT TO STORAGE				;**-6
    278	001124	016766 	000000G	000002 		MOV	$SYLHD,SP.LHD(SP)  ;++021 INIT COLUMN LISTHEAD ADDR		;**NEW**
    279	001132	016604 	000010 			MOV	SP.COL(SP),R4	;++012 GET # COLUMNS DESIRED IN LISTING		;**-3
    280	001136	016603 	000002 		3$:	MOV	SP.LHD(SP),R3	;++021 GET COLUMN LISTHEAD ADDR			;**NEW**
    281	001142	012367 	000000G			MOV	(R3)+,$LSPNT	;++021 SET LIST POINTER				;**NEW**
    282	001146					NEXT	SYMLST		;++021 FETCH NEXT SYMBOL			;**NEW**
    283	001156	001454 				BEQ	14$		;++0019 IF EQ WE'RE OFF THE TABLE		;**-1
    284	001160	016763 	000000G	177776 		MOV	$LSPNT,-2(R3)	;++021 UPDATE THE COLUMN LISTHEAD		;**NEW**
    285	001166	010366 	000002 			MOV	R3,SP.LHD(SP)	;++021 AND THE COLUMN LISTHEAD PTR		;**NEW**
ENDPS	MACRO M1108  05-DEC-77 23:18  PAGE 5-5


    286	001172					R50UNP			;UNPACK THE SYMBOL
    287	001176	012703 	000000'			MOV	#ENDP2T,R3
    288	001202	004767 	000214 			CALL	ENDP2C
    289	001206	012701 	000000G			MOV	#MODE,R1	;POINT TO MODE BITS
    290	001212	032711 	000010 			BIT	#DEFFLG,(R1)	;DEFINED?
    291	001216	001403 				BEQ	4$		;  NO
    292	001220	004767 	000000G			CALL	SETWRD
    293	001224	000404 				BR	6$
    294	001226	012701 	000000G		4$:	MOV	#STARS,R1
    295	001232					MOVBYT			;UNDEFINED, SUBSTITUTE ******
    296	001236	004767 	000160 		6$:	CALL	ENDP2C
    297	001242	004767 	000160 			CALL	ENDP2X		;
    298	001246	012701 	000000G			MOV	#SECTOR,R1
    299	001252	122711 	000001 			CMPB	#1,(R1)
    300	001256	002003 				BGE	10$
    301	001260	124141 				CMPB	-(R1),-(R1)
    302	001262	004767 	000000G			CALL	SETBYT
    303	001266	112722 	000011 		10$:	MOVB	#TAB,(R2)+	;SEPARATOR
    304	001272	005305 				DEC	R5		;++012 DECR ENTRY COUNT
    305	001274	001003 				BNE	12$		;++012 SKIP, PAGE NOT COMPLETE
    306	001276	004767 	000100 			CALL	ENDP2B		;++012 PAGE FULL, FORCE LINE OUT
    307	001302	000624 				BR	22$		;++012 SET UP FOR NEXT PAGE
    308	001304				12$:				;++021						;**NEW**
    309	001304					SOB	R4,3$		;++012 CONTINUE FOR FULL LINE OF LISTING	;**-1
    310	001310	004767 	000066 		14$:	CALL	ENDP2B		;++019 OUTPUT LINE
    311	001314	000701 				BR	2$		;NEXT LINE
    312	001316				ENDP2A:
    313	001316	062706 	000012 			ADD	#SP.POP,SP	;++021 CLEAN STACK				;**NEW**
    314						.IF NDF	XREL								;**-1
    315	001322	005067 	000000G			CLR	$LSPNT		;++021 INIT POINTER TO START OF LIST		;**NEW**
    316	001326	004767 	000050 		21$:	CALL	ENDP2B		;OUTPUT LINE					;**-1
    317	001332					NEXT	SECLST		;++021 FETCH NEXT SECTOR			;**NEW**
    318	001342	001426 				BEQ	ENDP2D		;  EXIT IF END OF ROLL				;**-1
    319	001344					R50UNP			;PRINT THE NAME,
    320	001350	112722 	000011 			MOVB	#TAB,(R2)+
    321	001354	012701 	000000G			MOV	#VALUE,R1
    322	001360	004767 	000000G			CALL	SETWRD		;  THE VALUE,
    323	001364	112722 	000011 			MOVB	#TAB,(R2)+
    324	001370	012701 	177776G			MOV	#SECTOR-2,R1
    325	001374	004767 	000000G			CALL	SETBYT		;  AND THE ENTRY NUMBER
    326	001400	000752 				BR	21$
    327						.IFF
    328						RETURN
    329						.ENDC
    330
    331	001402	105012 			ENDP2B:	CLRB	(R2)
    332	001404					PUTLP	#LINBUF
    333	001414	012702 	000000G			MOV	#LINBUF,R2	;RESET TO START OF BUFFER
    334	001420	000207 			ENDP2D:	RETURN
    335	001422	004767 	000000 		ENDP2C:	CALL	ENDP2X
    336	001426	012300 			ENDP2X:	MOV	(R3)+,R0
    337	001430	032367 	000000G			BIT	(R3)+,MODE
    338	001434	001001 				BNE	32$
    339	001436	000300 				SWAB	R0
    340	001440	110022 			32$:	MOVB	R0,(R2)+
    341	001442	000207 				RETURN
    342
ENDPS	MACRO M1108  05-DEC-77 23:18  PAGE 5-6


    343															;**-5
    344	001444					PURE	DPURE,D		;++017
    345	000000	   040 	   075 		ENDP2T:	.ASCII	/ =/
    346	000002	000002 				.WORD	LBLFLG
    347	000004	   045 	   040 			.ASCII	/% /
    348	000006	000001 				.WORD	REGFLG
    349	000010	   122 	   040 			.ASCII	/R /
    350	000012	000040 				.WORD	RELFLG
    351	000014	   107 	   040 			.ASCII	/G /
    352	000016	000100 				.WORD	GLBFLG
    353	000020	   130 	   040 			.ASCII	/X /
    354	000022	000020 				.WORD	DFGFLG
    355
    356	000024					PURE	TXTBYT,D		;++017
    357	000000	   123 	   131 	   115 	SYMTXT:	.ASCIZ	/SYMBOL TABLE/
	000003	   102 	   117 	   114
	000006	   040 	   124 	   101
	000011	   102 	   114 	   105
	000014	   000
    358
    359		000001 				.END
ENDPS	MACRO M1108  05-DEC-77 23:18  PAGE 5-7
SYMBOL TABLE

AM.DEC= 000040   	CH.XCL= 000047   	ENDP2X  001426R     003	MODE  = ****** GX	SP.LHD= 000002
AM.DEF= 000010   	CLOSRC= ****** GX	ENDRTN  000464R     003	MOVBYT= ****** GX	SP.PNT= 000004
AM.IMM= 000027   	CMOCHN= 000000   	ENDVEC= ****** GX	NEXT  = ****** GX	SP.POP= 000012
AM.INC= 000020   	CPXADD= 000001   	FF    = 000014   	OBJDMP= ****** GX	SP.SPP= 000006
AM.NDX= 000060   	CPXAND= 000005   	GLBFLG= 000100   	OBJINI= ****** GX	SP.SYM= 000000
AM.PC = 000007   	CPXCOM= 000011   	GSDDMP  000466R     003	OBJPNT= ****** GX	SRCCHN= 000002
AM.REL= 000067   	CPXCON= 000020   	GSDT00= 000000   	PASS  = ****** GX	STARS = ****** GX
ASTFLG= 000114   	CPXDIV= 000004   	GSDT01= 000400   	PRGIDN= ****** GX	STLBUF= ****** GX
BASSYM= ****** GX	CPXFLG= 000200   	GSDT02= 001000   	PRGTTL= ****** GX	SYMBOL= ****** GX
BINCHN= 000006   	CPXGLB= 000016   	GSDT03= 001400   	PSTFLG= 000050   	SYMLST= ****** GX
BLKT01= 000001   	CPXIOR= 000006   	GSDT04= 002000   	PUTLP = ****** GX	SYMTXT  000000R     005
BLKT02= 000002   	CPXMUL= 000003   	GSDT05= 002400   	REGFLG= 000001   	TAB   = 000011
BLKT03= 000003   	CPXNEG= 000010   	GSDT06= 003000   	RELCHN= 000010   	TMPCNT= 000014
BLKT04= 000004   	CPXOPC= 000010   	ILVL  = 000004   	RELFLG= 000040   	TSTRLD= ****** GX
BLKT05= 000005   	CPXREL= 000017   	INSERT= ****** GX	REM     000000R     002	VALUE = ****** GX
BLKT06= 000006   	CPXSDS= 000013   	IOFTBL= ****** GX	RLDDMP= ****** GX	VT    = 000013
BUFTBL= ****** GX	CPXSTO= 000012   	LBLFLG= 000002   	RLDT00= 000000   	XBSRCH= 000000
CH.ADD= 000053   	CPXSUB= 000002   	LCMASK= ****** GX	RLDT01= 000001   	XCREF = 000000
CH.AND= 000046   	CR    = 000015   	LC.SYM= ****** GX	RLDT02= 000002   	XEDABS= 000000
CH.BSL= 000134   	CSTACC= 000020   	LC.TTM= ****** GX	RLDT03= 000003   	XEDCDR= 000000
CH.COL= 000072   	CSTALO= 000004   	LET.A = 000101   	RLDT04= 000004   	XEDFPT= 000000
CH.COM= 000054   	CSTFLG= 000050   	LET.B = 000102   	RLDT05= 000005   	XEDLC = 000000
CH.DIV= 000057   	CSTGBL= 000100   	LET.C = 000103   	RLDT06= 000006   	XEDPIC= 000000
CH.DOL= 000044   	CSTMEM= 000001   	LET.D = 000104   	RLDT07= 000007   	XEDPNC= 000000
CH.DOT= 000056   	CSTREL= 000040   	LET.E = 000105   	RLDT10= 000010   	XFCSQN= 000000
CH.EQU= 000075   	CSTTYP= 000200   	LET.F = 000106   	RLDT11= 000011   	XFLTG = 000000
CH.HSH= 000043   	DEFFLG= 000010   	LET.G = 000107   	RLDT15= 000015   	XMIT4 = ****** GX
CH.IND= 000100   	DFGFLG= 000020   	LET.O = 000117   	RLDT16= 000016   	XOPEXP= 000000
CH.IOR= 000041   	DIG.0 = 000060   	LET.Z = 000132   	RLDT17= 000017   	XSUBD = 000000
CH.LAB= 000074   	DIG.9 = 000071   	LF    = 000012   	RSX11M= 000000   	XZERR = 000000
CH.LP = 000050   	DIV   = ****** G 	LINBUF= ****** GX	R$$11M= 000000   	X45   = 000000
CH.MUL= 000052   	ENDP1   000000RG    003	LINPPG= ****** GX	R50UNP= ****** GX	$CVRL = ****** GX
CH.PCT= 000045   	ENDP1A  000214R     003	LNKSYM  000502R     003	SECLST= ****** GX	$LSCNT= ****** GX
CH.QM = 000077   	ENDP1B  000264R     003	LPPCNT= ****** GX	SECTOR= ****** GX	$LSPNT= ****** GX
CH.QTM= 000042   	ENDP2   000604RG    003	LSTCHN= 000004   	SETBYT= ****** GX	$LSTOP= ****** GX
CH.RAB= 000076   	ENDP2A  001316R     003	LSTDEV= ****** GX	SETMAX= ****** GX	$NMPAR= ****** GX
CH.RP = 000051   	ENDP2B  001402R     003	LST.KB= 000001   	SETWRD= ****** GX	$SYLHD= ****** GX
CH.SMC= 000073   	ENDP2C  001422R     003	LST.LP= 000002   	SMLCHN= 000012   	$SYPAR= ****** GX
CH.SUB= 000055   	ENDP2D  001420R     003	MAXCHN= 000014   	SPACE = 000040   	$WRMPG= ****** GX
CH.UAR= 000136   	ENDP2T  000000R     004	MDFFLG= 000004   	SP.COL= 000010

. ABS.	000000	   000
      	000000	   001
MIXED 	000002	   002
PUREI 	001444	   003
DPURE 	000024	   004
TXTBYT	000015	   005
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  4360 WORDS  ( 18 PAGES)
DYNAMIC MEMORY:  5216 WORDS  ( 20 PAGES)
ELAPSED TIME:  00:00:35
[45,10]ENDPS,[45,20]ENDPS/-SP=[45,30]RSXPAR,MCIOCH,GENMC,FLGDF,ENDPS
EXPRS	MACRO M1108  05-DEC-77 23:19  PAGE 5


      1						.TITLE	EXPRS
      2						.IDENT	/X08.05/
      3
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X08.05
     24					;
     25					; B. BOWERING
     26					;
     27					;	MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 10-FEB-73
     30					;	C.A. D'ELIA	22-SEP-73	001
     31					;	C.A. D'ELIA	15-NOV-73	008
     32					;	C.A. D'ELIA	28-JAN-74	012
     33					;	H.A. NICHOLS	18-JUN-74	017
     34					;	C.A. D'ELIA	01-AUG-74	017
     35					;	C.A. D'ELIA	31-DEC-74	018
     36					;	C.A. D'ELIA	01-MAY-75	019
     37					;	C.A. D'ELIA	20-OCT-75	CD021	(VIRT MEMORY)
     38					;	C.A. D'ELIA	01-NOV-75	CD022	(CREF + ^R)
     39					;	C.A. D'ELIA	23-APR-76	CD023	(EXP STACK OVERFLOW)
     40					;	C.A. D'ELIA	30-JUL-76	CD024	(EXP STACK OVERFLOW)
     41					;
     42					;+
     43					; **-GLBTRM-GLOBAL TERM
     44					; **-GLBEXP-GLOBAL EXPRESSION
     45					; **-RELTRM-RELATIVE TERM
     46					; **-RELEXP-RELATIVE EXPRESSION
     47					; **-RELTST-RELATIVE TEST
     48					; **-ABSTRM-ABSOLUTE TERM
     49					; **-ABSEXP-ABSOLUTE EXPRESSION
     50					; **-ABSTST-ABSOLUTE TEST
     51					; **-ABSERF-SET ADDRESS ERROR FLAG
     52					;-
     53
     54	000000					PURE	PUREI,I		;++017
     55					 										; CD024
     56	000000	004767 	000662 		GTRMI:	CALL	TERMI		;INTERNAL ENTRY TO GET GLOBAL TERM		; CD024
     57	000004	004767 	000000G			CALL	SETXPR		;RESTORE EXPRESSION MODE REGISTERS		; CD024
EXPRS	MACRO M1108  05-DEC-77 23:19  PAGE 5-1


     58	000010	005700 				TST	R0		;TEST SUCCESS/FAIL				; CD024
     59	000012	000402 				BR	GTRMCK		;BRANCH INTO COMMON CODE			; CD024
     60					 										; CD024
     61	000014				GLBTRM::TERM			;GLOBAL TERM
     62	000020				GTRMCK:				;REF LABEL TO VALIDATE TERM			; CD024
     63	000020	001440 				BEQ	ABSERR
     64	000022	000450 				BR	ABSERX
     65	000024				GLBEXP::EXPR			;GLOBAL EXPRESSION
     66	000030				GEXPCK:				;INTERNAL ENTRY TO VALIDATE EXPR		; CD023
     67	000030	001434 				BEQ	ABSERR
     68	000032	032767 	000200 	000000G		BIT	#CPXFLG,FLAGS	;++001 IS EXPRESSION COMPLEX?
     69	000040	001441 				BEQ	ABSERX		;++001 NO, JUST LEAVE
     70	000042	022767 	000050 	000000G		CMP	#RLDLEN-2,CPXSTL ;++001 YES, IS THE COMPLEX STRING TOO LONG...
     71									;++001 ... FOR A SINGLE RLD RECORD?
     72	000050	002424 				BLT	ABSERR		;++001 YES, FLAG EXPRESSION IN ERROR
     73	000052	000434 				BR	ABSERX
     74	000054				RELTRM::GLBTRM			;RELATIVE TERM
     75	000060	000402 				BR	RELTST
     76	000062				RELEXP::GLBEXP			;RELATIVE EXPRESSION
     77	000066	132767 	000300 	000000G	RELTST::BITB	#CPXFLG!GLBFLG,FLAGS	;++001 EXPR CAN'T BE COMPLEX OR GLOBAL
     78	000074	001423 				BEQ	ABSERX
     79	000076	000411 				BR	ABSERR
     80	000100				ABSTRM::GLBTRM			;ABSOLUTE TERM
     81	000104	000402 				BR	ABSTST
     82	000106				ABSEXP::GLBEXP			;ABSOLUTE EXPRESSION
     83	000112	132767 	000340 	000000G	ABSTST::BITB	#CPXFLG!GLBFLG!RELFLG,FLAGS ;++001 EXPR MUST BE ABSOLUTE
     84	000120	001411 				BEQ	ABSERX
     85	000122	005067 	000000G		ABSERR::CLR	MODE		;
     86	000126	005067 	000000G			CLR	RELLVL
     87	000132	004767 	000000G			CALL	ZAPCPX		;++001 CLEAR CPXROL & INIT STRING LENGTH
     88	000136				ABSERF:	ERROR	A
     89	000144	016700 	000000G		ABSERX:	MOV	VALUE,R0	;RETURN WITH VALUE IN R0
     90	000150	000207 				RETURN
     91
     92
     93	000152	132767 	000040 	000000G	ABXTST:	BITB	#RELFLG,FLAGS	;++019 IS EXPRESSION RELOCATABLE?
     94	000160	001004 				BNE	SETCPX		;++019 YES, ABSOLUTE TEST FAILS
     95	000162	132767 	000300 	000000G	REXTST:	BITB	#GLBFLG!CPXFLG,FLAGS ;++001 IS EXPR GLOBAL OR COMPLEX?
     96	000170	001403 				BEQ	CPXRTN		;++001 YES, CONTINUE EVALUATING IT
     97	000172	152767 	000200 	000000G	SETCPX:	BISB	#CPXFLG,FLAGS	;++001 SET COMPLEX RELOCATION EXPRESSION
     98	000200	000207 			CPXRTN:	RETURN			;++001
     99
    100					;+
    101					; **-EXPR-EXPRESSION EVALUATION
    102					;-
    103
    104	000202				EXPR::	SAVREG			;SAVE REGISTERS
    105	000206	004767 	000454 		EXPI:	CALL	TERMI		;GET FIRST TERM					; CD023
    106	000212	005700 				TST	R0		;TEST RESULT					; CD023
    107	000214	001441 				BEQ	5$		;EXIT IF NULL					;**-1
    108	000216	005046 				CLR	-(SP)		;NON-NULL, SET REGISTER FLAG STORAGE
    109	000220				1$:	SETXPR			;SET EXPRESSION REGISTERS
    110	000224	051316 				BIS	(R3),(SP)	;SAVE REGISTER FLAG
    111	000226					CHSCAN	BOPTBL		;SCAN THE BINARY OPERATOR TABLE
    112	000236	001403 				BEQ	2$		;  BRANCH IF NOT FOUND
    113	000240	004767 	000056 			CALL	10$		;FOUND, CALL HANDLER
    114	000244	000765 				BR	1$		;TEST FOR MORE
EXPRS	MACRO M1108  05-DEC-77 23:19  PAGE 5-2


    115	000246	042716 	177776 		2$:	BIC	#-1-REGFLG,(SP)	;MASK ALL BUT REGISTER FLAG
    116	000252	001403 				BEQ	6$		;BRANCH IF NOT REGISTER
    117	000254	032714 	177770 			BIT	#177770,(R4)	;IN BOUNDS?
    118	000260	001006 				BNE	7$		;  NO, ERROR
    119	000262	006267 	000000G		6$:	ASR	RELLVL		;TEST RELOCATON LEVEL
    120	000266	001010 				BNE	3$		;BRANCH IF NOT 0 OR 1
    121	000270	103011 				BCC	4$		;BRANCH IF 0
    122	000272	005716 				TST	(SP)		;RELOCATABLE, TEST REGISTER FLAG
    123	000274	001407 				BEQ	4$		;BRANCH IF NOT SET
    124	000276				7$:	ERROR	R		;REL AND REG, ERROR
    125	000304	005016 				CLR	(SP)		;CLEAR REGISTER BIT
    126	000306	000402 				BR	4$
    127	000310	152713 	000200 		3$:	BISB	#CPXFLG,(R3)	;++001 SET COMPLEX RELOCATION EXPRESSION
    128	000314	052613 			4$:	BIS	(SP)+,(R3)	;MERGE REGISTER BIT
    129	000316					SETNZ	R0		;SET TRUE
    130	000320	000207 			5$:	RETURN
    131	000322	012746 	001574'		10$:	MOV	#STXOPC,-(SP)	;++001 RETURN THRU COMPLEX OPCODER ROUTINE
    132	000326	010046 				MOV	R0,-(SP)	;++001 STACK OPERATOR ROUTINE ADDRESS
    133	000330	012146 				MOV	(R1)+,-(SP)	;STACK SYMBOL					;**-1
    134	000332	012146 				MOV	(R1)+,-(SP)
    135	000334	012146 				MOV	(R1)+,-(SP)	;  MODE,
    136	000336	012146 				MOV	(R1)+,-(SP)	;  VALUE,
    137	000340	012146 				MOV	(R1)+,-(SP)	;  AND REL LEVEL
    138	000342	004767 	177432 			CALL	GTRMI		;GET NEXT TERM					; CD024
    139	000346	012703 	000012'			MOV	#EXPBAK+10.,R3	;POINT TO EXPRESSION SCRATCH AREA		; CD024
    140	000352	012643 				MOV	(SP)+,-(R3)	;UNSTACK PREVIOUS RELOCATION LEVEL,		; CD024
    141	000354	012643 				MOV	(SP)+,-(R3)	;	VALUE,					; CD024
    142	000356	010302 				MOV	R3,R2		;LEAVE R2 POINTING TO PREVIOUS VALUE		; CD024
    143	000360	012643 				MOV	(SP)+,-(R3)	;	MODE (FLAGS & PSECT),			; CD024
    144	000362	012643 				MOV	(SP)+,-(R3)	;	AND SYMBOL.				; CD024
    145	000364	012643 				MOV	(SP)+,-(R3)	;						; CD024
    146	000366	124244 				CMPB	-(R2),-(R4)	;++019 ARE PSECT'S THE SAME?			;**-8
    147	000370	001406 				BEQ	100$		;++019 YES, PSECT TEST SUCCESS
    148	000372	105712 				TSTB	(R2)		;++019 ELSE, IS FIRST VALUE A CONSTANT?
    149	000374	001404 				BEQ	100$		;++019 YES, PSECT TEST SUCCESS
    150	000376	105714 				TSTB	(R4)		;++019 ELSE, IS SECOND VALUE A CONSTANT?
    151	000400	001402 				BEQ	100$		;++019 YES, PSECT TEST SUCCESS
    152	000402	004767 	177564 			CALL	SETCPX		;++019 ELSE, EXPRESSION WILL BE COMPLEX
    153	000406	122224 			100$:	CMPB	(R2)+,(R4)+	;++019 RESTORE REGISTERS
    154	000410	006216 				ASR	(SP)		;IS OPERATOR FOR ABSOLUTE VALUES ONLY?
    155	000412	103404 				BCS	12$		;  NO
    156	000414	054244 				BIS	-(R2),-(R4)	;MERGE ATTRIBUTES AND PSECT NUMBERS
    157	000416	004767 	177530 			CALL	ABXTST		;++001 COMPLEX IF BOTH NOT ABSOLUTE
    158	000422	022224 				CMP	(R2)+,(R4)+	;RESTORE REGISTERS
    159	000424	006316 			12$:	ASL	(SP)		;RESTORE DISPATCH ADDRESS
    160	000426	000136 				JMP	@(SP)+		;DISPATCH TO BINARY OPERATOR FUNCTION
    161
    162	000000					.PSECT	IMPURE,D,RW	;++017
    163	000000				EXPBAK:	.BLKW	5		;PREVIOUS TERM STORAGE
    164
    165	000012					PURE	DPURE,D		;++017
    166	000000				BOPTBL:				;BINARY OP TABLE
    167	000000					GCHTBL	CH.ADD,	BOPADD+1	; "+"
    168	000004					GCHTBL	CH.SUB,	BOPSUB+1	; "-"
    169	000010					GCHTBL	CH.MUL,	BOPMUL	; "*"
    170	000014					GCHTBL	CH.DIV,	BOPDIV	; "/"
    171	000020					GCHTBL	CH.AND,	BOPAND	; "&"
EXPRS	MACRO M1108  05-DEC-77 23:19  PAGE 5-3


    172	000024					GCHTBL	CH.IOR,	BOPIOR	; "!"
    173	000030	000000 				.WORD	0
    174	000032					PURE	PUREI,I		;++017
    175
    176	000430	004767 	177526 		BOPSUB:	CALL	REXTST		;++001 TEST FOR COMPLEX EXPRESSION
    177	000434	005414 				NEG	(R4)		; -, NEGATE VALUE
    178	000436	005467 	000000G			NEG	RELLVL		;  AND RELLVL
    179	000442	012700 	001010 			MOV	#CPXSUB*400!CPXOPC,R0 ;++001 SET COMPLEX OPCODE FOR SUB
    180	000446	000402 				BR	ADDX		;++001 BRANCH INTO COMMON CODE
    181	000450	012700 	000410 		BOPADD:	MOV	#CPXADD*400!CPXOPC,R0 ;++001 SET COMPLEX OPCODE FOR ADD
    182	000454	062224 			ADDX:	ADD	(R2)+,(R4)+	;++001 + ADD VALUES
    183	000456	061214 				ADD	(R2),(R4)	;  AND RELOCATION LEVELS
    184	000460	024244 				CMP	-(R2),-(R4)	;POINT BACK TO VALUES
    185	000462	032742 	177700 			BIT	#177400!GLBFLG!CPXFLG,-(R2)  ;++019 FIRST VALUE CONSTANT?
    186	000466	001416 				BEQ	3$		;++019 YES, CONSIDER ADDITION DONE
    187	000470	032744 	177700 			BIT	#177400!GLBFLG!CPXFLG,-(R4)  ;++019 SECOND VALUE CONSTANT?
    188	000474	001414 				BEQ	4$		;++019 YES, USE ATTRIBUTES OF FIRST VALUE
    189	000476	151214 				BISB	(R2),(R4)	;++019 NO CONSTANTS--MERGE ATTRIBUTES
    190	000500	004767 	177456 			CALL	REXTST		;++019 COMPLEX IF ANY GLOBALS
    191	000504	005767 	000000G			TST	RELLVL		;CHECK RELOCATION LEVEL
    192	000510	001005 				BNE	3$
    193	000512	132714 	000300 			BITB	#CPXFLG!GLBFLG,(R4)  ;++019 IS EXPR GLOBAL OR COMPLEX?
    194	000516	001002 				BNE	3$		;++019 YES, LEAVE
    195	000520	042714 	177440 			BIC	#177400!RELFLG,(R4)  ;SET ATTRIBUTES FOR CONSTANT
    196	000524	000207 			3$:	RETURN
    197					 										; CD024
    198	000526	012321 			4$:	MOV	(R3)+,(R1)+	;TRANSFER PREVIOUS SYMBOL NAME			; CD024
    199	000530	012321 				MOV	(R3)+,(R1)+	;						; CD024
    200	000532	052321 				BIS	(R3)+,(R1)+	;AND MERGE PREVIOUS ATTRIBUTES			; CD024
    201	000534	000207 				RETURN									;**-3
    202
    203
    204	000536	005112 			BOPAND:	COM	(R2)
    205	000540	041214 				BIC	(R2),(R4)
    206	000542	012700 	002410 			MOV	#CPXAND*400!CPXOPC,R0 ;++001 SET COMPLEX OPCODE FOR AND
    207	000546	000207 				RETURN
    208	000550	051214 			BOPIOR:	BIS	(R2),(R4)
    209	000552	012700 	003010 			MOV	#CPXIOR*400!CPXOPC,R0 ;++001 SET COMPLEX OPCODE FOR OR
    210	000556	000207 				RETURN
    211	000560	011200 			BOPMUL:	MOV	(R2),R0		;FETCH FIRST ARGUMENT
    212	000562	012746 	001410 			MOV	#CPXMUL*400!CPXOPC,-(SP) ;++001 STK COMPLEX OPCODE FOR MULT
    213	000566	010046 				MOV	R0,-(SP)	;SAVE A COPY
    214	000570	100001 				BPL	1$		;POSITIVE?
    215	000572	005400 				NEG	R0		;  NO, MAKE IT SO
    216	000574	011403 			1$:	MOV	(R4),R3		;SET SECOND ARG
    217	000576	100002 				BPL	2$		;BRANCH IF POSITIVE
    218	000600	005403 				NEG	R3		;NEGATIVE, MAKE IT +
    219	000602	005116 				COM	(SP)		;TOGGLE RESULT SIGN
    220	000604				2$:	MUL	R3,R0		;MULTIPLY
    221	000610	010100 				MOV	R1,R0		;SET FOR EXIT
    222	000612	000415 				BR	BOPDVX		;EXIT THROUGH DIVIDE
    223	000614	011403 			BOPDIV:	MOV	(R4),R3		;SET DIVISOR
    224	000616	012746 	002010 			MOV	#CPXDIV*400!CPXOPC,-(SP) ;++001 STK COMPLEX OPCODE FOR DIV
    225	000622	010346 				MOV	R3,-(SP)	;SAVE A COPY
    226	000624	100001 				BPL	1$		;BRANCH IF PLUS
    227	000626	005403 				NEG	R3		;MAKE IT THUS
    228	000630	011201 			1$:	MOV	(R2),R1		;SET QUOTIENT
EXPRS	MACRO M1108  05-DEC-77 23:19  PAGE 5-4


    229	000632	100002 				BPL	2$		;AGAIN!!!
    230	000634	005401 				NEG	R1
    231	000636	005116 				COM	(SP)
    232	000640	005000 			2$:	CLR	R0		;OPERATE
    233	000642					DIV	R3,R0
    234	000646	005726 			BOPDVX:	TST	(SP)+		;TEST RESULT
    235	000650	100001 				BPL	1$		;  OK AS IS
    236	000652	005400 				NEG	R0		;NO, NEGATE IT
    237	000654	010014 			1$:	MOV	R0,(R4)		;SET RESULT
    238	000656	012600 				MOV	(SP)+,R0	;++001 SET THE COMPLEX OPCODE
    239	000660	000207 				RETURN
    240
    241					;+
    242					; **-TERM-TERM EVALUATION
    243					;-
    244
    245	000662				TERM::	SAVREG			;SAVE REGISTERS
    246	000666				TERMI:				;REF LABEL FOR INTERNAL ENTRY			; CD023
    247	000666					SETXPR			;  AND SET "EXPRESSION" TYPE
    248	000672	005013 				CLR	(R3)		;CLEAR MODE
    249	000674	005014 				CLR	(R4)		;  AND VALUE
    250	000676	004767 	000032 			CALL	TERM10		;PROCESS
    251	000702	042713 	000016 			BIC	#DEFFLG!LBLFLG!MDFFLG,(R3)	;CLEAR EXTRANEOUS
    252	000706	005067 	000000G			CLR	RELLVL		;ASSUME ABSOLUTE
    253	000712	032713 	000040 			BIT	#RELFLG,(R3)	;TRUE?
    254	000716	001402 				BEQ	1$
    255	000720	005267 	000000G			INC	RELLVL		;  NO, RELOCATABLE
    256	000724	005267 	000000G		1$:	INC	EXPFLG		;MARK AS EXPRESSION
    257	000730	000167 	000000G			JMP	SETNB		;EXIT WITH NON-BLANK AND R0 SET
    258	000734				TERM10:	GETSYM			;TRY FOR A SYMBOL
    259	000740	001466 				BEQ	TERM20		;BRANCH IF NOT A SYMBOL
    260	000742	026767 	000000G	000000G		CMP	SYMBOL,R50DOT	;LOCATION COUNTER?				;**-4
    261	000750	001425 				BEQ	14$		;  YES, TREAT SPECIAL
    262	000752					SSRCH			;SEARCH THE SYMBOL TABLE
    263	000756	001433 				BEQ	16$		;BRANCH IF NOT FOUND
    264	000760	032713 	000004 			BIT	#MDFFLG,(R3)	;MULTIPLY DEFINED?
    265	000764	001403 				BEQ	11$		;  NO
    266	000766					ERROR	D		;++012 ERROR-REF TO MULTI-DEFINED LABEL
    267	000774	032713 	000010 		11$:	BIT	#DEFFLG,(R3)	;DEFINED?
    268	001000	001006 				BNE	12$		;  YES
    269	001002	032713 	000100 			BIT	#GLBFLG,(R3)	;NO, GLOBAL?
    270	001006	001042 				BNE	CRFTRM		;IF NE YES--COMPLETE TERM PROCESSING		; CD022
    271	001010					ERROR	U		;NO, UNDEFINED ERROR				;**-1
    272	001016	042713 	000100 		12$:	BIC	#GLBFLG,(R3)	;CLEAR INTERNAL GLOBAL FLAG
    273	001022	000434 				BR	CRFTRM		;COMPLETE TERM PROCESSING			; CD022
    274	001024	012701 	000000G		14$:	MOV	#CLCNAM,R1	;DOT, MOVE TO WORKING AREA			;**-1
    275	001030	012702 	000000G			MOV	#SYMBOL,R2
    276	001034	004767 	000000G			CALL	XMIT4
    277	001040	142713 	177737 			BICB	#^C<RELFLG>,(R3) ;++017 CLEAR ALL BUT RELOCATION FLAG
    278	001044	000474 				BR	TERM28
    279	001046				16$:				;++008
    280
    281						.IF NDF	XOPEXP		;++018
    282					 										; CD021
    283						MOV	$LSPNT,-(SP)	;SAVE SYMBOL TABLE POINTER			; CD021
    284						OSRCH			;++008 SEARCH THE PERMANENT SYMBOL TABLE
    285						MOV	(SP)+,$LSPNT	;RESTORE SYMBOL TABLE POINTER			; CD021
EXPRS	MACRO M1108  05-DEC-77 23:19  PAGE 5-5


    286						TST	(R3)		;OP CODE?
    287						BMI	17$		;YES
    288						MOV	#SYMLST,$LSNDX	;SET SYMBOL TABLE LIST NUMBER			; CD021
    289						CLR	$LSFLG		;SET SEARCH FAILURE FLAG			; CD021
    290					 										; CD021
    291						.ENDC			;++018 (XOPEXP -- NO OPCODES IN EXPRESSIONS)	;**-1
    292
    293
    294	001046	005013 				CLR	(R3)		;CLEAR ALL SYMBOL MODE BITS			; CD021
    295	001050	005014 				CLR	(R4)		;AND VALUE					; CD021
    296	001052	032767 	000000G	000000G		BIT	#ED.GBL,EDMASK	;AUTO GLOBAL SYMBOL DEFAULT ENABLED?		;**-1
    297	001060	001003 				BNE	18$		;IF NE NO DEFAULT GLOBALS			; CD021
    298	001062	052713 	000120 			BIS	#DFGFLG!GLBFLG,(R3)  ;ELSE, SET THE FLAGS			; CD021
    299	001066	000403 				BR	20$		;AND BRANCH TO INSERT ENTRY			; CD021
    300	001070				18$:				;						; CD021
    301	001070					ERROR	U								;**-2
    302	001076				20$:	INSERT			;NOT IN TABLE, INSERT AS UNDEFINED
    303	001102	032767 	000000G	000000G		BIT	#ED.GBL,EDMASK	;AUTO GLOBAL ENABLED?
    304	001110	001401 				BEQ	CRFTRM		;IF EQ YES--COMPLETE TERM PROCESSING		; CD022
    305	001112	005013 			17$:	CLR	(R3)		;BE SURE MODE IS ZERO				;**-1
    306	001114				CRFTRM:	CRFREF			;GENERATE CREF REFERENCE			; CD022
    307	001114	000450 				BR	TERM28
    308	001116	016702 	000000G		TERM20:	MOV	CRADIX,R2	;ASSUME NUMBER IS IN CURRENT RADIX
    309	001122				21$:	CVTNUM			;CONVERT
    310	001126	001470 				BEQ	TERM30		;  NOPE, MISSED AGAIN
    311	001130	100003 				BPL	22$		;NUMBER, ANY OVERFLOW?
    312	001132					ERROR	T		;  YES, FLAG IT
    313	001140	020527 	000056 		22$:	CMP	R5,#CH.DOT	;NUMBER, DECIMAL?
    314	001144	001411 				BEQ	24$		;  YES
    315						.IF NDF	XEDLSB
    316	001146	020527 	000044 			CMP	R5,#CH.DOL	;NO, LOCAL SYMBOL?
    317	001152	001406 				BEQ	24$		;  YES
    318						.ENDC
    319	001154	105700 				TSTB	R0		;NO, ANY NUMBERS OUT OF RANGE?
    320	001156	001427 				BEQ	TERM28		;  NO
    321	001160					ERROR	N		;YES, FLAG IT
    322	001166	000403 				BR	23$
    323	001170	020227 	000012 		24$:	CMP	R2,#10.		;"." OR "$", WERE WE DECIMAL?
    324	001174	001405 				BEQ	25$		;  YES
    325	001176				23$:	SETSYM			;NO,
    326	001202	012702 	000012 			MOV	#10.,R2		;  TRY AGAIN WITH DECIMAL RADIX
    327	001206	000745 				BR	21$
    328	001210	020527 	000056 		25$:	CMP	R5,#CH.DOT	;DECIMAL?
    329	001214	001406 				BEQ	TERM27		;  YES
    330						.IF NDF	XEDLSB
    331	001216					LSRCH			;NO, LOCAL SYMBOL
    332	001222	001003 				BNE	TERM27		;BRANCH IF FOUND
    333						.ENDC
    334	001224				TERM26:	ERROR	U		;  NO, FLAG AS UNDEFINED
    335	001232				TERM27:	GETCHR			;BYPASS DOT OR DOLLAR
    336	001236	062767 	000002 	000000G	TERM28:	ADD	#2,CPXSTL	;++001 UPDATE COMPLEX STRING LENGTH FOR CONST
    337	001244	011346 				MOV	(R3),-(SP)	;++001 SAVE FLAGS/SECTOR WORD
    338	001246	142713 	177637 			BICB	#^C<RELFLG!GLBFLG>,(R3) ;++001 SAVE ONLY GLOBAL/REL FLAGS
    339	001252	001407 				BEQ	2$		;++001 BRANCH IF TERM IS ABSOLUTE
    340	001254	132713 	000100 			BITB	#GLBFLG,(R3)	;++001 IS THE TERM GLOBAL?
    341	001260	001402 				BEQ	1$		;++001 SKIP IF NOT
    342	001262	005267 	000000G			INC	CPXSTL		;++001 INCR COMPLEX STRING LENGTH BY 2 MORE...
EXPRS	MACRO M1108  05-DEC-77 23:19  PAGE 5-6


    343	001266	005267 	000000G		1$:	INC	CPXSTL		;++001 ... FOR GLOBAL & 1 MORE FOR RELATIVE
    344	001272	004767 	000316 		2$:	CALL	APPCPX		;++001 PUT ELEMENT IN COMPLEX ROLL
    345	001276	012613 				MOV	(SP)+,(R3)	;++001 RESTORE FLAGS/SECTOR WORD
    346	001300				ALT28:	SETNB			;++001 RETURN POINTING TO NON-BLANK
    347	001304					SETNZ	R0		;FLAG AS FOUND
    348	001306	000207 			TERM29:	RETURN
    349	001310				TERM30:	CHSCAN	UOPTBL		;SCAN UNARY OPERATOR TABLE
    350	001320	001772 				BEQ	TERM29		;  NOT THERE
    351	001322	005002 				CLR	R2		;CLEAR FOR FUTURE USE
    352	001324	004710 				CALL	(R0)		;FOUND, GO AND PROCESS
    353	001326	000764 				BR	ALT28		;++001 EXIT TRUE VIA ALTERNATE EXIT
    354
    355	001330					PURE	DPURE,D		;++017
    356	000032				UOPTBL:
    357	000032					GCHTBL	CH.ADD,	GTRMI	; "+"						; CD024
    358	000036					GCHTBL	CH.SUB,	TERM42	; "-"						;**-1
    359	000042					GCHTBL	CH.QTM,	TERM44	; """
    360	000046					GCHTBL	CH.XCL,	TERM45	; "'"
    361	000052					GCHTBL	CH.PCT,	TERM46	; "%"
    362	000056					GCHTBL	CH.LAB,	TERM47	; "<"
    363	000062					GCHTBL	CH.UAR,	TERM50	; "^"
    364	000066	000000 				.WORD	0
    365	000070					PURE	PUREI,I		;++017
    366
    367	001330	012746 	000001 		TERM42:	MOV	#1,-(SP)	;++001 INDICATE NEGATE BY 1 ON STACK
    368	001334	000443 				BR	COMTRX		;++001 USE COMMON CODE TO PROCESS
    369	001336	005202 			TERM44:	INC	R2		; """, MARK IT
    370	001340	010401 			TERM45:	MOV	R4,R1		; "'", SET TEMP STORE REGISTER
    371	001342					SETSYM			;POINT BACK TO OPERATOR
    372	001346				1$:	GETCHR			;GET THE NEXT CHARACTER
    373	001352	001423 				BEQ	TERM48		;ERROR IF EOL
    374						.IF NDF	XEDLC
    375						MOVB	@CHRPNT,(R1)	;STORE ABSOLUTE CHAR
    376						BICB	#200,(R1)+	;CLEAR POSSIBLE SIGN BIT AND INDEX
    377						.IFF
    378	001354	110521 				MOVB	R5,(R1)+
    379						.ENDC
    380	001356	005302 				DEC	R2		;ANOTHER CHARACTER
    381	001360	001772 				BEQ	1$		;  YES
    382	001362	000723 				BR	TERM27		;BYPASS LAST CHAR
    383	001364				TERM46:	ABSTRM			;REGISTER EXPRESSION
    384	001370	052713 	000001 			BIS	#REGFLG,(R3)	;FLAG IT
    385	001374	000207 				RETURN
    386	001376				TERM47:				;LEFT ANGLE BRACKET SEEN			; CD023
    387	001376	004767 	176604 			CALL	EXPI		;EVALUATE EXPRESSION				; CD023
    388	001402	004767 	176422 			CALL	GEXPCK		;VALIDATE IT					; CD023
    389	001406	020527 	000076 			CMP	R5,#CH.RAB	;">"?						;**-1
    390	001412	001003 				BNE	TERM48		;++001 NO, REPORT ERROR
    391	001414					GETCHR			;++001 YES, BYPASS IT
    392	001420	000727 				BR	ALT28		;++001 EXIT
    393	001422	000167 	176510 		TERM48:	JMP	ABSERF		;ERROR, FLAG IT
    394	001426				TERM50:	CHSCAN	UARTBL		;"^"-SCAN ON NEXT CHARACTER
    395	001436	001771 				BEQ	TERM48		;  INVALID, ERROR
    396	001440	000110 				JMP	(R0)		;CALL ROUTINE
    397
    398	001442					PURE	DPURE,D		;++017
    399	000070				UARTBL:				;UP ARROW TABLE
EXPRS	MACRO M1108  05-DEC-77 23:19  PAGE 5-7


    400	000070					GCHTBL	LET.C,	TERM51	;  ^C
    401	000074					GCHTBL	LET.D,	TERM52	;  ^D
    402	000100					GCHTBL	LET.O,	TERM53	;  ^O
    403	000104					GCHTBL	LET.B	TERM54	;  ^B
    404						.IF NDF	XFLTG
    405						GCHTBL	LET.F,	TERM55	;^F
    406						.ENDC
    407	000110					GCHTBL	'R,	TERM56	;++019  ^R
    408	000114	000000 				.WORD	0
    409	000116					PURE	PUREI,I		;++017
    410
    411	001442	005046 			TERM51:	CLR	-(SP)		;++001 INDICATE COMPLEMENT BY 0 ON STACK
    412	001444	004767 	176330 		COMTRX:	CALL	GTRMI		;GET GLOBAL TERM				; CD024
    413	001450	004767 	176506 			CALL	REXTST		;++001 IF TERM IS GLOBAL, SET COMPLEX		;**-1
    414	001454	005114 				COM	(R4)		;++001 COMPLEMENT VALUE
    415	001456	061614 				ADD	(SP),(R4)	;++001 MAKE IT NEGATE IF 1 ON STACK
    416	001460	005467 	000000G			NEG	RELLVL		;++001 NEGATE THE RELOCATION LEVEL
    417	001464	012700 	004011 			MOV	#CPXOPC*400!CPXCOM,R0 ;++001 SET CPX OPCODE COMPL (BKWDS)
    418	001470	162600 				SUB	(SP)+,R0	;++001 MAKE IT NEGATE IF 1 ON STACK
    419	001472	000300 				SWAB	R0		;++001 STRAIGHTEN OUT THE BYTES
    420	001474	000437 				BR	STXOPC		;++001 STORE OPCODE IN CPXROL
    421	001476	062702 	000002 		TERM52:	ADD	#2.,R2
    422	001502	062702 	000006 		TERM53:	ADD	#6.,R2
    423	001506	062702 	000002 		TERM54:	ADD	#2.,R2
    424	001512	016746 	000000G			MOV	CRADIX,-(SP)	;STACK CURRENT RADIX
    425	001516	010267 	000000G			MOV	R2,CRADIX	;REPLACE WITH LOCAL
    426	001522	004767 	176252 			CALL	GTRMI		;EVALUATE TERM					; CD024
    427	001526	012667 	000000G			MOV	(SP)+,CRADIX	;RESTORE RADIX					;**-1
    428	001532	000207 				RETURN
    429
    430						.IF NDF	XFLTG
    431					TERM55:	CALL	FLTG1W		;++018 PROCESS ONE WORD FLOATING
    432						BEQ	TERM48		;ERROR IF NULL
    433						RETURN
    434						.ENDC
    435
    436
    437	001534				TERM56:				;^R						; CD022
    438	001534	004767 	000000G			CALL	SETSYM		;BACKUP CHAR PTR TO THE "R"			; CD022
    439	001540	012702 	000064 			MOV	#64,R2		;SET CONTROL MASK IN R2				; CD022
    440	001544	004767 	000000G		10$:	CALL	GETR50		;FETCH A RADIX-50 CHAR				; CD022
    441	001550	100632 				BMI	TERM28		;IF MI NON-RAD50 ENCOUNTERED			; CD022
    442	001552	005702 				TST	R2		;CHECK CONTROL MASK				; CD022
    443	001554	001773 				BEQ	10$		;IF EQ SKIP CHARS PAST 3			; CD022
    444	001556	006202 			20$:	ASR	R2		;SHIFT CONTROL MASK				; CD022
    445	001560	103403 				BCS	30$		;IF CS PROPER RAD50 POWER REACHED		; CD022
    446	001562	004767 	000000G			CALL	MULR50		;ELSE, MULTIPLY BY 50				; CD022
    447	001566	000773 				BR	20$		;REPEAT MULTIPLY LOOP				; CD022
    448	001570	060014 			30$:	ADD	R0,(R4)		;ADD RESULT TO ACCUMULATED VALUE		; CD022
    449	001572	000764 				BR	10$		;REPEAT FOR 3 RADIX-50 CHARACTERS		; CD022
    450															;**-16
    451
    452	001574	012703 	000000G		STXOPC:	MOV	#FLAGS,R3	;++001 POINT R3 TO FLAGS
    453	001600	011346 				MOV	(R3),-(SP)	;++001 SAVE FLAGS/SECTOR WORD
    454	001602	010013 				MOV	R0,(R3)		;++001 SET OPCODE FLAG & NUMBER
    455	001604	004767 	000004 			CALL	APPCPX		;++001 PUT ELEMENT IN CPXROL
    456	001610	012613 				MOV	(SP)+,(R3)	;++001 RESTORE FLAGS/SECTOR WORD
EXPRS	MACRO M1108  05-DEC-77 23:19  PAGE 5-8


    457	001612	000207 				RETURN			;++001
    458					 										; CD021
    459					 										; CD021
    460	001614	005267 	000000G		APPCPX:	INC	CPXSTL		;++001 INCR COMPLEX STRING LENGTH FOR OPCODE
    461	001620					APPEND	CPXLST		;APPEND COMPLEX EXPRS ELE TO LIST		; CD021
    462	001630	000207 				RETURN			;++001						;**-1
    463		000001 				.END
EXPRS	MACRO M1108  05-DEC-77 23:19  PAGE 5-9
SYMBOL TABLE

ABSERF  000136R     002	CH.LAB= 000074   	DIG.9 = 000071   	LPP   = 000074   	SYMBOL= ****** GX
ABSERR  000122RG    002	CH.LP = 000050   	DIV   = ****** G 	LSRCH = ****** GX	TAB   = 000011
ABSERX  000144R     002	CH.MUL= 000052   	EDMASK= ****** GX	LSTLEN= 000204   	TERM    000662RG    002
ABSEXP  000106RG    002	CH.PCT= 000045   	ED.GBL= ****** GX	LST.KB= 000001   	TERMI   000666R     002
ABSTRM  000100RG    002	CH.QM = 000077   	ERRBTS= ****** GX	LST.LP= 000002   	TERM10  000734R     002
ABSTST  000112RG    002	CH.QTM= 000042   	ERR.A = ****** GX	MDFFLG= 000004   	TERM20  001116R     002
ABXTST  000152R     002	CH.RAB= 000076   	ERR.D = ****** GX	MODE  = ****** GX	TERM26  001224R     002
ADDX    000454R     002	CH.RP = 000051   	ERR.N = ****** GX	MUL   = ****** G 	TERM27  001232R     002
ALT28   001300R     002	CH.SMC= 000073   	ERR.R = ****** GX	MULR50= ****** GX	TERM28  001236R     002
AM.DEC= 000040   	CH.SUB= 000055   	ERR.T = ****** GX	OBJLEN= 000052   	TERM29  001306R     002
AM.DEF= 000010   	CH.UAR= 000136   	ERR.U = ****** GX	PSTFLG= 000050   	TERM30  001310R     002
AM.IMM= 000027   	CH.XCL= 000047   	EXPBAK  000000R     003	REGFLG= 000001   	TERM42  001330R     002
AM.INC= 000020   	CLCNAM= ****** GX	EXPFLG= ****** GX	RELEXP  000062RG    002	TERM44  001336R     002
AM.NDX= 000060   	COMTRX  001444R     002	EXPI    000206R     002	RELFLG= 000040   	TERM45  001340R     002
AM.PC = 000007   	CPL   = 000120   	EXPR    000202RG    002	RELLVL= ****** GX	TERM46  001364R     002
AM.REL= 000067   	CPXADD= 000001   	FF    = 000014   	RELTRM  000054RG    002	TERM47  001376R     002
APPCPX  001614R     002	CPXAND= 000005   	FLAGS = ****** GX	RELTST  000066RG    002	TERM48  001422R     002
APPEND= ****** GX	CPXCOM= 000011   	GETCHR= ****** GX	REXTST  000162R     002	TERM50  001426R     002
ASTFLG= 000114   	CPXCON= 000020   	GETR50= ****** GX	RLDLEN= 000052   	TERM51  001442R     002
BLKT01= 000001   	CPXDIV= 000004   	GETSYM= ****** GX	RLDT00= 000000   	TERM52  001476R     002
BLKT02= 000002   	CPXFLG= 000200   	GEXPCK  000030R     002	RLDT01= 000001   	TERM53  001502R     002
BLKT03= 000003   	CPXGLB= 000016   	GLBEXP  000024RG    002	RLDT02= 000002   	TERM54  001506R     002
BLKT04= 000004   	CPXIOR= 000006   	GLBFLG= 000100   	RLDT03= 000003   	TERM56  001534R     002
BLKT05= 000005   	CPXLST= ****** GX	GLBTRM  000014RG    002	RLDT04= 000004   	TTLLEN= 000040
BLKT06= 000006   	CPXMUL= 000003   	GSDT00= 000000   	RLDT05= 000005   	UARTBL  000070R     004
BOPADD  000450R     002	CPXNEG= 000010   	GSDT01= 000400   	RLDT06= 000006   	UOPTBL  000032R     004
BOPAND  000536R     002	CPXOPC= 000010   	GSDT02= 001000   	RLDT07= 000007   	VALUE = ****** GX
BOPDIV  000614R     002	CPXREL= 000017   	GSDT03= 001400   	RLDT10= 000010   	VT    = 000013
BOPDVX  000646R     002	CPXRTN  000200R     002	GSDT04= 002000   	RLDT11= 000011   	XBSRCH= 000000
BOPIOR  000550R     002	CPXSDS= 000013   	GSDT05= 002400   	RLDT15= 000015   	XCREF = 000000
BOPMUL  000560R     002	CPXSTL= ****** GX	GSDT06= 003000   	RLDT16= 000016   	XEDABS= 000000
BOPSUB  000430R     002	CPXSTO= 000012   	GTRMCK  000020R     002	RLDT17= 000017   	XEDCDR= 000000
BOPTBL  000000R     004	CPXSUB= 000002   	GTRMI   000000R     002	RSX11M= 000000   	XEDCRF= 000000
BPMB  = 000020   	CR    = 000015   	ILVL  = 000004   	R$$11M= 000000   	XEDFPT= 000000
CHSCAN= ****** GX	CRADIX= ****** GX	INSERT= ****** GX	R50DOT= ****** GX	XEDLC = 000000
CH.ADD= 000053   	CRFTRM  001114R     002	LBLFLG= 000002   	SAVREG= ****** GX	XEDPIC= 000000
CH.AND= 000046   	CSTACC= 000020   	LET.A = 000101   	SETCPX  000172R     002	XEDPNC= 000000
CH.BSL= 000134   	CSTALO= 000004   	LET.B = 000102   	SETNB = ****** GX	XFCSQN= 000000
CH.COL= 000072   	CSTFLG= 000050   	LET.C = 000103   	SETSYM= ****** GX	XFLTG = 000000
CH.COM= 000054   	CSTGBL= 000100   	LET.D = 000104   	SETXPR= ****** GX	XMIT4 = ****** GX
CH.DIV= 000057   	CSTMEM= 000001   	LET.E = 000105   	SMLLEN= 000120   	XOPEXP= 000000
CH.DOL= 000044   	CSTREL= 000040   	LET.F = 000106   	SPACE = 000040   	XSUBD = 000000
CH.DOT= 000056   	CSTTYP= 000200   	LET.G = 000107   	SRCLEN= 000204   	XZERR = 000000
CH.EQU= 000075   	CVTNUM= ****** GX	LET.O = 000117   	SSRCH = ****** GX	X45   = 000000
CH.HSH= 000043   	DEFFLG= 000010   	LET.Z = 000132   	STLLEN= 000100   	YQCMO = 000000
CH.IND= 000100   	DFGFLG= 000020   	LF    = 000012   	STXOPC  001574R     002	ZAPCPX= ****** GX
CH.IOR= 000041   	DIG.0 = 000060   	LINLEN= 000204

. ABS.	000000	   000
      	000000	   001
PUREI 	001632	   002
IMPURE	000012	   003
DPURE 	000116	   004
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  3380 WORDS  ( 14 PAGES)
DYNAMIC MEMORY:  4160 WORDS  ( 16 PAGES)
ELAPSED TIME:  00:00:40
EXPRS	MACRO M1108  05-DEC-77 23:19  PAGE 5-10
SYMBOL TABLE

[45,10]EXPRS,[45,20]EXPRS/-SP=[45,30]RSXPAR,MPARAM,GENMC,FLGDF,EXPRS
EXTSK	MACRO M1108  05-DEC-77 23:40  PAGE 2


      1						.TITLE	EXTSK
      2						.IDENT	/01/
      3
      4					;
      5					; COPYRIGHT (C) 1976
      6					; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
      7					;
      8					; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
      9					; SINGLE COMPUTER SYSTEM AND MAY  BE  COPIED   ONLY  WITH  THE
     10					; INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE,  OR
     11					; ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED  OR  OTHERWISE
     12					; MADE AVAILABLE TO ANY OTHER PERSON   EXCEPT FOR  USE ON SUCH
     13					; SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE  TERMS.  TITLE
     14					; TO AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL  TIMES  REMAIN
     15					; IN DEC.
     16					;
     17					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     18					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     19					; EQUIPMENT CORPORATION.
     20					;
     21					; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF
     22					; ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     23					;
     24					; VERSION 01
     25					;
     26					; C. MONIA 30-JUL-76
     27					;
     28					; EXTEND THE TASK REGION
     29					;
     30					; MACRO LIBRARY CALLS
     31					;
     32
     33						.MCALL	DIR$
     34
     35					;+
     36					; **-$EXTSK-EXTEND THE TASK REGION
     37					;
     38					; INPUTS:
     39					;
     40					;	R1=SIZE OF EXTENSION IN BYTES
     41					;
     42					; OUTPUTS:
     43					;
     44					;	C/CLEAR - TASK REGION EXTENDED BY SPECIFIED AMOUNT (ROUNDED TO
     45					;		 NEXT 32 WORD BOUDARY)
     46					;
     47					;		R1=EXTENSION SIZE (ROUNDED TO NEXT 32W BOUNDARY)
     48					;
     49					;	C/SET - TASK EXTENSION FAILED
     50					;
     51					; ALL OTHER REGISTERS ARE PRESERVED
     52					;
     53					;-
     54
     55	000000				$EXTSK::			;
     56	000000	062701 	000077 			ADD	#77,R1		; ROUND INCREMENT TO 32W BOUNDARY
     57	000004	042701 	000077 			BIC	#77,R1		; REMOVE EXCESS BITS
EXTSK	MACRO M1108  05-DEC-77 23:40  PAGE 2-1


     58	000010	103413 				BCS	10$		; IF C/S ERROR
     59	000012	005046 				CLR	-(SP)		; CLEAR THIRD WORD OF DPB
     60	000014	010146 				MOV	R1,-(SP)	; PUSH EXTEND INCREMENT
     61
     62		000006 				.REPT	6
     63
     64						ASR	(SP)		; CONVERT TO 32-W BLOCKS
     65
     66						.ENDR
     67
     68	000032	012746 	001531 			MOV	#<3.*400!89.>,-(SP) ; PUSH DIC,DPB SIZE
     69	000036					DIR$			; ISSUE DIRECTIVE
     70	000040				10$:				;
     71	000040					RETURN			;
     72
     73		000001 				.END
EXTSK	MACRO M1108  05-DEC-77 23:40  PAGE 2-2
SYMBOL TABLE

CR    = 000015   	HT    = 000011   	R$$11M= 000000   	VT    = 000013   	$EXTSK  000000RG
FF    = 000014   	LF    = 000012   	SPA   = 000040

. ABS.	000000	   000
      	000042	   001
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  735 WORDS  ( 3 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:06
[45,10]EXTSK,[45,20]EXTSK/-SP=[45,30]MACFLM,EXTSK
FLOAT	MACRO M1108  05-DEC-77 23:20  PAGE 4


      1						.TITLE	FLOAT
      2						.IDENT	/03/
      3
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     13					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     14					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     15					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     16					;
     17					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     18					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     19					; EQUIPMENT CORPORATION.
     20					;
     21					; VERSION 03
     22					;
     23					; B. BOWERING
     24					;
     25					;	MODIFIED BY:
     26					;
     27					;	D.N. CUTLER 6-FEB-73
     28					;	H.A. NICHOLS	18-JUN-74	017
     29					;
     30					;+
     31					; **-FLT4-FOUR WORD FLOATING POINT
     32					; **-FLT2-TWO WORD FLOATING POINT
     33					;-
     34
     35						.IF NDF	XFLTG
     36						PURE	PUREI,I		;++017
     37					FLT4::	INC	R3		;SET FOR 4 WORD
     38					FLT2::	INC	R3		;SET FOR TWO WORD
     39						ASL	R3		;NOW 2 OR 4
     40					1$:	TSTARG
     41						BEQ	4$		;IF EQ DONE
     42						CALL	@FLTPNT-2(R3)	;EVALUTE NUMBER
     43						BNE	2$		;BRANCH IF NON-NULL
     44						ERROR	A		;  NULL, FLAG ERROR
     45					2$:	MOV	R3,R2		;GET A WORKING COUNT
     46						MOV	#FLTBUF,R1	;POINT TO FLOATING POINT BUFFER
     47					3$:	MOV	(R1)+,(R4)	;MOVE IN NEXT NUMBER
     48						STCODE			;PLACE ON CODE ROLL
     49						SOB	R2,3$		;LOOP ON WORD COUNT
     50						BR	1$		;CONTINUE
     51					4$:	RETURN			;
     52					FLTG4W:	INC	FLTWDC		;FLOATING POINT NUMBER EVALUATOR
     53					FLTG2W:	INC	FLTWDC
     54					FLTG1W::SAVREG			;SAVE REGISTERS
     55						MOV	CHRPNT,-(SP)	;STACK CURRENT CHARACTER POINTER
     56						MOV	#FLTBUF,R3	;CONVENIENT COPY OF POINTERS
     57						MOV	#FLTSAV,R4	;  TO BUFFER AND SAVE AREA
FLOAT	MACRO M1108  05-DEC-77 23:20  PAGE 4-1


     58						MOV	R4,R1
     59					1$:	CLR	-(R1)		;INIT VARIABLES
     60						CMP	R1,#FLTBEG
     61						BHI	1$		;LOOP UNTIL DONE
     62						MOV	#65.,FLTBEX	;INIT BINARY EXPONENT
     63						CMP	#CH.ADD,R5	;  "+"?
     64						BEQ	10$		;  YES, BYPASS AND IGNORE
     65						CMP	#CH.SUB,R5	; "-"?
     66						BNE	11$		;  NO
     67						MOV	#100000,FLTSGN	;YES, SET SIGN AND BYPASS CHAR
     68					10$:	GETCHR			;GET THE NEXT CHARACTER
     69					11$:	BITB	#CT.NUM,CTTBL(R5)	;NUMERIC?
     70						BEQ	20$		;  NO
     71						BIT	#174000,(R3)	;NUMERIC, ROOM FOR MULTIPLICATION?
     72						BEQ	12$		;  YES
     73						INC	FLTEXP		;NO, COMPENSATE FOR THE SNUB
     74						BR	13$
     75					12$:	CALL	FLTM50		;MULTIPLY BY 5
     76						CALL	FLTGLS		;CORRECTION, MAKE THAT *10
     77						SUB	#DIG.0,R5	;MAKE ABSOLUTE
     78						MOV	R4,R2		;POINT TO END OF BUFFER
     79						ADD	R5,-(R2)	;ADD IN
     80						ADC	-(R2)		;RIPPLE CARRY
     81						ADC	-(R2)
     82						ADC	-(R2)
     83					13$:	ADD	FLTDOT,FLTEXP	;DECREMENT IF PROCESSING FRACTION
     84						CLR	(SP)		;CLEAR INITIAL CHAR POINTER (WE'RE GOOD)
     85						BR	10$		;TRY FOR MORE
     86					20$:	CMP	#CH.DOT,R5	;DECIMAL POINT?
     87						BNE	21$		;  NO
     88						COM	FLTDOT		;YES, MARK IT
     89						BMI	10$		;LOOP IF FIRST TIME AROUND
     90					21$:	CMP	#LET.E,R5	;EXPONENT?
     91						BNE	FLTG3		;  NO
     92						GETNB			;YES, BYPASS "E" AND BLANKS
     93						MOV	CRADIX,-(SP)	;STACK CURRENT RADIX
     94						MOV	#10.,CRADIX	;SET TO DECIMAL
     95						ABSTRM			;ABSOLUTE TERM
     96						MOV	(SP)+,CRADIX	;RESTORE RADIX
     97						ADD	R0,FLTEXP	;UPDATE EXPONENT
     98					FLTG3:	MOV	R3,R1
     99						MOV	(R1)+,R0	;TEST FOR ZERO
    100						BIS	(R1)+,R0
    101						BIS	(R1)+,R0
    102						BIS	(R1)+,R0
    103						BEQ	FLTGEX		;EXIT IF SO
    104					31$:	TST	FLTEXP		;TIME TO SCALE
    105						BEQ	FLTG5		;FINI IF ZERO
    106						BLT	41$		;DIVIDE IF .LT. ZERO
    107						CMP	(R3),#031426	;MULTIPLY, CAN WE *5?
    108						BHI	32$		;  NO
    109						CALL	FLTM50		;YES, MULTIPLY BY 5
    110						INC	FLTBEX		;  AND BY TWO
    111						BR	33$
    112					32$:	CALL	FLTM54		;MULTIPLY BY 5/4
    113						ADD	#3.,FLTBEX	;  AND BY 8
    114					33$:	DEC	FLTEXP		;  OVER 10
FLOAT	MACRO M1108  05-DEC-77 23:20  PAGE 4-2


    115						BR	31$
    116					40$:	DEC	FLTBEX		;DIVISION, LEFT JUSTIFY BITS
    117						CALL	FLTGLS
    118					41$:	TST	(R3)		;SIGN BIT SET?
    119						BPL	40$		;  NO, LOOP
    120						MOV	#16.*2,-(SP)	;16 OUTER, 2 INNER
    121						CALL	FLTGRS		;SHIFT RIGHT
    122						CALL	FLTGSV		;PLACE IN SAVE BUFFER
    123					42$:	BIT	#1,(SP)		;ODD LAP?
    124						BNE	43$		;  YES
    125						CALL	FLTGRS		;MOVE A COUPLE OF BITS RIGHT
    126						CALL	FLTGRS
    127					43$:	CALL	FLTGRS		;ONCE MORE TO THE RIGHT
    128						CALL	FLTGAD		;ADD IN SAVE BUFFER
    129						DEC	(SP)		;END OF LOOP?
    130						BGT	42$		;  NO
    131						TST	(SP)+		;YES, PRUNE STACK
    132						SUB	#3.,FLTBEX
    133						INC	FLTEXP
    134						BR	31$
    135					FLTG5:	DEC	FLTBEX		;LEFT JUSTIFT
    136						CALL	FLTGLS
    137						BCC	FLTG5		;LOSE ONE BIT
    138						ADD	#200,FLTBEX	;SET EXCESS 128.
    139						BLE	2$		;BRANCH IF UNDER-FLOW
    140						TSTB	FLTBEX+1	;HIGH ORDER ZERO?
    141						BEQ	3$		;  YES
    142					2$:	ERROR	N		;NO, ERROR
    143					3$:	MOV	R4,R2		;SET TO SHIFT EIGHT BITS
    144						MOV	R2,R1
    145						TST	-(R1)		;R1 IS ONE LOWER THAN R2
    146					4$:	CMP	-(R1),-(R2)	;DOWN ONE WORD
    147						MOVB	(R1),(R2)	;MOVE UP A BYTE
    148						SWAB	(R2)		;BEWARE OF THE INSIDE-OUT PC!!
    149						CMP	R2,R3		;END?
    150						BNE	4$
    151						CALL	FLTGRS		;SHIFT ONE PLACE RIGHT
    152						ROR	(R4)		;SET HIGH CARRY
    153						.IF NDF	XEDFPT
    154						BIT	#ED.FPT,EDMASK	;TRUNCATION?
    155						BEQ	7$		;  YES
    156						.ENDC
    157						MOV	FLTWDC,R2	;GET SIZE COUNT
    158						ASL	R2		;DOUBLE
    159						BNE	8$		;PRESET TYPE
    160						INC	R2		;SINGLE WORD
    161					8$:	ASL	R2		;CONVERT TO BYTES
    162						BIS	#077777,FLTBUF(R2)
    163						SEC
    164					5$:	ADC	FLTBUF(R2)
    165						DEC	R2
    166						DEC	R2
    167						BGE	5$
    168						TST	(R3)		;TEST SIGN POSITION
    169						BPL	7$		;OK IF POSITIVE
    170					6$:	ERROR	T
    171					7$:	ADD	FLTSGN,(R3)	;SET SIGN, IF ANY
FLOAT	MACRO M1108  05-DEC-77 23:20  PAGE 4-3


    172					FLTGEX:	CLR	MODE		;MAKE ABSOLUTE
    173						CLR	FLTWDC		;CLEAR COUNT
    174						MOV	(R3),VALUE	;PLACE FIRST GUY IN VALUE
    175						MOV	(SP)+,R0	;ORIGIONAL CHAR POINTER
    176						BEQ	1$		;ZERO (GOOD) IF ANY DIGITS PROCESSED
    177						MOV	R0,CHRPNT	;NONE, RESET TO WHERE WE CAME IN
    178						CLR	R3		;FLAG AS FALSE
    179					1$:	MOV	R3,R0		;SET FLAG IN R0
    180						JMP	SETNB		;RETURN WITH NON-BLANK
    181					FLTM54:	CMP	(R3),#146314	;ROOM?
    182						BLO	1$
    183						CALL	FLTGRS
    184						INC	FLTBEX
    185					1$:	CALL	FLTGSV		;SAVE IN BACKUP
    186						CALL	FLTGRS		;SCALE RIGHT
    187						CALL	FLTGRS
    188						BR	FLTGAD
    189					FLTM50:	CALL	FLTGSV		;*5
    190						CALL	FLTGLS
    191						CALL	FLTGLS
    192					FLTGAD:	MOV	R4,R2		;POINT TO SAVE AREA
    193					1$:	ADD	6(R2),-(R2)	;ADD IN WORD
    194						MOV	R2,R1		;SET FOR CARRIES
    195					2$:	ADC	-(R1)		;ADD IN
    196						BCS	2$		;CONTINUE RIPPLE, IF NECESSARY
    197						CMP	R2,R3		;THROUGH?
    198						BNE	1$		;  NO
    199						RETURN
    200					FLTGRS:	CLC			;RIGHT SHIFT
    201						MOV	R3,R1		;RIGHT ROTATE
    202						ROR	(R1)+
    203						ROR	(R1)+
    204						ROR	(R1)+
    205						ROR	(R1)+
    206						RETURN
    207					FLTGLS:	MOV	R4,R2		;LEFT SHIFT
    208						ASL	-(R2)
    209						ROL	-(R2)
    210						ROL	-(R2)
    211						ROL	-(R2)
    212						RETURN
    213					FLTGSV:	MOV	R3,R1		;MOVE FLTBUF TO FLTSAV
    214						MOV	R4,R2
    215						JMP	XMIT4
    216
    217
    218						.PSECT	IMPURE,D,RW	;++017
    219					FLTBEG:				;START OF FLOATING POINT IMPURE
    220					FLTSGN:	.BLKW			;SIGN BIT
    221					FLTDOT:	.BLKW			;DECIMAL POINT FLAG
    222					FLTEXP:	.BLKW			;DECIMAL EXPONENT
    223					FLTBEX:	.BLKW	1		;BINARY EXPONENT (MUST PRECEED FLTBUF)
    224					FLTBUF:	.BLKW	4		;MAIN AC
    225					FLTSAV:	.BLKW	4
    226
    227						PURE	DPURE,D		;++017
    228					FLTPNT:	.WORD	FLTG2W		;
FLOAT	MACRO M1108  05-DEC-77 23:20  PAGE 4-4


    229						.WORD	FLTG4W		;
    230
    231						.ENDC
    232
    233		000001 				.END
FLOAT	MACRO M1108  05-DEC-77 23:20  PAGE 4-5
SYMBOL TABLE

AM.DEC= 000040   	CH.IOR= 000041   	CPXSDS= 000013   	LBLFLG= 000002   	RLDT10= 000010
AM.DEF= 000010   	CH.LAB= 000074   	CPXSTO= 000012   	LET.A = 000101   	RLDT11= 000011
AM.IMM= 000027   	CH.LP = 000050   	CPXSUB= 000002   	LET.B = 000102   	RLDT15= 000015
AM.INC= 000020   	CH.MUL= 000052   	CR    = 000015   	LET.C = 000103   	RLDT16= 000016
AM.NDX= 000060   	CH.PCT= 000045   	CSTACC= 000020   	LET.D = 000104   	RLDT17= 000017
AM.PC = 000007   	CH.QM = 000077   	CSTALO= 000004   	LET.E = 000105   	RSX11M= 000000
AM.REL= 000067   	CH.QTM= 000042   	CSTFLG= 000050   	LET.F = 000106   	R$$11M= 000000
ASTFLG= 000114   	CH.RAB= 000076   	CSTGBL= 000100   	LET.G = 000107   	SPACE = 000040
BLKT01= 000001   	CH.RP = 000051   	CSTMEM= 000001   	LET.O = 000117   	TAB   = 000011
BLKT02= 000002   	CH.SMC= 000073   	CSTREL= 000040   	LET.Z = 000132   	VT    = 000013
BLKT03= 000003   	CH.SUB= 000055   	CSTTYP= 000200   	LF    = 000012   	XBSRCH= 000000
BLKT04= 000004   	CH.UAR= 000136   	DEFFLG= 000010   	LST.KB= 000001   	XCREF = 000000
BLKT05= 000005   	CH.XCL= 000047   	DFGFLG= 000020   	LST.LP= 000002   	XEDABS= 000000
BLKT06= 000006   	CPXADD= 000001   	DIG.0 = 000060   	MDFFLG= 000004   	XEDCDR= 000000
CH.ADD= 000053   	CPXAND= 000005   	DIG.9 = 000071   	PSTFLG= 000050   	XEDFPT= 000000
CH.AND= 000046   	CPXCOM= 000011   	FF    = 000014   	REGFLG= 000001   	XEDLC = 000000
CH.BSL= 000134   	CPXCON= 000020   	GLBFLG= 000100   	RELFLG= 000040   	XEDPIC= 000000
CH.COL= 000072   	CPXDIV= 000004   	GSDT00= 000000   	RLDT00= 000000   	XEDPNC= 000000
CH.COM= 000054   	CPXFLG= 000200   	GSDT01= 000400   	RLDT01= 000001   	XFCSQN= 000000
CH.DIV= 000057   	CPXGLB= 000016   	GSDT02= 001000   	RLDT02= 000002   	XFLTG = 000000
CH.DOL= 000044   	CPXIOR= 000006   	GSDT03= 001400   	RLDT03= 000003   	XOPEXP= 000000
CH.DOT= 000056   	CPXMUL= 000003   	GSDT04= 002000   	RLDT04= 000004   	XSUBD = 000000
CH.EQU= 000075   	CPXNEG= 000010   	GSDT05= 002400   	RLDT05= 000005   	XZERR = 000000
CH.HSH= 000043   	CPXOPC= 000010   	GSDT06= 003000   	RLDT06= 000006   	X45   = 000000
CH.IND= 000100   	CPXREL= 000017   	ILVL  = 000004   	RLDT07= 000007

. ABS.	000000	   000
      	000000	   001
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2450 WORDS  ( 10 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:18
[45,10]FLOAT,[45,20]FLOAT/-SP=[45,30]RSXPAR,GENMC,FLGDF,FLOAT
GETLN	MACRO M1108  05-DEC-77 23:20  PAGE 6


      1						.TITLE	GETLN
      2						.IDENT	/X06.03/							;**NEW**
      3															;**-1
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION X06.03								;**NEW**
     23					;										;**-1
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 9-FEB-73
     29					;	C.A. D'ELIA	10-JAN-74	010
     30					;	C.A. D'ELIA	22-MAR-74	014
     31					;	C.A. D'ELIA	07-APR-74	015
     32					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)			;**NEW**
     33					;	C.A. D'ELIA	01-NOV-75	022	(LC MACRO CALL ARGS)		;**NEW**
     34					;	C.A. D'ELIA	13-APR-76	024	(MISC-FCS SEQUENCED FILES)	;**NEW**
     35					;										;**-1
     36					;+
     37					; **-GETLIN-GET AN INPUT LINE
     38					;-
     39
     40	000000					PURE	PUREI,I		;++017
     41	000000				GETLIN::SAVREG			;SAVE REGISTERS
     42	000004	004767 	000000G		GETL01:	CALL	XCTLIN		;INIT LINE-ORIENTED VARIABLES
     43	000010	016700 	000002'			MOV	FFCNT,R0	;ANY RESERVED FF'S?
     44	000014	001414 				BEQ	31$		;  NO
     45	000016	060067 	000004'			ADD	R0,PAGNUM	;YES, UPDATE PAGE NUMBER
     46	000022	012767 	177777 	000006'		MOV	#-1,PAGEXT
     47	000030	005067 	000002'			CLR	FFCNT
     48	000034	005767 	000000G			TST	PASS
     49	000040	001402 				BEQ	31$
     50	000042	005067 	000000'			CLR	LPPCNT
     51	000046	012702 	000000G		31$:	MOV	#LINBUF,R2
     52	000052	010267 	000000G			MOV	R2,LCBEGL	;SEAT UP BEGINNING
     53	000056	012767 	000000G	000000G		MOV	#LINEND,LCENDL	;  AND END OF LINE MARKERS
     54	000064	004767 	000160 			CALL	GETL20		;GET PHYSICAL LINE
     55	000070	005700 				TST	R0		;TEST RESULT
     56	000072	002744 				BLT	GETL01		;RE-TRY IF .LT. 0
     57	000074	003047 				BGT	GETL09		;EXIT IF .GT. 0
GETLN	MACRO M1108  05-DEC-77 23:20  PAGE 6-1


     58	000076	014104 			GETL02:	MOV	-(R1),R4	;GET BYTE COUNT
     59	000100	005021 				CLR	(R1)+		;SET STOPPER
     60	000102	060104 				ADD	R1,R4		;COMPUTE END
     61	000104	105014 			3$:	CLRB	(R4)		;FORM ASCIZ
     62	000106	114405 				MOVB	-(R4),R5	;GET LAST CHAR
     63	000110	020527 	000015 			CMP	R5,#CR		;IF > CR
     64	000114	101015 				BHI	6$
     65	000116	020527 	000012 			CMP	R5,#LF		;  OR < LF
     66	000122	103412 				BLO	6$		;  MOVE ON
     67	000124	020527 	000014 			CMP	R5,#FF		;FORM FEED?
     68	000130	001365 				BNE	3$		;  NO, LOOP
     69						.IF NDF	XSML
     70	000132	005767 	000000G			TST	SMLLVL		;SYSTEM MACRO?
     71	000136	001362 				BNE	3$		;  YES, DON'T TALLY FF
     72						.ENDC									;**-2
     73	000140	005267 	000002'			INC	FFCNT		;COUNT THE PAGE
     74	000144	000757 				BR	3$
     75	000146	110522 			5$:	MOVB	R5,(R2)+	;MOVE INTO LINBUF
     76	000150	112105 			6$:	MOVB	(R1)+,R5	;FETCH NEXT CHAR
     77	000152	116500 	000000G			MOVB	CTTBL(R5),R0	;GET CHARACTERISTICS
     78	000156	001406 				BEQ	7$		;QUESTIONABLE
     79	000160	032700 	000000G			BIT	#CT.LC,R0	;LOWER CASE?
     80	000164	001770 				BEQ	5$		;  NO
     81						.IF NDF	XEDLC
     82						BIT	#ED.LC,EDMASK	;LOWER CASE ENABLED?
     83						BNE	4$		;  NO, CONVERT TO UPPER
     84						ADD	#240,R5		;YES, END UP WITH "200 + LC"
     85						.ENDC
     86	000166	162705 	000040 		4$:	SUB	#40,R5		;CONVERT LOWER TO UPPER CASE
     87	000172	000765 				BR	5$		;STORE
     88	000174	110512 			7$:	MOVB	R5,(R2)		;QUESTIONABLE, ASCIZ NULL?
     89	000176	001406 				BEQ	GETL09		;  YES, ALL SET
     90	000200					ERROR	I		;NO, ILLEGAL CHARACTER
     91	000206	012705 	000200 			MOV	#200,R5		;STORE ZERO WITH FLAG BIT
     92	000212	000755 				BR	5$
     93	000214				GETL09:	.IF NDF	XEDCDR
     94						MOVB	LINBUF+72.,CDRSAV	;SAVE COLUMN 73
     95						BIT	#ED.CDR,EDMASK	;CARD READER TYPE?
     96						BNE	38$		;  NO
     97						CLRB	LINBUF+72.	;YES, FORCE EOL
     98						.ENDC
     99	000214	012767 	000000G	000000G	38$:	MOV	#LINBUF,CHRPNT
    100	000222					SETNB
    101	000226	001005 				BNE	39$		;ALL SET IF NON-NULL LINE
    102	000230	005767 	000002'			TST	FFCNT		;NULL, FORM FEED?
    103	000234	001402 				BEQ	39$		;  NO
    104	000236	000167 	177542 			JMP	GETL01		;YES, JUST BUMP PAGE COUNT
    105	000242	016700 	000000G		39$:	MOV	ENDFLG,R0	;RETURN WITH "ENDFLG" AS ARGUMENT
    106	000246	000207 				RETURN
    107	000250				GETL20:
    108						.IF NDF	XSML
    109	000250	012700 	000012 		10$:	MOV	#SMLCHN,R0	;++015 ASSUME READ FROM MACRO LIB CHANNEL	;**-3
    110	000254	005767 	000000G			TST	SMLLVL		;PROCESSING SYSTEM MACRO?
    111	000260	001416 				BEQ	1$		;++015 BRANCH IF NOT				;**-2
    112	000262	010001 			15$:	MOV	R0,R1		;++015 SAVE SOFTWARE CHANNEL NUMBER		;**-1
    113	000264	004767 	000000G			CALL	$READ		;++015 GET LINE OF MACRO DEFINITION
    114	000270	005000 				CLR	R0		;ASSUME OK
GETLN	MACRO M1108  05-DEC-77 23:20  PAGE 6-2


    115	000272	132761 	000000G	000000G		BITB	#IO$EOF,IOFTBL(R1)  ;++015 END-OF-FILE DETECTED?
    116	000300	001403 				BEQ	2$		;  NO
    117	000302	005200 				INC	R0		;YES, SET R0
    118	000304	050067 	000000G			BIS	R0,ENDFLG	;  AND END FLAG
    119	000310	016101 	000000G		2$:	MOV	BUFTBL(R1),R1	;++015 LOAD R1 WITH INPUT BUFFER ADDR
    120	000314	000207 				RETURN
    121						.ENDC
    122
    123	000316				1$:	.IF NDF	XMACRO
    124	000316	016767 	000000G	000000'		MOV	MSBMRP,MSBOFF	;++022 GET MACRO TEXT READ POINTER		;**NEW**
    125	000324	001030 				BNE	GETL10		;  YES, PROCESS IT				;**-1
    126						.ENDC
    127	000326	004767 	000000G			CALL	GETPLI		;GET PHYSICAL LINE FROM EXEC
    128	000332	005700 				TST	R0		;NORMAL?
    129	000334	001417 				BEQ	4$		;  YES
    130	000336	002407 				BLT	3$		;  NEW FILE
    131	000340					ERROR	E		;EOF, ERROR
    132	000346	005267 	000000G			INC	ENDFLG		;FLAG IT
    133	000352	005367 	000002'			DEC	FFCNT		;INHIBIT EXTRA PAGE EJECT
    134	000356	005267 	000002'		3$:	INC	FFCNT		;NEW FILE, FORCE EJECT
    135						.IF NDF	XLCSEQ
    136	000362	012767 	177777 	000010'		MOV	#-1,LINNUM	;START FILE WITH NEW SEQUENCE NUMBERS
    137	000370	005067 	000014'			CLR	SEQEND		;
    138						.ENDC
    139	000374				4$:				;++015
    140					;++015
    141					;
    142					; CURRENT IMPLEMENTATION OF 'FILE CONTROL SERVICES' DOES NOT SUPPORT
    143					; THE DETECTION OF RECORDS TOO LONG WITH SUFFICIENT RECOVERY ALTERNATIVES.
    144					;
    145					;--015
    146	000374	016701 	000002G		5$:	MOV	BUFTBL+SRCCHN,R1	;POINT TO INPUT BUFFER
    147						.IF NDF	XLCSEQ
    148	000400	005267 	000010'			INC	LINNUM		;INCREMENT LINE COUNT
    149						.IF NDF	XFCSQN		;++024						;**NEW**
    150						MOV	FDBTBL+SRCCHN,R4  ;++024 GET FDB ADDRESS			;**NEW**
    151						MOV	F.SEQN(R4),R4	;++024 GET RECORD SEQUENCE NUMBER		;**NEW**
    152						BEQ	55$		;++024 IF EQ NONE DEFINED			;**NEW**
    153						MOV	R4,LINNUM	;++024 USE IT AS LINE NUMBER			;**NEW**
    154					55$:				;++024						;**NEW**
    155						.ENDC			;++024						;**NEW**
    156						.ENDC
    157	000404	000207 				RETURN
    158
    159						.IF NDF	XMACRO
    160	000406	016701 	000000G		GETL10:	MOV	MSBRDV,R1	;++021 GET VIRTUAL LOCN OF TEXT BLOCK		;**NEW**
    161	000412	004767 	000240 		50$:	CALL	310$		;++021 SETUP TO READ FROM VIRTUAL MEMORY	;**NEW**
    162	000416	004767 	000126 		100$:	CALL	200$		;++021 TRANSFER A CHAR INTO LINE BUFFER		;**NEW**
    163	000422	003375 				BGT	100$		;++021 REPEAT UNTIL SPECIAL CHAR SEEN		;**NEW**
    164	000424	001440 				BEQ	190$		;++021 ZERO INDICATES END-OF-LINE		;**NEW**
    165	000426	114203 				MOVB	-(R2),R3	;++021 BACKUP AND GET SPECIAL CHAR		;**NEW**
    166	000430	020327 	000000G			CMP	R3,#MT.MAX	;++021 IS IT A DEFINITION TERMINATOR?		;**NEW**
    167	000434	101500 				BLOS	230$		;++021 IS LOS, THEN YES				;**NEW**
    168	000436	016746 	000000G			MOV	MSBRDV,-(SP)	;++021 NO, SAVE VIRT LOCN OF TEXT BLOCK		;**NEW**
    169	000442	016746 	000000'			MOV	MSBOFF,-(SP)	;++022 AND TEXT BLK OFFSET TO NEXT CHAR		;**NEW**
    170	000446	016701 	000000G			MOV	MSBARG,R1	;++021 GET VIRT LOCN OF FIRST ARG BLOCK		;**NEW**
    171	000452	004767 	000172 			CALL	300$		;++021 SETUP TO READ FROM VIRT MEMORY		;**NEW**
GETLN	MACRO M1108  05-DEC-77 23:20  PAGE 6-3


    172	000456	010246 				MOV	R2,-(SP)	;++021 SAVE CURRENT LINE BUFFER POINTER		;**NEW**
    173	000460	005403 				NEG	R3		;++021 CALCULATE ARGUMENT NUMBER		;**NEW**
    174	000462	026727 	000000G	000000G		CMP	MSBTYP,#MT.MAC	;++021 IS THIS A '.MACRO' DEFINITION?		;**NEW**
    175	000470	001402 				BEQ	120$		;++021 IF EQ YES (IE, NOT .IRP/.REPT)		;**NEW**
    176	000472	016703 	000000G			MOV	MSBCNT,R3	;++021 ELSE, USE REPEAT COUNT AS ARG #		;**NEW**
    177	000476	011602 			120$:	MOV	(SP),R2		;++021 RESET LINE BUFFER POINTER		;**NEW**
    178	000500	004767 	000044 		130$:	CALL	200$		;++021 TRANSFER A CHAR INTO LINE BUFFER		;**NEW**
    179	000504	003375 				BGT	130$		;++021 REPEAT UNTIL SPECIAL CHAR SEEN		;**NEW**
    180	000506	002402 				BLT	140$		;++021 NEGATIVE MEANS END OF ARG LIST		;**NEW**
    181	000510					SOB	R3,120$		;++021 REPEAT UNTIL RIGHT ARG IS FOUND		;**NEW**
    182	000514	124226 			140$:	CMPB	-(R2),(SP)+	;++021 REMOVE TERMINATOR AND CLEAN STACK	;**NEW**
    183	000516	012667 	000000'			MOV	(SP)+,MSBOFF	;++022 REST TEXT BLK OFFSET TO NEXT CHAR	;**NEW**
    184	000522	012601 				MOV	(SP)+,R1	;++021 RESTORE VIRT LOCN OF TEXT BLOCK		;**NEW**
    185	000524	000732 				BR	50$		;++021 ARG SUBSTITUTION DONE--READ TEXT		;**NEW**
    186					 										;**NEW**
    187	000526	016767 	000000'	000000G	190$:	MOV	MSBOFF,MSBMRP	;++022 SAVE OFFSET FOR NEXT TEXT LINE		;**NEW**
    188	000534	052767 	000000G	000000G		BIS	#LC.ME,LCFLAG	;FLAG AS MACRO EXPANSION			;**-24
    189	000542	012700 	000001 			MOV	#1,R0		;EXIT GETLIN ROUTINE
    190	000546	000207 				RETURN
    191
    192	000550	022767 	000020 	000000'	200$:	CMP	#BPMB,MSBOFF	;++022 AT END OF CURRENT TEXT BLOCK?		;**NEW**
    193	000556	001003 				BNE	210$		;++021 IF NE NO					;**NEW**
    194	000560	011001 				MOV	(R0),R1		;++021 GET VIRT LOCN OF NEXT TEXT BLOCK		;**NEW**
    195	000562	004767 	000062 			CALL	300$		;++021 SETUP TO READ FROM VIRT MEMORY		;**NEW**
    196	000566	020227 	000204G		210$:	CMP	R2,#LINBUF+SRCLEN  ;++021 HAS SOURCE LINE OVERFLOWED?		;**NEW**
    197	000572	101404 				BLOS	220$		;++021 IF LOS NO				;**NEW**
    198	000574					ERROR	L		;YES, FLAG ERROR				;**-6
    199	000602	005302 				DEC	R2		;++021 DROP LAST CHARACTER			;**NEW**
    200	000604	005267 	000000'		220$:	INC	MSBOFF		;++022 INCREMENT TEXT BLOCK CHAR OFFSET		;**NEW**
    201	000610	111504 				MOVB	(R5),R4		;++022 GET NEXT MACRO TEXT CHARACTER		;**NEW**
    202	000612	100406 				BMI	225$		;++022 IF MI SPECIAL CHAR ENCOUNTERED		;**NEW**
    203	000614	132764 	000000G	000000G		BITB	#CT.LC,CTTBL(R4)  ;++022 IF THIS A LOWER CASE CHAR?		;**NEW**
    204	000622	001402 				BEQ	225$		;++022 IF EQ NO					;**NEW**
    205					 										;**NEW**
    206					 										;**NEW**
    207						.IF NDF	XEDLC		;++022						;**NEW**
    208					 										;**NEW**
    209						BIT	#ED.LC,EDMASK	;++022 IF LOWER CASE ENABLED?			;**NEW**
    210						BNE	224$		;++022 IF NE NO					;**NEW**
    211						ADD	#240,R4		;++022 YES, END UP WITH "200+LC"		;**NEW**
    212					 										;**NEW**
    213						.ENDC			;++022						;**NEW**
    214					 										;**NEW**
    215					 										;**NEW**
    216	000624	162704 	000040 		224$:	SUB	#40,R4		;++022 CONVERT CHAR TO UPPER CASE		;**NEW**
    217	000630	110422 			225$:	MOVB	R4,(R2)+	;++022 PUT CHAR IN LINE BUFFER			;**NEW**
    218	000632	105725 				TSTB	(R5)+		;++022 SET STATUS FROM ORIGINAL CHAR		;**NEW**
    219	000634	000207 				RETURN			;++021						;**NEW**
    220					 										;**NEW**
    221					 										;**NEW**
    222	000636	004767 	000000G		230$:	CALL	ENDMAC		;++021 TERMINATE MACRO EXPANSION		;**NEW**
    223	000642	012700 	177777 			MOV	#-1,R0		;++021 INDICATE UNSUCCESSFUL READ		;**NEW**
    224	000646	000207 				RETURN			;++021						;**NEW**
    225					 										;**NEW**
    226					 										;**NEW**
    227	000650	012767 	000002 	000000'	300$:	MOV	#2,MSBOFF	;++022 SET OFFSET TO FIRST CHAR IN BLOCK	;**NEW**
    228	000656	010167 	000000G		310$:	MOV	R1,MSBRDV	;++021 STORE VIRT LOCN OF TEXT BLOCK		;**NEW**
GETLN	MACRO M1108  05-DEC-77 23:20  PAGE 6-4


    229	000662	004767 	000010 			CALL	$CVRL2		;++021 GET REAL ADDR OF BLOCK IN R0		;**NEW**
    230	000666	010005 				MOV	R0,R5		;++021 CALC REAL ADDR OF NEXT CHAR ...		;**NEW**
    231	000670	066705 	000000'			ADD	MSBOFF,R5	;++022 IN THE TEXT BLOCK			;**NEW**
    232	000674	000207 				RETURN			;++021						;**NEW**
    233					 										;**NEW**
    234					 										;**NEW**
    235	000676	010246 			$CVRL2::MOV	R2,-(SP)	;++021 SAVE R2					;**NEW**
    236	000700	004767 	000000G			CALL	$CVRL		;++021 CONVERT VIRT LOCN TO REAL ...		;**NEW**
    237									;++021 ADDR (CLOBBERS R2)			;**NEW**
    238	000704	012602 				MOV	(SP)+,R2	;++021 RESTORE R2				;**NEW**
    239	000706	000207 				RETURN			;++021						;**NEW**
    240					 										;**NEW**
    241					 										;**NEW**
    242	000000					.PSECT	MIXED,D,RW	;++022						;**NEW**
    243					 										;**NEW**
    244	000000				MSBOFF:	.BLKW	1		;++022 MACRO TEXT BLOCK OFFSET POINTER		;**NEW**
    245					 										;**NEW**
    246					 										;**NEW**
    247						.ENDC									;**-6
    248
    249	000000					.PSECT	IMPPAS,D,GBL,RW	;++017
    250	000000				LPPCNT::.BLKW	1		;FORCE NEW PAGE WHEN NEGATIVE
    251	000002				FFCNT::	.BLKW	1		;UNPROCESSED FF COUNT
    252	000004				PAGNUM::.BLKW	1		;PAGE NUMBER
    253	000006				PAGEXT::.BLKW	1		;PAGE EXTENSION
    254
    255						.IF NDF	XLCSEQ
    256	000010				LINNUM::.BLKW	2		;CREF LINE NUMBER
    257	000014				SEQEND::.BLKW	1		;
    258						.ENDC
    259
    260		000001 				.END
GETLN	MACRO M1108  05-DEC-77 23:20  PAGE 6-5
SYMBOL TABLE

AM.DEC= 000040   	CH.SUB= 000055   	ERR.L = ****** GX	LINLEN= 000204   	RLDT16= 000016
AM.DEF= 000010   	CH.UAR= 000136   	FF    = 000014   	LINNUM  000010RG    004	RLDT17= 000017
AM.IMM= 000027   	CH.XCL= 000047   	FFCNT   000002RG    004	LPP   = 000074   	RSX11M= 000000
AM.INC= 000020   	CMOCHN= 000000   	GETLIN  000000RG    002	LPPCNT  000000RG    004	R$$11M= 000000
AM.NDX= 000060   	CPL   = 000120   	GETL01  000004R     002	LSTCHN= 000004   	SAVREG= ****** GX
AM.PC = 000007   	CPXADD= 000001   	GETL02  000076R     002	LSTLEN= 000204   	SEQEND  000014RG    004
AM.REL= 000067   	CPXAND= 000005   	GETL09  000214R     002	LST.KB= 000001   	SETNB = ****** GX
ASTFLG= 000114   	CPXCOM= 000011   	GETL10  000406R     002	LST.LP= 000002   	SMLCHN= 000012
BINCHN= 000006   	CPXCON= 000020   	GETL20  000250R     002	MAXCHN= 000014   	SMLLEN= 000120
BLKT01= 000001   	CPXDIV= 000004   	GETPLI= ****** GX	MDFFLG= 000004   	SMLLVL= ****** GX
BLKT02= 000002   	CPXFLG= 000200   	GLBFLG= 000100   	MSBARG= ****** GX	SPACE = 000040
BLKT03= 000003   	CPXGLB= 000016   	GSDT00= 000000   	MSBCNT= ****** GX	SRCCHN= 000002
BLKT04= 000004   	CPXIOR= 000006   	GSDT01= 000400   	MSBMRP= ****** GX	SRCLEN= 000204
BLKT05= 000005   	CPXMUL= 000003   	GSDT02= 001000   	MSBOFF  000000R     003	STLLEN= 000100
BLKT06= 000006   	CPXNEG= 000010   	GSDT03= 001400   	MSBRDV= ****** GX	TAB   = 000011
BPMB  = 000020   	CPXOPC= 000010   	GSDT04= 002000   	MSBTYP= ****** GX	TMPCNT= 000014
BUFTBL= ****** GX	CPXREL= 000017   	GSDT05= 002400   	MT.MAC= ****** GX	TTLLEN= 000040
CHRPNT= ****** GX	CPXSDS= 000013   	GSDT06= 003000   	MT.MAX= ****** GX	VT    = 000013
CH.ADD= 000053   	CPXSTO= 000012   	ILVL  = 000004   	OBJLEN= 000052   	XBSRCH= 000000
CH.AND= 000046   	CPXSUB= 000002   	IOFTBL= ****** GX	PAGEXT  000006RG    004	XCREF = 000000
CH.BSL= 000134   	CR    = 000015   	IO$EOF= ****** GX	PAGNUM  000004RG    004	XCTLIN= ****** GX
CH.COL= 000072   	CSTACC= 000020   	LBLFLG= 000002   	PASS  = ****** GX	XEDABS= 000000
CH.COM= 000054   	CSTALO= 000004   	LCBEGL= ****** GX	PSTFLG= 000050   	XEDCDR= 000000
CH.DIV= 000057   	CSTFLG= 000050   	LCENDL= ****** GX	REGFLG= 000001   	XEDCRF= 000000
CH.DOL= 000044   	CSTGBL= 000100   	LCFLAG= ****** GX	RELCHN= 000010   	XEDFPT= 000000
CH.DOT= 000056   	CSTMEM= 000001   	LC.ME = ****** GX	RELFLG= 000040   	XEDLC = 000000
CH.EQU= 000075   	CSTREL= 000040   	LET.A = 000101   	RLDLEN= 000052   	XEDPIC= 000000
CH.HSH= 000043   	CSTTYP= 000200   	LET.B = 000102   	RLDT00= 000000   	XEDPNC= 000000
CH.IND= 000100   	CTTBL = ****** GX	LET.C = 000103   	RLDT01= 000001   	XFCSQN= 000000
CH.IOR= 000041   	CT.LC = ****** GX	LET.D = 000104   	RLDT02= 000002   	XFLTG = 000000
CH.LAB= 000074   	DEFFLG= 000010   	LET.E = 000105   	RLDT03= 000003   	XOPEXP= 000000
CH.LP = 000050   	DFGFLG= 000020   	LET.F = 000106   	RLDT04= 000004   	XSUBD = 000000
CH.MUL= 000052   	DIG.0 = 000060   	LET.G = 000107   	RLDT05= 000005   	XZERR = 000000
CH.PCT= 000045   	DIG.9 = 000071   	LET.O = 000117   	RLDT06= 000006   	X45   = 000000
CH.QM = 000077   	ENDFLG= ****** GX	LET.Z = 000132   	RLDT07= 000007   	YQCMO = 000000
CH.QTM= 000042   	ENDMAC= ****** GX	LF    = 000012   	RLDT10= 000010   	$CVRL = ****** GX
CH.RAB= 000076   	ERRBTS= ****** GX	LINBUF= ****** GX	RLDT11= 000011   	$CVRL2  000676RG    002
CH.RP = 000051   	ERR.E = ****** GX	LINEND= ****** GX	RLDT15= 000015   	$READ = ****** GX
CH.SMC= 000073   	ERR.I = ****** GX

. ABS.	000000	   000
      	000000	   001
PUREI 	000710	   002
MIXED 	000002	   003
IMPPAS	000016	   004
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  4360 WORDS  ( 18 PAGES)
DYNAMIC MEMORY:  5216 WORDS  ( 20 PAGES)
ELAPSED TIME:  00:00:35
[45,10]GETLN,[45,20]GETLN/-SP=[45,30]RSXPAR,MPARAM,MCIOCH,GENMC,FLGDF,GETLN
GMARG	MACRO M1108  05-DEC-77 23:21  PAGE 4


      1						.TITLE	GMARG
      2						.IDENT	/02/
      3
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION 02
     23					;
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 10-FEB-73
     29					;	H.A. NICHOLS	18-JUN-74	017
     30					;
     31					;+
     32					; **-GMARG-GET MACRO ARGUMENT
     33					; **-GMARGF-ALTERNATE ENTRY
     34					; **-RMARG-REMOVE MACRO ARGUMENT
     35					;-
     36
     37	000000					PURE	PUREI,I		;++017
     38	000000				GMARG::	TSTARG			;TEST FOR NULL
     39	000004	001501 				BEQ	GMARGX		;  YES, JUST EXIT
     40	000006				GMARGF::SAVREG			;SAVE REGISTERS
     41	000012	005001 				CLR	R1		;CLEAR COUNT
     42	000014	012702 	000000G			MOV	#CHRPNT,R2
     43	000020	011246 				MOV	(R2),-(SP)	;SAVE INITIAL CHARACTER POINTER
     44	000022	012703 	000074 			MOV	#CH.LAB,R3	;ASSUME "<>"
     45	000026	012704 	000076 			MOV	#CH.RAB,R4
     46	000032	020503 				CMP	R5,R3		;TRUE?
     47	000034	001425 				BEQ	11$		;  YES
     48	000036	020527 	000136 			CMP	R5,#CH.UAR	;UP-ARROW?
     49	000042	001414 				BEQ	10$		;  YES
     50	000044	012746 	000000G		1$:	MOV	#CT.PC,-(SP)	;SET PRINTING CHARACTERS MASK
     51	000050	042716 	000000G			BIC	#CT.COM,(SP)	;CLEAR COMMA FLAG
     52	000054	042716 	000000G			BIC	#CT.SMC,(SP)	;CLEAR SEMICOLON FLAG
     53	000060	132665 	000000G			BITB	(SP)+,CTTBL(R5)	;PRINTING CHARACTER?
     54	000064	001433 				BEQ	21$		;  NO
     55	000066					GETCHR			;YES, MOVE ON
     56	000072	000764 				BR	1$
     57	000074				10$:	GETNB			; "^", BYPASS IT
GMARG	MACRO M1108  05-DEC-77 23:21  PAGE 4-1


     58	000100	001422 				BEQ	20$		;ERROR IF NULL
     59	000102	011216 				MOV	(R2),(SP)	;SET NEW POINTER
     60	000104	005103 				COM	R3		;NO "<" EQUIVALENT
     61	000106	010504 				MOV	R5,R4		;">" EQUIVALENT
     62	000110				11$:	GETCHR
     63	000114	001414 				BEQ	20$		;  ERROR IF EOL
     64	000116	020503 				CMP	R5,R3		; "<"?
     65	000120	001404 				BEQ	12$		;  YES
     66	000122	020504 				CMP	R5,R4		;NO, ">"?
     67	000124	001371 				BNE	11$		;  NO, TRY AGAIN
     68	000126	005301 				DEC	R1		;YES, DECREMENT LEVEL COUNT
     69	000130	005301 				DEC	R1
     70	000132	005201 			12$:	INC	R1
     71	000134	100365 				BPL	11$		;LOOP IF NOT THROUGH
     72	000136	005216 				INC	(SP)		;POINT PAST "<"
     73	000140	052705 	100000 			BIS	#100000,R5	;MUST MOVE PAST IN RMARG
     74	000144	000403 				BR	21$
     75	000146				20$:	ERROR	A
     76	000154	016700 	000000G		21$:	MOV	GMAPNT,R0	;GET CURRENT ARG SAVE POINTER
     77	000160	001002 				BNE	22$		;BRANCH IF INITIALIZED
     78	000162	012700 	000000G			MOV	#GMABLK,R0	;DO SO
     79	000166	011220 			22$:	MOV	(R2),(R0)+	;SAVE POINTER
     80	000170	010520 				MOV	R5,(R0)+	;  AND CHARACTER
     81	000172	105072 	000000 			CLRB	@(R2)		;SET NULL TERMINATOR
     82	000176	012612 				MOV	(SP)+,(R2)	;POINT TO START OF ARG
     83	000200					SETCHR			;SET REGISTER 5
     84	000204	010067 	000000G			MOV	R0,GMAPNT	;SAVE NEW BUFFER POINTER
     85	000210	000207 			GMARGX:	RETURN
     86	000212	016700 	000000G		RMARG::	MOV	GMAPNT,R0	;SET POINTER TO SAVED ITEMS
     87	000216	014005 				MOV	-(R0),R5	;SET CHARACTER
     88	000220	005740 				TST	-(R0)
     89	000222	110570 	000000 			MOVB	R5,@(R0)	;RESTORE VIRGIN CHARACTER
     90	000226	006305 				ASL	R5
     91	000230	005510 				ADC	(R0)
     92	000232	011067 	000000G			MOV	(R0),CHRPNT
     93	000236					SETNB
     94	000242	010067 	000000G			MOV	R0,GMAPNT
     95	000246	000207 				RETURN
     96
     97		000001 				.END
GMARG	MACRO M1108  05-DEC-77 23:21  PAGE 4-2
SYMBOL TABLE

AM.DEC= 000040   	CH.MUL= 000052   	CSTGBL= 000100   	GSDT06= 003000   	RLDT11= 000011
AM.DEF= 000010   	CH.PCT= 000045   	CSTMEM= 000001   	ILVL  = 000004   	RLDT15= 000015
AM.IMM= 000027   	CH.QM = 000077   	CSTREL= 000040   	LBLFLG= 000002   	RLDT16= 000016
AM.INC= 000020   	CH.QTM= 000042   	CSTTYP= 000200   	LET.A = 000101   	RLDT17= 000017
AM.NDX= 000060   	CH.RAB= 000076   	CTTBL = ****** GX	LET.B = 000102   	RMARG   000212RG    002
AM.PC = 000007   	CH.RP = 000051   	CT.COM= ****** GX	LET.C = 000103   	RSX11M= 000000
AM.REL= 000067   	CH.SMC= 000073   	CT.PC = ****** GX	LET.D = 000104   	R$$11M= 000000
ASTFLG= 000114   	CH.SUB= 000055   	CT.SMC= ****** GX	LET.E = 000105   	SAVREG= ****** GX
BLKT01= 000001   	CH.UAR= 000136   	DEFFLG= 000010   	LET.F = 000106   	SETCHR= ****** GX
BLKT02= 000002   	CH.XCL= 000047   	DFGFLG= 000020   	LET.G = 000107   	SETNB = ****** GX
BLKT03= 000003   	CPXADD= 000001   	DIG.0 = 000060   	LET.O = 000117   	SPACE = 000040
BLKT04= 000004   	CPXAND= 000005   	DIG.9 = 000071   	LET.Z = 000132   	TAB   = 000011
BLKT05= 000005   	CPXCOM= 000011   	ERRBTS= ****** GX	LF    = 000012   	TSTARG= ****** GX
BLKT06= 000006   	CPXCON= 000020   	ERR.A = ****** GX	LST.KB= 000001   	VT    = 000013
CHRPNT= ****** GX	CPXDIV= 000004   	FF    = 000014   	LST.LP= 000002   	XBSRCH= 000000
CH.ADD= 000053   	CPXFLG= 000200   	GETCHR= ****** GX	MDFFLG= 000004   	XCREF = 000000
CH.AND= 000046   	CPXGLB= 000016   	GETNB = ****** GX	PSTFLG= 000050   	XEDABS= 000000
CH.BSL= 000134   	CPXIOR= 000006   	GLBFLG= 000100   	REGFLG= 000001   	XEDCDR= 000000
CH.COL= 000072   	CPXMUL= 000003   	GMABLK= ****** GX	RELFLG= 000040   	XEDFPT= 000000
CH.COM= 000054   	CPXNEG= 000010   	GMAPNT= ****** GX	RLDT00= 000000   	XEDLC = 000000
CH.DIV= 000057   	CPXOPC= 000010   	GMARG   000000RG    002	RLDT01= 000001   	XEDPIC= 000000
CH.DOL= 000044   	CPXREL= 000017   	GMARGF  000006RG    002	RLDT02= 000002   	XEDPNC= 000000
CH.DOT= 000056   	CPXSDS= 000013   	GMARGX  000210R     002	RLDT03= 000003   	XFCSQN= 000000
CH.EQU= 000075   	CPXSTO= 000012   	GSDT00= 000000   	RLDT04= 000004   	XFLTG = 000000
CH.HSH= 000043   	CPXSUB= 000002   	GSDT01= 000400   	RLDT05= 000005   	XOPEXP= 000000
CH.IND= 000100   	CR    = 000015   	GSDT02= 001000   	RLDT06= 000006   	XSUBD = 000000
CH.IOR= 000041   	CSTACC= 000020   	GSDT03= 001400   	RLDT07= 000007   	XZERR = 000000
CH.LAB= 000074   	CSTALO= 000004   	GSDT04= 002000   	RLDT10= 000010   	X45   = 000000
CH.LP = 000050   	CSTFLG= 000050   	GSDT05= 002400

. ABS.	000000	   000
      	000000	   001
PUREI 	000250	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2590 WORDS  ( 11 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:18
[45,10]GMARG,[45,20]GMARG/-SP=[45,30]RSXPAR,GENMC,FLGDF,GMARG
INFIL	MACRO M1108  05-DEC-77 23:21  PAGE 5


      1						.TITLE	INFIL
      2						.IDENT	/X14.02/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X14.02                                                                ;**NEW**
     24					;                                                                               ;**-1
     25					; D.N. CUTLER 14-FEB-73
     26					;
     27					;	C.A. D'ELIA	04-OCT-73	003
     28					;	C.A. D'ELIA	11-NOV-73	005
     29					;	C.A. D'ELIA	15-NOV-73	007
     30					;	C.A. D'ELIA	10-JAN-74	010
     31					;	C.A. D'ELIA	25-JAN-74	011
     32					;	C.A. D'ELIA	05-MAR-74	013
     33					;	C.A. D'ELIA	22-MAR-74	014
     34					;	C.A. D'ELIA	07-APR-74	015
     35					;	C.A. D'ELIA	25-APR-74	016
     36					;	H.A. NICHOLS	18-JUN-74	017
     37					;	C.A. D'ELIA	22-SEP-74	017
     38					;	C.A. D'ELIA	19-NOV-74	018
     39					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     40					;	C.A. D'ELIA	01-NOV-75	022	(CREF)                          ;**NEW**
     41					;
     42					;
     43					; FILE INITIALIZATION ROUTINES
     44					;
     45					; MACRO LIBRARY CALLS
     46					;
     47
     48						.MCALL	CSI$		;++017
     49	000000					CSI$			;++014
     50						.MCALL	GCMLD$		;++017
     51	000000					GCMLD$			;++005 GET GCML SYMBOLS & RELEASE SPACE
     52
     53						.MCALL	CSI$1,CSI$2	;++017
     54						.MCALL	OFNB$R,OFNB$W,OFNB$U,OFNB$A,FDBF$R ;++017                       ;**-9
     55					                                                                                ;**NEW**
     56						.IIF NDF XCREF,	.MCALL	GTIM$S  ;++022                                  ;**NEW**
     57					                                                                                ;**-3
INFIL	MACRO M1108  05-DEC-77 23:21  PAGE 5-1


     58
     59						.GLOBL	G.CMLD		;++018
     60
     61	000000					PURE	TSTBYT,D	;++022                                          ;**NEW**
     62					                                                                                ;**NEW**
     63	000000	   123 	   131 	   060 	SYSTR:	.ASCII	/SY0:/		;++022 DEVICE STRING FOR SY0:                   ;**NEW**
	000003	   072
     64		000004 			SYSTRL=.-SYSTR			;++022 STRING LENGTH                            ;**NEW**
     65					                                                                                ;**NEW**
     66	000004	   115 	   101 	   103 	LFSTR:	.ASCII	/MACTMP/	;++022 FILE STRING FOR TMP LST FILE             ;**NEW**
	000007	   124 	   115 	   120
     67		000006 			LFSTRL=.-LFSTR			;++022 STRING LENGTH                            ;**NEW**
     68
     69
     70	000012					PURE	PUREI,I		;++017
     71
     72
     73					;+
     74					; **-OPENCH-OPEN CHANNEL
     75					;
     76					; INPUTS:
     77					;
     78					;	R1=CHANNEL NUMBER.
     79					;	R2=ADDRESS OF SWITCH LIST.
     80					;
     81					; OUTPUTS:
     82					;
     83					;	R0=PL IF OPERATION SUCESSFUL.
     84					;	R0=MI IF ERRORS WERE ENCOUNTERED.
     85					;-
     86
     87	000000	012705 	000000G		OPENCH::MOV	#CSIBLK,R5	;++017 PUT ADDR OF CSI BLOCK IN R5
     88	000004					CSI$2	R5,,R2		;GET SPECIFIED FILE
     89	000016	103522 				BCS	OPSWT1		;IF CS ILLEGAL SWITCH
     90	000020	012703 	000000G			MOV	#CSIM3,R3	;ASSUME WILD CARD SPECIFIED
     91	000024	132765 	000010 	000001 		BITB	#CS.WLD,C.STAT(R5);ANY WILD CARDS SPECIFIED?
     92	000032	001116 				BNE	OPSWT2		;IF NE YES-ERROR
     93	000034	010146 				MOV	R1,-(SP)	;++017 SAVE R1
     94	000036	010546 				MOV	R5,-(SP)	;++017 SAVE R5
     95	000040	000167 	000000G			JMP	PROCSI		;++017 PROCESS COMMAND LINE SWITCHES
     96
     97					;++017
     98					;
     99					; THE FOLLOWING LABEL IS REQUIRED TO RELOAD THIS SEGMENT AFTER
    100					; PROCESSING OF COMMAND LINE SWITCHES IS COMPLETE.
    101					;
    102					;--017
    103					                                                                                ;**NEW**
    104						.ENABL	LSB		;++022                                          ;**NEW**
    105
    106	000044	012605 			$OPSWT::MOV	(SP)+,R5	;++017 RESTORE R5
    107	000046	012601 				MOV	(SP)+,R1	;++017 RESTORE R1
    108	000050	005700 				TST	R0		;++017 TEST RESULTS
    109	000052	100504 				BMI	OPSWT1		;++017 IF MINUS, REPORT SWITCH ERROR
    110	000054	016100 	000000G			MOV	FDBTBL(R1),R0	;GET ADDRESS OF CHANNEL FDB
    111	000060	005060 	000000C			CLR	F.FNB+N.FID(R0)	;++017 INSURE THAT OLD FILE ID'S ARE GONE.
    112	000064	012702 	000006G			MOV	#CSIBLK+C.DSDS,R2  ;++014 PNT R2 TO CSI FILE DESCRIPTOR
INFIL	MACRO M1108  05-DEC-77 23:21  PAGE 5-2


    113	000070	122765 	000001 	000000 		CMPB	#CS.INP,C.TYPR(R5);INPUT FILE?                                  ;**-5
    114	000076	001024 				BNE	10$		;IF NE NO
    115	000100	132765 	000005 	000001 		BITB	#CS.NMF!CS.DVF,C.STAT(R5);FILE OR DEVICE SPECIFIED?
    116	000106	001470 				BEQ	OPSWT2		;IF EQ NO-ERROR
    117	000110	012703 				MOV	(PC)+,R3	;++015 ASSUME A NORMAL SOURCE INPUT...
    118	000112	050553 				.RAD50	/MAC/		;++015 ...FILE IS BEING OPENED
    119	000114	032765 	000000G	000024 		BIT	#MLMSK,C.MKW1(R5) ;++015 WAS /ML SWITCH SPECIFIED?
    120	000122	001402 				BEQ	5$		;++015 NO, SKIP
    121	000124	012703 				MOV	(PC)+,R3	;++015 A USER MACRO LIBRARY FILE...
    122	000126	051442 				.RAD50	/MLB/		;++015 ... IS BEING OPENED
    123	000130	010367 	000000C		5$:	MOV	R3,SRCNAM+N.FTYP  ;++015 SPECIFY DEFAULT FILE TYPE
    124	000134					CALL	OPENRD		;++014 OPEN SOURCE FILE FOR READ
    125	000140	012703 	000000G			MOV	#CSIM6,R3	;ASSUME OPEN FAILURE
    126	000144	103451 				BCS	OPSWT2		;IF CS OPEN FAILURE
    127	000146	000436 				BR	15$		;
    128	000150	132765 	000005 	000001 	10$:	BITB	#CS.NMF!CS.DVF,C.STAT(R5);FILE OR DEVICE SPECIFIED?
    129	000156	001441 				BEQ	20$		;IF EQ NO
    130	000160				100$:				;++022                                          ;**NEW**
    131	000160					CALL	FPARSE		;++014 PARSE THE FILE NAME SPEC                 ;**-10
    132	000164	012703 	000000G			MOV	#CSIM5,R3	;++015 ASSUME OPEN FAILURE
    133	000170	103437 				BCS	OPSWT2		;++014 SKIP ON ERROR
    134	000172	020127 	000004 			CMP	R1,#LSTCHN	;++022 IS THIS LISTING FILE?                    ;**NEW**
    135	000176	001014 				BNE	$OPNWT		;++022 IF NE NO                                 ;**NEW**
    136					                                                                                ;**NEW**
    137					                                                                                ;**NEW**
    138						.IF NDF	XCREF		;++022                                          ;**NEW**
    139					                                                                                ;**NEW**
    140						BIT	#CRMSK,C.MKW1(R5)  ;++022 WAS /CR SWITCH SPECIFIED?             ;**NEW**
    141						BEQ	120$		;++022 IF NE NO                                 ;**NEW**
    142						BITB	#FD.SQD,F.RCTL(R0)  ;++022 YES, IS LST DEVICE SEQUENTIAL?       ;**NEW**
    143						BNE	100$		;++022 IF NE YES                                ;**NEW**
    144						BITB	#FD.DIR,F.RCTL(R0)  ;++022 OR, IS IT NON-DIRECTORY?             ;**NEW**
    145						BNE	120$		;++022 IF NE NO                                 ;**NEW**
    146					                                                                                ;**NEW**
    147					;                                                                               ;**NEW**
    148					; IF A CREF IS DESIRED AND THE LISTING FILE DOESN'T GO TO A                     ;**NEW**
    149					; DIRECTORY DEVICE, THE DEVICE SY0: WILL BE USED. THE ORIGINAL                  ;**NEW**
    150					; SPECIFICATION IS SAVED FOR EVENTUAL OUTPUT OF BOTH THE                        ;**NEW**
    151					; LISTING AND CREF ON THAT DEVICE BY CRF.                                       ;**NEW**
    152					;                                                                               ;**NEW**
    153					                                                                                ;**NEW**
    154					110$:	MOV	F.FNB+N.DVNM(R0),$LSTGT  ;++022 SAVE LST FILE DEVICE NAME       ;**NEW**
    155						MOVB	F.FNB+N.UNIT(R0),$LSTGT+2  ;++022 AND UNIT NUMBER               ;**NEW**
    156						MOV	#SYSTRL,C.DEVD(R5)  ;++022 SUBSTITUTE DESCRIPTOR FOR            ;**NEW**
    157						MOV	#SYSTR,C.DEVD+2(R5)  ;++022 DEVICE SY0:                         ;**NEW**
    158						TST	F.FNB+N.FNAM(R0)  ;++022 WAS A FILE NAME SPECIFIED?             ;**NEW**
    159						BNE	100$		;++022 IF NE YES                                ;**NEW**
    160						MOV	#LFSTRL,C.FILD(R5)  ;++022 SUBSTITUTE DESCRIPTOR FOR            ;**NEW**
    161						MOV	#LFSTR,C.FILD+2(R5)  ;++022 TEMP FILE NAME                      ;**NEW**
    162						BR	100$		;++022 REPEAT THE PARSE                         ;**NEW**
    163					                                                                                ;**NEW**
    164						.ENDC			;++022                                          ;**NEW**
    165					                                                                                ;**NEW**
    166					;                                                                               ;**NEW**
    167					; CALCULATE THE PROPER DEVICE BUFFER FOR LISTING FILE.                          ;**NEW**
    168					;                                                                               ;**NEW**
    169					                                                                                ;**NEW**
INFIL	MACRO M1108  05-DEC-77 23:21  PAGE 5-3


    170	000200	016046 	000000G		120$:	MOV	F.VBSZ(R0),-(SP)  ;++022 GET DEVICE BUFFER SIZE                 ;**NEW**
    171	000204	021627 	000204 			CMP	(SP),#LSTLEN	;++022 COMPARE W/ MAX LINE SIZE                 ;**NEW**
    172	000210	002002 				BGE	130$		;++022 IF GE DEVICE BUFFER IS BIG ENOUGH        ;**NEW**
    173	000212	012716 	000204 			MOV	#LSTLEN,(SP)	;++022 ELSE, OVERRIDE W/ LINE LENGTH            ;**NEW**
    174	000216	012667 	000000G		130$:	MOV	(SP)+,$LSTVZ	;++022 STORE RESULT                             ;**NEW**
    175	000222					FDBF$R	R0,,$LSTVZ	;++022 USE BUFFER OVERRIDE IN NECESSARY         ;**NEW**
    176					                                                                                ;**NEW**
    177					                                                                                ;**NEW**
    178	000230				$OPNWT::			;++022 REF LABEL FOR OPEN OUTPUT FILE           ;**NEW**
    179	000230					OFNB$W			;++014 OPEN OUTPUT FILE (VIA FNB)
    180	000242	103412 				BCS	OPSWT2		;IF CS OPEN FAILURE                             ;**-5
    181	000244	112761 	000000G	000000G	15$:	MOVB	#IO.OPN,IOFTBL(R1)  ;++014 SET FILE OPEN STATUS
    182	000252	005060 	000000G			CLR	F.DSPT(R0)	;++018 CLEAR DESCRIPTOR AND DEFAULT FILE ...
    183	000256	005060 	000000G			CLR	F.DFNB(R0)	;++018 ... BLK ADDR FOR POSSIBLE DELET$
    184	000262	000207 			20$:	RETURN			;++017
    185
    186						.DSABL	LSB		;++022                                          ;**NEW**
    187					                                                                                ;**-32
    188					;++017
    189					;
    190					; **-OPSWT1-DECLARE SWITCH ERROR AND RESTART
    191					; **-OPSWT2-DECLARE ERROR AND RESTART
    192					;
    193					;--017
    194
    195	000264	012703 	000000G		OPSWT1::MOV	#CSIM4,R3	;++017 DECLARE SWITCH ERROR
    196	000270				OPSWT2::CALL	$OPTER		;++018 SEND MESSAGES AND CLEANUP FILES
    197	000274	012700 	177777 			MOV	#-1,R0		;SET ERROR STATUS
    198	000300	000207 				RETURN			;
    199
    200					;++014
    201					;
    202					; *-OPENRD-* OPEN SOURCE FILE FOR READ
    203					;
    204					;--014
    205
    206	000302				OPENRD:				;++014
    207	000302					CALL	FPARSE		;++014 PARSE THE FILE NAME                      ;**-7
    208	000306	103405 				BCS	1$		;++014 SKIP ON ERROR
    209	000310					OFNB$R			;++014 OPEN SOURCE FOR READ (VIA FNB)
    210	000322				1$:				;++014
    211	000322	000207 				RETURN			;++014                                          ;**-3
    212
    213					                                                                                ;**-1
    214					;++014
    215					;
    216					; *-FPARSE-* SETUP AND PARSE A FILE NAME BLOCK
    217					;
    218					;--014
    219
    220	000324	005760 	000000C		FPARSE:	TST	F.FNB+N.FID(R0)	;++014 CHECK FOR A FILE ID
    221	000330	001011 				BNE	1$		;++014 SKIP IF ONE IS ALREADY THERE
    222	000332	010146 				MOV	R1,-(SP)	;++014 SAVE R1
    223	000334	010001 				MOV	R0,R1		;++014 PUT ADDR OF THE FILE NAME ...
    224	000336	062701 	000000G			ADD	#F.FNB,R1	;++014 ...BLOCK IN R1
    225	000342	016003 	000000G			MOV	F.DFNB(R0),R3	;++014 PNT R3 TO DEFAULT FILENAME BLK
    226	000346					CALL	.PARSE		;++014 PARSE FILENAME--BUILD FNB
INFIL	MACRO M1108  05-DEC-77 23:21  PAGE 5-4


    227	000352	012601 				MOV	(SP)+,R1	;++014 RESTORE R1
    228	000354	000207 			1$:	RETURN			;++014
    229					                                                                                ;**NEW**
    230					;+                                                                              ;**NEW**
    231					; **-$GTFDB-*-GET NEXT AVAILABLE FDB                                            ;**NEW**
    232					;                                                                               ;**NEW**
    233					; INPUTS:                                                                       ;**NEW**
    234					;	$NXFDB=POINTS TO NEXT AVAILABLE FDB IN LIST                             ;**NEW**
    235					;                                                                               ;**NEW**
    236					; OUTPUTS:                                                                      ;**NEW**
    237					;	R0=FDB ADDRESS                                                          ;**NEW**
    238					;	$NXFDB=UPDATED TO NEXT ENTRY IN LIST                                    ;**NEW**
    239					;                                                                               ;**NEW**
    240					;-                                                                              ;**NEW**
    241					                                                                                ;**NEW**
    242	000356	017700 	000000G		$GTFDB::MOV	@$NXFDB,R0	;++022 GET FDB ADDR IN R0                       ;**NEW**
    243	000362	062767 	000002 	000000G		ADD	#2,$NXFDB	;++022 UPDATE NEXT FDB POINTER                  ;**NEW**
    244	000370	000207 				RETURN			;++022                                          ;**NEW**
    245					                                                                                ;**NEW**
    246					                                                                                ;**-3
    247
    248
    249					;++011
    250					;
    251					; *-FINP1-* FINISH PASS 1 (INITIALIZE FOR PASS 2)
    252					;
    253					;--011
    254	000372				FINP1::
    255	000372					CALL	CLOSRC		;++022 CLOSE SOURCE FILE                        ;**NEW**
    256	000376	105767 	000000G			TSTB	OBJFIL		;++022 WAS OBJECT FILE CREATED?                 ;**NEW**
    257	000402	001413 				BEQ	100$		;++022 IF EQ NO                                 ;**NEW**
    258	000404					OFNB$U	FDBTBL+BINCHN	;++022 RE-OPEN FILE                             ;**NEW**
    259	000422	103431 				BCS	500$		;++022 IF CS ERROR                              ;**NEW**
    260	000424	112767 	000000G	000006G		MOVB	#IO.OPN,IOFTBL+BINCHN  ;++022 SET FILE OPEN STATUS              ;**NEW**
    261	000432				100$:				;++022                                          ;**NEW**
    262					                                                                                ;**NEW**
    263					                                                                                ;**NEW**
    264						.IF DF	RSX11M		;++022                                          ;**NEW**
    265					                                                                                ;**NEW**
    266	000432	105767 	000000G			TSTB	LSTFIL		;++022 WAS LISTING FILE CREATED?                ;**NEW**
    267	000436	001416 				BEQ	300$		;++022 IF EQ NO                                 ;**NEW**
    268	000440	016700 	000004G			MOV	FDBTBL+LSTCHN,R0  ;++022 GET LST FILE FDB ADDR                  ;**NEW**
    269	000444					FDBF$R	R0,,$LSTVZ	;++022 USE BUFFER OVERRIDE IF NECESSARY         ;**NEW**
    270	000452					OFNB$A	R0		;++022 RE-OPEN LISTING FILE                     ;**NEW**
    271	000464	103410 				BCS	500$		;++022 IF CS ERROR                              ;**NEW**
    272	000466	112767 	000000G	000004G		MOVB	#IO.OPN,IOFTBL+LSTCHN  ;++022 SET FILE OPEN STATUS              ;**NEW**
    273	000474				200$:				;++022                                          ;**NEW**
    274					                                                                                ;**NEW**
    275						.ENDC			;++022                                          ;**NEW**
    276					                                                                                ;**NEW**
    277					                                                                                ;**NEW**
    278						.IF NDF	XCREF		;++022                                          ;**NEW**
    279					                                                                                ;**NEW**
    280						TSTB	CRFFIL		;++022 WAS CREF FILE CREATED?                   ;**NEW**
    281						BEQ	300$		;++022 IF EQ NO                                 ;**NEW**
    282						OFNB$U	FDBTBL+CRFCHN	;++022 RE-OPEN CREF FILE                        ;**NEW**
    283						BCS	500$		;++022 IF CS ERROR                              ;**NEW**
INFIL	MACRO M1108  05-DEC-77 23:21  PAGE 5-5


    284						MOVB	#IO.OPN,IOFTBL+CRFCHN  ;++022 SET FILE OPEN STATUS              ;**NEW**
    285						MOV	#LINBUF,R1	;++022 POINT R1 TO A SCRATCH BUFFER             ;**NEW**
    286						MOV	R1,BUFTBL+CRFCHN  ;++022 MODIFY BUFFER POINTER TABLE            ;**NEW**
    287						MOV	#^RMAC,(R1)+	;++022 STORE NAME OF CREF INPUT SOURCE          ;**NEW**
    288						CLR	(R1)+		;++022                                          ;**NEW**
    289						MOV	#1,(R1)+	;++022 STORE IDENT CODE OF SOURCE, TOO          ;**NEW**
    290						GTIM$S	R1		;++022 GET TIME PARAMETERS                      ;**NEW**
    291					                                                                                ;**NEW**
    292					                                                                                ;**NEW**
    293						.IF NDF	XLCTTM		;++022                                          ;**NEW**
    294					                                                                                ;**NEW**
    295						CLR	G.TIMI+2(R1)	;++022 ASSUME WIDE LISTING MODE DESIRED         ;**NEW**
    296						BIT	#LC.TTM,LCMASK	;++022 IS WIDE LISTING MODE DESIRED?            ;**NEW**
    297						BNE	250$		;++022 IF NE YES                                ;**NEW**
    298						INC	G.TIMI+2(R1)	;++022 ELSE, SET NARROW CRF LISTING FLAG        ;**NEW**
    299					250$:				;++022                                          ;**NEW**
    300					                                                                                ;**NEW**
    301						.IFF			;++022                                          ;**NEW**
    302					                                                                                ;**NEW**
    303						MOV	#1,G.TIMI+2(R1)	;++022 SET NARROW CRF LISTING FLAG              ;**NEW**
    304					                                                                                ;**NEW**
    305						.ENDC			;++022                                          ;**NEW**
    306					                                                                                ;**NEW**
    307					                                                                                ;**NEW**
    308						MOV	#18.,@CNTTBL+CRFCHN  ;++022 SET BUFFER LENGTH                   ;**NEW**
    309						$WRITE	CRF		;++022 OUTPUT THE CREF HEADER RECORD            ;**NEW**
    310						MOV	#CRFBUF,BUFTBL+CRFCHN  ;++022 RESTORE CREF BUFFER ADDR          ;**NEW**
    311						MOV	#12.,@CNTTBL+CRFCHN  ;++022 AND RECORD SIZE                     ;**NEW**
    312					                                                                                ;**NEW**
    313						.ENDC			;++022                                          ;**NEW**
    314					                                                                                ;**NEW**
    315					                                                                                ;**NEW**
    316	000474				300$:	CSI$1	#CSIBLK		;++022 RE-SCAN THE COMMAND LINE                 ;**NEW**
    317	000504	000207 				RETURN			;++022                                          ;**NEW**
    318					                                                                                ;**NEW**
    319					                                                                                ;**NEW**
    320	000506	012703 	000000G		500$:	MOV	#CSIM5,R3	;++022 GET OPEN FAILURE MESSAGE                 ;**NEW**
    321	000512	000167 	000000G			JMP	RESTRT		;++022 REPORT ERROR, CLOSE FILES,               ;**NEW**
    322									;++022 AND RESTART ASSEMBLER                    ;**NEW**
    323					                                                                                ;**-43
    324
    325		000001 				.END
INFIL	MACRO M1108  05-DEC-77 23:21  PAGE 5-6
SYMBOL TABLE

BINCHN= 000006   	C.STAT= 000001   	G.DPRM= 000160   	PROCSI= ****** GX	XEDCDR= 000000
BPMB  = 000020   	C.SWAD= 000022   	G.ERR = 000140   	RELCHN= 000010   	XEDCRF= 000000
CLOSRC= ****** GX	C.TYPR= 000000   	G.ISIZ= 000020   	RESTRT= ****** GX	XEDFPT= 000000
CMOCHN= 000000   	FDBTBL= ****** GX	G.MODE= 000141   	RLDLEN= 000052   	XEDLC = 000000
CPL   = 000120   	FINP1   000372RG    003	G.PSDS= 000142   	RSX11M= 000000   	XEDPIC= 000000
CSIBLK= ****** GX	FO.APD= ****** GX	ILVL  = 000004   	R$$11M= 000000   	XEDPNC= 000000
CSIM3 = ****** GX	FO.RD = ****** GX	IOFTBL= ****** GX	SMLCHN= 000012   	XFCSQN= 000000
CSIM4 = ****** GX	FO.UPD= ****** GX	IO.OPN= ****** GX	SMLLEN= 000120   	XFLTG = 000000
CSIM5 = ****** GX	FO.WRT= ****** GX	LFSTR   000004R     002	SRCCHN= 000002   	XOPEXP= 000000
CSIM6 = ****** GX	FPARSE  000324R     003	LFSTRL= 000006   	SRCLEN= 000204   	XSUBD = 000000
CS.DIF= 000002   	F.DFNB= ****** GX	LINLEN= 000204   	SRCNAM= ****** GX	XZERR = 000000
CS.DVF= 000004   	F.DSPT= ****** GX	LPP   = 000074   	STLLEN= 000100   	X45   = 000000
CS.EQU= 000040   	F.FACC= ****** GX	LSTCHN= 000004   	SYSTR   000000R     002	YQCMO = 000000
CS.INP= 000001   	F.FNB = ****** GX	LSTFIL= ****** GX	SYSTRL= 000004   	$GTFDB  000356RG    003
CS.MOR= 000020   	F.OVBS= ****** GX	LSTLEN= 000204   	S.FDB = 000140   	$LSTVZ= ****** GX
CS.NMF= 000001   	F.VBSZ= ****** GX	MAXCHN= 000014   	S.FNAM= 000006   	$NXFDB= ****** GX
CS.OUT= 000002   	GE.BIF= 177775   	MLMSK = ****** GX	S.FNB = 000036   	$OPNWT  000230RG    003
CS.WLD= 000010   	GE.CLO= 000004   	N.FID = ****** GX	S.FNBW= 000017   	$OPSWT  000044RG    003
C.CMLD= 000002   	GE.COM= 000001   	N.FTYP= ****** GX	S.FNTY= 000004   	$OPTER= ****** GX
C.DEVD= 000006   	GE.EOF= 177766   	OBJFIL= ****** GX	S.FTYP= 000002   	$$    = 000067
C.DIRD= 000012   	GE.IND= 000002   	OBJLEN= 000052   	S.NFEN= 000020   	.CSI1 = ****** G
C.DSDS= 000006   	GE.IOR= 177777   	OPENCH  000000RG    003	TMPCNT= 000014   	.CSI2 = ****** G
C.FILD= 000016   	GE.LC = 000010   	OPENRD  000302R     003	TTLLEN= 000040   	.OPFNB= ****** G
C.MKW1= 000024   	GE.MDE= 177774   	OPSWT1  000264RG    003	XBSRCH= 000000   	.PARSE= ****** GX
C.MKW2= 000026   	GE.OPR= 177776   	OPSWT2  000270RG    003	XCREF = 000000   	...TPC= 000140
C.SIZE= 000054   	G.CMLD= 000146 G 	PAR$$$= 000027   	XEDABS= 000000

. ABS.	000000	   000
      	000000	   001
TSTBYT	000012	   002
PUREI 	000516	   003
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  6205 WORDS  ( 25 PAGES)
DYNAMIC MEMORY:  7328 WORDS  ( 28 PAGES)
ELAPSED TIME:  00:00:58
[45,10]INFIL,[45,20]INFIL/-SP=[45,30]RSXPAR,MPARAM,MCIOCH,GENMC,INFIL
INIDM	MACRO M1108  05-DEC-77 23:40  PAGE 2


      1						.TITLE	INIDM
      2						.IDENT	/00/
      3
      4					;
      5					;
      6					; COPYRIGHT (C) 1976
      7					; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
      8					;
      9					; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
     10					; SINGLE COMPUTER SYSTEM AND MAY  BE  COPIED   ONLY  WITH  THE
     11					; INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE,  OR
     12					; ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED  OR  OTHERWISE
     13					; MADE AVAILABLE TO ANY OTHER PERSON   EXCEPT FOR  USE ON SUCH
     14					; SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE  TERMS.  TITLE
     15					; TO AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL  TIMES  REMAIN
     16					; IN DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF
     23					; ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     24					;
     25					; VERSION 00
     26					;
     27					; C. MONIA 30-JUL-76
     28					;
     29					; INITIALIZE DYNAMIC MEMORY
     30					;
     31					; MACRO LIBRARY CALLS
     32					;
     33
     34						.MCALL	DIR$,GPRT$,GTSK$
     35
     36					;
     37					; LOCAL DATA
     38					;
     39					; TASK IMAGE MEMORY LIMITS
     40					;
     41
     42	000000	000000 	000000 		LIMIT:	.LIMIT			;
     43
     44					;
     45					; 'GET PARTITION PARAMTERS' DPB
     46					;
     47
     48	000004				PDPB:	GPRT$	,TBUF		;
     49
     50					;
     51					; 'GET TASK PARAMTERS' DPB
     52					;
     53
     54	000014				TDPB:	GTSK$	TBUF		;
     55
     56					;
     57					; PARAMETER BUFFER
INIDM	MACRO M1108  05-DEC-77 23:40  PAGE 2-1


     58					;
     59
     60	000020				TBUF:	.BLKW	16.		;
     61
     62					;+
     63					; **-$INIDM-INITIALIZE DYNAMICALLY ALLOCATED STORAGE
     64					;
     65					; THIS SUBROUTINE IS CALLED TO ESTABLISH THE INITIAL STATE
     66					; OF THE CORE POOL REFERENCED BY THE SUBROUTINES WHICH ALLO-
     67					; CATE AND DEALLOCATE CORE BLOCKS. THE POOL CONSISTS OF ALL
     68					; MEMORY EXTENDING FROM THE END OF THE TASK IMAGE TO THE LAST
     69					; PHYSICAL LOCATION OWNED BY THE TASK.
     70					;
     71					; INPUTS:
     72					;
     73					;	R0=ADDRESS OF FREE CORE POOL LISTHEAD
     74					;
     75					; OUTPUTS:
     76					;
     77					;	R0=FIRST ADDRESS IN TASK
     78					;	R1=ADDRESS FOLLOWING TASK IMAGE
     79					;	R2=SIZE OF CORE POOL
     80					;
     81					;	ANY PREVIOUS TASK MEMORY EXTENSION IS DE-ALLOCATED. THE
     82					;	REMAINING FREE CORE AREA IS ALLOCATED TO THE MEMORY POOL.
     83					;-
     84
     85	000060				$INIDM::			;
     86	000060	016702 	177716 			MOV	LIMIT+2,R2	; GET ADDRESS OF CORE POOL
     87	000064	062702 	000003 			ADD	#3,R2		; ROUND UP TO NEXT 4-BYTE BOUNDARY
     88	000070	042702 	000003 			BIC	#3,R2		; ...
     89	000074	010210 				MOV	R2,(R0)		; SET ADDRESS OF POOL
     90	000076	005001 				CLR	R1		; RESET TASK SIZE
     91	000100					CALL	$EXTSK		; ...
     92	000104					DIR$	#PDPB		; GET PARTITION PARAMETERS
     93	000112	016700 	000000G			MOV	$DSW,R0		; SAVE STARTING VIRTUAL ADDRESS OF PARTITION
     94	000116					DIR$	#TDPB		; GET TASK PARAMETERS
     95	000124	010246 				MOV	R2,-(SP)	; SAVE ADDRESS OF CORE POOL
     96	000126	005022 				CLR	(R2)+		; CLEAR FIRST WORD OF DYNAMIC STORE
     97	000130	016712 	177716 			MOV	TBUF+32,(R2)	; SET PHYSICAL SIZE OF TASK
     98	000134	160016 				SUB	R0,(SP)		; COMPUTE APPARENT TASK SIZE
     99	000136	010001 				MOV	R0,R1		; COPY BASE ADDRESS OF TASK
    100	000140	061201 				ADD	(R2),R1		; COMPUTE NEXT ADDRESS AFTER TASK
    101	000142	162612 				SUB	(SP)+,(R2)	; SET SIZE OF FREE POOL
    102	000144	011202 				MOV	(R2),R2		; GET SIZE OF POOL
    103	000146					RETURN			;
    104
    105		000001 				.END
INIDM	MACRO M1108  05-DEC-77 23:40  PAGE 2-2
SYMBOL TABLE

CR    = 000015   	G.TSBA= 000002   	G.TSPR= 000014   	LF    = 000012   	VT    = 000013
FF    = 000014   	G.TSFW= 000024   	G.TSRN= 000010   	LIMIT   000000R  	$DSW  = ****** GX
G.PRBA= 000006   	G.TSGC= 000017   	G.TSTN= 000000   	PDPB    000004R  	$EXTSK= ****** GX
G.PRFW= 000004   	G.TSMT= 000022   	G.TSTS= 000032   	R$$11M= 000000   	$INIDM  000060RG
G.PRPB= 000000   	G.TSNL= 000020   	G.TSVA= 000026   	SPA   = 000040   	$$    = 000001
G.PRPN= 000002   	G.TSPC= 000016   	G.TSVL= 000030   	TBUF    000020R  	$$$OST= 000034
G.PRPS= 000002   	G.TSPN= 000004   	HT    = 000011   	TDPB    000014R  	$$$T1 = 000000

. ABS.	000000	   000
      	000150	   001
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  1425 WORDS  ( 6 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:11
[45,10]INIDM,[45,20]INIDM/-SP=[45,30]MACFLM,INIDM
INIFL	MACRO M1108  05-DEC-77 23:22  PAGE 5


      1						.TITLE	INIFL
      2						.IDENT	/X02.03/							;**NEW**
      3															;**-1
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X02.03								;**NEW**
     24					;										;**-1
     25					; D.N. CUTLER 14-FEB-73
     26					;
     27					;	C.A. D'ELIA	04-OCT-73	003
     28					;	C.A. D'ELIA	11-NOV-73	005
     29					;	C.A. D'ELIA	15-NOV-73	007
     30					;	C.A. D'ELIA	10-JAN-74	010
     31					;	C.A. D'ELIA	25-JAN-74	011
     32					;	C.A. D'ELIA	05-MAR-74	013
     33					;	C.A. D'ELIA	22-MAR-74	014
     34					;	C.A. D'ELIA	07-APR-74	015
     35					;	C.A. D'ELIA	25-APR-74	016
     36					;	H.A. NICHOLS	18-JUN-74	017
     37					; 	C.A. D'ELIA	01-AUG-74	017
     38					;	C.A. D'ELIA	21-MAR-75	019
     39					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)			;**NEW**
     40					;	C.A. D'ELIA	01-NOV-75	022	(CREF)				;**NEW**
     41					;	C.A. D'ELIA	13-APR-76	024	(MISC-FCS SEQUENCED FILES)	;**NEW**
     42					;
     43					;
     44					; INPUT FILE INITIALIZATION
     45					;
     46					; MACRO LIBRARY CALLS
     47					;
     48
     49						.MCALL	CSI$		;++017
     50	000000					CSI$			;++014
     51
     52						.MCALL	CSI$SW,CSI$SV,NMBLK$,FDRC$R,FDOP$R  ;++017
     53
     54
     55					;
     56					; LOCAL DATA
     57					;
INIFL	MACRO M1108  05-DEC-77 23:22  PAGE 5-1


     58					; DEFAULT NAME BLOCKS
     59					;
     60
     61	000000					.PSECT	MIXED,D,RW	;++017
     62	000000				SRCNAM::NMBLK$	,MAC,,SY	;SOURCE FILE
     63
     64
     65					;
     66					; SWITCH AND VALUE CONTROL LISTS
     67					;
     68					;
     69
     70	000036					PURE	DPURE,D		;++017
     71					;
     72					; SWITCH CONTROL LIST
     73					;
     74
     75	000000				SRCSWT:				;++003 SOURCE SWITCHES
     76	000000					CSI$SW	PA,PAMSK,,SET,,PAVAL ;++003 /PA SWITCH
     77						.IF NDF	XSML		;++007
     78	000010					CSI$SW	ML,MLMSK,,SET	;++007 /ML SWITCH
     79						.ENDC			;++007
     80
     81	000020					CSI$SW	EN,ENMSK,,SET,,ENVAL ;++003 /EN SWITCH
     82	000030					CSI$SW	DS,DSMSK,,SET,,DSVAL ;++003 /DS SWITCH
     83	000040	000000 				.WORD	0		;++003 END OF SOURCE & OBJECT SWT TABLE
     84
     85					;
     86					; VALUE CONTROL LIST
     87					;
     88
     89		000013 			DSVALS=11.			;++022						;**NEW**
     90						.IRP	$X,<ABS,PIC,CDR,FPT,PNC,LC,CRF>  ;++022				;**NEW**
     91						.IIF DF XED'$X,DSVALS=DSVALS-1 ;++003					;**-2
     92						.ENDM			;++003
     93		000004 			ENVALS=DSVALS			;++003 NUMBER OF "EN" VALUES
     94		000001 			PAVALS=1.			;++003 NUMBER OF "PA" VALUES
     95
     96
     97					;++017
     98					;
     99					; VALUE TABLES
    100					;
    101					;--017
    102
    103
    104	000042				PAVAL:				;++003 /PA SWITCH VALUE TABLE
    105	000042					CSI$SV	NUMERIC,PASSSW,2 ;++003
    106	000046	000000 				.WORD	0		;++003 END OF /PA VALUE TABLE
    107
    108
    109	000050				ENVAL:				;++003 /EN SWITCH VALUE TABLE
    110		000000 			TMP=0				;++003
    111		000004 				.REPT	ENVALS		;++003
    112						CSI$SV	ASCII,ENADDR+TMP,3 ;003
    113					TMP=TMP+4			;++003
    114						.ENDR			;++003
INIFL	MACRO M1108  05-DEC-77 23:22  PAGE 5-2


    115	000070	000000 				.WORD	0		;++003 END OF /EN VALUE TABLE
    116
    117
    118	000072				DSVAL:				;++003 /DS SWITCH VALUE TABLE
    119		000000 			TMP=0				;++003
    120		000004 				.REPT	DSVALS		;++003
    121						CSI$SV	ASCII,DSADDR+TMP,3 ;++003
    122					TMP=TMP+4			;++003
    123						.ENDR			;++003
    124	000112	000000 				.WORD	0		;++003 END OF /DS VALUE TABLE
INIFL	MACRO M1108  05-DEC-77 23:22  PAGE 6


    126
    127	000114					PURE	PUREI,I		;++017
    128
    129					;+
    130					; **-$INIFL-INITIALIZE INPUT FILE
    131					;
    132					; INPUTS:
    133					;
    134					;	NONE.
    135					;
    136					; OUTPUTS:
    137					;
    138					;	R0=PL IF REQUEST SUCESSFUL.
    139					;	R0=MI IF ANOTHER COMMAND LINE SHOULD BE READ.
    140					;-
    141
    142	000000	004767 	000000G		$INIFL::CALL	SAVREG		;SAVE REGISTERS
    143	000004	005067 	000000G			CLR	PASSSW		;++003 CLEAR VALUE OF LAST PASS SWITCH
    144	000010	012705 	000000G			MOV	#CSIBLK,R5	;GET ADDRESS OF CSI CONTROL BLOCK		;**-1
    145	000014	112765 	000001 	000000 		MOVB	#CS.INP,C.TYPR(R5);SET INPUT REQUEST
    146	000022	012701 	000002 			MOV	#SRCCHN,R1	;SET CHANNEL NUMBER
    147	000026	012702 	000000'			MOV	#SRCSWT,R2	;SET ADDRESS OF SWITCH LIST
    148	000032	016700 	000002G			MOV	FDBTBL+SRCCHN,R0  ;++017 PUT SOURCE FILE FDB ADDR IN R0
    149	000036	001004 				BNE	100$		;++022 IF NE FDB ALREADY ALLOCATED		;**NEW**
    150	000040	004767 	000000G			CALL	$GTFDB		;++022 ELSE, GET NEXT AVAILABLE FDB		;**NEW**
    151	000044	010067 	000002G			MOV	R0,FDBTBL+SRCCHN  ;++022 STORE ADDR IN FDB TABLE		;**NEW**
    152	000050				100$:				;++022						;**NEW**
    153	000050					FDRC$R	R0,,#LINBUF,#LINLEN  ;++017 SET MOVE MODE PARAMETERS
    154	000064					FDOP$R	R0,#5,,#SRCNAM	;++017 SET FILE OPEN PARAMETERS
    155	000100	004767 	000000G			CALL	OPENCH		;OPEN CHANNEL
    156						.IF NDF	XSML		;++007
    157	000104	100447 				BMI	20$		;++007 JUST RETURN IF NOT SUCCESSFUL
    158						.IF NDF	XFCSQN		;++024						;**NEW**
    159						CLR	F.SEQN(R0)	;++024 INIT RECORD SEQUENCE NUMBER		;**NEW**
    160						.ENDC			;++024						;**NEW**
    161	000106	000261 				SEC			;++013 ASSUME DEVICE CHARS ARE WRONG
    162	000110	010003 				MOV	R0,R3		;++017 PUT SOURCE FILE FDB ADDR IN R3
    163	000112	132763 	000000G	000000G		BITB	#FD.SQD,F.RCTL(R3)  ;++017 IS SRC FROM A SEQUENTIAL DEV?
    164	000120	001005 				BNE	1$		;++017 YES, NO RE-READ SUPPORT
    165	000122	132763 	000000G	000000G		BITB	#FD.DIR,F.RCTL(R3)  ;++017 IS SRC FROM A DIRECTORY DEV?
    166	000130	001401 				BEQ	1$		;++017 NO, NO RE-READ SUPPORT
    167	000132	000241 				CLC			;++013 DEVICE CHARS ARE O.K. (NOTE: THE
    168	000134				1$:				;++013 ... C-BIT NOT AFFECTED BY 'BITB')
    169	000134	032765 	000000G	000024 		BIT	#MLMSK,C.MKW1(R5) ;++007 WAS /ML SWITCH SPECIFIED?
    170	000142	001427 				BEQ	18$		;++021 IF EQ NO					;**NEW**
    171	000144	103002 			10$:	BCC	11$		;++013 SKIP IF /ML VALID ON THIS DEVICE		;**-6
    172	000146	000167 	000000G			JMP	OPSWT1		;++013 ELSE, FILE IS NOT RANDOM ACCESS
    173	000152	012700 	000000G		11$:	MOV	#LIBLST,R0	;++021 SETUP TO USE LIBRARY FILE LIST		;**NEW**
    174	000156	010067 	000000G			MOV	R0,PASSSW	;++013 INSURE FILE WILL BE CLOSED		;**-1
    175	000162				15$:				;++013
    176	000162	005767 	000000G			TST	PASS		;++007 IS THIS THE FIRST PASS?
    177	000166	001016 				BNE	20$		;++013 NO, JUST RETURN
    178	000170	012702 	000000G			MOV	#SYMBOL,R2	;++007 PUT ADDR OF SYMBOL AREA IN R2
    179	000174	062703 	000000G			ADD	#F.FNB+N.FID,R3	;++017 PUT ADDR OF SOURCE FILE ID IN R3
    180	000200	012322 				MOV	(R3)+,(R2)+	;++007 SAVE ...
    181	000202	012322 				MOV	(R3)+,(R2)+	;++007 ... THE ...
    182	000204	012322 				MOV	(R3)+,(R2)+	;++007 ... FILE ID
INIFL	MACRO M1108  05-DEC-77 23:22  PAGE 6-1


    183	000206	016322 	000024 			MOV	N.DVNM-<N.FID+6>(R3),(R2)+  ;++007 SAVE DEVICE NAME
    184	000212	016322 	000026 			MOV	N.UNIT-<N.FID+6>(R3),(R2)+  ;++007 SAVE UNIT NUMBER
    185	000216	004767 	000000G			CALL	APPEND		;++013 SAVE FILE INFO IN PROPER ROLL
    186	000222	005000 			18$:	CLR	R0		;++019 SET FILE SUCCESS INDICATOR
    187	000224				20$:				;++007
    188						.ENDC			;++007
    189	000224	000207 				RETURN			;
    190
    191
    192		000001 				.END
INIFL	MACRO M1108  05-DEC-77 23:22  PAGE 6-2
SYMBOL TABLE

APPEND= ****** GX	C.SWAD= 000022   	LSTCHN= 000004   	RLDLEN= 000052   	XCREF = 000000
BINCHN= 000006   	C.TYPR= 000000   	LSTLEN= 000204   	RSX11M= 000000   	XEDABS= 000000
BPMB  = 000020   	DSADDR= ****** GX	MAXCHN= 000014   	R$$11M= 000000   	XEDCDR= 000000
CMOCHN= 000000   	DSMSK = ****** GX	MLMSK = ****** GX	SAVREG= ****** GX	XEDCRF= 000000
CPL   = 000120   	DSVAL   000072R     003	N.DID = 000024   	SMLCHN= 000012   	XEDFPT= 000000
CSIBLK= ****** GX	DSVALS= 000004   	N.DVNM= 000032   	SMLLEN= 000120   	XEDLC = 000000
CS.DIF= 000002   	ENADDR= ****** GX	N.FID = 000000   	SRCCHN= 000002   	XEDPIC= 000000
CS.DVF= 000004   	ENMSK = ****** GX	N.FNAM= 000006   	SRCLEN= 000204   	XEDPNC= 000000
CS.EQU= 000040   	ENVAL   000050R     003	N.FTYP= 000014   	SRCNAM  000000RG    002	XFCSQN= 000000
CS.INP= 000001   	ENVALS= 000004   	N.FVER= 000016   	SRCSWT  000000R     003	XFLTG = 000000
CS.MOR= 000020   	FDBTBL= ****** GX	N.NEXT= 000022   	STLLEN= 000100   	XOPEXP= 000000
CS.NMF= 000001   	FD.DIR= ****** GX	N.STAT= 000020   	SYMBOL= ****** GX	XSUBD = 000000
CS.OUT= 000002   	FD.SQD= ****** GX	N.UNIT= 000034   	S.FNAM= 000006   	XZERR = 000000
CS.WLD= 000010   	F.DFNB= ****** GX	OBJLEN= 000052   	S.FNB = 000036   	X45   = 000000
C.CMLD= 000002   	F.FNB = ****** GX	OPENCH= ****** GX	S.FNBW= 000017   	YQCMO = 000000
C.DEVD= 000006   	F.LUN = ****** GX	OPSWT1= ****** GX	S.FNTY= 000004   	$GTFDB= ****** GX
C.DIRD= 000012   	F.RCTL= ****** GX	PAMSK = ****** GX	S.FTYP= 000002   	$INIFL  000000RG    004
C.DSDS= 000006   	F.URBD= ****** GX	PAR$$$= 000000   	S.NFEN= 000020   	$$    = 000000
C.FILD= 000016   	ILVL  = 000004   	PASS  = ****** GX	TMP   = 000020   	...PC1= 000000
C.MKW1= 000024   	LIBLST= ****** GX	PASSSW= ****** GX	TMPCNT= 000014   	...PC2= 000014R     002
C.MKW2= 000026   	LINBUF= ****** GX	PAVAL   000042R     003	TTLLEN= 000040   	...PC3= 000000
C.SIZE= 000054   	LINLEN= 000204   	PAVALS= 000001   	XBSRCH= 000000   	...TPC= 000036
C.STAT= 000001   	LPP   = 000074   	RELCHN= 000010

. ABS.	000000	   000
      	000000	   001
MIXED 	000036	   002
DPURE 	000114	   003
PUREI 	000226	   004
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  5185 WORDS  ( 21 PAGES)
DYNAMIC MEMORY:  6272 WORDS  ( 24 PAGES)
ELAPSED TIME:  00:00:41
[45,10]INIFL,[45,20]INIFL/-SP=[45,30]RSXPAR,MPARAM,MCIOCH,GENMC,INIFL
INOFL	MACRO M1108  05-DEC-77 23:23  PAGE 5


      1						.TITLE	INOFL
      2						.IDENT	/X04.01/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X04.01                                                                ;**NEW**
     24					;                                                                               ;**-1
     25					; D.N. CUTLER 14-FEB-73
     26					;
     27					;	C.A. D'ELIA	04-OCT-73	003
     28					;	C.A. D'ELIA	11-NOV-73	005
     29					;	C.A. D'ELIA	15-NOV-73	007
     30					;	C.A. D'ELIA	10-JAN-74	010
     31					;	C.A. D'ELIA	25-JAN-74	011
     32					;	C.A. D'ELIA	05-MAR-74	013
     33					;	C.A. D'ELIA	22-MAR-74	014
     34					;	C.A. D'ELIA	07-APR-74	015
     35					;	C.A. D'ELIA	25-APR-74	016
     36					;	H.A. NICHOLS	18-JUN-74	017
     37					;	C.A. D'ELIA	14-OCT-74	017
     38					; 	C.A. D'ELIA	14-JAN-75	018
     39					;	C.A. D'ELIA	01-NOV-75	022	(CREF)                          ;**NEW**
     40					;
     41					;
     42					; OUTPUT FILE INITIALIZATION
     43					;
     44					; MACRO LIBRARY CALLS
     45					;
     46
     47						.MCALL	CSI$		;++017
     48	000000					CSI$			;++014
     49						.MCALL	GCMLD$		;++017
     50	000000					GCMLD$			;++005 GET GCML SYMBOLS & RELEASE SPACE
     51
     52						.MCALL	CLOSE$,CSI$1,CSI$2,EXIT$S,NMBLK$,CSI$SW,CSI$SV ;++014
     53						.MCALL	FDAT$R,FDOP$R	;++017
     54
     55
     56					;
     57					; LOCAL DATA
INOFL	MACRO M1108  05-DEC-77 23:23  PAGE 5-1


     58					;
     59					; DEFAULT NAME BLOCKS
     60					;
     61
     62	000000					PURE	DPURE,D		;++017
     63
     64	000000				LSTNAM::NMBLK$	,LST,,SY	;LISTING FILE
     65	000036				OBJNAM::NMBLK$	,OBJ,,SY	;OBJECT FILE
     66
     67					;
     68					; LISTING FILE EXTENSION SIZE
     69					;
     70
     71	000074	177761 			$LSEXT::.WORD	-15.		;++017 EXTEND BY 15. NON-CONTIGUOUS BLOCKS
     72
     73					;
     74					; SWITCH AND VALUE CONTROL LISTS
     75					;
     76					;
     77
     78
     79
     80
     81					;
     82					; SWITCH CONTROL LIST
     83					;
     84
     85	000076				LSTSWT:				;++003 LISTING SWITCHES
     86	000076					CSI$SW	LI,LIMSK,,SET,,LIVAL ;++003 /LI SWITCH
     87	000106					CSI$SW	NL,NLMSK,,SET,,NLVAL ;++003 /NL SWITCH
     88						.IF NDF	XSPOOL		;++015
     89	000116					CSI$SW	SP,SPMSK,$SWTCH,CLEAR,NEG, ;++003 /SP SWITCH
     90						.ENDC			;++015
     91						.IF NDF	XCREF		;++003
     92						CSI$SW	CR,CRMSK,,SET,,CRVAL ;++003 /CR SWITCH
     93						.ENDC			;++003
     94	000126	000000 				.WORD	0		;++003 END OF LISTING SWITCH TABLE
     95
     96
     97	000130				OBJSWT:				;++003 OBJECT (& SOURCE) SWITCHES
     98	000130					CSI$SW	EN,ENMSK,,SET,,ENVAL ;++003 /EN SWITCH
     99	000140					CSI$SW	DS,DSMSK,,SET,,DSVAL ;++003 /DS SWITCH
    100	000150	000000 				.WORD	0		;++003 END OF SOURCE & OBJECT SWT TABLE
    101
    102					;
    103					; VALUE CONTROL LIST
    104					;
    105
    106						.IF NDF	XCREF		;++003
    107					CRVALS=4.			;++022 NUMBER OF /CR SWITCH VALUES              ;**NEW**
    108						.ENDC			;++003                                          ;**-1
    109		000013 			DSVALS=11.			;++022                                          ;**NEW**
    110						.IRP	$X,<ABS,PIC,CDR,FPT,PNC,LC,CRF>  ;++022                         ;**NEW**
    111						.IIF DF XED'$X,DSVALS=DSVALS-1 ;++003                                   ;**-2
    112						.ENDM			;++003
    113		000004 			ENVALS=DSVALS			;++003 NUMBER OF "EN" VALUES
    114		000017 			LIVALS=15.			;NUMBER "LI" VALUES
INOFL	MACRO M1108  05-DEC-77 23:23  PAGE 5-2


    115						.IIF DF XLCTTM,LIVALS=LIVALS-1 ;++003
    116		000017 			NLVALS=LIVALS			;++003 NUMBER OF "NL" VALUES
    117
    118
    119					;++017
    120					;
    121					; VALUE TABLES
    122					;
    123					;--017
    124
    125	000152				LIVAL:				;++003 /LI SWITCH VALUE TABLE
    126		000000 			TMP=0				;++003
    127		000017 				.REPT	LIVALS		;++003
    128						CSI$SV	ASCII,LIADDR+TMP,3 ;++003
    129					TMP=TMP+4			;++003
    130						.ENDR			;++003
    131	000246	000000 				.WORD	0		;++003 END OF /LI VALUE TABLE
    132
    133
    134	000250				NLVAL:				;++003 /NL SWITCH VALUE TABLE
    135		000000 			TMP=0				;++003
    136		000017 				.REPT	NLVALS		;++003
    137						CSI$SV	ASCII,NLADDR+TMP,3 ;++003
    138					TMP=TMP+4			;++003
    139						.ENDR			;++003
    140	000344	000000 				.WORD	0		;++003 END OF /NL VALUE TABLE
    141
    142
    143						.IF NDF XCREF		;++003
    144					CRVAL:				;++003 /CR SWITCH VALUE TABLE
    145					TMP=0				;++003
    146						.REPT	CRVALS		;++003
    147						CSI$SV	ASCII,CRADDR+TMP,3 ;++003
    148					TMP=TMP+4			;++003
    149						.ENDR			;++003
    150						.WORD	0		;++003 END OF /CR VALUE TABLE
    151						.ENDC			;++003
    152
    153
    154	000346				ENVAL:				;++003 /EN SWITCH VALUE TABLE
    155		000000 			TMP=0				;++003
    156		000004 				.REPT	ENVALS		;++003
    157						CSI$SV	ASCII,ENADDR+TMP,3 ;003
    158					TMP=TMP+4			;++003
    159						.ENDR			;++003
    160	000366	000000 				.WORD	0		;++003 END OF /EN VALUE TABLE
    161
    162
    163	000370				DSVAL:				;++003 /DS SWITCH VALUE TABLE
    164		000000 			TMP=0				;++003
    165		000004 				.REPT	DSVALS		;++003
    166						CSI$SV	ASCII,DSADDR+TMP,3 ;++003
    167					TMP=TMP+4			;++003
    168						.ENDR			;++003
    169	000410	000000 				.WORD	0		;++003 END OF /DS VALUE TABLE
INOFL	MACRO M1108  05-DEC-77 23:23  PAGE 6


    171	000412					PURE	PUREI,I		;++017
    172
    173
    174					;+
    175					; **-$INOFL-INITIALIZE OUTPUT FILES
    176					;
    177					; INPUTS:
    178					;
    179					;	R0=GET COMMAND LINE RETURN STATUS (CARRY BIT).
    180					;		IF R0 LT 0, THEN ERROR RETURN.
    181					;		IF R0 GE 0, THEN NORMAL RETURN.
    182					;	R4=ADDRESS OF GET COMMAND LINE BLOCK.
    183					;
    184					; OUTPUTS:
    185					;
    186					;	R0=PL IF OUTPUT FILES INITIALIZED.
    187					;	R0=MI IF ERRORS WERE ENCOUNTERED.
    188					;-
    189
    190	000000				$INOFL::			;++014
    191	000000	005700 				TST	R0		;++014 CHECK RETURN STATUS FROM GCML
    192	000002	100034 				BPL	40$		;++014 BRANCH IF GCML WAS SUCCESSFUL
    193	000004	116400 	000140 			MOVB	G.ERR(R4),R0	;GET ERROR STATUS
    194	000010	122700 	177766 			CMPB	#GE.EOF,R0	;END OF FILE?
    195	000014	001424 				BEQ	30$		;IF EQ YES
    196	000016	012701 	000000G			MOV	#CMLM3,R1	;ASSUME INDIRECT OPEN FAILURE
    197	000022	122700 	177776 			CMPB	#GE.OPR,R0	;OPEN FAILURE?
    198	000026	001446 				BEQ	50$		;IF EQ YES
    199	000030	012701 	000000G			MOV	#CMLM4,R1	;ASSUME BAD INDIRECT FILE
    200	000034	122700 	177775 			CMPB	#GE.BIF,R0	;BAD INDIRECT FILE?
    201	000040	001441 				BEQ	50$		;IF EQ YES
    202	000042	012701 	000000G			MOV	#CMLM5,R1	;ASSUME INDIRECT DEPTH EXCEEDED
    203	000046	122700 	177774 			CMPB	#GE.MDE,R0	;MAX DEPTH EXCEEDED?
    204	000052	001434 				BEQ	50$		;IF EQ YES
    205	000054	012701 	000000G		10$:	MOV	#CMLM2,R1	;I/O ERROR
    206	000060	012102 			20$:	MOV	(R1)+,R2	;SET LENGTH OF LINE
    207	000062					CALL	OUTMSG		;++018 SEND CMD I/O ERROR MESSAGE TO 'CMO'
    208	000066				30$:				;++018
    209
    210
    211						.IF NDF	YQCMO		;++018
    212
    213						CLOSE$	#CMOFDB		;++005 CLOSE COMMAND OUTPUT FILE
    214
    215						.ENDC			;++013 'YQCMO'
    216
    217
    218	000066					EXIT$S			;EXIT TO SYSTEM
    219
    220					;
    221					; COMMAND LINE SUCESSFULLY READ
    222					;
    223
    224	000074				40$:	CALL	SAVREG		;++014 SAVE REGISTERS
    225	000100	012767 	000000G	000000G		MOV	#$FDBLS,$NXFDB	;++022 INIT AVAILABLE FDB LIST POINTER          ;**NEW**
    226	000106	005067 	000000G			CLR	$XFDB		;++022 CLEAR TABLE SLOT FOR EXTRA FDB           ;**NEW**
    227	000112	012700 	000000G			MOV	#CSIBLK,R0	;++017 PUT ADDR OF CSIBLK IN R0
INOFL	MACRO M1108  05-DEC-77 23:23  PAGE 6-1


    228	000116	016460 	000146 	000002 		MOV	G.CMLD(R4),C.CMLD(R0)  ;++017 SET LINE LENGTH
    229	000124	016460 	000150 	000004 		MOV	G.CMLD+2(R4),C.CMLD+2(R0)  ;++017 SET LINE ADDRESS
    230	000132					CSI$1	R0		;++017 ANALYZE COMMAND LINE SYNTAX
    231	000136	103007 				BCC	70$		;++017 BRANCH IF SYNTAX IS O.K.
    232	000140	012701 	000000G		45$:	MOV	#CSIM2,R1	;++017 COMMAND SYNTAX ERROR
    233	000144				50$:	CALL	OUTERM		;++013 SEND ERR MSG AND CMD LINE TO CMO
    234	000150	012700 	177777 		60$:	MOV	#-1,R0		;SET ERROR STATUS
    235	000154	000207 				RETURN			;
    236
    237					;
    238					; SYNTAX CORRECT OPEN OUTPUT FILES
    239					;
    240
    241	000156	016064 	000002 	000146 	70$:	MOV	C.CMLD(R0),G.CMLD(R4)  ;++017 RESET COMMAND LINE LENGTH
    242	000164	001771 				BEQ	60$		;++013 DON'T PROCESS NULL LINE
    243	000166	132760 	000040 	000001 		BITB	#CS.EQU,C.STAT(R0)  ;++017 CHECK FOR EQUAL SIGN SEEN
    244	000174	001761 				BEQ	45$		;++017 IF NOT, DECLARE SYNTAX ERROR
    245	000176	112760 	000002 	000000 		MOVB	#CS.OUT,C.TYPR(R0)  ;++017 SPECIFY OUTPUT REQUEST
    246	000204	012701 	000006 			MOV	#BINCHN,R1	;SET CHANNEL NUMBER
    247	000210	012702 	000130'			MOV	#OBJSWT,R2	;SET ADDRESS OF SWITCH LIST
    248	000214					CALL	$GTFDB		;++022 GET NEXT AVAILABLE FDB                   ;**NEW**
    249	000220	010067 	000006G			MOV	R0,FDBTBL+BINCHN  ;++017 AND STORE IT IN FDB TABLE              ;**-1
    250	000224					FDAT$R	R0,#R.VAR,,#OBJLEN,,#-1  ;++017 SET FILE DATA ATTRIBUTES
    251	000246					FDOP$R	R0,#3,,#OBJNAM	;++017 SET FILE OPEN PARAMETERS
    252	000262					CALL	OPENCH		;OPEN OBJECT CHANNEL
    253	000266	100510 				BMI	100$		;++014 BRANCH TO LEAVE ON ERROR
    254	000270	105767 	000006G			TSTB	IOFTBL+BINCHN	;++014 OBJECT FILE CREATED?
    255	000274	001405 				BEQ	72$		;++017 BRANCH IF NOT
    256	000276	105267 	000000G			INCB	OBJFIL		;++014 INDICATE OBJECT FILE CREATED
    257	000302					CALL	90$		;++014 CLOSE FILE FOR LATER RE-OPEN
    258	000306	000405 				BR	75$		;++017                                          ;**-1
    259	000310	005067 	000006G		72$:	CLR	FDBTBL+BINCHN	;++017 INDICATE NO OBJECT FILE
    260	000314	162767 	000002 	000000G		SUB	#2,$NXFDB	;++022 RESTORE NEXT FDB POINTER                 ;**NEW**
    261	000322				75$:	CALL	$GTFDB		;++022 GET NEXT AVAILABLE FDB                   ;**NEW**
    262	000326	010067 	000004G			MOV	R0,FDBTBL+LSTCHN  ;++022 STORE ADDR IN FDB TABLE                ;**NEW**
    263	000332					FDAT$R	R0,#R.VAR,#FD.CR,#LSTLEN,,$LSEXT  ;++018 SET DATA ATTRIBS       ;**-2
    264	000362					FDOP$R	R0,#4,,#LSTNAM	;++017 SET FILE OPEN PARAMETERS
    265	000376	012701 	000004 			MOV	#LSTCHN,R1	;SET CHANNEL NUMBER
    266	000402	012702 	000076'			MOV	#LSTSWT,R2	;SET ADDRESS OF SWITCH LIST
    267	000406					CALL	OPENCH		;OPEN CHANNEL
    268	000412	100436 				BMI	100$		;++014 BRANCH TO LEAVE ON ERROR
    269	000414	105767 	000004G			TSTB	IOFTBL+LSTCHN	;++014 LISTING FILE CREATED?
    270	000420	001006 				BNE	78$		;++017 BRANCH IF TRUE
    271	000422	005067 	000004G			CLR	FDBTBL+LSTCHN	;++017 INDICATE NO LISTING FILE
    272	000426	162767 	000002 	000000G		SUB	#2,$NXFDB	;++022 RESTORE NEXT FDB POINTER                 ;**NEW**
    273					                                                                                ;**NEW**
    274					                                                                                ;**NEW**
    275						.IF NDF XCREF		;++022                                          ;**NEW**
    276					                                                                                ;**NEW**
    277						BR	80$		;++022                                          ;**NEW**
    278					                                                                                ;**NEW**
    279						.IFF			;++022                                          ;**NEW**
    280					                                                                                ;**NEW**
    281	000434	000424 				BR	95$		;++017 BRANCH TO RETURN
    282					                                                                                ;**NEW**
    283						.ENDC			;++022                                          ;**NEW**
    284					                                                                                ;**NEW**
INOFL	MACRO M1108  05-DEC-77 23:23  PAGE 6-2


    285					                                                                                ;**NEW**
    286	000436				78$:				;++017
    287	000436	105267 	000000G			INCB	LSTFIL		;++014 INDICATE LISTING FILE CREATED
    288
    289
    290						.IF DF	RSX11M		;++022                                          ;**NEW**
    291					                                                                                ;**-1
    292	000442					CALL	90$		;++022 CLOSE LISTING FILE                       ;**NEW**
    293					                                                                                ;**-11
    294						.ENDC			;++017
    295
    296
    297						.IF NDF	XCREF		;++022                                          ;**NEW**
    298					                                                                                ;**NEW**
    299					80$:	CALL	$OPCRF		;++022 OPEN CRF FILE IF NEEDED                  ;**NEW**
    300						BMI	100$		;++022 IF MI ERROR                              ;**NEW**
    301						TSTB	IOFTBL+CRFCHN	;++022 WAS A FILE CREATED?                      ;**NEW**
    302						BEQ	95$		;++022 IF EQ NO                                 ;**NEW**
    303						INCB	CRFFIL		;++022 FLAG EXISTENCE OF CRF FILE               ;**NEW**
    304					                                                                                ;**NEW**
    305						.IFF			;++022                                          ;**NEW**
    306					                                                                                ;**NEW**
    307	000446	000417 				BR	95$		;++022 BRANCH TO LEAVE                          ;**NEW**
    308					                                                                                ;**NEW**
    309						.ENDC			;++022                                          ;**NEW**
    310					                                                                                ;**NEW**
    311					                                                                                ;**NEW**
    312	000450	016100 	000000G		90$:	MOV	FDBTBL(R1),R0	;++014 GET FDB ADDRESS IN R0
    313	000454	010003 				MOV	R0,R3		;++014 POINT R3 TO THE ...
    314	000456	062703 	000000G			ADD	#F.FNB+N.FID,R3	;++013 ... FILE ID
    315	000462	012346 				MOV	(R3)+,-(SP)	;++014 SAVE ...
    316	000464	012346 				MOV	(R3)+,-(SP)	;++014 ... THE ...
    317	000466	012346 				MOV	(R3)+,-(SP)	;++014 ... FILE ID
    318	000470					CLOSE$			;++014 CLOSE THE OUTPUT FILE
    319	000474	105061 	000000G			CLRB	IOFTBL(R1)	;++014 SET FILE CLOSED STATUS
    320	000500	012643 				MOV	(SP)+,-(R3)	;++014 RESTORE ...
    321	000502	012643 				MOV	(SP)+,-(R3)	;++014 ... THE ...
    322	000504	012643 				MOV	(SP)+,-(R3)	;++014 ... FILE ID
    323	000506	005000 			95$:	CLR	R0		;++017 SET FILE SUCCESS STATUS
    324	000510	000207 			100$:	RETURN			;++014
    325
    326
    327		000001 				.END
INOFL	MACRO M1108  05-DEC-77 23:23  PAGE 6-3
SYMBOL TABLE

BINCHN= 000006   	DSMSK = ****** GX	G.PSDS= 000142   	OBJNAM  000036RG    002	XCREF = 000000
BPMB  = 000020   	DSVAL   000370R     002	ILVL  = 000004   	OBJSWT  000130R     002	XEDABS= 000000
CMLM2 = ****** GX	DSVALS= 000004   	IOFTBL= ****** GX	OPENCH= ****** GX	XEDCDR= 000000
CMLM3 = ****** GX	ENADDR= ****** GX	LIADDR= ****** GX	OUTERM= ****** GX	XEDCRF= 000000
CMLM4 = ****** GX	ENMSK = ****** GX	LIMSK = ****** GX	OUTMSG= ****** GX	XEDFPT= 000000
CMLM5 = ****** GX	ENVAL   000346R     002	LINLEN= 000204   	PAR$$$= 000000   	XEDLC = 000000
CMOCHN= 000000   	ENVALS= 000004   	LIVAL   000152R     002	RELCHN= 000010   	XEDPIC= 000000
CPL   = 000120   	FDBTBL= ****** GX	LIVALS= 000017   	RLDLEN= 000052   	XEDPNC= 000000
CSIBLK= ****** GX	FD.CR = ****** GX	LPP   = 000074   	RSX11M= 000000   	XFCSQN= 000000
CSIM2 = ****** GX	F.ALOC= ****** GX	LSTCHN= 000004   	R$$11M= 000000   	XFLTG = 000000
CS.DIF= 000002   	F.DFNB= ****** GX	LSTFIL= ****** GX	R.VAR = ****** GX	XOPEXP= 000000
CS.DVF= 000004   	F.FNB = ****** GX	LSTLEN= 000204   	SAVREG= ****** GX	XSUBD = 000000
CS.EQU= 000040   	F.LUN = ****** GX	LSTNAM  000000RG    002	SMLCHN= 000012   	XZERR = 000000
CS.INP= 000001   	F.RATT= ****** GX	LSTSWT  000076R     002	SMLLEN= 000120   	X45   = 000000
CS.MOR= 000020   	F.RSIZ= ****** GX	MAXCHN= 000014   	SPMSK = ****** GX	YQCMO = 000000
CS.NMF= 000001   	F.RTYP= ****** GX	NLADDR= ****** GX	SRCCHN= 000002   	$FDBLS= ****** GX
CS.OUT= 000002   	GE.BIF= 177775   	NLMSK = ****** GX	SRCLEN= 000204   	$GTFDB= ****** GX
CS.WLD= 000010   	GE.CLO= 000004   	NLVAL   000250R     002	STLLEN= 000100   	$INOFL  000000RG    003
C.CMLD= 000002   	GE.COM= 000001   	NLVALS= 000017   	S.FDB = 000140   	$LSEXT  000074RG    002
C.DEVD= 000006   	GE.EOF= 177766   	N.DID = 000024   	S.FNAM= 000006   	$NXFDB= ****** GX
C.DIRD= 000012   	GE.IND= 000002   	N.DVNM= 000032   	S.FNB = 000036   	$SWTCH= ****** GX
C.DSDS= 000006   	GE.IOR= 177777   	N.FID = 000000   	S.FNBW= 000017   	$XFDB = ****** GX
C.FILD= 000016   	GE.LC = 000010   	N.FNAM= 000006   	S.FNTY= 000004   	$$    = 000067
C.MKW1= 000024   	GE.MDE= 177774   	N.FTYP= 000014   	S.FTYP= 000002   	.CLOSE= ****** G
C.MKW2= 000026   	GE.OPR= 177776   	N.FVER= 000016   	S.NFEN= 000020   	.CSI1 = ****** G
C.SIZE= 000054   	G.CMLD= 000146   	N.NEXT= 000022   	TMP   = 000020   	...PC1= 000000
C.STAT= 000001   	G.DPRM= 000160   	N.STAT= 000020   	TMPCNT= 000014   	...PC2= 000052R     002
C.SWAD= 000022   	G.ERR = 000140   	N.UNIT= 000034   	TTLLEN= 000040   	...PC3= 000000
C.TYPR= 000000   	G.ISIZ= 000020   	OBJFIL= ****** GX	XBSRCH= 000000   	...TPC= 000036
DSADDR= ****** GX	G.MODE= 000141   	OBJLEN= 000052

. ABS.	000000	   000
      	000000	   001
DPURE 	000412	   002
PUREI 	000512	   003
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  6648 WORDS  ( 26 PAGES)
DYNAMIC MEMORY:  7328 WORDS  ( 28 PAGES)
ELAPSED TIME:  00:01:15
[45,10]INOFL,[45,20]INOFL/-SP=[45,30]RSXPAR,MPARAM,MCIOCH,GENMC,INOFL
LABEL	MACRO M1108  05-DEC-77 23:24  PAGE 4


      1						.TITLE	LABEL
      2						.IDENT	/X04.02/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION X04.02                                                                ;**NEW**
     23					;                                                                               ;**-1
     24					; B. BOWERING MAIN AUTHOR
     25					;
     26					; MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 20-JAN-73
     29					;	C.A. D'ELIA	12-NOV-73	006
     30					;	C.A. D'ELIA	16-NOV-73	009
     31					;	C.A. D'ELIA	28-JAN-74	012
     32					;	H.A. NICHOLS	18-JUN-74	017
     33					;	C.A. D'ELIA	01-AUG-74	017
     34					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     35					;	C.A. D'ELIA	01-NOV-75	022	(MDF AND N$:: FIXES)            ;**NEW**
     36					;
     37					;
     38					; **--LABEL--LABEL PROCESSOR
     39					;
     40					;
     41					;
     42
     43	000000					PURE	PUREI,I		;++017
     44	000000				LABEL::				;++006 LABEL PROCESSOR
     45						.ENABL	LSB
     46	000000	026767 	000000G	000000G		CMP	SYMBOL,R50DOT	;PERIOD?
     47	000006	001004 				BNE	100$		;++012 NO, SKIP
     48	000010					ERROR	Q		;++012 YES, ERROR
     49	000016	000526 				BR	6$		;++012 BRANCH TO LEAVE
     50	000020				100$:				;++012
     51
     52						.IF NDF	XEDLSB
     53	000020	032767 	000000G	000000G		BIT	#ED.LSB,EDMASK	;++017 IS .ENABL LSB IN EFFECT?
     54	000026	001405 				BEQ	200$		;++017 YES, DON'T CHANGE BLOCK NUMBER
     55	000030	005067 	000000G			CLR	LSFLAG		;++017 CLEAR AUTO-GENERATED SYMBOL BASE
     56									;++017 ... AND INDICATE NEED NEW BLOCK
     57	000034	016767 	000000G	000000G		MOV	CLCFGS,LSBFGS	;++017 SET SYMBOL BLOCK SECTOR AND FLAGS
LABEL	MACRO M1108  05-DEC-77 23:24  PAGE 4-1


     58	000042				200$:				;++017
     59						.ENDC
     60
     61	000042					SSRCH			;NO, SEARCH THE SYMBOL TABLE
     62	000046					CRFDEF
     63	000046	012703 	000000G			MOV	#FLAGS,R3	;++022 POINT R3 TO FLAGS WORD                   ;**NEW**
     64	000052	032713 	000020 			BIT	#DFGFLG,(R3)	;++022 IS DEFAULT GLOBAL BIT SET?               ;**NEW**
     65	000056	001402 				BEQ	300$		;++022 IF EQ NO                                 ;**NEW**
     66	000060	042713 	000120 			BIC	#DFGFLG!GLBFLG,(R3)  ;++022 CLEAR DEFAULT AND GLOBAL BITS       ;**NEW**
     67	000064				300$:	GETNB			;++022 BYPASS THE COLON                         ;**NEW**
     68	000070	020527 	000072 			CMP	R5,#':		;++022 IS NEXT CHAR ANOTHER COLON?              ;**NEW**
     69	000074	001004 				BNE	400$		;++022 IF NE NO                                 ;**NEW**
     70	000076	052713 	000100 			BIS	#GLBFLG,(R3)	;++022 SET GLOBAL BIT                           ;**NEW**
     71					                                                                                ;**NEW**
     72	000102				LABELF::			;++006 ALTERNATE ENTRY FOR LOCAL LABELS
     73	000102					GETNB			;++022 BYPASS THE COLON                         ;**NEW**
     74	000106				400$:				;++022                                          ;**NEW**
     75	000106					SETXPR			;++006 SET EXPRESSION REGISTERS
     76	000112	032713 	000010 		10$:	BIT	#DEFFLG,(R3)	;ALREADY DEFINED?                               ;**-6
     77	000116	001012 				BNE	1$		;  YES
     78	000120	016700 	000000G			MOV	CLCFGS,R0	;NO, GET CURRENT LOCATION CHARACTERISTICS
     79	000124	042700 	000337 			BIC	#377-<RELFLG>,R0	;CLEAR ALL BUT RELOCATION FLAG
     80	000130	052700 	000012 			BIS	#DEFFLG!LBLFLG,R0	;FLAG AS LABEL
     81	000134	050013 			11$:	BIS	R0,(R3)		;SET MODE BITS                                  ;**-4
     82	000136	016714 	000000G			MOV	CLCLOC,(R4)	;  AND CURRENT LOCATION
     83	000142	000433 				BR	5$		;++022 BRANCH TO INSERT SYMBOL                  ;**NEW**
     84	000144	032713 	000002 		1$:	BIT	#LBLFLG,(R3)	;DEFINED, AS LABEL?                             ;**-1
     85	000150	001420 				BEQ	20$		;++012 NO, MULTI-DEFINED ERROR
     86	000152	026714 	000000G			CMP	CLCLOC,(R4)	;HAS ANYBODY MOVED?                             ;**-5
     87	000156	001003 				BNE	2$		;  YES
     88	000160	126712 	000000G			CMPB	CLCSEC,(R2)	;SAME SECTOR?
     89	000164	001414 				BEQ	3$		;  YES, OK
     90	000166	005767 	000000G		2$:	TST	PASS		;++022 IS THIS FIRST PASS?                      ;**NEW**
     91	000172	001407 				BEQ	20$		;++022 IF EQ YES--MULTI-DEFINED SYMBOL          ;**NEW**
     92	000174	032713 	000004 			BIT	#MDFFLG,(R3)	;++022 WAS SYMBOL ALREADY MULTI-DEFINED?        ;**NEW**
     93	000200	001011 				BNE	4$		;++022 IF NE YES--INHIBIT P ERROR               ;**NEW**
     94	000202					ERROR	P		;++022 ELSE, SYMBOL IS JUST OUT OF PHASE        ;**NEW**
     95	000210	000410 				BR	5$		;++022 BRANCH TO INSERT NEW DEFN                ;**NEW**
     96	000212	052713 	000004 		20$:	BIS	#MDFFLG,(R3)	;++022 SET MULTI-DEFINED FLAG                   ;**NEW**
     97	000216	032713 	000004 		3$:	BIT	#MDFFLG,(R3)	;++012 MULTI-DEFINED LABEL?                     ;**-1
     98	000222	001403 				BEQ	5$		;++012 NO, SKIP
     99	000224				4$:				;++022                                          ;**NEW**
    100	000224					ERROR	M		;++012 YES, DECLARE ERROR
    101	000232	026727 	000000G	000000G	5$:	CMP	$LSNDX,#LSYLST	;++021 IS THIS A LOCAL SYMBOL?                  ;**NEW**
    102	000240	001011 				BNE	31$		;++009 NO, JUST INSERT                          ;**-1
    103	000242	126767 	000000G	000001G		CMPB	CLCSEC,LSBFGS+1	;++017 CURRENT SECTOR MUST MATCH ...
    104	000250	001404 				BEQ	30$		;++017 ... LSB SECTOR--SKIP IF TRUE
    105	000252					ERROR	P		;++017 OTHERWISE, DECLARE AN ERROR, ...
    106	000260	000403 				BR	40$		;++017 ... AND BYPASS SYMBOL INSERTION
    107	000262	011413 			30$:	MOV	(R4),(R3)	;++017 IF O.K., THEN RE-FORMAT ENTRY
    108	000264				31$:	INSERT			;++009 INSERT/UPDATE LABEL ENTRY
    109	000270				40$:	SETPF0			;++017 PRINT THE LOCATION FIELD
    110	000274				6$:	SETNB			;BYPASS ANY BLANKS                              ;**-1
    111	000300	016767 	000000G	000000G		MOV	CHRPNT,LBLEND	;MARK END OF LABEL
    112	000306	000167 	000000G			JMP	STMNT		;TRY FOR MORE
    113
    114						.DSABL	LSB
LABEL	MACRO M1108  05-DEC-77 23:24  PAGE 4-2


    115
    116		000001 				.END
LABEL	MACRO M1108  05-DEC-77 23:24  PAGE 4-3
SYMBOL TABLE

AM.DEC= 000040   	CH.QM = 000077   	CSTMEM= 000001   	LET.A = 000101   	RLDT15= 000015
AM.DEF= 000010   	CH.QTM= 000042   	CSTREL= 000040   	LET.B = 000102   	RLDT16= 000016
AM.IMM= 000027   	CH.RAB= 000076   	CSTTYP= 000200   	LET.C = 000103   	RLDT17= 000017
AM.INC= 000020   	CH.RP = 000051   	DEFFLG= 000010   	LET.D = 000104   	RSX11M= 000000
AM.NDX= 000060   	CH.SMC= 000073   	DFGFLG= 000020   	LET.E = 000105   	R$$11M= 000000
AM.PC = 000007   	CH.SUB= 000055   	DIG.0 = 000060   	LET.F = 000106   	R50DOT= ****** GX
AM.REL= 000067   	CH.UAR= 000136   	DIG.9 = 000071   	LET.G = 000107   	SETNB = ****** GX
ASTFLG= 000114   	CH.XCL= 000047   	EDMASK= ****** GX	LET.O = 000117   	SETPF0= ****** GX
BLKT01= 000001   	CLCFGS= ****** GX	ED.LSB= ****** GX	LET.Z = 000132   	SETXPR= ****** GX
BLKT02= 000002   	CLCLOC= ****** GX	ERRBTS= ****** GX	LF    = 000012   	SPACE = 000040
BLKT03= 000003   	CLCSEC= ****** GX	ERR.M = ****** GX	LSBFGS= ****** GX	SSRCH = ****** GX
BLKT04= 000004   	CPXADD= 000001   	ERR.P = ****** GX	LSFLAG= ****** GX	STMNT = ****** GX
BLKT05= 000005   	CPXAND= 000005   	ERR.Q = ****** GX	LST.KB= 000001   	SYMBOL= ****** GX
BLKT06= 000006   	CPXCOM= 000011   	FF    = 000014   	LST.LP= 000002   	TAB   = 000011
CHRPNT= ****** GX	CPXCON= 000020   	FLAGS = ****** GX	LSYLST= ****** GX	VT    = 000013
CH.ADD= 000053   	CPXDIV= 000004   	GETNB = ****** GX	MDFFLG= 000004   	XBSRCH= 000000
CH.AND= 000046   	CPXFLG= 000200   	GLBFLG= 000100   	PASS  = ****** GX	XCREF = 000000
CH.BSL= 000134   	CPXGLB= 000016   	GSDT00= 000000   	PSTFLG= 000050   	XEDABS= 000000
CH.COL= 000072   	CPXIOR= 000006   	GSDT01= 000400   	REGFLG= 000001   	XEDCDR= 000000
CH.COM= 000054   	CPXMUL= 000003   	GSDT02= 001000   	RELFLG= 000040   	XEDFPT= 000000
CH.DIV= 000057   	CPXNEG= 000010   	GSDT03= 001400   	RLDT00= 000000   	XEDLC = 000000
CH.DOL= 000044   	CPXOPC= 000010   	GSDT04= 002000   	RLDT01= 000001   	XEDPIC= 000000
CH.DOT= 000056   	CPXREL= 000017   	GSDT05= 002400   	RLDT02= 000002   	XEDPNC= 000000
CH.EQU= 000075   	CPXSDS= 000013   	GSDT06= 003000   	RLDT03= 000003   	XFCSQN= 000000
CH.HSH= 000043   	CPXSTO= 000012   	ILVL  = 000004   	RLDT04= 000004   	XFLTG = 000000
CH.IND= 000100   	CPXSUB= 000002   	INSERT= ****** GX	RLDT05= 000005   	XOPEXP= 000000
CH.IOR= 000041   	CR    = 000015   	LABEL   000000RG    002	RLDT06= 000006   	XSUBD = 000000
CH.LAB= 000074   	CSTACC= 000020   	LABELF  000102RG    002	RLDT07= 000007   	XZERR = 000000
CH.LP = 000050   	CSTALO= 000004   	LBLEND= ****** GX	RLDT10= 000010   	X45   = 000000
CH.MUL= 000052   	CSTFLG= 000050   	LBLFLG= 000002   	RLDT11= 000011   	$LSNDX= ****** GX
CH.PCT= 000045   	CSTGBL= 000100

. ABS.	000000	   000
      	000000	   001
PUREI 	000312	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2695 WORDS  ( 11 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:20
[45,10]LABEL,[45,20]LABEL/-SP=[45,30]RSXPAR,GENMC,FLGDF,LABEL
LISTC	MACRO M1108  05-DEC-77 23:24  PAGE 4


      1						.TITLE	LISTC
      2						.IDENT	/X05.01/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A  SINGLE COMPUTER SYSTEM AND CAN BE  COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT  NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE  INFORMATION  IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE  AND  SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION X05.01                                                                ;**NEW**
     23					;                                                                               ;**-1
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 6-FEB-73
     29					;	C.A. D'ELIA	25-JAN-74	011
     30					;	C.A. D'ELIA	07-APR-74	015
     31					;	H.A. NICHOLS	18-JUN-74	017
     32					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     33					;
     34					;
     35					                                                                                ;**NEW**
     36					                                                                                ;**NEW**
     37	000000					PURE	PUREI,I		;++017                                          ;**-30
     38
     39					;+
     40					; **-LIST-LIST/NOLIST PRINT CONTROL FUNCTION
     41					; **-PAGE-PAGE EJECT
     42					;-
     43
     44	000000				LIST::				;++011 R3=0 IMPLIES ".LIST"
     45									;++011 R3=-1 IMPLIES ".NLIST"
     46	000000	006303 				ASL	R3		;++011 NOW MAKE R3 EITHER 0 OR -2
     47	000002	005203 				INC	R3		;NOW 1/-1
     48	000004				1$:	TSTARG			;TEST FOR ANOTHER ARGUMENT
     49	000010	001005 				BNE	2$		;  VALID
     50	000012	005767 	000000G			TST	ARGCNT		;NULL, FIRST?
     51	000016	001051 				BNE	7$		;  NO, WE'RE THROUGH
     52	000020	005267 	000000G			INC	ARGCNT		;YES, MARK IT
     53	000024				2$:	GETSYM			;TRY FOR A SYMBOL
     54	000030					SCANW	LCDROL		;LOOK IT UP IN THE TABLE
     55	000040	001435 				BEQ	6$		;  ERROR IF NOT FOUND
     56	000042	005002 				CLR	R2
     57	000044	000261 				SEC
LISTC	MACRO M1108  05-DEC-77 23:24  PAGE 4-1


     58	000046	006102 			3$:	ROL	R2
     59	000050					SOB	R0,3$
     60	000054	005767 	000000G			TST	EXMFLG		;CALLED FROM COMMAND STRING?
     61	000060	001403 				BEQ	11$		;  NO
     62	000062	050267 	000000G			BIS	R2,LCMCSI	;YES, SET DISABLE BITS
     63	000066	000403 				BR	12$		;  AND SKIP TEST
     64	000070	030267 	000000G		11$:	BIT	R2,LCMCSI	;THIS FLAG OFF LIMITS?
     65	000074	001016 				BNE	5$		;  YES
     66	000076	040267 	000000G		12$:	BIC	R2,LCMASK
     67	000102	030227 	000000G			BIT	R2,#LC.		;NULL?
     68	000106	001405 				BEQ	4$		;  NO
     69	000110	004767 	000034 			CALL	PAGEX		;SET LISTING CONTROL
     70	000114	060367 	000000G			ADD	R3,LCLVL	;YES, UPDATE LEVEL COUNT
     71	000120	001404 				BEQ	5$		;DON'T SET FLAG IF BACK TO ZERO
     72	000122	005703 			4$:	TST	R3
     73	000124	100002 				BPL	5$		;.LIST, BRANCH
     74	000126	050267 	000000G			BIS	R2,LCMASK
     75	000132	000724 			5$:	BR	1$		;TRY FOR MORE
     76	000134				6$:	ERROR	A
     77	000142	000207 			7$:	RETURN
     78	000144	005267 	000000G		PAGE::	INC	FFCNT		;SIMULATE FORM FEED AFTER THIS LINE
     79	000150	052767 	000000G	000000G	PAGEX:	BIS	#LC.LD,LCFLAG	;FLAG AS LISTING DIRECTIVE
     80	000156	000207 				RETURN
     81
     82		000001 				.END
LISTC	MACRO M1108  05-DEC-77 23:24  PAGE 4-2
SYMBOL TABLE

AM.DEC= 000040   	CH.MUL= 000052   	CSTGBL= 000100   	LCMCSI= ****** GX	RLDT06= 000006
AM.DEF= 000010   	CH.PCT= 000045   	CSTMEM= 000001   	LC.   = ****** GX	RLDT07= 000007
AM.IMM= 000027   	CH.QM = 000077   	CSTREL= 000040   	LC.LD = ****** GX	RLDT10= 000010
AM.INC= 000020   	CH.QTM= 000042   	CSTTYP= 000200   	LET.A = 000101   	RLDT11= 000011
AM.NDX= 000060   	CH.RAB= 000076   	DEFFLG= 000010   	LET.B = 000102   	RLDT15= 000015
AM.PC = 000007   	CH.RP = 000051   	DFGFLG= 000020   	LET.C = 000103   	RLDT16= 000016
AM.REL= 000067   	CH.SMC= 000073   	DIG.0 = 000060   	LET.D = 000104   	RLDT17= 000017
ARGCNT= ****** GX	CH.SUB= 000055   	DIG.9 = 000071   	LET.E = 000105   	RSX11M= 000000
ASTFLG= 000114   	CH.UAR= 000136   	ERRBTS= ****** GX	LET.F = 000106   	R$$11M= 000000
BLKT01= 000001   	CH.XCL= 000047   	ERR.A = ****** GX	LET.G = 000107   	SCANW = ****** GX
BLKT02= 000002   	CPXADD= 000001   	EXMFLG= ****** GX	LET.O = 000117   	SPACE = 000040
BLKT03= 000003   	CPXAND= 000005   	FF    = 000014   	LET.Z = 000132   	TAB   = 000011
BLKT04= 000004   	CPXCOM= 000011   	FFCNT = ****** GX	LF    = 000012   	TSTARG= ****** GX
BLKT05= 000005   	CPXCON= 000020   	GETSYM= ****** GX	LIST    000000RG    002	VT    = 000013
BLKT06= 000006   	CPXDIV= 000004   	GLBFLG= 000100   	LST.KB= 000001   	XBSRCH= 000000
CH.ADD= 000053   	CPXFLG= 000200   	GSDT00= 000000   	LST.LP= 000002   	XCREF = 000000
CH.AND= 000046   	CPXGLB= 000016   	GSDT01= 000400   	MDFFLG= 000004   	XEDABS= 000000
CH.BSL= 000134   	CPXIOR= 000006   	GSDT02= 001000   	PAGE    000144RG    002	XEDCDR= 000000
CH.COL= 000072   	CPXMUL= 000003   	GSDT03= 001400   	PAGEX   000150R     002	XEDFPT= 000000
CH.COM= 000054   	CPXNEG= 000010   	GSDT04= 002000   	PSTFLG= 000050   	XEDLC = 000000
CH.DIV= 000057   	CPXOPC= 000010   	GSDT05= 002400   	REGFLG= 000001   	XEDPIC= 000000
CH.DOL= 000044   	CPXREL= 000017   	GSDT06= 003000   	RELFLG= 000040   	XEDPNC= 000000
CH.DOT= 000056   	CPXSDS= 000013   	ILVL  = 000004   	RLDT00= 000000   	XFCSQN= 000000
CH.EQU= 000075   	CPXSTO= 000012   	LBLFLG= 000002   	RLDT01= 000001   	XFLTG = 000000
CH.HSH= 000043   	CPXSUB= 000002   	LCDROL= ****** GX	RLDT02= 000002   	XOPEXP= 000000
CH.IND= 000100   	CR    = 000015   	LCFLAG= ****** GX	RLDT03= 000003   	XSUBD = 000000
CH.IOR= 000041   	CSTACC= 000020   	LCLVL = ****** GX	RLDT04= 000004   	XZERR = 000000
CH.LAB= 000074   	CSTALO= 000004   	LCMASK= ****** GX	RLDT05= 000005   	X45   = 000000
CH.LP = 000050   	CSTFLG= 000050

. ABS.	000000	   000
      	000000	   001
PUREI 	000160	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2600 WORDS  ( 11 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:18
[45,10]LISTC,[45,20]LISTC/-SP=[45,30]RSXPAR,GENMC,FLGDF,LISTC
LSTNG	MACRO M1108  05-DEC-77 23:25  PAGE 6


      1						.TITLE	LSTNG
      2						.IDENT	/X08.01/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A  SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE  INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND  SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION X08.01                                                                ;**NEW**
     23					;                                                                               ;**-1
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 6-FEB-73
     29					;	C.A. D'ELIA	28-JAN-74	012
     30					;	C.A. D'ELIA	22-MAR-74	014
     31					;	C.A. D'ELIA	07-APR-74	015
     32					;	H.A. NICHOLS	18-JUN-74	017
     33					;	C.A. D'ELIA	01-NOV-75	022	(CREF)                          ;**NEW**
     34					;
     35					;+
     36					; **-SETPF0-SET PRINT FIELD ZERO
     37					; **-SETPF1-SET PRINT FIELD ONE
     38					; **-SETWDB=SET WORD OR BYTE
     39					; **-SETWRD-SET WORD
     40					; **-SETBYT-SET BYTE
     41					;-
     42	000000					PURE	PUREI,I		;++017
     43
     44	000000	016767 	000000G	000000'	SETPF0::MOV	CLCFGS,PF0	;SET CURRENT LOCATION FLAGS
     45	000006	152767 	000100 	000001'		BISB	#100,PF0+1	;ASSUME WORD
     46	000014	016767 	000000G	000002'		MOV	CLCLOC,PF0+2	;SET LOCATION
     47	000022	000207 				RETURN
     48	000024	016767 	000000G	000004'	SETPF1::MOV	MODE,PF1	;SET MODE OF CURRENT VALUE
     49	000032	152767 	000100 	000005'		BISB	#100,PF1+1	;ASSUME WORD
     50	000040	016767 	000000G	000006'		MOV	VALUE,PF1+2
     51	000046	000207 				RETURN
     52	000050	005711 			SETWDB::TST	(R1)		;POSITIVE?
     53	000052	100412 				BMI	SETBYT		;  NO, BYTE
     54	000054	010146 			SETWRD::MOV	R1,-(SP)	;STACK INDEX
     55	000056	016101 	000002 			MOV	2(R1),R1	;GET ACTUAL VALUE
     56	000062	112712 	000030 			MOVB	#DIG.0/2,(R2)	;SET PRIMITIVE
     57	000066	006301 				ASL	R1
LSTNG	MACRO M1108  05-DEC-77 23:25  PAGE 6-1


     58	000070	106122 				ROLB	(R2)+		;MOVE IN BIT
     59	000072	012700 	000005 			MOV	#5,R0
     60	000076	000416 				BR	SETBYX
     61	000100	010146 			SETBYT::MOV	R1,-(SP)	;STACK INDEX
     62	000102	116101 	000002 			MOVB	2(R1),R1	;GET VALUE
     63	000106	012700 	000040 			MOV	#SPACE,R0
     64	000112	110022 				MOVB	R0,(R2)+	;PAD WITH SPACES
     65	000114	110022 				MOVB	R0,(R2)+
     66	000116	110022 				MOVB	R0,(R2)+
     67	000120	000301 				SWAB	R1		;MANIPULATE TO LEFT HALF
     68	000122	106001 				RORB	R1		;GET THE LAST GUY
     69	000124	000241 				CLC
     70	000126	006001 				ROR	R1
     71	000130	012700 	000003 			MOV	#3,R0
     72	000134	000300 			SETBYX:	SWAB	R0
     73	000136	062700 	000003 			ADD	#3,R0
     74	000142	112712 	000006 			MOVB	#DIG.0/10,(R2)
     75	000146	006301 			1$:	ASL	R1
     76	000150	106112 				ROLB	(R2)
     77	000152	105300 				DECB	R0
     78	000154	003374 				BGT	1$
     79	000156	105722 				TSTB	(R2)+
     80	000160	000300 				SWAB	R0
     81	000162					SOB	R0,SETBYX
     82	000166	012601 				MOV	(SP)+,R1
     83	000170	000207 				RETURN
     84
     85	000000					.PSECT	IMPLIN,D,GBL,RW	;++017
     86	000000				PF0::	.BLKW	2		;
     87	000004				PF1::	.BLKW	2		;
     88	000010					PURE	PUREI,I		;++017
     89
     90					;+
     91					; **-PUTKB-LIST ON KB
     92					; **-PUTLP-LIST ON LP
     93					; **-PUTKBL-LIST ON KB AND LP
     94					; **-PUTLIN-OUTPUT LINE
     95					;-
     96
     97	000172	012767 	000001 	000000'	PUTKB::	MOV	#LST.KB,LSTREQ	;SET REQUEST
     98	000200	000406 				BR	PUTLIN
     99	000202	012767 	000001 	000000'	PUTKBL::MOV	#LST.KB,LSTREQ	;SET REQUEST
    100	000210	156767 	000002'	000000'	PUTLP::	BISB	LSTDEV,LSTREQ	;SET LP REQUEST
    101	000216				PUTLIN::SAVREG			;SAVE REGISTERS
    102	000222	010001 				MOV	R0,R1		;ARG TO R1
    103	000224	116704 	000000'			MOVB	LSTREQ,R4	;GET REQUEST
    104	000230	005067 	000000'			CLR	LSTREQ		;CLEAR IT
    105	000234	005704 				TST	R4
    106	000236	001527 				BEQ	PUTLI9		;JUST EXIT IF EMPTY
    107	000240	003053 				BGT	PUTLI2		;OMIT HEADER IF NOT LISTING
    108	000242	005367 	000000G			DEC	LPPCNT		;YES, DECREMENT COUNT
    109	000246	003050 				BGT	PUTLI2		;SKIP IF NOT TIME
    110					;++012
    111					;
    112					; THE FOLLOWING REFERENCE LABEL, 'LINPPG' IS DEFINED TO ALLOW THE
    113					; SETTING OF MAXIMUM LINES PER PAGE AT TASK BUILD TIME.
    114					;
LSTNG	MACRO M1108  05-DEC-77 23:25  PAGE 6-2


    115					;--012
    116		000252'			LINPPG==.+2			;++012 REF LABEL (MAX LINES PER PAGE)
    117	000250	012767 	000074 	000000G	PUTLI1:	MOV	#LPP,LPPCNT	;RESET COUNT
    118	000256	010146 				MOV	R1,-(SP)	;STACK CURRENT POINTER
    119	000260	016702 	000000G			MOV	TTLBRK,R2	;GET END OF PRESET TITLE
    120	000264	005767 	000000G			TST	PASS
    121	000270	001421 				BEQ	11$
    122	000272	012701 	000000'			MOV	#PAGMNE,R1
    123	000276					MOVBYT			;MOVE "PAGE" INTO POSITION
    124	000302	016701 	000000G			MOV	PAGNUM,R1
    125	000306					DNC			;CONVERT TO DECIMAL
    126	000312	005267 	000000G			INC	PAGEXT
    127	000316	001406 				BEQ	11$
    128	000320	112722 	000055 			MOVB	#'-,(R2)+	;SET SEPARATOR
    129	000324	016701 	000000G			MOV	PAGEXT,R1	;GET CURRENT PAGE EXTENSION NUMBER
    130	000330					DNC			;CONVERT TO DECIMAL
    131	000334	105012 			11$:	CLRB	(R2)
    132	000336					PUTLP	#TTLBUF		;PRINT TITLE
    133	000346					PUTLP	#STLBUF		;  SUB-TITLE,
    134	000356					PUTLP	#CRLF		;  AND A BLANK LINE
    135	000366	012601 				MOV	(SP)+,R1
    136	000370				PUTLI2:				;++014
    137	000370	010102 				MOV	R1,R2		;++015 USE THE TEXT BUFFER AS OUTPUT BUFFER
    138	000372	010203 				MOV	R2,R3		;SAVE A COPY
    139	000374	112122 			21$:	MOVB	(R1)+,(R2)+	;MOVE CHARACTER TO OUTPUT BUFFER
    140	000376	003376 				BGT	21$		;LOOP IF NOTHING SPECIAL
    141	000400	114200 				MOVB	-(R2),R0	;SPECIAL, BACK UP AND SET R0
    142	000402	001403 				BEQ	22$		;END IF NULL
    143						.IF NDF	XEDLC
    144						BICB	#200,-(R1)	;CLEAR SIGN BIT IN SOURCE
    145						BNE	21$		;RE-STORE IF LOWER CASE
    146						MOVB	#CH.QM,(R1)	;MUST BE ERROR
    147						.IFF
    148	000404	112741 	000077 			MOVB	#CH.QM,-(R1)	;ILLEGAL CHAR, SET "?"
    149						.ENDC
    150	000410	000771 				BR	21$
    151	000412	020203 			22$:	CMP	R2,R3		;AT BEGINNING?
    152	000414	001410 				BEQ	24$		;  YES, DON'T RETREAT
    153	000416	114200 				MOVB	-(R2),R0	;FETCH PRECEDING CHAR
    154	000420	132760 	000000G	000000G		BITB	#CT.SPT,CTTBL(R0);SPACE OR TAB?
    155	000426	001371 				BNE	22$		;  YES, TRIM IT
    156	000430	122722 	000013 			CMPB	#VT,(R2)+	;MOVE TO END, A VT?
    157	000434	001400 				BEQ	23$		;  YES, NO CR/LF
    158	000436				24$:				;REF LABEL
    159						.IF DF	DOS		;++015
    160						MOVB	#CR,(R2)+	;INSERT CR
    161						MOVB	#LF,(R2)+	;SET LF
    162						.ENDC
    163	000436	160302 			23$:	SUB	R3,R2		;COMPUTE CHARACTER COUNT
    164
    165
    166						.IF LT	LSTLEN-<SRCLEN+40.>  ;++015
    167	000440	020227 	000204 			CMP	R2,#LSTLEN	;++015 IS OUTPUT LARGER THAN ALLOWABLE?
    168	000444	003402 				BLE	30$		;++015 BRANCH IF NOT
    169	000446	012702 	000204 			MOV	#LSTLEN,R2	;++015 ELSE, RESET OUTPUT LENGTH
    170	000452				30$:				;++015
    171						.ENDC			;++015
LSTNG	MACRO M1108  05-DEC-77 23:25  PAGE 6-3


    172
    173
    174	000452	010277 	000004G			MOV	R2,@CNTTBL+LSTCHN	;SET COUNT
    175	000456	006204 				ASR	R4		;KB REQUESTED?
    176	000460	103006 				BCC	25$		;  NO
    177	000462	010367 	000000G			MOV	R3,BUFTBL+CMOCHN  ;++015 SET OUTPUT BUFFER POINTER
    178	000466					$WRITE	CMO		;++014 SEND LINE TO COMMAND OUTPUT
    179	000476	006204 			25$:	ASR	R4		;LISTING REQUESTED?
    180	000500	103006 				BCC	PUTLI9		;  NO
    181	000502	010367 	000004G			MOV	R3,BUFTBL+LSTCHN  ;++015 SET OUTPUT BUFFER POINTER
    182	000506					$WRITE	LST		;LIST IT
    183	000516	000207 			PUTLI9:	RETURN
    184
    185	000000					.PSECT	IMPURE,D,RW	;++017
    186	000000				LSTREQ::.BLKW	1		;LIST REQUEST FLAGS
    187	000002				LSTDEV::.BLKB	2		;ERROR(LH), LISTING (RH)
    188
    189	000000					.PSECT	IMPTXT,D,RW	;++017
    190	000000	   040 	   120 	   101 	PAGMNE::.ASCII	/ PAGE /	;
	000003	   107 	   105 	   040
    191	000006	   000 			CRLF:	.ASCIZ	//
    192					                                                                                ;**-82
    193		000001 				.END
LSTNG	MACRO M1108  05-DEC-77 23:25  PAGE 6-4
SYMBOL TABLE

AM.DEC= 000040   	CH.SMC= 000073   	DIG.0 = 000060   	MOVBYT= ****** GX	SETBYX  000134R     002
AM.DEF= 000010   	CH.SUB= 000055   	DIG.9 = 000071   	OBJLEN= 000052   	SETPF0  000000RG    002
AM.IMM= 000027   	CH.UAR= 000136   	DNC   = ****** GX	PAGEXT= ****** GX	SETPF1  000024RG    002
AM.INC= 000020   	CH.XCL= 000047   	FF    = 000014   	PAGMNE  000000RG    005	SETWDB  000050RG    002
AM.NDX= 000060   	CLCFGS= ****** GX	GLBFLG= 000100   	PAGNUM= ****** GX	SETWRD  000054RG    002
AM.PC = 000007   	CLCLOC= ****** GX	GSDT00= 000000   	PASS  = ****** GX	SMLCHN= 000012
AM.REL= 000067   	CMOCHN= 000000   	GSDT01= 000400   	PF0     000000RG    003	SMLLEN= 000120
ASTFLG= 000114   	CNTTBL= ****** GX	GSDT02= 001000   	PF1     000004RG    003	SPACE = 000040
BINCHN= 000006   	CPL   = 000120   	GSDT03= 001400   	PSTFLG= 000050   	SRCCHN= 000002
BLKT01= 000001   	CPXADD= 000001   	GSDT04= 002000   	PUTKB   000172RG    002	SRCLEN= 000204
BLKT02= 000002   	CPXAND= 000005   	GSDT05= 002400   	PUTKBL  000202RG    002	STLBUF= ****** GX
BLKT03= 000003   	CPXCOM= 000011   	GSDT06= 003000   	PUTLIN  000216RG    002	STLLEN= 000100
BLKT04= 000004   	CPXCON= 000020   	ILVL  = 000004   	PUTLI1  000250R     002	TAB   = 000011
BLKT05= 000005   	CPXDIV= 000004   	LBLFLG= 000002   	PUTLI2  000370R     002	TMPCNT= 000014
BLKT06= 000006   	CPXFLG= 000200   	LET.A = 000101   	PUTLI9  000516R     002	TTLBRK= ****** GX
BPMB  = 000020   	CPXGLB= 000016   	LET.B = 000102   	PUTLP   000210RG    002	TTLBUF= ****** GX
BUFTBL= ****** GX	CPXIOR= 000006   	LET.C = 000103   	REGFLG= 000001   	TTLLEN= 000040
CH.ADD= 000053   	CPXMUL= 000003   	LET.D = 000104   	RELCHN= 000010   	VALUE = ****** GX
CH.AND= 000046   	CPXNEG= 000010   	LET.E = 000105   	RELFLG= 000040   	VT    = 000013
CH.BSL= 000134   	CPXOPC= 000010   	LET.F = 000106   	RLDLEN= 000052   	XBSRCH= 000000
CH.COL= 000072   	CPXREL= 000017   	LET.G = 000107   	RLDT00= 000000   	XCREF = 000000
CH.COM= 000054   	CPXSDS= 000013   	LET.O = 000117   	RLDT01= 000001   	XEDABS= 000000
CH.DIV= 000057   	CPXSTO= 000012   	LET.Z = 000132   	RLDT02= 000002   	XEDCDR= 000000
CH.DOL= 000044   	CPXSUB= 000002   	LF    = 000012   	RLDT03= 000003   	XEDCRF= 000000
CH.DOT= 000056   	CR    = 000015   	LINLEN= 000204   	RLDT04= 000004   	XEDFPT= 000000
CH.EQU= 000075   	CRLF    000006R     005	LINPPG= 000252RG    002	RLDT05= 000005   	XEDLC = 000000
CH.HSH= 000043   	CSTACC= 000020   	LPP   = 000074   	RLDT06= 000006   	XEDPIC= 000000
CH.IND= 000100   	CSTALO= 000004   	LPPCNT= ****** GX	RLDT07= 000007   	XEDPNC= 000000
CH.IOR= 000041   	CSTFLG= 000050   	LSTCHN= 000004   	RLDT10= 000010   	XFCSQN= 000000
CH.LAB= 000074   	CSTGBL= 000100   	LSTDEV  000002RG    004	RLDT11= 000011   	XFLTG = 000000
CH.LP = 000050   	CSTMEM= 000001   	LSTLEN= 000204   	RLDT15= 000015   	XOPEXP= 000000
CH.MUL= 000052   	CSTREL= 000040   	LSTREQ  000000RG    004	RLDT16= 000016   	XSUBD = 000000
CH.PCT= 000045   	CSTTYP= 000200   	LST.KB= 000001   	RLDT17= 000017   	XZERR = 000000
CH.QM = 000077   	CTTBL = ****** GX	LST.LP= 000002   	RSX11M= 000000   	X45   = 000000
CH.QTM= 000042   	CT.SPT= ****** GX	MAXCHN= 000014   	R$$11M= 000000   	YQCMO = 000000
CH.RAB= 000076   	DEFFLG= 000010   	MDFFLG= 000004   	SAVREG= ****** GX	$WRITE= ****** GX
CH.RP = 000051   	DFGFLG= 000020   	MODE  = ****** GX	SETBYT  000100RG    002

. ABS.	000000	   000
      	000000	   001
PUREI 	000520	   002
IMPLIN	000010	   003
IMPURE	000004	   004
IMPTXT	000007	   005
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  4233 WORDS  ( 17 PAGES)
DYNAMIC MEMORY:  5216 WORDS  ( 20 PAGES)
ELAPSED TIME:  00:00:32
[45,10]LSTNG,[45,20]LSTNG/-SP=[45,30]RSXPAR,MPARAM,MCIOCH,GENMC,FLGDF,LSTNG
MACRO	MACRO M1108  05-DEC-77 23:14  PAGE 2


      1						.TITLE	MACRO
      2
      3					;
      4					; COPYRIGHT (C) 1975
      5					; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
      6					;
      7					; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
      8					; SINGLE COMPUTER SYSTEM AND  MAY  BE  COPIED  ONLY  WITH  THE
      9					; INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE,  OR
     10					; ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED  OR  OTHERWISE
     11					; MADE AVAILABLE TO ANY OTHER PERSON  EXCEPT FOR USE  ON  SUCH
     12					; SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE  TERMS.  TITLE
     13					; TO AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL  TIMES  REMAIN
     14					; IN DEC.
     15					;
     16					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     17					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     18					; EQUIPMENT CORPORATION.
     19					;
     20					; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY OF
     21					; ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     22					;
     23					; WRITTEN BY  C.A. D'ELIA	10-JUL-75
     24					;
     25					;+
     26					;
     27					; MACRO ASSEMBLER VERSION MODULE
     28					;
     29					;-
     30
     31						.MACRO	$VERSN	VN
     32						.LIST
     33					;
     34					;
     35						.IDENT	/VN/
     36					;
     37					;
     38					;
     39						.NLIST
     40
     41						.PSECT	MIXED,D,RW
     42
     43					HDRTTL::.ASCII	/MACRO /
     44					$MVRSN::.ASCII	/VN/
     45						.NCHR	X,<VN>
     46						.IF GT	7-X
     47						.REPT	7-X
     48						.BYTE	40
     49						.ENDM
     50						.ENDC
     51						.BYTE	0
     52						.ENDM	$VERSN
     53
     54
     55						.MACRO	$IDENT	ID
     56						.IF NDF	RSX11M
     57						$VERSN	D'ID
MACRO	MACRO M1108  05-DEC-77 23:14  PAGE 2-1


     58						.IFF
     59						$VERSN	M'ID
     60						.ENDC
     61						.ENDM	$IDENT
     62
     63
     64
     65						.LIST	MEB
     66
     67
     68	000000					$IDENT	<1013>								;**NEW**
					;
					;
						.IDENT	/M1013/
					;
					;
					;
	000000	   115 	   101 	   103 	HDRTTL::.ASCII	/MACRO /
	000003	   122 	   117 	   040
	000006	   115 	   061 	   060 	$MVRSN::.ASCII	/M1013/
	000011	   061 	   063
	000013	   040 				.BYTE	40
	000014	   040 				.BYTE	40
	000015	   000 				.BYTE	0
     69															;**-1
     70
     71
     72		000001 				.END
MACRO	MACRO M1108  05-DEC-77 23:14  PAGE 2-2
SYMBOL TABLE

HDRTTL  000000RG    002	X     = 000005   	XEDCDR= 000000   	XEDPNC= 000000   	XSUBD = 000000
ILVL  = 000004   	XBSRCH= 000000   	XEDFPT= 000000   	XFCSQN= 000000   	XZERR = 000000
RSX11M= 000000   	XCREF = 000000   	XEDLC = 000000   	XFLTG = 000000   	X45   = 000000
R$$11M= 000000   	XEDABS= 000000   	XEDPIC= 000000   	XOPEXP= 000000   	$MVRSN  000006RG    002

. ABS.	000000	   000
      	000000	   001
MIXED 	000016	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  409 WORDS  ( 2 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:03
[45,10]MACRO,[45,20]MACRO/-SP=[45,30]RSXPAR,MACRO
MACROC                         	MACRO M1108  05-DEC-77 23:25  PAGE 4


      1						.TITLE	MACROC                                                          ;**NEW**
      2						.IDENT	/X10.04/                                                        ;**NEW**
      3					                                                                                ;**-2
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X10.04                                                                ;**NEW**
     24					;                                                                               ;**-1
     25					; B. BOWERING
     26					;
     27					;	MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 6-FEB-73
     30					;	C.A. D'ELIA	10-JAN-74	010                                     ;**-1
     31					;	C.A. D'ELIA	05-MAR-74	013                                     ;**-1
     32					;	C.A. D'ELIA	15-AUG-74	017                                     ;**-3
     33					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     34					;	D.N. CUTLER	21-AUG-76	025	(KEYWORD MACROS)                ;**NEW**
     35					;	C.A. D'ELIA	05-SEP-76	026	(KEYWORD MACROS IN 8K)          ;**NEW**
     36					;                                                                               ;**-1
     37					;
     38
     39					                                                                                ;**-3
     40						.IF NDF	XMACRO
     41					                                                                                ;**-2
     42					;                                                                               ;**NEW**
     43					; LOCAL DATA                                                                    ;**NEW**
     44					;                                                                               ;**NEW**
     45					                                                                                ;**NEW**
     46	000000					.PSECT	MIXED,D,RW	;++025                                          ;**NEW**
     47					                                                                                ;**NEW**
     48	000000				ARGBUF:	.BLKB	64.		;++025 DEFAULT ARGUMENT BUFFER                  ;**NEW**
     49	000100				TMPOFF:	.BLKW	1		;++025 TEMPORARY BUFFER OFFSET                  ;**NEW**
     50	000102				TMPTXT:	.BLKW	1		;++025 TEMPORARY TEXT BLOCK POINTER             ;**NEW**
     51					                                                                                ;**NEW**
     52					                                                                                ;**NEW**
     53	000104					PURE	PUREI,I		;++017
     54
     55					                                                                                ;**-89
     56	000000				OPCERR:	ERROR	O		;++017 DECLARE OPCODE ERROR
     57	000006	000207 				RETURN			;++017
MACROC                         	MACRO M1108  05-DEC-77 23:25  PAGE 4-1


     58
     59
     60					;++017
     61					;
     62					; **-MACROC-MACRO CALL
     63					;
     64					;--017
     65
     66	000010				MACROC::SETPF0			;MARK LOCATION
     67	000014	016701 	000000G			MOV	MODE,R1		;++021 GET VIRT LOCN OF BASIC TEXT BLK          ;**NEW**
     68	000020	001767 				BEQ	OPCERR		;++013 IF NULL, NO DEFN -- ERROR                ;**-4
     69	000022	010167 	000000G			MOV	R1,MACTXT	;++021 ELSE, SAVE ITS VIRTUAL LOCN              ;**NEW**
     70	000026	004767 	000000G			CALL	$CVRL		;++021 GET REAL ADDR OF BLOCK IN R0             ;**NEW**
     71	000032	004767 	000000G			CALL	INCMAC		;INCREMENT REFERENCE                            ;**-20
     72	000036					ZAP	DMALST		;++025 EMPTY DUMMY ARGUMENT ROLL                ;**NEW**
     73	000046	012767 	000006 	000100'		MOV	#6,TMPOFF	;++025 SET OFFSET TO START OF TEXT              ;**NEW**
     74	000054	004767 	000220 			CALL	90$		;++025 SET TO READ FROM VIRTUAL MEMORY          ;**NEW**
     75	000060	016167 	000004 	000000G		MOV	4(R1),MACGSB	;++025 SET GENERATED SYMBOL BITS                ;**NEW**
     76	000066	116167 	000003 	000000G		MOVB	3(R1),ARGMAX	;++025 SET MAXIMUM NUMBER OF ARGUMENTS          ;**NEW**
     77	000074	001432 				BEQ	50$		;++025 IF EQ NO ARGUMENTS                       ;**NEW**
     78	000076	116103 	000003 			MOVB	3(R1),R3	;++025 SET LOOP COUNT                           ;**NEW**
     79	000102	012705 	000000'			MOV	#ARGBUF,R5	;++025 SET POINTER TO DEFAULT ARGUMENT BUFFER   ;**NEW**
     80	000106	012704 	000000G		10$:	MOV	#SYMBOL,R4	;++025 SET POINTER TO SYMBOL ACCUMULATOR        ;**NEW**
     81	000112	004767 	000126 		20$:	CALL	60$		;++025 READ NEXT CHARACTER FROM VIRTUAL MEMORY  ;**NEW**
     82	000116	110024 				MOVB	R0,(R4)+	;++025 STORE CHARACTER IN SYMBOL ACCUMULATOR    ;**NEW**
     83	000120	020427 	000006G			CMP	R4,#SYMBOL+6	;++025 END OF DUMMY ARGUMENT SYMBOL?            ;**NEW**
     84	000124	103772 				BLO	20$		;++025 IF LO NO                                 ;**NEW**
     85	000126	010514 				MOV	R5,(R4)		;++025 SET ADDRESS OF DEFAULT ARGUMENT          ;**NEW**
     86	000130	114404 				MOVB	-(R4),R4	;++025 GET LENGTH OF DEFAULT ARGUMENT           ;**NEW**
     87	000132	005304 			30$:	DEC	R4		;++025 ANY MORE BYTES IN DEFAULT ARGUMENT?      ;**NEW**
     88	000134	002404 				BLT	40$		;++025 IF LT NO                                 ;**NEW**
     89	000136	004767 	000102 			CALL	60$		;++025 READ NEXT CHARACTER FROM VIRTUAL MEMORY  ;**NEW**
     90	000142	110025 				MOVB	R0,(R5)+	;++025 STORE CHARACTER IN DEFAULT BUFFER        ;**NEW**
     91	000144	000772 				BR	30$		;++025                                          ;**NEW**
     92	000146				40$:	APPEND	DMALST		;++025 APPEND DUMMY ARGUMENT TO ROLL            ;**NEW**
     93	000156	005303 				DEC	R3		;++025 ANY MORE ARGUMENTS TO PROCESS?           ;**NEW**
     94	000160	003352 				BGT	10$		;++025 IF GT YES                                ;**NEW**
     95	000162				50$:	SETCHR			;++025 RESTORE R5                               ;**NEW**
     96	000166	004767 	000000G			CALL	PROMC		;PROCESS CALL ARGUMENTS                         ;**-7
     97	000172	010103 				MOV	R1,R3		;++021 COPY VIRTUAL LOCN OF ARG BLOCK           ;**NEW**
     98	000174	012705 	000000G			MOV	#MT.MAC,R5                                                      ;**-1
     99	000200	004767 	000000G			CALL	MPUSH		;PUSH NESTING LEVEL
    100	000204	016701 	000000G			MOV	MACTXT,R1	;++021 GET VIRT LOCN OF BASIC TXT BLK           ;**NEW**
    101	000210	004767 	000000G			CALL	$UNLPG		;++021 UNLOCK PAGE (LOCKED BY 'INCMAC')         ;**NEW**
    102	000214	010122 				MOV	R1,(R2)+	;++021 STORE VIRT LOCN OF BASIC TEXT BLK        ;**NEW**
    103	000216	010322 				MOV	R3,(R2)+	;++021 AND VIRT LOCN OF ARG BLOCK               ;**NEW**
    104	000220	016712 	000000G			MOV	ARGCNT,(R2)	;FILL IN ARGUMENT COUNT                         ;**-3
    105	000224	012222 				MOV	(R2)+,(R2)+	;  AND REPLECATE
    106	000226	016722 	000100'			MOV	TMPOFF,(R2)+	;++025 SET OFFSET TO START OF MACRO BODY        ;**NEW**
    107	000232	016712 	000102'			MOV	TMPTXT,(R2)	;++025 SET VIRTUAL BLOCK OF MACRO BODY          ;**NEW**
    108	000236					SETCHR                                                                  ;**-1
    109	000242	000207 				RETURN
    110					                                                                                ;**NEW**
    111					;                                                                               ;**NEW**
    112					; READ CHARACTER FROM VIRTUAL MEMORY                                            ;**NEW**
    113					;                                                                               ;**NEW**
    114					                                                                                ;**NEW**
MACROC                         	MACRO M1108  05-DEC-77 23:25  PAGE 4-2


    115	000244	022767 	000020 	000100'	60$:	CMP	#BPMB,TMPOFF	;++025 END OF CURRENT TEXT BLOCK?               ;**NEW**
    116	000252	001003 				BNE	70$		;++025 IF NE NO                                 ;**NEW**
    117	000254	011101 				MOV	(R1),R1		;++025 GET VIRTUAL ADDRESS OF NEXT BLOCK        ;**NEW**
    118	000256	004767 	000010 			CALL	80$		;++025 SET TO READ NEXT TEXT BLOCK              ;**NEW**
    119	000262	005267 	000100'		70$:	INC	TMPOFF		;++025 INCREMENT OFFSET IN BUFFER               ;**NEW**
    120	000266	112200 				MOVB	(R2)+,R0	;++025 GET NEXT CHARACTER FROM BUFFER           ;**NEW**
    121	000270	000207 				RETURN			;++025                                          ;**NEW**
    122	000272	012767 	000002 	000100'	80$:	MOV	#2,TMPOFF	;++025 RESET OFFSET TO START OF TEXT            ;**NEW**
    123	000300	010167 	000102'		90$:	MOV	R1,TMPTXT	;++025 SET VIRTUAL ADDRESS OF TEXT BLOCK        ;**NEW**
    124	000304	004767 	000000G			CALL	$CVRL		;++025 CONVERT TO REAL MEMORY ADDRESS           ;**NEW**
    125	000310	010001 				MOV	R0,R1		;++025 COPY REAL ADDRESS OF TEXT BLOCK          ;**NEW**
    126	000312	010002 				MOV	R0,R2		;++025 CALCULATE ADDRESS OF TEXT IN BLOCK       ;**NEW**
    127	000314	066702 	000100'			ADD	TMPOFF,R2	;++025                                          ;**NEW**
    128	000320	000207 				RETURN			;++025                                          ;**NEW**
    129
    130
    131						.ENDC                                                                   ;**-261
    132
    133		000001 				.END
MACROC                         	MACRO M1108  05-DEC-77 23:25  PAGE 4-3
SYMBOL TABLE

APPEND= ****** GX	LINLEN= 000204   	PROMC = ****** GX	TMPTXT  000102R     002	XFCSQN= 000000
ARGBUF  000000R     002	LPP   = 000074   	RLDLEN= 000052   	TTLLEN= 000040   	XFLTG = 000000
ARGCNT= ****** GX	LSTLEN= 000204   	RSX11M= 000000   	XBSRCH= 000000   	XOPEXP= 000000
ARGMAX= ****** GX	MACGSB= ****** GX	R$$11M= 000000   	XCREF = 000000   	XSUBD = 000000
BPMB  = 000020   	MACROC  000010RG    003	SETCHR= ****** GX	XEDABS= 000000   	XZERR = 000000
CPL   = 000120   	MACTXT= ****** GX	SETPF0= ****** GX	XEDCDR= 000000   	X45   = 000000
DMALST= ****** GX	MODE  = ****** GX	SMLLEN= 000120   	XEDCRF= 000000   	YQCMO = 000000
ERRBTS= ****** GX	MPUSH = ****** GX	SRCLEN= 000204   	XEDFPT= 000000   	ZAP   = ****** GX
ERR.O = ****** GX	MT.MAC= ****** GX	STLLEN= 000100   	XEDLC = 000000   	$CVRL = ****** GX
ILVL  = 000004   	OBJLEN= 000052   	SYMBOL= ****** GX	XEDPIC= 000000   	$UNLPG= ****** GX
INCMAC= ****** GX	OPCERR  000000R     003	TMPOFF  000100R     002	XEDPNC= 000000

. ABS.	000000	   000
      	000000	   001
MIXED 	000104	   002
PUREI 	000322	   003
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2312 WORDS  ( 10 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:22
[45,10]MACROC,[45,20]MACROC/-SP=[45,30]RSXPAR,MPARAM,GENMC,MACROC
MACROD                         	MACRO M1108  05-DEC-77 23:26  PAGE 3


      1						.TITLE	MACROD                                                          ;**NEW**
      2						.IDENT	/X10.04/                                                        ;**NEW**
      3					                                                                                ;**-2
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X10.04                                                                ;**NEW**
     24					;                                                                               ;**-1
     25					; B. BOWERING
     26					;
     27					;	MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 6-FEB-73
     30					;	C.A. D'ELIA	10-JAN-74	010                                     ;**-1
     31					;	C.A. D'ELIA	05-MAR-74	013                                     ;**-1
     32					;	C.A. D'ELIA	24-APR-74	016                                     ;**-1
     33					;	C.A. D'ELIA	15-AUG-74	017                                     ;**-1
     34					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     35					;	D.N. CUTLER	21-AUG-76	025	(KEYWORD MACROS)                ;**NEW**
     36					;	C.A. D'ELIA	05-SEP-76	026	(KEYWORD MACROS IN 8K)          ;**NEW**
     37					;                                                                               ;**-1
     38					;
     39
     40					                                                                                ;**-3
     41						.IF NDF	XMACRO
     42					                                                                                ;**NEW**
     43					                                                                                ;**-2
     44	000000					PURE	PUREI,I		;++017
     45
     46					;+
     47					;
     48					; **-MACR-MACRO DEFINITION
     49					; **-MACROF-ALTERNATE ENTRY FROM .MCALL
     50					;
     51					;-
     52
     53	000000				MACR::	GSARG			;GET THE MACRO NAME
     54	000004	001536 				BEQ	OPCERR		;  ERROR IF NULL
     55	000006				MACROF::TSTARG			;++017 BYPASS OPTIONAL COMMA
     56	000012	016767 	000000G	000000G		MOV	SYMBOL,MACNAM
     57	000020	016767 	000002G	000002G		MOV	SYMBOL+2,MACNAM+2
MACROD                         	MACRO M1108  05-DEC-77 23:26  PAGE 3-1


     58	000026					MSRCH			;SEARCH THE TABLE
     59	000032	016701 	000000G			MOV	MODE,R1		;++021 GET VIRT LOCN OF BASIC TEXT BLOCK        ;**NEW**
     60	000036	001402 				BEQ	1$		;BRANCH IF NULL                                 ;**-1
     61	000040	004767 	000000G			CALL	DECMAC		;DECREMENT THE REFERENCE                        ;**-2
     62	000044	004767 	000000G		1$:	CALL	GETBLK		;GET A STORAGE BLOCK
     63	000050	010167 	000000G			MOV	R1,MODE		;++021 STORE VIRTUAL LOCN OF THE BLOCK          ;**NEW**
     64	000054	010067 	000000G			MOV	R0,MACWRT	;++021 SAVE REAL ADDR OF BASIC TEXT ...         ;**NEW**
     65									;++021 BLOCK AS BLOCK BEING WRITTEN             ;**NEW**
     66	000060	010167 	000000G			MOV	R1,MACWTV	;++021 AND SAVE ITS VIRTUAL LOCN                ;**NEW**
     67	000064					INSERT			;INSERT IN TABLE                                ;**-3
     68	000070					CRFDEF
     69	000070	004767 	000000G			CALL	PROMA		;PROCESS DUMMY ARGS
     70					;                                                                               ;**NEW**
     71					; STORE INFORMATION INTO THE MACRO BASIC TEXT BLOCK                             ;**NEW**
     72					;                                                                               ;**NEW**
     73	000074	105022 				CLRB	(R2)+		;++013 CLEAR LEVEL COUNT                        ;**-2
     74	000076	116722 	000000G			MOVB	ARGCNT,(R2)+	;++013 SET NUMBER OF ARGUMENTS
     75	000102	016722 	000000G			MOV	MACGSB,(R2)+	;  AND GENERATED SYMBOL BITS
     76					                                                                                ;**NEW**
     77					;                                                                               ;**NEW**
     78					; WRITE DUMMY ARGUMENTS AND DEFAULT ARGUMENTS INTO VIRTUAL MEMORY               ;**NEW**
     79					;                                                                               ;**NEW**
     80					                                                                                ;**NEW**
     81	000106	166702 	000000G			SUB	MACWRT,R2	;++025 CONVERT TO OFFSET IN BLOCK               ;**NEW**
     82	000112	005067 	000000G			CLR	$LSPNT		;++025 CLEAR LIST POINTER                       ;**NEW**
     83	000116				10$:	NEXT	DMALST		;++025 GET NEXT ENTRY IN DUMMY ARGUMENT ROLL    ;**NEW**
     84	000126	001414 				BEQ	20$		;++025 IF EQ END OF ROLL                        ;**NEW**
     85	000130	012703 	000000G			MOV	#SYMBOL,R3	;++025 GET ADDRESS OF DUMMY ARGUMENT NAME       ;**NEW**
     86	000134	012704 	000006 			MOV	#6,R4		;++025 SET NUMBER OF CHARACTERS TO WRITE        ;**NEW**
     87	000140	004767 	000122 			CALL	40$		;++025 WRITE DUMMY ARGUMENT INTO MACRO TREE     ;**NEW**
     88	000144	011303 				MOV	(R3),R3		;++025 GET ADDRESS OF DEFAULT ARGUMENT STRING   ;**NEW**
     89	000146	116704 	000000G			MOVB	SECTOR,R4	;++025 GET LENGTH OF STRING IN BYTES            ;**NEW**
     90	000152	004767 	000110 			CALL	40$		;++025 WRITE DEFAULT ARGUMENT INTO MACRO TREE   ;**NEW**
     91	000156	000757 				BR	10$		;++025                                          ;**NEW**
     92	000160				20$:	SETCHR			;++025 RESTORE R5                               ;**NEW**
     93	000164	066702 	000000G			ADD	MACWRT,R2	;++025 CONVERT BACK TO REAL ADDRESS             ;**NEW**
     94	000170	052767 	000000G	000000G		BIS	#LC.MD,LCFLAG                                                   ;**-22
     95	000176	004767 	000000G			CALL	ENDLIN		;POLISH OFF LINE
     96	000202	004767 	000000G			CALL	PROMT		;PROCESS THE TEXT
     97	000206					GETSYM                                                                  ;**-16
     98	000212	001412 				BEQ	3$
     99	000214	020067 	000000G			CMP	R0,MACNAM
    100	000220	001004 				BNE	2$
    101	000222	026767 	000002G	000002G		CMP	SYMBOL+2,MACNAM+2
    102	000230	001403 				BEQ	3$
    103	000232				2$:	ERROR	A
    104	000240	012705 	000000G		3$:	MOV	#MT.MAC,R5	;++021 PUT '.MACRO' TERMINATOR CHAR IN R5       ;**NEW**
    105	000244	004767 	000000G			CALL	WCIMT		;SET END MARKER                                 ;**-5
    106	000250	016701 	000000G			MOV	MACWTV,R1	;++021 GET VIRT LOCN OF THIS TEXT BLOCK         ;**NEW**
    107	000254	004767 	000000G			CALL	$UNLPG		;++021 UNLOCK PAGE CONTAINING IT                ;**NEW**
    108	000260					SETCHR                                                                  ;**-2
    109	000264	000207 			30$:	RETURN			;++025                                          ;**NEW**
    110					                                                                                ;**NEW**
    111					;                                                                               ;**NEW**
    112					; WRITE STRING INTO MACRO TREE                                                  ;**NEW**
    113					;                                                                               ;**NEW**
    114					                                                                                ;**NEW**
MACROD                         	MACRO M1108  05-DEC-77 23:26  PAGE 3-2


    115	000266	005304 			40$:	DEC	R4		;++025 ANY MORE CHARACTERS TO WRITE?            ;**NEW**
    116	000270	002775 				BLT	30$		;++025 IF LT NO                                 ;**NEW**
    117	000272	112305 				MOVB	(R3)+,R5	;++025 GET NEXT CHARACTER                       ;**NEW**
    118	000274	004767 	000000G			CALL	WCIMT		;++025 WRITE CHARACTER IN MACRO TREE            ;**NEW**
    119	000300	000772 				BR	40$		;++025                                          ;**NEW**
    120					                                                                                ;**-1
    121
    122	000302				OPCERR:	ERROR	O		;++017 DECLARE OPCODE ERROR
    123	000310	000207 				RETURN			;++017
    124
    125
    126						.ENDC                                                                   ;**-315
    127
    128		000001 				.END
MACROD                         	MACRO M1108  05-DEC-77 23:26  PAGE 3-3
SYMBOL TABLE

ARGCNT= ****** GX	ILVL  = 000004   	MODE  = ****** GX	SETCHR= ****** GX	XEDPIC= 000000
DECMAC= ****** GX	INSERT= ****** GX	MSRCH = ****** GX	SYMBOL= ****** GX	XEDPNC= 000000
DMALST= ****** GX	LCFLAG= ****** GX	MT.MAC= ****** GX	TSTARG= ****** GX	XFCSQN= 000000
ENDLIN= ****** GX	LC.MD = ****** GX	NEXT  = ****** GX	WCIMT = ****** GX	XFLTG = 000000
ERRBTS= ****** GX	MACGSB= ****** GX	OPCERR  000302R     002	XBSRCH= 000000   	XOPEXP= 000000
ERR.A = ****** GX	MACNAM= ****** GX	PROMA = ****** GX	XCREF = 000000   	XSUBD = 000000
ERR.O = ****** GX	MACR    000000RG    002	PROMT = ****** GX	XEDABS= 000000   	XZERR = 000000
GETBLK= ****** GX	MACROF  000006RG    002	RSX11M= 000000   	XEDCDR= 000000   	X45   = 000000
GETSYM= ****** GX	MACWRT= ****** GX	R$$11M= 000000   	XEDFPT= 000000   	$LSPNT= ****** GX
GSARG = ****** GX	MACWTV= ****** GX	SECTOR= ****** GX	XEDLC = 000000   	$UNLPG= ****** GX

. ABS.	000000	   000
      	000000	   001
PUREI 	000312	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2118 WORDS  ( 9 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:17
[45,10]MACROD,[45,20]MACROD/-SP=[45,30]RSXPAR,GENMC,MACROD
MACRS	MACRO M1108  05-DEC-77 23:26  PAGE 5


      1						.TITLE	MACRS
      2						.IDENT	/X10.05/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X10.05                                                                ;**NEW**
     24					;                                                                               ;**-1
     25					; B. BOWERING
     26					;
     27					;	MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 6-FEB-73
     30					;	C.A. D'ELIA	15-NOV-73	008
     31					;	C.A. D'ELIA	10-JAN-74	010
     32					;	C.A. D'ELIA	25-JAN-74	011
     33					;	C.A. D'ELIA	05-MAR-74	013
     34					;	C.A. D'ELIA	07-APR-74	015
     35					;	C.A. D'ELIA	24-APR-74	016
     36					;	H.A. NICHOLS	18-JUN-74	017
     37					;	C.A. D'ELIA	15-AUG-74	017
     38					;	C.A. D'ELIA	19-MAR-75	019
     39					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     40					;	C.A. D'ELIA	01-NOV-75	022	(LC MACRO CALL ARGS)            ;**NEW**
     41					;	D.N. CUTLER	21-AUG-76	025	(KEYWORD MACROS)                ;**NEW**
     42					;	C.A. D'ELIA	05-SEP-76	026	(KEYWORD MACROS IN 8K)          ;**NEW**
     43					;
     44					;
     45
     46					;
     47					; EQUATED SYMBOLS
     48					;
     49
     50						.IF NDF	XMACRO
     51		177603 			MT.MAC==177603
     52		177603 			MT.MAX==177603
     53
     54					;                                                                               ;**NEW**
     55					; LOCAL DATA                                                                    ;**NEW**
     56					;                                                                               ;**NEW**
     57					                                                                                ;**NEW**
MACRS	MACRO M1108  05-DEC-77 23:26  PAGE 5-1


     58	000000					.PSECT	MIXED,D,RW	;++025                                          ;**NEW**
     59					                                                                                ;**NEW**
     60	000000				GENBUF:	.BLKB	64.		;++025 GENERATED ARGUMENT BUFFER                ;**NEW**
     61					                                                                                ;**NEW**
     62	000100					PURE	PUREI,I		;++017
     63
     64					                                                                                ;**-147
     65					;                                                                               ;**NEW**
     66					; COMMON ROUTINES USED BY ALL MACRO PROCESSING                                  ;**NEW**
     67					;                                                                               ;**NEW**
     68					                                                                                ;**-3
     69					;+                                                                              ;**NEW**
     70					;                                                                               ;**NEW**
     71					; **-PROMA-PROCESS MACRO DEFINITION ARGUMENTS                                   ;**NEW**
     72					;                                                                               ;**NEW**
     73					;-                                                                              ;**NEW**
     74					                                                                                ;**NEW**
     75	000000				PROMA::				;++010
     76	000000					ZAP	DMALST		;++021 EMPTY DUMMY ARGUMENT LIST                ;**NEW**
     77	000010	005067 	000000G			CLR	ARGCNT		;GET A FRESH START WITH ARGUMENTS               ;**-1
     78	000014	005067 	000000G			CLR	MACGSB		;CLEAR GENERATED BIT PATTERN
     79	000020	012746 	100000 			MOV	#100000,-(SP)	;STACK FIRST GENERATED SYMBOL BIT
     80	000024				1$:	TSTARG			;ANY MORE ARGS?
     81	000030	001460 				BEQ	3$		;  NO, QUIT AND GO HOME
     82	000032	022705 	000077 			CMP	#CH.QM,R5	;YES, GENERATED TYPE?
     83	000036	001004 				BNE	2$		;  NO
     84	000040	051667 	000000G			BIS	(SP),MACGSB	;YES, SET PROPER BIT
     85	000044					GETNB			;BYPASS IT
     86	000050	004767 	000000G		2$:	CALL	GSARGF		;GET SYMBOLIC ARGUMENT
     87	000054	001444 				BEQ	20$		;++025 IF EQ NO LEGAL DUMMY ARG                 ;**NEW**
     88	000056					SEARCH	DMALST		;++021 FIND LIST SLOT FOR DUMMY ARGUMENT        ;**NEW**
     89	000066	001034 				BNE	15$		;++025 IF NE DUPICATE DUMMY ARG FOUND           ;**NEW**
     90	000070	016767 	000000G	000000G		MOV	ARGCNT,MODE	;++021 STORE ARGUMENT NUMBER                    ;**NEW**
     91	000076	022705 	000075 			CMP	#CH.EQU,R5	;++025 TERMINATOR EQUAL SIGN?                   ;**NEW**
     92	000102	001021 				BNE	10$		;++025 IF NE NO                                 ;**NEW**
     93	000104					GETNB			;++025 BYPASS EQUAL SIGN                        ;**NEW**
     94	000110	004767 	000000G			CALL	GMARGF		;++025 GET MACRO ARGUMENT                       ;**NEW**
     95	000114	016767 	000000G	000000G		MOV	CHRPNT,VALUE	;++025 SET ADDRESS OF DEFAULT ARGUMENT          ;**NEW**
     96	000122	004767 	000000G			CALL	RMARG		;++025 REMOVE MACRO ARGUMENT                    ;**NEW**
     97	000126	016700 	000000G			MOV	CHRPNT,R0	;++025 GET CURRENT CHARACTER POINTER            ;**NEW**
     98	000132	166700 	000000G			SUB	VALUE,R0	;++025 CALCULATE LENGTH OF DEFAULT ARGUMENT     ;**NEW**
     99	000136	110067 	000000G			MOVB	R0,SECTOR	;++025 SET LENGTH OF DEFAULT ARGUMENT           ;**NEW**
    100	000142	041667 	000000G			BIC	(SP),MACGSB	;++025 CLEAR POSSIBLE GENERATION FLAG           ;**NEW**
    101	000146				10$:	INSERT			;++025 INSERT ENTRY IN DUMMY ARGUMENT ROLL      ;**NEW**
    102	000152	000241 				CLC                                                                     ;**-1
    103	000154	006016 				ROR	(SP)		;SHIFT GENERATED SYM BIT
    104	000156	000722 				BR	1$
    105	000160				15$:	ERROR	A		;++025 DUPLICATE DUMMY ARG FOUND                ;**NEW**
    106	000166	005367 	000000G		20$:	DEC	ARGCNT		;++025 DECR TO ACCOUNT FOR ILLEGAL ARG          ;**NEW**
    107	000172	005726 			3$:	TST	(SP)+		;PRUNE STACK
    108	000174	000207 				RETURN
    109					                                                                                ;**NEW**
    110					                                                                                ;**NEW**
    111					;+                                                                              ;**NEW**
    112					;                                                                               ;**NEW**
    113					; **-PROMC/PROMCF-PROCESS MACRO CALL ARGUMENTS                                  ;**NEW**
    114					;                                                                               ;**NEW**
MACRS	MACRO M1108  05-DEC-77 23:26  PAGE 5-2


    115					;-                                                                              ;**NEW**
    116					                                                                                ;**NEW**
    117	000176				PROMC::				;++026                                          ;**NEW**
    118	000176	005103 				COM	R3		;++025 SET NEGATIVE VALUE TO SIGNIFY MACRO      ;**NEW**
    119	000200	005067 	000000G		PROMCF::CLR	ARGCNT		;++017 CLEAR MACRO CALL ARGUMENT COUNT          ;**-1
    120	000204	004767 	001274 			CALL	GETBLK
    121	000210	010146 				MOV	R1,-(SP)	;++021 SAVE VIRT LOCN OF FIRST ARG BLK          ;**NEW**
    122	000212	010067 	000000G			MOV	R0,MACWRT	;++021 FOR BLK BEING WRITTEN, SAVE ...          ;**NEW**
    123	000216	010167 	000000G			MOV	R1,MACWTV	;++021 BOTH VIRT LOCN AND REAL ADDR             ;**NEW**
    124	000222	160002 				SUB	R0,R2		;++010 CONVERT R2 FROM ADDR TO OFFSET           ;**-2
    125	000224	010446 				MOV	R4,-(SP)	;++025 SAVE REGISTER R4                         ;**NEW**
    126	000226	012704 	000000'			MOV	#GENBUF,R4	;++025 GET ADDRESS OF GENERATION BUFFER         ;**NEW**
    127	000232	010346 				MOV	R3,-(SP)	;++025 SAVE REGISTER R3                         ;**NEW**
    128	000234	003126 				BGT	7$		;++025 IF GT IRPC                               ;**NEW**
    129	000236	005067 	000000G			CLR	$LSPNT		;++025 CLEAR LIST POINTER                       ;**NEW**
    130	000242	126767 	000000G	000000G	1$:	CMPB	ARGMAX,ARGCNT	;++013 MAX ARGS FOR THIS MACRO?                 ;**-2
    131	000250	101527 				BLOS	120$		;++025 IF LOS YES                               ;**NEW**
    132	000252					TSTARG			;BYPASS ANY COMMA                               ;**-1
    133	000256	001005 				BNE	9$		;OK IF NON-NULL
    134	000260	005767 	000000G			TST	MACGSB		;NULL, ANY GENERATED STUFF LEFT?
    135	000264	001521 				BEQ	120$		;++025 IF EQ NO                                 ;**NEW**
    136	000266	005267 	000000G			INC	ARGCNT		;++025 INCREMENT ARGUMENT COUNT                 ;**NEW**
    137	000272				9$:	NEXT	DMALST		;++025 GET NEXT ENTRY IN DUMMY ARGUMENT ROLL    ;**NEW**
    138	000302	022705 	000134 			CMP	#CH.BSL,R5	;++025 BACKSLASH?                               ;**NEW**
    139	000306	001566 				BEQ	20$		;  YES                                          ;**-2
    140	000310	004767 	000000G			CALL	GMARGF		;GET ARGUMENT
    141	000314	005716 				TST	(SP)		;++025 IRP?                                     ;**NEW**
    142	000316	001460 				BEQ	110$		;++025 IF EQ YES                                ;**NEW**
    143						.IF NDF	XEDLSB
    144	000320	005705 				TST	R5		;ANY ARGUMENTS?
    145	000322	001004 				BNE	2$		;  YES
    146	000324	005767 	000000G			TST	MACGSB		;NO, GENERATION REQUESTED?
    147	000330	100575 				BMI	30$		;  YES
    148	000332	000456 				BR	4$		;++025 DON'T UPDATE ENTRY                       ;**NEW**
    149						.ENDC
    150	000334				2$:	GETSYM			;++025 GET SYMBOL                               ;**NEW**
    151	000340	001445 				BEQ	100$		;++025 IF EQ NONE                               ;**NEW**
    152	000342	022705 	000075 			CMP	#CH.EQU,R5	;++025 TERMINATOR EQUAL SIGN?                   ;**NEW**
    153	000346	001042 				BNE	100$		;++025 IF NE NO                                 ;**NEW**
    154	000350					SEARCH	DMALST		;++025 SEARCH DUMMY ARGUMENT ROLL               ;**NEW**
    155	000360	001435 				BEQ	100$		;++025 IF EQ ENTRY NOT FOUND                    ;**NEW**
    156	000362	116705 	000000G			MOVB	MODE,R5		;++025 GET ARGUMENT NUMBER                      ;**NEW**
    157	000366	005003 				CLR	R3		;++025 CLEAR ARGUMENT BIT                       ;**NEW**
    158	000370	000261 				SEC			;++025 SET CARRY FOR MASK FORMATION             ;**NEW**
    159	000372	006003 			90$:	ROR	R3		;++025 SHIFT MASK                               ;**NEW**
    160	000374	005305 				DEC	R5		;++025 ANY MORE SHIFTS TO PERFORM?              ;**NEW**
    161	000376	003375 				BGT	90$		;++025 IF GT YES                                ;**NEW**
    162	000400	040367 	000000G			BIC	R3,MACGSB	;++025 CLEAR GENERATED SYMBOL BIT               ;**NEW**
    163	000404					GETNB			;++025 BYPASS EQUAL SIGN                        ;**NEW**
    164	000410	004767 	000470 			CALL	UPDMAR		;++025 UPDATE DUMMY ARGUMENT ROLL ENTRY         ;**NEW**
    165	000414	005367 	000000G			DEC	ARGCNT		;++025 BACK UP ARGUMENT COUNT                   ;**NEW**
    166	000420	004767 	000430 			CALL	RSDMAR		;++025 RESET DUMMY ARGUMENT TO PROPER ENTRY     ;**NEW**
    167	000424	004767 	000000G			CALL	RMARG		;++025 REMOVE MACRO ARGUMENT                    ;**NEW**
    168	000430	005767 	000000G			TST	ARGCNT		;++025 ANY POSITIONAL ARGUMENTS?                ;**NEW**
    169	000434	001302 				BNE	1$		;++025 IF NE NOT FIRST ARGUMENT                 ;**NEW**
    170	000436	132765 	000000G	000000G		BITB	#CT.COM,CTTBL(R5) ;++025 NEXT CHARACTER A COMMA?                ;**NEW**
    171	000444	001676 				BEQ	1$		;++025 IF EQ NO                                 ;**NEW**
MACRS	MACRO M1108  05-DEC-77 23:26  PAGE 5-3


    172	000446					GETNB			;++025 BYPASS COMMA                             ;**NEW**
    173	000452	000673 				BR	1$		;++025                                          ;**NEW**
    174	000454				100$:	SETSYM			;++025 RESET CHARACTER POINTER                  ;**NEW**
    175	000460	004767 	000370 		110$:	CALL	RSDMAR		;++025 RESET DUMMY ARGUMENT ROLL                ;**NEW**
    176	000464	004767 	000414 			CALL	UPDMAR		;++025 UPDATE DUMMY ARGUMENT ROLL ENTRY         ;**NEW**
    177	000470	004767 	000000G		4$:	CALL	RMARG                                                           ;**-5
    178	000474	006367 	000000G		5$:	ASL	MACGSB		;MOVE GENERATION BIT OVER ONE
    179	000500	000660 				BR	1$
    180	000502	005267 	000000G		6$:	INC	ARGCNT
    181	000506					GETCHR
    182	000512	004767 	000650 		7$:	CALL	WCIMTL		;++022 PUT (LOWER CASE) CHAR IN TXT BLK         ;**NEW**
    183	000516	001433 				BEQ	10$                                                             ;**-1
    184	000520	005005 				CLR	R5
    185	000522	004767 	000650 			CALL	WCIMT
    186	000526	000765 				BR	6$
    187	000530	005067 	000000G		120$:	CLR	$LSPNT		;++025 CLEAR LIST POINTER                       ;**NEW**
    188	000534				130$:	NEXT	DMALST		;++025 GET NEXT ENTRY IN DUMMY ARGUMENT ROLL    ;**NEW**
    189	000544	001416 				BEQ	160$		;++025 IF EQ END OF LIST                        ;**NEW**
    190	000546	116703 	000000G			MOVB	SECTOR,R3	;++025 GET LENGTH OF ARGUMENT                   ;**NEW**
    191	000552	016704 	000000G			MOV	VALUE,R4	;++025 GET ADDRESS OF ARGUMENT                  ;**NEW**
    192	000556	005303 			140$:	DEC	R3		;++025 ANY MORE CHARACTERS IN ARGUMENT?         ;**NEW**
    193	000560	002404 				BLT	150$		;++025 IF LT NO                                 ;**NEW**
    194	000562	112405 				MOVB	(R4)+,R5	;++025 GET NEXT ARGUMENT CHARACTER              ;**NEW**
    195	000564	004767 	000602 			CALL	WCIMTT		;++025 WRITE CHARACTER IN MACRO TREE            ;**NEW**
    196	000570	000772 				BR	140$		;++025                                          ;**NEW**
    197	000572	005005 			150$:	CLR	R5		;++025 SET ZERO CHARACTER                       ;**NEW**
    198	000574	004767 	000576 			CALL	WCIMT		;++025 WRITE CHARACTER IN MACRO TREE            ;**NEW**
    199	000600	000755 				BR	130$		;++025                                          ;**NEW**
    200	000602				160$:	SETCHR			;++025 RESTORE R5                               ;**NEW**
    201	000606	005105 			10$:	COM	R5
    202	000610	004767 	000562 			CALL	WCIMT
    203	000614	005105 				COM	R5
    204	000616	016701 	000000G			MOV	MACWTV,R1	;++021 GET VIRT LOCN OF CURRENT TEXT BLK        ;**NEW**
    205	000622	004767 	000000G			CALL	$UNLPG		;++021 UNLOCK ITS PAGE                          ;**NEW**
    206	000626	012603 				MOV	(SP)+,R3	;++025 RESTORE R3 AND R4                        ;**NEW**
    207	000630	012604 				MOV	(SP)+,R4	;++025                                          ;**NEW**
    208	000632	012601 				MOV	(SP)+,R1	;++021 RESTORE VIRT LOCN OF 1ST ARG BLK         ;**NEW**
    209	000634	032767 	000000G	000000G		BIT	#LC.MC,LCMASK	;MACRO CALL SUPPRESSION?                        ;**-2
    210	000642	001407 				BEQ	12$		;  NO
    211	000644	016767 	000000G	000000G		MOV	LBLEND,LCENDL	;++013 ASSUME LABEL ON MACRO CALL LINE
    212	000652	001003 				BNE	12$		;++013 SKIP IF ASSUMPTION IS CORRECT
    213	000654	052767 	000000G	000000G		BIS	#LC.MC,LCFLAG	;++013 INDICATE LINE IS A MACRO CALL
    214	000662				12$:				;++013
    215	000662	000207 				RETURN
    216	000664				20$:	GETNB			; "\", BYPASS
    217	000670					ABSEXP			;EVALUATE EXPRESSION, ABS
    218	000674	005067 	000000G			CLR	EXPFLG		;++017 CLR EXPR FLG -- COMMA NOT R'QD
    219	000700	010546 				MOV	R5,-(SP)	;STACK CHARACTER
    220	000702	010001 				MOV	R0,R1		;VALUE TO R1                                    ;**-2
    221	000704	004767 	000144 			CALL	RSDMAR		;++025 RESET DUMMY ARGUMENT ROLL                ;**NEW**
    222	000710	016703 	000000G			MOV	CRADIX,R3	;++025 SET CONVERSION RADIX                     ;**NEW**
    223	000714	004767 	000066 			CALL	35$		;++025 CONVERT AND STORE ARGUMENT               ;**NEW**
    224	000720	012605 				MOV	(SP)+,R5                                                        ;**-4
    225	000722	000664 				BR	5$
    226
    227						.IF NDF	XEDLSB
    228	000724	116701 	000000G		30$:	MOVB	LSGBAS,R1	;++017 GET LOCAL SYMBOL GENERATION BASE
MACRS	MACRO M1108  05-DEC-77 23:26  PAGE 5-4


    229	000730	005201 				INC	R1		;++017 INCREMENT IT
    230	000732	020127 	000100 			CMP	R1,#64.		;++017 COMPARE IT WITH 64.
    231	000736	003402 				BLE	32$		;++017 SKIP IF NOT GREATER THAN
    232	000740	162701 	000100 			SUB	#64.,R1		;++017 ELSE, KEEP WITHIN RANGE (64-127)
    233	000744	110167 	000000G		32$:	MOVB	R1,LSGBAS	;++017 SAVE GENERATION BASE
    234	000750	062701 	000077 			ADD	#^D<64-1>,R1	;START AT 64.
    235	000754	010546 				MOV	R5,-(SP)	;STACK CURRENT CHAR
    236	000756	012703 	000012 			MOV	#10.,R3		;MAKE IT DECIMAL                                ;**-1
    237	000762	004767 	000020 			CALL	35$		;++025 CONVERT AND STORE ARGUMENT               ;**NEW**
    238	000766	112724 	000044 			MOVB	#CH.DOL,(R4)+	;++025 INSERT DOLLAR SIGN                       ;**NEW**
    239	000772	105267 	000000G			INCB	SECTOR		;++025 UPDATE LENGTH                            ;**NEW**
    240	000776					INSERT			;++025 UPDATE ROLL ENTRY                        ;**NEW**
    241	001002	012605 				MOV	(SP)+,R5                                                        ;**-6
    242	001004	000631 				BR	4$		;RETURN
    243						.ENDC
    244
    245	001006	010467 	000000G		35$:	MOV	R4,VALUE	;++025 SET ADDRESS OF GENERATED ARGUMENT        ;**NEW**
    246	001012	004767 	000004 			CALL	40$		;++025 GENERATE ARGUMENT                        ;**NEW**
    247	001016	010400 				MOV	R4,R0		;++025 GET CURRENT GENERATION POINTER           ;**NEW**
    248	001020	000443 				BR	UPDMAC		;++025 FINISH IN COMMON CODE                    ;**NEW**
    249	001022	005000 			40$:	CLR	R0		;MACRO NUMBER CONVERTOR
    250	001024					DIV	R3,R0
    251	001030	010146 				MOV	R1,-(SP)	;STACK REMAINDER
    252	001032	010001 				MOV	R0,R1		;SET NEW NUMBER
    253	001034	001402 				BEQ	41$		;DOWN TO ZERO?
    254	001036	004767 	177760 			CALL	40$		;  NO, RECURSE
    255	001042	012605 			41$:	MOV	(SP)+,R5		;GET NUMBER
    256	001044	062705 	000060 			ADD	#DIG.0,R5	;CONVERT TO ASCII
    257	001050	110524 				MOVB	R5,(R4)+	;++025 STORE CHARACTER IN GENERATION BUFFER     ;**NEW**
    258	001052	000207 				RETURN			;++025                                          ;**NEW**
    259					                                                                                ;**NEW**
    260					;                                                                               ;**NEW**
    261					; RESET DUMMY ARGUMENT ROLL                                                     ;**NEW**
    262					;                                                                               ;**NEW**
    263					                                                                                ;**NEW**
    264	001054	005067 	000000G		RSDMAR:	CLR	$LSPNT		;++025 CLEAR LIST POINTER                       ;**NEW**
    265	001060	016703 	000000G			MOV	ARGCNT,R3	;++025 GET ARGUMENT COUNT                       ;**NEW**
    266	001064	001406 				BEQ	20$		;++025 IF EQ NO ARGUMENTS YES                   ;**NEW**
    267	001066				10$:	NEXT	DMALST		;++025 GET NEXT DUMMY ARGUMENT ROLL ENTRY       ;**NEW**
    268	001076	005303 				DEC	R3		;++025 ANY MORE TO BYPASS?                      ;**NEW**
    269	001100	003372 				BGT	10$		;++025 IF GT YES                                ;**NEW**
    270	001102	000207 			20$:	RETURN			;++025                                          ;**NEW**
    271					                                                                                ;**NEW**
    272					;                                                                               ;**NEW**
    273					; UPDATE DUMMY ARGUMENT ROLL ENTRY                                              ;**NEW**
    274					;                                                                               ;**NEW**
    275					                                                                                ;**NEW**
    276	001104	016767 	000000G	000000G	UPDMAR:	MOV	CHRPNT,VALUE	;++025 SET STARTING ADDRESS OF ARGUMENT         ;**NEW**
    277	001112	005705 				TST	R5		;++025 ANY ARGUMENT?                            ;**NEW**
    278	001114	001403 				BEQ	20$		;++025 IF EQ NO                                 ;**NEW**
    279	001116				10$:	GETCHR			;++025 GET NEXT CHARACTER                       ;**NEW**
    280	001122	001375 				BNE	10$		;++025 IF NE NOT END OF STRING                  ;**NEW**
    281	001124	016700 	000000G		20$:	MOV	CHRPNT,R0	;++025 GET CURRENT CHARACTER POINTER            ;**NEW**
    282	001130	166700 	000000G		UPDMAC:	SUB	VALUE,R0	;++025 CALCULATE LENGTH OF ARGUMENT             ;**NEW**
    283	001134	110067 	000000G			MOVB	R0,SECTOR	;++025 SET LENGTH OF ARGUMENT                   ;**NEW**
    284	001140					INSERT			;++025 UPDATE ROLL ENTRY                        ;**NEW**
    285	001144	000207 				RETURN			;++025                                          ;**NEW**
MACRS	MACRO M1108  05-DEC-77 23:26  PAGE 5-5


    286					                                                                                ;**NEW**
    287					                                                                                ;**NEW**
    288					;+                                                                              ;**NEW**
    289					;                                                                               ;**NEW**
    290					; **-PROMT-PROCESS MACRO TEXT                                                   ;**NEW**
    291					;                                                                               ;**NEW**
    292					;-                                                                              ;**NEW**
    293					                                                                                ;**NEW**
    294	001146	005003 			PROMT::	CLR	R3		;++010 CLEAR LEVEL COUNT                        ;**-1
    295	001150	166702 	000000G			SUB	MACWRT,R2	;++021 CONVERT R2 FROM ADDR TO OFFSET           ;**NEW**
    296	001154	005267 	000000G		1$:	INC	GETFLG		;INHIBIT FILE CROSSING                          ;**-3
    297	001160	004767 	000000G			CALL	GETLIN		;GET NEXT LINE
    298	001164	005367 	000000G			DEC	GETFLG		;ENABLE FILE CROSSING
    299	001170	005700 				TST	R0		;TEST GETLIN RETURN STATUS
    300	001172	001016 				BNE	2$
    301	001174	052767 	000000G	000000G		BIS	#LC.MD,LCFLAG
    302	001202	004767 	000366 			CALL	SETMAC		;++008 CHECK FOR MACRO-TYPE DIRECTIVE
    303	001206	001411 				BEQ	3$		;++010 NOT TRUE, BRANCH
    304	001210	005203 				INC	R3
    305	001212	023727 				CMP	@(PC)+,(PC)+	;.ENDM OR .ENDR?
    306	001214	000000G				.WORD	SYMBOL		;
    307	001216	127726 				.RAD50	/.EN/		;
    308	001220	001004 				BNE	3$
    309	001222	162703 	000002 			SUB	#2,R3		;REDUCE LEVEL COUNT
    310	001226	100001 				BPL	3$
    311	001230	000207 			2$:	RETURN			;++021                                          ;**NEW**
    312	001232	012767 	000000G	000000G	3$:	MOV	#LINBUF,CHRPNT                                                  ;**-10
    313	001240					SETCHR
    314	001244				4$:	GETSYM
    315	001250	001430 				BEQ	7$
    316	001252					SEARCH	DMALST		;++021 LOOK FOR MATCHING DUMMY ARGUMENT         ;**NEW**
    317	001262	010004 				MOV	R0,R4                                                           ;**-1
    318	001264	001411 				BEQ	5$
    319	001266	016705 	000000G			MOV	MODE,R5		;++021 GET ARGUMENT NUMBER IN R5                ;**NEW**
    320	001272	005405 				NEG	R5                                                              ;**-1
    321	001274	005367 	000000G			DEC	CONCNT
    322	001300	004767 	000072 			CALL	WCIMT
    323	001304	005367 	000000G			DEC	CONCNT
    324	001310				5$:	SETSYM
    325	001314	005704 			6$:	TST	R4
    326	001316	001002 				BNE	61$
    327	001320	004767 	000052 			CALL	WCIMT
    328	001324				61$:	GETR50
    329	001330	003371 				BGT	6$
    330	001332	020527 	000047 		7$:	CMP	R5,#CH.XCL
    331	001336	001406 				BEQ	8$
    332	001340	004767 	000032 			CALL	WCIMT
    333	001344	001005 				BNE	9$
    334	001346	004767 	000000G			CALL	ENDLIN
    335	001352	000700 				BR	1$
    336	001354	005267 	000000G		8$:	INC	CONCNT
    337	001360				9$:	GETCHR
    338	001364	000727 				BR	4$
    339
    340					;+
    341					;                                                                               ;**NEW**
    342					; **-WCIMT/WCIMTL/WCIMTT-WRITE CHARACTER IN MACRO TEXT BLOCK                    ;**NEW**
MACRS	MACRO M1108  05-DEC-77 23:26  PAGE 5-6


    343					;                                                                               ;**NEW**
    344					;-                                                                              ;**-1
    345
    346	001366				WCIMTL:				;++022 STORE MACRO CALL (LOWER CASE) CHAR       ;**NEW**
    347	001366	117705 	000000G			MOVB	@CHRPNT,R5	;++022 GET ORIGINAL CHARACTER                   ;**NEW**
    348	001372	042705 	177600 		WCIMTT:	BIC	#177600,R5	;++022 PRESERVE POSSIBLE LOWER CASE             ;**NEW**
    349	001376				WCIMT::				;++017 WRITE CHARACTER INTO MACRO TEXT
    350	001376	005367 	000000G			DEC	CONCNT		;++010 ANY CONCATENATED CHARS PENDING?          ;**-4
    351	001402	100407 				BMI	1$		;  NO
    352	001404	010546 				MOV	R5,-(SP)	;YES, STACK CURRENT CHARACTER
    353	001406	012705 	000047 			MOV	#CH.XCL,R5
    354	001412	004767 	000010 			CALL	2$
    355	001416	012605 				MOV	(SP)+,R5
    356	001420	000766 				BR	WCIMT
    357	001422	005067 	000000G		1$:	CLR	CONCNT
    358	001426	020227 	000020 		2$:	CMP	R2,#BPMB	;++010 IS CURRENT MACRO TEXT BLOCK FULL?
    359	001432	002416 				BLT	3$		;++010 BRANCH IF THERE'S STILL ROOM
    360	001434	004767 	000044 			CALL	GETBLK
    361	001440	010177 	000000G			MOV	R1,@MACWRT	;++021 PUT VIRT LOCN OF NEW TEXT BLK ...        ;**NEW**
    362									;++021 INTO LINK WORD OF OLD ONE                ;**NEW**
    363	001444	016701 	000000G			MOV	MACWTV,R1	;++021 GET VIRT LOCN OF OLD TEXT BLK            ;**NEW**
    364	001450	004767 	000000G			CALL	$UNLPG		;++021 UNLOCK ITS PAGE                          ;**NEW**
    365	001454	017767 	000000G	000000G		MOV	@MACWRT,MACWTV	;++021 MAKE NEW TEXT BLK CURRENT ONE            ;**NEW**
    366	001462	010067 	000000G			MOV	R0,MACWRT	;++010 SAVE ADDR OF BLOCK BEING WRITTEN         ;**-5
    367	001466	160002 				SUB	R0,R2		;++010 CONVERT R2 FROM ADDR TO OFFSET
    368	001470	016746 	000000G		3$:	MOV	MACWRT,-(SP)	;++010 GET ADDR OF BLOCK BEING WRITTEN
    369	001474	060216 				ADD	R2,(SP)		;++010 ADD OFFSET OF NEXT CHARACTER
    370	001476	005202 				INC	R2		;++010 INCREMENT THE OFFSET
    371	001500	110536 				MOVB	R5,@(SP)+	;++010 STORE THE CHARACTER
    372	001502	000207 				RETURN                                                                  ;**-3
    373					                                                                                ;**NEW**
    374					                                                                                ;**NEW**
    375					;+                                                                              ;**NEW**
    376					;                                                                               ;**NEW**
    377					; **-GETBLK-GET A MACRO TEXT BLOCK                                              ;**NEW**
    378					;                                                                               ;**NEW**
    379					;-                                                                              ;**NEW**
    380					                                                                                ;**NEW**
    381	001504				GETBLK::			;++010
    382	001504	016701 	000000G			MOV	MACNXT,R1	;++021 GET VIRT LOCN OF NEXT FREE BLOCK         ;**NEW**
    383	001510	001405 				BEQ	1$		;++021 IF EQ NONE LEFT                          ;**NEW**
    384	001512	004767 	000000G			CALL	$CVRL		;++021 ELSE, GET ITS REAL ADDR IN R0            ;**NEW**
    385	001516	011067 	000000G			MOV	(R0),MACNXT	;++021 REMOVE BLOCK FROM FREE LIST              ;**NEW**
    386	001522	000404 				BR	2$                                                              ;**-10
    387	001524	012701 	000020 		1$:	MOV	#BPMB,R1	;++021 SPECIFY SIZE OF BLOCK NEEDED             ;**NEW**
    388	001530	004767 	000000G			CALL	$ALVRT		;++021 ALLOC A BLOCK FROM VIRTUAL MEMORY        ;**NEW**
    389	001534	010002 			2$:	MOV	R0,R2		;++021 PUT REAL ADDR OF BLOCK IN R1             ;**NEW**
    390	001536	005022 				CLR	(R2)+		;CLEAR LINK CELL, POINT PAST IT                 ;**-2
    391	001540	000402 				BR	WRMLCK		;++021 BRANCH INTO COMMON CODE                  ;**NEW**
    392					                                                                                ;**NEW**
    393					                                                                                ;**NEW**
    394					;+                                                                              ;**NEW**
    395					;                                                                               ;**NEW**
    396					; **-INCMAC/DECMAC-ALTER MACRO REFERENCE COUNT                                  ;**NEW**
    397					;                                                                               ;**NEW**
    398					;-                                                                              ;**NEW**
    399					                                                                                ;**NEW**
MACRS	MACRO M1108  05-DEC-77 23:26  PAGE 5-7


    400					                                                                                ;**NEW**
    401	001542	105260 	000002 		INCMAC::INCB	2(R0)		;++026 INCREMENT MACRO LEVEL COUNT              ;**NEW**
    402	001546	004767 	000000G		WRMLCK:	CALL	$LCKPG		;++021 LOCK PAGE CONTAINING BLOCK               ;**NEW**
    403	001552				WRM:	CALLR	$WRMPG		;++021 MARK PAGE DIRTY AND RETURN               ;**NEW**
    404					                                                                                ;**NEW**
    405	001556	004767 	000000G		DECMAC::CALL	$CVRL2		;++021 GET REAL ADDR OF BASIC TEXT BLK          ;**NEW**
    406	001562	105360 	000002 			DECB	2(R0)		;++021 DECREMENT MACRO REFERENCE COUNT          ;**NEW**
    407	001566	100371 				BPL	WRM		;++021 IF PL MACRO IN EXPANSION ...             ;**NEW**
    408									;++021 (WILL BE REMOVED LATER)                  ;**NEW**
    409	001570					CALLR	REMMAC		;++021 REMOVE MACRO DEFN AND RETURN             ;**NEW**
    410					                                                                                ;**-8
    411					;++008
    412					;
    413					; INTERNAL SUBROUTINE -- CHECK FOR MACRO-TYPE DIRECTIVE
    414					;
    415					;--008
    416	001574				SETMAC::			;++017
    417	001574	010246 				MOV	R2,-(SP)	;++008 SAVE R2
    418	001576	004767 	000000G			CALL	SETDIR		;++008 TEST FOR DIRECTIVE
    419	001602	001413 				BEQ	2$		;++008 NOT TRUE -- RETURN FAILURE
    420	001604	012702 	001636'			MOV	#3$-2,R2	;++008 PNT R2 TO MACRO-TYPE DIRECTIVES
    421	001610	005722 			1$:	TST	(R2)+		;++008 ADVANCE POINTER
    422	001612	011200 				MOV	(R2),R0		;++008 PUT NEXT IN LIST IN R0
    423	001614	001406 				BEQ	2$		;++008 IF NULL RETURN FAILURE
    424	001616	026722 	000000G			CMP	SYMBOL,(R2)+	;++008 CMP THE FIRST HALF OF EACH
    425	001622	001372 				BNE	1$		;++008 BRANCH IF NOT A MATCH
    426	001624	026712 	000002G			CMP	SYMBOL+2,(R2)	;++008 NOW CMP THE LAST HALF OF EACH
    427	001630	001367 				BNE	1$		;++008 BRANCH IF NOT A MATCH
    428	001632	012602 			2$:	MOV	(SP)+,R2	;++008 RESTORE R2
    429	001634	005700 				TST	R0		;++008 SET RETURN STATUS
    430	001636	000207 				RETURN			;++008 (R0 NON-ZERO MEANS SUCCESS)
    431
    432	001640				3$:				;++008
    433						.IRP	X,<ENDM,ENDR,IRP,IRPC,MACR,MACRO,REPT>  ;++008
    434						.RAD50	/.'X/		;++008
    435						.ENDR			;++008
    436
    437	001674	000000 				.WORD	0		;++008 END-OF-LIST
    438
    439
    440						.ENDC
    441
    442		000001 				.END
MACRS	MACRO M1108  05-DEC-77 23:26  PAGE 5-8
SYMBOL TABLE

ABSEXP= ****** GX	CONCNT= ****** GX	GETCHR= ****** GX	LST.LP= 000002   	SETSYM= ****** GX
AM.DEC= 000040   	CPL   = 000120   	GETFLG= ****** GX	MACGSB= ****** GX	SMLLEN= 000120
AM.DEF= 000010   	CPXADD= 000001   	GETLIN= ****** GX	MACNXT= ****** GX	SPACE = 000040
AM.IMM= 000027   	CPXAND= 000005   	GETNB = ****** GX	MACWRT= ****** GX	SRCLEN= 000204
AM.INC= 000020   	CPXCOM= 000011   	GETR50= ****** GX	MACWTV= ****** GX	STLLEN= 000100
AM.NDX= 000060   	CPXCON= 000020   	GETSYM= ****** GX	MDFFLG= 000004   	SYMBOL= ****** GX
AM.PC = 000007   	CPXDIV= 000004   	GLBFLG= 000100   	MODE  = ****** GX	TAB   = 000011
AM.REL= 000067   	CPXFLG= 000200   	GMARGF= ****** GX	MT.MAC= 177603 G 	TSTARG= ****** GX
ARGCNT= ****** GX	CPXGLB= 000016   	GSARGF= ****** GX	MT.MAX= 177603 G 	TTLLEN= 000040
ARGMAX= ****** GX	CPXIOR= 000006   	GSDT00= 000000   	NEXT  = ****** GX	UPDMAC  001130R     003
ASTFLG= 000114   	CPXMUL= 000003   	GSDT01= 000400   	OBJLEN= 000052   	UPDMAR  001104R     003
BLKT01= 000001   	CPXNEG= 000010   	GSDT02= 001000   	PROMA   000000RG    003	VALUE = ****** GX
BLKT02= 000002   	CPXOPC= 000010   	GSDT03= 001400   	PROMC   000176RG    003	VT    = 000013
BLKT03= 000003   	CPXREL= 000017   	GSDT04= 002000   	PROMCF  000200RG    003	WCIMT   001376RG    003
BLKT04= 000004   	CPXSDS= 000013   	GSDT05= 002400   	PROMT   001146RG    003	WCIMTL  001366R     003
BLKT05= 000005   	CPXSTO= 000012   	GSDT06= 003000   	PSTFLG= 000050   	WCIMTT  001372R     003
BLKT06= 000006   	CPXSUB= 000002   	ILVL  = 000004   	REGFLG= 000001   	WRM     001552R     003
BPMB  = 000020   	CR    = 000015   	INCMAC  001542RG    003	RELFLG= 000040   	WRMLCK  001546R     003
CHRPNT= ****** GX	CRADIX= ****** GX	INSERT= ****** GX	REMMAC= ****** GX	XBSRCH= 000000
CH.ADD= 000053   	CSTACC= 000020   	LBLEND= ****** GX	RLDLEN= 000052   	XCREF = 000000
CH.AND= 000046   	CSTALO= 000004   	LBLFLG= 000002   	RLDT00= 000000   	XEDABS= 000000
CH.BSL= 000134   	CSTFLG= 000050   	LCENDL= ****** GX	RLDT01= 000001   	XEDCDR= 000000
CH.COL= 000072   	CSTGBL= 000100   	LCFLAG= ****** GX	RLDT02= 000002   	XEDCRF= 000000
CH.COM= 000054   	CSTMEM= 000001   	LCMASK= ****** GX	RLDT03= 000003   	XEDFPT= 000000
CH.DIV= 000057   	CSTREL= 000040   	LC.MC = ****** GX	RLDT04= 000004   	XEDLC = 000000
CH.DOL= 000044   	CSTTYP= 000200   	LC.MD = ****** GX	RLDT05= 000005   	XEDPIC= 000000
CH.DOT= 000056   	CTTBL = ****** GX	LET.A = 000101   	RLDT06= 000006   	XEDPNC= 000000
CH.EQU= 000075   	CT.COM= ****** GX	LET.B = 000102   	RLDT07= 000007   	XFCSQN= 000000
CH.HSH= 000043   	DECMAC  001556RG    003	LET.C = 000103   	RLDT10= 000010   	XFLTG = 000000
CH.IND= 000100   	DEFFLG= 000010   	LET.D = 000104   	RLDT11= 000011   	XOPEXP= 000000
CH.IOR= 000041   	DFGFLG= 000020   	LET.E = 000105   	RLDT15= 000015   	XSUBD = 000000
CH.LAB= 000074   	DIG.0 = 000060   	LET.F = 000106   	RLDT16= 000016   	XZERR = 000000
CH.LP = 000050   	DIG.9 = 000071   	LET.G = 000107   	RLDT17= 000017   	X45   = 000000
CH.MUL= 000052   	DIV   = ****** G 	LET.O = 000117   	RMARG = ****** GX	YQCMO = 000000
CH.PCT= 000045   	DMALST= ****** GX	LET.Z = 000132   	RSDMAR  001054R     003	ZAP   = ****** GX
CH.QM = 000077   	ENDLIN= ****** GX	LF    = 000012   	RSX11M= 000000   	$ALVRT= ****** GX
CH.QTM= 000042   	ERRBTS= ****** GX	LINBUF= ****** GX	R$$11M= 000000   	$CVRL = ****** GX
CH.RAB= 000076   	ERR.A = ****** GX	LINLEN= 000204   	SEARCH= ****** GX	$CVRL2= ****** GX
CH.RP = 000051   	EXPFLG= ****** GX	LPP   = 000074   	SECTOR= ****** GX	$LCKPG= ****** GX
CH.SMC= 000073   	FF    = 000014   	LSGBAS= ****** GX	SETCHR= ****** GX	$LSPNT= ****** GX
CH.SUB= 000055   	GENBUF  000000R     002	LSTLEN= 000204   	SETDIR= ****** GX	$UNLPG= ****** GX
CH.UAR= 000136   	GETBLK  001504RG    003	LST.KB= 000001   	SETMAC  001574RG    003	$WRMPG= ****** GX
CH.XCL= 000047

. ABS.	000000	   000
      	000000	   001
MIXED 	000100	   002
PUREI 	001676	   003
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  3338 WORDS  ( 14 PAGES)
DYNAMIC MEMORY:  4160 WORDS  ( 16 PAGES)
ELAPSED TIME:  00:00:40
[45,10]MACRS,[45,20]MACRS/-SP=[45,30]RSXPAR,MPARAM,GENMC,FLGDF,MACRS
MAC11	MACRO M1108  05-DEC-77 23:27  PAGE 5


      1						.TITLE	MAC11
      2						.IDENT	/X16.02/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X16.02                                                                ;**NEW**
     24					;                                                                               ;**-1
     25					; B. BOWERING MAIN AUTHOR
     26					;
     27					; MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 20-JAN-73
     30					;		ADDITION OF REGISTER SYMBOLS AND AUTOMATIC RESOLUTION OF
     31					;		GLOBAL SYMBOL REFERENCES.
     32					;
     33					;	C.A. D'ELIA	22-SEP-73	001
     34					;	C.A. D'ELIA	22-SEP-73	002
     35					;	C.A. D'ELIA	04-OCT-73	003
     36					;	C.A. D'ELIA	12-NOV-73	006
     37					;	C.A. D'ELIA	15-NOV-73	007
     38					;	C.A. D'ELIA	16-NOV-73	009
     39					;	C.A. D'ELIA	10-JAN-74	010
     40					;	C.A. D'ELIA	25-JAN-74	011
     41					;	C.A. D'ELIA	28-JAN-74	012
     42					;	C.A. D'ELIA	05-MAR-74	013
     43					;	C.A. D'ELIA	07-APR-74	015
     44					;	H.A. NICHOLS	18-JUN-74	017
     45					;	C.A. D'ELIA	21-NOV-74	018
     46					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     47					;	C.A. D'ELIA	01-NOV-75	022	(CREF)                          ;**NEW**
     48					;
     49					;
     50
     51
     52					;
     53					; GENERATE REGISTER ROLL SYMBOL
     54					;
     55					; GENREG RNAME,VALUE
     56					;
     57					; WHERE:
MAC11	MACRO M1108  05-DEC-77 23:27  PAGE 5-1


     58					;
     59					;	RNAME=A 2 CHARACTER REGISTER NAME.
     60					;	VALUE=A VALUE FROM 0 TO 7.
     61					;
     62
     63
     64						.MACRO	GENREG RNAME,VALUE
     65						.RAD50	/RNAME/
     66						.WORD	0
     67						.BYTE	DEFFLG+REGFLG,0
     68						.WORD	VALUE
     69						.ENDM
     70
     71	000000					PURE	REGSEC,D	;++017
     72	000000				REGBAS::			;REF LABEL
     73	000000					GENREG	PC,7		;++021                                          ;**NEW**
     74	000010					GENREG	R0,0
     75	000020					GENREG	R1,1
     76	000030					GENREG	R2,2
     77	000040					GENREG	R3,3
     78	000050					GENREG	R4,4
     79	000060					GENREG	R5,5
     80	000070					GENREG	SP,6
     81	000100				REGTOP::			;REF LABEL                                      ;**-1
     82					;
     83					;	ERROR FLAG DEFINITIONS
     84					;
     85
     86	000100					PURE	TXTBYT,D	;++017
     87
     88		000001 			TMPCNT=	1			;SET FOR BIT SHIFTING
     89	000000				ERRMNE::.IRPC	CHAR,< ABDEILMNOPQRTUZ>	;++012 GENERATE ERROR CODES
     90						.ASCII	/CHAR/
     91					ERR.'CHAR==TMPCNT
     92					TMPCNT=	TMPCNT+TMPCNT
     93						.ENDM
     94
     95
     96					;                                                                               ;**NEW**
     97					; MACRO DEFINITIONS TO GENERATE RESIDENT DATA BASE TO ACCESS                    ;**NEW**
     98					; VIRTUAL MEMORY LISTS AND REAL MEMORY TABLES.                                  ;**NEW**
     99					;                                                                               ;**NEW**
    100					                                                                                ;**NEW**
    101						.MACRO	GENROL NAME,BASE,TOPE,SIZE
    102						.PSECT	ROLBAS,D,RW	;++017
    103					NAME'ROL==.-ROLBAS
    104					BAS'NAME::
    105						.WORD	BASE
    106						.PSECT	ROLTOP,D,RW	;++017
    107					TOP'NAME::
    108						.WORD	TOPE
    109						PURE	ROLSIZ,D	;++021                                          ;**NEW**
    110					SIZ'NAME::                                                                      ;**-1
    111						.WORD	SIZE*2
    112						.ENDM	GENROL                                                          ;**-2
    113
    114					                                                                                ;**NEW**
MAC11	MACRO M1108  05-DEC-77 23:27  PAGE 5-2


    115						.MACRO	GENLST	NAME,SIZE                                               ;**NEW**
    116						.PSECT	ROLBAS,D,RW                                                     ;**NEW**
    117					NAME'LST==.-$LSBAS                                                              ;**NEW**
    118					BAS'NAME::                                                                      ;**NEW**
    119						.WORD	0                                                               ;**NEW**
    120						.PSECT	ROLTOP,D,RW                                                     ;**NEW**
    121						.WORD	0                                                               ;**NEW**
    122						PURE	ROLSIZ,D                                                        ;**NEW**
    123						.WORD	SIZE*2                                                          ;**NEW**
    124						.PSECT	LSTCNT,D,RW                                                     ;**NEW**
    125						.WORD	0                                                               ;**NEW**
    126						.ENDM	GENLST                                                          ;**NEW**
    127					                                                                                ;**NEW**
    128					                                                                                ;**-1
    129	000000					.PSECT	ROLBAS,D,RW	;++017
    130	000000				$LSBAS::			;++021 REF LABEL                                ;**NEW**
    131	000000				ROLBAS::			;REF LABEL
    132	000000					.PSECT	ROLTOP,D,RW	;++017
    133	000000				$LSTOP::			;++021 REF LABEL                                ;**NEW**
    134	000000				ROLTOP::			;REF LABEL
    135	000000					.PSECT	ROLSIZ,D,RW	;++017
    136	000000				$LSSIZ::			;++021 REF LABEL                                ;**NEW**
    137	000000				ROLSIZ::			;REF LABEL
    138	000000					.PSECT	LSTCNT,D,RW	;++021                                          ;**NEW**
    139	000000				$LSCNT::			;++021 REF LABEL                                ;**NEW**
    140					                                                                                ;**NEW**
    141					                                                                                ;**NEW**
    142					;                                                                               ;**NEW**
    143					; DEFINE VIRTUAL MEMORY LISTS                                                   ;**NEW**
    144					;                                                                               ;**NEW**
    145					                                                                                ;**NEW**
    146					                                                                                ;**NEW**
    147	000000					GENLST	SYM,   4	;++021 SYMBOL LIST                              ;**NEW**
    148					                                                                                ;**NEW**
    149					                                                                                ;**NEW**
    150						.IF NDF	XEDLSB		;++021                                          ;**NEW**
    151					                                                                                ;**NEW**
    152	000002					GENLST	LSY,   3	;++021 LOCAL SYMBOL LIST                        ;**NEW**
    153					                                                                                ;**NEW**
    154						.ENDC			;++021                                          ;**NEW**
    155					                                                                                ;**NEW**
    156					                                                                                ;**NEW**
    157						.IF NDF	XMACRO		;++021                                          ;**NEW**
    158					                                                                                ;**NEW**
    159	000004					GENLST	MAC,   3	;++021 MACRO NAME LIST                          ;**NEW**
    160					                                                                                ;**NEW**
    161						.IF NDF SXML		;++021                                          ;**NEW**
    162					                                                                                ;**NEW**
    163	000006					GENLST	LIB,   5	;++021 MACRO LIBRARY LIST                       ;**NEW**
    164					                                                                                ;**NEW**
    165						.ENDC			;++021                                          ;**NEW**
    166					                                                                                ;**NEW**
    167						.ENDC			;++021                                          ;**NEW**
    168					                                                                                ;**NEW**
    169					                                                                                ;**NEW**
    170	000010					GENLST	SEC,   5	;++021 PROGRAM SECTION LIST                     ;**NEW**
    171					                                                                                ;**NEW**
MAC11	MACRO M1108  05-DEC-77 23:27  PAGE 5-3


    172					                                                                                ;**NEW**
    173		000010 			ZP$LST==SECLST			;++021 FOLLOWING 4 LISTS CAN BE ...             ;**NEW**
    174									;++021 ZAPPED --  ALL ARE SCRATCH ...           ;**NEW**
    175									;++021 LISTS WITH 4-WORD ENTRIES                ;**NEW**
    176					                                                                                ;**NEW**
    177					                                                                                ;**NEW**
    178						.IF NDF	XMACRO		;++021                                          ;**NEW**
    179					                                                                                ;**NEW**
    180	000012					GENLST	DMA,   4	;++021 DUMMY ARGUMENT LIST                      ;**NEW**
    181					                                                                                ;**NEW**
    182						.IF NDF	XSML		;++021                                          ;**NEW**
    183					                                                                                ;**NEW**
    184	000014					GENLST	MCL,   4	;++021 .MCALL NAME LIST                         ;**NEW**
    185					                                                                                ;**NEW**
    186						.ENDC			;++021                                          ;**NEW**
    187					                                                                                ;**NEW**
    188						.ENDC			;++021                                          ;**NEW**
    189					                                                                                ;**NEW**
    190					                                                                                ;**NEW**
    191	000016					GENLST	COD,   4	;++021 CODE GENERATION LIST                     ;**NEW**
    192	000020					GENLST	CPX,   4	;++021 COMPLEX EXPR POLISH LIST                 ;**NEW**
    193					                                                                                ;**NEW**
    194					                                                                                ;**NEW**
    195		000020 			VM$LST==CPXLST			;++021 PREVIOUS ARE VIRTUAL MEMORY LISTS        ;**NEW**
    196					                                                                                ;**NEW**
    197					                                                                                ;**NEW**
    198					;                                                                               ;**NEW**
    199					; DEFINE REAL MEMORY TABLES                                                     ;**NEW**
    200					;                                                                               ;**NEW**
    201					                                                                                ;**NEW**
    202					                                                                                ;**-25
    203	000022					GENROL	CND,CNDBAS,CNDTOP,2	;CONDITIONAL ARGUMENTS
    204	000024					GENROL	SWT,SWTBAS,SWTTOP,2	;COMMAND STRING SWITCHES
    205	000026					GENROL	EDT,EDTBAS,EDTTOP,2	;ENABL/DSABL
    206	000030					GENROL	LCD,LCTBAS,LCTTOP,1	;LISTING CONTROL
    207	000032					GENROL	PST,PSTBAS,PSTTOP,4	;PERMANENT SYMBOL TABLE
    208	000034					GENROL	SST,SSTBAS,SSTTOP,3 ;++011 SHORT-ENTRY PST
    209	000036					GENROL	REG,REGBAS,REGTOP,4
    210	000040					GENROL	SAT,SATBAS,SATTOP,2
    211						.IF NDF	XCREF		;++022                                          ;**NEW**
    212					                                                                                ;**NEW**
    213						GENROL	CRF,CRFBAS,CRFTOP,2  ;++022 CREF OPTIONS                        ;**NEW**
    214					                                                                                ;**NEW**
    215						.ENDC			;++022                                          ;**NEW**
    216
    217					;
    218					; IMPURE LINE DATA INITIALIZATION CODE
    219					;
    220
    221	000042					PURE	XCTLIN,I,GBL;++017
    222	000000	012700 	000000'		XCTLIN::MOV	#IMPLIN,R0	;LINE INITIALIZATION
    223	000004	005020 			3$:	CLR	(R0)+
    224	000006	022700 	000000'			CMP	#IMPLIT,R0
    225	000012	101374 				BHI	3$
    226
    227
    228	000014					PURE	XCTLIT,I,GBL		;++017
MAC11	MACRO M1108  05-DEC-77 23:27  PAGE 5-4


    229	000000	000207 				RETURN			;
    230
    231
    232					;++015
    233					;
    234					; DECLARATION OF IMPURE DATA SECTIONS
    235					;
    236					;--015
    237
    238	000000					.PSECT	IMPURE,D,RW	;++017
    239	000000				IMPURE::			;++015 REF LABEL
    240	000000					.PSECT	IMPURT,D,RW	;++017
    241	000000				IMPURT::			;++015 REF LABEL
    242	000000					.PSECT	IMPPAS,D,GBL,RW	;++017
    243	000000				IMPPAS::			;++015 REF LABEL
    244	000000					.PSECT	IMPPAT,D,GBL,RW	;++017
    245	000000				IMPPAT::			;++015 REF LABEL
    246	000000					.PSECT	IMPLIN,D,GBL,RW	;++017
    247	000000				IMPLIN:				;REF LABEL
    248	000000					.PSECT	IMPLIT,D,GBL,RW	;++017
    249	000000				IMPLIT:				;REF LABEL
MAC11	MACRO M1108  05-DEC-77 23:27  PAGE 6


    251	000000					.PSECT	IMPURE,D,RW	;++017
    252	000000				PASS::	.BLKW	1		;PASS FLAG
    253									;NEXT GROUP MUST STAY TOGETHER
    254	000000					.PSECT	IMPPAS,D,GBL,RW	;++017
    255	000000				SYMBOL::.BLKW	2		;SYMBOL ACCUMULATOR
    256	000004				MODE::				;MODE/FLAGS BYTE
    257	000004				FLAGS::	.BLKB	1		;
    258	000005				SECTOR::.BLKB	1		;SYMBOL/EXPRESSION TYPE
    259	000006				VALUE::	.BLKW	1		;EXPRESSION VALUE
    260	000010				RELLVL::.BLKW	1		;RELOCATION LEVEL
    261					                                                                                ;**-3
    262	000012				CLCNAM::.BLKW	2		;CURRENT LOCATION COUNTER NAME
    263	000016				CLCFGS::.BLKB	1		;
    264	000017				CLCSEC::.BLKB	1		;
    265	000020				CLCLOC::.BLKW	1		;
    266	000022				CLCMAX::.BLKW	1		;
    267	000024				CHRPNT::.BLKW	1		;CHARACTER POINTER
    268	000026				SYMBEG::.BLKW	1		;POINTER TO START OF SYMBOL
    269	000030				ENDFLG::.BLKW	1		;
MAC11	MACRO M1108  05-DEC-77 23:27  PAGE 7


    271	000032					PURE	PUREI,I		;++017
    272					;+
    273					;
    274					; ASSEMBLER PASS CONTROL
    275					;
    276					;-
    277
    278	000000	004767 	000000G		MACP2::	CALL	XCTPAS		;MACRO PASS 2
    279	000004	004767 	000000G		MACP2F::CALL	SECINI		;++011 INITIALIZE SECTOR ROLL
    280						.IF NDF	XSML		;++007
    281	000010	005167 	000000G			COM	LIBNUM		;++007 SET CURRENT LIBRARY NUMBER TO MINUS
    282									;++013 AND CURRENT SRC FILE NUMBER TO -1
    283						.ENDC			;++007
    284	000014	004767 	000000G		3$:	CALL	GETLIN		;GET THE NEXT INPUT LINE
    285	000020	001002 				BNE	4$		;  BRANCH IF EOF
    286	000022	004767 	000000G			CALL	STMNT		;PROCESS THE STATEMENT
    287	000026	004767 	000000G		4$:	CALL	ENDLIN		;POLISH OFF LINE
    288	000032	005767 	000030'			TST	ENDFLG		;END SEEN?
    289	000036	001766 				BEQ	3$		;  NO, CONTINUE
    290	000040	000207 				RETURN
    291
    292	000042					PURE	DPURE,D		;++017
    293	000000	127401 	007624 		R50ABS::.RAD50	/. ABS./	;
    294	000004	127400 			R50DOT::.RAD50	/.  /		;++015
    295	000006					PURE	PUREI,I		;++017
    296
    297	000042	000167 	000000G		OVMACR::JMP	MACROC		;++006 LOAD OVERLAY TO PROCESS MACRO
    298
    299	000046	000167 	000000G		OVSTMT::JMP	STMNT		;++006 LOAD OVERLAY TO PROCESS STMTS
MAC11	MACRO M1108  05-DEC-77 23:27  PAGE 8


    301	000000					.PSECT	IMPLIN,D,GBL,RW	;++017
    302	000000				OPCLAS::.BLKW	1		;OP CODE CLASS
    303
    304	000002				BYTMOD::.BLKW	1		;++006 BYTE MODE WHEN NOT ZERO
    305	000004					PURE	PUREI,I		;++017
    306
    307	000052				SETXPR::			;SET EXPRESSION REGISTERS
    308	000052	012701 	000000'			MOV	#SYMBOL,R1
    309	000056	012702 	000005'			MOV	#SECTOR,R2
    310	000062	012703 	000004'			MOV	#MODE,R3
    311	000066	012704 	000006'			MOV	#VALUE,R4
    312	000072	000207 				RETURN
    313
    314	000074				SAVREG::			;SAVE REGISTERS
    315	000074	010346 				MOV	R3,-(SP)                                                        ;**-2
    316	000076	010246 				MOV	R2,-(SP)
    317	000100	010146 				MOV	R1,-(SP)
    318	000102	016646 	000006 			MOV	6.(SP),-(SP)	;PLACE RETURN ADDRESS ON TOP
    319	000106	010466 	000010 			MOV	R4,8.(SP)
    320	000112	004736 				CALL	@(SP)+		;RETURN THE CALL
    321	000114	012601 				MOV	(SP)+,R1	;RESTORE REGISTERS
    322	000116	012602 				MOV	(SP)+,R2
    323	000120	012603 				MOV	(SP)+,R3
    324	000122	012604 				MOV	(SP)+,R4
    325	000124	005700 				TST	R0		;SET CONDITION CODES
    326	000126	000207 				RETURN
    327					                                                                                ;**NEW**
    328					                                                                                ;**NEW**
    329						.LIST	MEB                                                             ;**NEW**
    330					                                                                                ;**NEW**
    331		000001 				.REPT	<BPMB/2>-7	;++021                                          ;**NEW**
    332						MOV	(R1)+,(R2)+	;PAD TO MAX NEEDED                              ;**-1
    333						.ENDR
	000130	012122 				MOV	(R1)+,(R2)+	;PAD TO MAX NEEDED                              ;**-1
    334					                                                                                ;**NEW**
    335	000132	012122 			XMIT7::	MOV	(R1)+,(R2)+	;MOVE VECTOR
    336	000134	012122 			XMIT6::	MOV	(R1)+,(R2)+	;
    337	000136	012122 			XMIT5::	MOV	(R1)+,(R2)+	;
    338	000140	012122 			XMIT4::	MOV	(R1)+,(R2)+	;
    339	000142	012122 			XMIT3::	MOV	(R1)+,(R2)+	;
    340	000144	012122 			XMIT2::	MOV	(R1)+,(R2)+	;
    341	000146	012122 			XMIT1::	MOV	(R1)+,(R2)+	;
    342	000150	000207 			XMIT0::	RETURN			;
    343					                                                                                ;**NEW**
    344					                                                                                ;**NEW**
    345	000152				MOVBYT::			;MOVE BYTE STRING
    346	000152	112122 			1$:	MOVB	(R1)+,(R2)+	;MOVE ONE
    347	000154	001376 				BNE	1$		;LOOP IF NON-NULL
    348	000156	105742 				TSTB	-(R2)		;END, POINT BACK TO NULL
    349	000160	000207 				RETURN
MAC11	MACRO M1108  05-DEC-77 23:27  PAGE 9


    351					;++011
    352					;
    353					; THE FOLLOWING ENTRY POINTS ARE REMOVED FROM MODULES NORMALLY NOT
    354					; FOUND IN THE ROOT. THEY WERE PLACED IN THIS ROOT MODULE TO PREVENT
    355					; THE GENERATION OF ADDITIONAL OVERLAY AUTO-LOAD TRANSFER VECTORS.
    356					;
    357					;--011
    358						.ENABL	LSB		;++011
    359
    360
    361	000162	005203 			BLKW::	INC	R3		;++011 INDICATE "BLKW"
    362	000164	000167 	000000G			JMP	BLKB		;++011 JUMP TO COMMON CODE
    363
    364
    365	000170	005212 			EVEN::	INC	(R2)		;++011 INCREMENT  PC
    366	000172	042712 	000001 			BIC	#1,(R2)		;++011 FORCE IT EVEN
    367	000176	000207 				RETURN			;++011
    368
    369
    370	000200	052712 	000001 		ODD::	BIS	#1,(R2)		;++011 FORCE ODD PC
    371	000204	000207 			EOT::	RETURN			;++011
    372
    373
    374	000206	005203 			ASCIZ::	INC	R3		;++011 INDICATE "ASCIZ"
    375	000210	005203 			ASCII::	INC	R3		;++011 INDICATE "ASCII"
    376	000212	000167 	000000G			JMP	RAD50		;++011 JUMP TO COMMON CODE
    377
    378
    379	000216	005203 			WORD::	INC	R3		;++011 INDICATE "WORD"
    380	000220	000167 	000000G			JMP	BYTE		;++011 JUMP TO COMMON CODE
    381
    382
    383	000224	005103 			DSABL::	COM	R3		;++011 INDICATE "DSABL"
    384	000226	000167 	000000G			JMP	ENABL		;++011 JUMP TO COMMON CODE
    385
    386
    387	000232	005103 			NLIST::	COM	R3		;++011 INDICATE "NLIST"
    388	000234	000167 	000000G			JMP	LIST		;++011 JUMP TO COMMON CODE
    389
    390
    391	000240	005203 			IRPC::	INC	R3		;++011 INDICATE "IRPC"
    392	000242	000167 	000000G			JMP	IRP		;++011 JUMP TO COMMON CODE
    393
    394
    395	000246	016767 	000000G	000000G	MEXIT::	MOV	MACLVL,CNDMEX	;++011 ARE WE IN A MACRO?
    396	000254	001003 				BNE	2$		;++011 YES SKIP
    397
    398	000256				OPCERR::ERROR	O		;OP-CODE ERROR
	000256	052767 	001000 	000000G		BIS	#ERR.O,ERRBTS
    399	000264	000207 			2$:	RETURN			;++011
    400
    401
    402						.DSABL	LSB		;++011
    403
    404		000001 				.END
MAC11	MACRO M1108  05-DEC-77 23:27  PAGE 9-1
SYMBOL TABLE

AM.DEC= 000040   	CH.RAB= 000076   	ERR.A = 000002 G 	LST.LP= 000002   	SECLST= 000010 G
AM.DEF= 000010   	CH.RP = 000051   	ERR.B = 000004 G 	LSYLST= 000002 G 	SECTOR  000005RG    014
AM.IMM= 000027   	CH.SMC= 000073   	ERR.D = 000010 G 	MACLST= 000004 G 	SETXPR  000052RG    020
AM.INC= 000020   	CH.SUB= 000055   	ERR.E = 000020 G 	MACLVL= ****** GX	SIZCND  000022RG    006
AM.NDX= 000060   	CH.UAR= 000136   	ERR.I = 000040 G 	MACP2   000000RG    020	SIZEDT  000026RG    006
AM.PC = 000007   	CH.XCL= 000047   	ERR.L = 000100 G 	MACP2F  000004RG    020	SIZLCD  000030RG    006
AM.REL= 000067   	CLCFGS  000016RG    014	ERR.M = 000200 G 	MACROC= ****** GX	SIZPST  000032RG    006
ASCII   000210RG    020	CLCLOC  000020RG    014	ERR.N = 000400 G 	MCLLST= 000014 G 	SIZREG  000036RG    006
ASCIZ   000206RG    020	CLCMAX  000022RG    014	ERR.O = 001000 G 	MDFFLG= 000004   	SIZSAT  000040RG    006
ASTFLG= 000114   	CLCNAM  000012RG    014	ERR.P = 002000 G 	MEXIT   000246RG    020	SIZSST  000034RG    006
BASCND  000022RG    004	CLCSEC  000017RG    014	ERR.Q = 004000 G 	MODE    000004RG    014	SIZSWT  000024RG    006
BASCOD  000016RG    004	CNDBAS= ****** GX	ERR.R = 010000 G 	MOVBYT  000152RG    020	SMLLEN= 000120
BASCPX  000020RG    004	CNDMEX= ****** GX	ERR.T = 020000 G 	NLIST   000232RG    020	SPACE = 000040
BASDMA  000012RG    004	CNDROL= 000022 G 	ERR.U = 040000 G 	OBJLEN= 000052   	SRCLEN= 000204
BASEDT  000026RG    004	CNDTOP= ****** GX	ERR.Z = 100000 G 	ODD     000200RG    020	SSTBAS= ****** GX
BASLCD  000030RG    004	CODLST= 000016 G 	EVEN    000170RG    020	OPCERR  000256RG    020	SSTROL= 000034 G
BASLIB  000006RG    004	CPL   = 000120   	FF    = 000014   	OPCLAS  000000RG    016	SSTTOP= ****** GX
BASLSY  000002RG    004	CPXADD= 000001   	FLAGS   000004RG    014	OVMACR  000042RG    020	STLLEN= 000100
BASMAC  000004RG    004	CPXAND= 000005   	GETLIN= ****** GX	OVSTMT  000046RG    020	STMNT = ****** GX
BASMCL  000014RG    004	CPXCOM= 000011   	GLBFLG= 000100   	PASS    000000RG    012	SWTBAS= ****** GX
BASPST  000032RG    004	CPXCON= 000020   	GSDT00= 000000   	PSTBAS= ****** GX	SWTROL= 000024 G
BASREG  000036RG    004	CPXDIV= 000004   	GSDT01= 000400   	PSTFLG= 000050   	SWTTOP= ****** GX
BASSAT  000040RG    004	CPXFLG= 000200   	GSDT02= 001000   	PSTROL= 000032 G 	SYMBEG  000026RG    014
BASSEC  000010RG    004	CPXGLB= 000016   	GSDT03= 001400   	PSTTOP= ****** GX	SYMBOL  000000RG    014
BASSST  000034RG    004	CPXIOR= 000006   	GSDT04= 002000   	RAD50 = ****** GX	SYMLST= 000000 G
BASSWT  000024RG    004	CPXLST= 000020 G 	GSDT05= 002400   	REGBAS  000000RG    002	TAB   = 000011
BASSYM  000000RG    004	CPXMUL= 000003   	GSDT06= 003000   	REGFLG= 000001   	TMPCNT= 000000
BLKB  = ****** GX	CPXNEG= 000010   	ILVL  = 000004   	REGROL= 000036 G 	TOPCND  000022RG    005
BLKT01= 000001   	CPXOPC= 000010   	IMPLIN  000000R     016	REGTOP  000100RG    002	TOPEDT  000026RG    005
BLKT02= 000002   	CPXREL= 000017   	IMPLIT  000000R     017	RELFLG= 000040   	TOPLCD  000030RG    005
BLKT03= 000003   	CPXSDS= 000013   	IMPPAS  000000RG    014	RELLVL  000010RG    014	TOPPST  000032RG    005
BLKT04= 000004   	CPXSTO= 000012   	IMPPAT  000000RG    015	RLDLEN= 000052   	TOPREG  000036RG    005
BLKT05= 000005   	CPXSUB= 000002   	IMPURE  000000RG    012	RLDT00= 000000   	TOPSAT  000040RG    005
BLKT06= 000006   	CR    = 000015   	IMPURT  000000RG    013	RLDT01= 000001   	TOPSST  000034RG    005
BLKW    000162RG    020	CSTACC= 000020   	IRP   = ****** GX	RLDT02= 000002   	TOPSWT  000024RG    005
BPMB  = 000020   	CSTALO= 000004   	IRPC    000240RG    020	RLDT03= 000003   	TTLLEN= 000040
BYTE  = ****** GX	CSTFLG= 000050   	LBLFLG= 000002   	RLDT04= 000004   	VALUE   000006RG    014
BYTMOD  000002RG    016	CSTGBL= 000100   	LCDROL= 000030 G 	RLDT05= 000005   	VM$LST= 000020 G
CHRPNT  000024RG    014	CSTMEM= 000001   	LCTBAS= ****** GX	RLDT06= 000006   	VT    = 000013
CH.ADD= 000053   	CSTREL= 000040   	LCTTOP= ****** GX	RLDT07= 000007   	WORD    000216RG    020
CH.AND= 000046   	CSTTYP= 000200   	LET.A = 000101   	RLDT10= 000010   	XBSRCH= 000000
CH.BSL= 000134   	DEFFLG= 000010   	LET.B = 000102   	RLDT11= 000011   	XCREF = 000000
CH.COL= 000072   	DFGFLG= 000020   	LET.C = 000103   	RLDT15= 000015   	XCTLIN  000000RG    010
CH.COM= 000054   	DIG.0 = 000060   	LET.D = 000104   	RLDT16= 000016   	XCTPAS= ****** GX
CH.DIV= 000057   	DIG.9 = 000071   	LET.E = 000105   	RLDT17= 000017   	XEDABS= 000000
CH.DOL= 000044   	DMALST= 000012 G 	LET.F = 000106   	ROLBAS  000000RG    004	XEDCDR= 000000
CH.DOT= 000056   	DSABL   000224RG    020	LET.G = 000107   	ROLSIZ  000000RG    006	XEDCRF= 000000
CH.EQU= 000075   	EDTBAS= ****** GX	LET.O = 000117   	ROLTOP  000000RG    005	XEDFPT= 000000
CH.HSH= 000043   	EDTROL= 000026 G 	LET.Z = 000132   	RSX11M= 000000   	XEDLC = 000000
CH.IND= 000100   	EDTTOP= ****** GX	LF    = 000012   	R$$11M= 000000   	XEDPIC= 000000
CH.IOR= 000041   	ENABL = ****** GX	LIBLST= 000006 G 	R50ABS  000000RG    021	XEDPNC= 000000
CH.LAB= 000074   	ENDFLG  000030RG    014	LIBNUM= ****** GX	R50DOT  000004RG    021	XFCSQN= 000000
CH.LP = 000050   	ENDLIN= ****** GX	LINLEN= 000204   	SATBAS= ****** GX	XFLTG = 000000
CH.MUL= 000052   	EOT     000204RG    020	LIST  = ****** GX	SATROL= 000040 G 	XMIT0   000150RG    020
CH.PCT= 000045   	ERRBTS= ****** GX	LPP   = 000074   	SATTOP= ****** GX	XMIT1   000146RG    020
CH.QM = 000077   	ERRMNE  000000RG    003	LSTLEN= 000204   	SAVREG  000074RG    020	XMIT2   000144RG    020
CH.QTM= 000042   	ERR.  = 000001 G 	LST.KB= 000001   	SECINI= ****** GX	XMIT3   000142RG    020
MAC11	MACRO M1108  05-DEC-77 23:27  PAGE 9-2
SYMBOL TABLE

XMIT4   000140RG    020	XMIT7   000132RG    020	XZERR = 000000   	ZP$LST= 000010 G 	$LSSIZ  000000RG    006
XMIT5   000136RG    020	XOPEXP= 000000   	X45   = 000000   	$LSBAS  000000RG    004	$LSTOP  000000RG    005
XMIT6   000134RG    020	XSUBD = 000000   	YQCMO = 000000   	$LSCNT  000000RG    007

. ABS.	000000	   000
      	000000	   001
REGSEC	000100	   002
TXTBYT	000020	   003
ROLBAS	000042	   004
ROLTOP	000042	   005
ROLSIZ	000042	   006
LSTCNT	000022	   007
XCTLIN	000014	   010
XCTLIT	000002	   011
IMPURE	000002	   012
IMPURT	000000	   013
IMPPAS	000032	   014
IMPPAT	000000	   015
IMPLIN	000004	   016
IMPLIT	000000	   017
PUREI 	000266	   020
DPURE 	000006	   021
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  4333 WORDS  ( 17 PAGES)
DYNAMIC MEMORY:  5216 WORDS  ( 20 PAGES)
ELAPSED TIME:  00:00:48
[45,10]MAC11,[45,20]MAC11/-SP=[45,30]RSXPAR,MPARAM,GENMC,FLGDF,MAC11
MCALL	MACRO M1108  05-DEC-77 23:27  PAGE 4


      1						.TITLE	MCALL
      2						.IDENT	/X03.02/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X03.02                                                                ;**NEW**
     24					;                                                                               ;**-1
     25					; B. BOWERING
     26					;
     27					;	MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 6-FEB-73
     30					;	C.A. D'ELIA	01-AUG-74	017
     31					;	C.A. D'ELIA	31-DEC-74	018
     32					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     33					;	C.A. D'ELIA	05-SEP-76	026	(KEYWORD MACROS IN 8K)          ;**NEW**
     34					;
     35					;
     36
     37						.IF NDF	XMACRO
     38
     39						.IF NDF	XSML
     40
     41
     42					;
     43					; MACRO LIBRARY CALLS
     44					;
     45
     46						.MCALL	FDBDF$		;++018
     47
     48					;                                                                               ;**NEW**
     49					; GLOBAL DATA                                                                   ;**NEW**
     50					;                                                                               ;**NEW**
     51					; MISC DATA NEEDED BY 'SCNLIB'                                                  ;**NEW**
     52					;                                                                               ;**NEW**
     53					                                                                                ;**NEW**
     54	000000					.PSECT	MIXED,D,RW	;++026                                          ;**NEW**
     55					                                                                                ;**NEW**
     56					                                                                                ;**NEW**
     57	000000				MNCNT::	.BLKW	1		;++026 COUNT OF ENTRIES IN LIBRARY              ;**NEW**
MCALL	MACRO M1108  05-DEC-77 23:27  PAGE 4-1


     58	000002				MCLPNT::.BLKW	1		;++026 SAVED .MCALL LIST POINTER                ;**NEW**
     59
     60					;
     61					; GENERATE LIBRARY FILE DUMMY FDB (DEFINITION WILL BE OVERLAID)
     62					;
     63	000000					.PSECT	SMLFDB,D,GBL,OVR  ;++018
     64
     65	000000				SMLFDB::FDBDF$			;++018 ALLOCATE FDB AT LOWEST POINT
     66
     67
     68	000140					PURE	PUREI,I		;++017
     69
     70					;+
     71					; **-MCALL-MACRO LIBRARY CALL
     72					;-
     73
     74	000000	004767 	000000G		MCALL::	CALL	SMLTST		;TEST FOR UNDEFINED ARGUMENTS
     75	000004	001417 				BEQ	5$		;  BRANCH IF NONE
     76	000006	005767 	000000G			TST	PASS		;FOUND SOME, PASS ONE?
     77	000012	001404 				BEQ	1$		;++018 YES, PROCESS THE .MCALL
     78	000014					ERROR	U		;++018 NO, INDICATE UNDEFINED MACRO NAMES
     79	000022	000410 				BR	5$		;++018 THEN BRANCH TO LEAVE
     80	000024	004767 	000000G		1$:	CALL	INISML		;GET ANOTHER FILE
     81	000030	001403 				BEQ	4$		;++018 JUST LEAVE IF NONE LEFT
     82	000032	004767 	000000G			CALL	SCNLIB		;++018 VERIFY AND PROCESS LIBRARY FILE
     83	000036	001372 				BNE	1$		;++018 .MCALL UNSATISFIED, OPEN NEXT LIBRARY
     84	000040	004767 	000000G		4$:	CALL	FINSML		;++018 DONE, CLOSE LIBRARY FILE
     85	000044	005067 	000000G		5$:	CLR	SMLLVL		;MAKE SURE COUNT IS ZAPPED
     86	000050	005067 	000000G			CLR	ENDFLG		;DITTO FOR END FLAG
     87	000054					ZAP	MCLLST		;++021 EMPTY .MCALL NAME LIST                   ;**NEW**
     88	000064	000207 				RETURN			;++018                                          ;**-2
     89					                                                                                ;**NEW**
     90					                                                                                ;**NEW**
     91					;                                                                               ;**NEW**
     92					; THIS ENTRY IS CALLED BY 'SCNLIB' TO PROCESS A MACRO DEFINITION.               ;**NEW**
     93					; IT IS NEEDED IN THE SMALL ASSEMBLER BECAUSE 'SCNLIB' AND 'MACROD'             ;**NEW**
     94					; ARE ON PARALLEL OVERLAY SEGMENTS.                                             ;**NEW**
     95					;                                                                               ;**NEW**
     96					                                                                                ;**NEW**
     97	000066	004767 	000000G		$PMDEF::CALL	MACROF		;++026 PROCESS MACRO DEFN FROM LIBRARY          ;**NEW**
     98	000072	000167 	000000G			JMP	$SLRTN		;++026 RETURN/RELOAD LIBRARY SCAN ROUTINE       ;**NEW**
     99
    100
    101						.ENDC
    102
    103						.ENDC
    104
    105
    106		000001 				.END
MCALL	MACRO M1108  05-DEC-77 23:27  PAGE 4-2
SYMBOL TABLE

BPMB  = 000020   	MCALL   000000RG    004	SMLLVL= ****** GX	TTLLEN= 000040   	XFLTG = 000000
CPL   = 000120   	MCLLST= ****** GX	SMLTST= ****** GX	XBSRCH= 000000   	XOPEXP= 000000
ENDFLG= ****** GX	MCLPNT  000002RG    002	SRCLEN= 000204   	XCREF = 000000   	XSUBD = 000000
ERRBTS= ****** GX	MNCNT   000000RG    002	STLLEN= 000100   	XEDABS= 000000   	XZERR = 000000
ERR.U = ****** GX	OBJLEN= 000052   	S.FDB = 000140   	XEDCDR= 000000   	X45   = 000000
FINSML= ****** GX	PASS  = ****** GX	S.FNAM= 000006   	XEDCRF= 000000   	YQCMO = 000000
ILVL  = 000004   	RLDLEN= 000052   	S.FNB = 000036   	XEDFPT= 000000   	ZAP   = ****** GX
INISML= ****** GX	RSX11M= 000000   	S.FNBW= 000017   	XEDLC = 000000   	$PMDEF  000066RG    004
LINLEN= 000204   	R$$11M= 000000   	S.FNTY= 000004   	XEDPIC= 000000   	$SLRTN= ****** GX
LPP   = 000074   	SCNLIB= ****** GX	S.FTYP= 000002   	XEDPNC= 000000   	...PC1= 000000R     003
LSTLEN= 000204   	SMLFDB  000000RG    003	S.NFEN= 000020   	XFCSQN= 000000   	...TPC= 000140
MACROF= ****** GX	SMLLEN= 000120

. ABS.	000000	   000
      	000000	   001
MIXED 	000004	   002
SMLFDB	000140	   003
PUREI 	000076	   004
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  3216 WORDS  ( 13 PAGES)
DYNAMIC MEMORY:  4160 WORDS  ( 16 PAGES)
ELAPSED TIME:  00:00:29
[45,10]MCALL,[45,20]MCALL/-SP=[45,30]RSXPAR,MPARAM,GENMC,MCALL
MLIBS	MACRO M1108  05-DEC-77 23:28  PAGE 4


      1						.TITLE	MLIBS
      2						.IDENT	/X08.01/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X08.01                                                                ;**NEW**
     24					;                                                                               ;**-1
     25					; B. BOWERING
     26					;
     27					;	MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 6-FEB-73
     30					;	C.A. D'ELIA	15-NOV-73	007
     31					;	C.A. D'ELIA	10-JAN-74	010
     32					;	C.A. D'ELIA	05-MAR-74	013
     33					;	C.A. D'ELIA	22-MAR-74	014
     34					;	C.A. D'ELIA	07-APR-74	015
     35					;	H.A. NICHOLS	18-JUN-74	017
     36					;	C.A. D'ELIA	01-AUG-74	017
     37					; 	C.A. D'ELIA	21-NOV-74	018
     38					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     39					;
     40					;
     41					; MACRO LIBRARY CALLS
     42					;
     43
     44						.IF NDF	XSML		;++007
     45
     46
     47						.MCALL	FDOFF$		;++017
     48	000000					FDOFF$	DEF$L		;++017
     49
     50						.MCALL	CALL,RETURN,CLOSE$,FDBDF$,FDRC$A,FDOP$A ;++015
     51						.MCALL	NMBLK$,FDAT$R	;++018
     52
     53
     54
     55
     56						.IF NDF	RSX11M		;++014
     57
MLIBS	MACRO M1108  05-DEC-77 23:28  PAGE 4-1


     58
     59						.MCALL	OPEN$R		;++014
     60
     61						.IFF			;++014
     62
     63						.MCALL	OFNB$R		;++014
     64
     65
     66						.ENDC			;++014 (RSX11M)
     67
     68
     69
     70	000000					.PSECT	SMLFDB,D,GBL,OVR  ;++018
     71
     72					;
     73					; MACRO FILE FDB
     74					;
     75
     76	000000					FDBDF$			;++018
     77	000140					FDRC$A	0,LINBUF,LINLEN
     78	000140					FDOP$A	6,SMLDS,SMLNAM
     79
     80					;
     81					; SYSTEM MACRO FILE DEFAULT NAME BLOCK
     82					;
     83
     84	000140					PURE	DPURE,D		;++017
     85
     86	000000				SMLNAM:	NMBLK$	RSXMAC,SML,,SY	;++017
     87
     88					;
     89					; SYSTEM MACRO FILE DATA SET DESCRIPTOR
     90					;
     91
     92	000036	000000 			SMLDS:	.WORD	0		;NO DEVICE NAME
     93	000040	000000 				.WORD	0		;
     94	000042	000005 				.WORD	SMLDRE-SMLDR	;DIRECTORY NAME
     95	000044	000052'				.WORD	SMLDR		;
     96	000046	000000 				.WORD	0		;NO FILENAME
     97	000050	000000 				.WORD	0		;
     98	000052	   133 	   061 	   054 	SMLDR:	.ASCII	/[1,1]/		;DIRECTORY NAME
	000055	   061 	   135
     99	000057				SMLDRE:				;
    100						.EVEN
    101
    102	000060					PURE	PUREI,I		;++017
    103
    104						.ENABL	LSB		;++007
    105
    106	000000				10$:	CALL	20$		;++007 CLOSE CURRENT LIBRARY FILE
    107	000004				INISML::			;++014
    108	000004	116701 	000012G			MOVB	IOFTBL+SMLCHN,R1  ;++014 PUT FILE STATUS IN R1
    109	000010	002456 				BLT	30$		;++007 LEAVE IF FILE ERROR
    110	000012	001372 				BNE	10$		;++007 BRANCH IF FILE IS OPEN
    111	000014	116702 	000000G			MOVB	LIBNUM,R2	;++013 GET LIBRARY NUMBER
    112	000020	001452 				BEQ	30$		;++007 LEAVE IF NONE LEFT
    113	000022	003002 				BGT	12$		;++007 SKIP IF IN MIDDLE OF SEARCH
MLIBS	MACRO M1108  05-DEC-77 23:28  PAGE 4-2


    114	000024	016702 	000000C			MOV	$LSCNT+LIBLST,R2  ;++021 1ST TIME--GET LAST FILE NUMBER         ;**NEW**
    115	000030	005302 			12$:	DEC	R2		;++010 DECREMENT LIBRARY NUMBER                 ;**-1
    116	000032	110267 	000000G			MOVB	R2,LIBNUM	;++013 AND STORE IT
    117	000036					CALL	OPNLIB		;++010 OPEN THE DESIRED MACRO LIBRARY
    118	000042	103760 				BCS	INISML		;++010 ERROR--TRY TO OPEN NEXT ONE
    119	000044	012702 	000000G			MOV	#SYMBOL,R2	;++021 GET ADDR OF SYMBOL AREA                  ;**NEW**
    120	000050	005712 				TST	(R2)		;++021 CHECK THE FILE ID                        ;**NEW**
    121	000052	001013 				BNE	15$		;++021 IF NE IT IS ALREADY KNOWN                ;**NEW**
    122	000054	012701 	000102G			MOV	#SMLFDB+F.FNB+N.FID,R1  ;++021 ELSE, POINT R1 INTO FDB          ;**NEW**
    123	000060	012122 				MOV	(R1)+,(R2)+	;++021 TRANSFER FILE ID INTO SYMBOL AREA        ;**NEW**
    124	000062	012122 				MOV	(R1)+,(R2)+	;++021                                          ;**NEW**
    125	000064	012122 				MOV	(R1)+,(R2)+	;++021                                          ;**NEW**
    126	000066	016122 	000024 			MOV	N.DVNM-<N.FID+6>(R1),(R2)+  ;++021 COPY DEVICE NAME             ;**NEW**
    127	000072	016122 	000026 			MOV	N.UNIT-<N.FID+6>(R1),(R2)+  ;++021 AND UNIT NUMBER, TOO         ;**NEW**
    128	000076					CALL	INSERT		;++021 REPLACE ENTRY IN LIBRARY FILE ...        ;**NEW**
    129									;++021 INFORMATION LIST                         ;**NEW**
    130	000102				15$:				;++021                                          ;**NEW**
    131	000102	012701 	000000G			MOV	#IO.OPN,R1	;++007 SPECIFY FILE OPEN STATUS                 ;**-4
    132	000106	005067 	000000G			CLR	ENDFLG		;++007 CLEAR PENDING END-OF-FILE STATUS
    133	000112	000416 				BR	40$		;++007 LEAVE WITH SUCCESSFUL RETURN STATUS
    134
    135
    136
    137	000114	112767 	177777 	000000G	FINSML::MOVB	#-1,LIBNUM	;++013 SET CURRENT LIBRARY # NEGATIVE
    138	000122	116701 	000012G			MOVB	IOFTBL+SMLCHN,R1  ;++014 PUT FILE STATUS IN R1
    139	000126	003407 				BLE	30$		;++007 LEAVE IF FILE CLOSED OR IN ERROR
    140	000130	005001 			20$:	CLR	R1		;++007 SPECIFY FILE CLOSED STATUS
    141	000132					CLOSE$	#SMLFDB		;++007 CLOSE CURRENT LIBRARY FILE
    142	000142	103001 				BCC	30$		;++007 O.K. -- LEAVE
    143	000144	005101 				COM	R1		;++007 ERROR -- SET FILE ERROR STATUS
    144	000146	005000 			30$:	CLR	R0		;++007 SET RETURN STATUS TO FILE NOT OPEN
    145	000150	110167 	000012G		40$:	MOVB	R1,IOFTBL+SMLCHN  ;++014 STORE FILE STATUS
    146	000154	005700 				TST	R0		;++007 SET RETURN STATUS
    147	000156					RETURN			;++007
    148
    149
    150
    151						.DSABL	LSB		;++007
    152					                                                                                ;**-83
    153
    154
    155
    156					                                                                                ;**-1
    157					;++013
    158					;
    159					; **-OPNLIB--OPEN FILE FROM INFO IN 'LIBLST'                                    ;**NEW**
    160					;                                                                               ;**-1
    161					; INPUTS:
    162					;	R2=LIST ENTRY NUMBER                                                    ;**NEW**
    163					;                                                                               ;**-3
    164					; OUTPUTS:
    165					;	R0=ADDRESS OF FDB USED IN FILE OPEN
    166					;	R1-R4=LOST                                                              ;**NEW**
    167					;                                                                               ;**-3
    168					;--013
    169
    170	000160	012704 	000012 		OPNLIB:	MOV	#SMLCHN,R4	;++021 GET MACRO LIBRARY SOFTWARE CHAN #        ;**NEW**
MLIBS	MACRO M1108  05-DEC-77 23:28  PAGE 4-3


    171	000164	005067 	000000G			CLR	$LSPNT		;++021 INIT POINTER TO START OF LIST            ;**NEW**
    172	000170	012700 	000000G		1$:	MOV	#LIBLST,R0	;++021 PUT LIST NUMBER IN R0                    ;**NEW**
    173	000174					CALL	NEXT		;++021 RETRIEVE NEXT ENTRY                      ;**NEW**
    174	000200	005302 				DEC	R2		;++021 DECREMENT LIBRARY NUMBER                 ;**NEW**
    175	000202	002372 				BGE	1$		;++021 IF GE NOT THE DESIRED ONE                ;**NEW**
    176	000204	016400 	000000G			MOV	FDBTBL(R4),R0	;++014 PUT ADDR OF PROPER FDB IN R0             ;**-11
    177	000210	010001 				MOV	R0,R1		;++013 COPY IT INTO R1
    178	000212	062701 	000102 			ADD	#F.FNB+N.FID,R1	;++013 PNT R1 TO FILE ID IN THE FDB
    179	000216	012702 	000000G			MOV	#SYMBOL,R2	;++021 POINT TO SYMBOL AREA                     ;**NEW**
    180	000222	012221 				MOV	(R2)+,(R1)+	;++021 MOVE FILE ID INTO FDB                    ;**NEW**
    181	000224	012221 				MOV	(R2)+,(R1)+	;++021                                          ;**NEW**
    182	000226	012221 				MOV	(R2)+,(R1)+	;++021                                          ;**NEW**
    183	000230	012261 	000024 			MOV	(R2)+,N.DVNM-<N.FID+6>(R1)  ;++021 MOVE DEVICE NAME             ;**NEW**
    184	000234	012261 	000026 			MOV	(R2)+,N.UNIT-<N.FID+6>(R1)  ;++021 AND UNIT NUMBER              ;**NEW**
    185					                                                                                ;**-1
    186
    187						.IF NDF	RSX11M		;++014
    188
    189
    190						OPEN$R			;++013 OPEN THE FILE FOR READ
    191
    192						.IFF			;++014
    193
    194	000240	005760 	000102 			TST	F.FNB+N.FID(R0)	;++014 LOOK FOR A FILE ID
    195	000244	001011 				BNE	10$		;++014 SKIP IF ONE IS THERE
    196	000246	162701 	000006 			SUB	#N.FID+6,R1	;++014 ELSE, POINT R1 TO FILENAME BLOCK         ;**-1
    197	000252	012702 	000036'			MOV	#SMLDS,R2	;++014 POINT R2 TO DATASET DESCRIPTOR
    198	000256	012703 	000000'			MOV	#SMLNAM,R3	;++014 POINT R3 TO DEFAULT FNB
    199	000262					CALL	.PARSE		;++014 PARSE THE FILENAME
    200	000266	103414 				BCS	2$		;++014 SKIP ON ERROR                            ;**-1
    201	000270				10$:	OFNB$R			;++014 OPEN FOR READ (VIA FILENAME BLK)
    202
    203
    204						.ENDC			;++014 (RSX11M)
    205
    206
    207	000302	103406 				BCS	2$		;++013 SKIP ON OPEN FAILURE
    208	000304	112764 	000000G	000000G		MOVB	#IO.OPN,IOFTBL(R4)  ;++014 SET FILE OPEN STATUS
    209	000312					FDAT$R	R0,#R.VAR	;++018 SET VARIABLE LENGTH RECORDS ATTRIBUTE
    210	000320				2$:				;++013
    211	000320					RETURN			;++010
    212
    213						.ENDC			;++007                                          ;**-14
    214
    215
    216
    217		000001 				.END
MLIBS	MACRO M1108  05-DEC-77 23:28  PAGE 4-4
SYMBOL TABLE

BINCHN= 000006   	F.FACC= 000043   	INISML  000004RG    004	RLDLEN= 000052   	XCREF = 000000
BPMB  = 000020   	F.FFBY= 000014   	INSERT= ****** GX	RSX11M= 000000   	XEDABS= 000000
CMOCHN= 000000   	F.FNAM= 000110   	IOFTBL= ****** GX	R$$11M= 000000   	XEDCDR= 000000
CPL   = 000120   	F.FNB = 000102   	IO.OPN= ****** GX	R.VAR = ****** GX	XEDCRF= 000000
ENDFLG= ****** GX	F.FTYP= 000116   	LIBLST= ****** GX	SMLCHN= 000012   	XEDFPT= 000000
FDBTBL= ****** GX	F.FVER= 000120   	LIBNUM= ****** GX	SMLDR   000052R     003	XEDLC = 000000
FINSML  000114RG    004	F.HIBK= 000004   	LINBUF= ****** GX	SMLDRE  000057R     003	XEDPIC= 000000
FO.RD = ****** GX	F.LUN = 000042   	LINLEN= 000204   	SMLDS   000036R     003	XEDPNC= 000000
F.ALOC= 000040   	F.MBCT= 000054   	LPP   = 000074   	SMLFDB= ****** GX	XFCSQN= 000000
F.BBFS= 000062   	F.MBC1= 000055   	LSTCHN= 000004   	SMLLEN= 000120   	XFLTG = 000000
F.BDB = 000070   	F.MBFG= 000056   	LSTLEN= 000204   	SMLNAM  000000R     003	XOPEXP= 000000
F.BGBC= 000057   	F.NRBD= 000024   	MAXCHN= 000014   	SRCCHN= 000002   	XSUBD = 000000
F.BKDN= 000026   	F.NREC= 000030   	NEXT  = ****** GX	SRCLEN= 000204   	XZERR = 000000
F.BKDS= 000020   	F.OVBS= 000030   	N.DID = 000024   	STLLEN= 000100   	X45   = 000000
F.BKEF= 000050   	F.RACC= 000016   	N.DVNM= 000032   	SYMBOL= ****** GX	YQCMO = 000000
F.BKP1= 000051   	F.RATT= 000001   	N.FID = 000000   	S.FATT= 000016   	$LSCNT= ****** GX
F.BKST= 000024   	F.RCNM= 000034   	N.FNAM= 000006   	S.FDB = 000140   	$LSPNT= ****** GX
F.BKVB= 000064   	F.RCTL= 000017   	N.FTYP= 000014   	S.FNAM= 000006   	$$    = 000067
F.CNTG= 000034   	F.RSIZ= 000002   	N.FVER= 000016   	S.FNB = 000036   	.CLOSE= ****** G
F.DFNB= 000046   	F.RTYP= 000000   	N.NEXT= 000022   	S.FNBW= 000017   	.OPFNB= ****** G
F.DSPT= 000044   	F.STBK= 000036   	N.STAT= 000020   	S.FNTY= 000004   	.PARSE= ****** GX
F.DVNM= 000134   	F.UNIT= 000136   	N.UNIT= 000034   	S.FTYP= 000002   	...PC1= 000000R     002
F.EFBK= 000010   	F.URBD= 000020   	OBJLEN= 000052   	S.NFEN= 000020   	...PC2= 000014R     003
F.EFN = 000050   	F.VBN = 000064   	OPNLIB  000160R     004	TMPCNT= 000014   	...PC3= 000000R     002
F.EOBB= 000032   	F.VBSZ= 000060   	PAR$$$= 000000   	TTLLEN= 000040   	...TPC= 000140
F.ERR = 000052   	ILVL  = 000004   	RELCHN= 000010   	XBSRCH= 000000

. ABS.	000000	   000
      	000000	   001
SMLFDB	000140	   002
DPURE 	000060	   003
PUREI 	000322	   004
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  3932 WORDS  ( 16 PAGES)
DYNAMIC MEMORY:  5216 WORDS  ( 20 PAGES)
ELAPSED TIME:  00:00:32
[45,10]MLIBS,[45,20]MLIBS/-SP=[45,30]RSXPAR,MPARAM,MCIOCH,MLIBS
MPUSH                          	MACRO M1108  05-DEC-77 23:28  PAGE 2


      1						.TITLE	MPUSH                                                           ;**NEW**
      2						.IDENT	/X01.02/                                                        ;**NEW**
      3					                                                                                ;**-2
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION X01.02                                                                ;**NEW**
     23					;                                                                               ;**-1
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 6-FEB-73
     29					;	H.A. NICHOLS	18-JUN-74	017                                     ;**-6
     30					;	C.A. D'ELIA	01-AUG-74	017
     31					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     32					;	C.A. D'ELIA	05-SEP-76	026	(KEYWORD MACROS IN 8K)          ;**NEW**
     33					;
     34					;
     35
     36					                                                                                ;**-3
     37						.IF NDF	XMACRO
     38					                                                                                ;**NEW**
     39					                                                                                ;**NEW**
     40	000000					PURE	PUREI,I		;++017                                          ;**-2
     41
     42					;+                                                                              ;**NEW**
     43					;                                                                               ;**NEW**
     44					; **-MPUSH-SAVE CURRENT MACRO CONTEXT                                           ;**NEW**
     45					;                                                                               ;**NEW**
     46					;-                                                                              ;**NEW**
     47					                                                                                ;**-67
     48	000000	004767 	000000G		MPUSH::	CALL	GETBLK		;++017 GET A STORAGE BLOCK
     49	000004	005742 				TST	-(R2)		;POINT TO START
     50	000006	012704 	000000G			MOV	#MSBBLK,R4	;++021 GET ADDR OF MACRO CONTEXT AREA           ;**NEW**
     51	000012	011422 			100$:	MOV	(R4),(R2)+	;++021 COPY CURRENT CONTEXT INTO SAVE BLK       ;**NEW**
     52	000014	005024 				CLR	(R4)+		;++021 WHILE CLEARING MACRO CONTEXT AREA        ;**NEW**
     53	000016	022704 	000000G			CMP	#MSBEND,R4	;++021 REPEAT FOR ENTIRE CONTEXT                ;**NEW**
     54	000022	001373 				BNE	100$		;++021                                          ;**NEW**
     55	000024	012702 	000000G			MOV	#MSBBLK,R2	;++021 GET ADDR OF MACRO CONTEXT AREA           ;**NEW**
     56	000030	010522 				MOV	R5,(R2)+	;STORE CURRENT MACRO TYPE INDICATOR             ;**NEW**
     57	000032	010122 				MOV	R1,(R2)+	;++021 SAVE VIRT LOCN OF CONTEXT SAVE BLK       ;**NEW**
MPUSH                          	MACRO M1108  05-DEC-77 23:28  PAGE 2-1


     58	000034	004767 	000000G			CALL	$UNLPG		;++021 UNLOCK ITS PAGE                          ;**NEW**
     59	000040	005267 	000000G			INC	MACLVL		;BUMP LEVEL COUNT                               ;**-10
     60	000044	000207 				RETURN			;RETURN WITH R2 POINTING AT MSBTXT
     61
     62					                                                                                ;**-19
     63						.ENDC
     64
     65		000001 				.END
MPUSH                          	MACRO M1108  05-DEC-77 23:28  PAGE 2-2
SYMBOL TABLE

GETBLK= ****** GX	MSBEND= ****** GX	XEDABS= 000000   	XEDPNC= 000000   	XSUBD = 000000
ILVL  = 000004   	RSX11M= 000000   	XEDCDR= 000000   	XFCSQN= 000000   	XZERR = 000000
MACLVL= ****** GX	R$$11M= 000000   	XEDFPT= 000000   	XFLTG = 000000   	X45   = 000000
MPUSH   000000RG    002	XBSRCH= 000000   	XEDLC = 000000   	XOPEXP= 000000   	$UNLPG= ****** GX
MSBBLK= ****** GX	XCREF = 000000   	XEDPIC= 000000

. ABS.	000000	   000
      	000000	   001
PUREI 	000046	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  255 WORDS  ( 1 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:04
[45,10]MPUSH,[45,20]MPUSH/-SP=[45,30]RSXPAR,MPUSH
MSCDR	MACRO M1108  05-DEC-77 23:29  PAGE 6


      1						.TITLE	MSCDR
      2						.IDENT	/X10.01/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X10.01                                                                ;**NEW**
     24					;                                                                               ;**-1
     25					; B. BOWERING
     26					;
     27					;	MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 6-FEB-73
     30					;
     31					;	C.A. D'ELIA	22-SEP-73	002
     32					;	C.A. D'ELIA	15-NOV-73	008
     33					;	C.A. D'ELIA	28-JAN-74	012
     34					;	C.A. D'ELIA	22-MAR-74	014
     35					;	C.A. D'ELIA	07-APR-74	015
     36					;	H.A. NICHOLS	18-JUN-74	017
     37					;	C.A. D'ELIA	01-AUG-74	017
     38					;	C.A. D'ELIA	31-DEC-74	018
     39					;	C.A. D'ELIA	30-APR-75	019
     40					;	C.A. D'ELIA	01-NOV-75	022	(CREF)                          ;**NEW**
     41					;
     42					;
     43					;+
     44					; **-GLOBL-GLOBAL REFERENCE OR DEFINITION
     45					; **-END-END OF ASSEMBLY
     46					;-
     47
     48
     49						.IF DF	RSX11M		;++017
     50
     51
     52						.MCALL	FDBF$R,OFNB$A,CLOSE$ ;++017
     53
     54
     55						.ENDC			;++014
     56
     57
MSCDR	MACRO M1108  05-DEC-77 23:29  PAGE 6-1


     58
     59
     60	000000					PURE	PUREI,I		;++017
     61						.IF NDF	XREL
     62	000000				GLOBL::	GSARG			;GET SYMBOLIC ARGUMENT
     63	000004	001423 				BEQ	3$		;  END
     64	000006					SSRCH			;NO, SEARCH USER SYMBOL TABLE
     65	000012	032767 	000001 	000000G		BIT	#REGFLG,FLAGS	;REGISTER?
     66	000020	001011 				BNE	2$		;  YES, ERROR
     67	000022	042767 	000020 	000000G		BIC	#DFGFLG,FLAGS	;CLEAR DEFAULT GLOBAL FLAG BIT
     68	000030	052767 	000100 	000000G		BIS	#GLBFLG,FLAGS	;NO, FLAG AS GLOBL
     69	000036					INSERT			;UPDATE/INSERT
     70	000042					CRFREF			;++022                                          ;**NEW**
     71	000042	000756 				BR	GLOBL		;                                               ;**-1
     72	000044				2$:	ERROR	R
     73	000052	000752 				BR	GLOBL		;
     74	000054	000207 			3$:	RETURN
     75						.ENDC
     76
     77	000056	016746 	000000G		END::	MOV	CNDLVL,-(SP)	;++002 TEST TO SEE IF USER IS IN EITHER ...
     78	000062	056726 	000000G			BIS	MACLVL,(SP)+	;++002 ... A MACRO EXPANSION OR A CONDITIONAL
     79	000066	001402 				BEQ	10$		;++002 IF NOT, CONTINUE
     80	000070	000167 	000000G			JMP	OPCERR		;++002 ELSE, DECLARE AN OPCODE ERROR
     81	000074				10$:	EXPR			;++002 EVALUATE TRANSFER EXPRESSION
     82	000100	001001 				BNE	1$		;  BRANCH IF NON-NULL
     83	000102	005214 				INC	(R4)		;NULL, MAKE IT A ONE
     84	000104				1$:	RELTST			;NO GLOBALS ALLOWED
     85	000110	005267 	000000G			INC	ENDFLG
     86	000114					SETIMM			;FILL OUT BLOCK
     87	000120					SETPF1			;LIST FIELD 1
     88	000124	012701 	000000G			MOV	#SYMBOL,R1
     89	000130	012702 	000000G			MOV	#ENDVEC,R2
     90	000134	000167 	000000G			JMP	XMIT4		;MOVE TO END VECTOR
     91
     92
     93					;+
     94					; **-SETHDR-SET PAGE HEADER
     95					; **-TITLE-SET PROGRAM TITLE
     96					; **-SBTTL-SUB TITLE
     97					; **-PRINT-MESSAGE
     98					; **-ERROR-ERROR MESSAGE
     99					; **-REM-REMARKS
    100					;-
    101
    102	000140	012767 	000000'	000000G	SETHDR::MOV	#DEFTTL,CHRPNT	;POINT TO DEFAULT HEADING
    103	000146					SETCHR			;MAKE IT LOOK LIKE THE REAL THING
    104	000152				TITLE::	GETSYM			;GET SYMBOL
    105	000156	001004 				BNE	1$		;  ERROR IF NULL
    106	000160					ERROR	A
    107	000166	000207 				RETURN
    108	000170	010067 	000000G		1$:	MOV	R0,PRGTTL	;MOVE INTO STORAGE
    109	000174	016767 	000002G	000002G		MOV	SYMBOL+2,PRGTTL+2
    110	000202					CALL	SETSYM		;POINT TO START OF TITLE
    111	000206	012702 	000000G			MOV	#TTLBUF,R2	;POINT TO BUFFER
    112	000212	112722 	000014 			MOVB	#FF,(R2)+	;STORE PAGE EJECT
    113	000216	005003 				CLR	R3		;CLEAR POSITION CONTER
    114	000220	110512 			2$:	MOVB	R5,(R2)		;PLUNK THE NEXT CHAR IN THE BUFFER
MSCDR	MACRO M1108  05-DEC-77 23:29  PAGE 6-2


    115	000222	001415 				BEQ	5$		;BRANCH IF END
    116	000224	020527 	000011 			CMP	R5,#TAB		;A TAB?
    117	000230	001002 				BNE	3$		;  NO
    118	000232	052703 	000007 			BIS	#7,R3		;YES, COMPENSATE
    119	000236	005203 			3$:	INC	R3		;UPDATE POSITION COUNTER
    120	000240	020327 	000040 			CMP	R3,#TTLLEN	;WITHIN BOUNDS?
    121	000244	103001 				BHIS	4$		;  NO
    122	000246	105722 				TSTB	(R2)+		;YES, MOVE POINTER
    123	000250				4$:	GETCHR			;GET THE NEXT CHARACTER
    124	000254	001361 				BNE	2$		;LOOP IF NOT END
    125	000256	112722 	000011 		5$:	MOVB	#TAB,(R2)+	;SET SEPARATOR
    126	000262	012701 	000000G			MOV	#HDRTTL,R1
    127	000266					MOVBYT			;SET VERSION NUMBER, ETC.
    128						.IF NDF	XTIME
    129	000272	012701 	000000G			MOV	#DATTIM,R1
    130	000276					MOVBYT			;DATE AND TIME
    131						.ENDC
    132	000302	010267 	000000G			MOV	R2,TTLBRK	;REMEMBER BREAK POINT
    133	000306	000207 				RETURN
    134
    135	000310					PURE	TXTBYT,D	;++017
    136	000000	   056 	   115 	   101 	DEFTTL:	.ASCIZ	/.MAIN./	;DEFAULT TITLE
	000003	   111 	   116 	   056
	000006	   000
    137	000007					PURE	PUREI,I		;++017
    138
    139	000310	012702 	000000G		SBTTL::	MOV	#STLBUF,R2	;POINT TO SUBTITLE BUFFER
    140	000314	005767 	000000G			TST	PASS		;PASS ONE?
    141	000320	001411 				BEQ	2$		;  YES
    142	000322	110522 			1$:	MOVB	R5,(R2)+	;MOVE CHARACTER IN
    143	000324	001527 				BEQ	13$		;  BRANCH IF END
    144	000326					GETCHR			;GET THE NEXT CHARACTER
    145	000332	020227 	000077G			CMP	R2,#STLBUF+STLLEN-1	;TEST FOR END
    146	000336	103771 				BLO	1$
    147	000340	105742 				TSTB	-(R2)		;POLISH OFF LINE
    148	000342	000767 				BR	1$
    149	000344	032767 	000000G	000000G	2$:	BIT	#LC.TOC,LCMASK
    150	000352	001114 				BNE	13$
    151	000354	105767 	000000G			TSTB	LSTDEV		;ANY LISTING DEVICE?
    152	000360	001511 				BEQ	13$		;  NO, EXIT
    153	000362	005767 	000000G			TST	LCLVL		;++012 CHECK LISTING CONTROL LEVEL
    154	000366	002506 				BLT	13$		;++012 LEAVE IF LEVEL IS 'NOLIST'
    155
    156
    157						.IF DF	RSX11M		;++017
    158
    159
    160	000370	016700 	000004G			MOV	FDBTBL+LSTCHN,R0  ;++017 PUT LISTING FILE FDB ADDR IN R0
    161	000374					FDBF$R	R0,,$LSTVZ	;++017 OVERRIDE DEVICE BUFFER SIZE
    162	000402					OFNB$A	R0		;++017 RE-OPEN LISTING FILE
    163
    164						.ENDC			;++014
    165
    166
    167	000414	012701 	000007'			MOV	#TOCTXT,R1
    168	000420					MOVBYT			;SET TABLE OF CONTENTS
    169	000424					CALL	SETSYM		;POINT TO ".SBTTL"
MSCDR	MACRO M1108  05-DEC-77 23:29  PAGE 6-3


    170	000430				3$:	GETR50			;GET RADIX-50 CHAR
    171	000434	003375 				BGT	3$		;STOP AT FIRST TERMINATOR
    172	000436					CALL	SETNB		;++019 SKIP TO FIRST NON-BLANK CHAR
    173	000442	016702 	000000G			MOV	CHRPNT,R2	;SET POINTER
    174	000446	112742 	000011 			MOVB	#TAB,-(R2)	;++019 INSERT A TAB FOR READABILITY
    175
    176
    177						.IF NDF	XLCSEQ
    178
    179	000452	016700 	000000G			MOV	LINNUM,R0
    180	000456					CALL	10$
    181	000462	112742 	000055 			MOVB	#CH.SUB,-(R2)
    182
    183						.ENDC
    184
    185
    186	000466	016700 	000000G			MOV	PAGNUM,R0
    187	000472					CALL	10$
    188	000476	112742 	000040 			MOVB	#SPACE,-(R2)
    189	000502					PUTLP	R2		;OUTPUT
    190
    191
    192						.IF DF	RSX11M		;++017
    193
    194
    195	000510	016700 	000004G			MOV	FDBTBL+LSTCHN,R0  ;++017 PUT LISTING FILE FDB ADDR IN R0
    196	000514	010001 				MOV	R0,R1		;++017 POINT R1 TO THE ...
    197	000516	062701 	000000C			ADD	#F.FNB+N.FID,R1	;++017 ... FILE ID
    198	000522	012146 				MOV	(R1)+,-(SP)	;++014 SAVE ...
    199	000524	012146 				MOV	(R1)+,-(SP)	;++014 ... THE ...
    200	000526	012146 				MOV	(R1)+,-(SP)	;++014 ... FILE ID
    201	000530					CLOSE$	R0		;++017 CLOSE THE LISTING FILE
    202	000534	012641 				MOV	(SP)+,-(R1)	;++014 RESTORE ...
    203	000536	012641 				MOV	(SP)+,-(R1)	;++014 ... THE ...
    204	000540	012641 				MOV	(SP)+,-(R1)	;++014 ... FILE ID
    205
    206
    207						.ENDC			;++017
    208
    209
    210	000542	000207 				RETURN
    211	000544	012704 	000004 		10$:	MOV	#4,R4		;++019 ALLOW FOR A 4 DIGIT NUMBER
    212	000550	112742 	000040 		11$:	MOVB	#SPACE,-(R2)
    213	000554	010001 				MOV	R0,R1
    214	000556	001410 				BEQ	12$
    215	000560	005000 				CLR	R0
    216	000562					DIV	#^D10,R0
    217	000572	062701 	000060 			ADD	#DIG.0,R1
    218	000576	110112 				MOVB	R1,(R2)
    219	000600				12$:	SOB	R4,11$
    220	000604	000207 			13$:	RETURN
    221
    222	000606					PURE	TXTBYT,D	;++017
    223	000007	   124 	   101 	   102 	TOCTXT:	.ASCIZ	/TABLE OF CONTENTS/
	000012	   114 	   105 	   040
	000015	   117 	   106 	   040
	000020	   103 	   117 	   116
MSCDR	MACRO M1108  05-DEC-77 23:29  PAGE 6-4


	000023	   124 	   105 	   116
	000026	   124 	   123 	   000
    224	000031					PURE	PUREI,I		;++017
    225
    226						.ENABL	LSB
    227	000606				PRINT::	ERROR	<>		;NULL ERROR (DON'T COUNT)
    228	000614	000403 				BR	1$
    229	000616				ERROR::	ERROR	P		;
    230	000624				1$:	SETPF0			;PRINT LOCATION FIELD
    231	000630					EXPR			;EVALUATE EXPRESSION
    232	000634	001402 				BEQ	2$		;BRANCH IF NULL
    233	000636					SETPF1			;NON-NULL, LIST VALUE
    234	000642	000207 			2$:	RETURN
    235						.DSABL	LSB
    236
    237						.IF NDF	XSUBD		;++018
    238					REM::	MOV	R5,R3		;SET TERMINATING CHARACTER
    239						BNE	1$		;BRANCH IF NON-NULL
    240						ERROR	A		;ERROR, NO DELIMITING CHARACTER
    241						RETURN
    242					1$:	GETCHR			;GET THE NEXT CHARACTER
    243					2$:	TST	R5		;END OF LINE?
    244						BNE	3$		;  NO
    245						CALL	ENDLIN		;YES, POLISH OFF LINE
    246						INC	GETFLG		;INHIBIT FILE CROSSING
    247						CALL	GETLIN		;GET NEXT LINE
    248						DEC	GETFLG		;ENABLE FILE CROSSING
    249						TST	R0		;TEST GETLIN RETURN STATUS
    250						BEQ	2$		;LOOP IF NO EOF
    251						RETURN			;EOF, EXIT
    252					3$:	CMP	R5,R3		;IS THIS THE TERMINATOR?
    253						BNE	1$		;  NO
    254						JMP	GETNB		;YES, BYPASS AND EXIT
    255						.ENDC			;++018 (XSUBD -- SUBSET DIRECTIVES)
    256
    257		000001 				.END
MSCDR	MACRO M1108  05-DEC-77 23:29  PAGE 6-5
SYMBOL TABLE

AM.DEC= 000040   	CNDLVL= ****** GX	FDBTBL= ****** GX	LSTLEN= 000204   	SETPF0= ****** GX
AM.DEF= 000010   	CPL   = 000120   	FF    = 000014   	LST.KB= 000001   	SETPF1= ****** GX
AM.IMM= 000027   	CPXADD= 000001   	FLAGS = ****** GX	LST.LP= 000002   	SETSYM= ****** GX
AM.INC= 000020   	CPXAND= 000005   	FO.APD= ****** GX	MACLVL= ****** GX	SMLCHN= 000012
AM.NDX= 000060   	CPXCOM= 000011   	F.FACC= ****** GX	MAXCHN= 000014   	SMLLEN= 000120
AM.PC = 000007   	CPXCON= 000020   	F.FNB = ****** GX	MDFFLG= 000004   	SPACE = 000040
AM.REL= 000067   	CPXDIV= 000004   	F.OVBS= ****** GX	MOVBYT= ****** GX	SRCCHN= 000002
ASTFLG= 000114   	CPXFLG= 000200   	GETCHR= ****** GX	N.FID = ****** GX	SRCLEN= 000204
BINCHN= 000006   	CPXGLB= 000016   	GETR50= ****** GX	OBJLEN= 000052   	SSRCH = ****** GX
BLKT01= 000001   	CPXIOR= 000006   	GETSYM= ****** GX	OPCERR= ****** GX	STLBUF= ****** GX
BLKT02= 000002   	CPXMUL= 000003   	GLBFLG= 000100   	PAGNUM= ****** GX	STLLEN= 000100
BLKT03= 000003   	CPXNEG= 000010   	GLOBL   000000RG    002	PAR$$$= 000000   	SYMBOL= ****** GX
BLKT04= 000004   	CPXOPC= 000010   	GSARG = ****** GX	PASS  = ****** GX	TAB   = 000011
BLKT05= 000005   	CPXREL= 000017   	GSDT00= 000000   	PRGTTL= ****** GX	TITLE   000152RG    002
BLKT06= 000006   	CPXSDS= 000013   	GSDT01= 000400   	PRINT   000606RG    002	TMPCNT= 000014
BPMB  = 000020   	CPXSTO= 000012   	GSDT02= 001000   	PSTFLG= 000050   	TOCTXT  000007R     003
CHRPNT= ****** GX	CPXSUB= 000002   	GSDT03= 001400   	PUTLP = ****** GX	TTLBRK= ****** GX
CH.ADD= 000053   	CR    = 000015   	GSDT04= 002000   	REGFLG= 000001   	TTLBUF= ****** GX
CH.AND= 000046   	CSTACC= 000020   	GSDT05= 002400   	RELCHN= 000010   	TTLLEN= 000040
CH.BSL= 000134   	CSTALO= 000004   	GSDT06= 003000   	RELFLG= 000040   	VT    = 000013
CH.COL= 000072   	CSTFLG= 000050   	HDRTTL= ****** GX	RELTST= ****** GX	XBSRCH= 000000
CH.COM= 000054   	CSTGBL= 000100   	ILVL  = 000004   	RLDLEN= 000052   	XCREF = 000000
CH.DIV= 000057   	CSTMEM= 000001   	INSERT= ****** GX	RLDT00= 000000   	XEDABS= 000000
CH.DOL= 000044   	CSTREL= 000040   	LBLFLG= 000002   	RLDT01= 000001   	XEDCDR= 000000
CH.DOT= 000056   	CSTTYP= 000200   	LCLVL = ****** GX	RLDT02= 000002   	XEDCRF= 000000
CH.EQU= 000075   	DATTIM= ****** GX	LCMASK= ****** GX	RLDT03= 000003   	XEDFPT= 000000
CH.HSH= 000043   	DEFFLG= 000010   	LC.TOC= ****** GX	RLDT04= 000004   	XEDLC = 000000
CH.IND= 000100   	DEFTTL  000000R     003	LET.A = 000101   	RLDT05= 000005   	XEDPIC= 000000
CH.IOR= 000041   	DFGFLG= 000020   	LET.B = 000102   	RLDT06= 000006   	XEDPNC= 000000
CH.LAB= 000074   	DIG.0 = 000060   	LET.C = 000103   	RLDT07= 000007   	XFCSQN= 000000
CH.LP = 000050   	DIG.9 = 000071   	LET.D = 000104   	RLDT10= 000010   	XFLTG = 000000
CH.MUL= 000052   	DIV   = ****** G 	LET.E = 000105   	RLDT11= 000011   	XMIT4 = ****** GX
CH.PCT= 000045   	END     000056RG    002	LET.F = 000106   	RLDT15= 000015   	XOPEXP= 000000
CH.QM = 000077   	ENDFLG= ****** GX	LET.G = 000107   	RLDT16= 000016   	XSUBD = 000000
CH.QTM= 000042   	ENDVEC= ****** GX	LET.O = 000117   	RLDT17= 000017   	XZERR = 000000
CH.RAB= 000076   	ERRBTS= ****** GX	LET.Z = 000132   	RSX11M= 000000   	X45   = 000000
CH.RP = 000051   	ERROR   000616RG    002	LF    = 000012   	R$$11M= 000000   	YQCMO = 000000
CH.SMC= 000073   	ERR.  = ****** GX	LINLEN= 000204   	SBTTL   000310RG    002	$LSTVZ= ****** GX
CH.SUB= 000055   	ERR.A = ****** GX	LINNUM= ****** GX	SETCHR= ****** GX	$$    = 000067
CH.UAR= 000136   	ERR.P = ****** GX	LPP   = 000074   	SETHDR  000140RG    002	.CLOSE= ****** G
CH.XCL= 000047   	ERR.R = ****** GX	LSTCHN= 000004   	SETIMM= ****** GX	.OPFNB= ****** G
CMOCHN= 000000   	EXPR  = ****** GX	LSTDEV= ****** GX	SETNB = ****** GX

. ABS.	000000	   000
      	000000	   001
PUREI 	000644	   002
TXTBYT	000031	   003
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  5338 WORDS  ( 21 PAGES)
DYNAMIC MEMORY:  6272 WORDS  ( 24 PAGES)
ELAPSED TIME:  00:00:44
[45,10]MSCDR,[45,20]MSCDR/-SP=[45,30]RSXPAR,MPARAM,MCIOCH,GENMC,FLGDF,MSCDR
NDRCT	MACRO M1108  05-DEC-77 23:29  PAGE 4


      1						.TITLE	NDRCT
      2						.IDENT	/X02.01/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A  SINGLE COMPUTER SYSTEM AND CAN BE  COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT  NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE  INFORMATION  IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE  AND  SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X02.01                                                                ;**NEW**
     24					;                                                                               ;**-1
     25					; B. BOWERING
     26					;
     27					;	MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 10-FEB-73
     30					;	H.A. NICHOLS	18-JUN-74	++017
     31					;	C.A. D'ELIA	01-AUG-74	017
     32					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     33					;
     34					;
     35					;+
     36					; **-NARG-NUMBER OF ARGUMENTS
     37					; **-NCHR-NUMBER OF CHARACTERS
     38					; **-NTYPE-TYPE OF EXPRESSION
     39					;-
     40
     41	000000					PURE	PUREI,I		;++017
     42	000000				NCHR::				;++017
     43	000000	004767 	000134 			CALL	NDARG		;++017 GET (& CHECK) SYMBOLIC ARGUMENT
     44	000004	004767 	000000G			CALL	GMARG		;ISOLATE ARGUMENT
     45	000010	001437 				BEQ	NTYPEX		;  ZERO IF NULL
     46	000012	005705 				TST	R5		;QUICK TEST FOR COMPLETION
     47	000014	001404 				BEQ	2$		;  YES
     48	000016	005203 			1$:	INC	R3		;BUMP COUNT
     49	000020					GETCHR			;GET THE NEXT CHARACTER
     50	000024	001374 				BNE	1$		;LOOP IF NOT END
     51	000026	004767 	000000G		2$:	CALL	RMARG		;REMOVE ARG DELIMITERS
     52	000032	000426 				BR	NTYPEX
     53
     54
     55						.IF NDF	XMACRO		;++017
     56
     57
NDRCT	MACRO M1108  05-DEC-77 23:29  PAGE 4-1


     58	000034				NARG::				;++017
     59	000034	004767 	000064 			CALL	MACTST		;++017 CHECK FOR MACRO EXPANSION AND ...
     60									;++017 ... GET (& CHECK) SYMBOLIC ARGUMENT
     61	000040	016703 	000002G			MOV	MSBCNT+2,R3	;++017 PUT ARGUMENT COUNT IN R3
     62	000044	000421 				BR	NTYPEX		;++017 LEAVE THROUGH COMMON CODE
     63
     64	000046				NTYPE::				;++017
     65	000046	004767 	000052 			CALL	MACTST		;++017 CHECK FOR MACRO EXPANSION AND ...
     66									;++017 ... GET (& CHECK) SYMBOLIC ARGUMENT
     67	000052					TSTARG			;BYPASS ANY COMMAS
     68	000056	012701 	000000G			MOV	#SYMBOL,R1
     69	000062	012146 				MOV	(R1)+,-(SP)	;PRESERVE SYMBOL
     70	000064	012146 				MOV	(R1)+,-(SP)
     71	000066	004767 	000000G			CALL	AEXP		;EVALUATE
     72	000072	010003 				MOV	R0,R3		;SET RESULT
     73	000074					ZAP	CODLST		;++021 EMPTY CODE LIST                          ;**NEW**
     74	000104	012641 				MOV	(SP)+,-(R1)	;RESTORE SYMBOL                                 ;**-1
     75	000106	012641 				MOV	(SP)+,-(R1)
     76
     77						.IFTF			;++017
     78
     79	000110	005067 	000000G		NTYPEX:	CLR	MODE		;CLEAR MODE
     80	000114	010367 	000000G			MOV	R3,VALUE	;  AND SET VALUE
     81	000120	000167 	000000G			JMP	ASGMTF		;EXIT THROUGH ASSIGNMENT
     82
     83						.IFT			;++017
     84
     85	000124	005767 	000000G		MACTST:	TST	MACLVL		;++017 ARE WE IN A MACRO EXPANSION?
     86	000130	001003 				BNE	NDARG		;++017 YES, GET ARGUMENT
     87	000132	005726 				TST	(SP)+		;++017 NO, PURGE RETURN ADDRESS
     88	000134	000167 	000000G			JMP	OPCERR		;++017 DECLARE OPCODE ERROR
     89
     90
     91						.ENDC			;++017
     92
     93
     94	000140	004767 	000000G		NDARG:	CALL	GSARG		;++017 GET SYMBOLIC ARGUMENT
     95	000144	001401 				BEQ	10$		;++017 ERROR IF NULL
     96	000146	000207 				RETURN			;++017 ELSE, CONTINUE PROCESSING
     97	000150	005726 			10$:	TST	(SP)+		;++017 CLEAN STACK
     98	000152					ERROR	A		;++017 DECLARE ASSEMBLY ERROR
     99	000160	000753 				BR	NTYPEX
    100
    101
    102		000001 				.END
NDRCT	MACRO M1108  05-DEC-77 23:29  PAGE 4-2
SYMBOL TABLE

AEXP  = ****** GX	CH.MUL= 000052   	CSTGBL= 000100   	LET.F = 000106   	RLDT10= 000010
AM.DEC= 000040   	CH.PCT= 000045   	CSTMEM= 000001   	LET.G = 000107   	RLDT11= 000011
AM.DEF= 000010   	CH.QM = 000077   	CSTREL= 000040   	LET.O = 000117   	RLDT15= 000015
AM.IMM= 000027   	CH.QTM= 000042   	CSTTYP= 000200   	LET.Z = 000132   	RLDT16= 000016
AM.INC= 000020   	CH.RAB= 000076   	DEFFLG= 000010   	LF    = 000012   	RLDT17= 000017
AM.NDX= 000060   	CH.RP = 000051   	DFGFLG= 000020   	LST.KB= 000001   	RMARG = ****** GX
AM.PC = 000007   	CH.SMC= 000073   	DIG.0 = 000060   	LST.LP= 000002   	RSX11M= 000000
AM.REL= 000067   	CH.SUB= 000055   	DIG.9 = 000071   	MACLVL= ****** GX	R$$11M= 000000
ASGMTF= ****** GX	CH.UAR= 000136   	ERRBTS= ****** GX	MACTST  000124R     002	SPACE = 000040
ASTFLG= 000114   	CH.XCL= 000047   	ERR.A = ****** GX	MDFFLG= 000004   	SYMBOL= ****** GX
BLKT01= 000001   	CODLST= ****** GX	FF    = 000014   	MODE  = ****** GX	TAB   = 000011
BLKT02= 000002   	CPXADD= 000001   	GETCHR= ****** GX	MSBCNT= ****** GX	TSTARG= ****** GX
BLKT03= 000003   	CPXAND= 000005   	GLBFLG= 000100   	NARG    000034RG    002	VALUE = ****** GX
BLKT04= 000004   	CPXCOM= 000011   	GMARG = ****** GX	NCHR    000000RG    002	VT    = 000013
BLKT05= 000005   	CPXCON= 000020   	GSARG = ****** GX	NDARG   000140R     002	XBSRCH= 000000
BLKT06= 000006   	CPXDIV= 000004   	GSDT00= 000000   	NTYPE   000046RG    002	XCREF = 000000
CH.ADD= 000053   	CPXFLG= 000200   	GSDT01= 000400   	NTYPEX  000110R     002	XEDABS= 000000
CH.AND= 000046   	CPXGLB= 000016   	GSDT02= 001000   	OPCERR= ****** GX	XEDCDR= 000000
CH.BSL= 000134   	CPXIOR= 000006   	GSDT03= 001400   	PSTFLG= 000050   	XEDFPT= 000000
CH.COL= 000072   	CPXMUL= 000003   	GSDT04= 002000   	REGFLG= 000001   	XEDLC = 000000
CH.COM= 000054   	CPXNEG= 000010   	GSDT05= 002400   	RELFLG= 000040   	XEDPIC= 000000
CH.DIV= 000057   	CPXOPC= 000010   	GSDT06= 003000   	RLDT00= 000000   	XEDPNC= 000000
CH.DOL= 000044   	CPXREL= 000017   	ILVL  = 000004   	RLDT01= 000001   	XFCSQN= 000000
CH.DOT= 000056   	CPXSDS= 000013   	LBLFLG= 000002   	RLDT02= 000002   	XFLTG = 000000
CH.EQU= 000075   	CPXSTO= 000012   	LET.A = 000101   	RLDT03= 000003   	XOPEXP= 000000
CH.HSH= 000043   	CPXSUB= 000002   	LET.B = 000102   	RLDT04= 000004   	XSUBD = 000000
CH.IND= 000100   	CR    = 000015   	LET.C = 000103   	RLDT05= 000005   	XZERR = 000000
CH.IOR= 000041   	CSTACC= 000020   	LET.D = 000104   	RLDT06= 000006   	X45   = 000000
CH.LAB= 000074   	CSTALO= 000004   	LET.E = 000105   	RLDT07= 000007   	ZAP   = ****** GX
CH.LP = 000050   	CSTFLG= 000050

. ABS.	000000	   000
      	000000	   001
PUREI 	000162	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2600 WORDS  ( 11 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:18
[45,10]NDRCT,[45,20]NDRCT/-SP=[45,30]RSXPAR,GENMC,FLGDF,NDRCT
OPTERR	MACRO M1108  05-DEC-77 23:30  PAGE 4


      1						.TITLE	OPTERR
      2						.IDENT	/X01.02/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION X01.02                                                                ;**NEW**
     23					;                                                                               ;**-1
     24					; D.N. CUTLER 14-FEB-73
     25					;
     26					;	C.A. D'ELIA	05-MAR-74	013
     27					;	C.A. D'ELIA	22-SEP-74	017
     28					;	C.A. D'ELIA	22-NOV-74	018
     29					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     30					;	C.A. D'ELIA	01-NOV-75	022	(CREF)                          ;**NEW**
     31					;
     32					;
     33					; OUTPUT ERROR MESSAGES AND CLEANUP FILES FOR RE-START
     34					;
     35
     36					;
     37					; MACRO LIBRARY CALLS
     38					;
     39
     40						.MCALL	CALLR,CLOSE$	;++021                                          ;**NEW**
     41					                                                                                ;**NEW**
     42					                                                                                ;**NEW**
     43						.IF NDF	RSX11M		;++021                                          ;**NEW**
     44					                                                                                ;**NEW**
     45						.MCALL	DELET$		;++021                                          ;**NEW**
     46					                                                                                ;**NEW**
     47						.ENDC			;++021                                          ;**NEW**
     48					                                                                                ;**NEW**
     49					                                                                                ;**-1
     50						.IF NDF	YQCMO		;++018
     51
     52						.MCALL	PUT$ 		;++018
     53
     54						.ENDC			;++018
     55
     56
     57
OPTERR	MACRO M1108  05-DEC-77 23:30  PAGE 4-1


     58	000000					PURE	PUREI,I		;++017
     59
     60
     61					;++021                                                                          ;**NEW**
     62					;                                                                               ;**NEW**
     63					; *-$ERMSG-*-OUTPUT ERROR MESSAGES, CLEANUP OPEN FILES, AND RESTART             ;**NEW**
     64					;		(CALLED ONLY BY VIRTUAL MEMORY ROUTINES)                        ;**NEW**
     65					;                                                                               ;**NEW**
     66					; INPUT:                                                                        ;**NEW**
     67					;	R1=(LOW BYTE) ERROR MESSAGE NUMBER                                      ;**NEW**
     68					;                                                                               ;**NEW**
     69					; OUTPUT:                                                                       ;**NEW**
     70					;	AS DESCRIBED FOR CALL TO '$OPTER' BELOW                                 ;**NEW**
     71					;                                                                               ;**NEW**
     72					;--021                                                                          ;**NEW**
     73					                                                                                ;**NEW**
     74	000000	012716 	000000G		$ERMSG::MOV	#CONT,(SP)	;++021 CHANGE RETURN ADDR TO RESTART            ;**NEW**
     75	000004	012703 	000000G			MOV	#VIRTM1,R3	;++021 ASSUME ERROR IS E$R4                     ;**NEW**
     76	000010	122701 	000000G			CMPB	#E$R4,R1	;++021 CHECK ERROR NUMBER                       ;**NEW**
     77	000014	001407 				BEQ	$OPTER		;++021 IF EQ RIGHT                              ;**NEW**
     78	000016	012703 	000000G			MOV	#VIRTM2,R3	;++021 ASSUME ERROR IS E$R73                    ;**NEW**
     79	000022	122701 	000000G			CMPB	#E$R73,R1	;++021 CHECK ERROR NUMBER                       ;**NEW**
     80	000026	001402 				BEQ	$OPTER		;++021 IF EQ RIGHT                              ;**NEW**
     81	000030	012703 	000000G			MOV	#VIRTM3,R3	;++021 ELSE, ERROR IS E$R76                     ;**NEW**
     82					                                                                                ;**NEW**
     83					                                                                                ;**NEW**
     84					;++018
     85					;
     86					; *-$OPTER-*-OUTPUT ERROR MESSAGES TO 'CMO' AND CLEANUP FILES
     87					;
     88					; INPUT:
     89					;	R3=ADDR OF ERROR MESSAGE BYTE COUNT (PRECEEDING ACTUAL TEXT)
     90					;
     91					; OUTPUT:
     92					;	R1,R2=LOST
     93					;	R3=SAVED
     94					;	R4=ADDR OF GCML BLOCK
     95					;
     96					;--018
     97
     98	000034	010301 			$OPTER::MOV	R3,R1		;++018 COPY MESSAGE ADDR INTO R1
     99	000036	012704 	000000G			MOV	#CMLBLK,R4	;++018 PUT GCML BLOCK ADDR IN R4
    100	000042					CALL	OUTERM		;++018 PRINT ERROR MESSAGE AND CMD LINE
    101
    102
    103						.IF NDF	RSX11M		;++018
    104
    105						CALL	DELALL		;++018 DELETE OUTPUT FILES
    106
    107						.ENDC			;++018
    108
    109
    110	000046					CALLR	CLSALL		;++021 CLOSE ALL OPEN FILES AND RETURN          ;**NEW**
    111					                                                                                ;**-2
    112
    113					;++005
    114					;
OPTERR	MACRO M1108  05-DEC-77 23:30  PAGE 4-2


    115					; **-OUTERM-SEND ERROR MESSAGE AND COMMAND LINE TO CMO DEVICE
    116					;
    117					; INPUTS:
    118					;	R1=ADDR OF ERROR MESSAGE BYTE COUNT (PRECEEDING MESSAGE)
    119					;	R4=ADDRESS OF GCML BLOCK
    120					;
    121					; OUTPUTS:
    122					;	R0=ADDR OF CMO FDB (ONLY IF FILE ORIENTED OUTPUT)
    123					;	R1=ADDRESS OF COMMAND INPUT LINE
    124					;	R2=BYTE COUNT OF COMMAND INPUT LINE
    125					;
    126					;--005
    127
    128	000052	012102 			OUTERM::MOV	(R1)+,R2	;++017 PUT MESSAGE LENGTH IN R2 ...
    129									;++017 ...LEAVING R1 POINTING TO MESSAGE
    130	000054					CALL	OUTMSG		;++013 SEND MESSAGE TO CMO
    131	000060	016401 	000002G			MOV	G.CMLD+2(R4),R1	;++013 GET ADDR OF CMD LINE IN R1
    132	000064	016402 	000000G			MOV	G.CMLD(R4),R2	;++005 BYTE COUNT IN R2
    133	000070				OUTMSG::			;++018
    134
    135
    136						.IF DF YQCMO		;++018
    137
    138
    139	000070					CALLR	$QCMO		;++021 QUEUE I/O TO 'CMO' AND RETURN            ;**NEW**
    140					                                                                                ;**-1
    141						.IFF			;++013
    142
    143						PUT$	#CMOFDB,R1,R2	;++018 PUT LINE TO 'CMO' VIA FCS
    144						RETURN			;++021                                          ;**NEW**
    145
    146						.ENDC			;++013 'YQCMO'
    147
    148					                                                                                ;**NEW**
    149					                                                                                ;**NEW**
    150					;+                                                                              ;**NEW**
    151					;                                                                               ;**NEW**
    152					; **-CLSALL-CLOSE ALL OPEN FILES                                                ;**NEW**
    153					; **-DELALL-DELETE OUTPUT FILES                                                 ;**NEW**
    154					;                                                                               ;**NEW**
    155					; INPUTS/OUTPUTS: NONE                                                          ;**NEW**
    156					;                                                                               ;**NEW**
    157					;-                                                                              ;**NEW**
    158					                                                                                ;**NEW**
    159	000074	   002 			CLOLST:	.BYTE	SRCCHN		;++021 SOURCE FILE                              ;**NEW**
    160	000075	   012 				.BYTE	SMLCHN		;++021 MACRO LIBRARY FILE                       ;**NEW**
    161					                                                                                ;**NEW**
    162						.IF NDF	YQCMO		;++021                                          ;**NEW**
    163						.BYTE	CMOCHN		;++021 COMMAND OUTPUT FILE                      ;**NEW**
    164						.ENDC			;++021                                          ;**NEW**
    165					                                                                                ;**NEW**
    166					                                                                                ;**NEW**
    167	000076	   004 			DELLST:	.BYTE	LSTCHN		;++021 LISTING FILE                             ;**NEW**
    168	000077	   006 				.BYTE	BINCHN		;++021 OBJECT FILE                              ;**NEW**
    169					                                                                                ;**NEW**
    170						.IF NDF	XCREF		;++022                                          ;**NEW**
    171						.BYTE	CRFCHN		;++022 CREF FILE                                ;**NEW**
OPTERR	MACRO M1108  05-DEC-77 23:30  PAGE 4-3


    172						.ENDC			;++022                                          ;**NEW**
    173					                                                                                ;**NEW**
    174	000100	   377 				.BYTE	-1		;++021 END-OF-LIST                              ;**NEW**
    175					                                                                                ;**NEW**
    176						.EVEN			;++021                                          ;**NEW**
    177					                                                                                ;**NEW**
    178					                                                                                ;**NEW**
    179						.ENABL	LSB		;++021                                          ;**NEW**
    180					                                                                                ;**NEW**
    181	000102	012701 	000074'		CLSALL::MOV	#CLOLST,R1	;++021 POINT R1 TO LIST OF FILES                ;**NEW**
    182	000106	112100 			10$:	MOVB	(R1)+,R0	;++021 PUT SOFTWARE CHANNEL # IN R0             ;**NEW**
    183	000110	002413 				BLT	20$		;++021 IF NEGATIVE, ALL DONE                    ;**NEW**
    184	000112	126027 	000000G	000000G		CMPB	IOFTBL(R0),#IO.OPN  ;++021 TEST FOR FILE OPEN                   ;**NEW**
    185	000120	001372 				BNE	10$		;++021 NO, IGNORE (CAN'T ARBITRARILY ...        ;**NEW**
    186									;++021 ... CLOSE DUE TO OVERLAYS)               ;**NEW**
    187	000122	105060 	000000G			CLRB	IOFTBL(R0)	;++021 SET CHANNEL CLOSED STATUS                ;**NEW**
    188	000126	016000 	000000G			MOV	FDBTBL(R0),R0	;++021 GET FDB IN R0                            ;**NEW**
    189	000132					CLOSE$	R0		;++021 CLOSE THE FILE                           ;**NEW**
    190	000136	000763 				BR	10$		;++021 REPEAT FOR ALL OPEN FILES                ;**NEW**
    191	000140				20$:	CLOSE$	$WRKPT		;++021 CLOSE WORK FILE                          ;**NEW**
    192	000150	000207 			25$:	RETURN			;++021                                          ;**NEW**
    193					                                                                                ;**NEW**
    194					                                                                                ;**NEW**
    195						.IF NDF	RSX11M		;++021                                          ;**NEW**
    196					                                                                                ;**NEW**
    197					DELALL::MOV	#DELLST,R1	;++021 POINT R1 TO OUTPUT FILES LIST            ;**NEW**
    198					30$:	MOVB	(R1)+,R0	;++021 PUT SOFTWARE CHANNEL # IN R0             ;**NEW**
    199						BLT	25$		;++021 IF NEGATIVE, THEN DONE                   ;**NEW**
    200						CLRB	IOFTBL(R0)	;++021 SET CHANNEL CLOSED STATUS                ;**NEW**
    201						MOV	FDBTBL(R0),R0	;++021 GET FDB ADDR IN R0                       ;**NEW**
    202						BEQ	30$		;++021 IF NULL, CHANNEL NOT USED                ;**NEW**
    203						DELET$	R0		;++021 DELETE THE FILE                          ;**NEW**
    204						BR	30$		;++021 REPEAT FOR ALL OUTPUT FILES              ;**NEW**
    205					                                                                                ;**NEW**
    206						.ENDC			;++021                                          ;**NEW**
    207					                                                                                ;**NEW**
    208					                                                                                ;**NEW**
    209						.DSABL	LSB		;++021                                          ;**NEW**
    210					                                                                                ;**NEW**
    211					                                                                                ;**NEW**
    212					                                                                                ;**-2
    213
    214
    215		000001 				.END
OPTERR	MACRO M1108  05-DEC-77 23:30  PAGE 4-4
SYMBOL TABLE

BINCHN= 000006   	ILVL  = 000004   	RELCHN= 000010   	VIRTM2= ****** GX	XFLTG = 000000
BPMB  = 000020   	IOFTBL= ****** GX	RLDLEN= 000052   	VIRTM3= ****** GX	XOPEXP= 000000
CLOLST  000074R     002	IO.OPN= ****** GX	RSX11M= 000000   	XBSRCH= 000000   	XSUBD = 000000
CLSALL  000102RG    002	LINLEN= 000204   	R$$11M= 000000   	XCREF = 000000   	XZERR = 000000
CMLBLK= ****** GX	LPP   = 000074   	SMLCHN= 000012   	XEDABS= 000000   	X45   = 000000
CMOCHN= 000000   	LSTCHN= 000004   	SMLLEN= 000120   	XEDCDR= 000000   	YQCMO = 000000
CONT  = ****** GX	LSTLEN= 000204   	SRCCHN= 000002   	XEDCRF= 000000   	$ERMSG  000000RG    002
CPL   = 000120   	MAXCHN= 000014   	SRCLEN= 000204   	XEDFPT= 000000   	$OPTER  000034RG    002
DELLST  000076R     002	OBJLEN= 000052   	STLLEN= 000100   	XEDLC = 000000   	$QCMO = ****** GX
E$R4  = ****** GX	OUTERM  000052RG    002	TMPCNT= 000014   	XEDPIC= 000000   	$WRKPT= ****** GX
E$R73 = ****** GX	OUTMSG  000070RG    002	TTLLEN= 000040   	XEDPNC= 000000   	$$    = 000067
FDBTBL= ****** GX	PAR$$$= 000067   	VIRTM1= ****** GX	XFCSQN= 000000   	.CLOSE= ****** G
G.CMLD= ****** GX

. ABS.	000000	   000
      	000000	   001
PUREI 	000152	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2178 WORDS  ( 9 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:18
[45,10]OPTERR,[45,20]OPTERR/-SP=[45,30]RSXPAR,MPARAM,MCIOCH,OPTERR
PROCSI	MACRO M1108  05-DEC-77 23:30  PAGE 3


      1						.TITLE	PROCSI
      2						.IDENT	/X02.01/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION X02.01                                                                ;**NEW**
     23					;                                                                               ;**-1
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 6-FEB-73
     29					;	C.A. D'ELIA	04-OCT-73	003
     30					;	C.A. D'ELIA	15-NOV-73	007
     31					;	C.A. D'ELIA	22-MAR-74	014
     32					;	H.A. NICHOLS	18-JUN-74	017
     33					;	C.A. D'ELIA	01-NOV-75	022	(CREF)                          ;**NEW**
     34					;
     35					;
     36					;
     37
     38						.MCALL	CALL,CSI$	;++014
     39
     40	000000					CSI$
     41
     42
     43
     44	000000					PURE	PUREI,I		;++017
     45
     46	000000				PROCSI::			;++003 PROCESS SWTICHES
     47	000000	016502 	000024 			MOV	C.MKW1(R5),R2	;GET SWITCHES SPECD
     48	000004	012701 	000000'			MOV	#SWCLT,R1	;SWITCH CONTROL TABLE ADDR
     49	000010	032102 			PRO:	BIT	(R1)+,R2	;SWITCH SPECD?
     50	000012	001425 				BEQ	NXTCSI		;BRANCH IF NOT
     51	000014	012100 				MOV	(R1)+,R0	;GET ASCII SWITCH NAME
     52	000016	012103 				MOV	(R1)+,R3	;GET SIZE OF VALUE TABLE IN BYTES
     53	000020	012104 				MOV	(R1)+,R4	;ADDR OF VALUE TABLE
     54	000022	012705 	000000G			MOV	#LINBUF,R5	;ASM AREA FOR CHAR STRING
     55	000026	112725 	000040 			MOVB	#' ,(R5)+	;
     56	000032	111425 			NXTCHR:	MOVB	(R4),(R5)+	;MOVE CHAR FROM TABLE TO LINBUF
     57	000034	001003 				BNE	CHROK		;BRANCK IF NOT NULL
PROCSI	MACRO M1108  05-DEC-77 23:30  PAGE 3-1


     58	000036	005305 				DEC	R5
     59	000040	112725 	000040 			MOVB	#' ,(R5)+	;
     60	000044	105024 			CHROK:	CLRB	(R4)+		;REINIT VALTAB AS WE GO
     61
     62
     63						.IF NDF	PDPV45		;++014
     64
     65
     66	000046	005303 				DEC	R3		;++014 DECREMENT CHAR COUNT
     67	000050	001370 				BNE	NXTCHR		;++014 SKIP BACK IF COUNT NOT ZERO
     68
     69						.IFF			;++014
     70
     71						SOB	R3,NXTCHR	;REPEAT
     72
     73
     74						.ENDC			;++014 (PDPV45)
     75
     76
     77	000052	105015 				CLRB	(R5)
     78	000054					CALL	PROSW		;NOW ASM PROCESSES SWITCHES
     79	000060	001004 				BNE	NXCSI		;BRANCH IF NO ERROR
     80	000062	000261 				SEC			;SET CARRY
     81	000064	000404 				BR	NXEXT		;
     82	000066	062701 	000006 		NXTCSI:	ADD	#6,R1
     83	000072	005711 			NXCSI:	TST	(R1)		;MORE SWITCHES IN CNTRL TABLE
     84	000074	001345 				BNE	PRO		;YES, BRANCH
     85	000076	006000 			NXEXT:	ROR	R0		;SAVE CARRY INDICATOR
     86	000100	000167 	000000G			JMP	$OPSWT		;RELOAD SEGMENT IF NECESSARY
     87
     88					;
     89					; SWITCH PROCESSING STORAGE
     90					;
     91					; DEFINE SWITCH MASKS                                                           ;**NEW**
     92					;                                                                               ;**NEW**
     93
     94		000001 			LIMSK==1			;"LI" MASK
     95		000002 			NLMSK==2			;"NL" MASK
     96		000004 			PAMSK==4			;"PA" MASK
     97						.IF NDF XCREF		;++003
     98					CRMSK==10			;"CR" MASK
     99						.IFTF			;++003
    100		000020 			ENMSK==20			;"EN" MASK
    101		000040 			DSMSK==40			;"DS" MASK
    102		000100 			SPMSK==100			;"SP" MASK
    103						.IF NDF	XSML		;++007
    104		000200 			MLMSK==200			;++007 "ML" MASK
    105						.ENDC			;++007
    106
    107					;                                                                               ;**NEW**
    108					; SPECIFY NUMBER OF SWITCH VALUES                                               ;**NEW**
    109					;                                                                               ;**NEW**
    110					                                                                                ;**NEW**
    111		000017 			LIVALS=15.
    112						.IIF DF XLCTTM,LIVALS=LIVALS-1 ;++003
    113		000017 			NLVALS=LIVALS			;++003
    114						.IFT			;++003
PROCSI	MACRO M1108  05-DEC-77 23:30  PAGE 3-2


    115					CRVALS=4.			;++022 NUMBER OF /CR VALUES                     ;**NEW**
    116						.IFTF			;++003                                          ;**-1
    117		000013 			ENVALS=11.			;++022                                          ;**NEW**
    118						.IRP	$X,<ABS,PIC,CDR,FPT,PNC,LC,CRF>  ;++022                         ;**NEW**
    119						.IIF DF XED'$X,ENVALS=ENVALS-1 ;++003                                   ;**-2
    120						.ENDM			;++003
    121		000004 			DSVALS=ENVALS			;++003
    122
    123					;
    124					; SWITCH CONTROL PROCESSING TABLE
    125					;
    126
    127	000104					PURE	DPURE,D		;++017
    128	000000	000001 	044514 	000074 	SWCLT:	.WORD	LIMSK,"LI,LIVALS*4,LIADDR
	000006	000000'
    129	000010	000002 	046116 	000074 		.WORD	NLMSK,"NL,NLVALS*4,NLADDR
	000016	000074'
    130						.IFT			;++003
    131						.WORD	CRMSK,"CR,CRVALS*4,CRADDR
    132						.IFTF			;++003
    133	000020	000020 	047105 	000020 		.WORD	ENMSK,"EN,ENVALS*4,ENADDR
	000026	000170'
    134	000030	000040 	051504 	000020 		.WORD	DSMSK,"DS,DSVALS*4,DSADDR
	000036	000210'
    135	000040	000000 				.WORD	0
    136
    137					;
    138					; SWITCH VALUE STORAGE
    139					;
    140
    141	000000					.PSECT	IMPURE,D,RW	;++017
    142	000000				LIADDR::.BLKW	LIVALS*2	;
    143	000074				NLADDR::.BLKW	NLVALS*2	;
    144						.IFT			;++003
    145					CRADDR::.BLKW	CRVALS*2	;
    146						.ENDC			;++003
    147	000170				ENADDR::.BLKW	ENVALS*2	;
    148	000210				DSADDR::.BLKW	DSVALS*2	;
    149
    150		000001 				.END
PROCSI	MACRO M1108  05-DEC-77 23:30  PAGE 3-3
SYMBOL TABLE

BPMB  = 000020   	C.MKW1= 000024   	LINBUF= ****** GX	PRO     000010R     002	XEDCDR= 000000
CHROK   000044R     002	C.MKW2= 000026   	LINLEN= 000204   	PROCSI  000000RG    002	XEDCRF= 000000
CPL   = 000120   	C.SIZE= 000054   	LIVALS= 000017   	PROSW = ****** GX	XEDFPT= 000000
CS.DIF= 000002   	C.STAT= 000001   	LPP   = 000074   	RLDLEN= 000052   	XEDLC = 000000
CS.DVF= 000004   	C.SWAD= 000022   	LSTLEN= 000204   	RSX11M= 000000   	XEDPIC= 000000
CS.EQU= 000040   	C.TYPR= 000000   	MLMSK = 000200 G 	R$$11M= 000000   	XEDPNC= 000000
CS.INP= 000001   	DSADDR  000210RG    004	NLADDR  000074RG    004	SMLLEN= 000120   	XFCSQN= 000000
CS.MOR= 000020   	DSMSK = 000040 G 	NLMSK = 000002 G 	SPMSK = 000100 G 	XFLTG = 000000
CS.NMF= 000001   	DSVALS= 000004   	NLVALS= 000017   	SRCLEN= 000204   	XOPEXP= 000000
CS.OUT= 000002   	ENADDR  000170RG    004	NXCSI   000072R     002	STLLEN= 000100   	XSUBD = 000000
CS.WLD= 000010   	ENMSK = 000020 G 	NXEXT   000076R     002	SWCLT   000000R     003	XZERR = 000000
C.CMLD= 000002   	ENVALS= 000004   	NXTCHR  000032R     002	TTLLEN= 000040   	X45   = 000000
C.DEVD= 000006   	ILVL  = 000004   	NXTCSI  000066R     002	XBSRCH= 000000   	YQCMO = 000000
C.DIRD= 000012   	LIADDR  000000RG    004	OBJLEN= 000052   	XCREF = 000000   	$OPSWT= ****** GX
C.DSDS= 000006   	LIMSK = 000001 G 	PAMSK = 000004 G 	XEDABS= 000000   	$$    = 000067
C.FILD= 000016

. ABS.	000000	   000
      	000000	   001
PUREI 	000104	   002
DPURE 	000042	   003
IMPURE	000230	   004
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  964 WORDS  ( 4 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:12
[45,10]PROCSI,[45,20]PROCSI/-SP=[45,30]RSXPAR,MPARAM,PROCSI
PROPC	MACRO M1108  05-DEC-77 23:30  PAGE 5


      1						.TITLE	PROPC
      2						.IDENT	/X05.04/
      3
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X05.04
     24					;
     25					; B. BOWERING MAIN AUTHOR
     26					;
     27					; MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 20-JAN-73
     30					;	C.A. D'ELIA	22-SEP-73	001
     31					;	C.A. D'ELIA	22-SEP-73	002
     32					;	C.A. D'ELIA	04-OCT-73	003
     33					;	C.A. D'ELIA	12-NOV-73	006
     34					;	C.A. D'ELIA	25-JAN-74	011
     35					;	H.A. NICHOLS	18-JUN-74	017
     36					;	C.A. D'ELIA	21-JAN-75	018
     37					;	C.A. D'ELIA	20-OCT-75	CD021	(VIRT MEMORY)
     38					;	C.A. D'ELIA	09-FEB-76	CD022	(CREF)
     39					;	C.A. D'ELIA	30-JUL-76	CD024	(INSTR STACK OVERFLOW)
     40					;
     41					;
     42					; **--PROPC--OPCODE PROCESSOR
     43					;
     44					;
     45					;
     46
     47	000000					PURE	PUREI,I		;++017
     48	000000				PROPC::				;REF LABEL
     49	000000	012704 	000000G			MOV	#MODE,R4	;POINT TO MODE
     50	000004	011401 				MOV	(R4),R1		;LEAVE RESULT IN R1
     51	000006	005024 				CLR	(R4)+		;SET TO ZERO, POINT TO VALUE
     52	000010	012702 	000000G			MOV	#CLCLOC,R2	;POINT R2 TO LOCATION COUNTER
     53	000014	032701 	100000G			BIT	#100000+DFLGEV,R1	;OP CODE OR EVEN DIRECTIVE?
     54	000020	001407 				BEQ	1$		;  NO
     55	000022	032712 	000001 			BIT	#1,(R2)		;YES, CURRENTLY EVEN?
     56	000026	001404 				BEQ	1$		;  YES
     57	000030	005212 				INC	(R2)		;NO, MAKE IT EVEN
PROPC	MACRO M1108  05-DEC-77 23:30  PAGE 5-1


     58	000032					ERROR	B		;  AND FLAG ERROR
     59	000040	032701 	000000G		1$:	BIT	#DFLGBM,R1	;BYTE MODE DIRECTIVE?
     60	000044	001402 				BEQ	2$		;  NO
     61	000046	005267 	000000G			INC	BYTMOD		;YES, SET FLAG
     62	000052	005701 			2$:	TST	R1		;OP-CODE?
     63	000054	100404 				BMI	10$		;  YES
     64	000056	011446 				MOV	(R4),-(SP)	;NO, DIRECTIVE.
     65	000060	005014 				CLR	(R4)		;CLEAR VALUE
     66	000062	005003 				CLR	R3		;START WITH R3=0
     67					 										; CD022
     68					 										; CD022
     69						.IF NDF	XCREF		;						; CD022
     70					 										; CD022
     71						CLRB	CRFDFL		;CLEAR DESTRUCTIVE REF FLAG			; CD022
     72					 										; CD022
     73						.IFTF			;						; CD022
     74					 										; CD022
     75	000064	000136 				JMP	@(SP)+		;GO TO PROPER HANDLER
     76	000066	012767 	077776 	000000G	10$:	MOV	#077776,PCRCNT	;LIST LOCATION OF FIRST WORD ONLY
     77	000074					STCODE			;STUFF BASIC VALUE
     78	000100	016746 	000000G			MOV	VALUE,-(SP)	;SAVE BASIC OPCODE VALUE			; CD021
     79	000104	011667 	000000G			MOV	(SP),$OPCOD	;AND MAKE A WORKING COPY OF IT			; CD021
     80					 										; CD022
     81						.IFT			;						; CD022
     82					 										; CD022
     83						MOVB	R1,CRFDFL	;SAVE DESTRUCTIVE REF FLAG			; CD022
     84					 										; CD022
     85						.IFTF									;**-2
     86					 										; CD022
     87	000110	000301 				SWAB	R1
     88	000112	042701 	177600 			BIC	#177600,R1	;CLEAR HIGH ORDER BITS
     89	000116	010167 	000000G			MOV	R1,OPCLAS	;SAVE CLASS
     90	000122	006301 				ASL	R1
     91	000124	006301 				ASL	R1		;FOUR BYTES PER TABLE ENTRY
     92	000126	005046 				CLR	-(SP)		;SET A STOPPER
     93	000130	016146 	000002'			MOV	OPJTBL+2(R1),-(SP)	;STACK SECOND ARG
     94	000134	001001 				BNE	11$		;BRANCH IF TWO ARGS
     95	000136	005726 				TST	(SP)+		;ONE ARG, PRUNE TERMINATOR
     96	000140	016101 	000000'		11$:	MOV	OPJTBL(R1),R1	;SET THE FIRST ARGUMENT
     97	000144	001422 				BEQ	14$		;BRANCH IF NO ARGS
     98	000146	010146 			12$:	MOV	R1,-(SP)	;SAVE A COPY OF THE ARG
     99	000150	000316 				SWAB	(SP)		;SHIFT COUNT TO RIGHT HALF
    100	000152	042701 	177400 			BIC	#177400,R1	;ISOLATE LOW BYTE
    101	000156					TSTARG			;COMMA TEST
    102	000162	005000 				CLR	R0		;FUNCTION REGISTER
    103	000164	004761 	000250'			CALL	OPJBAS(R1)	;CALL PROPER ROUTINE
    104					 										; CD022
    105						.IFT
    106					 										; CD022
    107						ROLB	CRFDFL		;SHIFT DESTRUCTIVE REF FLAG			; CD022
    108					 										; CD022
    109						.ENDC									;**-1
    110					 										; CD022
    111					 										; CD022
    112	000170	006300 			13$:	ASL	R0		;SHIFT RESULT
    113	000172	105316 				DECB	(SP)		;COUNT IN SP, RH
    114	000174	002375 				BGE	13$
PROPC	MACRO M1108  05-DEC-77 23:30  PAGE 5-2


    115	000176	006000 				ROR	R0		;WE WENT ONE TOO MANY
    116	000200	050067 	000000G			BIS	R0,$OPCOD	;SET ADDRESS MODE BITS INTO OPCODE		; CD021
    117	000204	005726 				TST	(SP)+		;PRUNE WORK ENTRY				;**-3
    118	000206	004767 	000000G			CALL	ZAPCPX		;++003 CLR CPXROL OF FIRST ARGS
    119	000212	012601 			14$:	MOV	(SP)+,R1	;GET NEXT ARG FROM STACK
    120	000214	001354 				BNE	12$		;BRANCH IF NOT TERMINATOR
    121	000216	026726 	000000G			CMP	$OPCOD,(SP)+	;HAS BASIC OPCODE BEEN MODIFIED?		; CD021
    122	000222	001411 				BEQ	20$		;IF EQ NO					; CD021
    123	000224	016701 	000000G			MOV	BASCOD,R1	;GET VIRT LOCN OF START OF LIST			; CD021
    124	000230	004767 	000000G			CALL	$CVRL		;GET ITS REAL ADDR IN R0			; CD021
    125	000234	016760 	000000G	000000C		MOV	$OPCOD,<VALUE-SYMBOL+2>(R0)  ;UPDATE OPCODE VALUE		; CD021
    126	000242	004767 	000000G			CALL	$WRMPG		;MARK PAGE DIRTY				; CD021
    127	000246				20$:				;						; CD021
    128
    129						.IF NDF	XZERR
    130					 										; CD021
    131						TST	PASS		;IS THIS FIRST PASS				; CD021
    132						BEQ	23$		;IF EQ YES--NO ERROR MSG OUTPUT			; CD021
    133						MOV	$OPCOD,R0	;COPY INSTRUCTION INTO R0			; CD021
    134						MOV	R0,R1								;**-3
    135						BIC	#000007,R1
    136						CMP	#000120,R1	;  JMP (R)+
    137						BEQ	22$
    138						BIC	#000700,R1
    139						CMP	#004020,R1	;  JSR  X,(R1)+
    140						BEQ	22$
    141						MOV	R0,R1
    142						BIT	#007000,R1	;FIRST ARG TYPE 0?
    143						BNE	23$		;  NO, OK
    144						BIC	#100777,R1
    145						BEQ	23$
    146						CMP	#070000,R1	;DOUBLE ADDRESS TYPE?
    147						BEQ	23$		;  NO
    148						MOV	R0,R1
    149						BIC	#170017,R1
    150						CMP	#000760,R1	;  MOV PC,[@]X(R)
    151						BEQ	22$
    152						BIC	#177717,R1
    153						CMP	#000020,R1	;  (R)+
    154						BEQ	21$
    155						CMP	#000040,R1	;  -(R)
    156						BNE	23$
    157					21$:	MOV	R0,R1
    158						ROL	R1
    159						ROL	R1
    160						SWAB	R1
    161						SUB	R0,R1
    162						BIT	#000007,R1	;  R1=R2
    163						BNE	23$
    164					22$:	ERROR	Z
    165					23$:
    166						.ENDC
    167
    168	000246	000207 				RETURN			;++006
PROPC	MACRO M1108  05-DEC-77 23:30  PAGE 6


    170						.MACRO	GENOPJ	NUMBER,SUBR1,SC1,SUBR2,SC2	;OP CODE JUMP TABLE
    171						.GLOBL	OPCL'NUMBER
    172					OPCL'NUMBER=	<.-OPJTBL>/4
    173						.IF NB	<SUBR1>								; CD024
    174						.IIF IDN <SUBR1>,<AEXP>,	.BYTE	AEXPI-OPJBAS			; CD024
    175						.IIF DIF <SUBR1>,<AEXP>,	.BYTE	SUBR1-OPJBAS			; CD024
    176						.ENDC									; CD024
    177						.IIF  B <SUBR1>,	.BYTE	0					;**-1
    178						.BYTE	SC1+0
    179						.IF NB	<SUBR2>								; CD024
    180						.IIF IDN <SUBR2>,<AEXP>,	.BYTE	AEXPI-OPJBAS			; CD024
    181						.IIF DIF <SUBR2>,<AEXP>,	.BYTE	SUBR2-OPJBAS			; CD024
    182						.ENDC									; CD024
    183						.IIF  B <SUBR2>,	.BYTE	0					;**-1
    184						.BYTE	SC2+0
    185						.ENDM
    186
    187	000250					PURE	DPURE,D		;++017
    188	000000				OPJTBL:				;OP CODE JUMP TABLE
    189	000000					GENOPJ	00
    190	000004					GENOPJ	01,	AEXP
    191	000010					GENOPJ	02,	AEXP,	6,	AEXP
    192	000014					GENOPJ	03,	REGEXP
    193	000020					GENOPJ	04,	BROP
    194	000024					GENOPJ	05,	REGEXP,	6,	AEXP
    195	000030					GENOPJ	06,	TRAPOP
    196
    197						.IF NDF	X40!X45		;++002
    198	000034					GENOPJ	07,	AEXP,	0,	REGEXP,	6
    199	000040					GENOPJ	08,	REGEXP,	6,	SOBOP
    200	000044					GENOPJ	09,	AEXP,	0,	REGEXP,	6
    201	000050					GENOPJ	10,	MARKOP
    202						.IF NDF	X45		;++002
    203						GENOPJ	11,	AEXP,	0,	DRGEXP,	6
    204						GENOPJ	12,	DRGEXP,	6,	AEXP,	0
    205						GENOPJ	13,	SPLOP
    206						GENOPJ	14,	AEXP,	0,	DRGEXP,	6
    207						.ENDC
    208						.ENDC			;++002
    209	000054					PURE	PUREI,I		;++017
    210	000250	000207 			OPJBAS:	RETURN			;INDEX BASE FOR FOLLOWING ROUTINES
    211	000252				REGEXP:	ABSEXP			;EVALUTE ABSOLUTE
    212	000256	032700 	177770 			BIT	#177770,R0	;ANY OVERFLOW?
    213	000262	001405 				BEQ	1$		;  NO
    214	000264					ERROR	R		;YES, FLAG ERROR
    215	000272	042700 	177770 			BIC	#177770,R0	;CLEAR OVERFLOW
    216	000276	000207 			1$:	RETURN
    217
    218						.ENABL	LSB		;++018
    219	000300				BROP:				;BRANCH DISPLACEMENT TYPE
    220	000300					RELEXP
    221	000304	126767 	000000G	000000G		CMPB	SECTOR,CLCSEC
    222	000312	001010 				BNE	2$
    223	000314	166700 	000000G			SUB	CLCLOC,R0
    224	000320	006200 				ASR	R0
    225	000322	103404 				BCS	2$
    226	000324	005300 				DEC	R0
PROPC	MACRO M1108  05-DEC-77 23:30  PAGE 6-1


    227	000326	110003 				MOVB	R0,R3		;EXTEND SIGN
    228	000330	020003 				CMP	R0,R3		;PROPER?
    229	000332	001405 				BEQ	3$		;  YES
    230	000334				BRERR:				;++018
    231	000334				2$:	ERROR	A
    232	000342	012700 	000377 			MOV	#000377,R0
    233	000346	042700 	177400 		3$:	BIC	#177400,R0	;++018 INSURE HIGH BITS ARE CLEAR
    234	000352	000207 				RETURN
    235						.DSABL	LSB		;++018
    236
    237	000354				TRAPOP:				;TRAP TYPE
    238	000354					SETXPR			;SET EXPRESSION REGISTERS
    239	000360	011446 				MOV	(R4),-(SP)	;SAVE THE VALUE
    240	000362					EXPR			;EVALUATE THE EXPRESSION (NULL OK)
    241	000366	005267 	000000G			INC	BYTMOD		;TREAT AS BYTE
    242	000372					SETIMM
    243	000376	121227 	000200 			CMPB	(R2),#200	;ABSOLUTE?
    244	000402	001003 				BNE	1$		;  NO
    245	000404	005726 				TST	(SP)+		;YES, PRUNE STACK
    246	000406	011400 				MOV	(R4),R0		;VALUE TO MERGE
    247	000410	000207 				RETURN
    248	000412				1$:	ZAP	CODLST		;EMPTY GENERATED CODE LIST			; CD021
    249	000422					STCODE			;STORE ADDRESS					;**-1
    250	000426	012713 	100000 			MOV	#100000,(R3)	;SET FOR ABSOLUTE BYTE
    251	000432	000316 				SWAB	(SP)
    252	000434	012614 				MOV	(SP)+,(R4)	;SET ORIGINAL VALUE
    253	000436					STCODE
    254	000442	005000 				CLR	R0
    255	000444	000207 				RETURN
PROPC	MACRO M1108  05-DEC-77 23:30  PAGE 7


    257						.IF NDF	X40!X45		;++002
    258						.IF NDF	X45
    259
    260					DRGEXP:				;DOUBLE REGISTER EXPRESSION
    261						CALL	REGEXP		;EVALUATE NORMAL
    262						MOV	#177774,R3	;TEST FOR OVERFLOW
    263						BR	MASKR3
    264
    265						.IFTF			;++002
    266
    267	000446				SOBOP:				;SOB OPERATOR
    268	000446	004767 	177626 			CALL	BROP		;FREE-LOAD OFF BRANCH OPERATOR
    269	000452	110000 			10$:	MOVB	R0,R0		;++018 EXTEND SIGN
    270	000454	005400 				NEG	R0		;POSITIVE FOR BACKWARDS
    271	000456	003005 				BGT	MASKB6		;++018 IF BKWDS BRANCH, MASK TO SIX BITS
    272	000460	004767 	177650 			CALL	BRERR		;++018 ELSE, TREAT AS ERROR
    273	000464	000772 				BR	10$		;++018 PROCESS DEFAULT BRANCH ADDR
    274
    275						.IFT			;++002
    276
    277					SPLOP:				;SPL TYPE
    278						ABSEXP
    279						MOV	#177770,R3	;ONLY THREE BITS ALLOWED
    280						BR	MASKR3
    281
    282						.IFTF			;++002
    283
    284	000466				MARKOP:				;MARK OPERATOR
    285	000466					ABSEXP			;EVALUATE ABSOLUTE
    286	000472	012703 	177700 		MASKB6:	MOV	#177700,R3	;SET TO MASK HIGH ORDER
    287	000476	030300 			MASKR3:	BIT	R3,R0		;OVERFLOW?
    288	000500	001404 				BEQ	1$		;  NO
    289	000502					ERROR	T		;YES, FLAG TRUNCATION ERROR
    290	000510	040300 				BIC	R3,R0		;CLEAR EXCESS
    291	000512	000207 			1$:	RETURN
    292
    293						.ENDC			;++002
    294						.ENDC
PROPC	MACRO M1108  05-DEC-77 23:30  PAGE 8


    296	000514				AEXP::	SAVREG			;SAVE REGISTERS
    297	000520				AEXPI:				;INTERNAL CALL ENTRY POINT			; CD024
    298	000520					SETXPR			;  AND SET "EXPRESSION" TYPE
    299	000524	005267 	000000G			INC	EXPFLG
    300	000530	005046 				CLR	-(SP)		;ACCUMULATE ON TOP OF STACK
    301	000532				AEXP02:	CHSCAN	AEXTBL		;TEST FOR OPERATOR
    302	000542	001456 				BEQ	AEXP22		;  NO
    303	000544	000110 				JMP	(R0)		;YES, GO TO IT
    304
    305	000546					PURE	DPURE,D		;++017
    306	000054				AEXTBL:				;ADDRESS EXPRESSION TABLE
    307	000054					GCHTBL	CH.IND,	AEXP03	;  "@"
    308	000060					GCHTBL	CH.HSH,	AEXP06	;  "#"
    309	000064					GCHTBL	CH.SUB,	AEXP10	;  "-"
    310	000070					GCHTBL	CH.LP,	AEXP12	;  "("
    311	000074	000000 				.WORD	0		;TERMINATOR
    312	000076					PURE	PUREI,I		;++017
    313
    314	000546	005716 			AEXP03:	TST	(SP)		;"@", SECOND TIME AROUND?
    315	000550	001403 				BEQ	4$		;  NO
    316	000552					ERROR	Q		;  YES
    317	000560	052716 	000010 		4$:	BIS	#AM.DEF,(SP)	;SET IT
    318					 										; CD022
    319					 										; CD022
    320						.IF NDF	XCREF		;						; CD022
    321					 										; CD022
    322						BICB	#200,CRFDFL	;NO DESTRUCT REF ON SIMPLE INDIRECT		; CD022
    323					 										; CD022
    324						.ENDC			;						; CD022
    325					 										; CD022
    326					 										; CD022
    327	000564	000762 				BR	AEXP02
    328	000566				AEXP06:				;LITERAL (#)
    329						.IF NDF	XFLTG
    330						CMP	#OPCL11,OPCLAS	;CLASS 11?
    331						BNE	8$		;  NO
    332						CALL	FLTG1W		;YES, TRY FOR ONE-WORD FLOATING
    333						BNE	9$		;BRANCH IF OK
    334						.ENDC
    335	000566				8$:	GLBEXP			;EVALUATE EXPRESSION
    336	000572	052716 	000027 		9$:	BIS	#AM.IMM,(SP)	;SET BITS
    337	000576	000510 				BR	AEXP32		;USE COMMON EXIT
    338	000600				AEXP10:				;AUTO-DECREMENT (-)
    339	000600	020527 	000050 			CMP	R5,#CH.LP	;FOLLOWED BY "("?
    340	000604	001033 				BNE	AEXP20		;  NOT A CHANCE
    341					 										; CD022
    342					 										; CD022
    343						.IF NDF	XCREF		;						; CD022
    344					 										; CD022
    345						BISB	#200,CRFDFL	;DESTRUCT REF ON AUTO-DECREMENT			; CD022
    346					 										; CD022
    347						.ENDC			;						; CD022
    348					 										; CD022
    349					 										; CD022
    350	000606	004767 	000224 			CALL	AEXPLP		;PROCESS PARENS
    351	000612	052716 	000040 			BIS	#AM.DEC,(SP)
    352	000616	000505 				BR	AEXP36
PROPC	MACRO M1108  05-DEC-77 23:30  PAGE 8-1


    353	000620				AEXP12:				; "("
    354					 										; CD022
    355						.IF NDF	XCREF		;						; CD022
    356					 										; CD022
    357						TST	PASS		;IS THIS FIRST PASS?				; CD022
    358						BEQ	10$		;IF EQ YES--NO CREF OUTPUT			; CD022
    359						TSTB	CRFFIL		;IS THERE A CREF OUTPUT FILE?			; CD022
    360						BEQ	10$		;IF EQ NO					; CD022
    361						BICB	#200,CRFDFL	;ASSUME SIMPLE INDIRECT (NON-DESTRUCT)		; CD022
    362						CALL	GETSYM		;GET THE REGISTER SYMBOL			; CD022
    363						CALL	GETNB		;SKIP THE RIGHT PAREN				; CD022
    364						CMP	R5,#'+		;IS THE NEXT CHARACTER A '+'?			; CD022
    365						BNE	5$		;IF NE NO					; CD022
    366						BISB	#200,CRFDFL	;DESTRUCT REF ON AUTO-INCREMENT			; CD022
    367					5$:	CALL	SETSYM		;RESTORE LINE SCAN BEFORE SYMBOL		; CD022
    368					10$:				;						; CD022
    369					 										; CD022
    370						.ENDC			;						; CD022
    371					 										; CD022
    372					 										; CD022
    373	000620	004767 	000216 			CALL	AEXPL1		;EVALUATE REGISTER
    374	000624	020527 	000053 			CMP	R5,#CH.ADD	;AUTO-INCREMENT (+)?
    375	000630	001005 				BNE	14$		;  NO
    376	000632					GETNB			;YES, POLISH IT OFF
    377	000636	052716 	000020 			BIS	#AM.INC,(SP)	;SET BITS
    378	000642	000473 				BR	AEXP36
    379	000644	032716 	000010 		14$:	BIT	#AM.DEF,(SP)	;INDIRECT SEEN?
    380	000650	001003 				BNE	16$		;  YES
    381	000652	052716 	000010 			BIS	#AM.DEF,(SP)	;NO, SET BIT
    382	000656	000465 				BR	AEXP36
    383	000660	005013 			16$:	CLR	(R3)		;MODE
    384	000662	005014 				CLR	(R4)		;  AND VALUE
    385	000664	050016 				BIS	R0,(SP)		;++001 SET THE REGISTER VALUE
    386	000666	052716 	000060 			BIS	#AM.NDX,(SP)	;++001 SET INDEXED ADDRESS MODE
    387	000672	000452 				BR	AEXP32		;++001 BRANCH TO STORE CODE
    388	000674				AEXP20:	SETSYM			;AUTO-DEC FAILURE, POINT TO -
    389	000700				AEXP22:	GLBEXP			;GET AN EXPRESSION
    390	000704	020527 	000050 			CMP	R5,#CH.LP	;INDEXED?
    391	000710	001421 				BEQ	24$		;  YES
    392	000712	032713 	000001 			BIT	#REGFLG,(R3)	;FLAGS
    393	000716	001045 				BNE	AEXP36
    394						.IF NDF	XEDPIC!XEDAMA
    395	000720	005716 				TST	(SP)
    396	000722	001007 				BNE	23$
    397						.IF NDF	XEDPIC
    398						BIT	#ED.PIC,EDMASK
    399						BNE	1$
    400						BIT	#GLBFLG,(R3)
    401						BNE	2$
    402						CMPB	(R2),CLCSEC
    403						BEQ	23$
    404						BR	2$
    405					1$:
    406						.ENDC
    407						.IF NDF	XEDAMA
    408	000724	032767 	000000G	000000G		BIT	#ED.AMA,EDMASK	;ABSOLUTE MODE REQUESTED?
    409	000732	001003 				BNE	23$		;  NO
PROPC	MACRO M1108  05-DEC-77 23:30  PAGE 8-2


    410						.ENDC
    411	000734	052716 	000037 		2$:	BIS	#AM.IMM!AM.DEF,(SP)	;OK, SET ABS MODE
    412	000740	000427 				BR	AEXP32
    413						.ENDC
    414
    415	000742	052716 	000067 		23$:	BIS	#AM.REL,(SP)	;NO
    416	000746					SETDSP			;SET DISPLACEMENT
    417	000752	000424 				BR	AEXP34
    418	000754	032713 	000001 		24$:	BIT	#REGFLG,(R3)	;FLAGS
    419	000760	001405 				BEQ	26$
    420	000762					ERROR	R
    421	000770	042713 	000001 			BIC	#REGFLG,(R3)	;FLAGS
    422	000774				26$:	SETIMM			;++001 SET IMMEDIATE MODE
    423	001000					STCODE			;++001 STORE IN CODE ROLL
    424					 										; CD022
    425					 										; CD022
    426						.IF NDF	XCREF		;						; CD022
    427					 										; CD022
    428						BICB	#200,CRFDFL	;NO DESTRUCT REF ON INDEXED REG			; CD022
    429					 										; CD022
    430						.ENDC			;						; CD022
    431					 										; CD022
    432					 										; CD022
    433	001004	004767 	000026 			CALL	AEXPLP		;PROCESS INDEX
    434	001010	050016 				BIS	R0,(SP)		;++001 SET THE REGISTER VALUE
    435	001012	052716 	000060 			BIS	#AM.NDX,(SP)
    436	001016	000404 				BR	AEXP35		;++001 SKIP THE CODE STORE
    437	001020				AEXP32:	SETIMM
    438	001024				AEXP34:	STCODE
    439	001030				AEXP35:				;++001
    440	001030	005000 				CLR	R0
    441	001032	052600 			AEXP36:	BIS	(SP)+,R0
    442	001034	000207 				RETURN
    443	001036				AEXPLP:				;AEXP PAREN PROCESSOR
    444	001036					GETNB			;BYPASS PAREN
    445	001042	004767 	177204 		AEXPL1:	CALL	REGEXP		;GET A REGISTER EXPRESSION
    446	001046	020527 	000051 			CMP	R5,#CH.RP	;HAPPY ENDING ")"?
    447	001052	001002 				BNE	1$		;  NO
    448	001054	000167 	000000G			JMP	GETNB		;YES, BYPASS AND EXIT
    449	001060				1$:	ERROR	Q		;NO
    450	001066	000207 				RETURN
    451
    452		000001 				.END
PROPC	MACRO M1108  05-DEC-77 23:30  PAGE 8-3
SYMBOL TABLE

ABSEXP= ****** GX	CH.DOL= 000044   	CSTREL= 000040   	LSTLEN= 000204   	RLDT17= 000017
AEXP    000514RG    002	CH.DOT= 000056   	CSTTYP= 000200   	LST.KB= 000001   	RSX11M= 000000
AEXPI   000520R     002	CH.EQU= 000075   	DEFFLG= 000010   	LST.LP= 000002   	R$$11M= 000000
AEXPLP  001036R     002	CH.HSH= 000043   	DFGFLG= 000020   	MARKOP  000466R     002	SAVREG= ****** GX
AEXPL1  001042R     002	CH.IND= 000100   	DFLGBM= ****** GX	MASKB6  000472R     002	SECTOR= ****** GX
AEXP02  000532R     002	CH.IOR= 000041   	DFLGEV= ****** GX	MASKR3  000476R     002	SETDSP= ****** GX
AEXP03  000546R     002	CH.LAB= 000074   	DIG.0 = 000060   	MDFFLG= 000004   	SETIMM= ****** GX
AEXP06  000566R     002	CH.LP = 000050   	DIG.9 = 000071   	MODE  = ****** GX	SETSYM= ****** GX
AEXP10  000600R     002	CH.MUL= 000052   	EDMASK= ****** GX	OBJLEN= 000052   	SETXPR= ****** GX
AEXP12  000620R     002	CH.PCT= 000045   	ED.AMA= ****** GX	OPCLAS= ****** GX	SMLLEN= 000120
AEXP20  000674R     002	CH.QM = 000077   	ERRBTS= ****** GX	OPCL00= 000000 G 	SOBOP   000446R     002
AEXP22  000700R     002	CH.QTM= 000042   	ERR.A = ****** GX	OPCL01= 000001 G 	SPACE = 000040
AEXP32  001020R     002	CH.RAB= 000076   	ERR.B = ****** GX	OPCL02= 000002 G 	SRCLEN= 000204
AEXP34  001024R     002	CH.RP = 000051   	ERR.Q = ****** GX	OPCL03= 000003 G 	STCODE= ****** GX
AEXP35  001030R     002	CH.SMC= 000073   	ERR.R = ****** GX	OPCL04= 000004 G 	STLLEN= 000100
AEXP36  001032R     002	CH.SUB= 000055   	ERR.T = ****** GX	OPCL05= 000005 G 	SYMBOL= ****** GX
AEXTBL  000054R     003	CH.UAR= 000136   	EXPFLG= ****** GX	OPCL06= 000006 G 	TAB   = 000011
AM.DEC= 000040   	CH.XCL= 000047   	EXPR  = ****** GX	OPCL07= 000007 G 	TRAPOP  000354R     002
AM.DEF= 000010   	CLCLOC= ****** GX	FF    = 000014   	OPCL08= 000010 G 	TSTARG= ****** GX
AM.IMM= 000027   	CLCSEC= ****** GX	GETNB = ****** GX	OPCL09= 000011 G 	TTLLEN= 000040
AM.INC= 000020   	CODLST= ****** GX	GLBEXP= ****** GX	OPCL10= 000012 G 	VALUE = ****** GX
AM.NDX= 000060   	CPL   = 000120   	GLBFLG= 000100   	OPJBAS  000250R     002	VT    = 000013
AM.PC = 000007   	CPXADD= 000001   	GSDT00= 000000   	OPJTBL  000000R     003	XBSRCH= 000000
AM.REL= 000067   	CPXAND= 000005   	GSDT01= 000400   	PCRCNT= ****** GX	XCREF = 000000
ASTFLG= 000114   	CPXCOM= 000011   	GSDT02= 001000   	PROPC   000000RG    002	XEDABS= 000000
BASCOD= ****** GX	CPXCON= 000020   	GSDT03= 001400   	PSTFLG= 000050   	XEDCDR= 000000
BLKT01= 000001   	CPXDIV= 000004   	GSDT04= 002000   	REGEXP  000252R     002	XEDCRF= 000000
BLKT02= 000002   	CPXFLG= 000200   	GSDT05= 002400   	REGFLG= 000001   	XEDFPT= 000000
BLKT03= 000003   	CPXGLB= 000016   	GSDT06= 003000   	RELEXP= ****** GX	XEDLC = 000000
BLKT04= 000004   	CPXIOR= 000006   	ILVL  = 000004   	RELFLG= 000040   	XEDPIC= 000000
BLKT05= 000005   	CPXMUL= 000003   	LBLFLG= 000002   	RLDLEN= 000052   	XEDPNC= 000000
BLKT06= 000006   	CPXNEG= 000010   	LET.A = 000101   	RLDT00= 000000   	XFCSQN= 000000
BPMB  = 000020   	CPXOPC= 000010   	LET.B = 000102   	RLDT01= 000001   	XFLTG = 000000
BRERR   000334R     002	CPXREL= 000017   	LET.C = 000103   	RLDT02= 000002   	XOPEXP= 000000
BROP    000300R     002	CPXSDS= 000013   	LET.D = 000104   	RLDT03= 000003   	XSUBD = 000000
BYTMOD= ****** GX	CPXSTO= 000012   	LET.E = 000105   	RLDT04= 000004   	XZERR = 000000
CHSCAN= ****** GX	CPXSUB= 000002   	LET.F = 000106   	RLDT05= 000005   	X45   = 000000
CH.ADD= 000053   	CR    = 000015   	LET.G = 000107   	RLDT06= 000006   	YQCMO = 000000
CH.AND= 000046   	CSTACC= 000020   	LET.O = 000117   	RLDT07= 000007   	ZAP   = ****** GX
CH.BSL= 000134   	CSTALO= 000004   	LET.Z = 000132   	RLDT10= 000010   	ZAPCPX= ****** GX
CH.COL= 000072   	CSTFLG= 000050   	LF    = 000012   	RLDT11= 000011   	$CVRL = ****** GX
CH.COM= 000054   	CSTGBL= 000100   	LINLEN= 000204   	RLDT15= 000015   	$OPCOD= ****** GX
CH.DIV= 000057   	CSTMEM= 000001   	LPP   = 000074   	RLDT16= 000016   	$WRMPG= ****** GX

. ABS.	000000	   000
      	000000	   001
PUREI 	001070	   002
DPURE 	000076	   003
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  3495 WORDS  ( 14 PAGES)
DYNAMIC MEMORY:  4160 WORDS  ( 16 PAGES)
ELAPSED TIME:  00:00:37
[45,10]PROPC,[45,20]PROPC/-SP=[45,30]RSXPAR,MPARAM,GENMC,FLGDF,PROPC
PROSW	MACRO M1108  05-DEC-77 23:31  PAGE 4


      1						.TITLE	PROSW
      2						.IDENT	/04/
      3
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION 04
     23					;
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 10-FEB-73
     29					;	C.A. D'ELIA	04-OCT-73	003
     30					;	H.A. NICHOLS	18-JUN-74	017
     31					;
     32					;
     33					; LOCAL MACROS
     34					;
     35					;THE MACRO "GENSWT" IS USED TO SPECIFY  A COMMAND
     36					;STRING SWITCH (1ST ARGUMENT) AND THE ADDRESS OF
     37					;THE ROUTINE TO BE CALLED WHEN ENCOUNTERED (2ND ARG).
     38					;
     39						.MACRO	GENSWT	MNE,ADDR,?LABEL
     40					LABEL:	.ASCIZ	/MNE/
     41					.	=	LABEL+2		;TRIM TO ONE WORD
     42						.WORD	ADDR
     43						.ENDM
     44
     45	000000					PURE	SWTSEC,D,GBL	;++017
     46	000000				SWTBAS::			;REF LABEL
     47						.IF NDF	XCREF
     48						GENSWT	CR,CRFSET
     49						.ENDC
     50
     51	000000					GENSWT	DS,DSABL
     52	000004					GENSWT	EN,ENABL
     53	000010					GENSWT	LI,LIST
     54	000014					GENSWT	NL,NLIST
     55	000020				SWTTOP::			;REF LABEL
     56	000020					PURE	PUREI,I		;++017
     57
PROSW	MACRO M1108  05-DEC-77 23:31  PAGE 4-1


     58					;+
     59					; **PROSW-PROCESS SWITCH
     60					;
     61					; INPUTS:
     62					;
     63					;	R0=TWO CHARACTER ASCII SWITCH.
     64					;-
     65
     66	000000				PROSW::	SAVREG			;SAVE REGISTERS
     67	000004					SETXPR			;SET EXPRESSION-TYPE REGISTERS
     68	000010	010021 				MOV	R0,(R1)+	;SET "SYMBOL"
     69	000012	004767 	000000G			CALL	XCTLIN		;ZERO LINE-ORIENTED FLAGS
     70	000016					SCANW	SWTROL		;SCAN FOR SWITCH
     71	000026	001420 				BEQ	1$		;  NOT FOUND, EXIT ZERO
     72	000030	005013 				CLR	(R3)		;CLEAR "MODE"
     73	000032	011114 				MOV	(R1),(R4)	;ADDRESS TO "VALUE"
     74	000034	012767 	000000G	000000G		MOV	#LINBUF,CHRPNT	;POINT TO START OF LINE
     75	000042					SETNB			;SET R5
     76	000046	005267 	000000G			INC	EXMFLG		;FLAG EXEC MODE
     77	000052	004767 	000000G			CALL	PROPC		;PROCESS AS OP-CODE
     78	000056	005000 				CLR	R0		;ASSUME ERROR
     79	000060	056705 	000000G			BIS	ERRBTS,R5	;ERROR OR NOT TERMINATOR?
     80	000064	001001 				BNE	1$		;  YES, ERROR
     81	000066	005100 				COM	R0		;OK, SET .NE. ZERO
     82	000070	000207 			1$:	RETURN
     83
     84		000001 				.END
PROSW	MACRO M1108  05-DEC-77 23:31  PAGE 4-2
SYMBOL TABLE

AM.DEC= 000040   	CH.MUL= 000052   	CSTGBL= 000100   	LET.F = 000106   	RLDT17= 000017
AM.DEF= 000010   	CH.PCT= 000045   	CSTMEM= 000001   	LET.G = 000107   	RSX11M= 000000
AM.IMM= 000027   	CH.QM = 000077   	CSTREL= 000040   	LET.O = 000117   	R$$11M= 000000
AM.INC= 000020   	CH.QTM= 000042   	CSTTYP= 000200   	LET.Z = 000132   	SAVREG= ****** GX
AM.NDX= 000060   	CH.RAB= 000076   	DEFFLG= 000010   	LF    = 000012   	SCANW = ****** GX
AM.PC = 000007   	CH.RP = 000051   	DFGFLG= 000020   	LINBUF= ****** GX	SETNB = ****** GX
AM.REL= 000067   	CH.SMC= 000073   	DIG.0 = 000060   	LIST  = ****** GX	SETXPR= ****** GX
ASTFLG= 000114   	CH.SUB= 000055   	DIG.9 = 000071   	LST.KB= 000001   	SPACE = 000040
BLKT01= 000001   	CH.UAR= 000136   	DSABL = ****** GX	LST.LP= 000002   	SWTBAS  000000RG    002
BLKT02= 000002   	CH.XCL= 000047   	ENABL = ****** GX	MDFFLG= 000004   	SWTROL= ****** GX
BLKT03= 000003   	CPXADD= 000001   	ERRBTS= ****** GX	NLIST = ****** GX	SWTTOP  000020RG    002
BLKT04= 000004   	CPXAND= 000005   	EXMFLG= ****** GX	PROPC = ****** GX	TAB   = 000011
BLKT05= 000005   	CPXCOM= 000011   	FF    = 000014   	PROSW   000000RG    003	VT    = 000013
BLKT06= 000006   	CPXCON= 000020   	GLBFLG= 000100   	PSTFLG= 000050   	XBSRCH= 000000
CHRPNT= ****** GX	CPXDIV= 000004   	GSDT00= 000000   	REGFLG= 000001   	XCREF = 000000
CH.ADD= 000053   	CPXFLG= 000200   	GSDT01= 000400   	RELFLG= 000040   	XCTLIN= ****** GX
CH.AND= 000046   	CPXGLB= 000016   	GSDT02= 001000   	RLDT00= 000000   	XEDABS= 000000
CH.BSL= 000134   	CPXIOR= 000006   	GSDT03= 001400   	RLDT01= 000001   	XEDCDR= 000000
CH.COL= 000072   	CPXMUL= 000003   	GSDT04= 002000   	RLDT02= 000002   	XEDFPT= 000000
CH.COM= 000054   	CPXNEG= 000010   	GSDT05= 002400   	RLDT03= 000003   	XEDLC = 000000
CH.DIV= 000057   	CPXOPC= 000010   	GSDT06= 003000   	RLDT04= 000004   	XEDPIC= 000000
CH.DOL= 000044   	CPXREL= 000017   	ILVL  = 000004   	RLDT05= 000005   	XEDPNC= 000000
CH.DOT= 000056   	CPXSDS= 000013   	LBLFLG= 000002   	RLDT06= 000006   	XFCSQN= 000000
CH.EQU= 000075   	CPXSTO= 000012   	LET.A = 000101   	RLDT07= 000007   	XFLTG = 000000
CH.HSH= 000043   	CPXSUB= 000002   	LET.B = 000102   	RLDT10= 000010   	XOPEXP= 000000
CH.IND= 000100   	CR    = 000015   	LET.C = 000103   	RLDT11= 000011   	XSUBD = 000000
CH.IOR= 000041   	CSTACC= 000020   	LET.D = 000104   	RLDT15= 000015   	XZERR = 000000
CH.LAB= 000074   	CSTALO= 000004   	LET.E = 000105   	RLDT16= 000016   	X45   = 000000
CH.LP = 000050   	CSTFLG= 000050

. ABS.	000000	   000
      	000000	   001
SWTSEC	000020	   002
PUREI 	000072	   003
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2641 WORDS  ( 11 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:18
[45,10]PROSW,[45,20]PROSW/-SP=[45,30]RSXPAR,GENMC,FLGDF,PROSW
PST	MACRO M1108  05-DEC-77 23:31  PAGE 2


      1						.TITLE	PST
      2						.IDENT	/07/
      3
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION 07
     24					;
     25					; B. BOWERING
     26					;
     27					;	MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 10-FEB-73
     30					;	C.A. D'ELIA	22-SEP-73	002
     31					;	C.A. D'ELIA	15-NOV-73	008
     32					;	C.A. D'ELIA	25-JAN-74	011
     33					;	H.A. NICHOLS	18-JUN-74	017
     34					;	C.A. D'ELIA	02-JAN-75	018
     35					;	C.A. D'ELIA	01-MAY-75	019
     36					;
     37					;
     38					;
     39					; PERMANENT SYMBOL TABLE
     40					;
     41					; EQUATED SYMBOLS
     42					;
     43
     44		000200 			DR1=	200			;DESTRUCTIVE REFERENCE IN FIRST FIELD
     45		000100 			DR2=	100			;DESTRUCTIVE REFERENCE IN SECOND FIELD
     46
     47		000040 			B$YTOP==40			;++011 OPCODE ALSO HAS BYTE FORM
     48
     49		000020 			DFLGEV==020			;DIRECTIVE REQUIRES EVEN LOCATION
     50		000010 			DFLGBM==010			;DIRECTIVE USES BYTE MODE
     51		000004 			DFLCND==004			;CONDITIONAL DIRECTIVE
     52		000002 			DFLMAC==002			;MACRO DIRECTIVE
     53
     54					;
     55					; LOCAL MACROS
     56					;
     57
PST	MACRO M1108  05-DEC-77 23:31  PAGE 2-1


     58						.IF DF	PAL11R		;PAL11R SUBSET
     59					XMACRO=	0
     60					X40=	0
     61					X45=	0
     62						.ENDC
     63
     64						.IIF DF	X40&X45,	XFLTG=	0
     65						.IIF DF	XMACRO,	XSML=	0
     66
     67						.MACRO	OPCDEF	NAME,	CLASS,	VALUE,	FLAGS,	COND
     68						.IF NB	<COND>
     69						.IF DF	COND
     70						.MEXIT
     71						.ENDC
     72						.ENDC
     73						.RAD50	/NAME/
     74						.BYTE	FLAGS+0
     75						.BYTE	200+OPCL'CLASS
     76						.WORD	VALUE
     77						.ENDM
     78
     79						.MACRO	DIRDEF	NAME,	FLAGS,	COND
     80						.IF NB	<COND>
     81						.IF DF	COND
     82						.MEXIT
     83						.ENDC
     84						.ENDC
     85						.RAD50	/.'NAME/
     86						.BYTE	FLAGS+0,	0
     87						.WORD	NAME
     88						.ENDM
     89
     90						.MACRO	DIRDF1 NAME,ENTRY,FLAGS,COND
     91						.IF NB	<COND>
     92						.IF DF	COND
     93						.MEXIT
     94						.ENDC
     95						.ENDC
     96						.RAD50	/.'NAME/
     97						.BYTE	FLAGS,0
     98						.WORD	ENTRY
     99						.ENDM
    100
    101
    102	000000					PURE	PSTBL,GBL,D	;++017
    103
    104	000000				SSTBAS::			;++011 SHORT ENTRY SYMBOL TABLE (SST)
    105	000000					OPCDEF	<ADC>,  01,  005500,  DR1!B$YTOP	    ;++011
    106	000006					OPCDEF	<ADD>,  02,  060000,  DR2		    ;++011
    107	000014					OPCDEF	<ASH>,  09,  072000,  DR2,	   X40&X45  ;++011
    108	000022					OPCDEF	<ASL>,  01,  006300,  DR1!B$YTOP	    ;++011
    109	000030					OPCDEF	<ASR>,  01,  006200,  DR1!B$YTOP	    ;++011
    110	000036					OPCDEF	<BCC>,  04,  103000,			    ;++011
    111	000044					OPCDEF	<BCS>,  04,  103400,			    ;++011
    112	000052					OPCDEF	<BEQ>,  04,  001400,			    ;++011
    113	000060					OPCDEF	<BGE>,  04,  002000,			    ;++011
    114	000066					OPCDEF	<BGT>,  04,  003000,			    ;++011
PST	MACRO M1108  05-DEC-77 23:31  PAGE 2-2


    115	000074					OPCDEF	<BHI>,  04,  101000,			    ;++011
    116	000102					OPCDEF	<BIC>,  02,  040000,  DR2!B$YTOP	    ;++011
    117	000110					OPCDEF	<BIS>,  02,  050000,  DR2!B$YTOP	    ;++011
    118	000116					OPCDEF	<BIT>,  02,  030000,  B$YTOP		    ;++011
    119	000124					OPCDEF	<BLE>,  04,  003400,			    ;++011
    120	000132					OPCDEF	<BLO>,  04,  103400,			    ;++011
    121	000140					OPCDEF	<BLT>,  04,  002400,			    ;++011
    122	000146					OPCDEF	<BMI>,  04,  100400,			    ;++011
    123	000154					OPCDEF	<BNE>,  04,  001000,			    ;++011
    124	000162					OPCDEF	<BPL>,  04,  100000,			    ;++011
    125	000170					OPCDEF	<BPT>,  00,  000003,  ,		   X40&X45  ;++011
    126	000176					OPCDEF	<BR >,  04,  000400,			    ;++011
    127	000204					OPCDEF	<BVC>,  04,  102000,			    ;++011
    128	000212					OPCDEF	<BVS>,  04,  102400,			    ;++011
    129	000220					OPCDEF	<CCC>,  00,  000257,			    ;++011
    130	000226					OPCDEF	<CLC>,  00,  000241,			    ;++011
    131	000234					OPCDEF	<CLN>,  00,  000250,			    ;++011
    132	000242					OPCDEF	<CLR>,  01,  005000,  DR1!B$YTOP	    ;++011
    133	000250					OPCDEF	<CLV>,  00,  000242,			    ;++011
    134	000256					OPCDEF	<CLZ>,  00,  000244,			    ;++011
    135	000264					OPCDEF	<CMP>,  02,  020000,  B$YTOP		    ;++011
    136	000272					OPCDEF	<COM>,  01,  005100,  DR1!B$YTOP	    ;++011
    137	000300					OPCDEF	<DEC>,  01,  005300,  DR1!B$YTOP	    ;++011
    138	000306					OPCDEF	<DIV>,  07,  071000,  DR2,	   X40&X45  ;++011
    139	000314					OPCDEF	<EMT>,  06,  104000,			    ;++011
    140	000322					OPCDEF	<INC>,  01,  005200,  DR1!B$YTOP	    ;++011
    141	000330					OPCDEF	<IOT>,  00,  000004,			    ;++011
    142	000336					OPCDEF	<JMP>,  01,  000100,			    ;++011
    143	000344					OPCDEF	<JSR>,  05,  004000,  DR1		    ;++011
    144	000352					OPCDEF	<LDD>,  11,  172400,  DR2,  	   X45	    ;++018
    145	000352					OPCDEF	<LDF>,  11,  172400,  DR2,  	   X45	    ;++018
    146	000352					OPCDEF	<MOV>,  02,  010000,  DR2!B$YTOP	    ;++011
    147	000360					OPCDEF	<MUL>,  07,  070000,  DR2,	   X40&X45  ;++011
    148	000366					OPCDEF	<NEG>,  01,  005400,  DR1!B$YTOP	    ;++011
    149	000374					OPCDEF	<NOP>,  00,  000240,			    ;++011
    150	000402					OPCDEF	<ROL>,  01,  006100,  DR1!B$YTOP	    ;++011
    151	000410					OPCDEF	<ROR>,  01,  006000,  DR1!B$YTOP	    ;++011
    152	000416					OPCDEF	<RTI>,  00,  000002,			    ;++011
    153	000424					OPCDEF	<RTS>,  03,  000200,  DR1		    ;++011
    154	000432					OPCDEF	<RTT>,  00,  000006,  ,		   X40&X45  ;++011
    155	000440					OPCDEF	<SBC>,  01,  005600,  DR1!B$YTOP	    ;++011
    156	000446					OPCDEF	<SCC>,  00,  000277,			    ;++011
    157	000454					OPCDEF	<SEC>,  00,  000261,			    ;++011
    158	000462					OPCDEF	<SEN>,  00,  000270,			    ;++011
    159	000470					OPCDEF	<SEV>,  00,  000262,			    ;++011
    160	000476					OPCDEF	<SEZ>,  00,  000264,			    ;++011
    161	000504					OPCDEF	<SOB>,  08,  077000,  DR1!B$YTOP,  X40&X45  ;++011
    162	000512					OPCDEF	<SPL>,  13,  000230,  ,		   X45	    ;++011
    163	000512					OPCDEF	<STD>,  12,  174000,  DR2,	   X45	    ;++018
    164	000512					OPCDEF	<STF>,  12,  174000,  DR2,	   X45	    ;++018
    165	000512					OPCDEF	<SUB>,  02,  160000,  DR2		    ;++011
    166	000520					OPCDEF	<SXT>,  01,  006700,  DR1,	   X40&X45  ;++011
    167	000526					OPCDEF	<TST>,  01,  005700,  B$YTOP		    ;++011
    168	000534					OPCDEF	<XOR>,  05,  074000,  DR2,	   X40&X45  ;++011
    169	000542					DIRDEF	<IF>,	DFLCND				    ;++011
    170	000550				SSTTOP::			;++011 END OF SHORT ENTRY SYMBOL TABLE
    171
PST	MACRO M1108  05-DEC-77 23:31  PAGE 2-3


    172
    173	000550				PSTBAS::			;REF LABEL
    174	000550					OPCDEF	<ABSD  >,	01,	170600,	DR1,	X45
    175	000550					OPCDEF	<ABSF  >,	01,	170600,	DR1,	X45
    176	000550					OPCDEF	<ADDD  >,	11,	172000,	DR2,	X45
    177	000550					OPCDEF	<ADDF  >,	11,	172000,	DR2,	X45
    178	000550					OPCDEF	<ASHC  >,	09,	073000,	DR2,	X40&X45
    179	000560					OPCDEF	<BHIS  >,	04,	103000,
    180	000570					OPCDEF	<BLOS  >,	04,	101400,
    181	000600					OPCDEF	<CALL  >,	01,	004700		;++018
    182	000610					OPCDEF	<CFCC  >,	00,	170000,	   ,	X45
    183	000610					OPCDEF	<CLRD  >,	01,	170400,	DR1,	X45
    184	000610					OPCDEF	<CLRF  >,	01,	170400,	DR1,	X45
    185	000610					OPCDEF	<CMPD  >,	11,	173400,	   ,	X45
    186	000610					OPCDEF	<CMPF  >,	11,	173400,	   ,	X45
    187	000610					OPCDEF	<DIVD  >,	11,	174400,	DR2,	X45
    188	000610					OPCDEF	<DIVF  >,	11,	174400,	DR2,	X45
    189	000610					OPCDEF	<FADD  >,	03,	075000,	DR1,	X40
    190	000620					OPCDEF	<FDIV  >,	03,	075030,	DR1,	X40
    191	000630					OPCDEF	<FMUL  >,	03,	075020,	DR1,	X40
    192	000640					OPCDEF	<FSUB  >,	03,	075010,	DR1,	X40
    193	000650					OPCDEF	<HALT  >,	00,	000000,
    194	000660					OPCDEF	<LDCDF >,	11,	177400,	DR2,	X45
    195	000660					OPCDEF	<LDCFD >,	11,	177400,	DR2,	X45
    196	000660					OPCDEF	<LDCID >,	14,	177000,	DR2,	X45
    197	000660					OPCDEF	<LDCIF >,	14,	177000,	DR2,	X45
    198	000660					OPCDEF	<LDCLD >,	14,	177000,	DR2,	X45
    199	000660					OPCDEF	<LDCLF >,	14,	177000,	DR2,	X45
    200	000660					OPCDEF	<LDEXP >,	14,	176400,	DR2,	X45
    201	000660					OPCDEF	<LDFPS >,	01,	170100,	   ,	X45
    202	000660					OPCDEF	<LDSC  >,	00,	170004,	   ,	X45
    203	000660					OPCDEF	<LDUB  >,	00,	170003,	   ,	X45
    204	000660					OPCDEF	<MARK  >,	10,	006400,	,	X40&X45	;++002
    205	000670					OPCDEF	<MFPD  >,	01,	106500,	   ,	X45
    206	000670					OPCDEF	<MFPI  >,	01,	006500,	,	X40&X45	;++002
    207	000700					OPCDEF	<MFPS  >,	01,	106700,	DR1	;++019
    208	000710					OPCDEF	<MODD  >,	11,	171400,	DR2,	X45
    209	000710					OPCDEF	<MODF  >,	11,	171400,	DR2,	X45
    210	000710					OPCDEF	<MTPD  >,	01,	106600,	DR1,	X45
    211	000710					OPCDEF	<MTPI  >,	01,	006600,	DR1,	X40&X45	;++002
    212	000720					OPCDEF	<MTPS  >,	01,	106400		;++019
    213	000730					OPCDEF	<MULD  >,	11,	171000,	DR2,	X45
    214	000730					OPCDEF	<MULF  >,	11,	171000,	DR2,	X45
    215	000730					OPCDEF	<NEGD  >,	01,	170700,	DR1,	X45
    216	000730					OPCDEF	<NEGF  >,	01,	170700,	DR1,	X45
    217	000730					OPCDEF	<RESET >,	00,	000005,
    218	000740					OPCDEF	<RETURN>,	00,	000207		;++018
    219	000750					OPCDEF	<SETD  >,	00,	170011,	   ,	X45
    220	000750					OPCDEF	<SETF  >,	00,	170001,	   ,	X45
    221	000750					OPCDEF	<SETI  >,	00,	170002,	   ,	X45
    222	000750					OPCDEF	<SETL  >,	00,	170012,	   ,	X45
    223	000750					OPCDEF	<STA0  >,	00,	170005,	   ,	X45
    224	000750					OPCDEF	<STB0  >,	00,	170006,	   ,	X45
    225	000750					OPCDEF	<STCDF >,	12,	176000,	DR2,	X45
    226	000750					OPCDEF	<STCDI >,	12,	175400,	DR2,	X45
    227	000750					OPCDEF	<STCDL >,	12,	175400,	DR2,	X45
    228	000750					OPCDEF	<STCFD >,	12,	176000,	DR2,	X45
PST	MACRO M1108  05-DEC-77 23:31  PAGE 2-4


    229	000750					OPCDEF	<STCFI >,	12,	175400,	DR2,	X45
    230	000750					OPCDEF	<STCFL >,	12,	175400,	DR2,	X45
    231	000750					OPCDEF	<STEXP >,	12,	175000,	DR2,	X45
    232	000750					OPCDEF	<STFPS >,	01,	170200,	DR1,	X45
    233	000750					OPCDEF	<STQ0  >,	00,	170007,	   ,	X45
    234	000750					OPCDEF	<STST  >,	01,	170300,	DR1,	X45
    235	000750					OPCDEF	<SUBD  >,	11,	173000,	DR2,	X45
    236	000750					OPCDEF	<SUBF  >,	11,	173000,	DR2,	X45
    237	000750					OPCDEF	<SWAB  >,	01,	000300,	DR1
    238	000760					OPCDEF	<TRAP  >,	06,	104400,
    239	000770					OPCDEF	<TSTD  >,	01,	170500,	   ,	X45
    240	000770					OPCDEF	<TSTF  >,	01,	170500,	   ,	X45
    241	000770					OPCDEF	<WAIT  >,	00,	000001,
    242	001000					DIRDEF	<ASCII>,	DFLGBM
    243	001010					DIRDEF	<ASCIZ>,	DFLGBM
    244	001020					DIRDEF	<ASECT>,	,	XREL
    245	001030					DIRDEF	<BLKB >
    246	001040					DIRDEF	<BLKW >,	DFLGEV
    247	001050					DIRDEF	<BYTE >,	DFLGBM
    248	001060					DIRDEF	<CSECT>,	,	XREL
    249						.IF DF	YPHASE
    250						DIRDEF	<DEPHA>
    251						.ENDC
    252	001070					DIRDEF	<DSABL>
    253	001100					DIRDEF	<ENABL>
    254	001110					DIRDEF	<END  >
    255	001120					DIRDEF	<ENDC >,	DFLCND
    256	001130					DIRDF1	<ENDM >,OPCERR,DFLMAC,XMACRO  ;++011
    257	001140					DIRDF1	<ENDR >,OPCERR,DFLMAC,XMACRO  ;++011
    258	001150					DIRDEF	<EOT  >,	,XSUBD		;++018
    259	001150					DIRDEF	<ERROR>
    260	001160					DIRDEF	<EVEN >
    261	001170					DIRDEF	<FLT2 >,	DFLGEV,	XFLTG
    262	001170					DIRDEF	<FLT4 >,	DFLGEV,	XFLTG
    263	001170					DIRDEF	<GLOBL>,	,	XREL
    264	001200					DIRDEF	<IDENT>
    265						.IF NDF	XSUBD		;++018
    266						DIRDF1	<IFDF >,IFDF,DFLCND
    267						DIRDF1	<IFEQ >,IFDF,DFLCND
    268						.IFTF			;++011
    269	001210					DIRDEF	<IFF  >,	DFLCND
    270						.IFT			;++011
    271						DIRDF1	<IFG  >,IFDF,DFLCND
    272						DIRDF1	<IFGE >,IFDF,DFLCND
    273						DIRDF1	<IFGT >,IFDF,DFLCND
    274						DIRDF1	<IFL  >,IFDF,DFLCND
    275						DIRDF1	<IFLE >,IFDF,DFLCND
    276						DIRDF1	<IFLT >,IFDF,DFLCND
    277						DIRDF1	<IFNDF>,IFDF,DFLCND
    278						DIRDF1	<IFNE >,IFDF,DFLCND
    279						DIRDF1	<IFNZ >,IFDF,DFLCND
    280						.IFTF			;++011
    281	001220					DIRDEF	<IFT  >,	DFLCND
    282	001230					DIRDEF	<IFTF >,	DFLCND
    283						.IFT			;++011
    284						DIRDF1	<IFZ  >,IFDF,DFLCND
    285						.ENDC			;++018 (XSUBD -- SUBSET DIRECTIVES)
PST	MACRO M1108  05-DEC-77 23:31  PAGE 2-5


    286	001240					DIRDEF	<IIF  >
    287	001250					DIRDEF	<IRP  >,	DFLMAC,	XMACRO
    288	001260					DIRDEF	<IRPC >,	DFLMAC,	XMACRO
    289	001270					DIRDEF	<LIMIT>,	DFLGEV,	XREL
    290	001300					DIRDEF	<LIST >
    291	001310					DIRDF1	<MACR >,MACR,DFLMAC,XMACRO
    292	001320					DIRDF1	<MACRO>,MACR,DFLMAC,XMACRO
    293	001330					DIRDEF	<MCALL>,	,	XSML
    294	001340					DIRDEF	<MEXIT>	,	,	XMACRO
    295	001350					DIRDEF	<NARG >	,	,	XMACRO
    296	001360					DIRDEF	<NCHR >	,	,	XMACRO
    297	001370					DIRDEF	<NLIST>
    298	001400					DIRDEF	<NTYPE>	,	,	XMACRO
    299	001410					DIRDEF	<ODD  >
    300	001420					DIRDEF	<PAGE >
    301						.IF DF	YPHASE
    302						DIRDEF	<PHASE>
    303						.ENDC
    304	001430					DIRDEF	<PRINT>
    305	001440					DIRDEF	<PSECT>
    306	001450					DIRDEF	<RADIX>
    307	001460					DIRDEF	<RAD50>,	DFLGEV
    308	001470					DIRDEF	<REM  >,	,XSUBD		;++018
    309	001470					DIRDEF	<REPT >,	DFLMAC,	XMACRO
    310	001500					DIRDEF	<SBTTL>
    311	001510					DIRDEF	<TITLE>
    312	001520				WRDSYM::			;REF LABEL
    313	001520					DIRDEF	<WORD >,	DFLGEV
    314	001530				PSTTOP::			;REF LABEL
    315
    316		000001 				.END
PST	MACRO M1108  05-DEC-77 23:31  PAGE 2-6
SYMBOL TABLE

ASCII = ****** GX	ENDC  = ****** GX	MEXIT = ****** GX	OPCL09= ****** GX	WORD  = ****** GX
ASCIZ = ****** GX	ERROR = ****** GX	NARG  = ****** GX	OPCL10= ****** GX	WRDSYM  001520RG    002
ASECT = ****** GX	EVEN  = ****** GX	NCHR  = ****** GX	PAGE  = ****** GX	XBSRCH= 000000
BLKB  = ****** GX	GLOBL = ****** GX	NLIST = ****** GX	PRINT = ****** GX	XCREF = 000000
BLKW  = ****** GX	IDENT = ****** GX	NTYPE = ****** GX	PSECT = ****** GX	XEDABS= 000000
BYTE  = ****** GX	IF    = ****** GX	ODD   = ****** GX	PSTBAS  000550RG    002	XEDCDR= 000000
B$YTOP= 000040 G 	IFF   = ****** GX	OPCERR= ****** GX	PSTTOP  001530RG    002	XEDFPT= 000000
CSECT = ****** GX	IFT   = ****** GX	OPCL00= ****** GX	RADIX = ****** GX	XEDLC = 000000
DFLCND= 000004 G 	IFTF  = ****** GX	OPCL01= ****** GX	RAD50 = ****** GX	XEDPIC= 000000
DFLGBM= 000010 G 	IIF   = ****** GX	OPCL02= ****** GX	REPT  = ****** GX	XEDPNC= 000000
DFLGEV= 000020 G 	ILVL  = 000004   	OPCL03= ****** GX	RSX11M= 000000   	XFCSQN= 000000
DFLMAC= 000002 G 	IRP   = ****** GX	OPCL04= ****** GX	R$$11M= 000000   	XFLTG = 000000
DR1   = 000200   	IRPC  = ****** GX	OPCL05= ****** GX	SBTTL = ****** GX	XOPEXP= 000000
DR2   = 000100   	LIMIT = ****** GX	OPCL06= ****** GX	SSTBAS  000000RG    002	XSUBD = 000000
DSABL = ****** GX	LIST  = ****** GX	OPCL07= ****** GX	SSTTOP  000550RG    002	XZERR = 000000
ENABL = ****** GX	MACR  = ****** GX	OPCL08= ****** GX	TITLE = ****** GX	X45   = 000000
END   = ****** GX	MCALL = ****** GX

. ABS.	000000	   000
      	000000	   001
PSTBL 	001530	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  798 WORDS  ( 4 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:33
[45,10]PST,[45,20]PST/-SP=[45,30]RSXPAR,PST
READ	MACRO M1108  05-DEC-77 23:32  PAGE 3


      1						.TITLE	READ
      2						.IDENT	/X02.01/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION X02.01                                                                ;**NEW**
     23					;                                                                               ;**-1
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 6-FEB-73
     29					;	C.A. D'ELIA	10-JAN-74	010
     30					;	C.A. D'ELIA	05-MAR-74	013
     31					;	C.A. D'ELIA	22-MAR-74	014
     32					;	H.A. NICHOLS	18-JUN-74	017
     33					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     34					;
     35					;
     36					;
     37
     38						.MCALL	CALL,RETURN	;++014
     39
     40
     41						.IF NDF	RSX11M		;++014
     42
     43
     44						.MCALL	GET$		;++014
     45
     46						.IFF			;++014
     47
     48						.MCALL	GET$S		;++014
     49
     50
     51						.ENDC
     52
     53
     54
     55	000000					PURE	PUREI,I		;++017
     56
     57	000000				$READ::				;READ LINE
READ	MACRO M1108  05-DEC-77 23:32  PAGE 3-1


     58	000000					CALL	SAVREG		;++014 SAVE REGISTERS
     59	000004	010004 				MOV	R0,R4		;++010 COPY SOFTWARE CHANNEL NUMBER
     60	000006	016400 	000000G			MOV	FDBTBL(R4),R0	;++010 GET ADDR OF FDB IN R0
     61					                                                                                ;**-3
     62
     63						.IF NDF	RSX11M		;++014
     64
     65
     66						GET$			;++010 GET NEXT RECORD FROM FILE
     67
     68						.IFF			;++014
     69
     70	000012					GET$S			;++014 GET NEXT RECORD
     71
     72
     73						.ENDC			;++014 (RSX-11M)
     74
     75
     76	000016	103404 				BCS	5$;
     77	000020	016074 	000000G	000000G		MOV	F.NRBD(R0),@CNTTBL(R4)  ;++010 SET BYTE COUNT
     78	000026					RETURN
     79	000030	122760 	000000G	000000G	5$:	CMPB	#IE.EOF,F.ERR(R0);	EOF ?
     80	000036	001004 				BNE	10$;			NO -BAD
     81	000040	152764 	000000G	000000G		BISB	#IO$EOF,IOFTBL(R4)  ;++014 SET END-OF-FILE STATUS
     82	000046					RETURN
     83	000050	012703 	000000G		10$:	MOV	#INPM1,R3	;INPUT FILE I/O ERROR
     84	000054	000167 	000000G		READ1:	JMP	RESTRT		;
     85
     86					                                                                                ;**-7
     87
     88		000001 				.END
READ	MACRO M1108  05-DEC-77 23:32  PAGE 3-2
SYMBOL TABLE

BPMB  = 000020   	IOFTBL= ****** GX	RSX11M= 000000   	XEDABS= 000000   	XOPEXP= 000000
CNTTBL= ****** GX	IO$EOF= ****** GX	R$$11M= 000000   	XEDCDR= 000000   	XSUBD = 000000
CPL   = 000120   	LINLEN= 000204   	SAVREG= ****** GX	XEDCRF= 000000   	XZERR = 000000
FDBTBL= ****** GX	LPP   = 000074   	SMLLEN= 000120   	XEDFPT= 000000   	X45   = 000000
F.ERR = ****** GX	LSTLEN= 000204   	SRCLEN= 000204   	XEDLC = 000000   	YQCMO = 000000
F.NRBD= ****** GX	OBJLEN= 000052   	STLLEN= 000100   	XEDPIC= 000000   	$READ   000000RG    002
IE.EOF= ****** GX	READ1   000054R     002	TTLLEN= 000040   	XEDPNC= 000000   	$$    = 000067
ILVL  = 000004   	RESTRT= ****** GX	XBSRCH= 000000   	XFCSQN= 000000   	.GETSQ= ****** G
INPM1 = ****** GX	RLDLEN= 000052   	XCREF = 000000   	XFLTG = 000000

. ABS.	000000	   000
      	000000	   001
PUREI 	000060	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  932 WORDS  ( 4 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:11
[45,10]READ,[45,20]READ/-SP=[45,30]RSXPAR,MPARAM,READ
REPT	MACRO M1108  05-DEC-77 23:32  PAGE 4


      1						.TITLE	REPT
      2						.IDENT	/X01.02/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION X01.02                                                                ;**NEW**
     23					;                                                                               ;**-1
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 6-FEB-73
     29					;	C.A. D'ELIA	15-NOV-73	008
     30					;	C.A. D'ELIA	10-JAN-74	010
     31					;	C.A. D'ELIA	25-JAN-74	011
     32					;	C.A. D'ELIA	05-MAR-74	013
     33					;	C.A. D'ELIA	07-APR-74	015
     34					;	C.A. D'ELIA	24-APR-74	016
     35					;	H.A. NICHOLS	18-JUN-74	017
     36					;	C.A. D'ELIA	01-AUG-74	017
     37					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     38					;	C.A. D'ELIA	05-SEP-76	026	(KEYWORD MACROS IN 8K)          ;**NEW**
     39					;
     40					;
     41
     42					;
     43					; EQUATED SYMBOLS
     44					;
     45
     46						.IF NDF	XMACRO
     47		177601 			MT.RPT=	177601
     48		177602 			MT.IRP=	177602
     49	000000					PURE	PUREI,I		;++017
     50
     51					;+
     52					; **-REPT-REPEAT HANDLER
     53					; **-ENDMAC-END OF MACRO PROCESSING
     54					;-
     55
     56	000000				REPT::	ABSEXP			;EVALUTE EXPRESSION
     57	000004	010046 				MOV	R0,-(SP)	;SAVE COUNT
REPT	MACRO M1108  05-DEC-77 23:32  PAGE 4-1


     58	000006					SETPF1			;MARK THE LISTING
     59	000012	004767 	000000G			CALL	GETBLK		;GET A STORAGE BLOCK
     60	000016	010067 	000000G			MOV	R0,MACWRT	;++021 STORE REAL ADDR OF BLOCK TO WRITE        ;**NEW**
     61	000022	010167 	000000G			MOV	R1,MACWTV	;++021 AND ITS VIRTUAL LOCN                     ;**NEW**
     62	000026	005022 				CLR	(R2)+		;START IN THIRD WORD
     63	000030	005046 				CLR	-(SP)		;NO ARGUMENTS
     64	000032	010146 				MOV	R1,-(SP)	;++021 SAVE VIRT LOCN OF BLK ON STACK           ;**NEW**
     65	000034	004767 	000000G			CALL	ENDLIN		;POLISH OFF LINE                                ;**-1
     66	000040					ZAP	DMALST		;++021 EMPTY DUMMY ARG LIST--NONE FOR REPT      ;**NEW**
     67	000050	004767 	000000G			CALL	PROMT		;USE MACRO STUFF                                ;**-1
     68	000054	012705 	177601 			MOV	#MT.RPT,R5	;FUDGE AN "END OF REPEAT"
     69	000060	004767 	000000G		REPTF:	CALL	WCIMT
     70	000064	016701 	000000G			MOV	MACWTV,R1	;++021 GET VIRT LOCN OF CURRENT TEXT BLK        ;**NEW**
     71	000070	004767 	000000G			CALL	$UNLPG		;++021 AND UNLOCK ITS PAGE                      ;**NEW**
     72	000074	004767 	000000G			CALL	MPUSH		;PUSH CURRENT MACRO CONTEXT AND ...             ;**NEW**
     73									;SWITCH TO NEW ONE                              ;**NEW**
     74	000100	012622 				MOV	(SP)+,(R2)+	;++021 STORE VIRT LOCN OF BASIC ...             ;**NEW**
     75									;++021 TEXT BLOCK (MSBTXT)                      ;**NEW**
     76	000102	012622 				MOV	(SP)+,(R2)+	;++021 STORE VIRT LOCN OF FIRST ...             ;**NEW**
     77									;++021 ARGUMENT BLOCK (MSBARG)                  ;**NEW**
     78	000104	005022 				CLR	(R2)+		;CLEAR ITERATION COUNT (MSBCNT)                 ;**NEW**
     79	000106	012612 				MOV	(SP)+,(R2)	;++021 AND REPEAT (OR ARGUMENT) ...             ;**NEW**
     80									;++021 COUNT (MSBCNT+2)                         ;**NEW**
     81	000110	016262 	177772 	000004 		MOV	-6(R2),4(R2)	;++021 STORE VIRT LOCN OF BASIC ...             ;**NEW**
     82									;++021 TEXT BLK AS ONE BEING ...                ;**NEW**
     83									;++021 WRITTEN (MSBRDV)                         ;**NEW**
     84	000116					SETCHR			;RESTORE CHARACTER                              ;**-5
     85					                                                                                ;**NEW**
     86					                                                                                ;**NEW**
     87	000122	012700 	000000G		ENDMAC::MOV	#MSBCNT,R0	;SET POINTER TO COUNT
     88	000126	005210 				INC	(R0)		;BUMP IT
     89	000130	022020 				CMP	(R0)+,(R0)+	;++021 HAVE WE REPEATED ENOUGH TIMES?           ;**NEW**
     90	000132	003005 				BGT	1$		;  YES                                          ;**-1
     91	000134	012720 	000004 			MOV	#4,(R0)+	;++021 NO, INIT TEXT BLK READ PTR               ;**NEW**
     92	000140	016010 	177766 			MOV	-10.(R0),(R0)	;++021 SETUP TO READ BASIC TEXT BLOCK           ;**NEW**
     93	000144	000207 				RETURN                                                                  ;**-2
     94	000146	005067 	000000G		1$:	CLR	CNDMEX		;CLEAR MEXIT FLAG
     95	000152	000451 				BR	MPOP		;++017 POP A LEVEL OF MACRO CALL AND RETURN
     96
     97					;+
     98					; **-IRP-INDEFINITE REPEAT/INDEFINITE REPEAT CHARACTER
     99					;-
    100
    101	000154				IRP::				;++011 R3=0 IMPLIES ".IRP"
    102									;++011 R3=1 IMPLIES ".IRPC"
    103	000154	004767 	000000G			CALL	GMARG		;++011 GET MACRO AGRUMENT
    104	000160	001442 				BEQ	1$
    105	000162	004767 	000000G			CALL	PROMA
    106	000166	004767 	000000G			CALL	RMARG
    107	000172	004767 	000000G			CALL	GMARG
    108	000176	001433 				BEQ	1$
    109	000200	012767 	177777 	000000G		MOV	#177777,ARGMAX	;ANY NUMBER OF ARGUMENTS
    110	000206	004767 	000000G			CALL	PROMCF		;PROCESS CALL ARGUMENTS                         ;**NEW**
    111	000212	010103 				MOV	R1,R3		;++021 COPY VIRT LOCN OF FIRST ARG BLK          ;**NEW**
    112	000214	004767 	000000G			CALL	RMARG                                                           ;**-2
    113	000220	004767 	000000G			CALL	GETBLK		;ALLOCATE A BASIC TEXT BLOCK                    ;**NEW**
    114	000224	010067 	000000G			MOV	R0,MACWRT	;++021 SAVE ADDR OF BLK BEING WRITTEN           ;**NEW**
REPT	MACRO M1108  05-DEC-77 23:32  PAGE 4-2


    115	000230	010167 	000000G			MOV	R1,MACWTV	;++021 AND ITS VIRT LOCN                        ;**NEW**
    116	000234	005022 				CLR	(R2)+                                                           ;**-1
    117	000236	016746 	000000G			MOV	ARGCNT,-(SP)	;USE NUMBER OF ARGS AS REPEAT COUNT             ;**NEW**
    118	000242	010346 				MOV	R3,-(SP)	;++021 STORE VIRT LOCN OF FIRST ARG BLK         ;**NEW**
    119	000244	010146 				MOV	R1,-(SP)	;++021 STORE VIRT LOCN OF BASIC TEXT BLK        ;**NEW**
    120	000246	004767 	000000G			CALL	ENDLIN                                                          ;**-3
    121	000252	004767 	000000G			CALL	PROMT
    122	000256	012705 	177602 			MOV	#MT.IRP,R5
    123	000262	000167 	177572 			JMP	REPTF
    124	000266				1$:	ERROR	A
    125	000274	000207 				RETURN
    126
    127
    128	000276	012702 	000002G		MPOP:	MOV	#MSBARG+2,R2	;POINT ONE SLOT PAST ARGUMENT                   ;**-22
    129	000302	014201 				MOV	-(R2),R1	;++021 GET VIRT LOCN OF FIRST ARG BLK           ;**NEW**
    130	000304	001404 				BEQ	1$		;BRANCH IF NULL                                 ;**-1
    131	000306	004767 	000000G			CALL	$CVRL2		;++021 ELSE, GET ITS REAL ADDR IN R0            ;**NEW**
    132	000312	004767 	000000G			CALL	REMMAC		;REMOVE IT
    133	000316	014201 			1$:	MOV	-(R2),R1	;++021 VIRT LOCN OF BASIC TEXT BLK IN R1        ;**NEW**
    134	000320	001402 				BEQ	2$		;BRANCH IF NULL                                 ;**-1
    135	000322	004767 	000000G			CALL	DECMAC		;DECREMENT LEVEL
    136	000326	014201 			2$:	MOV	-(R2),R1	;++021 GET VIRT LOCN OF CONTEXT SAVE BLK        ;**NEW**
    137	000330	004767 	000000G			CALL	$CVRL2		;++021 GET ITS REAL ADDR IN R0                  ;**NEW**
    138	000334	010146 				MOV	R1,-(SP)	;++021 SAVE THE VIRTUAL LOCN                    ;**NEW**
    139	000336	010001 				MOV	R0,R1		;++021 AND COPY ITS REAL ADDR INTO R1           ;**NEW**
    140	000340	005742 				TST	-(R2)		;POINT TO START                                 ;**-1
    141	000342	012746 	000000G			MOV	#XMIT0,-(SP)	;GET BASE OF MOVE VECTOR                        ;**-1
    142	000346	162716 	000000G			SUB	#MSBLGH,(SP)	;CALCULATE MOVE ADDRESS
    143	000352	004736 				CALL	@(SP)+		;MOVE SAVED INFO BACK INTO CONTEXT AREA         ;**NEW**
    144	000354	012601 				MOV	(SP)+,R1	;++021 GET VIRT LOCN OF CONTEXT SAVE BLK        ;**NEW**
    145	000356	005010 				CLR	(R0)		;CLEAR LINK                                     ;**-1
    146	000360	004767 	000000G			CALL	REMMAC		;RETURN BLOCK FOR DEPOSIT
    147	000364	005367 	000000G			DEC	MACLVL		;DECREMENT LEVEL COUNT
    148	000370	000207 				RETURN
    149
    150
    151						.ENDC
    152
    153		000001 				.END
REPT	MACRO M1108  05-DEC-77 23:32  PAGE 4-3
SYMBOL TABLE

ABSEXP= ****** GX	ILVL  = 000004   	MT.RPT= 177601   	SETPF1= ****** GX	XEDPIC= 000000
ARGCNT= ****** GX	IRP     000154RG    002	OBJLEN= 000052   	SMLLEN= 000120   	XEDPNC= 000000
ARGMAX= ****** GX	LINLEN= 000204   	PROMA = ****** GX	SRCLEN= 000204   	XFCSQN= 000000
BPMB  = 000020   	LPP   = 000074   	PROMCF= ****** GX	STLLEN= 000100   	XFLTG = 000000
CNDMEX= ****** GX	LSTLEN= 000204   	PROMT = ****** GX	TTLLEN= 000040   	XMIT0 = ****** GX
CPL   = 000120   	MACLVL= ****** GX	REMMAC= ****** GX	WCIMT = ****** GX	XOPEXP= 000000
DECMAC= ****** GX	MACWRT= ****** GX	REPT    000000RG    002	XBSRCH= 000000   	XSUBD = 000000
DMALST= ****** GX	MACWTV= ****** GX	REPTF   000060R     002	XCREF = 000000   	XZERR = 000000
ENDLIN= ****** GX	MPOP    000276R     002	RLDLEN= 000052   	XEDABS= 000000   	X45   = 000000
ENDMAC  000122RG    002	MPUSH = ****** GX	RMARG = ****** GX	XEDCDR= 000000   	YQCMO = 000000
ERRBTS= ****** GX	MSBARG= ****** GX	RSX11M= 000000   	XEDCRF= 000000   	ZAP   = ****** GX
ERR.A = ****** GX	MSBCNT= ****** GX	R$$11M= 000000   	XEDFPT= 000000   	$CVRL2= ****** GX
GETBLK= ****** GX	MSBLGH= ****** GX	SETCHR= ****** GX	XEDLC = 000000   	$UNLPG= ****** GX
GMARG = ****** GX	MT.IRP= 177602

. ABS.	000000	   000
      	000000	   001
PUREI 	000372	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2344 WORDS  ( 10 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:22
[45,10]REPT,[45,20]REPT/-SP=[45,30]RSXPAR,MPARAM,GENMC,REPT
ROLHD	MACRO M1108  05-DEC-77 23:32  PAGE 4


      1						.TITLE	ROLHD
      2						.IDENT	/X07.02/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 10755
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X07.02                                                                ;**NEW**
     24					;                                                                               ;**-1
     25					; B. BOWERING
     26					;
     27					;	MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 10-FEB-73
     30					;	C.A. D'ELIA	16-NOV-73	009
     31					;	C.A. D'ELIA	10-JAN-74	010
     32					;	C.A. D'ELIA	25-JAN-74	011
     33					;	H.A. NICHOLS	18-JUN-74	017
     34					;	C.A. D'ELIA	01-AUG-74	017
     35					;	C.A. D'ELIA	31-DEC-74	018
     36					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     37					;	C.A. D'ELIA	01-NOV-75	022	(CREF)                          ;**NEW**
     38					;	D.N. CUTLER	21-AUG-76	025	(KEYWORD MACROS)                ;**NEW**
     39					;                                                                               ;**NEW**
     40					;
     41					                                                                                ;**NEW**
     42					;                                                                               ;**NEW**
     43					; ROUTINES TO SEARCH REAL MEMORY TABLES (ROLLS) AND                             ;**NEW**
     44					; TO SEARCH, INSERT, ETC VIRTUAL MEMORY LISTS.                                  ;**NEW**
     45					;                                                                               ;**NEW**
     46					                                                                                ;**-14
     47	000000					PURE	PUREI,I		;++017
     48					;++011
     49					;
     50					; **-OSRCH--SEARCH PERMANENT SYMBOL TABLE (PST) FOR AN OPCODE                   ;**NEW**
     51					;                                                                               ;**NEW**
     52					; NOTE ON 'OSRCH':  SEARCHING OF THE PERMANENT SYMBOL TABLE IS PERFORMED
     53					; IN TWO PHASES. FIRST, THE SHORT-ENTRY TABLE (SSTROL) IS SCANNED. IN
     54					; THIS TABLE ARE FOUND ENTRIES FOR 3-LETTER OPCODES AND FOR THOSE WHOSE
     55					; FOURTH LETTER IS THE BYTE SUFFIX, "B". IF AN ENTRY IS FOUND, IT IS
     56					; RE-FORMATTED TO THE NORMAL 4-WORD STRUCTURE FOR LATER PROCESSING. IF
     57					; NO MATCH IS MADE, THEN THE REGULAR 4-WORD PST IS SEARCHED.
ROLHD	MACRO M1108  05-DEC-77 23:32  PAGE 4-1


     58					;
     59					;--011
     60	000000				OSRCH::				;++011 SEARCH PERMANENT SYMBOL TABLE
     61	000000					SAVREG			;++011 SAVE REGISTERS
     62	000004					SETXPR			;++011 SET EXPRESSION REGISTERS
     63	000010	005721 				TST	(R1)+		;++011 POINT R1 TO SECOND HALF OF SYMBOL
     64	000012	011146 				MOV	(R1),-(SP)	;++011 SAVE SECOND HALF OF SYMBOL
     65	000014	001403 				BEQ	5$		;++017 SECOND WORD NULL--ALWAYS SCAN SST        ;**-5
     66	000016	022716 				CMP	(PC)+,(SP)	;++017 NOT NULL--IS IT 'B'?
     67	000020	006200 				.RAD50	/B  /		;++017
     68	000022	001020 				BNE	20$		;++017 NO, DON'T SEARCH SHORT SYMBOL TABLE
     69	000024				5$:				;++017
     70	000024	012700 	000000G			MOV	#SSTROL,R0	;++011 FIRST SCAN SHORT ENTRY TABLE             ;**-4
     71	000030	004767 	000444 			CALL	SCANW		;++011
     72	000034	001413 				BEQ	20$		;++011 NO MATCH, SKIP TO SEARCH FULL TBL
     73	000036	005716 				TST	(SP)		;++011 FOUND, IS 2ND HALF BLANK?
     74	000040	001405 				BEQ	10$		;++011 YES, SKIP TO RE-FORMAT ENTRY
     75	000042	032711 	000000G			BIT	#B$YTOP,(R1)	;++011 IS A BYTE SUFFIX LEGAL?
     76	000046	001406 				BEQ	20$		;++011 NO, SKIP TO SEARCH FULL TABLE
     77	000050	052713 	100000 			BIS	#100000,(R3)	;++011 YES, INDICATE BYTE OPCODE                ;**-3
     78	000054	011314 			10$:	MOV	(R3),(R4)	;++011 RE-FORMAT 3-WORD SHORT ENTRY...
     79	000056	011113 				MOV	(R1),(R3)	;++011 ... TO LOOK LIKE A REGULAR...
     80	000060	012611 				MOV	(SP)+,(R1)	;++011 ... 4-WORD ENTRY
     81					                                                                                ;**NEW**
     82					                                                                                ;**NEW**
     83						.IF NDF	XCREF		;++022                                          ;**NEW**
     84					                                                                                ;**NEW**
     85						MOV	#PSTROL,ROLNDX	;++022 FOR CREF PURPOSES, SUB PST CODE          ;**NEW**
     86					                                                                                ;**NEW**
     87						.ENDC			;++022                                          ;**NEW**
     88					                                                                                ;**NEW**
     89					                                                                                ;**NEW**
     90	000062	000406 				BR	30$		;++011 SKIP TO LEAVE                            ;**-1
     91	000064	012611 			20$:	MOV	(SP)+,(R1)	;++011 RESTORE 2ND HALF OF SYMBOL
     92	000066	001404 				BEQ	30$		;++018 IF NULL, DON'T SEARCH 4-WORD TABLE
     93	000070					SEARCH	PSTROL		;++011 SEARCH NORMAL PST
     94	000100	000207 			30$:	RETURN			;++011
     95
     96					                                                                                ;**NEW**
     97					;                                                                               ;**NEW**
     98					; **-MSRCH--SEARCH THE MACRO NAME LIST                                          ;**NEW**
     99					;                                                                               ;**NEW**
    100					                                                                                ;**NEW**
    101						.IF NDF	XMACRO
    102					                                                                                ;**NEW**
    103	000102	012700 	000000G		MSRCH::	MOV	#MACLST,R0	;++021 PUT LIST NUMBER IN R0                    ;**NEW**
    104	000106					CALLR	SEARCH		;++021 SEARCH MACRO NAME LIST AND RETURN        ;**NEW**
    105					                                                                                ;**NEW**
    106						.ENDC                                                                   ;**-2
    107
    108					                                                                                ;**NEW**
    109					;                                                                               ;**NEW**
    110					; **-LSRCH--SEARCH THE LOCAL SYMBOL LIST                                        ;**NEW**
    111					;                                                                               ;**NEW**
    112					                                                                                ;**NEW**
    113						.IF NDF	XEDLSB
    114	000112	105767 	000000'		LSRCH::	TSTB	LSFLAG		;++017 IS THERE NEED FOR A NEW BLOCK?
ROLHD	MACRO M1108  05-DEC-77 23:32  PAGE 4-2


    115	000116	001004 				BNE	1$		;++017 BRANCH IF NOT
    116	000120	105267 	000000'			INCB	LSFLAG		;++017 FLAG START OF NEW BLOCK
    117	000124	005267 	000002'			INC	LSYBKN		;BUMP BLOCK NUMBER
    118	000130	012700 	000000G		1$:	MOV	#SYMBOL,R0
    119	000134	016720 	000002'			MOV	LSYBKN,(R0)+	;MOVE INTO "SYMBOL"
    120	000140	016710 	000000G			MOV	VALUE,(R0)
    121	000144	001003 				BNE	3$		;IF NE OKAY
    122	000146					ERROR	T		;ZERO FLAG ERROR
    123	000154				3$:	SEARCH	LSYLST		;++021 SEARCH THE LOCAL SYMBOL LIST             ;**NEW**
    124	000164	001413 				BEQ	10$		;++009 SKIP IF NOT SUCCESSFUL                   ;**-1
    125	000166	016767 	000000G	000000G		MOV	MODE,VALUE	;++009 ELSE, RE-FORMAT ENTRY
    126	000174	016746 	000004'			MOV	LSBFGS,-(SP)	;++017 GET THE P-SECTION FLAGS WORD
    127	000200	042716 	000337 			BIC	#377-<RELFLG>,(SP)  ;++009 SAVE RELOCATION FLAG
    128	000204	052716 	000012 			BIS	#DEFFLG!LBLFLG,(SP) ;++009 SET DEFINED AND LABEL FLAGS
    129	000210	012667 	000000G			MOV	(SP)+,MODE	;++009 SET THE FLAGS/SECTOR WORD
    130	000214				10$:				;++009
    131	000214	000207 				RETURN
    132
    133	000000					.PSECT	IMPPAS,D,GBL,RW	;++017
    134	000000				LSFLAG::.BLKB	1		;++017 CLEARED WHEN NEW BLOCK IS NEEDED
    135	000001				LSGBAS::.BLKB	1		;++017 BASE FOR AUTO-GENERATED SYMBOLS
    136	000002				LSYBKN::.BLKW	1		;BLOCK NUMBER
    137	000004				LSBFGS::.BLKW	1		;++017 LOCAL BLOCK'S P-SECTION FLAGS
    138
    139	000006					PURE	PUREI,I		;++017
    140
    141						.ENDC			;++021                                          ;**NEW**
    142					                                                                                ;**NEW**
    143					                                                                                ;**NEW**
    144					;                                                                               ;**NEW**
    145					; **-SSRCH--SEARCH THE USER SYMBOL LIST (OR RESOLVE IN                          ;**NEW**
    146					;		STANDARD REGISTER TABLE)                                        ;**NEW**
    147					;                                                                               ;**NEW**
    148
    149
    150	000216	032767 	000007 	000000G	SSRCH::	BIT	#7,SYMBOL	;++017 ROUGH TEST TO ELIMINATE SOME ...
    151	000224	001011 				BNE	10$		;++017 ... REGISTER ROLL SCANS
    152	000226	032767 	000000G	000000G		BIT	#ED.REG,EDMASK	;++017 ARE DEFAULT REGISTERS DISABLED?
    153	000234	001005 				BNE	10$		;++017 YES, ONLY SEARCH USER TABLE
    154	000236					SCAN	REGROL		;++017 ELSE, SCAN DEFAULT REGISTERS
    155	000246	001126 				BNE	RTN		;++017 LEAVE IF MATCH FOUND
    156	000250	016700 	000010'		10$:	MOV	$SYPAR,R0	;++021 GET ADDR OF SYMTBL PARTITION LIST        ;**NEW**
    157	000254	026720 	000000G		100$:	CMP	SYMBOL,(R0)+	;++021 IS SYMBOL IN THIS SUB-LIST?              ;**NEW**
    158	000260	103406 				BLO	200$		;++021 IF LO YES                                ;**NEW**
    159	000262	101003 				BHI	120$		;++021 IF HI NO                                 ;**NEW**
    160	000264	026710 	000002G			CMP	SYMBOL+2,(R0)	;++021 EQ -- CHECK SECOND HALF OF TAG           ;**NEW**
    161	000270	103402 				BLO	200$		;++021 IF LO SYMBOL IN THIS SUB-LIST            ;**NEW**
    162	000272	005720 			120$:	TST	(R0)+		;++021 POINT TO NEXT SUB-LIST TAG               ;**NEW**
    163	000274	000767 				BR	100$		;++021 REPEAT TEST                              ;**NEW**
    164	000276	005740 			200$:	TST	-(R0)		;++021 BACKUP TO FIRST WORD OF TAG              ;**NEW**
    165	000300	166700 	000010'			SUB	$SYPAR,R0	;++021 CALC OFFSET FROM PARTN TABLE START       ;**NEW**
    166	000304	006200 				ASR	R0		;++021 CONVERT IT TO SINGLE-WORD OFFSET         ;**NEW**
    167	000306	066700 	000014'			ADD	$SYLHD,R0	;++021 CALC ADDR OF THE SUB-LIST HEAD           ;**NEW**
    168	000312	011067 	000000G			MOV	(R0),BASSYM	;++021 USE IT AS FIRST ENTRY IN LIST            ;**NEW**
    169	000316	010067 	000016'			MOV	R0,SUBLHD	;++021 SAVE ADDR OF THE LIST HEAD-- IT          ;**NEW**
    170									;++021 IS UPDATED BY INSERT                     ;**NEW**
    171	000322	012700 	000000G			MOV	#SYMLST,R0	;++021 SPECIFY SYMBOL LIST NUMBER               ;**NEW**
ROLHD	MACRO M1108  05-DEC-77 23:32  PAGE 4-3


    172					                                                                                ;**-1
    173					                                                                                ;**-1
    174					                                                                                ;**NEW**
    175					;                                                                               ;**NEW**
    176					; **-SEARCH--SEARCH THE SPECIFIED (REAL MEMORY) TABLE OR                        ;**NEW**
    177					;		(VIRTUAL MEMORY) LIST                                           ;**NEW**
    178					;                                                                               ;**NEW**
    179					;	IF A REAL MEMORY TABLE IS CONCERNED, A BINARY SEARCH IS                 ;**NEW**
    180					;	PERFORMED.  FOR THIS THE TABLE ENTRIES MUST BE 4-WORDS LONG.            ;**NEW**
    181					;                                                                               ;**-2
    182
    183	000326				SEARCH::SETROL			;BINARY SEARCH
    184	000332	020527 	000000G			CMP	R5,#VM$LST	;++021 IS THIS A VIRTUAL MEMORY LIST?           ;**NEW**
    185	000336	003422 				BLE	VSCAN		;++021 IF LE YES                                ;**NEW**
    186
    187
    188						.IF DF	XBSRCH		;++018
    189
    190
    191	000340	000474 				BR	SCANA		;++009 NO BINARY SRCH--JUST LINEAR SCAN
    192
    193						.IFF			;++009
    194
    195						MOV	R1,-(SP)	;++009 SAVE BASE ADDR OF ROLL
    196						SUB	R3,R2		;CALCULATE HIGH AND LOW BOUNDS                  ;**-2
    197						MOV	R1,R0		;
    198						BIC	#177770,(SP)	;
    199					1$:	MOV	R0,R1		;CALCULATE TRIAL INDEX
    200						ADD	R2,R1		;
    201						ROR	R1		;HALVE RESULT
    202						BIC	#7,R1		;CLEAR GARBAGE BITS
    203						BIS	(SP),R1		;
    204						CMP	(R1),(R4)	;COMPARE HIGH PARTS
    205						BHI	3$		;IF HI SET NEW HIGH LIMIT
    206						BLO	2$		;IF LO SET NEW LOW LIMIT
    207						CMP	2(R1),2(R4)	;COMPARE LOW PARTS
    208						BEQ	6$		;IF EQ HIT
    209						BHI	3$		;IF HI SET NEW HIGH LIMIT
    210					2$:	MOV	R1,R0		;SET NEW LOW LIMIT
    211						ADD	R3,R0		;REDUCE BY ONE MORE
    212						CMP	R0,R2		;ANY MORE TO SEARCH?
    213						BLOS	1$		;IF LOS YES
    214						ADD	R3,R1		;POINT TO PROPER ENTRY
    215						BR	5$		;EXIT
    216					3$:	MOV	R1,R2		;SE NEW HIGH LIMIT
    217						SUB	R3,R2		;REDUCE BY ONE MORE
    218						CMP	R0,R2		;ANY MORE TO SEARCH?
    219						BLOS	1$		;IF LOS YES
    220					5$:	CLR	R0		;SET FALSE FLAG
    221					6$:	TST	(SP)+		;CLEAN STACK
    222						BR	SCANX		;VAMMOOSA
    223
    224						.IFTF			;++009
    225
    226					;                                                                               ;**NEW**
    227					; **-NEXT--GET NEXT ENTRY IN (VIRTUAL MEMORY) LIST                              ;**NEW**
    228					;                                                                               ;**NEW**
ROLHD	MACRO M1108  05-DEC-77 23:32  PAGE 4-4


    229					                                                                                ;**NEW**
    230	000342	004767 	000630 		NEXT::	CALL	SETLST		;++021 SETUP FOR LIST OPERATIONS                ;**NEW**
    231	000346	016701 	000002'			MOV	$LSPNT,R1	;++021 GET VIRT LOCN OF CURRENT ENTRY           ;**NEW**
    232	000352	001004 				BNE	100$		;++021 IF NE NOT AT START OF LIST               ;**NEW**
    233	000354	016501 	000000G			MOV	$LSBAS(R5),R1	;++021 ELSE, GET VIRT LOCN OF 1ST ENTRY         ;**NEW**
    234	000360	001501 				BEQ	SCANXF		;++021 IF EQ LIST IS EMPTY--EXIT FAIL           ;**NEW**
    235	000362	000405 				BR	200$		;++021 ELSE, BRANCH INTO COMMON CODE            ;**NEW**
    236	000364	004767 	000000G		100$:	CALL	$CVRL		;++021 GET REAL ADDR OF ENTRY IN R0             ;**NEW**
    237	000370	005710 				TST	(R0)		;++021 TEST FOR END OF LIST                     ;**NEW**
    238	000372	001474 				BEQ	SCANXF		;++021 IF EQ END--EXIT FAIL                     ;**NEW**
    239	000374	011001 				MOV	(R0),R1		;++021 ELSE, GET VIRT LOCN OF NEXT ENTRY        ;**NEW**
    240	000376	004767 	000000G		200$:	CALL	$CVRL		;++021 GET REAL ADDR OF NEXT ENTRY              ;**NEW**
    241	000402	000426 				BR	VSCANX		;++021 USE COMMON SUCCESS EXIT CODE             ;**NEW**
    242					                                                                                ;**NEW**
    243					                                                                                ;**NEW**
    244	000404	005046 			VSCAN:	CLR	-(SP)		;++021 USE LISTHEAD AS VIRT LOCN OF PREV        ;**NEW**
    245	000406	005701 				TST	R1		;++021 CHECK VIRT LOCN OF FIRST ENTRY           ;**NEW**
    246	000410	001420 				BEQ	200$		;++021 IF EQ EMPTY LIST--EXIT FAIL              ;**NEW**
    247	000412	004767 	000000G		50$:	CALL	$CVRL		;++021 GET REAL ADDR OF ENTRY IN R0             ;**NEW**
    248	000416	026014 	000002 			CMP	2(R0),(R4)	;++021 COMPARE W/ 1ST HALF OF SYMBOL            ;**NEW**
    249	000422	001004 				BNE	100$		;++021 IF NE NO MATCH                           ;**NEW**
    250	000424	026064 	000004 	000002 		CMP	4(R0),2(R4)	;++021 COMPARE W/ 2ND HALF OF SYMBOL            ;**NEW**
    251	000432	001411 				BEQ	300$		;++021 IF EQ MATCH--EXIT SUCCESS                ;**NEW**
    252					                                                                                ;**NEW**
    253						.IF DF	XMACRO		;++025                                          ;**NEW**
    254					                                                                                ;**NEW**
    255					100$:	BHI	200$		;++025 IF HI NOT IN TABLE--EXIT FAIL            ;**NEW**
    256					                                                                                ;**NEW**
    257						.IFF			;++025                                          ;**NEW**
    258					                                                                                ;**NEW**
    259	000434	103403 			100$:	BLO	110$		;++025 IF LO MAY BE IN TABLE                    ;**NEW**
    260	000436	022705 	000000G			CMP	#DMALST,R5	;++025 SEARCHING DUMMY ARGUMENT ROLL?           ;**NEW**
    261	000442	001003 				BNE	200$		;++025 IF NE NO--EXIT FAIL                      ;**NEW**
    262	000444				110$:				;++025 REF LABEL                                ;**NEW**
    263					                                                                                ;**NEW**
    264						.ENDC			;++025                                          ;**NEW**
    265					                                                                                ;**NEW**
    266	000444	010116 				MOV	R1,(SP)		;++021 ELSE, SAVE THIS VIRT LOCN (FOR           ;**NEW**
    267									;++021 NEXT PREVIOUS ENTRY)                     ;**NEW**
    268	000446	011001 				MOV	(R0),R1		;++021 GET VIRT LOCN OF NEXT ENTRY              ;**NEW**
    269	000450	001360 				BNE	50$		;++021 IF NE NOT AT END OF LIST                 ;**NEW**
    270	000452	005000 			200$:	CLR	R0		;++021 SET FAILURE INDICATOR                    ;**NEW**
    271	000454	011601 				MOV	(SP),R1		;++021 RETURN VIRT LOCN OF PREV ENTRY           ;**NEW**
    272	000456	005726 			300$:	TST	(SP)+		;++021 CLEAN STACK                              ;**NEW**
    273					                                                                                ;**NEW**
    274	000460	010167 	000002'		VSCANX:	MOV	R1,$LSPNT	;++021 RETURN VIRT LOCN OF A LIST ENTRY         ;**NEW**
    275	000464	010067 	000004'			MOV	R0,$LSFLG	;++021 SAVE SUCCESS/FAIL INDICATOR              ;**NEW**
    276	000470	001447 				BEQ	SCANYF		;++021 IF EQ FAIL, USE COMMON EXIT CODE         ;**NEW**
    277	000472	010001 				MOV	R0,R1		;++021 ELSE, PUT REAL ADDR OF ENTRY IN R0       ;**NEW**
    278	000474	005721 				TST	(R1)+		;++021 BYPASS LINK WORD                         ;**NEW**
    279	000476	000440 				BR	SCANY		;++021 USE COMMON EXIT CODE                     ;**NEW**
    280					                                                                                ;**NEW**
    281					                                                                                ;**NEW**
    282					;                                                                               ;**NEW**
    283					; **-SCANW--SCAN (REAL MEMORY) TABLE FOR 1-WORD MATCH                           ;**NEW**
    284					;                                                                               ;**NEW**
    285					                                                                                ;**NEW**
ROLHD	MACRO M1108  05-DEC-77 23:32  PAGE 4-5


    286	000500				SCANW::	SETROL			;SCAN ONE WORD                                  ;**-7
    287	000504	005000 				CLR	R0		;ASSUME FALSE
    288	000506	005200 			1$:	INC	R0		;TALLY ENTRY COUNT
    289	000510	021411 				CMP	(R4),(R1)	;MATCH?
    290	000512	001432 				BEQ	SCANY		;  YES
    291	000514	060301 				ADD	R3,R1		;NO, INCREMENT POINTER
    292	000516	020102 				CMP	R1,R2		;FINISHED?
    293	000520	103772 				BLO	1$		;  NO
    294	000522	005000 			EXITF:	CLR	R0		;++017 SET FAIL INDICATOR
    295	000524	000207 			RTN:	RETURN			;++017
    296
    297
    298					;                                                                               ;**NEW**
    299					; **-SCAN--SCAN (REAL MEMORY) TABLE FOR 2-WORD MATCH                            ;**NEW**
    300					;                                                                               ;**NEW**
    301					                                                                                ;**NEW**
    302	000526				SCAN::	SETROL			;LINEAR SCAN
    303
    304						.IFT			;++009
    305
    306	000532				SCANA:				;++018 ALT ENTRY FROM SEARCH
    307
    308
    309						.ENDC			;++018 (XBSRCH -- BINARY SEARCH/INSERT)
    310
    311
    312	000532	005000 				CLR	R0		;ASSUME FALSE
    313	000534	020201 			1$:	CMP	R2,R1		;END?
    314	000536	001412 				BEQ	SCANXF		;  YES, EXIT FALSE
    315	000540	005200 				INC	R0
    316	000542	021411 				CMP	(R4),(R1)	;NO, MATCH ON FIRST WORDS?
    317	000544	001004 				BNE	2$		;  YES
    318	000546	026461 	000002 	000002 		CMP	2(R4),2(R1)	;NO, HOW ABOUT SECOND?
    319	000554	001404 				BEQ	SCANX		;  YES
    320	000556	103402 			2$:	BLO	SCANXF		;++021 IF LO NOT IN TABLE                       ;**NEW**
    321	000560	060301 				ADD	R3,R1		;++021 ELSE, POINT TO NEXT ENTRY                ;**NEW**
    322	000562	000764 				BR	1$                                                              ;**-1
    323					                                                                                ;**NEW**
    324	000564	005000 			SCANXF:	CLR	R0		;FALSE EXIT                                     ;**-1
    325	000566	010167 	000002'		SCANX:	MOV	R1,ROLPNT	;SET ENTRY POINTER
    326	000572	010067 	000004'			MOV	R0,ROLUPD	;SAVE FLAG                                      ;**-1
    327	000576	001404 				BEQ	SCANYF		;++021 BRANCH IF NOT FOUND                      ;**NEW**
    328	000600	010402 			SCANY:	MOV	R4,R2		;POINTER TO "SYMBOL"                            ;**-1
    329	000602	005403 				NEG	R3		;NEGATE ENTRY SIZE
    330	000604	000163 	000000G			JMP	XMIT0(R3)	;FOUND, XFER ARGUMENTS
    331					                                                                                ;**NEW**
    332	000610	022424 			SCANYF:	CMP	(R4)+,(R4)+	;++021 BYPASS THE SYMBOL NAME                   ;**NEW**
    333	000612	006203 				ASR	R3		;GET WORD COUNT                                 ;**-1
    334	000614	162703 	000002 			SUB	#2,R3		;COMPENSATE FOR ABOVE CMP
    335	000620	003403 				BLE	3$		;BRANCH IF END
    336	000622	005024 			2$:	CLR	(R4)+		;CLEAR WORD
    337	000624					SOB	R3,2$
    338	000630	000207 			3$:	RETURN
    339					                                                                                ;**NEW**
    340					                                                                                ;**NEW**
    341					;                                                                               ;**NEW**
    342					; **-APPEND--PLACE A NEW ENTRY AT END OF (VIRTUAL MEMORY) LIST                  ;**NEW**
ROLHD	MACRO M1108  05-DEC-77 23:32  PAGE 4-6


    343					;                                                                               ;**NEW**
    344					                                                                                ;**NEW**
    345	000632	004767 	000340 		APPEND::CALL	SETLST		;++021 SETUP FOR LIST OPERATIONS                ;**NEW**
    346	000636	010267 	000002'			MOV	R2,$LSPNT	;++021 SET LIST POINTER TO END                  ;**NEW**
    347	000642	005067 	000004'			CLR	$LSFLG		;++021 SET SEARCH FAIL FLAG FOR INSERT          ;**NEW**
    348	000646	000423 				BR	INSERF                                                          ;**-4
    349					                                                                                ;**NEW**
    350					                                                                                ;**NEW**
    351					;                                                                               ;**NEW**
    352					; **-INSERT--PLACE OR REPLACE AN ENTRY IN (VIRTUAL MEMORY) LIST                 ;**NEW**
    353					;                                                                               ;**NEW**
    354					                                                                                ;**NEW**
    355	000650	004767 	000326 		INSERT::CALL	SETLSA		;++021 SETUP FOR LIST OPERATIONS                ;**NEW**
    356	000654	020527 	000000G			CMP	R5,#REGROL	;++021 IS THIS A REGISTER SYMBOL REPLACE?       ;**NEW**
    357	000660	001016 				BNE	INSERF		;++021 IF NE NO                                 ;**NEW**
    358	000662	016700 	000002'			MOV	ROLPNT,R0	;++021 ELSE, POINT TO REGISTER ENTRY            ;**NEW**
    359	000666	026460 	000004 	000004 		CMP	4(R4),4(R0)	;++017 THE DEFAULT REGISTER ROLL IS NEVER ...   ;**-7
    360	000674	001004 				BNE	10$		;++017 ... WRITTEN INTO, BUT A CHECK IS ...
    361	000676	026460 	000006 	000006 		CMP	6(R4),6(R0)	;++017 ... MADE TO INSURE THAT USER DOES ...
    362	000704	001501 				BEQ	INSRTN		;++021 ... NOT TRY TO REDEFINE REGISTERS --     ;**NEW**
    363	000706				10$:	ERROR	R		;++017 ... IF SO, AN 'R' ERROR IS ...           ;**-1
    364	000714	000475 				BR	INSRTN		;++021 ... ISSUED                               ;**NEW**
    365					                                                                                ;**NEW**
    366	000716	016746 	000002'		INSERF:	MOV	$LSPNT,-(SP)	;++021 SAVE VIRT LOCN OF LIST ENTRY             ;**NEW**
    367	000722	001004 				BNE	100$		;++021 IF NE NOT AT START OF LIST               ;**NEW**
    368	000724	010500 				MOV	R5,R0		;++021 ELSE, POINT R0 TO THE ...                ;**NEW**
    369	000726	062700 	000000G			ADD	#$LSBAS,R0	;++021 LIST HEAD                                ;**NEW**
    370	000732	000406 				BR	200$		;++021 BRANCH INTO COMMON CODE                  ;**NEW**
    371	000734	011601 			100$:	MOV	(SP),R1		;++021 GET VIRT LOCN OF ENTRY IN R1             ;**NEW**
    372	000736	004767 	000000G			CALL	$CVRL		;++021 GET ITS REAL ADDR IN R0                  ;**NEW**
    373	000742	005767 	000004'			TST	$LSFLG		;++021 IS THIS INSERT OR REPLACE?               ;**NEW**
    374	000746	001041 				BNE	310$		;++021 IF NE REPLACE                            ;**NEW**
    375	000750	010046 			200$:	MOV	R0,-(SP)	;++021 INSERT--SAVE REAL ADDR OF LINK           ;**NEW**
    376	000752	020527 	000000G			CMP	R5,#ZP$LST	;++021 CAN THIS LIST BE 'ZAPPED'                ;**NEW**
    377	000756	003412 				BLE	210$		;++021 IF LE NO                                 ;**NEW**
    378	000760	016701 	000006'			MOV	ZAPLST,R1	;++021 YES, GET VIRT LOCN OF A FREE BLOCK       ;**NEW**
    379	000764	001407 				BEQ	210$		;++021 IF EQ FREE LIST IS EMPTY                 ;**NEW**
    380	000766	004767 	000000G			CALL	$CVRL		;++021 ELSE, GET ITS REAL ADDR IN R0            ;**NEW**
    381	000772	011067 	000006'			MOV	(R0),ZAPLST	;++021 REMOVE ENTRY FROM LIST                   ;**NEW**
    382	000776	004767 	000000G			CALL	$WRMPG		;++021 MARK ITS PAGE DIRTY (IN ADVANCE)         ;**NEW**
    383	001002	000405 				BR	220$		;++021 BRANCH INTO COMMON CODE                  ;**NEW**
    384	001004	010301 			210$:	MOV	R3,R1		;++021 GET SIZE OF ENTRY NEEDED                 ;**NEW**
    385	001006	062701 	000002 			ADD	#2,R1		;++021 ACCOUNT FOR EXTRA LINK WORD              ;**NEW**
    386	001012	004767 	000000G			CALL	$ALVRT		;++021 ALLOC A BLOCK FROM VIRT MEMORY           ;**NEW**
    387	001016	017610 	000000 		220$:	MOV	@(SP),(R0)	;++021 LINK BLOCK TO NEXT ENTRY                 ;**NEW**
    388	001022	010136 				MOV	R1,@(SP)+	;++021 LINK BLOCK TO PREVIOUS ENTRY             ;**NEW**
    389	001024	005265 	000000G			INC	$LSCNT(R5)	;++021 INCREMENT LIST ENTRY COUNT               ;**NEW**
    390	001030	021665 	000000G			CMP	(SP),$LSTOP(R5)	;++021 WAS PREVIOUS ENTRY END OF LIST?          ;**NEW**
    391	001034	001002 				BNE	300$		;++021 IF NE NO                                 ;**NEW**
    392	001036	010165 	000000G			MOV	R1,$LSTOP(R5)	;++021 ELSE, RESET END OF LIST POINTER          ;**NEW**
    393	001042	005716 			300$:	TST	(SP)		;++021 WAS PREVIOUS ENTRY THE LIST HEAD?        ;**NEW**
    394	001044	001002 				BNE	310$		;++021 IF NE NO                                 ;**NEW**
    395	001046	010165 	000000G			MOV	R1,$LSBAS(R5)	;++021 ELSE, RESET START OF LIST POINTER        ;**NEW**
    396	001052	005720 			310$:	TST	(R0)+		;++021 BYPASS ENTRY LINK WORD                   ;**NEW**
    397	001054	006203 				ASR	R3		;++021 CONVERT ENTRY SIZE TO WORDS              ;**NEW**
    398	001056	012420 			320$:	MOV	(R4)+,(R0)+	;++021 COPY DATA INTO NEW LIST ENTRY            ;**NEW**
    399	001060					SOB	R3,320$		;++021                                          ;**NEW**
ROLHD	MACRO M1108  05-DEC-77 23:32  PAGE 4-7


    400	001064	012601 				MOV	(SP)+,R1	;++021 GET VIRT LOCN OF MODIFIED ENTRY          ;**NEW**
    401	001066	001402 				BEQ	400$		;++021 IF EQ IT WAS LIST HEAD                   ;**NEW**
    402	001070					CALLR	$WRMPG		;++021 MARK ITS PAGE DIRTY                      ;**NEW**
    403	001074	020527 	000000G		400$:	CMP	R5,#SYMLST	;++021 IS THIS THE SYMBOL TABLE?                ;**NEW**
    404	001100	001003 				BNE	INSRTN		;++021 IF NE NO                                 ;**NEW**
    405	001102	016577 	000000G	000016'		MOV	$LSBAS(R5),@SUBLHD  ;++021 ELSE, UPDATE SUB-LIST POINTER        ;**NEW**
    406	001110	000207 			INSRTN:	RETURN			;++021                                          ;**NEW**
    407					                                                                                ;**NEW**
    408					                                                                                ;**NEW**
    409					;                                                                               ;**NEW**
    410					; **-ZAP--EMPTY A (VIRTUAL MEMORY) LIST                                         ;**NEW**
    411					;                                                                               ;**NEW**
    412					                                                                                ;**NEW**
    413	001112	010146 			ZAP::	MOV	R1,-(SP)	;++021 SAVE R1                                  ;**NEW**
    414	001114	016001 	000000G			MOV	$LSTOP(R0),R1	;++021 PUT VIRT LOCN OF LAST ENTRY IN R1        ;**NEW**
    415	001120	001424 				BEQ	200$		;++021 IF EQ LIST IS EMPTY                      ;**NEW**
    416	001122	010346 				MOV	R3,-(SP)	;++021 ELSE, SAVE R3                            ;**NEW**
    417	001124	016046 	000000G			MOV	$LSBAS(R0),-(SP)  ;++021 SAVE VIRT LOCN OF FIRST ENTRY          ;**NEW**
    418	001130	005060 	000000G			CLR	$LSBAS(R0)	;++021 CLEAR START OF LIST POINTER              ;**NEW**
    419	001134	005060 	000000G			CLR	$LSTOP(R0)	;++021 CLEAR END OF LIST POINTER                ;**NEW**
    420	001140	005060 	000000G			CLR	$LSCNT(R0)	;++021 CLEAR LIST ENTRY COUNT                   ;**NEW**
    421	001144	016703 	000006'			MOV	ZAPLST,R3	;++021 GET VIRT LOCN OF FIRST FREE BLOCK        ;**NEW**
    422	001150	001405 				BEQ	100$		;++021 IF EQ FREE LIST IS EMPTY                 ;**NEW**
    423	001152	004767 	000000G			CALL	$CVRL2		;++021 ELSE, GET REAL ADDR OF LAST ...          ;**NEW**
    424									;++021 ENTRY IN LIST TO ZAP                     ;**NEW**
    425	001156	010310 				MOV	R3,(R0)		;++021 LINK IT TO START OF FREE LIST            ;**NEW**
    426	001160	004767 	000000G			CALL	$WRMPG		;++021 MARK ITS PAGE DIRTY                      ;**NEW**
    427	001164	012667 	000006'		100$:	MOV	(SP)+,ZAPLST	;++021 RESET START OF FREE LIST                 ;**NEW**
    428	001170	012603 				MOV	(SP)+,R3	;++021 RESTORE R3                               ;**NEW**
    429	001172	012601 			200$:	MOV	(SP)+,R1	;++021 RESTORE R1                               ;**NEW**
    430	001174	000207 				RETURN			;++021                                          ;**NEW**
    431					                                                                                ;**NEW**
    432					                                                                                ;**NEW**
    433					                                                                                ;**NEW**
    434					                                                                                ;**NEW**
    435	001176				SETLST:				;++021 REF LABEL                                ;**NEW**
    436	001176	010067 	000000'		SETROL:	MOV	R0,ROLNDX	;++017 SET ROLL NUMBER                          ;**-35
    437	001202				SETLSA:				;++021 REF LABEL                                ;**NEW**
    438	001202	012600 			SETROF:	MOV	(SP)+,R0	;++017 SAVE RETURN ADDRESS
    439	001204					SAVREG			;SAVE REGISTERS
    440	001210	010546 				MOV	R5,-(SP)	;  AND CURRENT CHARACTER
    441	001212	016705 	000000'			MOV	ROLNDX,R5	;SET INDEX
    442	001216	016501 	000000G			MOV	ROLBAS(R5),R1	;CURRENT BASE
    443	001222	016502 	000000G			MOV	ROLTOP(R5),R2	;CURRENT TOP
    444	001226	116503 	000000G			MOVB	ROLSIZ(R5),R3	;ENTRY SIZE
    445	001232	012704 	000000G			MOV	#SYMBOL,R4	;POINTER TO SYMBOL
    446	001236	004710 				CALL	(R0)		;CALL PROPER ROUTINE
    447	001240	012605 				MOV	(SP)+,R5	;RESTORE CURRENT CHARACTER
    448	001242	000207 				RETURN			;  AND REST OF REGS
    449
    450	000000					.PSECT	IMPURE,D,RW	;++017
    451	000000				$LSNDX::			;++021 REF LABEL                                ;**NEW**
    452	000000				ROLNDX::.BLKW	1		;ROLL INDEX
    453					                                                                                ;**NEW**
    454	000002				$LSPNT::			;++021 REF LABEL                                ;**NEW**
    455	000002				ROLPNT::.BLKW	1		;++021 LIST/ROLL INSERT POINTER                 ;**NEW**
    456					                                                                                ;**NEW**
ROLHD	MACRO M1108  05-DEC-77 23:32  PAGE 4-8


    457	000004				$LSFLG::			;++021 REF LABEL                                ;**NEW**
    458	000004				ROLUPD::.BLKW	1		;ROLL UPDATE                                    ;**-1
    459					                                                                                ;**NEW**
    460	000006				ZAPLST:	.BLKW	1		;++021 LIST HEAD FOR FREE BLOCKS                ;**NEW**
    461					                                                                                ;**NEW**
    462	000010				$SYPAR::.BLKW	1		;++021 ADDR OF SYMTBL PARTITION TABLE           ;**NEW**
    463	000012				$NMPAR::.BLKW	1		;++021 NUMBER OF SYMTBL PARTITIONS              ;**NEW**
    464	000014				$SYLHD::.BLKW	1		;++021 ADDR OF SYMTBL SUB-LIST HEAD TABLE       ;**NEW**
    465					                                                                                ;**NEW**
    466	000016				SUBLHD:	.BLKW	1		;++021 ADDR OF SUB-LIST HEAD BEING USED         ;**NEW**
    467
    468		000001 				.END
ROLHD	MACRO M1108  05-DEC-77 23:32  PAGE 4-9
SYMBOL TABLE

AM.DEC= 000040   	CH.XCL= 000047   	GSDT03= 001400   	RLDT01= 000001   	SYMBOL= ****** GX
AM.DEF= 000010   	CPXADD= 000001   	GSDT04= 002000   	RLDT02= 000002   	SYMLST= ****** GX
AM.IMM= 000027   	CPXAND= 000005   	GSDT05= 002400   	RLDT03= 000003   	TAB   = 000011
AM.INC= 000020   	CPXCOM= 000011   	GSDT06= 003000   	RLDT04= 000004   	VALUE = ****** GX
AM.NDX= 000060   	CPXCON= 000020   	ILVL  = 000004   	RLDT05= 000005   	VM$LST= ****** GX
AM.PC = 000007   	CPXDIV= 000004   	INSERF  000716R     002	RLDT06= 000006   	VSCAN   000404R     002
AM.REL= 000067   	CPXFLG= 000200   	INSERT  000650RG    002	RLDT07= 000007   	VSCANX  000460R     002
APPEND  000632RG    002	CPXGLB= 000016   	INSRTN  001110R     002	RLDT10= 000010   	VT    = 000013
ASTFLG= 000114   	CPXIOR= 000006   	LBLFLG= 000002   	RLDT11= 000011   	XBSRCH= 000000
BASSYM= ****** GX	CPXMUL= 000003   	LET.A = 000101   	RLDT15= 000015   	XCREF = 000000
BLKT01= 000001   	CPXNEG= 000010   	LET.B = 000102   	RLDT16= 000016   	XEDABS= 000000
BLKT02= 000002   	CPXOPC= 000010   	LET.C = 000103   	RLDT17= 000017   	XEDCDR= 000000
BLKT03= 000003   	CPXREL= 000017   	LET.D = 000104   	ROLBAS= ****** GX	XEDFPT= 000000
BLKT04= 000004   	CPXSDS= 000013   	LET.E = 000105   	ROLNDX  000000RG    004	XEDLC = 000000
BLKT05= 000005   	CPXSTO= 000012   	LET.F = 000106   	ROLPNT  000002RG    004	XEDPIC= 000000
BLKT06= 000006   	CPXSUB= 000002   	LET.G = 000107   	ROLSIZ= ****** GX	XEDPNC= 000000
B$YTOP= ****** GX	CR    = 000015   	LET.O = 000117   	ROLTOP= ****** GX	XFCSQN= 000000
CH.ADD= 000053   	CSTACC= 000020   	LET.Z = 000132   	ROLUPD  000004RG    004	XFLTG = 000000
CH.AND= 000046   	CSTALO= 000004   	LF    = 000012   	RSX11M= 000000   	XMIT0 = ****** GX
CH.BSL= 000134   	CSTFLG= 000050   	LSBFGS  000004RG    003	RTN     000524R     002	XOPEXP= 000000
CH.COL= 000072   	CSTGBL= 000100   	LSFLAG  000000RG    003	R$$11M= 000000   	XSUBD = 000000
CH.COM= 000054   	CSTMEM= 000001   	LSGBAS  000001RG    003	SAVREG= ****** GX	XZERR = 000000
CH.DIV= 000057   	CSTREL= 000040   	LSRCH   000112RG    002	SCAN    000526RG    002	X45   = 000000
CH.DOL= 000044   	CSTTYP= 000200   	LST.KB= 000001   	SCANA   000532R     002	ZAP     001112RG    002
CH.DOT= 000056   	DEFFLG= 000010   	LST.LP= 000002   	SCANW   000500RG    002	ZAPLST  000006R     004
CH.EQU= 000075   	DFGFLG= 000020   	LSYBKN  000002RG    003	SCANX   000566R     002	ZP$LST= ****** GX
CH.HSH= 000043   	DIG.0 = 000060   	LSYLST= ****** GX	SCANXF  000564R     002	$ALVRT= ****** GX
CH.IND= 000100   	DIG.9 = 000071   	MACLST= ****** GX	SCANY   000600R     002	$CVRL = ****** GX
CH.IOR= 000041   	DMALST= ****** GX	MDFFLG= 000004   	SCANYF  000610R     002	$CVRL2= ****** GX
CH.LAB= 000074   	EDMASK= ****** GX	MODE  = ****** GX	SEARCH  000326RG    002	$LSBAS= ****** GX
CH.LP = 000050   	ED.REG= ****** GX	MSRCH   000102RG    002	SETLSA  001202R     002	$LSCNT= ****** GX
CH.MUL= 000052   	ERRBTS= ****** GX	NEXT    000342RG    002	SETLST  001176R     002	$LSFLG  000004RG    004
CH.PCT= 000045   	ERR.R = ****** GX	OSRCH   000000RG    002	SETROF  001202R     002	$LSNDX  000000RG    004
CH.QM = 000077   	ERR.T = ****** GX	PSTFLG= 000050   	SETROL  001176R     002	$LSPNT  000002RG    004
CH.QTM= 000042   	EXITF   000522R     002	PSTROL= ****** GX	SETXPR= ****** GX	$LSTOP= ****** GX
CH.RAB= 000076   	FF    = 000014   	REGFLG= 000001   	SPACE = 000040   	$NMPAR  000012RG    004
CH.RP = 000051   	GLBFLG= 000100   	REGROL= ****** GX	SSRCH   000216RG    002	$SYLHD  000014RG    004
CH.SMC= 000073   	GSDT00= 000000   	RELFLG= 000040   	SSTROL= ****** GX	$SYPAR  000010RG    004
CH.SUB= 000055   	GSDT01= 000400   	RLDT00= 000000   	SUBLHD  000016R     004	$WRMPG= ****** GX
CH.UAR= 000136   	GSDT02= 001000

. ABS.	000000	   000
      	000000	   001
PUREI 	001244	   002
IMPPAS	000006	   003
IMPURE	000020	   004
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  3022 WORDS  ( 12 PAGES)
DYNAMIC MEMORY:  4160 WORDS  ( 16 PAGES)
ELAPSED TIME:  00:00:33
[45,10]ROLHD,[45,20]ROLHD/-SP=[45,30]RSXPAR,GENMC,FLGDF,ROLHD
RSDAT	MACRO M1108  05-DEC-77 23:33  PAGE 4


      1						.TITLE	RSDAT
      2						.IDENT	/X09.03/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X09.03                                                                ;**NEW**
     24					;                                                                               ;**-1
     25					; B. BOWERING
     26					;
     27					;	MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 10-FEB-73
     30					;	C.A. D'ELIA	15-NOV-73	007
     31					;	C.A. D'ELIA	10-JAN-74	010
     32					;	C.A. D'ELIA	05-MAR-74	013
     33					;	C.A. D'ELIA	07-APR-74	015
     34					;	C.A. D'ELIA	24-APR-74	016
     35					;	H.A. NICHOLS	18-JUN-74	017
     36					;	C.A. D'ELIA	22-NOV-74	018
     37					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     38					;	C.A. D'ELIA	01-NOV-75	022	(CREF)                          ;**NEW**
     39					;	C.A. D'ELIA	08-SEP-76	027	(EXTEND TASK)                   ;**NEW**
     40					;
     41					;
     42					; RESIDENT DATA BASE
     43
     44					;
     45					; CONDITIONAL STORAGE (CNDTL)
     46					;
     47
     48	000000					.PSECT	IMPPAS,D,GBL,RW	;++017
     49	000000				CNDWRD::.BLKW	1		;TEST WORD
     50	000002				CNDMSK::.BLKW	1		;CONDITION MASK
     51	000004				CNDLVL::.BLKW	1		;NESTING LEVEL
     52	000006				CNDMEX::.BLKW	1		;MEXIT FLAG
     53
     54					;
     55					; DATA DIRECTIVE STORAGE (DATDR)
     56					;
     57
RSDAT	MACRO M1108  05-DEC-77 23:33  PAGE 4-1


     58	000010					.PSECT	IMPPAS,D,GBL,RW	;++017
     59	000010				CRADIX::.BLKW	1		;CURRENT RADIX
     60
     61	000000					.PSECT	IMPURE,D,RW	;++017
     62	000000				PRGTTL::.BLKW	4		;IDENT BLOCK
     63	000010				PRGIDN::.BLKW	4		;
     64
     65					;
     66					; ENABL/DSABL STORAGE (ENBDS)
     67					;
     68					; LOCAL MACROS
     69					;
     70					; GENERATE .ENABL/.DSABL ARGUMENT ROLL
     71					;
     72					; GENEDT MNE,SUBR,INIT
     73					;
     74					; WHERE:
     75					;
     76					;	MNE=A 1 TO 3 CHARACTER ARGUMENT MNEUMONIC.
     77					;	SUBR=ADDRESS OF SUBROUTINE TO BE CALLED WHEN ARGUMENT MNEUMONIC
     78					;		IS ENCOUNTERED. THIS ARGUMENT IS OPTIONAL.
     79					;	INIT=IF NON-NULL, THEN DEFAULT IS DISABLE.
     80					;
     81
     82						.MACRO	GENEDT	MNE,SUBR,INIT                                           ;**NEW**
     83						.RAD50	/MNE/                                                           ;**NEW**
     84						.IF NB	<SUBR>                                                          ;**NEW**
     85						.WORD	SUBR                                                            ;**NEW**
     86						.IFF                                                                    ;**NEW**
     87						.WORD	EDRTN                                                           ;**NEW**
     88						.ENDC                                                                   ;**NEW**
     89					ED.'MNE==TMP                                                                    ;**NEW**
     90					TMP=TMP+TMP                                                                     ;**NEW**
     91						.IF NB	<INIT>                                                          ;**NEW**
     92						.LIST                                                                   ;**NEW**
     93					;  ".DSABL   MNE"  IS DEFAULT                                                   ;**NEW**
     94						.NLIST                                                                  ;**NEW**
     95					EDINIT==EDINIT ! ED.'MNE                                                        ;**NEW**
     96						.ENDC                                                                   ;**NEW**
     97						.ENDM                                                                   ;**NEW**
     98					                                                                                ;**NEW**
     99		000001 			TMP=1				;++021 INIT BIT MASK GENERATOR                  ;**NEW**
    100		000000 			EDINIT==0			;++021 INIT ENABL/DSABL CONTROL BITS            ;**NEW**
    101					                                                                                ;**NEW**
    102					                                                                                ;**NEW**
    103	000020					PURE	EDTSEC,D,GBL	;++021                                          ;**NEW**
    104	000000				EDTBAS::			;++021 REF LABEL                                ;**NEW**
    105					                                                                                ;**NEW**
    106					                                                                                ;**NEW**
    107						.IF NDF	XREL		;++021                                          ;**NEW**
    108						.IF NDF	XEDABS		;++021                                          ;**NEW**
    109						GENEDT	ABS,SECINI,F	;++021                                          ;**NEW**
    110						.ENDC			;++021                                          ;**NEW**
    111						.IFF			;++021                                          ;**NEW**
    112						GENEDT	ABS,SECINI,F	;++021                                          ;**NEW**
    113						.ENDC			;++021                                          ;**NEW**
    114					                                                                                ;**NEW**
RSDAT	MACRO M1108  05-DEC-77 23:33  PAGE 4-2


    115					                                                                                ;**NEW**
    116						.IF NDF	XEDAMA		;++021                                          ;**NEW**
    117	000000					GENEDT	AMA,,F		;++021                                          ;**NEW**
					;  ".DSABL   AMA"  IS DEFAULT                                                   ;**NEW**
    118						.ENDC			;++021                                          ;**NEW**
    119					                                                                                ;**NEW**
    120					                                                                                ;**NEW**
    121						.IF NDF	XEDCDR		;++021                                          ;**NEW**
    122						GENEDT	CDR,,F		;++021                                          ;**NEW**
    123						.ENDC			;++021                                          ;**NEW**
    124					                                                                                ;**NEW**
    125					                                                                                ;**NEW**
    126						.IF NDF	XCREF		;++022                                          ;**NEW**
    127						GENEDT	CRF		;++022                                          ;**NEW**
    128						.ENDC			;++022                                          ;**NEW**
    129					                                                                                ;**NEW**
    130					                                                                                ;**NEW**
    131						.IF NDF	XEDFPT		;++021                                          ;**NEW**
    132						GENEDT	FPT,,F		;++021                                          ;**NEW**
    133						.ENDC			;++021                                          ;**NEW**
    134					                                                                                ;**NEW**
    135					                                                                                ;**NEW**
    136	000004					GENEDT	GBL		;++021                                          ;**NEW**
    137					                                                                                ;**NEW**
    138					                                                                                ;**NEW**
    139						.IF NDF	XEDLC		;++021                                          ;**NEW**
    140						GENEDT	LC,,F		;++021                                          ;**NEW**
    141						.ENDC			;++021                                          ;**NEW**
    142					                                                                                ;**NEW**
    143					                                                                                ;**NEW**
    144						.IF NDF	XEDLSB		;++021                                          ;**NEW**
    145	000010					GENEDT	LSB,LSBTST,F	;++021                                          ;**NEW**
					;  ".DSABL   LSB"  IS DEFAULT                                                   ;**NEW**
    146						.ENDC			;++021                                          ;**NEW**
    147					                                                                                ;**NEW**
    148					                                                                                ;**NEW**
    149						.IF NDF	XEDPIC		;++021                                          ;**NEW**
    150						GENEDT	PIC,,F		;++021                                          ;**NEW**
    151						.ENDC			;++021                                          ;**NEW**
    152					                                                                                ;**NEW**
    153					                                                                                ;**NEW**
    154						.IF NDF	XEDPNC		;++021                                          ;**NEW**
    155						GENEDT	PNC,PNCSET	;++021                                          ;**NEW**
    156						.ENDC			;++021                                          ;**NEW**
    157					                                                                                ;**NEW**
    158					                                                                                ;**NEW**
    159	000014					GENEDT	REG		;++021                                          ;**NEW**
    160					                                                                                ;**NEW**
    161					                                                                                ;**NEW**
    162	000020				EDTTOP::			;++021 REF LABEL                                ;**NEW**
    163					                                                                                ;**NEW**
    164					                                                                                ;**NEW**
    165	000020					PURE	LSBTST,I,GBL	;++021                                          ;**NEW**
    166					                                                                                ;**NEW**
    167					;+                                                                              ;**NEW**
    168					;                                                                               ;**NEW**
    169					;  PROCESS .ENABL/.DSABL LSB  DIRECTIVES                                        ;**NEW**
RSDAT	MACRO M1108  05-DEC-77 23:33  PAGE 4-3


    170					;                                                                               ;**NEW**
    171					;	NOTE:	THIS CODE MAY BE ALLOCATED INTO AN OVERLAY SEGMENT              ;**NEW**
    172					;		CONTAINING THE MODULE 'ENBDS' WITHOUT PAYING FOR                ;**NEW**
    173					;		UNNECESSARY AUTO-LOAD VECTORS.                                  ;**NEW**
    174					;                                                                               ;**NEW**
    175					;-                                                                              ;**NEW**
    176					                                                                                ;**NEW**
    177	000000	001005 			LSBTST:	BNE	EDRTN		;++021 JUST RETURN IF .DSABL REQUESTED          ;**NEW**
    178	000002	005067 	000000G			CLR	LSFLAG		;++021 CLEAR AUTO-GENERATED SYMBOL BASE         ;**NEW**
    179									;++021 ... AND FLAG NEED FOR NEW LSY BLOCK      ;**NEW**
    180	000006	016767 	000000G	000000G		MOV	CLCFGS,LSBFGS	;++021 SET LSY BLOCK PSECT AND FLAGS            ;**NEW**
    181	000014	000207 			EDRTN:	RETURN			;++021                                          ;**NEW**
    182					                                                                                ;**NEW**
    183					                                                                                ;**NEW**
    184					                                                                                ;**-47
    185	000020					.PSECT	IMPURE,D,RW	;++017
    186	000020				EDMASK::.BLKW	1		;CONTAINS SET BITS
    187	000022				EDMCSI::.BLKW	1		;BITS FOR CSI OVERRIDE
    188	000024				EDMBAK::.BLKW	1		;FOR RE-INIT IN PASS 2
    189
    190					;
    191					; END PASS STORAGE (ENDPS)
    192
    193	000026					PURE	TXTBYT,D	;++017
    194	000000	   052 	   052 	   052 	STARS::	.ASCIZ	/******/	;
	000003	   052 	   052 	   052
	000006	   000
    195
    196					;
    197					; FLOATING POINT STORAGE (FLOAT)
    198					;
    199
    200						.IF NDF	XFLTG		;++015
    201						.PSECT	IMPLIN,D,GBL,RW	;++017
    202					FLTWDC::.BLKW	1		;WORD COUNT
    203						.ENDC			;++015
    204
    205					;
    206					; LISTING CONTROL STORAGE (LISTC)
    207					;
    208					; LOCAL MACROS
    209					;
    210
    211						.MACRO	GENLCT	MNE,INIT                                                ;**NEW**
    212						.RAD50	/MNE/                                                           ;**NEW**
    213					LC.'MNE==TMP                                                                    ;**NEW**
    214					TMP=TMP+TMP                                                                     ;**NEW**
    215						.IF NB	<INIT>                                                          ;**NEW**
    216						.LIST                                                                   ;**NEW**
    217					;  ".LIST   MNE"  IS DEFAULT                                                    ;**NEW**
    218						.NLIST                                                                  ;**NEW**
    219					LCINIT==LCINIT ! LC.'MNE                                                        ;**NEW**
    220						.ENDC                                                                   ;**NEW**
    221						.ENDM                                                                   ;**NEW**
    222					                                                                                ;**NEW**
    223					                                                                                ;**NEW**
    224		000001 			TMP=1				;++021 INIT BIT MASK GENERATOR                  ;**NEW**
RSDAT	MACRO M1108  05-DEC-77 23:33  PAGE 4-4


    225		000000 			LCINIT==0			;++021 INIT LISTING CONTROL BITS                ;**NEW**
    226					                                                                                ;**NEW**
    227					                                                                                ;**NEW**
    228	000007					PURE	LCTSEC,D,GBL	;++021                                          ;**NEW**
    229	000000				LCTBAS::			;++021 REF LABEL                                ;**NEW**
    230					                                                                                ;**NEW**
    231					                                                                                ;**NEW**
    232	000000					GENLCT	<   >		;++021                                          ;**NEW**
    233	000002					GENLCT	BEX		;++021                                          ;**NEW**
    234	000004					GENLCT	BIN		;++021                                          ;**NEW**
    235	000006					GENLCT	CND		;++021                                          ;**NEW**
    236	000010					GENLCT	COM		;++021                                          ;**NEW**
    237	000012					GENLCT	LD,	F	;++021                                          ;**NEW**
					;  ".LIST   LD"  IS DEFAULT                                                    ;**NEW**
    238	000014					GENLCT	LOC		;++021                                          ;**NEW**
    239	000016					GENLCT	MC		;++021                                          ;**NEW**
    240	000020					GENLCT	MD		;++021                                          ;**NEW**
    241	000022					GENLCT	ME,	F	;++021                                          ;**NEW**
					;  ".LIST   ME"  IS DEFAULT                                                    ;**NEW**
    242	000024					GENLCT	MEB,	F	;++021                                          ;**NEW**
					;  ".LIST   MEB"  IS DEFAULT                                                    ;**NEW**
    243	000026					GENLCT	SEQ		;++021                                          ;**NEW**
    244	000030					GENLCT	SRC		;++021                                          ;**NEW**
    245	000032					GENLCT	SYM		;++021                                          ;**NEW**
    246	000034					GENLCT	TOC		;++021                                          ;**NEW**
    247	000036					GENLCT	TTM		;++021                                          ;**NEW**
    248					                                                                                ;**NEW**
    249					                                                                                ;**NEW**
    250	000040				LCTTOP::			;++021 REF LABEL                                ;**NEW**
    251					                                                                                ;**NEW**
    252					                                                                                ;**-30
    253	000026					.PSECT	IMPURE,D,RW	;++017
    254	000026				LCSAVE::			;LISTING CONTROL SAVE BLOCK
    255	000026				LCMASK::.BLKW	1		;MASK BITS
    256	000030				LCLVL::	.BLKW	1		;LEVEL COUNT
    257	000032				LCMCSI::.BLKW	1		;CSI OVERRIDE BITS
    258		000006 			LCSAVL==.-LCSAVE
    259	000034				LCSBAK::.BLKW	LCSAVL/2	;FOR INITING PASS 2
    260
    261	000000					.PSECT	IMPLIN,D,GBL,RW	;++017
    262	000000				LCFLAG::.BLKW	1		;FLAG BITS
    263	000002				LCBEGL::.BLKW	1		;POINTER TO START OF LINE
    264	000004				LCENDL::.BLKW	1		;POINTER TO END OF LINE
    265	000006				LBLEND::.BLKW	1		;END OF LABEL (FOR PARSING)
    266
    267
    268					;
    269					; MACRO PROCESING STORAGE (MACRS)
    270					;
    271
    272						.IF NDF	XMACRO
    273
    274						.IF NDF	XSML
    275	000012					.PSECT	IMPPAS,D,GBL,RW	;++017
    276	000012				SMLLVL::.BLKW	1		;MCALL HIT COUNT
    277	000014				LIBNUM::.BLKB	1		;++013 # OF CURRENT MACRO LIBRARY FILE          ;**-6
    278						.BLKB	1		;++021 UNUSED                                   ;**NEW**
RSDAT	MACRO M1108  05-DEC-77 23:33  PAGE 4-5


    279						.ENDC                                                                   ;**-1
    280
    281	000042					.PSECT	IMPURE,D,RW	;++017
    282	000042				MSBBLK::			;PUSHABLE BLOCK (MUST BE ORDERED)
    283	000042				MSBTYP::.BLKW	1		;BLOCK TYPE
    284	000044				MSBPBP::.BLKW	1		;PREVIOUS BLOCK POINTER
    285	000046				MSBTXT::.BLKW	1		;POINTER TO BASIC TEXT BLOCK
    286	000050				MSBARG::.BLKW	1		;POINTER TO ARGUMENT BLOCK
    287	000052				MSBCNT::.BLKW	2		;REPEAT COUNT ETC.
    288	000056				MSBMRP::.BLKW	1		;MACRO READ POINTER
    289	000060				MSBRDV::.BLKW	1		;++021 VIRT LOCN OF TEXT BLK BEING READ         ;**NEW**
    290	000062				MSBEND::			;END OF ORDERED BLOCK
    291					                                                                                ;**NEW**
    292		000020 			MSBLGH==MSBEND-MSBBLK		;LENGTH OF PUSHABLE STORAGE
    293						.IIF GT	<MSBLGH-BPMB>,	.ERROR		;MACRO CONTEXT TOO LONG         ;**NEW**
    294					                                                                                ;**NEW**
    295					                                                                                ;**NEW**
    296	000062				MACNXT::.BLKW	1		;
    297	000064				MACLVL::.BLKW	1		;MACRO NESTING LEVEL
    298	000066				CONCNT::.BLKW	1		;
    299	000070				ARGMAX::.BLKW	1		;
    300	000072				MACNAM::.BLKW	2		;MACRO NAME
    301	000076				MACGSB::.BLKW	1		;MACRO GENERATED SYMBOL BITS
    302
    303					                                                                                ;**-3
    304	000100				MACWRT::.BLKW	1		;++010 ADDR OF TEXT BLOCK BEING WRITTEN
    305	000102				MACTXT::.BLKW	1		;++010 ADDR OF BASIC TEXT BLOCK
    306	000104				MACWTV::.BLKW	1		;++021 VIRT LOCN OF BLK BEING WRITTEN           ;**NEW**
    307					                                                                                ;**NEW**
    308						.ENDC			;XMACRO
    309
    310					;
    311					; MISCELLANEOUS DIRECTIVE STORAGE (MSCDR)
    312					;
    313
    314	000106					.PSECT	IMPURE,D,RW	;++017
    315	000106				ENDVEC::.BLKW	4		;END VECTOR STORAGE
    316
    317	000116					.PSECT	IMPURE,D,RW	;++017
    318	000116				TTLBRK::.BLKW	1		;BREAK LOCATION
    319	000120				TTLBUF::.BLKB	TTLLEN-1!7+1+1	;MODULO TAB+FF
    320						.BLKB	20.		;INTRO MSG
    321						.IIF NDF XTIME,	.BLKB	20.	;TIME & DATE
    322						.BLKB	20.		;PAGE NUMBER
    323						.EVEN
    324
    325	000016					.PSECT	IMPPAS,D,GBL,RW	;++017
    326	000016				STLBUF::.BLKW	<STLLEN+2>/2	;SUB TITLE BUFFER
    327
    328					;
    329					; SWITCH PROCESSING STORAGE (PROSW)
    330
    331	000010					.PSECT	IMPLIN,D,GBL,RW	;++017
    332	000010				EXMFLG::.BLKW	1		;EXEC MODE FLAG
    333
    334					;
    335					; PROGRAM SECTION STORAGE (SECTR)
RSDAT	MACRO M1108  05-DEC-77 23:33  PAGE 4-6


    336
    337	000000					.PSECT	MIXED,RW,D	;++021                                          ;**NEW**
    338					                                                                                ;**NEW**
    339	000000				$NAMSC::.BLKW	1		;++021 ADDR OF PSECT NAME TABLE (FOR            ;**NEW**
    340									;++021 FAST SEARCH IN 'SETIMM')                 ;**NEW**
    341					                                                                                ;**NEW**
    342						.IF DF	YPHASE
    343						.PSECT	IMPPAS,D,GBL,RW	;++017
    344					PHAOFF::.BLKW	1		;PHASE OFFSET
    345						.ENDC
    346					                                                                                ;**NEW**
    347					                                                                                ;**NEW**
    348					;                                                                               ;**NEW**
    349					; ASSEMBLY DONE PROCESSING (SETDN)                                              ;**NEW**
    350					;                                                                               ;**NEW**
    351					                                                                                ;**NEW**
    352	000002					.PSECT	MIXED,RW,D	;++021                                          ;**NEW**
    353					                                                                                ;**NEW**
    354	000002				$HOUR::	.BLKW	1		;++021 START HOURS                              ;**NEW**
    355	000004				$MIN::	.BLKW	1		;++021 START MINUTES                            ;**NEW**
    356	000006				$SEC::	.BLKW	1		;++021 START SECONDS                            ;**NEW**
    357					                                                                                ;**NEW**
    358					                                                                                ;**NEW**
    359						.IF NDF	XCREF		;++022                                          ;**NEW**
    360					                                                                                ;**NEW**
    361					;                                                                               ;**NEW**
    362					; CREF STORAGE                                                                  ;**NEW**
    363					;                                                                               ;**NEW**
    364					                                                                                ;**NEW**
    365						.MACRO	GENCRT	MNE,NDX                                                 ;**NEW**
    366						.BYTE	NDX                                                             ;**NEW**
    367					CR.'MNE==TMP                                                                    ;**NEW**
    368					TMP=TMP+TMP                                                                     ;**NEW**
    369					MNE'$FM==TMP2                                                                   ;**NEW**
    370					TMP2=TMP2+1                                                                     ;**NEW**
    371						.ENDM                                                                   ;**NEW**
    372					                                                                                ;**NEW**
    373					                                                                                ;**NEW**
    374					TMP=1				;++022 INIT BIT MASK GENERATOR                  ;**NEW**
    375					TMP2=0				;++022 INIT CRF FORMAT COUNTER                  ;**NEW**
    376					                                                                                ;**NEW**
    377					                                                                                ;**NEW**
    378						PURE	CRFTBL,D,GBL	;++022                                          ;**NEW**
    379					$CRTBL::			;++022 REF LABEL                                ;**NEW**
    380					                                                                                ;**NEW**
    381						GENCRT	SYM,SYMLST	;++022                                          ;**NEW**
    382						GENCRT	REG,REGROL	;++022                                          ;**NEW**
    383						GENCRT	MAC,MACLST	;++022                                          ;**NEW**
    384						GENCRT	PST,PSTROL	;++022                                          ;**NEW**
    385					                                                                                ;**NEW**
    386					                                                                                ;**NEW**
    387					                                                                                ;**NEW**
    388						.MACRO	GENCRF	MNE,INIT                                                ;**NEW**
    389						.RAD50	/MNE/                                                           ;**NEW**
    390						.WORD	CR.'MNE                                                         ;**NEW**
    391						.IF NB	<INIT>                                                          ;**NEW**
    392						.LIST                                                                   ;**NEW**
RSDAT	MACRO M1108  05-DEC-77 23:33  PAGE 4-7


    393					;  "/CR:MNE"  IS DEFAULT                                                        ;**NEW**
    394						.NLIST                                                                  ;**NEW**
    395					CRINIT=CRINIT!CR.'MNE                                                           ;**NEW**
    396						.ENDC                                                                   ;**NEW**
    397						.ENDM                                                                   ;**NEW**
    398					                                                                                ;**NEW**
    399					                                                                                ;**NEW**
    400					CRINIT==0			;++022 INIT DEFAULT CREF CONTROL MASK           ;**NEW**
    401					                                                                                ;**NEW**
    402					                                                                                ;**NEW**
    403						PURE	CRFSEC,D,GBL	;++022                                          ;**NEW**
    404					CRFBAS::			;++022 REF LABEL                                ;**NEW**
    405					                                                                                ;**NEW**
    406					                                                                                ;**NEW**
    407						GENCRF	MAC,1		;++022                                          ;**NEW**
    408						GENCRF	PST		;++022                                          ;**NEW**
    409						GENCRF	REG		;++022                                          ;**NEW**
    410						GENCRF	SYM,1		;++022                                          ;**NEW**
    411					                                                                                ;**NEW**
    412					CRFTOP::			;++022 REF LABEL                                ;**NEW**
    413					                                                                                ;**NEW**
    414					                                                                                ;**NEW**
    415						.PSECT IMPURE,D,RW	;++022                                          ;**NEW**
    416					                                                                                ;**NEW**
    417					CRMASK::.BLKW	1		;++022 CREF OPTION CONTROL WORD                 ;**NEW**
    418					$LSTGT::.BLKW	2		;++022 LST FILE TARGET DEVICE                   ;**NEW**
    419					CRFDFL::.BLKB	1		;++022 DESTRUCTIVE REF SAVE BYTE                ;**NEW**
    420					CRFFIL::.BLKB	1		;++022 CRF FILE CREATION FLAG                   ;**NEW**
    421					                                                                                ;**NEW**
    422					;                                                                               ;**NEW**
    423					; SYMBOL FLAGS USED BY CRF                                                      ;**NEW**
    424					;                                                                               ;**NEW**
    425					                                                                                ;**NEW**
    426					CR$BTS==DFGFLG!GLBFLG!LBLFLG!REGFLG!RELFLG!DEFFLG                               ;**NEW**
    427					                                                                                ;**NEW**
    428					CR$DEF==CPXFLG			;++022 CRF DEFN RECORD FLAG                     ;**NEW**
    429					CR$DRF==MDFFLG			;++022 CRF DESTRUCTIVE REF FLAG                 ;**NEW**
    430					                                                                                ;**NEW**
    431						.ENDC			;++022                                          ;**NEW**
    432					;
    433					; GET MACRO ARGUMENT STORAGE (GMARG)
    434					;
    435
    436	000120					.PSECT	IMPPAS,D,GBL,RW	;++017
    437	000120				GMAPNT::.BLKW	1		;POINTER TO FOLLOWING BUFFER
    438	000122				GMABLK::.BLKW	1		;POINTER TO BORROWED CHARACTER
    439						.BLKW	1		;CHARACTER ITSELF
    440						.BLKW	3*2		;ROOM FOR MORE PAIRS
    441					                                                                                ;**NEW**
    442					                                                                                ;**NEW**
    443					;                                                                               ;**NEW**
    444					; VIRTUAL MEMORY DATA                                                           ;**NEW**
    445					;                                                                               ;**NEW**
    446					                                                                                ;**NEW**
    447	000010					.PSECT	MIXED,D,RW	;++021                                          ;**NEW**
    448					                                                                                ;**NEW**
    449	000010				$FRHD::	.BLKW	2		;++021 FREE MEMORY LIST HEAD                    ;**NEW**
RSDAT	MACRO M1108  05-DEC-77 23:33  PAGE 4-8


    450	000014				$FRSIZ::.BLKW	1		;++027 SIZE OF REAL MEMORY AVAIL                ;**NEW**
    451					                                                                                ;**NEW**
    452					                                                                                ;**NEW**
    453		000002 			S$V2  ==  2			;++021 ERROR SEVERITY (FATAL)                   ;**NEW**
    454					                                                                                ;**NEW**
    455		000001 			E$R4  ==  1			;++021 CORRESPONDS TO MESSAGE 'VIRTM1'          ;**NEW**
    456		000002 			E$R73 ==  2			;++021 CORRESPONDS TO MESSAGE 'VIRTM2'          ;**NEW**
    457		000003 			E$R76 ==  3			;++021 CORRESPONDS TO MESSAGE 'VIRTM3'          ;**NEW**
    458
    459
    460					;++018
    461					;
    462					; ERROR MESSAGES
    463					;
    464					;--018
    465
    466						.MACRO	GENERM MESSAG
    467						.WORD	1$-.-2
    468						.ASCII	\MESSAG\
    469					1$:	.EVEN
    470						.ENDM
    471
    472
    473
    474	000016					PURE	ERRMSG,D,GBL
    475
    476
    477
    478	000000				OUTM1::	GENERM	^\MAC -- I/O ERROR ON OUTPUT FILE\
    479	000042				INPM1::	GENERM	^\MAC -- I/O ERROR ON INPUT FILE\
    480	000102				CSIM2::	GENERM	^\MAC -- COMMAND SYNTAX ERROR\                                  ;**-1
    481	000140				CSIM3::	GENERM	^\MAC -- ILLEGAL FILENAME\
    482	000172				CSIM4::	GENERM	^\MAC -- ILLEGAL SWITCH\
    483	000222				CSIM5::	GENERM	^\MAC -- OPEN FAILURE ON OUTPUT FILE\
    484	000266				CSIM6::	GENERM	^\MAC -- OPEN FAILURE ON INPUT FILE\
    485	000332				CMLM2::	GENERM	^\MAC -- COMMAND I/O ERROR\
    486	000364				CMLM3::	GENERM	^\MAC -- COMMAND FILE OPEN FAILURE\		;++027          ;**NEW**
    487	000426				CMLM4::	GENERM	^\MAC -- INDIRECT COMMAND SYNTAX ERROR\                         ;**-1
    488	000474				CMLM5::	GENERM	^\MAC -- INDIRECT FILE DEPTH EXCEEDED\
    489	000542				LIBM1::	GENERM	^\MAC -- INVALID FORMAT IN MACRO LIBRARY\
    490	000612				LIBM2::	GENERM	^\MAC -- I/O ERROR ON MACRO LIBRARY FILE\
    491					                                                                                ;**NEW**
    492	000662				VIRTM1::GENERM	^\MAC -- INSUFFICIENT DYNAMIC MEMORY\		;++021          ;**NEW**
    493	000726				VIRTM2::GENERM	^\MAC -- I/O ERROR ON WORK FILE\		;++021          ;**NEW**
    494	000766				VIRTM3::GENERM	^\MAC -- 64K STORAGE LIMIT EXCEEDED\		;++021          ;**NEW**
    495
    496
    497
    498		000001 				.END
RSDAT	MACRO M1108  05-DEC-77 23:33  PAGE 4-9
SYMBOL TABLE

AM.DEC= 000040   	CONCNT  000066RG    003	E$R73 = 000002 G 	LET.E = 000105   	RLDT06= 000006
AM.DEF= 000010   	CPL   = 000120   	E$R76 = 000003 G 	LET.F = 000106   	RLDT07= 000007
AM.IMM= 000027   	CPXADD= 000001   	FF    = 000014   	LET.G = 000107   	RLDT10= 000010
AM.INC= 000020   	CPXAND= 000005   	GLBFLG= 000100   	LET.O = 000117   	RLDT11= 000011
AM.NDX= 000060   	CPXCOM= 000011   	GMABLK  000122RG    002	LET.Z = 000132   	RLDT15= 000015
AM.PC = 000007   	CPXCON= 000020   	GMAPNT  000120RG    002	LF    = 000012   	RLDT16= 000016
AM.REL= 000067   	CPXDIV= 000004   	GSDT00= 000000   	LIBM1   000542RG    012	RLDT17= 000017
ARGMAX  000070RG    003	CPXFLG= 000200   	GSDT01= 000400   	LIBM2   000612RG    012	RSX11M= 000000
ASTFLG= 000114   	CPXGLB= 000016   	GSDT02= 001000   	LIBNUM  000014RG    002	R$$11M= 000000
BLKT01= 000001   	CPXIOR= 000006   	GSDT03= 001400   	LINLEN= 000204   	SMLLEN= 000120
BLKT02= 000002   	CPXMUL= 000003   	GSDT04= 002000   	LPP   = 000074   	SMLLVL  000012RG    002
BLKT03= 000003   	CPXNEG= 000010   	GSDT05= 002400   	LSBFGS= ****** GX	SPACE = 000040
BLKT04= 000004   	CPXOPC= 000010   	GSDT06= 003000   	LSBTST  000000R     005	SRCLEN= 000204
BLKT05= 000005   	CPXREL= 000017   	ILVL  = 000004   	LSFLAG= ****** GX	STARS   000000RG    006
BLKT06= 000006   	CPXSDS= 000013   	INPM1   000042RG    012	LSTLEN= 000204   	STLBUF  000016RG    002
BPMB  = 000020   	CPXSTO= 000012   	LBLEND  000006RG    010	LST.KB= 000001   	STLLEN= 000100
CH.ADD= 000053   	CPXSUB= 000002   	LBLFLG= 000002   	LST.LP= 000002   	S$V2  = 000002 G
CH.AND= 000046   	CR    = 000015   	LCBEGL  000002RG    010	MACGSB  000076RG    003	TAB   = 000011
CH.BSL= 000134   	CRADIX  000010RG    002	LCENDL  000004RG    010	MACLVL  000064RG    003	TMP   = 000000
CH.COL= 000072   	CSIM2   000102RG    012	LCFLAG  000000RG    010	MACNAM  000072RG    003	TTLBRK  000116RG    003
CH.COM= 000054   	CSIM3   000140RG    012	LCINIT= 003040 G 	MACNXT  000062RG    003	TTLBUF  000120RG    003
CH.DIV= 000057   	CSIM4   000172RG    012	LCLVL   000030RG    003	MACTXT  000102RG    003	TTLLEN= 000040
CH.DOL= 000044   	CSIM5   000222RG    012	LCMASK  000026RG    003	MACWRT  000100RG    003	VIRTM1  000662RG    012
CH.DOT= 000056   	CSIM6   000266RG    012	LCMCSI  000032RG    003	MACWTV  000104RG    003	VIRTM2  000726RG    012
CH.EQU= 000075   	CSTACC= 000020   	LCSAVE  000026RG    003	MDFFLG= 000004   	VIRTM3  000766RG    012
CH.HSH= 000043   	CSTALO= 000004   	LCSAVL= 000006 G 	MSBARG  000050RG    003	VT    = 000013
CH.IND= 000100   	CSTFLG= 000050   	LCSBAK  000034RG    003	MSBBLK  000042RG    003	XBSRCH= 000000
CH.IOR= 000041   	CSTGBL= 000100   	LCTBAS  000000RG    007	MSBCNT  000052RG    003	XCREF = 000000
CH.LAB= 000074   	CSTMEM= 000001   	LCTTOP  000040RG    007	MSBEND  000062RG    003	XEDABS= 000000
CH.LP = 000050   	CSTREL= 000040   	LC.   = 000001 G 	MSBLGH= 000020 G 	XEDCDR= 000000
CH.MUL= 000052   	CSTTYP= 000200   	LC.BEX= 000002 G 	MSBMRP  000056RG    003	XEDCRF= 000000
CH.PCT= 000045   	DEFFLG= 000010   	LC.BIN= 000004 G 	MSBPBP  000044RG    003	XEDFPT= 000000
CH.QM = 000077   	DFGFLG= 000020   	LC.CND= 000010 G 	MSBRDV  000060RG    003	XEDLC = 000000
CH.QTM= 000042   	DIG.0 = 000060   	LC.COM= 000020 G 	MSBTXT  000046RG    003	XEDPIC= 000000
CH.RAB= 000076   	DIG.9 = 000071   	LC.LD = 000040 G 	MSBTYP  000042RG    003	XEDPNC= 000000
CH.RP = 000051   	EDINIT= 000005 G 	LC.LOC= 000100 G 	OBJLEN= 000052   	XFCSQN= 000000
CH.SMC= 000073   	EDMASK  000020RG    003	LC.MC = 000200 G 	OUTM1   000000RG    012	XFLTG = 000000
CH.SUB= 000055   	EDMBAK  000024RG    003	LC.MD = 000400 G 	PRGIDN  000010RG    003	XOPEXP= 000000
CH.UAR= 000136   	EDMCSI  000022RG    003	LC.ME = 001000 G 	PRGTTL  000000RG    003	XSUBD = 000000
CH.XCL= 000047   	EDRTN   000014R     005	LC.MEB= 002000 G 	PSTFLG= 000050   	XZERR = 000000
CLCFGS= ****** GX	EDTBAS  000000RG    004	LC.SEQ= 004000 G 	REGFLG= 000001   	X45   = 000000
CMLM2   000332RG    012	EDTTOP  000020RG    004	LC.SRC= 010000 G 	RELFLG= 000040   	YQCMO = 000000
CMLM3   000364RG    012	ED.AMA= 000001 G 	LC.SYM= 020000 G 	RLDLEN= 000052   	$FRHD   000010RG    011
CMLM4   000426RG    012	ED.GBL= 000002 G 	LC.TOC= 040000 G 	RLDT00= 000000   	$FRSIZ  000014RG    011
CMLM5   000474RG    012	ED.LSB= 000004 G 	LC.TTM= 100000 G 	RLDT01= 000001   	$HOUR   000002RG    011
CNDLVL  000004RG    002	ED.REG= 000010 G 	LET.A = 000101   	RLDT02= 000002   	$MIN    000004RG    011
CNDMEX  000006RG    002	ENDVEC  000106RG    003	LET.B = 000102   	RLDT03= 000003   	$NAMSC  000000RG    011
CNDMSK  000002RG    002	EXMFLG  000010RG    010	LET.C = 000103   	RLDT04= 000004   	$SEC    000006RG    011
CNDWRD  000000RG    002	E$R4  = 000001 G 	LET.D = 000104   	RLDT05= 000005

. ABS.	000000	   000
      	000000	   001
IMPPAS	000142	   002
IMPURE	000256	   003
EDTSEC	000020	   004
LSBTST	000016	   005
TXTBYT	000007	   006
RSDAT	MACRO M1108  05-DEC-77 23:33  PAGE 4-10
SYMBOL TABLE

LCTSEC	000040	   007
IMPLIN	000012	   010
MIXED 	000016	   011
ERRMSG	001032	   012
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2950 WORDS  ( 12 PAGES)
DYNAMIC MEMORY:  4160 WORDS  ( 16 PAGES)
ELAPSED TIME:  00:00:36
[45,10]RSDAT,[45,20]RSDAT/-SP=[45,30]RSXPAR,MPARAM,FLGDF,RSDAT
RSEXEC	MACRO M1108  05-DEC-77 23:34  PAGE 4


      1						.TITLE	RSEXEC
      2						.IDENT	/X19.04/							;**NEW**
      3															;**-1
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X19.04								;**NEW**
     24					;										;**-1
     25					; B. BOWERING
     26					;
     27					;	MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 6-FEB-73
     30					;	C.A. D'ELIA	22-SEP-73	002
     31					;	C.A. D'ELIA	04-OCT-73	003
     32					;	C.A. D'ELIA	10-NOV-73	004
     33					;	C.A. D'ELIA	11-NOV-73	005
     34					;	C.A. D'ELIA	15-NOV-73	007
     35					;	C.A. D'ELIA	10-JAN-74	010
     36					;	C.A. D'ELIA	25-JAN-74	011
     37					;	C.A. D'ELIA	05-MAR-74	013
     38					;	C.A. D'ELIA	22-MAR-74	014
     39					;	C.A. D'ELIA	07-APR-74	015
     40					;	C.A. D'ELIA	24-APR-74	016
     41					;	H.A. NICHOLS	18-JUN-74	017
     42					;	C.A. D'ELIA	14-OCT-74	017
     43					; 	C.A. D'ELIA	31-DEC-74	018
     44					;	C.A. D'ELIA	30-APR-75	019
     45					;	C.A. D'ELIA	10-JUL-75	020
     46					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)			;**NEW**
     47					;	C.A. D'ELIA	01-NOV-75	022	(CREF)				;**NEW**
     48					;	C.A. D'ELIA	13-APR-76	024	(MISC-ELIM UNNEC CODE)		;**NEW**
     49					;	C.A. D'ELIA	08-SEP-76	027	(EXTEND TASK)			;**NEW**
     50					;
     51					;
     52					; MACRO LIBRARY CALLS
     53					;
     54
     55						.MCALL	CSI$		;++017
     56	000000					CSI$			;++014
     57						.MCALL	FDOFF$		;++017
RSEXEC	MACRO M1108  05-DEC-77 23:34  PAGE 4-1


     58	000000					FDOFF$	DEF$L		;++014
     59						.MCALL	GCMLD$		;++017
     60	000000					GCMLD$			;++014
     61
     62						.MCALL	CALL,RETURN,FSRSZ$,GCML$,GCMLB$ ;++017
     63						.MCALL	CLOSE$,FDAT$A,FDBDF$,FDRC$A,FINIT$  ;++014
     64						.MCALL	CALLR		;++021						;**NEW**
     65
     66						.IF NDF	YQCMO		;++014
     67						.MCALL	OPEN$W		;++014
     68						.ENDC			;++014
     69
     70
     71															;**-2
     72	000000					.PSECT	MIXED,D,RW	;++017
     73	000000				SPSAV:	.BLKW	1		;++021 SAVES INITIAL STACK POINTER		;**NEW**
     74															;**-2
     75
     76	000002					PURE	PUREI,I		;++017
     77
     78					;+
     79					; **-START-ENTRY POINT TO ASSEMBLER
     80					;-
     81
     82	000000				START:				;++014
     83	000000	010667 	000000'			MOV	SP,SPSAV	;++021 SAVE INITIAL STACK POINTER		;**NEW**
     84															;**-2
     85					;+
     86					; **-CONT-RE-ENTRY POINT
     87					;-
     88
     89	000004	016706 	000000'		CONT::	MOV	SPSAV,SP	;RELOAD SAVED STACK POINTER
     90	000010					CALL	XCTPRG		;++014 INIT IMPURE DATA REGION
     91	000014	105167 	000000G			COMB	CLCSEC		;++019 INDICATE LOCN CTR INFO NOT SET
     92	000020					FINIT$			;++014 INIT FILE STORAGE REGION
     93
     94						.IF NDF	YQCMO		;++014
     95						OPEN$W	#CMOFDB		;++014
     96						.ENDC			;++014
     97
     98					 										;**NEW**
     99	000024	012700 	000000'			MOV	#CTLTBL,R0	;SET FOR MASTER LOOP				;**-7
    100	000030	012001 			3$:	MOV	(R0)+,R1	;FETCH NEXT ADDRESS
    101	000032	010046 				MOV	R0,-(SP)	;STACK POINTER
    102	000034					CALL	(R1)		;CALL THE ROUTINE
    103	000036	012600 				MOV	(SP)+,R0	;RETRIEVE POINTER
    104	000040	000773 				BR	3$		;LOOP 'TILL CONTROL IS
    105									;TAKEN AWAY
    106
    107
    108	000042					PURE	DPURE,D		;++017
    109	000000				CTLTBL:				;TABLE TO ASSOCIATE ASSEMBLER
    110									;AND EXEC
    111
    112					;		EXEC	ASSEMBLER
    113					;		----	---------
    114
RSEXEC	MACRO M1108  05-DEC-77 23:34  PAGE 4-2


    115	000000	000042'				.WORD	INIOF		;++014 INIT OUTPUT FILES
    116	000002	000000G				.WORD	ASSEM		;++014 INIT ASSEMBLER DYNAMIC STORAGE
    117	000004	000000G				.WORD	MACP1		;++014 PERFORM PASS 1
    118	000006	000000G	000000G			.WORD	FINP1,ENDP1	;++011 FINISH PASS 1, END-OF-PASS 1
    119	000012	000000G	000000G			.WORD	MACP2,ENDP2	;++011 START PASS 2, END-OF-PASS 2
    120	000016	000000G				.WORD	SETDN		;FINISHED, CONTROL NOT RETURNED
    121
    122	000020					PURE	PUREI,I		;++017
    123
    124					;+
    125					; **-INIOF-OUTPUT FILE INITIALIZATION
    126					;-
    127
    128	000042	012704 	000070'		INIOF:	MOV	#CMLBLK,R4	;GET ADDRESS OF GET COMMAND LINE BLOCK
    129	000046	010400 				MOV	R4,R0		;++015 COPY ADDR OF GCML BLOCK INTO R0
    130
    131
    132						.IF NDF	RSX11M		;++015
    133
    134
    135						GCML$			;++015 GET COMMAND LINE (NORMAL GCMLB)
    136
    137						.IFF			;++015
    138
    139	000050					CALL	$OVGCL		;++015 GET COMMAND LINE (OVERLAID GCMLB)
    140
    141
    142						.ENDC			;++015 (RSX11M)
    143
    144
    145	000054	006000 				ROR	R0		;SAVE CARRY INDICATOR
    146	000056					CALL	$INOFL		;INITIALIZE OUTPUT FILES
    147	000062	100750 				BMI	CONT		;IF MI START OVER
    148					 										;**NEW**
    149					 										;**NEW**
    150						.IF NDF	XTIME		;++021						;**NEW**
    151					 										;**NEW**
    152	000064					CALLR	SETTIM		;++021 GET ASSEMBLY START TIME AND RETURN	;**NEW**
    153					 										;**NEW**
    154						.IFF			;++021						;**NEW**
    155					 										;**NEW**
    156						RETURN			;
    157					 										;**NEW**
    158					 										;**NEW**
    159						.ENDC			;++021						;**NEW**
    160					 										;**NEW**
    161					 										;**NEW**
    162
    163															;**-20
    164
    165	000070				RESTRT::CALL	$OPTER		;++018 SEND MESSAGES AND CLEANUP FILES
    166	000074	000743 				BR	CONT		;++018 START NEXT ASSEMBLY
    167
    168
    169
    170						.ENABL	LSB								;**-30
    171
RSEXEC	MACRO M1108  05-DEC-77 23:34  PAGE 4-3


    172	000076				GETPLI::			;GET PHYSICAL LINE
    173	000076					CALL	SAVREG
    174	000102	122767 	000020 	000026'		CMPB	#IO.OPN,IOFTBL+SRCCHN  ;++014 IS FILE OPEN?			;**-4
    175	000110	001025 				BNE	10$		;++021 BRANCH TO OPEN NEXT SOURCE FILE		;**NEW**
    176	000112					$READ	SRC		;++014 GET A SOURCE INPUT LINE			;**-10
    177	000122	005000 				CLR	R0
    178	000124	132767 	000004 	000026'		BITB	#IO$EOF,IOFTBL+SRCCHN  ;++014 WAS END-OF-FILE DETECTED?
    179	000132	001413 				BEQ	5$
    180	000134				GETPLF:	CALL	CLOSRC		;++010 CLOSE SOURCE FILE
    181	000140	005767 	000000'			TST	GETFLG		;FILE CROSSING ENABLED?
    182	000144	001004 				BNE	4$		;++024 IF NE NO					;**NEW**
    183	000146	132767 	000020 	000263'		BITB	#CS.MOR,CSIBLK+C.STAT						;**-1
    184	000154	001003 				BNE	10$
    185	000156	012700 	000001 		4$:	MOV	#1,R0								;**-1
    186	000162				5$:	RETURN
    187
    188					; OPEN INPUT
    189	000164				10$:				;++024						;**NEW**
    190	000164					CALL	$INIFL		;INITIALIZE INPUT FILE				;**-2
    191	000170	100705 				BMI	CONT		;++021 ERROR REPORTED -- RESTART MACRO		;**NEW**
    192	000172	005367 	000000'			DEC	PASSSW		;++002 DECREMENT SWITCH VALUE TO BE ...		;**-1
    193									;++002 ... IN LINE WITH 'PASS' VALUE
    194	000176	100404 				BMI	12$		;++002 IGNORE IF VALUE WAS ZERO
    195	000200	026767 	000000G	000000'		CMP	PASS,PASSSW	;++002 COMPARE 'PASS' AND SWITCH VALUES
    196	000206	001352 				BNE	GETPLF		;++002 NO MATCH - CLOSE FILE AND TRY NEXT
    197	000210	005100 			12$:	COM	R0		;++002 O.K. - SET SUCCESS
    198	000212					RETURN			;++002
    199															;**-1
    200
    201	000214	016700 	000056'		CLOSRC::MOV	FDBTBL+SRCCHN,R0  ;++017 PUT SOURCE FILE FDB ADDR IN R0
    202	000220	105067 	000026'			CLRB	IOFTBL+SRCCHN	;++014 SET FILE CLOSED STATUS			;**-3
    203	000224					CLOSE$			;++010 CLOSE THE SOURCE FILE
    204	000230					RETURN			;++010
    205
    206						.DSABL	LSB
    207
    208	000000					.PSECT	IMPPAS,D,GBL,RW	;++017
    209	000000				GETFLG::.BLKW	1		;FILE CROSSING ENABLE (0=YES)			;**-1
    210
    211
    212
    213	000000					.PSECT	IMPURE,D,RW	;++017
    214	000000				PASSSW::.BLKW	1		;++003 PASS SWITCH
    215	000002				LSTFIL::.BLKB	1		;++014 INDICATES LISTING FILE CREATED
    216	000003				OBJFIL::.BLKB	1		;++014 INDICATES OBJECT FILE CREATED
    217	000004				$LSTVZ::.BLKW	1		;++017 SIZE OF FSR NEEDED FOR LST DEVICE
    218
    219	000002					.PSECT	MIXED,D,RW	;++017						;**-62
    220						.IF NDF	XTIME
    221	000002	   060 	   060 	   055 	DATTIM::.ASCII	/00-XXX-00 /	;
	000005	   130 	   130 	   130
	000010	   055 	   060 	   060
	000013	   040
    222	000014	   060 	   060 	   072 		.ASCIZ	/00:00 /	;
	000017	   060 	   060 	   040
	000022	   000
    223						.ENDC
RSEXEC	MACRO M1108  05-DEC-77 23:34  PAGE 4-4


    224
    225						.EVEN
    226
RSEXEC	MACRO M1108  05-DEC-77 23:34  PAGE 5


    228		000001 			IO.NNU==000001			;I/O FLAGS
    229		000002 			IO.TTY==000002			;DEVICE IS TELETYPE
    230		000004 			IO$EOF==000004			;EOF FLAG
    231		000010 			IO.ERR==000010			;ERROR ENCOUNTERED
    232		000020 			IO.OPN==000020			;OPEN FLAG
    233		100000 			IO.OUT==100000			;OUTPUT DEVICE
    234
    235					 										;**NEW**
    236					;										;**NEW**
    237					; SOFTWARE CHANNEL DATA								;**NEW**
    238					;										;**NEW**
    239					; I/O STATUS TABLE								;**NEW**
    240					;										;**NEW**
    241					 										;**NEW**
    242	000024					.PSECT	MIXED,D,RW	;++017
    243					 										;**NEW**
    244	000024				IOFTBL::.BLKW	MAXCHN/2	;I/O FLAG TABLE
    245
    246
    247					;										;**NEW**
    248					; BYTE COUNT TABLE								;**NEW**
    249					;										;**NEW**
    250					 										;**NEW**
    251	000040					PURE	DPURE,D		;++017
    252
    253						.MACRO	SETCHN	ZCHAN,ZBUF,ZFDB						;**NEW**
    254						.LIST									;**-2
    255						.WORD	ZBUF'BUF-2	;ZCHAN'CHN
    256						.NLIST
    257						.ENDM
    258
    259
    260	000020				CNTTBL::GENCHN			;++015 POINTERS TO BYTE COUNTS
	000020	177776G				.WORD	LSTBUF-2	;CMOCHN
	000022	177776G				.WORD	LINBUF-2	;SRCCHN
	000024	177776G				.WORD	LSTBUF-2	;LSTCHN
	000026	000006'				.WORD	OBJBUF-2	;BINCHN
	000030	000062'				.WORD	RLDBUF-2	;RELCHN
	000032	177776G				.WORD	LINBUF-2	;SMLCHN
    261
    262
    263					;										;**NEW**
    264					; BUFFER POINTER TABLE								;**NEW**
    265					;										;**NEW**
    266					 										;**NEW**
    267	000040					.PSECT	MIXED,D,RW	;++017
    268
    269						.MACRO	SETCHN	ZCHAN,ZBUF,ZFDB						;**NEW**
    270						.LIST									;**-1
    271						.WORD	ZBUF'BUF		;ZCHAN'CHN
    272						.NLIST
    273						.ENDM
    274
    275
    276	000040				BUFTBL::GENCHN			;++015 POINTERS TO BUFFERS
	000040	000000G				.WORD	LSTBUF		;CMOCHN
	000042	000000G				.WORD	LINBUF		;SRCCHN
RSEXEC	MACRO M1108  05-DEC-77 23:34  PAGE 5-1


	000044	000000G				.WORD	LSTBUF		;LSTCHN
	000046	000010'				.WORD	OBJBUF		;BINCHN
	000050	000064'				.WORD	RLDBUF		;RELCHN
	000052	000000G				.WORD	LINBUF		;SMLCHN
    277
    278
    279					;										;**NEW**
    280					; MISCELLANEOUS I/O BUFFERS							;**NEW**
    281					;										;**NEW**
    282															;**-9
    283	000006					.PSECT	IMPURE,D,RW	;++017
    284
    285						.BLKW	1		;++022						;**NEW**
    286	000010				OBJBUF::.BLKW	<OBJLEN+1>/2	;++022 OBJECT TEXT CODE BUFFER			;**NEW**
    287					 										;**NEW**
    288						.BLKW	1		;++022						;**NEW**
    289	000064				RLDBUF::.BLKW	<RLDLEN+1>/2	;++022 OBJECT RLD/GSD CODE BUFFER		;**NEW**
    290															;**-1
    291	000136				CMIBUF::.BLKW	41.		;++015 COMMAND INPUT (GCML) BUFFER
    292
    293
    294						.IF NDF	XCREF		;++022						;**NEW**
    295					 										;**NEW**
    296						.BLKW	1		;++022						;**NEW**
    297					CRFBUF::			;++022						;**NEW**
    298					$CRSYM::.BLKW	2		;++022 SYMBOL NAME				;**NEW**
    299					$CRREF::.BLKW	2		;++022 REF DATA (PAGE-LINE NUMBERS)		;**NEW**
    300					$CRVAL::.BLKW	1		;++022 SYMBOL VALUE				;**NEW**
    301					$CRATT::.BLKB	1		;++022 FLAGS BYTE				;**NEW**
    302					$CRFMT::.BLKB	1		;++022 FORMAT NUMBER				;**NEW**
    303					 										;**NEW**
    304						.ENDC			;++022						;**NEW**
    305					 										;**NEW**
    306					 										;**NEW**
    307						.IF NDF	XSPOOL		;++015
    308					;
    309					; SWITCH WORD
    310					;
    311
    312	000260				$SWTCH::.BLKW	1		;
    313						.ENDC			;++015
    314
    315
    316					;
    317					; CSI CONTROL BLOCK
    318					;
    319
    320	000262				CSIBLK::.BLKB	C.SIZE		;
    321
    322					 										;**NEW**
    323					;										;**NEW**
    324					; FDB POINTER TABLE								;**NEW**
    325					;										;**NEW**
    326															;**-1
    327	000054					.PSECT	MIXED,D,RW	;++017
    328					 										;**NEW**
    329						.MACRO	SETCHN	ZCHAN,ZBUF,ZFDB						;**NEW**
RSEXEC	MACRO M1108  05-DEC-77 23:34  PAGE 5-2


    330						.LIST	MEB								;**NEW**
    331						.IF NB	<ZFDB>								;**NEW**
    332						.WORD	ZCHAN'FDB		; ZCHAN'CHN				;**NEW**
    333						.IFF									;**NEW**
    334						.WORD	0		; ZCHAN'CHN					;**NEW**
    335						.ENDC									;**NEW**
    336						.NLIST	MEB								;**NEW**
    337						.ENDM									;**NEW**
    338					 										;**NEW**
    339					 										;**NEW**
    340		000006 			OBJCHN=BINCHN
    341	000054				FDBTBL::			;REF LABEL
    342	000054					GENCHN									;**-14
	000054	000000 				.WORD	0		; CMOCHN					;**NEW**
	000056	000000 				.WORD	0		; SRCCHN					;**NEW**
	000060	000000 				.WORD	0		; LSTCHN					;**NEW**
	000062	000000 				.WORD	0		; BINCHN					;**NEW**
	000064	000070'				.WORD	RELFDB		; RELCHN				;**NEW**
	000066	000000G				.WORD	SMLFDB		; SMLCHN				;**NEW**
    343
    344
    345	000070				CMLBLK::			;++015
    346
    347						.IIF NDF ILVL,  ILVL=3	;++019 DEFAULT INDIRECT LEVEL TO 3
    348
    349						.IF NDF	RSX11M		;++015
    350
    351
    352						GCMLB$	ILVL,MAC,CMIBUF	;++019 GCML BLOCK (NORMAL USE OF GCML)
    353
    354						.IFF			;++015
    355
    356	000070					GCMLB$	ILVL,MAC,CMIBUF,,PDLIST ;++019 GCML BLK (FOR OVERLAID BLK)
    357		000070'			.=CMLBLK			;++015 RESET 'LC' TO OVERLAY GCML FDB
    358
    359						.IFTF			;++015
    360
    361	000070				FDB1::	FDBDF$			;++017 FDB FOR USE ON EITHER OBJECT ...
    362									;++017 ... OR LISTING FILE
    363		000070'			RELFDB = FDB1			;++017 WHEN AN OBJECT FILE IS CREATED ...
    364									;++017 ... IT ALWAYS USES THIS FDB
    365
    366						.IFF			;++015
    367
    368		000250'			.=CMLBLK+G.DPRM			;++015 RESET 'LC' TO OVERLAY GCMLB ...
    369									;++015 ... DEFAULT PROMPT STRING AND FNB
    370	000250				PDLIST:	.BLKB	G.LPDL		;++015 ALLOCATE PUSH-DOWN LIST STORAGE
    371
    372
    373	000000					.PSECT	$GCMLB,D,GBL,OVR,RW	;++017
    374
    375	000000					GCMLB$	ILVL,MAC,CMIBUF,,PDLIST ;++019 GENERATE GCML BLK FOR OVERLAY
    376
    377	000370					.PSECT	MIXED,D,RW	;++017
    378
    379
    380						.ENDC			;++015
RSEXEC	MACRO M1108  05-DEC-77 23:34  PAGE 5-3


    381
    382
    383
    384						.IF NDF	YQCMO		;++005
    385					CMOFDB::FDBDF$			;
    386						FDAT$A	2,2,LSTLEN
    387						FDOP$A	2
    388						.ENDC			;++005
    389
    390	000370				FDB2:	FDBDF$			;++022						;**NEW**
    391					 										;**NEW**
    392						.IF NDF	XCREF		;++022						;**NEW**
    393					FDB3:	FDBDF$			;++022						;**NEW**
    394						.ENDC			;++022						;**NEW**
    395					 										;**NEW**
    396					 										;**NEW**
    397	000530	000000 			$NXFDB::.WORD	0		;++022 POINTER TO NEXT AVAILABLE FDB		;**NEW**
    398					 										;**NEW**
    399	000532	000070'			$FDBLS::.WORD	FDB1		;++022 LIST OF AVAILABLE FDB'S			;**NEW**
    400	000534	000370'				.WORD	FDB2		;++022						;**NEW**
    401					 										;**NEW**
    402						.IF NDF	XCREF		;++022						;**NEW**
    403						.WORD	FDB3		;++022						;**NEW**
    404						.ENDC			;++022						;**NEW**
    405					 										;**NEW**
    406	000536	000000 			$XFDB::	.WORD	0		;++022 IF NEEDED, THIS FDB IS ALLOCATED		;**NEW**
    407									;++022 FROM DYNAMIC MEMORY			;**NEW**
    408															;**-5
    409
    410
    411		000004 			TMP=4				;++017 RESERVE FSR'S FOR 4 ACTIVE FILES
    412		000003 				.IIF DF	RSX11M,TMP=TMP-1 ;++017 1 LESS IF LST FILE REMAINS CLOSED
    413		000002 				.IIF DF YQCMO,TMP=TMP-1	;++014 1 LESS IF QIO DIRECT TO CMD OUTPUT
    414	000540					FSRSZ$	TMP		;++005 RESERVE FILE STORAGE REGIONS
    415
    416		000000'				.END	START
RSEXEC	MACRO M1108  05-DEC-77 23:34  PAGE 5-4
SYMBOL TABLE

ASSEM = ****** GX	FINP1 = ****** GX	F.URBD= 000020   	N.DID = 000024   	S.FTYP= 000002
BINCHN= 000006   	F.ALOC= 000040   	F.VBN = 000064   	N.DVNM= 000032   	S.NFEN= 000020
BPMB  = 000020   	F.BBFS= 000062   	F.VBSZ= 000060   	N.FID = 000000   	TMP   = 000002
BUFTBL  000040RG    002	F.BDB = 000070   	GETFLG  000000RG    005	N.FNAM= 000006   	TMPCNT= 000014
CLCSEC= ****** GX	F.BGBC= 000057   	GETPLF  000134R     003	N.FTYP= 000014   	TTLLEN= 000040
CLOSRC  000214RG    003	F.BKDN= 000026   	GETPLI  000076RG    003	N.FVER= 000016   	XBSRCH= 000000
CMIBUF  000136RG    006	F.BKDS= 000020   	GE.BIF= 177775   	N.NEXT= 000022   	XCREF = 000000
CMLBLK  000070RG    002	F.BKEF= 000050   	GE.CLO= 000004   	N.STAT= 000020   	XCTPRG= ****** GX
CMOCHN= 000000   	F.BKP1= 000051   	GE.COM= 000001   	N.UNIT= 000034   	XEDABS= 000000
CNTTBL  000020RG    004	F.BKST= 000024   	GE.EOF= 177766   	OBJBUF  000010RG    006	XEDCDR= 000000
CONT    000004RG    003	F.BKVB= 000064   	GE.IND= 000002   	OBJCHN= 000006   	XEDCRF= 000000
CPL   = 000120   	F.CNTG= 000034   	GE.IOR= 177777   	OBJFIL  000003RG    006	XEDFPT= 000000
CSIBLK  000262RG    006	F.DFNB= 000046   	GE.LC = 000010   	OBJLEN= 000052   	XEDLC = 000000
CS.DIF= 000002   	F.DSPT= 000044   	GE.MDE= 177774   	PASS  = ****** GX	XEDPIC= 000000
CS.DVF= 000004   	F.DVNM= 000134   	GE.OPR= 177776   	PASSSW  000000RG    006	XEDPNC= 000000
CS.EQU= 000040   	F.EFBK= 000010   	G.CMLD= 000146   	PDLIST  000250R     002	XFCSQN= 000000
CS.INP= 000001   	F.EFN = 000050   	G.DPRM= 000160   	RELCHN= 000010   	XFLTG = 000000
CS.MOR= 000020   	F.EOBB= 000032   	G.ERR = 000140   	RELFDB= 000070R     002	XOPEXP= 000000
CS.NMF= 000001   	F.ERR = 000052   	G.ISIZ= 000020   	RESTRT  000070RG    003	XSUBD = 000000
CS.OUT= 000002   	F.FACC= 000043   	G.LPDL= 000120   	RLDBUF  000064RG    006	XZERR = 000000
CS.WLD= 000010   	F.FFBY= 000014   	G.MODE= 000141   	RLDLEN= 000052   	X45   = 000000
CTLTBL  000000R     004	F.FNAM= 000110   	G.PSDS= 000142   	RSX11M= 000000   	YQCMO = 000000
C.CMLD= 000002   	F.FNB = 000102   	ILVL  = 000004   	R$$11M= 000000   	$FDBLS  000532RG    002
C.DEVD= 000006   	F.FTYP= 000116   	INIOF   000042R     003	SAVREG= ****** GX	$INIFL= ****** GX
C.DIRD= 000012   	F.FVER= 000120   	IOFTBL  000024RG    002	SETDN = ****** GX	$INOFL= ****** GX
C.DSDS= 000006   	F.HIBK= 000004   	IO$EOF= 000004 G 	SETTIM= ****** GX	$LSTVZ  000004RG    006
C.FILD= 000016   	F.LUN = 000042   	IO.ERR= 000010 G 	SMLCHN= 000012   	$NXFDB  000530RG    002
C.MKW1= 000024   	F.MBCT= 000054   	IO.NNU= 000001 G 	SMLFDB= ****** GX	$OPTER= ****** GX
C.MKW2= 000026   	F.MBC1= 000055   	IO.OPN= 000020 G 	SMLLEN= 000120   	$OVGCL= ****** GX
C.SIZE= 000054   	F.MBFG= 000056   	IO.OUT= 100000 G 	SPSAV   000000R     002	$READ = ****** GX
C.STAT= 000001   	F.NRBD= 000024   	IO.TTY= 000002 G 	SRCCHN= 000002   	$SWTCH  000260RG    006
C.SWAD= 000022   	F.NREC= 000030   	LINBUF= ****** GX	SRCLEN= 000204   	$XFDB   000536RG    002
C.TYPR= 000000   	F.OVBS= 000030   	LINLEN= 000204   	START   000000R     003	$$    = 000067
DATTIM  000002RG    002	F.RACC= 000016   	LPP   = 000074   	STLLEN= 000100   	$$$   = 000160R     007
ENDP1 = ****** GX	F.RATT= 000001   	LSTBUF= ****** GX	S.BFHD= 000020   	.CLOSE= ****** G
ENDP2 = ****** GX	F.RCNM= 000034   	LSTCHN= 000004   	S.FATT= 000016   	.FINIT= ****** G
FDBTBL  000054RG    002	F.RCTL= 000017   	LSTFIL  000002RG    006	S.FDB = 000140   	.FSRCB= ****** G
FDB1    000070RG    002	F.RSIZ= 000002   	LSTLEN= 000204   	S.FNAM= 000006   	...PC1= 000370R     002
FDB2    000370R     002	F.RTYP= 000000   	MACP1 = ****** GX	S.FNB = 000036   	...PC2= 000202R     007
FD.CCL= ****** GX	F.STBK= 000036   	MACP2 = ****** GX	S.FNBW= 000017   	...PC3= 000000R     007
FD.REC= ****** GX	F.UNIT= 000136   	MAXCHN= 000014   	S.FNTY= 000004   	...TPC= 000020
FD.TTY= ****** GX

. ABS.	000000	   000
      	000000	   001
MIXED 	000540	   002
PUREI 	000232	   003
DPURE 	000034	   004
IMPPAS	000002	   005
IMPURE	000336	   006
$GCMLB	000224	   007
$$FSR1	002040	   010
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  4891 WORDS  ( 20 PAGES)
DYNAMIC MEMORY:  6272 WORDS  ( 24 PAGES)
ELAPSED TIME:  00:00:49
[45,10]RSEXEC,[45,20]RSEXEC/-SP=[45,30]RSXPAR,MPARAM,MCIOCH,RSEXEC
R5UNP	MACRO M1108  05-DEC-77 23:34  PAGE 4


      1						.TITLE	R5UNP
      2						.IDENT	/02/
      3
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THIS INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION 02
     23					;
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 10-FEB-73
     29					;	H.A. NICHOLS	18-JUN-74	017
     30					;
     31					;+
     32					; **-R50UNP-RADIX 50 UNPACK
     33					;-
     34
     35	000000					PURE	PUREI,I		;++017
     36	000000	010446 			R50UNP::MOV	R4,-(SP)	;SAVE R4
     37	000002	012704 	000000G			MOV	#SYMBOL,R4	;POINT TO SYMBOL STORAGE
     38	000006	012401 			1$:	MOV	(R4)+,R1	;GET NEXT WORD
     39	000010	012703 	003100 			MOV	#50*50,R3	;SET DIVISOR
     40	000014	004767 	000030 			CALL	10$		;DIVIDE AND STUFF IT
     41	000020	012703 	000050 			MOV	#50,R3
     42	000024	004767 	000020 			CALL	10$		;AGAIN FOR NEXT
     43	000030	010100 				MOV	R1,R0
     44	000032	004767 	000020 			CALL	11$		;FINISH LAST GUY
     45	000036	020427 	000004G			CMP	R4,#SYMBOL+4	;THROUGH?
     46	000042	001361 				BNE	1$		;  NO
     47	000044	012604 				MOV	(SP)+,R4	;YES, RESTORE REGISTER
     48	000046	000207 				RETURN
     49	000050	005000 			10$:	CLR	R0
     50	000052					DIV	R3,R0
     51	000056	005700 			11$:	TST	R0		;SPACE?
     52	000060	001412 				BEQ	23$		;  YES
     53	000062	020027 	000033 			CMP	R0,#33		;TEST MIDDLE
     54	000066	002405 				BLT	22$		;ALPHA
     55	000070	001402 				BEQ	21$		;DOLLAR
     56	000072	062700 	000011 			ADD	#22-11,R0	;DOT OR DOLLAR
     57	000076	062700 	177711 		21$:	ADD	#11-100,R0
R5UNP	MACRO M1108  05-DEC-77 23:34  PAGE 4-1


     58	000102	062700 	000040 		22$:	ADD	#100-40,R0
     59	000106	062700 	000040 		23$:	ADD	#40,R0
     60	000112	110022 				MOVB	R0,(R2)+	;STUFF IT
     61	000114	000207 				RETURN
     62
     63
     64		000001 				.END
R5UNP	MACRO M1108  05-DEC-77 23:34  PAGE 4-2
SYMBOL TABLE

AM.DEC= 000040   	CH.LAB= 000074   	CPXSUB= 000002   	LET.A = 000101   	RLDT11= 000011
AM.DEF= 000010   	CH.LP = 000050   	CR    = 000015   	LET.B = 000102   	RLDT15= 000015
AM.IMM= 000027   	CH.MUL= 000052   	CSTACC= 000020   	LET.C = 000103   	RLDT16= 000016
AM.INC= 000020   	CH.PCT= 000045   	CSTALO= 000004   	LET.D = 000104   	RLDT17= 000017
AM.NDX= 000060   	CH.QM = 000077   	CSTFLG= 000050   	LET.E = 000105   	RSX11M= 000000
AM.PC = 000007   	CH.QTM= 000042   	CSTGBL= 000100   	LET.F = 000106   	R$$11M= 000000
AM.REL= 000067   	CH.RAB= 000076   	CSTMEM= 000001   	LET.G = 000107   	R50UNP  000000RG    002
ASTFLG= 000114   	CH.RP = 000051   	CSTREL= 000040   	LET.O = 000117   	SPACE = 000040
BLKT01= 000001   	CH.SMC= 000073   	CSTTYP= 000200   	LET.Z = 000132   	SYMBOL= ****** GX
BLKT02= 000002   	CH.SUB= 000055   	DEFFLG= 000010   	LF    = 000012   	TAB   = 000011
BLKT03= 000003   	CH.UAR= 000136   	DFGFLG= 000020   	LST.KB= 000001   	VT    = 000013
BLKT04= 000004   	CH.XCL= 000047   	DIG.0 = 000060   	LST.LP= 000002   	XBSRCH= 000000
BLKT05= 000005   	CPXADD= 000001   	DIG.9 = 000071   	MDFFLG= 000004   	XCREF = 000000
BLKT06= 000006   	CPXAND= 000005   	DIV   = ****** G 	PSTFLG= 000050   	XEDABS= 000000
CH.ADD= 000053   	CPXCOM= 000011   	FF    = 000014   	REGFLG= 000001   	XEDCDR= 000000
CH.AND= 000046   	CPXCON= 000020   	GLBFLG= 000100   	RELFLG= 000040   	XEDFPT= 000000
CH.BSL= 000134   	CPXDIV= 000004   	GSDT00= 000000   	RLDT00= 000000   	XEDLC = 000000
CH.COL= 000072   	CPXFLG= 000200   	GSDT01= 000400   	RLDT01= 000001   	XEDPIC= 000000
CH.COM= 000054   	CPXGLB= 000016   	GSDT02= 001000   	RLDT02= 000002   	XEDPNC= 000000
CH.DIV= 000057   	CPXIOR= 000006   	GSDT03= 001400   	RLDT03= 000003   	XFCSQN= 000000
CH.DOL= 000044   	CPXMUL= 000003   	GSDT04= 002000   	RLDT04= 000004   	XFLTG = 000000
CH.DOT= 000056   	CPXNEG= 000010   	GSDT05= 002400   	RLDT05= 000005   	XOPEXP= 000000
CH.EQU= 000075   	CPXOPC= 000010   	GSDT06= 003000   	RLDT06= 000006   	XSUBD = 000000
CH.HSH= 000043   	CPXREL= 000017   	ILVL  = 000004   	RLDT07= 000007   	XZERR = 000000
CH.IND= 000100   	CPXSDS= 000013   	LBLFLG= 000002   	RLDT10= 000010   	X45   = 000000
CH.IOR= 000041   	CPXSTO= 000012

. ABS.	000000	   000
      	000000	   001
PUREI 	000116	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2521 WORDS  ( 10 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:17
[45,10]R5UNP,[45,20]R5UNP/-SP=[45,30]RSXPAR,GENMC,FLGDF,R5UNP
SCNLIB	MACRO M1108  05-DEC-77 23:35  PAGE 5


      1						.TITLE	SCNLIB
      2						.IDENT	/X01.03/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					;
      8					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
      9					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     10					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     11					;
     12					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     13					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     14					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     15					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     16					;
     17					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     18					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     19					; EQUIPMENT CORPORATION.
     20					;
     21					; VERSION X01.03                                                                ;**NEW**
     22					;                                                                               ;**-1
     23					; C.A. D'ELIA	20-NOV-74
     24					;
     25					; MODIFIED BY:                                                                  ;**NEW**
     26					;                                                                               ;**NEW**
     27					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     28					;	C.A. D'ELIA	9-FEB-76	022	(CREF)                          ;**NEW**
     29					;	C.A. D'ELIA	05-SEP-76	026	(KEYWORD MACROS IN 8K)          ;**NEW**
     30					;
     31
     32					;+
     33					;
     34					; *-SCNLIB-*-VERIFY AND SCAN MACRO LIBRARY FILE
     35					;
     36					;-
     37
     38						.IF NDF	XMACRO
     39
     40						.IF NDF	XSML
     41
     42					;
     43					; MACRO LIBRARY CALLS
     44					;
     45
     46						.MCALL	FDAT$R,FDRC$R
     47
     48					;
     49					; LOCAL ASSIGNMENTS
     50					;
     51
     52		000000 			L$TYP = 0			;LIBRARY TYPE FIELD
     53		000001 			L$ID = 1			;LIBRARY LBR ID FIELD
     54		000032 			L$MS = 32			;LIBRARY MNT ENTRY SIZE FIELD
     55		000034 			L$MT = 34			;LIBRARY MNT LOW VBN FIELD
     56		000036 			L$MI = 36			;LIBRARY MNT ALLOCATED FIELD
     57		000040 			L$MA = 40			;LIBRARY MNT AVAILABLE FIELD
SCNLIB	MACRO M1108  05-DEC-77 23:35  PAGE 5-1


     58
     59		000002 			ID$ = 2				;LBR ID BYTE VALUE
     60		000010 			M$MAC = 8.			;SIZE OF MACRO LIBRARY MNT ENTRIES
     61		000001 			TY$MAC = 1			;MACRO LIBRARY TYPE VALUE
     62
     63
     64
     65	000000					PURE	PUREI,I                                                         ;**-6
     66
     67
     68	000000				SCNLIB::FDAT$R	#SMLFDB,#R.FIX,,#512.  ;SET FILE ATTRIBUTES
     69	000020					FDRC$R	R0,#FD.PLC	;READ LIBRARY HEADER IN LOCATE MODE
     70	000026	004767 	000350 			CALL	RDLIB		;READ LIBRARY HEADER RECORD
     71	000032	016001 	000002G			MOV	F.NRBD+2(R0),R1	;PUT ADDR OF RECORD IN R1
     72	000036	122761 	000001 	000000 		CMPB	#TY$MAC,L$TYP(R1)  ;CHECK FOR PROPER LIBRARY TYPE
     73	000044	001174 				BNE	VFYERR		;BAD LIBRARY/FILE IF NO MATCH
     74	000046	122761 	000002 	000001 		CMPB	#ID$,L$ID(R1)	;CHECK FOR VALID LBR ID BYTE
     75	000054	001170 				BNE	VFYERR		;ERROR IF NO MATCH
     76	000056	122761 	000010 	000032 		CMPB	#M$MAC,L$MS(R1)	;CHECK FOR PROPER MNT ENTRY SIZE
     77	000064	001164 				BNE	VFYERR		;ERROR IF NO MATCH
     78	000066	016167 	000036 	000000G		MOV	L$MI(R1),MNCNT	;GET NUMBER OF MNT'S ALLOCATED
     79	000074	166167 	000040 	000000G		SUB	L$MA(R1),MNCNT	;CALC NUMBER OF MNT'S USED
     80	000102	002555 				BLT	VFYERR		;ERROR IF NEGATIVE
     81	000104	016102 	000034 			MOV	L$MT(R1),R2	;GET LOW VBN OF MNT IN R2
     82	000110	005003 				CLR	R3		;BYTE-IN-BLOCK POINTER IS ZERO
     83	000112	005067 	000000G			CLR	MCLPNT		;++021 INIT .MCALL LIST POINTER                 ;**NEW**
     84	000116	005046 				CLR	-(SP)		;INDICATE THAT MNT READ IS REQUIRED             ;**-1
     85
     86	000120				SCNMNT:	FDAT$R	#SMLFDB,#R.FIX,,#M$MAC  ;RESET FILE ATTRIBUTES
     87	000140					FDRC$R	R0,#0		;READ MNT IN MOVE MODE
     88	000144	005001 				CLR	R1		;CLEAR HIGH ORDER OF VBN
     89	000146	004767 	000000G			CALL	.POINT		;POSITION INTO MNT
     90	000152	103524 				BCS	PNTERR		;BRANCH IF ERROR
     91	000154	016767 	000000G	000000G		MOV	MCLPNT,$LSPNT	;++021 SET LIST POINTER                         ;**NEW**
     92	000162				10$:	NEXT	MCLLST		;++021 FETCH NEXT .MCALL NAME                   ;**NEW**
     93	000172	001500 				BEQ	SCNDON		;NONE LEFT FOR THIS LIBRARY                     ;**-2
     94	000174	005767 	000000G			TST	MODE		;GOT ONE, IS IT ALREADY DEFINED?
     95	000200	001370 				BNE	10$		;YES, BRANCH FOR ANOTHER NAME
     96	000202	005716 				TST	(SP)		;IS MNT READ REQUIED?
     97	000204	001006 				BNE	30$		;NO, SKIP READ OF MNT ENTRY
     98	000206	005367 	000000G		20$:	DEC	MNCNT		;DECREMENT MNT COUNT
     99	000212	002470 				BLT	SCNDON		;TABLE EXHAUSTED, LEAVE TO GET NEXT FILE
    100	000214	004767 	000162 			CALL	RDLIB		;ELSE, READ NEXT MACRO NAME FROM MNT
    101	000220	005216 				INC	(SP)		;INDICATE MNT ENTRY WAS READ
    102	000222	016704 	000000C		30$:	MOV	SMLFDB+F.NRBD+2,R4  ;GET ADDR OF MACRO NAME IN R4
    103	000226	022467 	000000G			CMP	(R4)+,SYMBOL	;COMPARE WITH UNDEFINED .MCALL NAME
    104	000232	001002 				BNE	40$		;++021 IF NE NO MATCH                           ;**NEW**
    105	000234	022467 	000002G			CMP	(R4)+,SYMBOL+2	;MATCH, COMPARE WITH SECOND HALF                ;**-2
    106	000240				40$:				;++021                                          ;**NEW**
    107	000240	103762 				BLO	20$		;TOO SMALL, READ NEXT MNT ENTRY
    108	000242	101347 				BHI	10$		;TOO HIGH, GET NEXT .MCALL NAME
    109	000244	005267 	000000G			INC	MODE		;INDICATE MACRO DEFN FOUND
    110	000250	016767 	000000G	000000G		MOV	$LSPNT,MCLPNT	;++021 SAVE LIST POINTER                        ;**NEW**
    111	000256					INSERT			;REWRITE .MCALL NAME ENTRY                      ;**-1
    112	000262	012700 	000000G			MOV	#SMLFDB,R0	;PUT ADDRESS OF FDB IN R0
    113	000266	004767 	000000G			CALL	.MARK		;MARK POSITION OF NEXT MNT ENTRY IN FILE
    114	000272	010346 				MOV	R3,-(SP)	;AND SAVE THE INFORMATION ...
SCNLIB	MACRO M1108  05-DEC-77 23:35  PAGE 5-2


    115	000274	010246 				MOV	R2,-(SP)	;... IN THE STACK
    116	000276	012402 				MOV	(R4)+,R2	;GET POSITION OF MACRO MODULE ...
    117	000300	012403 				MOV	(R4)+,R3	;... HEADER IN LIBRARY FILE
    118	000302	004767 	000000G			CALL	.POINT		;POSITION TO READ THE MODULE HEADER
    119	000306	103446 				BCS	PNTERR		;BRANCH ON ERROR
    120	000310					FDAT$R	R0,#R.VAR	;RESET FILE ATTRIBUTES
    121	000316	004767 	000060 			CALL	RDLIB		;READ THE MACRO MODULE HEADER RECORD
    122	000322	004767 	000000G			CALL	GETLIN		;READ MACRO DEFINITION LINE
    123	000326	001043 				BNE	VFYERR		;ERROR, PREMATURE EOF
    124	000330	004767 	000000G			CALL	SETMAC		;BYPASS THE .MACRO FIELD
    125	000334	001440 				BEQ	VFYERR		;ERROR, NOT MACRO TYPE DIRECTIVE
    126	000336	022737 				CMP	(PC)+,@(PC)+	;BE SURE THAT THE MACRO TYPE ...
    127	000340	130411 				.RAD50	/.MA/		;... DIRECTIVE USED WAS ...
    128	000342	000000G				.WORD	SYMBOL		;... '.MACRO'
    129	000344	001034 				BNE	VFYERR		;ERROR IF NOT .MACRO
    130	000346					GSARG			;GET THE MACRO NAME FIELD
    131	000352	001431 				BEQ	VFYERR		;ERROR IF IT IS NULL
    132					;                                                                               ;**NEW**
    133					; TO PROCESS MACRO DEFINITIONS COMING FROM A LIBRARY,                           ;**NEW**
    134					; CONTROL IS PASSED TO 'MCALL'.  THIS IS NECESSARY DUE                          ;**NEW**
    135					; TO THE FACT THAT 'SCNLIB' AND 'MACROD' ARE ON PARALLEL                        ;**NEW**
    136					; OVERLAY SEGMENTS IN THE SMALL ASSEMBLER.                                      ;**NEW**
    137					;                                                                               ;**NEW**
    138	000354	000167 	000000G			JMP	$PMDEF		;++026 PROCESS MACRO DEFINITION                 ;**NEW**
    139	000360				$SLRTN::			;++026 REF LABEL TO RELOAD OVERLAY              ;**NEW**
    140	000360	012602 				MOV	(SP)+,R2	;RESTORE MNT INFO FROM STACK                    ;**-1
    141	000362	012603 				MOV	(SP)+,R3	;
    142	000364	005016 				CLR	(SP)		;INDICATE MUST READ FROM MNT
    143	000366	005367 	000000G			DEC	SMLLVL		;DECREMENT OUTSTANDING .MCALL COUNT
    144	000372	001252 				BNE	SCNMNT		;REPEAT IF UNSATISFIED
    145	000374	016726 	000000G		SCNDON:	MOV	SMLLVL,(SP)+	;SET RETURN STATUS AND CLEAN STACK
    146	000400	000207 				RETURN			;
    147
    148	000402				RDLIB:	$READ	SML		;READ FROM LIBRARY FILE
    149	000412	122760 	000000G	000000G	EOFCK:	CMPB	#IE.EOF,F.ERR(R0)  ;WAS END OF FILE DETECTED?
    150	000420	001406 				BEQ	VFYERR		;ERROR, PREMATURE EOF
    151	000422	000207 				RETURN			;OTHERWISE, JUST RETURN
    152
    153	000424	004767 	177762 		PNTERR:	CALL	EOFCK		;PROCESS EOF ERROR (IF APPROPRIATE)
    154	000430	012703 	000000G			MOV	#LIBM2,R3	;ELSE, DECLARE LIBRARY FILE I/O ERROR
    155	000434	000402 				BR	RSTRT		;BRANCH TO LEAVE
    156
    157	000436	012703 	000000G		VFYERR:	MOV	#LIBM1,R3	;DECLARE INVALID LIBRARY ERROR
    158	000442	000167 	000000G		RSTRT:	JMP	RESTRT		;CLEANUP, SEND ERROR, AND RESTART
    159
    160
    161					;+
    162					;
    163					; *-SMLTST-*-SCAN .MCALL STATEMENT AND CREATE NAME LIST IN 'MCLROL'
    164					;
    165					;-
    166
    167	000446				SMLTST::GSARG			;GET MACRO NAME
    168	000452	001424 				BEQ	30$		;NONE LEFT, LEAVE
    169	000454					MSRCH			;FOUND ONE, SEARCH MASTER MACRO NAME LIST
    170	000460	001406 				BEQ	10$		;BRANCH IF NOT IN THERE
    171	000462	005767 	000000G			TST	MODE		;FOUND, IS IT ALREADY DEFINED?
SCNLIB	MACRO M1108  05-DEC-77 23:35  PAGE 5-3


    172	000466	001015 				BNE	20$		;IGNORE THIS NAME
    173	000470	005767 	000000G			TST	PASS		;++022 IS THIS SECOND PASS?                     ;**NEW**
    174	000474	001010 				BNE	15$		;;++022 IF NE YES -- SKIP INSERT                ;**NEW**
    175	000476				10$:	INSERT			;INSERT .MCALL NAME INTO MASTER LIST
    176	000502					SEARCH	MCLLST		;++021 FIND SLOT IN NAME LIST                   ;**NEW**
    177	000512					INSERT			;INSERT .MCALL NAME IN PROPER ORDER             ;**-28
    178	000516				15$:				;++022                                          ;**NEW**
    179	000516	005267 	000000G			INC	SMLLVL		;INCREMENT UNDEFINED MACRO NAME COUNT
    180	000522				20$:	CRFDEF
    181	000522	000751 				BR	SMLTST		;GET ANOTHER NAME ARGUMENT
    182	000524	016700 	000000G		30$:	MOV	SMLLVL,R0	;RETURN STATUS IS NUMBER OF UNDEFINED NAMES
    183	000530	000207 				RETURN
    184
    185
    186						.ENDC
    187
    188						.ENDC
    189
    190
    191		000001 				.END
SCNLIB	MACRO M1108  05-DEC-77 23:35  PAGE 5-4
SYMBOL TABLE

BINCHN= 000006   	LIBM2 = ****** GX	NEXT  = ****** GX	SETMAC= ****** GX	XEDCRF= 000000
BPMB  = 000020   	LINLEN= 000204   	OBJLEN= 000052   	SMLCHN= 000012   	XEDFPT= 000000
CMOCHN= 000000   	LPP   = 000074   	PAR$$$= 000000   	SMLFDB= ****** GX	XEDLC = 000000
CPL   = 000120   	LSTCHN= 000004   	PASS  = ****** GX	SMLLEN= 000120   	XEDPIC= 000000
EOFCK   000412R     002	LSTLEN= 000204   	PNTERR  000424R     002	SMLLVL= ****** GX	XEDPNC= 000000
FD.PLC= ****** GX	L$ID  = 000001   	RDLIB   000402R     002	SMLTST  000446RG    002	XFCSQN= 000000
F.ERR = ****** GX	L$MA  = 000040   	RELCHN= 000010   	SRCCHN= 000002   	XFLTG = 000000
F.NRBD= ****** GX	L$MI  = 000036   	RESTRT= ****** GX	SRCLEN= 000204   	XOPEXP= 000000
F.RACC= ****** GX	L$MS  = 000032   	RLDLEN= 000052   	STLLEN= 000100   	XSUBD = 000000
F.RSIZ= ****** GX	L$MT  = 000034   	RSTRT   000442R     002	SYMBOL= ****** GX	XZERR = 000000
F.RTYP= ****** GX	L$TYP = 000000   	RSX11M= 000000   	TMPCNT= 000014   	X45   = 000000
GETLIN= ****** GX	MAXCHN= 000014   	R$$11M= 000000   	TTLLEN= 000040   	YQCMO = 000000
GSARG = ****** GX	MCLLST= ****** GX	R.FIX = ****** GX	TY$MAC= 000001   	$LSPNT= ****** GX
ID$   = 000002   	MCLPNT= ****** GX	R.VAR = ****** GX	VFYERR  000436R     002	$PMDEF= ****** GX
IE.EOF= ****** GX	MNCNT = ****** GX	SCNDON  000374R     002	XBSRCH= 000000   	$READ = ****** GX
ILVL  = 000004   	MODE  = ****** GX	SCNLIB  000000RG    002	XCREF = 000000   	$SLRTN  000360RG    002
INSERT= ****** GX	MSRCH = ****** GX	SCNMNT  000120R     002	XEDABS= 000000   	.MARK = ****** GX
LIBM1 = ****** GX	M$MAC = 000010   	SEARCH= ****** GX	XEDCDR= 000000   	.POINT= ****** GX

. ABS.	000000	   000
      	000000	   001
PUREI 	000532	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  4093 WORDS  ( 16 PAGES)
DYNAMIC MEMORY:  5216 WORDS  ( 20 PAGES)
ELAPSED TIME:  00:00:33
[45,10]SCNLIB,[45,20]SCNLIB/-SP=[45,30]RSXPAR,MPARAM,MCIOCH,GENMC,SCNLIB
SECTR	MACRO M1108  05-DEC-77 23:35  PAGE 4


      1						.TITLE	SECTR
      2						.IDENT	/X05.02/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X05.02                                                                ;**NEW**
     24					;                                                                               ;**-1
     25					; B. BOWERING
     26					;
     27					;	MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 6-FEB-73
     30					;	H.A. NICHOLS	18-JUN-74	017
     31					;	C.A. D'ELIA	01-AUG-74	017
     32					;	C.A. D'ELIA	21-MAR-75	019
     33					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     34					;	C.A. D'ELIA	01-NOV-75	022	(CREF)                          ;**NEW**
     35					;
     36					;
     37					; LOCAL MACROS
     38					;
     39					; GENERATE SECTION ATTRIBUTE ROLL ENTRY
     40					;
     41					; GENSAT SAT,FLG,TYP
     42					;
     43					; WHERE:
     44					;
     45					;	SAT=A 1 TO 3 CHARACTER SECTION ATTRIBUTE NAME.
     46					;	FLG=SECTION ENTRY FLAG BIT DEFINITION.
     47					;	TYP=FLAG BIT DISPOSITION.
     48					;		IF TYP GE 0, THEN CLEAR FLAG BIT.
     49					;		IF TYP LT 0, THEN SET FLAG BIT.
     50					;
     51
     52						.MACRO	GENSAT SAT,FLG,TYP
     53						.RAD50	/SAT/
     54						.BYTE	FLG,TYP
     55						.ENDM
     56
     57	000000					PURE	SATSEC,D,GBL	;++017
SECTR	MACRO M1108  05-DEC-77 23:35  PAGE 4-1


     58	000000				SATBAS::			;REF LABEL
     59	000000					GENSAT	ABS,CSTREL,1
     60	000004					GENSAT	CON,CSTALO,1
     61	000010					GENSAT	D,CSTTYP,-1
     62	000014					GENSAT	GBL,CSTGBL,-1
     63	000020					GENSAT	HGH,CSTMEM,-1
     64	000024					GENSAT	I,CSTTYP,1
     65	000030					GENSAT	LCL,CSTGBL,1
     66	000034					GENSAT	LOW,CSTMEM,1
     67	000040					GENSAT	OVR,CSTALO,-1
     68	000044					GENSAT	REL,CSTREL,-1
     69	000050					GENSAT	RO,CSTACC,-1
     70	000054					GENSAT	RW,CSTACC,1
     71	000060				SATTOP::			;REF LABEL
     72	000060					PURE	PUREI,I		;++017
     73
     74					;+
     75					; **-ASECT-ABSOLUTE P-SECTION
     76					; **-CSECT-DEFAULTED ATTRIBUTE P-SECTION
     77					; **-PSECT-PROGRAMMABLE ATTRIBUTE P-SECTION
     78					; **-PHASE-PHASE P-SECTION LOCATION COUNTER
     79					; **-DEPHA-DEPHASE P-SECTION LOCATION COUNTER
     80					; **-SECINI-P-SECTION TABLE INITIALIZATION
     81					;-
     82
     83						.IF NDF	XREL
     84	000000	004767 	000000G		ASECT::	CALL	SETMAX		;CLOSE OUT CURRENT P-SECTION
     85	000004	016767 	000000G	000000G	ASECTF:	MOV	R50ABS,SYMBOL	;SET DEFAULT ABS SECTION NAME
     86	000012	016767 	000002G	000002G		MOV	R50ABS+2,SYMBOL+2;
     87	000020	012702 	000114 			MOV	#ASTFLG,R2	;++021 GET .ASECT FLAGS                         ;**NEW**
     88	000024	000413 				BR	CSECTF		;                                               ;**-1
     89	000026	004767 	000000G		CSECT::	CALL	SETMAX		;CLOSE OUT CURRENT P-SECTION
     90	000032	012702 	000050 			MOV	#CSTFLG,R2	;++021 GET DEFAULT .CSECT FLAGS                 ;**NEW**
     91	000036					TSTARG			;ANY NAME?                                      ;**-1
     92	000042	001402 				BEQ	10$		;IF EQ NO
     93	000044	052702 	000104 			BIS	#CSTALO!CSTGBL,R2  ;++021 SET OVERLAID AND GLOBAL FLAGS         ;**NEW**
     94	000050				10$:	GETSYM			;GET SECTION NAME                               ;**-1
     95	000054	004767 	000000G		CSECTF:	CALL	$FNDSC		;++021 LOOK FOR A MATCHING PSECT NAME           ;**NEW**
     96	000060	001065 				BNE	PSECTF		;IF NE MATCH FOUND                              ;**-1
     97	000062	110223 				MOVB	R2,(R3)+	;++021 SET MODE FLAGS                           ;**NEW**
     98	000064	116723 	000000C			MOVB	$LSCNT+SECLST,(R3)+  ;++021 AND SECTION NUMBER                  ;**NEW**
     99	000070	000461 				BR	PSECTF		;                                               ;**-2
    100	000072	004767 	000000G		PSECT::	CALL	SETMAX		;CLOSE OUT CURRENT P-SECTION
    101	000076					TSTARG			;TEST FOR ARGUMENT (SET UP)
    102	000102	005267 	000000G			INC	ARGCNT		;INCREMENT ARGUMENT COUNT
    103	000106					GETSYM			;GET SECTION NAME
    104	000112	004767 	000000G			CALL	$FNDSC		;++021 LOOK FOR A MATCHING PSECT NAME           ;**NEW**
    105	000116	001004 				BNE	10$		;IF NE FOUND MATCH                              ;**-1
    106	000120	112723 	000050 			MOVB	#PSTFLG,(R3)+	;++021 SET DEFAULT .PSECT FLAGS                 ;**NEW**
    107	000124	116723 	000000C			MOVB	$LSCNT+SECLST,(R3)+  ;++021 AND SECTION NUMBER                  ;**NEW**
    108	000130	012703 	000012G		10$:	MOV	#SYMBOL+12,R3	;GET SET TO STACK SECTION                       ;**-2
    109		000005 				.REPT	5
    110						MOV	-(R3),-(SP)	;STACK SECTION
    111						.ENDR
    112	000146				20$:	TSTARG			;ANY MORE ARGUMENTS?
    113	000152	001420 				BEQ	30$		;IF EQ NO
    114	000154					GETSYM			;GET ATTRIBUTE SYMBOL
SECTR	MACRO M1108  05-DEC-77 23:35  PAGE 4-2


    115	000160					SCANW	SATROL		;SCAN FOR A MATCH
    116	000170	001444 				BEQ	PSECTA		;IF EQ ERROR
    117	000172	012700 	000002G			MOV	#SYMBOL+2,R0	;GET ADDRESS OF ARGUMENT WORD
    118	000176	141066 	000004 			BICB	(R0),4(SP)	;ASSUME BIT IS TO BE CLEARED
    119	000202	005710 				TST	(R0)		;CLEAR OR SET?
    120	000204	100360 				BPL	20$		;IF PL CLEAR
    121	000206	151066 	000004 			BISB	(R0),4(SP)	;SET BIT
    122	000212	000755 				BR	20$		;GO AGAIN
    123	000214	012623 			30$:	MOV	(SP)+,(R3)+	;RESTORE SECTION NAME
    124	000216	012623 				MOV	(SP)+,(R3)+	;
    125	000220	012623 				MOV	(SP)+,(R3)+	;RESTORE SECTION ATTRIBUTES                     ;**-1
    126	000222	012623 				MOV	(SP)+,(R3)+	;
    127	000224	012623 				MOV	(SP)+,(R3)+	;
    128	000226	012767 	000000G	000000G		MOV	#SECLST,$LSNDX	;++021 RESPECIFY USE OF PSECT LIST              ;**NEW**
    129	000234				PSECTF:	INSERT			;INSERT SECTION
    130	000240	012701 	000000G			MOV	#SYMBOL,R1	;GET ADDRESS OF SYMBOL                          ;**-1
    131	000244	012702 	000000G			MOV	#CLCNAM,R2	;GET LOCATION COUNTER ADDRESS
    132	000250	004767 	000000G			CALL	XMIT5		;++015 UPDATE LOCATION COUNTER
    133
    134						.IF NDF	XEDLSB
    135	000254	032767 	000000G	000000G		BIT	#ED.LSB,EDMASK	;++017 IS .ENABL LSB IN EFFECT?
    136	000262	001405 				BEQ	40$		;++017 YES, DON'T CHANGE BLOCK NUMBER
    137	000264	005067 	000000G			CLR	LSFLAG		;++017 CLEAR AUTO-GENERATED SYMBOL BASE
    138									;++017 ... AND INDICATE NEED NEW BLOCK
    139	000270	016767 	000000G	000000G		MOV	CLCFGS,LSBFGS	;++017 SET SYMBOL BLOCK SECTOR AND FLAGS
    140	000276				40$:				;++017
    141						.ENDC
    142
    143	000276	000167 	000000G			JMP	SETPF0		;++015 LIST NEW LOCATION COUNTER
    144
    145
    146	000302	062706 	000012 		PSECTA:	ADD	#5*2,SP		;CLEAN STACK
    147	000306					ERROR	A		;SET ERROR FLAG
    148	000314	000207 			SECRTN:	RETURN			;++019
    149
    150						.IF DF	YPHASE
    151					PHASE::	RELEXP			;EVALUATE RELATIVE EXPRESSION
    152						CMPB	SECTOR,CLCSEC
    153						BNE	1$
    154						MOV	R0,PHAOFF
    155						SUB	CLCLOC,PHAOFF
    156						MOV	R0,CLCLOC
    157						RETURN
    158					1$:	ERROR	A
    159						RETURN
    160					DEPHA::	SUB	PHAOFF,CLCLOC	;SUBTRACT OUT PHASE OFFSET
    161						CLR	PHAOFF
    162						RETURN
    163						.ENDC	;YPHASE
    164
    165						.ENDC	;XREL
    166
    167	000316				SECINI::
    168
    169
    170						.IF NDF	XREL
    171
SECTR	MACRO M1108  05-DEC-77 23:35  PAGE 4-3


    172
    173						.IF NDF	XEDABS		;++019
    174
    175						TST	EXMFLG		;++019 SERVICING  /EN:ABS  OR  /DS:ABS?
    176						BEQ	10$		;++019 IF EQ FALSE--CONTINUE
    177						TSTB	CLCSEC		;++019 CHECK CURRENT PROGRAM SECTION
    178						BMI	SECRTN		;++019 IF MI RETURN--INDICATES THAT ...
    179					10$:				;++019 THIS IS SERVICING A CMD LINE ...
    180									;++019 SWITCH FOR OBJ FILE IN FIRST ....
    181									;++019 PASS--ROLLS AREN'T INITIALIZED.
    182
    183						.IFTF			;++019
    184
    185	000316	004767 	177462 			CALL	ASECTF		;MOVE ONTO ROLL
    186	000322	005067 	000000G			CLR	SYMBOL		;DITTO FOR BLANK CSECT
    187	000326	005067 	000002G			CLR	SYMBOL+2
    188	000332	012702 	000050 			MOV	#CSTFLG,R2	;++021 SET DEFAULT .CSECT FLAGS                 ;**NEW**
    189					                                                                                ;**-1
    190						.IFT			;++019
    191
    192						BIT	#ED.ABS,EDMASK	;ABS MODE?
    193						BNE	CSECTF		;  NO
    194						RETURN
    195
    196						.IFF
    197
    198	000336	000646 				BR	CSECTF
    199
    200						.ENDC			;XEDABS
    201
    202						.IFF
    203						BIT	#ED.ABS,EDMASK
    204						BEQ	1$
    205						ERROR	A
    206						BIC	#ED.ABS,EDMASK
    207					1$:	RETURN
    208
    209					;+
    210					; **-LIMIT-PROGRAM LIMITS
    211					;-
    212
    213						.IFT
    214	000340	004767 	000000G		LIMIT::	CALL	OBJDMP		;DUMP OBJECT BUFFER
    215	000344	005014 				CLR	(R4)		;CLEAR VALUE
    216	000346	012744 	004400 			MOV	#RLDT11*400,-(R4)	;SET RLD TYPE
    217	000352					STCODE
    218	000356	005014 				CLR	(R4)
    219	000360	000167 	000000G			JMP	STCODE
    220						.ENDC
    221
    222		000001 				.END
SECTR	MACRO M1108  05-DEC-77 23:35  PAGE 4-4
SYMBOL TABLE

AM.DEC= 000040   	CH.QM = 000077   	CSTMEM= 000001   	LET.Z = 000132   	SATROL= ****** GX
AM.DEF= 000010   	CH.QTM= 000042   	CSTREL= 000040   	LF    = 000012   	SATTOP  000060RG    002
AM.IMM= 000027   	CH.RAB= 000076   	CSTTYP= 000200   	LIMIT   000340RG    003	SCANW = ****** GX
AM.INC= 000020   	CH.RP = 000051   	DEFFLG= 000010   	LSBFGS= ****** GX	SECINI  000316RG    003
AM.NDX= 000060   	CH.SMC= 000073   	DFGFLG= 000020   	LSFLAG= ****** GX	SECLST= ****** GX
AM.PC = 000007   	CH.SUB= 000055   	DIG.0 = 000060   	LST.KB= 000001   	SECRTN  000314R     003
AM.REL= 000067   	CH.UAR= 000136   	DIG.9 = 000071   	LST.LP= 000002   	SETMAX= ****** GX
ARGCNT= ****** GX	CH.XCL= 000047   	EDMASK= ****** GX	MDFFLG= 000004   	SETPF0= ****** GX
ASECT   000000RG    003	CLCFGS= ****** GX	ED.LSB= ****** GX	OBJDMP= ****** GX	SPACE = 000040
ASECTF  000004R     003	CLCNAM= ****** GX	ERRBTS= ****** GX	PSECT   000072RG    003	STCODE= ****** GX
ASTFLG= 000114   	CPXADD= 000001   	ERR.A = ****** GX	PSECTA  000302R     003	SYMBOL= ****** GX
BLKT01= 000001   	CPXAND= 000005   	FF    = 000014   	PSECTF  000234R     003	TAB   = 000011
BLKT02= 000002   	CPXCOM= 000011   	GETSYM= ****** GX	PSTFLG= 000050   	TSTARG= ****** GX
BLKT03= 000003   	CPXCON= 000020   	GLBFLG= 000100   	REGFLG= 000001   	VT    = 000013
BLKT04= 000004   	CPXDIV= 000004   	GSDT00= 000000   	RELFLG= 000040   	XBSRCH= 000000
BLKT05= 000005   	CPXFLG= 000200   	GSDT01= 000400   	RLDT00= 000000   	XCREF = 000000
BLKT06= 000006   	CPXGLB= 000016   	GSDT02= 001000   	RLDT01= 000001   	XEDABS= 000000
CH.ADD= 000053   	CPXIOR= 000006   	GSDT03= 001400   	RLDT02= 000002   	XEDCDR= 000000
CH.AND= 000046   	CPXMUL= 000003   	GSDT04= 002000   	RLDT03= 000003   	XEDFPT= 000000
CH.BSL= 000134   	CPXNEG= 000010   	GSDT05= 002400   	RLDT04= 000004   	XEDLC = 000000
CH.COL= 000072   	CPXOPC= 000010   	GSDT06= 003000   	RLDT05= 000005   	XEDPIC= 000000
CH.COM= 000054   	CPXREL= 000017   	ILVL  = 000004   	RLDT06= 000006   	XEDPNC= 000000
CH.DIV= 000057   	CPXSDS= 000013   	INSERT= ****** GX	RLDT07= 000007   	XFCSQN= 000000
CH.DOL= 000044   	CPXSTO= 000012   	LBLFLG= 000002   	RLDT10= 000010   	XFLTG = 000000
CH.DOT= 000056   	CPXSUB= 000002   	LET.A = 000101   	RLDT11= 000011   	XMIT5 = ****** GX
CH.EQU= 000075   	CR    = 000015   	LET.B = 000102   	RLDT15= 000015   	XOPEXP= 000000
CH.HSH= 000043   	CSECT   000026RG    003	LET.C = 000103   	RLDT16= 000016   	XSUBD = 000000
CH.IND= 000100   	CSECTF  000054R     003	LET.D = 000104   	RLDT17= 000017   	XZERR = 000000
CH.IOR= 000041   	CSTACC= 000020   	LET.E = 000105   	RSX11M= 000000   	X45   = 000000
CH.LAB= 000074   	CSTALO= 000004   	LET.F = 000106   	R$$11M= 000000   	$FNDSC= ****** GX
CH.LP = 000050   	CSTFLG= 000050   	LET.G = 000107   	R50ABS= ****** GX	$LSCNT= ****** GX
CH.MUL= 000052   	CSTGBL= 000100   	LET.O = 000117   	SATBAS  000000RG    002	$LSNDX= ****** GX
CH.PCT= 000045

. ABS.	000000	   000
      	000000	   001
SATSEC	000060	   002
PUREI 	000364	   003
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2753 WORDS  ( 11 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:23
[45,10]SECTR,[45,20]SECTR/-SP=[45,30]RSXPAR,GENMC,FLGDF,SECTR
SETDIR	MACRO M1108  05-DEC-77 23:36  PAGE 5


      1						.TITLE	SETDIR
      2						.IDENT	/03/
      3
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION 03
     23					;
     24					; B. BOWERING MAIN AUTHOR
     25					;
     26					; MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 20-JAN-73
     29					;	C.A. D'ELIA	12-NOV-73	006
     30					;	C.A. D'ELIA	15-NOV-73	008
     31					;	C.A. D'ELIA	22-MAR-74	014
     32					;	H.A. NICHOLS	18-JUN-74	017
     33					;
     34					;
     35					;
     36					; **-SETDIR--PROCESS LINE AND RETURN SUCCESS IF POSSIBLE DIRECTIVE FOUND
     37					;
     38					;
     39					;
     40	000000					PURE	PUREI,I		;++017
     41	000000				SETDIR::			;++008
     42	000000				1$:	GETSYM			;TRY FOR SYMBOL
     43						.IF NDF	XEDLSB
     44	000004	001013 				BNE	3$		;BRANCH IF FOUND
     45	000006	012702 	000012 			MOV	#10.,R2		;++008 SPECIFY DECIMAL RADIX
     46	000012					CVTNUM			;++008 TRY NUMERIC CONVERSION
     47	000016	001430 				BEQ	5$		;++008 CAN'T DO IT -- RETURN FAIL
     48	000020	020527 	000044 			CMP	R5,#'$		;++008 SUCCESS -- IS THIS A LOCAL LABEL?
     49	000024	001025 				BNE	5$		;++008 NO, RETURN FAIL
     50	000026					GETNB			;++014 YES, GET NEXT NON-BLANK CHAR
     51	000032	000403 				BR	30$		;++014 BRANCH TO TEST FOR LABEL
     52						.IFF
     53						BEQ	5$		;  EXIT IF NO SYMBOL
     54						.ENDC
     55	000034	020527 	000075 		3$:	CMP	R5,#CH.EQU	;ASSIGNMENT (=)?
     56	000040	001417 				BEQ	5$		;  YES, IGNORE THIS LINE
     57	000042				30$:				;++014
SETDIR	MACRO M1108  05-DEC-77 23:36  PAGE 5-1


     58	000042	020527 	000072 			CMP	R5,#CH.COL	;LABEL (:)?
     59	000046	001010 				BNE	4$		;  NO
     60	000050					GETNB			;YES, BYPASS COLON
     61	000054	020527 	000072 			CMP	R5,#CH.COL	;ANOTHER COLON?
     62	000060	001347 				BNE	1$		;IF NE NO
     63	000062					GETNB			;BYPASS SECOND COLON
     64	000066	000744 				BR	1$		;  AND CONTINUE
     65	000070	127727 	000000G	000056 	4$:	CMPB	@SYMBEG,#'.	;++008 CAN THIS BE A DIRECTIVE?
     66	000076	001401 				BEQ	6$		;++008 YES, RETURN SUCCESS
     67	000100	005000 			5$:	CLR	R0		;FALSE
     68	000102	005700 			6$:	TST	R0		;++008 SET RETURN STATUS
     69	000104	000207 				RETURN			;++008
     70
     71
     72		000001 				.END
SETDIR	MACRO M1108  05-DEC-77 23:36  PAGE 5-2
SYMBOL TABLE

AM.DEC= 000040   	CH.MUL= 000052   	CSTFLG= 000050   	LET.F = 000106   	RLDT17= 000017
AM.DEF= 000010   	CH.PCT= 000045   	CSTGBL= 000100   	LET.G = 000107   	RSX11M= 000000
AM.IMM= 000027   	CH.QM = 000077   	CSTMEM= 000001   	LET.O = 000117   	R$$11M= 000000
AM.INC= 000020   	CH.QTM= 000042   	CSTREL= 000040   	LET.Z = 000132   	SETDIR  000000RG    002
AM.NDX= 000060   	CH.RAB= 000076   	CSTTYP= 000200   	LF    = 000012   	SMLLEN= 000120
AM.PC = 000007   	CH.RP = 000051   	CVTNUM= ****** GX	LINLEN= 000204   	SPACE = 000040
AM.REL= 000067   	CH.SMC= 000073   	DEFFLG= 000010   	LPP   = 000074   	SRCLEN= 000204
ASTFLG= 000114   	CH.SUB= 000055   	DFGFLG= 000020   	LSTLEN= 000204   	STLLEN= 000100
BLKT01= 000001   	CH.UAR= 000136   	DIG.0 = 000060   	LST.KB= 000001   	SYMBEG= ****** GX
BLKT02= 000002   	CH.XCL= 000047   	DIG.9 = 000071   	LST.LP= 000002   	TAB   = 000011
BLKT03= 000003   	CPL   = 000120   	FF    = 000014   	MDFFLG= 000004   	TTLLEN= 000040
BLKT04= 000004   	CPXADD= 000001   	GETNB = ****** GX	OBJLEN= 000052   	VT    = 000013
BLKT05= 000005   	CPXAND= 000005   	GETSYM= ****** GX	PSTFLG= 000050   	XBSRCH= 000000
BLKT06= 000006   	CPXCOM= 000011   	GLBFLG= 000100   	REGFLG= 000001   	XCREF = 000000
BPMB  = 000020   	CPXCON= 000020   	GSDT00= 000000   	RELFLG= 000040   	XEDABS= 000000
CH.ADD= 000053   	CPXDIV= 000004   	GSDT01= 000400   	RLDLEN= 000052   	XEDCDR= 000000
CH.AND= 000046   	CPXFLG= 000200   	GSDT02= 001000   	RLDT00= 000000   	XEDCRF= 000000
CH.BSL= 000134   	CPXGLB= 000016   	GSDT03= 001400   	RLDT01= 000001   	XEDFPT= 000000
CH.COL= 000072   	CPXIOR= 000006   	GSDT04= 002000   	RLDT02= 000002   	XEDLC = 000000
CH.COM= 000054   	CPXMUL= 000003   	GSDT05= 002400   	RLDT03= 000003   	XEDPIC= 000000
CH.DIV= 000057   	CPXNEG= 000010   	GSDT06= 003000   	RLDT04= 000004   	XEDPNC= 000000
CH.DOL= 000044   	CPXOPC= 000010   	ILVL  = 000004   	RLDT05= 000005   	XFCSQN= 000000
CH.DOT= 000056   	CPXREL= 000017   	LBLFLG= 000002   	RLDT06= 000006   	XFLTG = 000000
CH.EQU= 000075   	CPXSDS= 000013   	LET.A = 000101   	RLDT07= 000007   	XOPEXP= 000000
CH.HSH= 000043   	CPXSTO= 000012   	LET.B = 000102   	RLDT10= 000010   	XSUBD = 000000
CH.IND= 000100   	CPXSUB= 000002   	LET.C = 000103   	RLDT11= 000011   	XZERR = 000000
CH.IOR= 000041   	CR    = 000015   	LET.D = 000104   	RLDT15= 000015   	X45   = 000000
CH.LAB= 000074   	CSTACC= 000020   	LET.E = 000105   	RLDT16= 000016   	YQCMO = 000000
CH.LP = 000050   	CSTALO= 000004

. ABS.	000000	   000
      	000000	   001
PUREI 	000106	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2727 WORDS  ( 11 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:23
[45,10]SETDIR,[45,20]SETDIR/-SP=[45,30]RSXPAR,MPARAM,GENMC,FLGDF,SETDIR
SETDN	MACRO M1108  05-DEC-77 23:36  PAGE 6


      1						.TITLE	SETDN
      2						.IDENT	/X08.04/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1975, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      9					;
     10					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     11					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     12					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     13					;
     14					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     15					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     16					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     17					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     18					;
     19					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     20					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     21					; EQUIPMENT CORPORATION.
     22					;
     23					; VERSION X08.04                                                                ;**NEW**
     24					;                                                                               ;**-1
     25					; B. BOWERING
     26					;
     27					;	MODIFIED BY:
     28					;
     29					;	D.N. CUTLER 10-FEB-73
     30					;	C.A. D'ELIA	22-MAR-74	014
     31					;	C.A. D'ELIA	07-APR-74	015
     32					;	C.A. D'ELIA	24-APR-74	016
     33					;	H.A. NICHOLS	18-JUN-74	017
     34					;	C.A. D'ELIA	01-AUG-74	017
     35					;	C.A. D'ELIA	03-JAN-75	018
     36					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     37					;	C.A. D'ELIA	01-NOV-75	022	(CREF)                          ;**NEW**
     38					;	C.A. D'ELIA	08-SEP-76	027	(EXTEND TASK)                   ;**NEW**
     39					;
     40					;
     41
     42						.MCALL	GCMLD$		;++017
     43	000000					GCMLD$			;++017
     44
     45						.MCALL	GTIM$S		;++017
     46					                                                                                ;**NEW**
     47						.IIF NDF XCREF,	.MCALL	CLOSE$,RQST$S,SDAT$S,GLUN$S	;++022          ;**NEW**
     48
     49
     50					;
     51					; LOCAL DATA
     52					;
     53						.NLIST	BEX                                                             ;**NEW**
     54					                                                                                ;**NEW**
     55
     56	000000					PURE	TXTBYT,D	;++017
     57	000000	   105 	   122 	   122 	FINMSG:	.ASCIZ	/ERRORS DETECTED:  /;
SETDN	MACRO M1108  05-DEC-77 23:36  PAGE 6-1


     58	000023	   015 	   012 	   126 	FINMS1:	.ASCIZ	<CR><LF>/VIRTUAL MEMORY USED:  /	;++021                  ;**NEW**
     59	000054	   040 	   127 	   117 	FINMS2:	.ASCIZ	/ WORDS  ( /				;++021                  ;**NEW**
     60	000067	   040 	   120 	   101 	FINMS3:	.ASCIZ	/ PAGES)/				;++021                  ;**NEW**
     61	000077	   104 	   131 	   116 	DYNMSG:	.ASCIZ	/DYNAMIC MEMORY:  /			;++027                  ;**NEW**
     62	000121	   105 	   114 	   101 	TIMMSG:	.ASCIZ	/ELAPSED TIME:  /			;++027                  ;**NEW**
     63	000141	   112 	   101 	   116 	MONTHS:	.ASCII	/JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC/;                         ;**-2
     64					                                                                                ;**NEW**
     65						.LIST	BEX                                                             ;**NEW**
     66					                                                                                ;**NEW**
     67					                                                                                ;**NEW**
     68						.IF NDF	XCREF		;++022                                          ;**NEW**
     69					                                                                                ;**NEW**
     70						PURE	DPURE,D		;++022                                          ;**NEW**
     71					                                                                                ;**NEW**
     72					CTLLST:				;++022 TABLE TO CONTROL DATA TRANSFER           ;**NEW**
     73						.BYTE	N.FNAM,N.FNAM+2,N.FNAM+4,N.FTYP,N.FVER  ;++022                  ;**NEW**
     74						.BYTE	N.DID,N.DID+2,N.DID+4,-1  ;++022                                ;**NEW**
     75					                                                                                ;**NEW**
     76					                                                                                ;**NEW**
     77						.EVEN                                                                   ;**NEW**
     78					                                                                                ;**NEW**
     79					CRFNAM:	.RAD50	/CRF.../	;++022 NAME OF CRF TASK                         ;**NEW**
     80					                                                                                ;**NEW**
     81						.ENDC			;++022                                          ;**NEW**
     82					                                                                                ;**NEW**
     83					                                                                                ;**NEW**
     84	000205					PURE	PUREI,I		;++017
     85
     86					;+
     87					; **-SETDN-SET DONE-END OF PROGRAM CLEAN UP
     88					;-
     89
     90	000000	012701 	000000'		SETDN::	MOV	#FINMSG,R1	;SET FOR FINAL MESSAGE
     91	000004	012702 	000000G			MOV	#LINBUF,R2
     92	000010	004767 	000000G			CALL	MOVBYT		;MOVE INTO LINBUF
     93	000014	016701 	000000G			MOV	ERRCNT,R1
     94	000020	010146 				MOV	R1,-(SP)
     95	000022	004767 	000000G			CALL	DNC		;PRINT IN DECIMAL
     96	000026	105012 				CLRB	(R2)
     97	000030					PUTLP	#LINBUF		;LIST TO LP
     98	000040	005716 				TST	(SP)
     99	000042	001404 				BEQ	2$		;BRANCH IF NO ERRORS
    100	000044					PUTKB	#LINBUF		;ELSE PUT ON KB
    101	000054	012702 	000000G		2$:	MOV	#LINBUF,R2
    102	000060	012701 	000023'			MOV	#FINMS1,R1
    103	000064	004767 	000000G			CALL	MOVBYT
    104	000070	016701 	000000G			MOV	$HGVAD,R1	;++021 GET HIGHEST VIRT LOCN USED               ;**NEW**
    105	000074	004767 	000000G			CALL	DNC                                                             ;**-6
    106	000100	012701 	000054'			MOV	#FINMS2,R1
    107	000104	004767 	000000G			CALL	MOVBYT
    108	000110	016701 	000000G			MOV	$HGVAD,R1	;++021 GET HIGHEST VIRT LOCN USED               ;**NEW**
    109	000114	062701 	000377 			ADD	#377,R1		;++021 ROUND UP TO NEXT PAGE                    ;**NEW**
    110	000120	105001 				CLRB	R1		;++021 DIVIDE BY 256.                           ;**NEW**
    111	000122	000301 				SWAB	R1		;++021                                          ;**NEW**
    112	000124	004767 	000000G			CALL	DNC		;++021 CONVERT TO DECIMAL AND STORE             ;**NEW**
    113	000130	012701 	000067'			MOV	#FINMS3,R1	;++021 GET ADDR OF LAST PART OF MSG             ;**NEW**
    114	000134	004767 	000000G			CALL	MOVBYT		;++021 TRANSFER INTO BUFFER                     ;**NEW**
SETDN	MACRO M1108  05-DEC-77 23:36  PAGE 6-2


    115	000140					PUTLP	#LINBUF
    116	000150	012701 	000077'			MOV	#DYNMSG,R1	;++027 GET ADDR OF DYNAMIC MEMORY MSG           ;**NEW**
    117	000154	012702 	000000G			MOV	#LINBUF,R2	;++027 GET ADDRESS OF BUFFER                    ;**NEW**
    118	000160	004767 	000000G			CALL	MOVBYT		;++027 TRANSFER MESSAGE TEXT INTO BUFFER        ;**NEW**
    119	000164	016701 	000000G			MOV	$FRSIZ,R1	;++027 GET SIZE OF AVAIL MEMORY                 ;**NEW**
    120	000170	000241 				CLC			;++027 CONVERT IT TO WORDS                      ;**NEW**
    121	000172	006001 				ROR	R1		;++027                                          ;**NEW**
    122	000174	004767 	000000G			CALL	DNC		;++027 CONVERT TO DECIMAL AND STORE             ;**NEW**
    123	000200	012701 	000054'			MOV	#FINMS2,R1	;++027 GET ADDR OF SECOND PART OF MSG           ;**NEW**
    124	000204	004767 	000000G			CALL	MOVBYT		;++027 TRANSFER INTO BUFFER                     ;**NEW**
    125	000210	016701 	000000G			MOV	$FRSIZ,R1	;++027 GET SIZE OF DYNAMIC MEMORY AGAIN         ;**NEW**
    126	000214	012703 	000000G			MOV	#P$GSIZ,R3	;++021 GET SIZE OF RESIDENT PAGE                ;**NEW**
    127	000220	005000 				CLR	R0		;++021 PREPARE TO DIVIDE                        ;**NEW**
    128	000222					DIV	R3,R0		;++021 CALC NUMBER OF RESIDENT PAGES            ;**NEW**
    129	000226	010001 				MOV	R0,R1		;++021 GET NUMBER OF PAGES AVAIL                ;**NEW**
    130	000230	004767 	000000G			CALL	DNC		;++021 CONVERT TO DECIMAL AND STORE             ;**NEW**
    131	000234	012701 	000067'			MOV	#FINMS3,R1	;++021 GET ADDR OF LAST PART OF MSG             ;**NEW**
    132	000240	004767 	000000G			CALL	MOVBYT		;++021 TRANSFER INTO BUFFER                     ;**NEW**
    133	000244					PUTLP	#LINBUF		;++021 WRITE BUFFER INTO LISTING                ;**NEW**
    134	000254	012702 	000000G			MOV	#LINBUF,R2	;++021 GET ADDR OF LINE BUFFER                  ;**NEW**
    135	000260	012701 	000121'			MOV	#TIMMSG,R1	;++021 GET ADDR OF TIME MESSAGE                 ;**NEW**
    136	000264	004767 	000000G			CALL	MOVBYT		;++021 TRANSFER INTO BUFFER                     ;**NEW**
    137	000270	012705 	000062G			MOV	#LINBUF+50.,R5	;++021 POINT WAY INTO BUFFER                    ;**NEW**
    138	000274					GTIM$S	R5		;++021 GET FINISH TIME                          ;**NEW**
    139	000304	062705 	000012 			ADD	#G.TISC,R5	;++021 POINT R5 TO SECONDS                      ;**NEW**
    140	000310	012704 	000000G			MOV	#$SEC,R4	;++021 POINT R4 PAST START TIME                 ;**NEW**
    141	000314	161415 				SUB	(R4),(R5)	;++021 SUBTRACT SECONDS                         ;**NEW**
    142	000316	002004 				BGE	100$		;++021 IF NOT NEGATIVE SKIP                     ;**NEW**
    143	000320	062715 	000074 			ADD	#60.,(R5)	;++021 ELSE, BORROW 60. SECONDS                 ;**NEW**
    144	000324	005365 	177776 			DEC	-2(R5)		;++021                                          ;**NEW**
    145	000330	164445 			100$:	SUB	-(R4),-(R5)	;++021 SUBTRACT MINUTES                         ;**NEW**
    146	000332	002004 				BGE	200$		;++021 IF NOT NEGATIVE SKIP                     ;**NEW**
    147	000334	062715 	000074 			ADD	#60.,(R5)	;++021 ELSE, BORROW 60. MINUTES                 ;**NEW**
    148	000340	005365 	177776 			DEC	-2(R5)		;++021                                          ;**NEW**
    149	000344	164445 			200$:	SUB	-(R4),-(R5)	;++021 SUBTRACT HOURS                           ;**NEW**
    150	000346	002002 				BGE	300$		;++021 IF NOT NEGATIVE SKIP                     ;**NEW**
    151	000350	062715 	000030 			ADD	#24.,(R5)	;++021 ELSE, BORROW 24. HOURS                   ;**NEW**
    152	000354	012501 			300$:	MOV	(R5)+,R1	;++021 GET HOURS IN R1                          ;**NEW**
    153	000356	004767 	000264 			CALL	TIMCVT		;++021 CONVERT AND PUT IN BUFFER                ;**NEW**
    154	000362	112722 	000072 			MOVB	#':,(R2)+	;++021 SEPARATE WITH A COLON                    ;**NEW**
    155	000366	012501 				MOV	(R5)+,R1	;++021 GET MINUTES IN R1                        ;**NEW**
    156	000370	004767 	000252 			CALL	TIMCVT		;++021 CONVERT AND PUT IN BUFFER                ;**NEW**
    157	000374	112722 	000072 			MOVB	#':,(R2)+	;++021 SEPARATE WITH A COLON                    ;**NEW**
    158	000400	012501 				MOV	(R5)+,R1	;++021 GET SECONDS IN R1                        ;**NEW**
    159	000402	004767 	000240 			CALL	TIMCVT		;++021 CONVERT AND PUT IN BUFFER                ;**NEW**
    160	000406	105022 				CLRB	(R2)+		;++021 TERMINATE MSG WITH A NULL                ;**NEW**
    161	000410					PUTLP	#LINBUF		;++021 WRITE BUFFER INTO LISTING                ;**NEW**
    162	000420	012701 	000000G			MOV	#CMLBLK,R1	;GET ADDRESS OF COMMAND BLOCK
    163	000424	016102 	000146 			MOV	G.CMLD(R1),R2	;GET NUMBER OF BYTES
    164	000430	016101 	000150 			MOV	G.CMLD+2(R1),R1	;GET ADDRESS OF LINE
    165	000434	012703 	000000G			MOV	#LINBUF,R3
    166	000440	112123 			3$:	MOVB	(R1)+,(R3)+	;MOV CMD STRING TO LINBUF
    167	000442					SOB	R2,3$		;REPEAT
    168	000446	105013 				CLRB	(R3)
    169	000450					PUTLP	#LINBUF		;PUT OUT ON LP
    170	000460	005726 				TST	(SP)+
    171	000462	001404 				BEQ	4$
SETDN	MACRO M1108  05-DEC-77 23:36  PAGE 6-3


    172	000464					PUTKB	#LINBUF		;AND ON KB IF ASM ERRS
    173	000474				4$:				;++015
    174
    175
    176					                                                                                ;**NEW**
    177					                                                                                ;**NEW**
    178						.IF NDF	XCREF		;++022                                          ;**NEW**
    179					                                                                                ;**NEW**
    180						TSTB	CRFFIL		;++022 WAS A CRF FILE CREATED?                  ;**NEW**
    181						BEQ	5$		;++022 IF EQ NO                                 ;**NEW**
    182						MOV	FDBTBL+LSTCHN,R0  ;++022 GET LST FILE FDB ADDR                  ;**NEW**
    183						MOVB	F.LUN(R0),R1	;++022 GET LUN IN R1                            ;**NEW**
    184						ADD	#F.FNB,R0	;++022 POINT TO FILE NAME BLOCK                 ;**NEW**
    185						SUB	#13.*2,SP	;++022 ALLOC SEND BLOCK ON STACK                ;**NEW**
    186						MOV	SP,R2		;++022 COPY ADDR INTO R2                        ;**NEW**
    187						MOV	#CTLLST,R3	;++022 GET ADDR OF TRANSFER CTL LIST            ;**NEW**
    188					50$:	MOVB	(R3)+,R4	;++022 GET NEXT FNB OFFSET                      ;**NEW**
    189						BLT	55$		;++022 IF LT DONE                               ;**NEW**
    190						ADD	R0,R4		;++022 ADD IN FDB ADDRESS                       ;**NEW**
    191						MOV	(R4),(R2)+	;++022 COPY DATA INTO SEND BLOCK                ;**NEW**
    192						BR	50$		;++022 REPEAT                                   ;**NEW**
    193					;                                                                               ;**NEW**
    194					; GET LUN INFORMATION TO INSURE THAT THE CORRECT DEVICE NAME AND                ;**NEW**
    195					; UNIT NUMBER ARE CONVEYED.  THIS IS A SIDE EFFECT OF THE MCR LOGICAL           ;**NEW**
    196					; DEVICE NAME ASSIGNMENT COMMAND. NOTE THAT THE RETURN ADDRESS IS               ;**NEW**
    197					; CLOBBERED, BUT THAT THIS ROUTINE ALWAYS JUMPS TO THE ASSEMBLER RESTART        ;**NEW**
    198					; ADDRESS.                                                                      ;**NEW**
    199					;                                                                               ;**NEW**
    200					55$:	GLUN$S	R1,R2		;++022 GET LUN INFO                             ;**NEW**
    201						ADD	#3,R2		;++022 POINT BEYOND UNIT NUMBER                 ;**NEW**
    202						CLRB	(R2)+		;++022 ASSUME NOT TO SPOOL OUTPUT               ;**NEW**
    203						BIT	#SPMSK,$SWTCH	;++022 LST SPOOLING REQUESTED?                  ;**NEW**
    204						BNE	56$		;++022 IF NE NO                                 ;**NEW**
    205						INCB	-1(R2)		;++022 SET CRF SPOOL FLAG                       ;**NEW**
    206					56$:	MOV	FDBTBL+CRFCHN,R0  ;++022 GET CRF FILE FDB ADDR                  ;**NEW**
    207						MOV	F.FNB+N.FVER(R0),(R2)+  ;++022 COPY CRF FILE VERSION            ;**NEW**
    208						MOV	$LSTGT,(R2)+	;++022 COPY LST FILE TARGET DEVICE              ;**NEW**
    209						MOVB	$LSTGT+2,(R2)	;++022 AND UNIT NUMBER                          ;**NEW**
    210						MOV	SP,R2		;++022 RESET SEND BLOCK ADDR                    ;**NEW**
    211						MOV	#CRFNAM,R1	;++022 POINT TO NAME OF CRF TASK                ;**NEW**
    212						CLOSE$	R0		;++022 CLOSE CRF FILE BEFORE SEND               ;**NEW**
    213						SDAT$S	R1,R2		;++022 SEND BLOCK OF DATA                       ;**NEW**
    214						RQST$S	R1		;++022 REQUEST CRF TO RUN                       ;**NEW**
    215						ADD	#13.*2,SP	;++022 CLEAN STACK                              ;**NEW**
    216						BR	10$		;++022 SKIP LST FILE SPOOLING                   ;**NEW**
    217					5$:				;++022                                          ;**NEW**
    218					                                                                                ;**NEW**
    219						.ENDC			;++022                                          ;**NEW**
    220					                                                                                ;**NEW**
    221					                                                                                ;**NEW**
    222						.IF NDF	XSPOOL		;++015
    223	000474	032767 	000000G	000000G		BIT	#SPMSK,$SWTCH	;++015 SPOOL LISTING?
    224	000502	001005 				BNE	10$		;IF NE NO
    225	000504	016700 	000004G			MOV	FDBTBL+LSTCHN,R0  ;++017 PUT LISTING FILE FDB ADDR IN R0
    226	000510	001402 				BEQ	10$		;++017 BRANCH IF NO LISTING FILE
    227	000512	004767 	000000G			CALL	.PRINT		;++018 CLOSE FILE AND SEND INFO TO SPOOLER
    228						.ENDC			;++015
SETDN	MACRO M1108  05-DEC-77 23:36  PAGE 6-4


    229
    230
    231	000516	004767 	000000G		10$:	CALL	CLSALL		;++017 CLOSE ALL OPEN FILES
    232	000522	000167 	000000G			JMP	CONT		;++017 RESTART THE ASSEMBLER
    233
    234					;+
    235					; **-SETTIM-SET TIME AND DATE PARAMETERS
    236					;-
    237
    238						.IF NDF	XTIME
    239	000526				SETTIM::GTIM$S	#LINBUF		;GET TIME PARAMETERS
    240	000540	012702 	000000G			MOV	#DATTIM,R2
    241	000544	012704 	000006G			MOV	#LINBUF+6,R4	;
    242	000550	014401 				MOV	-(R4),R1
    243	000552	004767 	000060 			CALL	3$
    244	000556	014401 				MOV	-(R4),R1
    245	000560	006301 				ASL	R1
    246	000562	061401 				ADD	(R4),R1
    247	000564	062701 	000136'			ADD	#MONTHS-3,R1
    248	000570	112122 				MOVB	(R1)+,(R2)+
    249	000572	112122 				MOVB	(R1)+,(R2)+
    250	000574	112122 				MOVB	(R1)+,(R2)+
    251	000576	105722 				TSTB	(R2)+
    252	000600	014401 				MOV	-(R4),R1
    253	000602	004767 	000030 			CALL	3$
    254	000606	012704 	000006G			MOV	#LINBUF+6,R4	;
    255	000612	012401 				MOV	(R4)+,R1
    256	000614	010167 	000000G			MOV	R1,$HOUR	;++021 SAVE START HOURS                         ;**NEW**
    257	000620	004767 	000012 			CALL	3$
    258	000624	011401 				MOV	(R4),R1
    259	000626	012467 	000000G			MOV	(R4)+,$MIN	;++021 SAVE START MINUTES                       ;**NEW**
    260	000632	011467 	000000G			MOV	(R4),$SEC	;++021 SAVE START SECONDS                       ;**NEW**
    261	000636	004767 	000004 		3$:	CALL	TIMCVT		;++021 CONVERT TIME AND STORE IN BUFFER         ;**NEW**
    262	000642	105722 				TSTB	(R2)+                                                           ;**-4
    263	000644	000207 				RETURN
    264					                                                                                ;**NEW**
    265					                                                                                ;**NEW**
    266	000646	020127 	000012 		TIMCVT:	CMP	R1,#10.		;++021 IS NUMBER LESS THAN TEN?                 ;**NEW**
    267	000652	002002 				BGE	10$		;++021 BRANCH IF NOT                            ;**NEW**
    268	000654	112722 	000060 			MOVB	#'0,(R2)+	;++021 ELSE, PAD WITH LEADING ZERO              ;**NEW**
    269	000660				10$:	CALLR	DNC		;++021 CVT TO DECIMAL, STORE, AND RETURN        ;**NEW**
    270						.ENDC
    271
    272		000001 				.END
SETDN	MACRO M1108  05-DEC-77 23:36  PAGE 6-5
SYMBOL TABLE

AM.DEC= 000040   	CMOCHN= 000000   	GE.CLO= 000004   	LINBUF= ****** GX	SRCCHN= 000002
AM.DEF= 000010   	CONT  = ****** GX	GE.COM= 000001   	LINLEN= 000204   	SRCLEN= 000204
AM.IMM= 000027   	CPL   = 000120   	GE.EOF= 177766   	LPP   = 000074   	STLLEN= 000100
AM.INC= 000020   	CPXADD= 000001   	GE.IND= 000002   	LSTCHN= 000004   	S.FDB = 000140
AM.NDX= 000060   	CPXAND= 000005   	GE.IOR= 177777   	LSTLEN= 000204   	S.FNAM= 000006
AM.PC = 000007   	CPXCOM= 000011   	GE.LC = 000010   	LST.KB= 000001   	S.FNB = 000036
AM.REL= 000067   	CPXCON= 000020   	GE.MDE= 177774   	LST.LP= 000002   	S.FNBW= 000017
ASTFLG= 000114   	CPXDIV= 000004   	GE.OPR= 177776   	MAXCHN= 000014   	S.FNTY= 000004
BINCHN= 000006   	CPXFLG= 000200   	GLBFLG= 000100   	MDFFLG= 000004   	S.FTYP= 000002
BLKT01= 000001   	CPXGLB= 000016   	GSDT00= 000000   	MONTHS  000141R     002	S.NFEN= 000020
BLKT02= 000002   	CPXIOR= 000006   	GSDT01= 000400   	MOVBYT= ****** GX	TAB   = 000011
BLKT03= 000003   	CPXMUL= 000003   	GSDT02= 001000   	OBJLEN= 000052   	TIMCVT  000646R     003
BLKT04= 000004   	CPXNEG= 000010   	GSDT03= 001400   	PSTFLG= 000050   	TIMMSG  000121R     002
BLKT05= 000005   	CPXOPC= 000010   	GSDT04= 002000   	PUTKB = ****** GX	TMPCNT= 000014
BLKT06= 000006   	CPXREL= 000017   	GSDT05= 002400   	PUTLP = ****** GX	TTLLEN= 000040
BPMB  = 000020   	CPXSDS= 000013   	GSDT06= 003000   	P$GSIZ= ****** GX	VT    = 000013
CH.ADD= 000053   	CPXSTO= 000012   	G.CMLD= 000146   	REGFLG= 000001   	XBSRCH= 000000
CH.AND= 000046   	CPXSUB= 000002   	G.DPRM= 000160   	RELCHN= 000010   	XCREF = 000000
CH.BSL= 000134   	CR    = 000015   	G.ERR = 000140   	RELFLG= 000040   	XEDABS= 000000
CH.COL= 000072   	CSTACC= 000020   	G.ISIZ= 000020   	RLDLEN= 000052   	XEDCDR= 000000
CH.COM= 000054   	CSTALO= 000004   	G.MODE= 000141   	RLDT00= 000000   	XEDCRF= 000000
CH.DIV= 000057   	CSTFLG= 000050   	G.PSDS= 000142   	RLDT01= 000001   	XEDFPT= 000000
CH.DOL= 000044   	CSTGBL= 000100   	G.TICP= 000016   	RLDT02= 000002   	XEDLC = 000000
CH.DOT= 000056   	CSTMEM= 000001   	G.TICT= 000014   	RLDT03= 000003   	XEDPIC= 000000
CH.EQU= 000075   	CSTREL= 000040   	G.TIDA= 000004   	RLDT04= 000004   	XEDPNC= 000000
CH.HSH= 000043   	CSTTYP= 000200   	G.TIHR= 000006   	RLDT05= 000005   	XFCSQN= 000000
CH.IND= 000100   	DATTIM= ****** GX	G.TIMI= 000010   	RLDT06= 000006   	XFLTG = 000000
CH.IOR= 000041   	DEFFLG= 000010   	G.TIMO= 000002   	RLDT07= 000007   	XOPEXP= 000000
CH.LAB= 000074   	DFGFLG= 000020   	G.TISC= 000012   	RLDT10= 000010   	XSUBD = 000000
CH.LP = 000050   	DIG.0 = 000060   	G.TIYR= 000000   	RLDT11= 000011   	XZERR = 000000
CH.MUL= 000052   	DIG.9 = 000071   	ILVL  = 000004   	RLDT15= 000015   	X45   = 000000
CH.PCT= 000045   	DIV   = ****** G 	LBLFLG= 000002   	RLDT16= 000016   	YQCMO = 000000
CH.QM = 000077   	DNC   = ****** GX	LET.A = 000101   	RLDT17= 000017   	$FRSIZ= ****** GX
CH.QTM= 000042   	DYNMSG  000077R     002	LET.B = 000102   	RSX11M= 000000   	$HGVAD= ****** GX
CH.RAB= 000076   	ERRCNT= ****** GX	LET.C = 000103   	R$$11M= 000000   	$HOUR = ****** GX
CH.RP = 000051   	FDBTBL= ****** GX	LET.D = 000104   	SETDN   000000RG    003	$MIN  = ****** GX
CH.SMC= 000073   	FF    = 000014   	LET.E = 000105   	SETTIM  000526RG    003	$SEC  = ****** GX
CH.SUB= 000055   	FINMSG  000000R     002	LET.F = 000106   	SMLCHN= 000012   	$SWTCH= ****** GX
CH.UAR= 000136   	FINMS1  000023R     002	LET.G = 000107   	SMLLEN= 000120   	$$$OST= 000020
CH.XCL= 000047   	FINMS2  000054R     002	LET.O = 000117   	SPACE = 000040   	.PRINT= ****** GX
CLSALL= ****** GX	FINMS3  000067R     002	LET.Z = 000132   	SPMSK = ****** GX	...TPC= 000140
CMLBLK= ****** GX	GE.BIF= 177775   	LF    = 000012

. ABS.	000000	   000
      	000000	   001
TXTBYT	000205	   002
PUREI 	000664	   003
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  5862 WORDS  ( 23 PAGES)
DYNAMIC MEMORY:  6272 WORDS  ( 24 PAGES)
ELAPSED TIME:  00:00:54
[45,10]SETDN,[45,20]SETDN/-SP=[45,30]RSXPAR,MPARAM,MCIOCH,GENMC,FLGDF,SETDN
SETIMM	MACRO M1108  05-DEC-77 23:37  PAGE 4


      1						.TITLE	SETIMM
      2						.IDENT	/X03.01/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION X03.01                                                                ;**NEW**
     23					;                                                                               ;**-1
     24					; B. BOWERING MAIN AUTHOR
     25					;
     26					; MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 20-JAN-73
     29					;	C.A. D'ELIA	22-SEP-73	001
     30					;	C.A. D'ELIA	12-NOV-73	006
     31					;	C.A. D'ELIA	22-MAR-74	014
     32					;	H.A. NICHOLS	18-JUN-74	017
     33					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     34					;                                                                               ;**NEW**
     35					                                                                                ;**NEW**
     36					;
     37					; **--SETIMM--CONVERT IMMEDIATE EXPRESSION TO CODE ROLL ENTRY
     38					; **--SETDSP--CONVERT DISPLACED EXPRESSION TO CODE ROLL ENTRY
     39					;
     40					                                                                                ;**-11
     41
     42	000000					PURE	PUREI,I	;++017
     43
     44	000000				SETIMM::			;SET IMMEDIATE MODE
     45	000000					SAVREG			;SAVE REGISTERS
     46	000004					SETXPR			;  AND SET "EXPRESSION" TYPE
     47						.IF NDF	XREL
     48	000010	012701 	000000'			MOV	#IMMMOD,R1	;SET TABLE INDEX
     49	000014	005767 	000000G			TST	ENDFLG		;SPECIAL FOR .END?
     50	000020	001051 				BNE	SETDS1		;  YES
     51	000022	132713 	000200 			BITB	#CPXFLG,(R3)	;++001 COMPLEX RELOCATION EXPRESSION?
     52	000026	001402 				BEQ	1$		;++001 NO PROCEED NORMALLY
     53	000030	005014 				CLR	(R4)		;++001 VALUE OF 0 MEANS IMMEDIATE MODE
     54	000032	000427 				BR	GETCPX		;++001 GET COMPLEX RLD # & CONTINUE
     55	000034				1$:				;++001
     56	000034	132713 	000100 			BITB	#GLBFLG,(R3)	;EXTERNAL?
     57	000040	001110 				BNE	SETDS4		;IF NE YES-USE COMMON CODE
SETIMM	MACRO M1108  05-DEC-77 23:37  PAGE 4-1


     58	000042	122121 				CMPB	(R1)+,(R1)+	;MOVE INDEX
     59	000044	132713 	000040 			BITB	#RELFLG,(R3)	;RELOCATABLE?
     60	000050	001507 				BEQ	SETDSX		;  NO, ALL SET
     61	000052	105721 				TSTB	(R1)+
     62	000054	121267 	000000G			CMPB	(R2),CLCSEC	;YES, CURRENT SECTOR?
     63	000060	001031 				BNE	SETDS1		;  NO
     64						.IFTF
     65	000062	000502 				BR	SETDSX		;YES
     66	000064				SETDSP::			;++006 SET DISPLACED MODE
     67	000064					SAVREG			;SAVE REGISTERS
     68	000070					SETXPR			;  AND SET "EXPRESSION" TYPE
     69						.IFT
     70	000074	012701 	000006'			MOV	#DSPMOD,R1	;SET INDEX
     71	000100	132713 	000200 			BITB	#CPXFLG,(R3)	;++001 COMPLEX RELOCATION EXPRESSION?
     72	000104	001405 				BEQ	SETDS0		;++001 NO, PROCEED NORMALLY
     73	000106	012714 	000001 			MOV	#1,(R4)		;++001 VALUE OF 1 MEANS DISPLACED MODE
     74	000112	012701 	000013'		GETCPX:	MOV	#CPXRLD,R1	;++001 POINT R1 TO COMPLEX RLD #
     75	000116	000464 				BR	SETDSX		;++001 PROCESS THRU COMMON CODE
     76	000120				SETDS0:				;++001
     77	000120	132713 	000100 			BITB	#GLBFLG,(R3)	;EXTERNAL?
     78	000124	001056 				BNE	SETDS3		;  YES, TEST FOR ADDITIVE
     79	000126	122121 				CMPB	(R1)+,(R1)+
     80	000130	121267 	000000G			CMPB	(R2),CLCSEC	;CURRENT SECTOR?
     81	000134	001440 				BEQ	SETDS2		;  YES
     82	000136	105721 				TSTB	(R1)+
     83	000140	105712 				TSTB	(R2)		;LOOKING AT ABSOLUTE?
     84	000142	001452 				BEQ	SETDSX		;  YES
     85	000144	105721 			SETDS1:	TSTB	(R1)+
     86	000146	005000 				CLR	R0		;CLEAR HIGH ORDER
     87	000150	151200 				BISB	(R2),R0		;SET SECTOR
     88	000152	020027 	000000G			CMP	R0,#NU$SEC	;++021 COMP W/ PSECT NAME TABLE COUNT           ;**NEW**
     89	000156	002005 				BGE	5$		;++021 IF GE NOT IN TABLE                       ;**NEW**
     90	000160	006300 				ASL	R0		;++021 ELSE, CONVERT NUMBER TO A                ;**NEW**
     91	000162	006300 				ASL	R0		;++021 DOUBLE-WORD OFFSET                       ;**NEW**
     92	000164	066700 	000000G			ADD	$NAMSC,R0	;++021 ADD START OF TABLE ADDR                  ;**NEW**
     93	000170	000415 				BR	15$		;++021 BRANCH INTO COMMON CODE                  ;**NEW**
     94	000172	010246 			5$:	MOV	R2,-(SP)	;++021 SAVE R2 AND R1                           ;**NEW**
     95	000174	010146 				MOV	R1,-(SP)	;++021                                          ;**NEW**
     96	000176	010046 				MOV	R0,-(SP)	;++021 STORE THE PSECT NUMBER                   ;**NEW**
     97	000200	012700 	000000G			MOV	#BASSEC,R0	;++021 GET ADDR OF LIST HEAD                    ;**NEW**
     98	000204	011001 			10$:	MOV	(R0),R1		;++021 GET VIRT LOCN OF NEXT ENTRY              ;**NEW**
     99	000206	004767 	000000G			CALL	$CVRL		;++021 GET ITS REAL ADDRESS                     ;**NEW**
    100	000212	005316 				DEC	(SP)		;++021 DECREMENT SECTION NUMBER                 ;**NEW**
    101	000214	002373 				BGE	10$		;++021 IF GE IT'S NOT ONE WE WANT               ;**NEW**
    102	000216	022026 				CMP	(R0)+,(SP)+	;++021 SKIP PAST LINK AND CLEAN STACK           ;**NEW**
    103	000220	012601 				MOV	(SP)+,R1	;++021 RESTORE R1 AND R2                        ;**NEW**
    104	000222	012602 				MOV	(SP)+,R2	;++021                                          ;**NEW**
    105	000224				15$:				;++021                                          ;**NEW**
    106	000224	012067 	000000G			MOV	(R0)+,SYMBOL	;XFER SECTOR NAME TO SYMBOL                     ;**-2
    107	000230	012067 	000002G			MOV	(R0)+,SYMBOL+2
    108	000234	000415 				BR	SETDSX
    109	000236	005067 	000000G		SETDS2:	CLR	MODE
    110						.IFTF
    111	000242	116700 	000000G			MOVB	INSIZE,R0	;++014 GET INSTR WORD COUNT IN R0
    112	000246	005200 				INC	R0
    113	000250	006300 				ASL	R0		;MAKE IT 4 OR 6
    114	000252	066700 	000000G			ADD	CLCLOC,R0
SETIMM	MACRO M1108  05-DEC-77 23:37  PAGE 4-2


    115	000256	160014 				SUB	R0,(R4)
    116						.IFT
    117	000260	000403 				BR	SETDSX
    118	000262				SETDS3:	.IF DF	YPHASE
    119						SUB	PHAOFF,(R4)	;SUBTRACT OUT PHASE OFFSET
    120						.ENDC
    121	000262	005714 			SETDS4:	TST	(R4)		;ANY OFFSET CONSTANT?
    122	000264	001401 				BEQ	SETDSX		;IF EQ NO
    123	000266	105721 				TSTB	(R1)+		;YES, ADVANCE INDEX
    124	000270				SETDSX:
    125						.IFT
    126						.IF NDF	XEDPIC
    127						BIT	#ED.PIC,EDMASK
    128						BNE	12$
    129						TSTB	(R1)
    130						BEQ	12$
    131						CMPB	(R2),CLCSEC
    132						BEQ	10$
    133						CMP	R1,#DSPMOD
    134						BHIS	11$
    135						BR	12$
    136					10$:	CMP	R1,#DSPMOD
    137						BHIS	12$
    138					11$:	ERROR	R
    139					12$:
    140						.ENDC
    141	000270	111112 				MOVB	(R1),(R2)	;FILL IN TYPE
    142						.IFTF
    143	000272	005767 	000000G			TST	BYTMOD		;IN BYTE MODE?
    144	000276	001412 				BEQ	4$		;  NO
    145	000300	105724 				TSTB	(R4)+		;MOVE TO HIGH BYTE OF "VALUE"
    146	000302	111400 				MOVB	(R4),R0		;ANY HIGH ORDER BITES?
    147	000304	001404 				BEQ	3$		;++001 NO, O.K. TO BRANCH
    148	000306	005200 				INC	R0		;YES, ALL ONES?
    149	000310	001402 				BEQ	3$		;++001 YES, CONTINUE
    150	000312					ABSERR			;++001 NO, FLAG ERROR
    151	000316	105014 			3$:	CLRB	(R4)
    152	000320	152712 	000200 			BISB	#200,(R2)	;FLAG AS BYTE
    153	000324	000207 			4$:	RETURN
    154						.IFT
    155
    156	000326					PURE	TXTBYT,D		;++017
    157	000000	   002 	   005 	   000 	IMMMOD:	.BYTE	RLDT02,	RLDT05,	RLDT00,	RLDT01,	RLDT15,	0
	000003	   001 	   015 	   000
    158	000006	   004 	   006 	   000 	DSPMOD:	.BYTE	RLDT04,RLDT06,RLDT00,RLDT03,RLDT16 ;+001
	000011	   003 	   016
    159	000013	   017 			CPXRLD:	.BYTE	RLDT17		;++001
    160						.ENDC
    161
    162
    163		000001 				.END
SETIMM	MACRO M1108  05-DEC-77 23:37  PAGE 4-3
SYMBOL TABLE

ABSERR= ****** GX	CH.LP = 000050   	CSTACC= 000020   	LET.D = 000104   	SAVREG= ****** GX
AM.DEC= 000040   	CH.MUL= 000052   	CSTALO= 000004   	LET.E = 000105   	SETDSP  000064RG    002
AM.DEF= 000010   	CH.PCT= 000045   	CSTFLG= 000050   	LET.F = 000106   	SETDSX  000270R     002
AM.IMM= 000027   	CH.QM = 000077   	CSTGBL= 000100   	LET.G = 000107   	SETDS0  000120R     002
AM.INC= 000020   	CH.QTM= 000042   	CSTMEM= 000001   	LET.O = 000117   	SETDS1  000144R     002
AM.NDX= 000060   	CH.RAB= 000076   	CSTREL= 000040   	LET.Z = 000132   	SETDS2  000236R     002
AM.PC = 000007   	CH.RP = 000051   	CSTTYP= 000200   	LF    = 000012   	SETDS3  000262R     002
AM.REL= 000067   	CH.SMC= 000073   	DEFFLG= 000010   	LST.KB= 000001   	SETDS4  000262R     002
ASTFLG= 000114   	CH.SUB= 000055   	DFGFLG= 000020   	LST.LP= 000002   	SETIMM  000000RG    002
BASSEC= ****** GX	CH.UAR= 000136   	DIG.0 = 000060   	MDFFLG= 000004   	SETXPR= ****** GX
BLKT01= 000001   	CH.XCL= 000047   	DIG.9 = 000071   	MODE  = ****** GX	SPACE = 000040
BLKT02= 000002   	CLCLOC= ****** GX	DSPMOD  000006R     003	NU$SEC= ****** GX	SYMBOL= ****** GX
BLKT03= 000003   	CLCSEC= ****** GX	ENDFLG= ****** GX	PSTFLG= 000050   	TAB   = 000011
BLKT04= 000004   	CPXADD= 000001   	FF    = 000014   	REGFLG= 000001   	VT    = 000013
BLKT05= 000005   	CPXAND= 000005   	GETCPX  000112R     002	RELFLG= 000040   	XBSRCH= 000000
BLKT06= 000006   	CPXCOM= 000011   	GLBFLG= 000100   	RLDT00= 000000   	XCREF = 000000
BYTMOD= ****** GX	CPXCON= 000020   	GSDT00= 000000   	RLDT01= 000001   	XEDABS= 000000
CH.ADD= 000053   	CPXDIV= 000004   	GSDT01= 000400   	RLDT02= 000002   	XEDCDR= 000000
CH.AND= 000046   	CPXFLG= 000200   	GSDT02= 001000   	RLDT03= 000003   	XEDFPT= 000000
CH.BSL= 000134   	CPXGLB= 000016   	GSDT03= 001400   	RLDT04= 000004   	XEDLC = 000000
CH.COL= 000072   	CPXIOR= 000006   	GSDT04= 002000   	RLDT05= 000005   	XEDPIC= 000000
CH.COM= 000054   	CPXMUL= 000003   	GSDT05= 002400   	RLDT06= 000006   	XEDPNC= 000000
CH.DIV= 000057   	CPXNEG= 000010   	GSDT06= 003000   	RLDT07= 000007   	XFCSQN= 000000
CH.DOL= 000044   	CPXOPC= 000010   	ILVL  = 000004   	RLDT10= 000010   	XFLTG = 000000
CH.DOT= 000056   	CPXREL= 000017   	IMMMOD  000000R     003	RLDT11= 000011   	XOPEXP= 000000
CH.EQU= 000075   	CPXRLD  000013R     003	INSIZE= ****** GX	RLDT15= 000015   	XSUBD = 000000
CH.HSH= 000043   	CPXSDS= 000013   	LBLFLG= 000002   	RLDT16= 000016   	XZERR = 000000
CH.IND= 000100   	CPXSTO= 000012   	LET.A = 000101   	RLDT17= 000017   	X45   = 000000
CH.IOR= 000041   	CPXSUB= 000002   	LET.B = 000102   	RSX11M= 000000   	$CVRL = ****** GX
CH.LAB= 000074   	CR    = 000015   	LET.C = 000103   	R$$11M= 000000   	$NAMSC= ****** GX

. ABS.	000000	   000
      	000000	   001
PUREI 	000326	   002
TXTBYT	000014	   003
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2664 WORDS  ( 11 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:20
[45,10]SETIMM,[45,20]SETIMM/-SP=[45,30]RSXPAR,GENMC,FLGDF,SETIMM
SETMX	MACRO M1108  05-DEC-77 23:37  PAGE 4


      1						.TITLE	SETMX
      2						.IDENT	/X02.01/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THIS INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION X02.01                                                                ;**NEW**
     23					;                                                                               ;**-1
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 10-FEB-73
     29					;	H.A. NICHOLS	18-JUN-74	017
     30					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     31					;
     32					;+
     33					; **-SETMAX-SET MAXIMUM LOCATION COUNTER
     34					;-
     35
     36	000000					PURE	PUREI,I		;++017
     37						.IF NDF	XREL
     38	000000				SETMAX::SAVREG			;SAVE REGISTERS
     39	000004	012701 	000000G			MOV	#CLCNAM,R1
     40	000010	012702 	000000G			MOV	#SYMBOL,R2
     41	000014	012122 				MOV	(R1)+,(R2)+	;++021 COPY PSECT NAME INTO ...                 ;**NEW**
     42	000016	012122 				MOV	(R1)+,(R2)+	;++021 SYMBOL AREA                              ;**NEW**
     43	000020	004767 	000010 			CALL	$FNDSC		;++021 FETCH CURRENT PSECT ENTRY                ;**NEW**
     44	000024	004767 	000000G			CALL	XMIT3		;SET REMAINDER OF ENTRIES                       ;**-2
     45	000030	000167 	000000G			JMP	INSERT		;UPDATE ROLL AND EXIT
     46					                                                                                ;**NEW**
     47					                                                                                ;**NEW**
     48					;+                                                                              ;**NEW**
     49					; **-$FNDSC-FIND MATCHING PSECT ENTRY                                           ;**NEW**
     50					;                                                                               ;**NEW**
     51					; INPUTS:                                                                       ;**NEW**
     52					;	PSECT NAME IN SYMBOL AREA                                               ;**NEW**
     53					;                                                                               ;**NEW**
     54					; OUTPUTS:                                                                      ;**NEW**
     55					;	Z-BIT SET IF NOT FOUND (ALSO PSECT NAME ADDED TO IN-CORE                ;**NEW**
     56					;		PSECT NAME TABLE)                                               ;**NEW**
     57					;	Z-BIT CLEAR IF MATCH FOUND                                              ;**NEW**
SETMX	MACRO M1108  05-DEC-77 23:37  PAGE 4-1


     58					;	R3 POINTS TO SECTOR FLAGS BYTE                                          ;**NEW**
     59					;	R4 LOST                                                                 ;**NEW**
     60					;                                                                               ;**NEW**
     61					;-                                                                              ;**NEW**
     62					                                                                                ;**NEW**
     63	000034	012704 	000004G		$FNDSC::MOV	#SYMBOL+4,R4	;++021 POINT R4 INTO SYMBOL AREA                ;**NEW**
     64	000040	010403 				MOV	R4,R3		;++021 LEAVE R3 POINTING AT SECTOR              ;**NEW**
     65	000042	014446 				MOV	-(R4),-(SP)	;++021 SAVE PSECT NAME ON THE STACK             ;**NEW**
     66	000044	014446 				MOV	-(R4),-(SP)	;++021                                          ;**NEW**
     67	000046	005067 	000000G			CLR	$LSPNT		;++021 INIT POINTER TO START OF LIST            ;**NEW**
     68	000052				100$:	NEXT	SECLST		;++021 GET A PSECT ENTRY                        ;**NEW**
     69	000062	001410 				BEQ	200$		;++021 IF EQ END OF LIST                        ;**NEW**
     70	000064	021614 				CMP	(SP),(R4)	;++021 COMPARE W/ 1ST HALF OF NAME              ;**NEW**
     71	000066	001371 				BNE	100$		;++021 IF NE NO MATCH                           ;**NEW**
     72	000070	026664 	000002 	000002 		CMP	2(SP),2(R4)	;++021 COMPARE W/ 2ND HALF OF NAME              ;**NEW**
     73	000076	001365 				BNE	100$		;++021 IF NE NO MATCH                           ;**NEW**
     74	000100	022626 				CMP	(SP)+,(SP)+	;++021 ELSE, CLEAN STACK                        ;**NEW**
     75	000102	000417 				BR	300$		;++021 AND BRANCH TO RETURN                     ;**NEW**
     76	000104	012624 			200$:	MOV	(SP)+,(R4)+	;++021 RESTORE PSECT NAME                       ;**NEW**
     77	000106	012614 				MOV	(SP)+,(R4)	;++021                                          ;**NEW**
     78	000110	016704 	000000C			MOV	$LSCNT+SECLST,R4  ;++021 GET NEXT AVAIL PSECT NUMBER            ;**NEW**
     79	000114	020427 	000000G			CMP	R4,#NU$SEC	;++021 COMP W/ NAME TABLE COUNT                 ;**NEW**
     80	000120	002010 				BGE	300$		;++021 IF GE TABLE IS FULL                      ;**NEW**
     81	000122	006304 				ASL	R4		;++021 ELSE, CONVERT NUMBER TO A                ;**NEW**
     82	000124	006304 				ASL	R4		;++021 DOUBLE-WORD OFFSET                       ;**NEW**
     83	000126	066704 	000000G			ADD	$NAMSC,R4	;++021 ADD IN START OF TABLE ADDR               ;**NEW**
     84	000132	016324 	177774 			MOV	-4(R3),(R4)+	;++021 COPY NAME INTO THE TABLE                 ;**NEW**
     85	000136	016324 	177776 			MOV	-2(R3),(R4)+	;++021                                          ;**NEW**
     86	000142	005700 			300$:	TST	R0		;++021 RETURN R0 STATUS                         ;**NEW**
     87	000144	000207 				RETURN			;++021                                          ;**NEW**
     88					                                                                                ;**NEW**
     89					                                                                                ;**NEW**
     90						.ENDC
     91
     92		000001 				.END
SETMX	MACRO M1108  05-DEC-77 23:37  PAGE 4-2
SYMBOL TABLE

AM.DEC= 000040   	CH.MUL= 000052   	CSTALO= 000004   	LET.F = 000106   	R$$11M= 000000
AM.DEF= 000010   	CH.PCT= 000045   	CSTFLG= 000050   	LET.G = 000107   	SAVREG= ****** GX
AM.IMM= 000027   	CH.QM = 000077   	CSTGBL= 000100   	LET.O = 000117   	SECLST= ****** GX
AM.INC= 000020   	CH.QTM= 000042   	CSTMEM= 000001   	LET.Z = 000132   	SETMAX  000000RG    002
AM.NDX= 000060   	CH.RAB= 000076   	CSTREL= 000040   	LF    = 000012   	SPACE = 000040
AM.PC = 000007   	CH.RP = 000051   	CSTTYP= 000200   	LST.KB= 000001   	SYMBOL= ****** GX
AM.REL= 000067   	CH.SMC= 000073   	DEFFLG= 000010   	LST.LP= 000002   	TAB   = 000011
ASTFLG= 000114   	CH.SUB= 000055   	DFGFLG= 000020   	MDFFLG= 000004   	VT    = 000013
BLKT01= 000001   	CH.UAR= 000136   	DIG.0 = 000060   	NEXT  = ****** GX	XBSRCH= 000000
BLKT02= 000002   	CH.XCL= 000047   	DIG.9 = 000071   	NU$SEC= ****** GX	XCREF = 000000
BLKT03= 000003   	CLCNAM= ****** GX	FF    = 000014   	PSTFLG= 000050   	XEDABS= 000000
BLKT04= 000004   	CPXADD= 000001   	GLBFLG= 000100   	REGFLG= 000001   	XEDCDR= 000000
BLKT05= 000005   	CPXAND= 000005   	GSDT00= 000000   	RELFLG= 000040   	XEDFPT= 000000
BLKT06= 000006   	CPXCOM= 000011   	GSDT01= 000400   	RLDT00= 000000   	XEDLC = 000000
CH.ADD= 000053   	CPXCON= 000020   	GSDT02= 001000   	RLDT01= 000001   	XEDPIC= 000000
CH.AND= 000046   	CPXDIV= 000004   	GSDT03= 001400   	RLDT02= 000002   	XEDPNC= 000000
CH.BSL= 000134   	CPXFLG= 000200   	GSDT04= 002000   	RLDT03= 000003   	XFCSQN= 000000
CH.COL= 000072   	CPXGLB= 000016   	GSDT05= 002400   	RLDT04= 000004   	XFLTG = 000000
CH.COM= 000054   	CPXIOR= 000006   	GSDT06= 003000   	RLDT05= 000005   	XMIT3 = ****** GX
CH.DIV= 000057   	CPXMUL= 000003   	ILVL  = 000004   	RLDT06= 000006   	XOPEXP= 000000
CH.DOL= 000044   	CPXNEG= 000010   	INSERT= ****** GX	RLDT07= 000007   	XSUBD = 000000
CH.DOT= 000056   	CPXOPC= 000010   	LBLFLG= 000002   	RLDT10= 000010   	XZERR = 000000
CH.EQU= 000075   	CPXREL= 000017   	LET.A = 000101   	RLDT11= 000011   	X45   = 000000
CH.HSH= 000043   	CPXSDS= 000013   	LET.B = 000102   	RLDT15= 000015   	$FNDSC  000034RG    002
CH.IND= 000100   	CPXSTO= 000012   	LET.C = 000103   	RLDT16= 000016   	$LSCNT= ****** GX
CH.IOR= 000041   	CPXSUB= 000002   	LET.D = 000104   	RLDT17= 000017   	$LSPNT= ****** GX
CH.LAB= 000074   	CR    = 000015   	LET.E = 000105   	RSX11M= 000000   	$NAMSC= ****** GX
CH.LP = 000050   	CSTACC= 000020

. ABS.	000000	   000
      	000000	   001
PUREI 	000146	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2546 WORDS  ( 10 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:18
[45,10]SETMX,[45,20]SETMX/-SP=[45,30]RSXPAR,GENMC,FLGDF,SETMX
SPACE	MACRO M1108  05-DEC-77 23:38  PAGE 4


      1						.TITLE	SPACE
      2						.IDENT	/X04.01/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION X04.01                                                                ;**NEW**
     23					;                                                                               ;**-1
     24					;	C.A. D'ELIA	10-JAN-74	010
     25					;	C.A. D'ELIA	05-MAR-74	013
     26					;	C.A. D'ELIA	07-APR-74	015
     27					;	H.A. NICHOLS	18-JUN-74	017
     28					;	C.A. D'ELIA	22-SEP-74	017
     29					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     30					;
     31					;
     32					                                                                                ;**-2
     33					                                                                                ;**-1
     34	000000					PURE	PUREI,I		;++017
     35
     36						.IF NDF	XMACRO		;++021                                          ;**NEW**
     37					                                                                                ;**NEW**
     38					                                                                                ;**-25
     39					;++010
     40					;
     41					; **-REMMAC--REMOVE MACRO TEXT (PLACE BLOCKS IN MACRO FREE LIST)                ;**NEW**
     42					;                                                                               ;**-1
     43					; INPUTS:
     44					;	R0=ADDRESS OF FIRST TEXT BLOCK TO BE REMOVED.
     45					;	R1=VIRTUAL LOCN OF THE FIRST BLOCK                                      ;**NEW**
     46					;
     47					; OUTPUTS:
     48					;	THE MACRO STORAGE BLOCKS ARE RETURNED TO THE MACRO FREE                 ;**NEW**
     49					;	LIST.  R0 AND R1 ARE LOST.                                              ;**NEW**
     50					;                                                                               ;**-4
     51					;--010
     52
     53	000000				REMMAC::			;++010
     54	000000	010146 				MOV	R1,-(SP)	;++021 SAVE VIRT LOCN OF 1ST BLOCK              ;**NEW**
     55	000002	016746 	000000G			MOV	MACNXT,-(SP)	;++021 SAVE VIRT LOCN OF 1ST FREE BLK           ;**NEW**
     56	000006	001413 				BEQ	300$		;++021 IF EQ FREE LIST IS EMPTY                 ;**NEW**
     57	000010	010246 				MOV	R2,-(SP)	;++021 SAVE R2                                  ;**NEW**
SPACE	MACRO M1108  05-DEC-77 23:38  PAGE 4-1


     58	000012	000403 				BR	200$		;++021 BRANCH INTO LOOP CODE                    ;**NEW**
     59	000014	011001 			100$:	MOV	(R0),R1		;++021 GET VIRT LOCN OF NEXT BLOCK              ;**NEW**
     60	000016	004767 	000000G			CALL	$CVRL		;++021 GET ITS REAL ADDR IN R0                  ;**NEW**
     61	000022	005710 			200$:	TST	(R0)		;++021 EXAMINE LINK TO NEXT BLOCK               ;**NEW**
     62	000024	001373 				BNE	100$		;++021 IN NE NOT AT END OF LIST                 ;**NEW**
     63	000026	012602 				MOV	(SP)+,R2	;++021 ELSE, RESTORE R2                         ;**NEW**
     64	000030	011610 				MOV	(SP),(R0)	;++021 LINK IT TO FREE LIST                     ;**NEW**
     65	000032	004767 	000000G			CALL	$WRMPG		;++021 MARK PAGE DIRTY                          ;**NEW**
     66	000036	005726 			300$:	TST	(SP)+		;++021 CLEAN STACK                              ;**NEW**
     67	000040	012667 	000000G			MOV	(SP)+,MACNXT	;++021 LINK BLOCKS TO FRONT OF FREE LIST        ;**NEW**
     68	000044	000207 				RETURN			;++021                                          ;**NEW**
     69					                                                                                ;**NEW**
     70						.ENDC			;++010                                          ;**-199
     71
     72
     73
     74		000001 				.END
SPACE	MACRO M1108  05-DEC-77 23:38  PAGE 4-2
SYMBOL TABLE

BPMB  = 000020   	OBJLEN= 000052   	STLLEN= 000100   	XEDFPT= 000000   	XSUBD = 000000
CPL   = 000120   	REMMAC  000000RG    002	TTLLEN= 000040   	XEDLC = 000000   	XZERR = 000000
ILVL  = 000004   	RLDLEN= 000052   	XBSRCH= 000000   	XEDPIC= 000000   	X45   = 000000
LINLEN= 000204   	RSX11M= 000000   	XCREF = 000000   	XEDPNC= 000000   	YQCMO = 000000
LPP   = 000074   	R$$11M= 000000   	XEDABS= 000000   	XFCSQN= 000000   	$CVRL = ****** GX
LSTLEN= 000204   	SMLLEN= 000120   	XEDCDR= 000000   	XFLTG = 000000   	$WRMPG= ****** GX
MACNXT= ****** GX	SRCLEN= 000204   	XEDCRF= 000000   	XOPEXP= 000000

. ABS.	000000	   000
      	000000	   001
PUREI 	000046	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2179 WORDS  ( 9 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:19
[45,10]SPACE,[45,20]SPACE/-SP=[45,30]RSXPAR,MPARAM,GENMC,SPACE
STMNT	MACRO M1108  05-DEC-77 23:38  PAGE 5


      1						.TITLE	STMNT
      2						.IDENT	/04/
      3
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION 04
     23					;
     24					; B. BOWERING MAIN AUTHOR
     25					;
     26					; MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 20-JAN-73
     29					;	C.A. D'ELIA	12-NOV-73	006
     30					;	C.A. D'ELIA	15-NOV-73	008
     31					;	C.A. D'ELIA	16-NOV-73	009
     32					;	H.A. NICHOLS	18-JUN-74	017
     33					;
     34					;
     35					; **--STMNT--STATEMENT PROCESSOR
     36					;
     37					;
     38					;
     39
     40	000000					PURE	PUREI,I		;++017
     41	000000				STMNT::				;REF LABEL
     42	000000	016700 	000000G			MOV	CNDWRD,R0	;IN CONDITIONAL?
     43	000004	056700 	000000G			BIS	CNDMEX,R0	;  OR MEXIT?
     44	000010	001064 				BNE	40$		;  YES, BRANCH IF SUPPRESSED
     45	000012					GETSYM
     46	000016	001424 				BEQ	20$
     47	000020	020527 	000072 			CMP	R5,#CH.COL	; ":"
     48	000024	001002 				BNE	3$		;++006 NO, TRY FOR EQUAL SIGN
     49	000026	000167 	000000G			JMP	LABEL		;++006 YES, PROCESS LABEL
     50	000032				3$:				;++006
     51	000032	020527 	000075 			CMP	R5,#CH.EQU	; "="
     52	000036	001002 				BNE	1$		;  NO
     53	000040	000167 	000000G			JMP	ASGMT		;YES, PROCESS IT
     54
     55	000044				1$:	.IF NDF	XMACRO
     56	000044					MSRCH
     57	000050	001402 				BEQ	2$
STMNT	MACRO M1108  05-DEC-77 23:38  PAGE 5-1


     58	000052					CRFREF
     59	000052	000167 	000000G			JMP	OVMACR		;++006 JMP INTO ROOT TO CALL A MACRO
     60						.ENDC
     61
     62	000056				2$:	OSRCH
     63	000062	001423 				BEQ	30$
     64	000064					CRFREF
     65	000064	000167 	000000G		10$:	JMP	PROPC		;PROCESS OP CODE
     66	000070				20$:
     67						.IF NDF	XEDLSB
     68	000070	012702 	000012 			MOV	#10.,R2		;NOT SYMBOL, PERHAPS LOCAL SYMBOL?
     69	000074					CVTNUM
     70	000100	001414 				BEQ	30$		;  NO
     71	000102	020527 	000044 			CMP	R5,#CH.DOL	;NUMBER, TERMINATED BY "$"?
     72	000106	001011 				BNE	30$		;  NO
     73	000110					GETNB
     74	000114	020527 	000072 			CMP	R5,#CH.COL
     75	000120	001004 				BNE	30$
     76	000122					LSRCH			;SEARCH FOR LOCAL SYMBOL
     77	000126	000167 	000000G			JMP	LABELF		;++006 EXIT THRU LABEL PROCESSOR
     78						.ENDC
     79
     80	000132				30$:	SETSYM			;RESET CHAR POINTER AND FLAGS
     81	000136	105765 	000000G			TSTB	CTTBL(R5)
     82	000142	003424 				BLE	42$		;NULL IF END OF LINE
     83	000144	012701 	000000G			MOV	#WRDSYM,R1	;NEITHER, FUDGE ".WORD" DIRECTIVE
     84	000150	012702 	000000G			MOV	#SYMBOL,R2
     85	000154	004767 	000000G			CALL	XMIT4		;MOVE PST ENTRY TO "SYMBOL"
     86	000160	000741 				BR	10$
     87
     88	000162	004767 	000000G		40$:	CALL	SETDIR		;++008 UNSAT CNDTL, TEST FOR DIRECTIVE
     89	000166	001406 				BEQ	50$		;++008 NOT POSSIBLE, BRANCH TO LEAVE
     90	000170					OSRCH			;++008 POSSIBLE ONE FOUND, LOOK IN PST
     91	000174	032767 	000000G	000000G		BIT	#DFLCND,MODE	;++008 IS IT A CONDITIONAL?
     92	000202	001330 				BNE	10$		;  YES, PROCESS IT
     93	000204				50$:				;++008
     94	000204	052767 	000000G	000000G		BIS	#LC.CND,LCFLAG	;MARK AS UNSAT CONDITIONAL
     95	000212	005005 			41$:	CLR	R5
     96	000214	000207 			42$:	RETURN			;IGNORE LINE
     97
     98		000001 				.END
STMNT	MACRO M1108  05-DEC-77 23:38  PAGE 5-2
SYMBOL TABLE

AM.DEC= 000040   	CH.QTM= 000042   	CSTTYP= 000200   	LET.O = 000117   	RLDT17= 000017
AM.DEF= 000010   	CH.RAB= 000076   	CTTBL = ****** GX	LET.Z = 000132   	RSX11M= 000000
AM.IMM= 000027   	CH.RP = 000051   	CVTNUM= ****** GX	LF    = 000012   	R$$11M= 000000
AM.INC= 000020   	CH.SMC= 000073   	DEFFLG= 000010   	LINLEN= 000204   	SETDIR= ****** GX
AM.NDX= 000060   	CH.SUB= 000055   	DFGFLG= 000020   	LPP   = 000074   	SETSYM= ****** GX
AM.PC = 000007   	CH.UAR= 000136   	DFLCND= ****** GX	LSRCH = ****** GX	SMLLEN= 000120
AM.REL= 000067   	CH.XCL= 000047   	DIG.0 = 000060   	LSTLEN= 000204   	SPACE = 000040
ASGMT = ****** GX	CNDMEX= ****** GX	DIG.9 = 000071   	LST.KB= 000001   	SRCLEN= 000204
ASTFLG= 000114   	CNDWRD= ****** GX	FF    = 000014   	LST.LP= 000002   	STLLEN= 000100
BLKT01= 000001   	CPL   = 000120   	GETNB = ****** GX	MDFFLG= 000004   	STMNT   000000RG    002
BLKT02= 000002   	CPXADD= 000001   	GETSYM= ****** GX	MODE  = ****** GX	SYMBOL= ****** GX
BLKT03= 000003   	CPXAND= 000005   	GLBFLG= 000100   	MSRCH = ****** GX	TAB   = 000011
BLKT04= 000004   	CPXCOM= 000011   	GSDT00= 000000   	OBJLEN= 000052   	TTLLEN= 000040
BLKT05= 000005   	CPXCON= 000020   	GSDT01= 000400   	OSRCH = ****** GX	VT    = 000013
BLKT06= 000006   	CPXDIV= 000004   	GSDT02= 001000   	OVMACR= ****** GX	WRDSYM= ****** GX
BPMB  = 000020   	CPXFLG= 000200   	GSDT03= 001400   	PROPC = ****** GX	XBSRCH= 000000
CH.ADD= 000053   	CPXGLB= 000016   	GSDT04= 002000   	PSTFLG= 000050   	XCREF = 000000
CH.AND= 000046   	CPXIOR= 000006   	GSDT05= 002400   	REGFLG= 000001   	XEDABS= 000000
CH.BSL= 000134   	CPXMUL= 000003   	GSDT06= 003000   	RELFLG= 000040   	XEDCDR= 000000
CH.COL= 000072   	CPXNEG= 000010   	ILVL  = 000004   	RLDLEN= 000052   	XEDCRF= 000000
CH.COM= 000054   	CPXOPC= 000010   	LABEL = ****** GX	RLDT00= 000000   	XEDFPT= 000000
CH.DIV= 000057   	CPXREL= 000017   	LABELF= ****** GX	RLDT01= 000001   	XEDLC = 000000
CH.DOL= 000044   	CPXSDS= 000013   	LBLFLG= 000002   	RLDT02= 000002   	XEDPIC= 000000
CH.DOT= 000056   	CPXSTO= 000012   	LCFLAG= ****** GX	RLDT03= 000003   	XEDPNC= 000000
CH.EQU= 000075   	CPXSUB= 000002   	LC.CND= ****** GX	RLDT04= 000004   	XFCSQN= 000000
CH.HSH= 000043   	CR    = 000015   	LET.A = 000101   	RLDT05= 000005   	XFLTG = 000000
CH.IND= 000100   	CSTACC= 000020   	LET.B = 000102   	RLDT06= 000006   	XMIT4 = ****** GX
CH.IOR= 000041   	CSTALO= 000004   	LET.C = 000103   	RLDT07= 000007   	XOPEXP= 000000
CH.LAB= 000074   	CSTFLG= 000050   	LET.D = 000104   	RLDT10= 000010   	XSUBD = 000000
CH.LP = 000050   	CSTGBL= 000100   	LET.E = 000105   	RLDT11= 000011   	XZERR = 000000
CH.MUL= 000052   	CSTMEM= 000001   	LET.F = 000106   	RLDT15= 000015   	X45   = 000000
CH.PCT= 000045   	CSTREL= 000040   	LET.G = 000107   	RLDT16= 000016   	YQCMO = 000000
CH.QM = 000077

. ABS.	000000	   000
      	000000	   001
PUREI 	000216	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2856 WORDS  ( 12 PAGES)
DYNAMIC MEMORY:  4160 WORDS  ( 16 PAGES)
ELAPSED TIME:  00:00:24
[45,10]STMNT,[45,20]STMNT/-SP=[45,30]RSXPAR,MPARAM,GENMC,FLGDF,STMNT
SYMBL	MACRO M1108  05-DEC-77 23:39  PAGE 4


      1						.TITLE	SYMBL
      2						.IDENT	/05/
      3
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION 05
     23					;
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 10-FEB-73
     29					;	C.A. D'ELIA	10-NOV-73	004
     30					;	H.A. NICHOLS	18-JUN-74	017
     31					;
     32					;
     33					;+
     34					; **-DNC-DECIMAL NUMBER CONVERSION
     35					; **-DNCF-ALTERNATE ENTRY FOR ANOTHER BASE
     36					;-
     37
     38	000000					PURE	PUREI,I		;++017
     39	000000	012703 	000012 		DNC::	MOV	#10.,R3		;SET DIVISOR
     40	000004	005000 			DNCF::	CLR	R0		;CLEAR HIGH PART OF DIVIDEND
     41	000006					DIV	R3,R0		;DIVIDE R1
     42	000012	010146 				MOV	R1,-(SP)	;SAVE REMAINDER
     43	000014	010001 				MOV	R0,R1		;SET FOR NEXT DIVIDE
     44	000016	001402 				BEQ	1$		;  UNLESS ZERO
     45	000020	004767 	177760 			CALL	DNCF		;RECURSE
     46	000024	012601 			1$:	MOV	(SP)+,R1	;RETRIEVE NUMBER
     47	000026	062701 	000060 			ADD	#DIG.0,R1	;CONVERT TO ASCII
     48	000032	110122 				MOVB	R1,(R2)+	;STORE
     49	000034	000207 				RETURN
     50
     51					;+
     52					; **-DIV-SOFTWARE DIVIDE
     53					; **-MUL-SOFTWARE MULTILPY
     54					;-
     55
     56						.IF NDF	PDPV45
     57	000036	012746 	000020 		DIV::	MOV	#16.,-(SP)	;SET LOOP COUNT
SYMBL	MACRO M1108  05-DEC-77 23:39  PAGE 4-1


     58	000042	005046 				CLR	-(SP)		;RESULT
     59	000044	006316 			1$:	ASL	(SP)		;SHIFT RESULT
     60	000046	006301 				ASL	R1		;SHIFT WORK REGISTERS
     61	000050	006100 				ROL	R0		;  DOUBLE REGISTER
     62	000052	020003 				CMP	R0,R3		;BIG ENOUGH FOR OPERATION?
     63	000054	002402 				BLT	2$		;  NO
     64	000056	160300 				SUB	R3,R0		;YES
     65	000060	005216 				INC	(SP)		;BUMP RESULT
     66	000062	005366 	000002 		2$:	DEC	2(SP)		;TEST FOR END
     67	000066	001366 				BNE	1$
     68	000070	010001 				MOV	R0,R1		;PLACE REMAINDER IN R1
     69	000072	012600 				MOV	(SP)+,R0	;RESULT TO R0
     70	000074	005726 			DIVXIT:	TST	(SP)+		;PRUNE STACK
     71	000076	000207 				RETURN
     72	000100	010046 			MUL::	MOV	R0,-(SP)	;GET FIRST NUMBER
     73	000102	005000 				CLR	R0		;CLEAR RESULTS
     74	000104	005001 				CLR	R1
     75	000106	005716 			1$:	TST	(SP)		;THROUGH?
     76	000110	001771 				BEQ	DIVXIT		;  YES
     77	000112	006016 				ROR	(SP)
     78	000114	103002 				BCC	2$
     79	000116	060301 				ADD	R3,R1
     80	000120	005500 				ADC	R0
     81	000122	006303 			2$:	ASL	R3
     82	000124	000770 				BR	1$
     83						.ENDC
     84
     85					;+
     86					; **-GETSYM-GET SYMBOL
     87					; **-MULR50-MULTIPLY RAD50
     88					; **-GETR50-GET RAD50 CHARACTER
     89					; **-SETR50-SET RAD50 CHARACTER
     90					; **-TSTR50-TEST RAD50 CHARACTER
     91					;-
     92
     93	000126				GETSYM::SAVREG			;SAVE REGISTERS
     94	000132	016767 	000000G	000000G		MOV	CHRPNT,SYMBEG	;SAVE IN CASE OF RESCAN
     95	000140	012701 	000004G			MOV	#SYMBOL+4,R1
     96	000144	005041 				CLR	-(R1)
     97	000146	005041 				CLR	-(R1)
     98	000150	136527 	000000'	000040 		BITB	CTTBL(R5),#CT.ALP	;ALPHA?
     99	000156	001423 				BEQ	5$		;  NO, EXIT FALSE
    100	000160	012702 	026455 			MOV	#26455,R2
    101	000164					SETR50
    102	000170	004767 	000040 		1$:	CALL	MULR50
    103	000174	006202 			2$:	ASR	R2
    104	000176	103774 				BCS	1$
    105	000200	060011 				ADD	R0,(R1)
    106	000202				3$:	GETR50
    107	000206	003405 				BLE	4$
    108	000210	006202 				ASR	R2
    109	000212	103770 				BCS	2$
    110	000214	001772 				BEQ	3$
    111	000216	005721 				TST	(R1)+
    112	000220	000763 				BR	1$
    113	000222				4$:	SETNB
    114	000226	016700 	000000G		5$:	MOV	SYMBOL,R0
SYMBL	MACRO M1108  05-DEC-77 23:39  PAGE 4-2


    115	000232	000207 				RETURN
    116	000234				MULR50::IMULI	50,R0		;MULTILPY R0*50
	000234	010046 				MOV	R0,-(SP)
	000236	006300 				ASL	R0
	000240	006300 				ASL	R0
	000242	062600 				ADD	(SP)+,R0
	000244	006300 				ASL	R0
	000246	006300 				ASL	R0
	000250	006300 				ASL	R0
    117	000252	000207 				RETURN
    118	000254				GETR50::GETCHR			;GET NEXT CHARACTER
    119	000260	010500 			SETR50::MOV	R5,R0		;
    120	000262	132760 	000064 	000000'	TSTR50::BITB	#CT.ALP!CT.NUM!CT.SP,CTTBL(R0);ALPHA, NUMBER OR SPACE?
    121	000270	001410 				BEQ	1$		;  NO, EXIT MINUS
    122	000272	020027 	000044 			CMP	R0,#CH.DOL	;YES, TRY DOLLAR
    123	000276	103407 				BLO	2$		;SPACE
    124	000300	001410 				BEQ	3$		;DOLLAR
    125	000302	020027 	000101 			CMP	R0,#LET.A
    126	000306	103407 				BLO	4$		;DOT OR DIGIT
    127	000310	000410 				BR	5$		;ALPHA
    128	000312	012700 	100040 		1$:	MOV	#100000+SPACE,R0	;INVALID, FORCE MINUS
    129	000316	162700 	000027 		2$:	SUB	#SPACE-11,R0	;SPACE
    130	000322	162700 	177767 		3$:	SUB	#11-22,R0	;DOLLAR
    131	000326	162700 	177722 		4$:	SUB	#22-100,R0	;DOT, DIGIT
    132	000332	162700 	000100 		5$:	SUB	#100,R0		;ALPHABETIC
    133	000336	000207 				RETURN
    134
    135					;+
    136					; **-CVTNUM-CONVERT TEXT TO NUMERIC
    137					;
    138					; INPUTS:
    139					;
    140					;	R2=RADIX.
    141					;
    142					; OUTPUTS:
    143					;
    144					;	HIGH BIT OF R0=OVERFLOW FLAG.
    145					;	HIGH BYTE OF R0=CHARACTER COUNT.
    146					;	LOW BYTE OF R0=OVERSIZE COUNT.
    147					;-
    148
    149	000340				CVTNUM::SAVREG			;SAVE REGISTERS
    150	000344	005000 				CLR	R0		;RESULT FLAG REGISTER
    151	000346	005001 				CLR	R1		;NUMERIC ACCUMULATOR
    152	000350	016767 	000000G	000000G		MOV	CHRPNT,SYMBEG	;SAVE FOR RESCAN
    153	000356	010503 			1$:	MOV	R5,R3		;GET A COPY OF THE CURRENT CHAR
    154	000360	162703 	000060 			SUB	#DIG.0,R3	;CONVERT TO ABSOLUTE
    155	000364	020327 	000011 			CMP	R3,#9.		;NUMERIC?
    156	000370	101026 				BHI	9$		;  NO, WE'RE THROUGH
    157	000372	020302 				CMP	R3,R2		;YES, LESS THAN RADIX?
    158	000374	103401 				BLO	2$		;  YES
    159	000376	005200 				INC	R0		;NO, BUMP "N" ERROR COUNT
    160	000400				2$:
    161						.IF NDF	PDPV45
    162	000400	010204 				MOV	R2,R4		;COPY OF CURRENT RADIX
    163	000402	005046 				CLR	-(SP)		;TEMP AC
    164	000404	006204 			3$:	ASR	R4		;SHIFT RADIX
SYMBL	MACRO M1108  05-DEC-77 23:39  PAGE 4-3


    165	000406	103001 				BCC	4$		;BRANCH IF NO ACCUMULATION
    166	000410	060116 				ADD	R1,(SP)		;ADD IN
    167	000412	005704 			4$:	TST	R4		;ANY MORE BITS TO PROCESS?
    168	000414	001405 				BEQ	5$		;  NO
    169	000416	006301 				ASL	R1		;YES, SHIFT PATTERN
    170	000420	103371 				BCC	3$		;BRANCH IF NO OVERFLOW
    171	000422	052700 	100000 			BIS	#100000,R0	;OH, OH.  FLAG IT
    172	000426	000766 				BR	3$
    173	000430	012601 			5$:	MOV	(SP)+,R1	;SET NEW NUMBER
    174						.IFF
    175						MOV	R0,-(SP)	;++004 SAVE R0 (FLAGS)
    176						MOV	R1,R0		;++004 COPY INTERMEDIATE RESULT INTO R0
    177						MUL	R2,R0		;++004 MULTIPLY IT BY THE RADIX
    178						BCC	55$		;++004 SKIP IF NO OVERFLOW
    179						TST	R0		;++004 ELSE, CHECK THE HIGH-ORDER RESULT
    180						BEQ	55$		;++004 SKIP IF IT'S NULL
    181						BIS	#100000,(SP)	;++004 ELSE, INDICATE TRUNCATION ERROR
    182					55$:	MOV	(SP)+,R0	;++004 RESTORE R0 (FLAGS)
    183						.ENDC
    184	000432	060301 				ADD	R3,R1		;ADD IN CURRENT NUMBER
    185	000434					GETCHR			;GET ANOTHER CHARACTER
    186	000440	062700 	000400 			ADD	#000400,R0	;TALLY CHARACTER COUNT
    187	000444	000744 				BR	1$
    188	000446	010167 	000000G		9$:	MOV	R1,VALUE	;RETURN  RESULT IN "VALUE"
    189	000452	000207 				RETURN			;RETURN, TESTING R0
    190
    191					;+
    192					; **-GSARG-GET SYMBOLIC ARGUMENT
    193					; **-GSARGF-ALTERNATE ENTRY
    194					; **-TSTARG-TEST FOR SYMBOLIC ARGUMENT
    195					;-
    196
    197	000454				GSARG::	.ENABL	LSB		;
    198	000454					TSTARG			;TEST GENERAL
    199	000460	001412 				BEQ	2$		;  EXIT NULL
    200	000462				GSARGF::GETSYM			;GET A SYMBOL
    201	000466	001403 				BEQ	1$		;  ERROR IF NOT SYMBOL
    202	000470	020067 	000000G			CMP	R0,R50DOT	;  "."?
    203	000474	001004 				BNE	2$		;  NO, OK
    204	000476				1$:	ERROR	A
    205	000504	005000 				CLR	R0		;TREAT ALL ERRORS AS NULL
    206	000506	000207 			2$:	RETURN
    207						.DSABL	LSB
    208	000510	116500 	000000'		TSTARG::MOVB	CTTBL(R5),R0	;GET CHARACTERISTICS
    209	000514	003440 				BLE	12$		;THROUGH IF EOL OR SEMI-COLON
    210	000516	005767 	000000'			TST	ARGCNT		;FIRST ARGUMENT?
    211	000522	001433 				BEQ	11$		;  YES, GOOD AS IS
    212	000524	032700 	000001 			BIT	#CT.COM,R0	;NO, COMMA?
    213	000530	001026 				BNE	10$		;  YES, BYPASS IT
    214	000532	005767 	000004'			TST	EXPFLG		;NO, WAS ONE REQUIRED?
    215	000536	001403 				BEQ	2$		;  NO
    216	000540					ERROR	A		;YES, FLAG ERROR
    217	000546	026767 	000000G	000002'	2$:	CMP	CHRPNT,ARGPNT	;DID ANYBODY USE ANYTHING?
    218	000554	001016 				BNE	11$		;  YES, OK
    219	000556				3$:	GETCHR			;NO, BYPASS TO AVOID LOOPS
    220	000562	132765 	000076 	000000'		BITB	#CT.PC+CT.SP+CT.TAB-CT.COM-CT.SMC,CTTBL(R5)
    221	000570	001372 				BNE	3$		;  YES, BYPASS
SYMBL	MACRO M1108  05-DEC-77 23:39  PAGE 4-4


    222	000572					SETNB			;NO, SET TO NON-BLANK
    223	000576					ERROR	A		;FLAG ERROR
    224	000604	000741 				BR	TSTARG		;TRY AGAIN
    225	000606				10$:	GETNB			;BYPASS COMMA
    226	000612	005267 	000000'		11$:	INC	ARGCNT		;INCREMENT ARGUMENT COUNT
    227	000616	005067 	000004'		12$:	CLR	EXPFLG
    228	000622	016767 	000000G	000002'		MOV	CHRPNT,ARGPNT	;SAVE POINTER
    229	000630	042700 	177600 			BIC	#177600,R0	;SET FLAGS
    230	000634	000207 				RETURN
    231
    232					;+
    233					; **-SETSYM-SET SYMBOL FOR RESCAN
    234					; **-GETNB-GET NONBLANK CHARACTER
    235					; **-SETNB-SET NONBLANK CHARACTER
    236					; **-GETCHR-GET CHARACTER
    237					; **-SETCHR-SET CHARACTER
    238					; **-CHSCAN-SCAN BY CHARACTER
    239					;-
    240
    241	000636	016767 	000000G	000000G	SETSYM::MOV	SYMBEG,CHRPNT	;RESET POINTER
    242	000644	000413 				BR	SETCHR		;SET CHARACTER AND FLAGS
    243	000646	005267 	000000G		GETNB::	INC	CHRPNT		;BUMP POINTER
    244	000652				SETNB::	SETCHR			;SET REGISTERS AND FLAGS
    245	000656	132765 	000006 	000000'		BITB	#CT.SP!CT.TAB,CTTBL(R5)	;BLANK?
    246	000664	001370 				BNE	GETNB		;  YES, BYPASS
    247	000666	000402 				BR	SETCHR		;EXIT, SETTING FLAGS
    248	000670	005267 	000000G		GETCHR::INC	CHRPNT		;BUMP POINTER
    249	000674	117705 	000000G		SETCHR::MOVB	@CHRPNT,R5	;SET REGISTERS AND FLAGS
    250						.IF NDF	XEDLC
    251						BPL	1$		;OK IF NO SIGN BIT
    252						SUB	#177600+40,R5	;TRY FOR LOWER CASE MAP
    253						.ENDC
    254	000700	100773 				BMI	GETCHR		;LOOP IF INVALID CHARACTER
    255	000702	000207 			1$:	RETURN
    256	000704	005720 			CHSCAN::TST	(R0)+		;END?
    257	000706	001410 				BEQ	2$		;  YES
    258	000710	022005 				CMP	(R0)+,R5	;THIS THE ONE?
    259	000712	001374 				BNE	CHSCAN		;IF NE NO
    260	000714	005740 				TST	-(R0)		;YES, MOVE POINTER BACK
    261	000716	016767 	000000G	000000G		MOV	CHRPNT,SYMBEG	;SAVE CURRENT POINTER
    262	000724					GETNB			;GET NEXT NON-BLANK
    263	000730	014000 			2$:	MOV	-(R0),R0	;MOVE ADDR OR ZERO INTO R0
    264	000732	000207 				RETURN
    265
    266					;
    267					; CHARACTER CLASSIFICATION DEFINITIONS
    268					;
    269
    270		000000 			CT.EOL==000			;END OF LINE
    271		000001 			CT.COM==001			;COMMA
    272		000002 			CT.TAB==002			;TAB
    273		000004 			CT.SP==004			;SPACE
    274		000010 			CT.PCX==010			;PRINTING CHARACTER
    275		000020 			CT.NUM==020			;NUMBER
    276		000040 			CT.ALP==040			;ALPHABETIC, DOT, OR DOLLAR
    277		000100 			CT.LC==100			;LOWER CASE ALPHABETIC
    278		000200 			CT.SMC==200			;SEMICOLON
SYMBL	MACRO M1108  05-DEC-77 23:39  PAGE 4-5


    279		000271 			CT.PC==CT.COM!CT.SMC!CT.PCX!CT.NUM!CT.ALP;PRINTING CHARACTERS
    280		000006 			CT.SPT==CT.SP!CT.TAB		;SPACE OR TAB
    281
    282						.MACRO	GENCTT	ARG	;GENERATE CHARACTER TYPE TABLE
    283						.IRP	A,	<ARG>
    284						.BYTE	CT.'A
    285						.ENDM
    286						.ENDM
    287
    288	000734					PURE	DPURE,D		;++017
    289	000000				CTTBL::				;REF LABEL
    290	000000					GENCTT	<EOL, EOL, EOL, EOL, EOL, EOL, EOL, EOL>
    291	000010					GENCTT	<EOL, TAB, EOL, EOL, EOL, EOL, EOL, EOL>
    292	000020					GENCTT	<EOL, EOL, EOL, EOL, EOL, EOL, EOL, EOL>
    293	000030					GENCTT	<EOL, EOL, EOL, EOL, EOL, EOL, EOL, EOL>
    294
    295	000040					GENCTT	<SP , PCX, PCX, PCX, ALP, PCX, PCX, PCX>
    296	000050					GENCTT	<PCX, PCX, PCX, PCX, COM, PCX, ALP, PCX>
    297	000060					GENCTT	<NUM, NUM, NUM, NUM, NUM, NUM, NUM, NUM>
    298	000070					GENCTT	<NUM, NUM, PCX, SMC, PCX, PCX, PCX, PCX>
    299
    300	000100					GENCTT	<PCX, ALP, ALP, ALP, ALP, ALP, ALP, ALP>
    301	000110					GENCTT	<ALP, ALP, ALP, ALP, ALP, ALP, ALP, ALP>
    302	000120					GENCTT	<ALP, ALP, ALP, ALP, ALP, ALP, ALP, ALP>
    303	000130					GENCTT	<ALP, ALP, ALP, PCX, PCX, PCX, PCX, PCX>
    304
    305	000140					GENCTT	<EOL, LC , LC , LC , LC , LC , LC , LC >
    306	000150					GENCTT	<LC , LC , LC , LC , LC , LC , LC , LC >
    307	000160					GENCTT	<LC , LC , LC , LC , LC , LC , LC , LC >
    308	000170					GENCTT	<LC , LC , LC , EOL, EOL, EOL, EOL, EOL>
    309
    310	000000					.PSECT	IMPLIN,D,GBL,RW	;++017
    311	000000				ARGCNT::.BLKW	1		;ARGUMENT COUNT
    312	000002				ARGPNT::.BLKW	1		;START OF LAST ARGUMENT
    313	000004				EXPFLG::.BLKW	1		;SET WHEN COMMA REQUIRED
    314
    315		000001 				.END
SYMBL	MACRO M1108  05-DEC-77 23:39  PAGE 4-6
SYMBOL TABLE

AM.DEC= 000040   	CH.QM = 000077   	CT.EOL= 000000 G 	GSDT05= 002400   	RLDT17= 000017
AM.DEF= 000010   	CH.QTM= 000042   	CT.LC = 000100 G 	GSDT06= 003000   	RSX11M= 000000
AM.IMM= 000027   	CH.RAB= 000076   	CT.NUM= 000020 G 	ILVL  = 000004   	R$$11M= 000000
AM.INC= 000020   	CH.RP = 000051   	CT.PC = 000271 G 	LBLFLG= 000002   	R50DOT= ****** GX
AM.NDX= 000060   	CH.SMC= 000073   	CT.PCX= 000010 G 	LET.A = 000101   	SAVREG= ****** GX
AM.PC = 000007   	CH.SUB= 000055   	CT.SMC= 000200 G 	LET.B = 000102   	SETCHR  000674RG    002
AM.REL= 000067   	CH.UAR= 000136   	CT.SP = 000004 G 	LET.C = 000103   	SETNB   000652RG    002
ARGCNT  000000RG    004	CH.XCL= 000047   	CT.SPT= 000006 G 	LET.D = 000104   	SETR50  000260RG    002
ARGPNT  000002RG    004	CPXADD= 000001   	CT.TAB= 000002 G 	LET.E = 000105   	SETSYM  000636RG    002
ASTFLG= 000114   	CPXAND= 000005   	CVTNUM  000340RG    002	LET.F = 000106   	SPACE = 000040
BLKT01= 000001   	CPXCOM= 000011   	DEFFLG= 000010   	LET.G = 000107   	SYMBEG= ****** GX
BLKT02= 000002   	CPXCON= 000020   	DFGFLG= 000020   	LET.O = 000117   	SYMBOL= ****** GX
BLKT03= 000003   	CPXDIV= 000004   	DIG.0 = 000060   	LET.Z = 000132   	TAB   = 000011
BLKT04= 000004   	CPXFLG= 000200   	DIG.9 = 000071   	LF    = 000012   	TSTARG  000510RG    002
BLKT05= 000005   	CPXGLB= 000016   	DIV     000036RG    002	LST.KB= 000001   	TSTR50  000262RG    002
BLKT06= 000006   	CPXIOR= 000006   	DIVXIT  000074R     002	LST.LP= 000002   	T.FLAG= 000000
CHRPNT= ****** GX	CPXMUL= 000003   	DNC     000000RG    002	MDFFLG= 000004   	T.MASK= 000001
CHSCAN  000704RG    002	CPXNEG= 000010   	DNCF    000004RG    002	MUL     000100RG    002	T.VAL = 000050
CH.ADD= 000053   	CPXOPC= 000010   	ERRBTS= ****** GX	MULR50  000234RG    002	VALUE = ****** GX
CH.AND= 000046   	CPXREL= 000017   	ERR.A = ****** GX	PSTFLG= 000050   	VT    = 000013
CH.BSL= 000134   	CPXSDS= 000013   	EXPFLG  000004RG    004	REGFLG= 000001   	XBSRCH= 000000
CH.COL= 000072   	CPXSTO= 000012   	FF    = 000014   	RELFLG= 000040   	XCREF = 000000
CH.COM= 000054   	CPXSUB= 000002   	GETCHR  000670RG    002	RLDT00= 000000   	XEDABS= 000000
CH.DIV= 000057   	CR    = 000015   	GETNB   000646RG    002	RLDT01= 000001   	XEDCDR= 000000
CH.DOL= 000044   	CSTACC= 000020   	GETR50  000254RG    002	RLDT02= 000002   	XEDFPT= 000000
CH.DOT= 000056   	CSTALO= 000004   	GETSYM  000126RG    002	RLDT03= 000003   	XEDLC = 000000
CH.EQU= 000075   	CSTFLG= 000050   	GLBFLG= 000100   	RLDT04= 000004   	XEDPIC= 000000
CH.HSH= 000043   	CSTGBL= 000100   	GSARG   000454RG    002	RLDT05= 000005   	XEDPNC= 000000
CH.IND= 000100   	CSTMEM= 000001   	GSARGF  000462RG    002	RLDT06= 000006   	XFCSQN= 000000
CH.IOR= 000041   	CSTREL= 000040   	GSDT00= 000000   	RLDT07= 000007   	XFLTG = 000000
CH.LAB= 000074   	CSTTYP= 000200   	GSDT01= 000400   	RLDT10= 000010   	XOPEXP= 000000
CH.LP = 000050   	CTTBL   000000RG    003	GSDT02= 001000   	RLDT11= 000011   	XSUBD = 000000
CH.MUL= 000052   	CT.ALP= 000040 G 	GSDT03= 001400   	RLDT15= 000015   	XZERR = 000000
CH.PCT= 000045   	CT.COM= 000001 G 	GSDT04= 002000   	RLDT16= 000016   	X45   = 000000

. ABS.	000000	   000
      	000000	   001
PUREI 	000734	   002
DPURE 	000200	   003
IMPLIN	000006	   004
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  3049 WORDS  ( 12 PAGES)
DYNAMIC MEMORY:  4160 WORDS  ( 16 PAGES)
ELAPSED TIME:  00:00:36
[45,10]SYMBL,[45,20]SYMBL/-SP=[45,30]RSXPAR,GENMC,FLGDF,SYMBL
WORDB	MACRO M1108  05-DEC-77 23:39  PAGE 3


      1						.TITLE	WORDB
      2						.IDENT	/X03.01/                                                        ;**NEW**
      3					                                                                                ;**-1
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION X03.01                                                                ;**NEW**
     23					;                                                                               ;**-1
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 10-FEB-73
     29					;	C.A. D'ELIA	15-NOV-73	008
     30					;	C.A. D'ELIA	25-JAN-74	011
     31					;	H.A. NICHOLS	18-JUN-74	017
     32					;	C.A. D'ELIA	20-OCT-75	021	(VIRT MEMORY)                   ;**NEW**
     33					;
     34					;
     35
     36	000000					PURE	PUREI,I		;++017
     37					;+
     38					; **-BYTE-GENERATE BYTE/WORD DATA
     39					;-
     40
     41	000000	005203 			BYTE::	INC	R3		;++011 R3=1 IMPLIES ".BYTE"
     42									;++011 R3=2 IMPLIES ".WORD"
     43	000002	011246 				MOV	(R2),-(SP)	;STACK CURRENT PC
     44	000004				1$:	TSTARG			;TEST FOR ARGUMENT
     45	000010	001410 				BEQ	2$		;  END
     46	000012					EXPR			;PROCESS GENERAL EXPRESSION
     47	000016					SETIMM			;CONVERT TO OBJECT FORMAT
     48	000022					STCODE			;PUT ON CODE ROLL
     49	000026	060312 				ADD	R3,(R2)		;UPDATE PC
     50	000030	000765 				BR	1$		;TEST FOR MORE
     51	000032	012612 			2$:	MOV	(SP)+,(R2)	;RESTORE INITIAL PC
     52	000034	005767 	000000C			TST	$LSCNT+CODLST	;++021 WAS THERE GENERATED CODE?                ;**NEW**
     53	000040	001010 				BNE	10$		;++021 IF NE YES                                ;**NEW**
     54	000042	005067 	000000G			CLR	MODE		;NO, STORE A ZERO                               ;**-2
     55	000046	005067 	000000G			CLR	VALUE
     56	000052					SETIMM
     57	000056					STCODE
WORDB	MACRO M1108  05-DEC-77 23:39  PAGE 3-1


     58	000062	000207 			10$:	RETURN			;++021                                          ;**NEW**
     59					                                                                                ;**-1
     60
     61		000001 				.END
WORDB	MACRO M1108  05-DEC-77 23:39  PAGE 3-2
SYMBOL TABLE

BYTE    000000RG    002	R$$11M= 000000   	XBSRCH= 000000   	XEDLC = 000000   	XOPEXP= 000000
CODLST= ****** GX	SETIMM= ****** GX	XCREF = 000000   	XEDPIC= 000000   	XSUBD = 000000
EXPR  = ****** GX	STCODE= ****** GX	XEDABS= 000000   	XEDPNC= 000000   	XZERR = 000000
ILVL  = 000004   	TSTARG= ****** GX	XEDCDR= 000000   	XFCSQN= 000000   	X45   = 000000
MODE  = ****** GX	VALUE = ****** GX	XEDFPT= 000000   	XFLTG = 000000   	$LSCNT= ****** GX
RSX11M= 000000

. ABS.	000000	   000
      	000000	   001
PUREI 	000064	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  1983 WORDS  ( 8 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:13
[45,10]WORDB,[45,20]WORDB/-SP=[45,30]RSXPAR,GENMC,WORDB
WRITE	MACRO M1108  05-DEC-77 23:39  PAGE 4


      1						.TITLE	WRITE
      2						.IDENT	/02/
      3
      4					;
      5					; COPYRIGHT 1972, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      6					; COPYRIGHT 1973, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      7					; COPYRIGHT 1974, DIGITAL EQUIPMENT CORP., MAYNARD, MASS 01754
      8					;
      9					;	DEC ASSUMES NO RESPONSIBILITY FOR THE
     10					;	USE OR RELIABILITY OF ITS SOFTWARE ON
     11					;	EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     12					;
     13					; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE
     14					; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION
     15					; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT
     16					; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; VERSION 02
     23					;
     24					; B. BOWERING
     25					;
     26					;	MODIFIED BY:
     27					;
     28					;	D.N. CUTLER 6-FEB-73
     29					;	C.A. D'ELIA	11-NOV-73	005
     30					;	C.A. D'ELIA	22-MAR-74	014
     31					;	H.A. NICHOLS	18-JUN-74	017
     32					;
     33					;
     34					;
     35
     36						.MCALL	CALL,RETURN	;++014
     37
     38
     39						.IF NDF	RSX11M		;++014
     40
     41
     42						.MCALL	PUT$		;++014
     43
     44						.IFF			;++014
     45
     46						.MCALL	PUT$S		;++014
     47
     48
     49						.ENDC			;++014
     50
     51
     52						.IF DF	YQCMO		;++005 'YQCMO' MEANS QIO DIRECT TO 'CO'
     53						.MCALL	DIR$,QIO$,WTSE$S ;++005
     54						.ENDC			;++014
     55
     56	000000					PURE	PUREI,I		;++017
     57
WRITE	MACRO M1108  05-DEC-77 23:39  PAGE 4-1


     58	000000				$WRITE::			;WRITE LINE
     59	000000					CALL	SAVREG		;++014 SAVE REGISTERS
     60	000004	016001 	000000G			MOV	BUFTBL(R0),R1	;++005 PUT ADDR OF BUFFER IN R1
     61	000010	017002 	000000G			MOV	@CNTTBL(R0),R2	;++005 PUT BYTE COUNT IN R2
     62						.IF DF	YQCMO		;++005
     63	000014	020027 	000000 			CMP	R0,#CMOCHN	;++005 IS OUTPUT TO 'CO'
     64	000020	001417 				BEQ	$QCMO		;++005 YES, BRANCH TO Q I/O DIRECTLY
     65						.ENDC			;++014 (YQCMO)
     66	000022	010003 				MOV	R0,R3		;++005 ELSE, COPY CHANNEL NUMBER
     67
     68
     69
     70						.IF NDF	RSX11M		;++014
     71
     72
     73						PUT$	FDBTBL(R3),R1,R2 ;++005 OUTPUT LINE
     74
     75						.IFF			;++014
     76
     77	000024					PUT$S	FDBTBL(R3),R1,R2 ;++014 OUTPUT LINE
     78
     79
     80						.ENDC			;++014 (RSX11M)
     81
     82
     83	000044	103401 				BCS	1$
     84	000046					RETURN
     85	000050	012703 	000000G		1$:	MOV	#OUTM1,R3	;OUTPUT I/O ERROR
     86	000054	000167 	000000G			JMP	RESTRT		;++014 SEND ERROR MESSAGE AND RE-START
     87
     88
     89
     90
     91
     92						.IF DF	YQCMO		;++014
     93
     94
     95					;++005
     96					;
     97					; **-$QCMO-SEND A LINE TO DEVICE 'CO' DIRECTLY VIA QUEUE I/O
     98					; INPUTS:
     99					;	R1=ADDRESS OF MESSAGE
    100					;	R2=BYTE COUNT OF MESSAGE
    101					;
    102					;--005
    103
    104	000060	010167 	000044 		$QCMO::	MOV	R1,CMODPB+Q.IOPL ;++005 PUT BUFFER ADDR IN DPB
    105	000064	010267 	000042 			MOV	R2,CMODPB+Q.IOPL+2 ;++005 PUT BYTE COUNT IN DPB
    106	000070					DIR$	#CMODPB		;++005 INVOKE QIO DIRECTIVE
    107	000076	103405 				BCS	1$		;++005 SKIP IF IT FAILED
    108	000100					WTSE$S	#1		;++005 WAIT FOR I/O DONE
    109	000112				1$:	RETURN			;++005
    110
    111	000114				CMODPB:	QIO$	IO.WVB,2,1,,,,<,,40,,,> ;++005 DPB TO SEND TO LUN 2 (CO)
    112
    113
    114						.ENDC			;++005
WRITE	MACRO M1108  05-DEC-77 23:39  PAGE 4-2


    115
    116		000001 				.END
WRITE	MACRO M1108  05-DEC-77 23:39  PAGE 4-3
SYMBOL TABLE

BINCHN= 000006   	LSTCHN= 000004   	Q.IOSB= 000010   	TMPCNT= 000014   	XFLTG = 000000
BPMB  = 000020   	LSTLEN= 000204   	RELCHN= 000010   	TTLLEN= 000040   	XOPEXP= 000000
BUFTBL= ****** GX	MAXCHN= 000014   	RESTRT= ****** GX	XBSRCH= 000000   	XSUBD = 000000
CMOCHN= 000000   	OBJLEN= 000052   	RLDLEN= 000052   	XCREF = 000000   	XZERR = 000000
CMODPB  000114R     002	OUTM1 = ****** GX	RSX11M= 000000   	XEDABS= 000000   	X45   = 000000
CNTTBL= ****** GX	PAR$$$= 000063   	R$$11M= 000000   	XEDCDR= 000000   	YQCMO = 000000
CPL   = 000120   	Q.IOAE= 000012   	SAVREG= ****** GX	XEDCRF= 000000   	$QCMO   000060RG    002
FDBTBL= ****** GX	Q.IOEF= 000006   	SMLCHN= 000012   	XEDFPT= 000000   	$WRITE  000000RG    002
F.NRBD= ****** GX	Q.IOFN= 000002   	SMLLEN= 000120   	XEDLC = 000000   	$$    = 000067
ILVL  = 000004   	Q.IOLU= 000004   	SRCCHN= 000002   	XEDPIC= 000000   	$$$ARG= 000014
IO.WVB= ****** GX	Q.IOPL= 000014   	SRCLEN= 000204   	XEDPNC= 000000   	$$$OST= 000014
LINLEN= 000204   	Q.IOPR= 000007   	STLLEN= 000100   	XFCSQN= 000000   	.PUTSQ= ****** G
LPP   = 000074

. ABS.	000000	   000
      	000000	   001
PUREI 	000144	   002
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  2888 WORDS  ( 12 PAGES)
DYNAMIC MEMORY:  4160 WORDS  ( 16 PAGES)
ELAPSED TIME:  00:00:20
[45,10]WRITE,[45,20]WRITE/-SP=[45,30]RSXPAR,MPARAM,MCIOCH,WRITE
INIDM	MACRO M1108  05-DEC-77 23:40  PAGE 2


      1						.TITLE	INIDM
      2						.IDENT	/00/
      3
      4					;
      5					;
      6					; COPYRIGHT (C) 1976
      7					; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
      8					;
      9					; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
     10					; SINGLE COMPUTER SYSTEM AND MAY  BE  COPIED   ONLY  WITH  THE
     11					; INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE,  OR
     12					; ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED  OR  OTHERWISE
     13					; MADE AVAILABLE TO ANY OTHER PERSON   EXCEPT FOR  USE ON SUCH
     14					; SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE  TERMS.  TITLE
     15					; TO AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL  TIMES  REMAIN
     16					; IN DEC.
     17					;
     18					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     19					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     20					; EQUIPMENT CORPORATION.
     21					;
     22					; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF
     23					; ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     24					;
     25					; VERSION 00
     26					;
     27					; C. MONIA 30-JUL-76
     28					;
     29					; INITIALIZE DYNAMIC MEMORY
     30					;
     31					; MACRO LIBRARY CALLS
     32					;
     33
     34						.MCALL	DIR$,GPRT$,GTSK$
     35
     36					;
     37					; LOCAL DATA
     38					;
     39					; TASK IMAGE MEMORY LIMITS
     40					;
     41
     42	000000	000000 	000000 		LIMIT:	.LIMIT			;
     43
     44					;
     45					; 'GET PARTITION PARAMTERS' DPB
     46					;
     47
     48	000004				PDPB:	GPRT$	,TBUF		;
     49
     50					;
     51					; 'GET TASK PARAMTERS' DPB
     52					;
     53
     54	000014				TDPB:	GTSK$	TBUF		;
     55
     56					;
     57					; PARAMETER BUFFER
INIDM	MACRO M1108  05-DEC-77 23:40  PAGE 2-1


     58					;
     59
     60	000020				TBUF:	.BLKW	16.		;
     61
     62					;+
     63					; **-$INIDM-INITIALIZE DYNAMICALLY ALLOCATED STORAGE
     64					;
     65					; THIS SUBROUTINE IS CALLED TO ESTABLISH THE INITIAL STATE
     66					; OF THE CORE POOL REFERENCED BY THE SUBROUTINES WHICH ALLO-
     67					; CATE AND DEALLOCATE CORE BLOCKS. THE POOL CONSISTS OF ALL
     68					; MEMORY EXTENDING FROM THE END OF THE TASK IMAGE TO THE LAST
     69					; PHYSICAL LOCATION OWNED BY THE TASK.
     70					;
     71					; INPUTS:
     72					;
     73					;	R0=ADDRESS OF FREE CORE POOL LISTHEAD
     74					;
     75					; OUTPUTS:
     76					;
     77					;	R0=FIRST ADDRESS IN TASK
     78					;	R1=ADDRESS FOLLOWING TASK IMAGE
     79					;	R2=SIZE OF CORE POOL
     80					;
     81					;	ANY PREVIOUS TASK MEMORY EXTENSION IS DE-ALLOCATED. THE
     82					;	REMAINING FREE CORE AREA IS ALLOCATED TO THE MEMORY POOL.
     83					;-
     84
     85	000060				$INIDM::			;
     86	000060	016702 	177716 			MOV	LIMIT+2,R2	; GET ADDRESS OF CORE POOL
     87	000064	062702 	000003 			ADD	#3,R2		; ROUND UP TO NEXT 4-BYTE BOUNDARY
     88	000070	042702 	000003 			BIC	#3,R2		; ...
     89	000074	010210 				MOV	R2,(R0)		; SET ADDRESS OF POOL
     90	000076	005001 				CLR	R1		; RESET TASK SIZE
     91	000100					CALL	$EXTSK		; ...
     92	000104					DIR$	#PDPB		; GET PARTITION PARAMETERS
     93	000112	016700 	000000G			MOV	$DSW,R0		; SAVE STARTING VIRTUAL ADDRESS OF PARTITION
     94	000116					DIR$	#TDPB		; GET TASK PARAMETERS
     95	000124	010246 				MOV	R2,-(SP)	; SAVE ADDRESS OF CORE POOL
     96	000126	005022 				CLR	(R2)+		; CLEAR FIRST WORD OF DYNAMIC STORE
     97	000130	016712 	177716 			MOV	TBUF+32,(R2)	; SET PHYSICAL SIZE OF TASK
     98	000134	160016 				SUB	R0,(SP)		; COMPUTE APPARENT TASK SIZE
     99	000136	010001 				MOV	R0,R1		; COPY BASE ADDRESS OF TASK
    100	000140	061201 				ADD	(R2),R1		; COMPUTE NEXT ADDRESS AFTER TASK
    101	000142	162612 				SUB	(SP)+,(R2)	; SET SIZE OF FREE POOL
    102	000144	011202 				MOV	(R2),R2		; GET SIZE OF POOL
    103	000146					RETURN			;
    104
    105		000001 				.END
INIDM	MACRO M1108  05-DEC-77 23:40  PAGE 2-2
SYMBOL TABLE

CR    = 000015   	G.TSBA= 000002   	G.TSPR= 000014   	LF    = 000012   	VT    = 000013
FF    = 000014   	G.TSFW= 000024   	G.TSRN= 000010   	LIMIT   000000R  	$DSW  = ****** GX
G.PRBA= 000006   	G.TSGC= 000017   	G.TSTN= 000000   	PDPB    000004R  	$EXTSK= ****** GX
G.PRFW= 000004   	G.TSMT= 000022   	G.TSTS= 000032   	R$$11M= 000000   	$INIDM  000060RG
G.PRPB= 000000   	G.TSNL= 000020   	G.TSVA= 000026   	SPA   = 000040   	$$    = 000001
G.PRPN= 000002   	G.TSPC= 000016   	G.TSVL= 000030   	TBUF    000020R  	$$$OST= 000034
G.PRPS= 000002   	G.TSPN= 000004   	HT    = 000011   	TDPB    000014R  	$$$T1 = 000000

. ABS.	000000	   000
      	000150	   001
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  1425 WORDS  ( 6 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:11
[45,10]INIDM,[45,20]INIDM/-SP=[45,30]MACFLM,INIDM
EXTSK	MACRO M1108  05-DEC-77 23:40  PAGE 2


      1						.TITLE	EXTSK
      2						.IDENT	/01/
      3
      4					;
      5					; COPYRIGHT (C) 1976
      6					; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
      7					;
      8					; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
      9					; SINGLE COMPUTER SYSTEM AND MAY  BE  COPIED   ONLY  WITH  THE
     10					; INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE,  OR
     11					; ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED  OR  OTHERWISE
     12					; MADE AVAILABLE TO ANY OTHER PERSON   EXCEPT FOR  USE ON SUCH
     13					; SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE  TERMS.  TITLE
     14					; TO AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL  TIMES  REMAIN
     15					; IN DEC.
     16					;
     17					; THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT
     18					; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
     19					; EQUIPMENT CORPORATION.
     20					;
     21					; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF
     22					; ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
     23					;
     24					; VERSION 01
     25					;
     26					; C. MONIA 30-JUL-76
     27					;
     28					; EXTEND THE TASK REGION
     29					;
     30					; MACRO LIBRARY CALLS
     31					;
     32
     33						.MCALL	DIR$
     34
     35					;+
     36					; **-$EXTSK-EXTEND THE TASK REGION
     37					;
     38					; INPUTS:
     39					;
     40					;	R1=SIZE OF EXTENSION IN BYTES
     41					;
     42					; OUTPUTS:
     43					;
     44					;	C/CLEAR - TASK REGION EXTENDED BY SPECIFIED AMOUNT (ROUNDED TO
     45					;		 NEXT 32 WORD BOUDARY)
     46					;
     47					;		R1=EXTENSION SIZE (ROUNDED TO NEXT 32W BOUNDARY)
     48					;
     49					;	C/SET - TASK EXTENSION FAILED
     50					;
     51					; ALL OTHER REGISTERS ARE PRESERVED
     52					;
     53					;-
     54
     55	000000				$EXTSK::			;
     56	000000	062701 	000077 			ADD	#77,R1		; ROUND INCREMENT TO 32W BOUNDARY
     57	000004	042701 	000077 			BIC	#77,R1		; REMOVE EXCESS BITS
EXTSK	MACRO M1108  05-DEC-77 23:40  PAGE 2-1


     58	000010	103413 				BCS	10$		; IF C/S ERROR
     59	000012	005046 				CLR	-(SP)		; CLEAR THIRD WORD OF DPB
     60	000014	010146 				MOV	R1,-(SP)	; PUSH EXTEND INCREMENT
     61
     62		000006 				.REPT	6
     63
     64						ASR	(SP)		; CONVERT TO 32-W BLOCKS
     65
     66						.ENDR
     67
     68	000032	012746 	001531 			MOV	#<3.*400!89.>,-(SP) ; PUSH DIC,DPB SIZE
     69	000036					DIR$			; ISSUE DIRECTIVE
     70	000040				10$:				;
     71	000040					RETURN			;
     72
     73		000001 				.END
EXTSK	MACRO M1108  05-DEC-77 23:40  PAGE 2-2
SYMBOL TABLE

CR    = 000015   	HT    = 000011   	R$$11M= 000000   	VT    = 000013   	$EXTSK  000000RG
FF    = 000014   	LF    = 000012   	SPA   = 000040

. ABS.	000000	   000
      	000042	   001
ERRORS DETECTED:  0

VIRTUAL MEMORY USED:  735 WORDS  ( 3 PAGES)
DYNAMIC MEMORY:  3104 WORDS  ( 11 PAGES)
ELAPSED TIME:  00:00:06
[45,10]EXTSK,[45,20]EXTSK/-SP=[45,30]MACFLM,EXTSK