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