mirror of
https://github.com/open-simh/simtools.git
synced 2026-04-26 20:16:36 +00:00
while also adding some consistency. All listings now list . (dot) as defined so they need updating.
1620 lines
94 KiB
Plaintext
1620 lines
94 KiB
Plaintext
1 ;;;; Wrapper for 2.11BSD/m11/getl.m11
|
|
2 .list
|
|
3 .list
|
|
4 .list
|
|
5 000001 debug = 1
|
|
6 .include "2.11BSD/m11/at.sml"
|
|
1 .title at.sml - assembler/translator system macros
|
|
2 ; @(#)at.sml 1.3 11/3/82
|
|
3
|
|
4 .ident /10may4/
|
|
5
|
|
6 .macro always ;all files of macro
|
|
7
|
|
8 .macro .data
|
|
9 entsec .data
|
|
10 .endm .data
|
|
11
|
|
12 .macro .text
|
|
13 entsec .text
|
|
14 .endm
|
|
15
|
|
16 .macro .bss
|
|
17 entsec .bss
|
|
18 .endm
|
|
19
|
|
20 mk.symbol=1 ;one to make symbols, 0 otherwise
|
|
21 x40= 0
|
|
22 pdpv45= 0 ; host machine has 'mul', 'div', sob' instrucs.
|
|
23 ; if not you will have to write macros for them
|
|
24 $timdf= 7 ; California Time Zone
|
|
25 ; should really use ftime(2) for this and for
|
|
26 ; DST.
|
|
27 ;xfltg= 0 ;define to assmbl out floating hardware
|
|
28 rsx11d = 0 ; rsx11d features
|
|
29 debug = 0 ; <<< REEDS if non zero includes debug junk
|
|
30
|
|
31 ft.id= 1 ;have set i & d. set =0 if not
|
|
32
|
|
33 ft.unx = 1 ; this macro-11 is for UNIX. =0 if not.
|
|
34
|
|
35 .nlist bex
|
|
36
|
|
37 tab= 11
|
|
38 lf= 12
|
|
39 vt= 13
|
|
40 ff= 14
|
|
41 cr= 15
|
|
42 space= 40
|
|
43
|
|
44 bpmb = 20 ;bytes per macro block
|
|
45
|
|
46
|
|
47
|
|
48
|
|
49
|
|
50 .psect .text con, shr, gbl,ins
|
|
51 .psect .data con, dat, prv, gbl
|
|
52 .psect .bss con, bss, gbl
|
|
53
|
|
54 .psect dpure con, dat, prv, gbl
|
|
55 .psect mixed con, prv, gbl
|
|
56 .psect errmes con, dat, prv, gbl
|
|
57 .psect impure con, bss, gbl
|
|
58 .psect imppas con, bss, gbl
|
|
59 .psect implin con, bss, gbl
|
|
60 .psect swtsec con, dat, prv, gbl ; unix command line flags
|
|
61 .psect cndsec con, dat, prv, gbl ; gt, le, equ, etc. for '.if'
|
|
62 .psect crfsec con, dat, prv, gbl ; args for -cr flag
|
|
63 .psect edtsec con, dat, prv, gbl ; args for .enabl
|
|
64 .psect lctsec con, dat, prv, gbl ; args for .list
|
|
65 .psect psasec con, dat, prv, gbl
|
|
66 .psect pstsec con, dat, prv, gbl
|
|
67 .psect rolbas con, dat, prv, gbl ; core allocation: starts of tables
|
|
68 .psect rolsiz con, dat, prv, gbl ; sizes of table entries
|
|
69 .psect roltop con, dat, prv, gbl ; tops of tables
|
|
70 .psect xpcor con,bss , gbl ; this one MUST come last in core
|
|
71
|
|
72
|
|
72
|
|
73 .macro entsec name ;init a section
|
|
74 .psect name con
|
|
75 .endm entsec
|
|
76
|
|
77
|
|
78
|
|
79 .macro jeq x,?fred
|
|
80 bne fred
|
|
81 jmp x
|
|
82 fred:
|
|
83 .endm
|
|
84 .macro jne x,?fred
|
|
85 beq fred
|
|
86 jmp x
|
|
87 fred:
|
|
88 .endm
|
|
89 .macro xitsec
|
|
90 entsec .text
|
|
91 .endm xitsec
|
|
92
|
|
93
|
|
94 .macro call address
|
|
95 jsr pc,address
|
|
96 .endm
|
|
97
|
|
98 .macro return
|
|
99 rts pc
|
|
100 .endm
|
|
101
|
|
102
|
|
103 .macro always
|
|
104 .nlist bex
|
|
105 .endm always
|
|
106 .endm always
|
|
107
|
|
108
|
|
109 000001 .if ne debug
|
|
110
|
|
111 .macro ndebug n
|
|
112 .globl ndebug,..z
|
|
113 mov n,..z
|
|
114 call ndebug
|
|
115 .endm
|
|
116
|
|
117 .macro sdebug string
|
|
118 .globl sdebug,..z,..zbuf
|
|
119 x = 0
|
|
120 .irpc t,<string>
|
|
121 movb #''t,..zbuf+x
|
|
122 x = x+1
|
|
123 .endm
|
|
124 movb #0,..zbuf+x
|
|
125 mov #..zbuf,..z
|
|
126 call sdebug
|
|
127 .endm
|
|
128
|
|
129 .iff
|
|
130
|
|
131 .macro ndebug n
|
|
132 .endm
|
|
133
|
|
134 .macro sdebug string
|
|
135 .endm
|
|
136
|
|
137 .endc
|
|
138
|
|
139
|
|
140 .macro param mne, value ;define default parameters
|
|
141 .iif ndf mne, mne= value
|
|
142 .list
|
|
143 mne= mne
|
|
144 .nlist
|
|
145 .endm
|
|
145
|
|
146 .macro putkb addr ;list to kb
|
|
147 .globl putkb
|
|
148 mov addr,r0
|
|
149 call putkb
|
|
150 .endm
|
|
151
|
|
152 .macro putlp addr ;list to lp
|
|
153 .globl putlp
|
|
154 mov addr,r0
|
|
155 call putlp
|
|
156 .endm
|
|
157
|
|
158 .macro putkbl addr ;list to kb and lp
|
|
159 .globl putkbl
|
|
160 mov addr,r0
|
|
161 call putkbl
|
|
162 .endm
|
|
163
|
|
164
|
|
165 .macro xmit wrdcnt ;move small # of words
|
|
166 .globl xmit0
|
|
167 call xmit0-<wrdcnt*2>
|
|
168 .endm xmit
|
|
169
|
|
170
|
|
171 ;the macro "genswt" is used to specify a command
|
|
172 ;string switch (1st argument) and the address of
|
|
173 ;the routine to be called when encountered (2nd arg).
|
|
174 ; the switch is made upper-case.
|
|
175
|
|
176 .macro genswt mne,addr,?label
|
|
177 entsec swtsec
|
|
178 label: .irpc x,mne
|
|
179 .if ge ''x-141
|
|
180 .if le ''x-172
|
|
181 .byte ''x-40
|
|
182 .iff
|
|
183 .byte ''x
|
|
184 .endc
|
|
185 .iff
|
|
186 .byte ''x
|
|
187 .endc
|
|
188 .endm
|
|
189 .iif ne <.-label&1>, .byte 0
|
|
190 .word addr
|
|
191 xitsec
|
|
192 .endm
|
|
192
|
|
193 .macro zread chan
|
|
194 .globl zread
|
|
195 mov #chan'chn,r0
|
|
196 call zread
|
|
197 .endm zread
|
|
198
|
|
199 .macro zwrite chan
|
|
200 .globl zwrite
|
|
201 mov #chan'chn,r0
|
|
202 call zwrite
|
|
203 .endm zwrite
|
|
203
|
|
204 .macro genedt mne,subr ;gen enable/disable table
|
|
205 entsec edtsec
|
|
206 .rad50 /mne/
|
|
207 .if nb subr
|
|
208 .word subr
|
|
209 .iff
|
|
210 .word cpopj
|
|
211 .endc
|
|
212 .word ed.'mne
|
|
213 xitsec
|
|
214 .endm genedt
|
|
215
|
|
216
|
|
217 ;the macro "gencnd" is used to specify conditional
|
|
218 ;arguments. it takes two or three arguments:
|
|
219
|
|
220 ; 1- mnemonic
|
|
221 ; 2- subroutine to be called
|
|
222 ; 3- if non-blank, complement condition
|
|
223
|
|
224 .macro gencnd mne,subr,toggle ;generate conditional
|
|
225 entsec cndsec
|
|
226 .rad50 /mne/
|
|
227 .if b <toggle>
|
|
228 .word subr
|
|
229 .iff
|
|
230 .word subr+1
|
|
231 .endc
|
|
232 xitsec
|
|
233 .endm
|
|
233
|
|
234 .macro ch.mne
|
|
235
|
|
236 ch.ior= '!
|
|
237 ch.qtm= '"
|
|
238 ch.hsh= '#
|
|
239 ch.dol= '$
|
|
240 ch.pct= '%
|
|
241 ch.and= '&
|
|
242 ch.xcl= ''
|
|
243
|
|
244 ch.lp= '(
|
|
245 ch.rp= ')
|
|
246 ch.mul= '*
|
|
247 ch.add= '+
|
|
248 ch.com= ',
|
|
249 ch.sub= '-
|
|
250 ch.dot= '.
|
|
251 ch.div= '/
|
|
252
|
|
253 ch.col= ':
|
|
254 ch.smc= ';
|
|
255 ch.lab= '<
|
|
256 ch.equ= '=
|
|
257 ch.rab= '>
|
|
258 ch.qm= '?
|
|
259
|
|
260 ch.ind= '@
|
|
261 ch.bsl= '\
|
|
262 ch.uar= '^
|
|
263
|
|
264 let.a= 'a&^c40
|
|
265 let.b= 'b&^c40
|
|
266 let.c= 'c&^c40
|
|
267 let.d= 'd&^c40
|
|
268 let.e= 'e&^c40
|
|
269 let.f= 'f&^c40
|
|
270 let.g= 'g&^c40
|
|
271 let.o= 'o&^c40
|
|
272 let.p= 'p&^c40
|
|
273 let.r= 'r&^c40
|
|
274 let.z= 'z&^c40
|
|
275
|
|
276 dig.0= '0
|
|
277 dig.9= '9
|
|
278 .macro ch.mne
|
|
279 .endm ch.mne
|
|
280 .endm ch.mne
|
|
281
|
|
282 .macro error num,arg, mess ,?x
|
|
283 sdebug <num>
|
|
284 .globl err.'arg,ern'num, errbts,errref
|
|
285 .if b <mess>
|
|
286 deliberate error mistake
|
|
287 .endc
|
|
288 .if dif 0,num
|
|
289 .globl err.xx
|
|
290 tst err.xx
|
|
291 bne x
|
|
292 mov #ern'num,err.xx
|
|
293 x:
|
|
294 .endc
|
|
295 bis #err.'arg,errbts
|
|
296 .endm
|
|
297
|
|
298
|
|
299
|
|
300 .macro setnz addr ;set addr to non-zero for t/f flags
|
|
301 mov sp,addr
|
|
302 .endm
|
|
303
|
|
304
|
|
305 .macro bisbic arg ; used by .list/.nlist, .enabl/.dsabl
|
|
306 .globl bisbic
|
|
307 mov #arg,-(sp)
|
|
308 call bisbic
|
|
309 tst (sp)+
|
|
310 .endm
|
|
310
|
|
311 ;roll handler calls
|
|
312
|
|
313 .macro search rolnum ;binary search
|
|
314 mov #rolnum,r0
|
|
315 .globl search
|
|
316 call search
|
|
317 .endm
|
|
318
|
|
319 .macro scan rolnum ;linear scan
|
|
320 mov #rolnum,r0
|
|
321 .globl scan
|
|
322 call scan
|
|
323 .endm
|
|
324
|
|
325 .macro scanw rolnum ;linear scan, one word
|
|
326 mov #rolnum,r0
|
|
327 .globl scanw
|
|
328 call scanw
|
|
329 .endm
|
|
330
|
|
331 .macro next rolnum ;fetch next entry
|
|
332 mov #rolnum,r0
|
|
333 .globl next
|
|
334 call next
|
|
335 .endm
|
|
336
|
|
337 .macro append rolnum ;append to end of roll
|
|
338 mov #rolnum,r0
|
|
339 .globl append
|
|
340 call append
|
|
341 .endm
|
|
342
|
|
343 .macro zap rolnum ;clear roll
|
|
344 mov #rolnum,r0
|
|
345 .globl zap
|
|
346 call zap
|
|
347 .endm
|
|
348
|
|
349 ; call insert ;insert (must be preceded by one
|
|
350 ;of the above to set pointers)
|
|
351 ; call setrol ;save and set regs for above
|
|
351
|
|
352 ;flags used in symbol table mode
|
|
353
|
|
354 .macro st.flg
|
|
355
|
|
356 .if le ft.unx
|
|
357
|
|
358 ovrflg= 000004 ;overlay (psect only)
|
|
359 defflg= 000010 ;defined
|
|
360 relflg= 000040 ;relocatable
|
|
361 glbflg= 000100 ;global
|
|
362 dfgflg= 000200 ; default global <rsx11d>... reeds's guess
|
|
363
|
|
364
|
|
365 .endc
|
|
366
|
|
367 .if gt ft.unx
|
|
368
|
|
369 ; ****** these should not be changed!! ******
|
|
370 shrflg= 000001 ;shareable (psect only)
|
|
371 .if gt ft.id
|
|
372 insflg= shrflg*2 ;instruction space (psect only)
|
|
373 bssflg= insflg*2 ;blank section (psect only)
|
|
374 m.idf= shrflg!insflg!bssflg ;mask to turn them off
|
|
375 .iff
|
|
376 bssflg= shrflg*2
|
|
377 m.idf= shrflg!bssflg
|
|
378 .endc
|
|
379 b.idf= 1 ;shift count to make above bits word offset
|
|
380 ; ***********************************
|
|
381 defflg= 000010 ;defined
|
|
382 ovrflg= 000020 ;overlay (psect only)
|
|
383 relflg= 000040 ;relocatable
|
|
384 glbflg= 000100 ;global
|
|
385 dfgflg= 000200 ; default global <rsx11d>... reeds's guess
|
|
386
|
|
387 .endc
|
|
388
|
|
389 ;
|
|
390 ; default psect attribs.
|
|
391 ; can be changed, but make sure all customers know about
|
|
392 ; it, including all the linkers.
|
|
393 ;
|
|
394 pattrs=relflg!defflg ; For .psects and blank .csects
|
|
395 aattrs=glbflg!defflg!ovrflg ; For .asect
|
|
396 cattrs=glbflg!relflg!defflg!ovrflg ; For named .csects
|
|
397
|
|
398 regflg= 000001 ;register
|
|
399 lblflg= 000002 ;label
|
|
400 mdfflg= 000004 ;multilpy defined
|
|
401 .macro st.flg
|
|
402 .endm
|
|
403 .endm st.flg
|
|
404
|
|
405
|
|
406
|
|
407 .macro ct.mne
|
|
408 .globl cttbl
|
|
409 ct.eol = 000 ; eol
|
|
410 ct.com = 001 ; comma
|
|
411 ct.tab = 002 ; tab
|
|
412 ct.sp = 004 ; space
|
|
413 ct.pcx = 010 ; printing character
|
|
414 ct.num = 020 ; numeric
|
|
415 ct.alp = 040 ; alpha, dot, dollar
|
|
416 ct.lc = 100 ; lower case alpha
|
|
417 ct.smc = 200 ; semi-colon (sign bit)
|
|
418
|
|
419 ct.pc = ct.com!ct.smc!ct.pcx!ct.num!ct.alp
|
|
420 .macro ct.mne
|
|
421 .endm ct.mne
|
|
422 .endm ct.mne
|
|
423
|
|
424
|
|
425 .end
|
|
425
|
|
7 .include "2.11BSD/m11/getl.m11"
|
|
1 .title getl
|
|
2 .list me
|
|
3
|
|
4 .ident /03apr4/
|
|
5
|
|
6
|
|
7 .mcall (at)always,ch.mne,st.flg
|
|
8 .globl ..z, sdebug
|
|
9 .mcall (at)zap
|
|
10 000000 always
|
|
1
|
|
2 .macro .data
|
|
3 entsec .data
|
|
4 .endm .data
|
|
5
|
|
6 .macro .text
|
|
7 entsec .text
|
|
8 .endm
|
|
9
|
|
10 .macro .bss
|
|
11 entsec .bss
|
|
12 .endm
|
|
13
|
|
14 000001 mk.symbol=1 ;one to make symbols, 0 otherwise
|
|
15 000000 x40= 0
|
|
16 000000 pdpv45= 0 ; host machine has 'mul', 'div', sob' instrucs.
|
|
17 ; if not you will have to write macros for them
|
|
18 000007 $timdf= 7 ; California Time Zone
|
|
19 ; should really use ftime(2) for this and for
|
|
20 ; DST.
|
|
21 ;xfltg= 0 ;define to assmbl out floating hardware
|
|
22 000000 rsx11d = 0 ; rsx11d features
|
|
23 000000 debug = 0 ; <<< REEDS if non zero includes debug junk
|
|
24
|
|
25 000001 ft.id= 1 ;have set i & d. set =0 if not
|
|
26
|
|
27 000001 ft.unx = 1 ; this macro-11 is for UNIX. =0 if not.
|
|
28
|
|
29 .nlist bex
|
|
30
|
|
31 000011 tab= 11
|
|
32 000012 lf= 12
|
|
33 000013 vt= 13
|
|
34 000014 ff= 14
|
|
35 000015 cr= 15
|
|
36 000040 space= 40
|
|
37
|
|
38 000020 bpmb = 20 ;bytes per macro block
|
|
39
|
|
40
|
|
41
|
|
42
|
|
43
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:44: ***ERROR Unknown flag SHR given to .PSECT directive
|
|
44 .psect .text con, shr, gbl,ins
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:45: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
45 .psect .data con, dat, prv, gbl
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:46: ***ERROR Unknown flag BSS given to .PSECT directive
|
|
46 .psect .bss con, bss, gbl
|
|
47
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:48: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
48 .psect dpure con, dat, prv, gbl
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:49: ***ERROR Unknown flag PRV given to .PSECT directive
|
|
49 .psect mixed con, prv, gbl
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:50: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
50 .psect errmes con, dat, prv, gbl
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:51: ***ERROR Unknown flag BSS given to .PSECT directive
|
|
51 .psect impure con, bss, gbl
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:52: ***ERROR Unknown flag BSS given to .PSECT directive
|
|
52 .psect imppas con, bss, gbl
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:53: ***ERROR Unknown flag BSS given to .PSECT directive
|
|
53 .psect implin con, bss, gbl
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:54: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
54 .psect swtsec con, dat, prv, gbl ; unix command line flags
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:55: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
55 .psect cndsec con, dat, prv, gbl ; gt, le, equ, etc. for '.if'
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:56: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
56 .psect crfsec con, dat, prv, gbl ; args for -cr flag
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:57: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
57 .psect edtsec con, dat, prv, gbl ; args for .enabl
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:58: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
58 .psect lctsec con, dat, prv, gbl ; args for .list
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:59: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
59 .psect psasec con, dat, prv, gbl
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:60: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
60 .psect pstsec con, dat, prv, gbl
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:61: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
61 .psect rolbas con, dat, prv, gbl ; core allocation: starts of tables
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:62: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
62 .psect rolsiz con, dat, prv, gbl ; sizes of table entries
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:63: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
63 .psect roltop con, dat, prv, gbl ; tops of tables
|
|
./2.11BSD/m11/getl.m11:10->ALWAYS:64: ***ERROR Unknown flag BSS given to .PSECT directive
|
|
64 .psect xpcor con,bss , gbl ; this one MUST come last in core
|
|
65
|
|
66
|
|
67
|
|
68 .macro entsec name ;init a section
|
|
69 .psect name con
|
|
70 .endm entsec
|
|
71
|
|
72
|
|
73
|
|
74 .macro jeq x,?fred
|
|
75 bne fred
|
|
76 jmp x
|
|
77 fred:
|
|
78 .endm
|
|
79 .macro jne x,?fred
|
|
80 beq fred
|
|
81 jmp x
|
|
82 fred:
|
|
83 .endm
|
|
84 .macro xitsec
|
|
85 entsec .text
|
|
86 .endm xitsec
|
|
87
|
|
88
|
|
89 .macro call address
|
|
90 jsr pc,address
|
|
91 .endm
|
|
92
|
|
93 .macro return
|
|
94 rts pc
|
|
95 .endm
|
|
96
|
|
97
|
|
98 .macro always
|
|
99 .nlist bex
|
|
100 .endm always
|
|
11 000000 ch.mne
|
|
1
|
|
2 000041 ch.ior= '!
|
|
3 000042 ch.qtm= '"
|
|
4 000043 ch.hsh= '#
|
|
5 000044 ch.dol= '$
|
|
6 000045 ch.pct= '%
|
|
7 000046 ch.and= '&
|
|
8 000047 ch.xcl= ''
|
|
9
|
|
10 000050 ch.lp= '(
|
|
11 000051 ch.rp= ')
|
|
12 000052 ch.mul= '*
|
|
13 000053 ch.add= '+
|
|
14 000054 ch.com= ',
|
|
15 000055 ch.sub= '-
|
|
16 000056 ch.dot= '.
|
|
17 000057 ch.div= '/
|
|
18
|
|
19 000072 ch.col= ':
|
|
20 000073 ch.smc= ';
|
|
21 000074 ch.lab= '<
|
|
22 000075 ch.equ= '=
|
|
23 000076 ch.rab= '>
|
|
24 000077 ch.qm= '?
|
|
25
|
|
26 000100 ch.ind= '@
|
|
27 000134 ch.bsl= '\
|
|
28 000136 ch.uar= '^
|
|
29
|
|
30 000101 let.a= 'a&^c40
|
|
31 000102 let.b= 'b&^c40
|
|
32 000103 let.c= 'c&^c40
|
|
33 000104 let.d= 'd&^c40
|
|
34 000105 let.e= 'e&^c40
|
|
35 000106 let.f= 'f&^c40
|
|
36 000107 let.g= 'g&^c40
|
|
37 000117 let.o= 'o&^c40
|
|
38 000120 let.p= 'p&^c40
|
|
39 000122 let.r= 'r&^c40
|
|
40 000132 let.z= 'z&^c40
|
|
41
|
|
42 000060 dig.0= '0
|
|
43 000071 dig.9= '9
|
|
44 .macro ch.mne
|
|
45 .endm ch.mne
|
|
12 000000 st.flg
|
|
1
|
|
2 000001 .if le ft.unx
|
|
3
|
|
4 ovrflg= 000004 ;overlay (psect only)
|
|
5 defflg= 000010 ;defined
|
|
6 relflg= 000040 ;relocatable
|
|
7 glbflg= 000100 ;global
|
|
8 dfgflg= 000200 ; default global <rsx11d>... reeds's guess
|
|
9
|
|
10
|
|
11 .endc
|
|
12
|
|
13 000001 .if gt ft.unx
|
|
14
|
|
15 ; ****** these should not be changed!! ******
|
|
16 000001 shrflg= 000001 ;shareable (psect only)
|
|
17 000001 .if gt ft.id
|
|
18 000002 insflg= shrflg*2 ;instruction space (psect only)
|
|
19 000004 bssflg= insflg*2 ;blank section (psect only)
|
|
20 000007 m.idf= shrflg!insflg!bssflg ;mask to turn them off
|
|
21 .iff
|
|
22 bssflg= shrflg*2
|
|
23 m.idf= shrflg!bssflg
|
|
24 .endc
|
|
25 000001 b.idf= 1 ;shift count to make above bits word offset
|
|
26 ; ***********************************
|
|
27 000010 defflg= 000010 ;defined
|
|
28 000020 ovrflg= 000020 ;overlay (psect only)
|
|
29 000040 relflg= 000040 ;relocatable
|
|
30 000100 glbflg= 000100 ;global
|
|
31 000200 dfgflg= 000200 ; default global <rsx11d>... reeds's guess
|
|
32
|
|
33 .endc
|
|
34
|
|
35 ;
|
|
36 ; default psect attribs.
|
|
37 ; can be changed, but make sure all customers know about
|
|
38 ; it, including all the linkers.
|
|
39 ;
|
|
40 000050 pattrs=relflg!defflg ; For .psects and blank .csects
|
|
41 000130 aattrs=glbflg!defflg!ovrflg ; For .asect
|
|
42 000170 cattrs=glbflg!relflg!defflg!ovrflg ; For named .csects
|
|
43
|
|
44 000001 regflg= 000001 ;register
|
|
45 000002 lblflg= 000002 ;label
|
|
46 000004 mdfflg= 000004 ;multilpy defined
|
|
47 .macro st.flg
|
|
48 .endm
|
|
13
|
|
14 .mcall (at)sdebug,ndebug
|
|
15 .mcall (at)xmit,param,error
|
|
16 .mcall (at)genedt,gencnd,setnz
|
|
17 .mcall (at)search,scanw
|
|
18
|
|
19
|
|
20 .globl lcbegl, linend, lcendl
|
|
21 .globl cdrsav
|
|
22
|
|
23 .globl linnum, seqend, pagnum, pagext, ffcnt
|
|
24 .globl lppcnt
|
|
25
|
|
26 .globl stmnt
|
|
27
|
|
28 .globl cndwrd, lsybas, lc.cnd, lsbset
|
|
29 .globl xctlin
|
|
30 .globl secrol, cndrol, lsyrol, symrol
|
|
31
|
|
32 .globl srcchn, smlchn
|
|
33 .globl crfdef, crfref
|
|
34
|
|
35 .globl clcfgs, clcloc, clcmax
|
|
36 .globl clcnam, clcsec, cpopj
|
|
37 .globl flags, getchr, getnb, getsym
|
|
38 .globl lsrch, mode
|
|
39 .globl sector, setnb
|
|
40 .globl setsec, setxpr
|
|
41 .globl symbol, tstarg, value
|
|
42 .globl smllvl, msbmrp, getmch
|
|
43 .globl edmask, ed.cdr, ed.lc, ed.lsb
|
|
44
|
|
45 ;globals defined in assembler
|
|
46
|
|
47 .if ndf xswit
|
|
48 .globl absexp, chrpnt, pass
|
|
49 .endc
|
|
50
|
|
51 .globl savreg, xmit0
|
|
52 .globl linbuf
|
|
53 .globl gsarg
|
|
54
|
|
55 ;globals defined in mcexec
|
|
56
|
|
57 .globl getic, io.eof, io.eoi, io.err
|
|
58 .globl argcnt, cndmex
|
|
59 .globl endflg
|
|
60 .globl getlin, lblend, lcendl, lcflag
|
|
61 .globl lcmask, lsgbas
|
|
62 .globl u.flag , mac.er, macdfn
|
|
63
|
|
63
|
|
64 000000 xitsec ;start in default sector
|
|
1 000000 entsec .text
|
|
1 000000 .psect .text con
|
|
65
|
|
66 getlin: ;get an input line
|
|
67 000000 call savreg
|
|
1 000000 004767 000000G jsr pc,savreg
|
|
68 000004 getl01: call xctlin ;init line-oriented variables
|
|
1 000004 004767 000000G jsr pc,xctlin
|
|
69 000010 016700 000004' mov ffcnt,r0 ;any reserved ff's?
|
|
70 000014 001420 beq 2$ ; no
|
|
71 000016 060067 000000G add r0,pagnum ;yes, update page number
|
|
72 000022 012767 177777 000010' mov #-1,pagext
|
|
73 000030 005067 000004' clr ffcnt
|
|
74 .if ndf xlcseq
|
|
75 000034 005067 000000G clr linnum ;init new cref sequence
|
|
76 000040 005067 000012' clr seqend
|
|
77 .endc
|
|
78 000044 005767 000000G tst pass
|
|
79 000050 001402 beq 2$
|
|
80 000052 005067 000002' clr lppcnt
|
|
81 2$: .if ndf xsml
|
|
82 000056 012704 177777 mov #-1,r4 ;assume in sysmac
|
|
83 000062 012700 000000G mov #smlchn,r0
|
|
84 000066 005767 000000G tst smllvl ;true?
|
|
85 000072 001007 bne 4$ ; yes
|
|
86 .endc
|
|
87 000074 005004 clr r4 ;no, assume physical input
|
|
88 000076 012700 000000G mov #srcchn,r0
|
|
89 .if ndf xmacro
|
|
90 000102 016701 000000G mov msbmrp,r1 ;fetch pointer
|
|
91 000106 001401 beq 4$ ;zero means not in macro
|
|
92 000110 005204 inc r4 ;make it a one
|
|
93 000112 006304 4$: asl r4 ;double for indexing
|
|
94 .endc
|
|
95 000114 012702 000000G mov #linbuf,r2
|
|
96 000120 010267 000000G mov r2,lcbegl ;set up beginning
|
|
97 000124 010267 000000G mov r2,chrpnt
|
|
98 000130 012767 000000G 000000G mov #linend,lcendl ; and end of line markers
|
|
99 ;fall through
|
|
99
|
|
100
|
|
101 getl10: ;char loop
|
|
102 000136 call @getltb(r4) ;call proper routine
|
|
1 000136 004774 000002' jsr pc,@getltb(r4)
|
|
103 000142 042705 000200 bic #200,r5 ;clear sign bit
|
|
104 000146 001773 beq getl10 ;ignore if null
|
|
105 000150 100510 bmi 25$ ;special if sign bit set
|
|
106 000152 020527 000040 cmp r5,#40 ;less than space?
|
|
107 000156 103452 blo 20$ ; yes
|
|
108 000160 020527 000140 cmp r5,#140 ;good guy as is?
|
|
109 000164 103412 blo 14$ ; yes
|
|
110 000166 001473 beq 22$ ;illegal
|
|
111 000170 020527 000172 cmp r5,#172 ;lower case?
|
|
112 000174 101070 bhi 22$ ; no, probably illegal
|
|
113 .if ndf xedlc
|
|
114 000176 032767 000000G 000000G bit #ed.lc,edmask ;lower case enabled?
|
|
115 000204 001402 beq 14$ ; yes, leave alone
|
|
116 .endc
|
|
117 000206 162705 000040 sub #40,r5 ;convert lower to upper case
|
|
118 000212 110522 14$: movb r5,(r2)+ ;store in linbuf
|
|
119 000214 020227 000000G cmp r2,#linend ;overflow?
|
|
120 000220 103746 blo getl10 ; no
|
|
121 000222 105742 tstb -(r2) ;yes, move back one
|
|
122 16$: ;flag line error
|
|
123 000224 error 12,l,<line too long>
|
|
1 000224 sdebug <12>
|
|
1 .globl sdebug,..z,..zbuf
|
|
2 000000 x = 0
|
|
3 .irpc t,<12>
|
|
4 movb #''t,..zbuf+x
|
|
5 x = x+1
|
|
6 .endm
|
|
1 000224 112767 000061 000000G movb #'1,..zbuf+x
|
|
2 000001 x = x+1
|
|
3 000232 112767 000062 000001G movb #'2,..zbuf+x
|
|
4 000002 x = x+1
|
|
7 000240 112767 000000 000002G movb #0,..zbuf+x
|
|
8 000246 012767 000000G 000000G mov #..zbuf,..z
|
|
9 000254 call sdebug
|
|
1 000254 004767 000000G jsr pc,sdebug
|
|
2 .globl err.l,ern12, errbts,errref
|
|
3 .if b <line too long>
|
|
4 deliberate error mistake
|
|
5 .endc
|
|
6 .if dif 0,12
|
|
7 .globl err.xx
|
|
8 000260 005767 000000G tst err.xx
|
|
9 000264 001003 bne 32768$
|
|
10 000266 012767 000000G 000000G mov #ern12,err.xx
|
|
11 32768$:
|
|
12 .endc
|
|
13 000274 052767 000000G 000000G bis #err.l,errbts
|
|
124 000302 000715 br getl10
|
|
125
|
|
126 000304 020527 000011 20$: cmp r5,#tab ;<40, check specials
|
|
127 000310 001740 beq 14$ ;ok as is
|
|
128 000312 020527 000012 cmp r5,#lf
|
|
129 000316 001536 beq getl40 ;eol
|
|
130 000320 020527 000013 cmp r5,#vt ;vertical tab?
|
|
131 000324 001437 beq 32$ ; yes (special)
|
|
132 000326 020527 000014 cmp r5,#ff
|
|
133 000332 001006 bne 23$
|
|
134 000334 005767 000000G tst u.flag
|
|
135 000340 001422 beq 30$ ; -u flag not in effect: pay heed to form feeds
|
|
136 000342 012705 000040 mov #40,r5 ; flag in effect: convert ^L into space
|
|
137 000346 000721 br 14$
|
|
138 23$:
|
|
139 000350 020527 000015 cmp r5,#cr
|
|
140 000354 001670 beq getl10 ;ignore carriage returns
|
|
141 000356 020527 000177 22$: cmp r5,#177 ;rubout?
|
|
142 000362 001665 beq getl10 ; yes, ignore
|
|
143 24$:
|
|
144 ; error 13,i,<illegal character>
|
|
145 000364 052705 000200 bis #200,r5 ;flag for qm on listing
|
|
146 000370 000710 br 14$
|
|
147
|
|
148 000372 030527 000000G 25$: bit r5,#io.eoi ;end of input?
|
|
149 000376 001017 bne 34$ ; yes
|
|
150 000400 030527 000000G bit r5,#io.err ;error?
|
|
151 000404 001307 bne 16$ ; yes
|
|
152 ;no, assume eof and fall through
|
|
152
|
|
153 30$: .if ndf xmacro
|
|
154 000406 005704 tst r4 ;reading from source?
|
|
155 000410 001005 bne 32$ ; no
|
|
156 000412 005267 000004' inc ffcnt ;yes, bump page count
|
|
157 000416 066767 000000G 000006' add pagnum,ffcnt+2
|
|
158 .endc
|
|
159 000424 020227 000000G 32$: cmp r2,#linbuf ;first char?
|
|
160 000430 001071 bne getl40 ; no
|
|
161 000432 000167 177346 jmp getl01 ;yes, reprocess line
|
|
162
|
|
163 000436 005767 000000G 34$: tst macdfn
|
|
164 000442 001030 bne 35$
|
|
165 000444 error 14,e,<.end not found> ;end of input,
|
|
1 000444 sdebug <14>
|
|
1 .globl sdebug,..z,..zbuf
|
|
2 000000 x = 0
|
|
3 .irpc t,<14>
|
|
4 movb #''t,..zbuf+x
|
|
5 x = x+1
|
|
6 .endm
|
|
1 000444 112767 000061 000000G movb #'1,..zbuf+x
|
|
2 000001 x = x+1
|
|
3 000452 112767 000064 000001G movb #'4,..zbuf+x
|
|
4 000002 x = x+1
|
|
7 000460 112767 000000 000002G movb #0,..zbuf+x
|
|
8 000466 012767 000000G 000000G mov #..zbuf,..z
|
|
9 000474 call sdebug
|
|
1 000474 004767 000000G jsr pc,sdebug
|
|
2 .globl err.e,ern14, errbts,errref
|
|
3 .if b <.end not found>
|
|
4 deliberate error mistake
|
|
5 .endc
|
|
6 .if dif 0,14
|
|
7 .globl err.xx
|
|
8 000500 005767 000000G tst err.xx
|
|
9 000504 001003 bne 32769$
|
|
10 000506 012767 000000G 000000G mov #ern14,err.xx
|
|
11 32769$:
|
|
12 .endc
|
|
13 000514 052767 000000G 000000G bis #err.e,errbts
|
|
166 000522 000432 br 36$
|
|
167 000524 35$: error 140,e,<end of input while macro or repeat in progress>
|
|
1 000524 sdebug <140>
|
|
1 .globl sdebug,..z,..zbuf
|
|
2 000000 x = 0
|
|
3 .irpc t,<140>
|
|
4 movb #''t,..zbuf+x
|
|
5 x = x+1
|
|
6 .endm
|
|
1 000524 112767 000061 000000G movb #'1,..zbuf+x
|
|
2 000001 x = x+1
|
|
3 000532 112767 000064 000001G movb #'4,..zbuf+x
|
|
4 000002 x = x+1
|
|
5 000540 112767 000060 000002G movb #'0,..zbuf+x
|
|
6 000003 x = x+1
|
|
7 000546 112767 000000 000003G movb #0,..zbuf+x
|
|
8 000554 012767 000000G 000000G mov #..zbuf,..z
|
|
9 000562 call sdebug
|
|
1 000562 004767 000000G jsr pc,sdebug
|
|
2 .globl err.e,ern140, errbts,errref
|
|
3 .if b <end of input while macro or repeat in progress>
|
|
4 deliberate error mistake
|
|
5 .endc
|
|
6 .if dif 0,140
|
|
7 .globl err.xx
|
|
8 000566 005767 000000G tst err.xx
|
|
9 000572 001003 bne 32770$
|
|
10 000574 012767 000000G 000000G mov #ern140,err.xx
|
|
11 32770$:
|
|
12 .endc
|
|
13 000602 052767 000000G 000000G bis #err.e,errbts
|
|
168 36$:
|
|
169 000610 005267 000000' inc endflg ; missed .end statement
|
|
170
|
|
171 000614 105012 getl40: clrb (r2)
|
|
172 000616 012767 000000G 000000G mov #linbuf,..z
|
|
173 000624 call sdebug
|
|
1 000624 004767 000000G jsr pc,sdebug
|
|
174 .if ndf xmacro
|
|
175 000630 005704 tst r4
|
|
176 000632 001004 bne 41$
|
|
177 .endc
|
|
178 .if ndf xlcseq
|
|
179 000634 005267 000000G inc linnum ;bump line number
|
|
180 .globl fileln
|
|
181 000640 005267 000000G inc fileln ;bump true line number
|
|
182 .endc
|
|
183 41$: .if ndf xedcdr
|
|
184 000644 116767 000110G 000000G movb linbuf+72.,cdrsav ;save column 73
|
|
185 000652 032767 000000G 000000G bit #ed.cdr,edmask ;card reader type?
|
|
186 000660 001002 bne 42$ ; no
|
|
187 000662 105067 000110G clrb linbuf+72. ;yes, force eol
|
|
188 42$: .endc
|
|
189 000666 016700 000000' mov endflg,r0 ;return with "endflg" as argument
|
|
190 000672 000167 000000G jmp setnb ;return pointing at first non-blank
|
|
191
|
|
192 000676 entsec dpure ;input mode jump table
|
|
1 000000 .psect dpure con
|
|
193 .if ndf xsml
|
|
194 000000 000000G .word getic ;sysmac same as regular source
|
|
195 .endc
|
|
196 000002 000000G getltb: .word getic ;get input character
|
|
197 .if ndf xmacro
|
|
198 000004 000000G .word getmch ;get macro character
|
|
199 .endc
|
|
200
|
|
201 000006 entsec imppas
|
|
1 000000 .psect imppas con
|
|
202 000000 endflg: .blkw ;set non-zero on end
|
|
203 000002 lppcnt: .blkw 1 ;force new page when negative
|
|
204 000004 ffcnt: .blkw 2 ;unprocessed ff count
|
|
205 000010 pagext: .blkw 1 ;page number extension
|
|
206 .if ndf xlcseq
|
|
207 000012 seqend: .blkw 1
|
|
208 .endc
|
|
209
|
|
210 000014 xitsec
|
|
1 000014 entsec .text
|
|
1 000676 .psect .text con
|
|
211
|
|
212 000676 .iif ndf xedlc, genedt lc ;lower case
|
|
1 000676 entsec edtsec
|
|
1 000000 .psect edtsec con
|
|
2 000000 045570 .rad50 /lc/
|
|
3 .if nb
|
|
4 .word
|
|
5 .iff
|
|
6 000002 000000G .word cpopj
|
|
7 .endc
|
|
8 000004 000000G .word ed.lc
|
|
9 000006 xitsec
|
|
1 000006 entsec .text
|
|
1 000676 .psect .text con
|
|
212
|
|
213 setsec:
|
|
214 000676 005000 clr r0
|
|
215 000700 156700 000000G bisb sector,r0
|
|
216 ; imuli rs.sec*2,r0 ;multiply by bytes/block
|
|
217 000704 010046 mov r0,-(sp)
|
|
218 000706 006300 asl r0
|
|
219 000710 006300 asl r0
|
|
220 000712 062600 add (sp)+,r0
|
|
221 000714 006300 asl r0
|
|
222 000716 066700 000000C add <^pl rolbas>+secrol,r0 ;compute base of sector roll
|
|
223 000722 012067 000000G mov (r0)+,symbol ;xfer sector name to symbol
|
|
224 000726 012067 000002G mov (r0)+,symbol+2
|
|
225 000732 return
|
|
1 000732 000207 rts pc
|
|
225
|
|
226 .sbttl conditionals
|
|
227
|
|
228 .globl iif
|
|
229
|
|
230
|
|
231
|
|
232
|
|
233 iif: ;immediate handlers
|
|
234 000734 call tcon ;test argument
|
|
1 000734 004767 000374 jsr pc,tcon
|
|
235 000740 005703 tst r3
|
|
236 000742 100423 bmi 3$ ; branch if unsatisfied
|
|
237 000744 022705 000054 cmp #ch.com,r5 ;comma?
|
|
238 000750 001002 bne 1$ ; no
|
|
239 000752 call getchr ;yes, bypass
|
|
1 000752 004767 000000G jsr pc,getchr
|
|
240 000756 016701 000000G 1$: mov chrpnt,r1 ;save current location
|
|
241
|
|
242
|
|
243 000762 call setnb ;set to nom-blank
|
|
1 000762 004767 000000G jsr pc,setnb
|
|
244 000766 032767 000000G 000000G bit #lc.cnd,lcmask ;conditional suppression?
|
|
245 000774 001402 beq 2$ ; no
|
|
246 000776 010167 000000G mov r1,lcbegl ;yes, suppress all up to comma
|
|
247 001002 005067 000000G 2$: clr argcnt
|
|
248 001006 000167 000000G jmp stmnt ;back to statement
|
|
249
|
|
250 001012 005005 3$: clr r5 ;false, but no "q" error
|
|
251 001014 000451 br endcx
|
|
252
|
|
253
|
|
254 ;concatenated conditionals
|
|
255 .irp arg, <eq,ge,gt,le,lt,ne,g,l,nz,z,df,ndf>
|
|
256 .globl if'arg
|
|
257 if'arg:
|
|
258 .endm
|
|
1 .globl ifeq
|
|
2 ifeq:
|
|
3 .globl ifge
|
|
4 ifge:
|
|
5 .globl ifgt
|
|
6 ifgt:
|
|
7 .globl ifle
|
|
8 ifle:
|
|
9 .globl iflt
|
|
10 iflt:
|
|
11 .globl ifne
|
|
12 ifne:
|
|
13 .globl ifg
|
|
14 ifg:
|
|
15 .globl ifl
|
|
16 ifl:
|
|
17 .globl ifnz
|
|
18 ifnz:
|
|
19 .globl ifz
|
|
20 ifz:
|
|
21 .globl ifdf
|
|
22 ifdf:
|
|
23 .globl ifndf
|
|
24 ifndf:
|
|
259
|
|
260 001016 016767 000002G 000000G mov symbol+2,symbol ;treat second half as argument
|
|
261 001024 call tconf ;examine it
|
|
1 001024 004767 000310 jsr pc,tconf
|
|
262 001030 000402 br if1 ;into the main stream
|
|
263
|
|
264
|
|
265 .globl if, ift, iff, iftf, endc
|
|
266
|
|
267 if: ;micro-programmmed conditional
|
|
268 001032 call tcon ;test argument
|
|
1 001032 004767 000276 jsr pc,tcon
|
|
269 001036 012701 000020' if1: mov #cndlvl,r1 ;point to level
|
|
270 001042 021127 000017 cmp (r1),#15. ;room for another?
|
|
271 001046 003102 bgt ifoer1 ; no, error
|
|
272 001050 005211 inc (r1) ;yes, bump level
|
|
273 001052 006303 asl r3 ;set carry to true (0) or false (1)
|
|
274 001054 006041 ror -(r1) ;rotate into cndmsk
|
|
275 001056 006303 asl r3
|
|
276 001060 006041 ror -(r1) ;ditto for cndwrd
|
|
277 001062 000426 br endcx
|
|
277
|
|
278 ift: ;if true sub-conditional
|
|
279 001064 016703 000016' mov cndmsk,r3 ;get current
|
|
280 001070 000403 br iftf ; and branch
|
|
281
|
|
282 iff: ;if false sub-conditional
|
|
283 001072 016703 000016' mov cndmsk,r3 ;get current condition
|
|
284 001076 005103 com r3 ;use complement and fall through
|
|
285
|
|
286 iftf: ;unconditional sub-conditional
|
|
287 ;(r3=0 when called directly)
|
|
288 001100 005767 000020' tst cndlvl ;conditional in progress?
|
|
289 001104 003433 ble ifoerr ; no, error
|
|
290 001106 006367 000014' asl cndwrd ;move off current flag
|
|
291 001112 006303 asl r3 ;set carry
|
|
292 001114 006067 000014' ror cndwrd ;mov on
|
|
293 001120 000407 br endcx
|
|
294
|
|
295 endc: ;end of conditional
|
|
296 001122 012701 000020' mov #cndlvl,r1 ;point to level
|
|
297 001126 005711 tst (r1) ;in conditional?
|
|
298 001130 003421 ble ifoerr ; no, error
|
|
299 001132 005311 dec (r1) ;yes, decrement
|
|
300 001134 006341 asl -(r1) ;reduce mask
|
|
301 001136 006341 asl -(r1) ; and test word
|
|
302 endcx:
|
|
303 001140 032767 000000G 000000G bit #lc.cnd,lcmask ;suppression requested?
|
|
304 001146 001411 beq 2$ ; no
|
|
305 001150 016700 000000G mov lblend,r0 ;yes, any label?
|
|
306 001154 001403 beq 1$ ; no, suppress whole line
|
|
307 001156 010067 000000G mov r0,lcendl ;yes, list only label
|
|
308 001162 000403 br 2$
|
|
309
|
|
310 001164 052767 000000G 000000G 1$: bis #lc.cnd,lcflag ;mark conditional
|
|
311 001172 2$: return
|
|
1 001172 000207 rts pc
|
|
312
|
|
313 001174 ifoerr: error 15,o,<conditional not in progress> ;condition error
|
|
1 001174 sdebug <15>
|
|
1 .globl sdebug,..z,..zbuf
|
|
2 000000 x = 0
|
|
3 .irpc t,<15>
|
|
4 movb #''t,..zbuf+x
|
|
5 x = x+1
|
|
6 .endm
|
|
1 001174 112767 000061 000000G movb #'1,..zbuf+x
|
|
2 000001 x = x+1
|
|
3 001202 112767 000065 000001G movb #'5,..zbuf+x
|
|
4 000002 x = x+1
|
|
7 001210 112767 000000 000002G movb #0,..zbuf+x
|
|
8 001216 012767 000000G 000000G mov #..zbuf,..z
|
|
9 001224 call sdebug
|
|
1 001224 004767 000000G jsr pc,sdebug
|
|
2 .globl err.o,ern15, errbts,errref
|
|
3 .if b <conditional not in progress>
|
|
4 deliberate error mistake
|
|
5 .endc
|
|
6 .if dif 0,15
|
|
7 .globl err.xx
|
|
8 001230 005767 000000G tst err.xx
|
|
9 001234 001003 bne 32768$
|
|
10 001236 012767 000000G 000000G mov #ern15,err.xx
|
|
11 32768$:
|
|
12 .endc
|
|
13 001244 052767 000000G 000000G bis #err.o,errbts
|
|
314 001252 return
|
|
1 001252 000207 rts pc
|
|
315 001254 ifoer1: error 16,o,<too many nested conditionals>
|
|
1 001254 sdebug <16>
|
|
1 .globl sdebug,..z,..zbuf
|
|
2 000000 x = 0
|
|
3 .irpc t,<16>
|
|
4 movb #''t,..zbuf+x
|
|
5 x = x+1
|
|
6 .endm
|
|
1 001254 112767 000061 000000G movb #'1,..zbuf+x
|
|
2 000001 x = x+1
|
|
3 001262 112767 000066 000001G movb #'6,..zbuf+x
|
|
4 000002 x = x+1
|
|
7 001270 112767 000000 000002G movb #0,..zbuf+x
|
|
8 001276 012767 000000G 000000G mov #..zbuf,..z
|
|
9 001304 call sdebug
|
|
1 001304 004767 000000G jsr pc,sdebug
|
|
2 .globl err.o,ern16, errbts,errref
|
|
3 .if b <too many nested conditionals>
|
|
4 deliberate error mistake
|
|
5 .endc
|
|
6 .if dif 0,16
|
|
7 .globl err.xx
|
|
8 001310 005767 000000G tst err.xx
|
|
9 001314 001003 bne 32768$
|
|
10 001316 012767 000000G 000000G mov #ern16,err.xx
|
|
11 32768$:
|
|
12 .endc
|
|
13 001324 052767 000000G 000000G bis #err.o,errbts
|
|
316 001332 return
|
|
1 001332 000207 rts pc
|
|
316
|
|
317 tcon: ;test condition
|
|
318 001334 call gsarg ;get a symbol
|
|
1 001334 004767 000000G jsr pc,gsarg
|
|
319 001340 tconf: scanw cndrol ;scan for argument
|
|
1 001340 012700 000000G mov #cndrol,r0
|
|
2 .globl scanw
|
|
3 001344 call scanw
|
|
1 001344 004767 000000G jsr pc,scanw
|
|
320 001350 001413 beq 7$ ; error if not found
|
|
321 001352 016701 000002G mov symbol+2,r1 ;get address
|
|
322 001356 006201 asr r1 ;low bit used for toggle flag
|
|
323 001360 005603 sbc r3 ;r3 goes to -1 if odd
|
|
324 001362 006301 asl r1 ;back to normal (and even)
|
|
325 001364 005767 000014' tst cndwrd ;already unsat?
|
|
326 001370 001032 bne tcon8 ; yes, just exit
|
|
327 001372 call tstarg ;bypass comma
|
|
1 001372 004767 000000G jsr pc,tstarg
|
|
328 001376 000111 jmp @r1 ;jump to handler
|
|
329
|
|
330 001400 7$: error 17,a,<conditional argument not specified>
|
|
1 001400 sdebug <17>
|
|
1 .globl sdebug,..z,..zbuf
|
|
2 000000 x = 0
|
|
3 .irpc t,<17>
|
|
4 movb #''t,..zbuf+x
|
|
5 x = x+1
|
|
6 .endm
|
|
1 001400 112767 000061 000000G movb #'1,..zbuf+x
|
|
2 000001 x = x+1
|
|
3 001406 112767 000067 000001G movb #'7,..zbuf+x
|
|
4 000002 x = x+1
|
|
7 001414 112767 000000 000002G movb #0,..zbuf+x
|
|
8 001422 012767 000000G 000000G mov #..zbuf,..z
|
|
9 001430 call sdebug
|
|
1 001430 004767 000000G jsr pc,sdebug
|
|
2 .globl err.a,ern17, errbts,errref
|
|
3 .if b <conditional argument not specified>
|
|
4 deliberate error mistake
|
|
5 .endc
|
|
6 .if dif 0,17
|
|
7 .globl err.xx
|
|
8 001434 005767 000000G tst err.xx
|
|
9 001440 001003 bne 32768$
|
|
10 001442 012767 000000G 000000G mov #ern17,err.xx
|
|
11 32768$:
|
|
12 .endc
|
|
13 001450 052767 000000G 000000G bis #err.a,errbts
|
|
331 001456 005005 tcon8: clr r5 ;no "q" error
|
|
332 001460 return
|
|
1 001460 000207 rts pc
|
|
333
|
|
334
|
|
335
|
|
336 001462 gencnd eq, tconeq
|
|
1 001462 entsec cndsec
|
|
1 000000 .psect cndsec con
|
|
2 000000 020750 .rad50 /eq/
|
|
3 .if b <>
|
|
4 000002 001462' .word tconeq
|
|
5 .iff
|
|
6 .word tconeq+1
|
|
7 .endc
|
|
8 000004 xitsec
|
|
1 000004 entsec .text
|
|
1 001462 .psect .text con
|
|
337 001462 gencnd ne, tconeq, f
|
|
1 001462 entsec cndsec
|
|
1 000004 .psect cndsec con
|
|
2 000004 054110 .rad50 /ne/
|
|
3 .if b <f>
|
|
4 .word tconeq
|
|
5 .iff
|
|
6 000006 001463' .word tconeq+1
|
|
7 .endc
|
|
8 000010 xitsec
|
|
1 000010 entsec .text
|
|
1 001462 .psect .text con
|
|
338 001462 gencnd z, tconeq
|
|
1 001462 entsec cndsec
|
|
1 000010 .psect cndsec con
|
|
2 000010 121200 .rad50 /z/
|
|
3 .if b <>
|
|
4 000012 001462' .word tconeq
|
|
5 .iff
|
|
6 .word tconeq+1
|
|
7 .endc
|
|
8 000014 xitsec
|
|
1 000014 entsec .text
|
|
1 001462 .psect .text con
|
|
339 001462 gencnd nz, tconeq, f
|
|
1 001462 entsec cndsec
|
|
1 000014 .psect cndsec con
|
|
2 000014 055620 .rad50 /nz/
|
|
3 .if b <f>
|
|
4 .word tconeq
|
|
5 .iff
|
|
6 000016 001463' .word tconeq+1
|
|
7 .endc
|
|
8 000020 xitsec
|
|
1 000020 entsec .text
|
|
1 001462 .psect .text con
|
|
340 001462 gencnd gt, tcongt
|
|
1 001462 entsec cndsec
|
|
1 000020 .psect cndsec con
|
|
2 000020 027340 .rad50 /gt/
|
|
3 .if b <>
|
|
4 000022 001474' .word tcongt
|
|
5 .iff
|
|
6 .word tcongt+1
|
|
7 .endc
|
|
8 000024 xitsec
|
|
1 000024 entsec .text
|
|
1 001462 .psect .text con
|
|
341 001462 gencnd le, tcongt, f
|
|
1 001462 entsec cndsec
|
|
1 000024 .psect cndsec con
|
|
2 000024 045710 .rad50 /le/
|
|
3 .if b <f>
|
|
4 .word tcongt
|
|
5 .iff
|
|
6 000026 001475' .word tcongt+1
|
|
7 .endc
|
|
8 000030 xitsec
|
|
1 000030 entsec .text
|
|
1 001462 .psect .text con
|
|
342 001462 gencnd g, tcongt
|
|
1 001462 entsec cndsec
|
|
1 000030 .psect cndsec con
|
|
2 000030 025700 .rad50 /g/
|
|
3 .if b <>
|
|
4 000032 001474' .word tcongt
|
|
5 .iff
|
|
6 .word tcongt+1
|
|
7 .endc
|
|
8 000034 xitsec
|
|
1 000034 entsec .text
|
|
1 001462 .psect .text con
|
|
343 001462 gencnd lt, tconlt
|
|
1 001462 entsec cndsec
|
|
1 000034 .psect cndsec con
|
|
2 000034 047040 .rad50 /lt/
|
|
3 .if b <>
|
|
4 000036 001504' .word tconlt
|
|
5 .iff
|
|
6 .word tconlt+1
|
|
7 .endc
|
|
8 000040 xitsec
|
|
1 000040 entsec .text
|
|
1 001462 .psect .text con
|
|
344 001462 gencnd ge, tconlt, f
|
|
1 001462 entsec cndsec
|
|
1 000040 .psect cndsec con
|
|
2 000040 026210 .rad50 /ge/
|
|
3 .if b <f>
|
|
4 .word tconlt
|
|
5 .iff
|
|
6 000042 001505' .word tconlt+1
|
|
7 .endc
|
|
8 000044 xitsec
|
|
1 000044 entsec .text
|
|
1 001462 .psect .text con
|
|
345 001462 gencnd l, tconlt
|
|
1 001462 entsec cndsec
|
|
1 000044 .psect cndsec con
|
|
2 000044 045400 .rad50 /l/
|
|
3 .if b <>
|
|
4 000046 001504' .word tconlt
|
|
5 .iff
|
|
6 .word tconlt+1
|
|
7 .endc
|
|
8 000050 xitsec
|
|
1 000050 entsec .text
|
|
1 001462 .psect .text con
|
|
346 001462 gencnd df, tcondf
|
|
1 001462 entsec cndsec
|
|
1 000050 .psect cndsec con
|
|
2 000050 014760 .rad50 /df/
|
|
3 .if b <>
|
|
4 000052 001514' .word tcondf
|
|
5 .iff
|
|
6 .word tcondf+1
|
|
7 .endc
|
|
8 000054 xitsec
|
|
1 000054 entsec .text
|
|
1 001462 .psect .text con
|
|
347 001462 gencnd ndf, tcondf, f
|
|
1 001462 entsec cndsec
|
|
1 000054 .psect cndsec con
|
|
2 000054 054046 .rad50 /ndf/
|
|
3 .if b <f>
|
|
4 .word tcondf
|
|
5 .iff
|
|
6 000056 001515' .word tcondf+1
|
|
7 .endc
|
|
8 000060 xitsec
|
|
1 000060 entsec .text
|
|
1 001462 .psect .text con
|
|
347
|
|
348
|
|
349
|
|
350 001462 tconeq: call absexp ;eq/ne, test expression
|
|
1 001462 004767 000000G jsr pc,absexp
|
|
351 001466 001401 beq tcontr ;branch if sat
|
|
352 001470 005103 tconfa: com r3 ; false, toggle
|
|
353 001472 tcontr: return ;true, just exit
|
|
1 001472 000207 rts pc
|
|
354
|
|
355 001474 tcongt: call absexp
|
|
1 001474 004767 000000G jsr pc,absexp
|
|
356 001500 003374 bgt tcontr
|
|
357 001502 000772 br tconfa
|
|
358
|
|
359 001504 tconlt: call absexp
|
|
1 001504 004767 000000G jsr pc,absexp
|
|
360 001510 002770 blt tcontr
|
|
361 001512 000766 br tconfa
|
|
362
|
|
363 tcondf: ;if/idf
|
|
364 001514 010301 mov r3,r1 ;save initial condition
|
|
365 001516 005002 clr r2 ;set "&"
|
|
366 001520 005003 clr r3 ;start off true
|
|
367 001522 1$: call getsym ;get a symbol
|
|
1 001522 004767 000000G jsr pc,getsym
|
|
368 001526 001413 beq 8$ ; undefined if not a sym
|
|
369 001530 search symrol ;search user symbol table
|
|
1 001530 012700 000000G mov #symrol,r0
|
|
2 .globl search
|
|
3 001534 call search
|
|
1 001534 004767 000000G jsr pc,search
|
|
370 001540 call crfref
|
|
1 001540 004767 000000G jsr pc,crfref
|
|
371 001544 005000 clr r0 ;assume defined
|
|
372 001546 032767 000010 000000G bit #defflg,mode ;good guess?
|
|
373 001554 001001 bne 2$ ; yes
|
|
374 001556 005100 8$: com r0 ;no, toggle
|
|
375 001560 020003 2$: cmp r0,r3 ;yes, match?
|
|
376 001562 001402 beq 3$ ; yes, all set
|
|
377 001564 010203 mov r2,r3 ; no
|
|
378 001566 005103 com r3
|
|
379 001570 010102 3$: mov r1,r2 ;assume "&"
|
|
380 001572 020527 000046 cmp r5,#ch.and ; "&"
|
|
381 001576 001404 beq 4$ ; branch if good guess
|
|
382 001600 020527 000041 cmp r5,#ch.ior ;perhaps or?
|
|
383 001604 001004 bne 5$ ; no
|
|
384 001606 005102 com r2 ;yes, toggle mode
|
|
385 001610 4$: call getnb ;bypass op
|
|
1 001610 004767 000000G jsr pc,getnb
|
|
386 001614 000742 br 1$ ;try again
|
|
387
|
|
388 001616 005701 5$: tst r1 ;ifdf?
|
|
389 001620 001401 beq 6$ ; yes
|
|
390 001622 005103 com r3 ;no, toggle
|
|
391 001624 6$: return
|
|
1 001624 000207 rts pc
|
|
392
|
|
393 001626 entsec imppas
|
|
1 000014 .psect imppas con
|
|
394 ;conditional storage (must be ordered)
|
|
395 000014 cndwrd: .blkw ;test word
|
|
396 000016 cndmsk: .blkw ;condition mask
|
|
397 000020 cndlvl: .blkw ;nesting level
|
|
398 000022 cndmex: .blkw ;mexit flag
|
|
399 000024 xitsec
|
|
1 000024 entsec .text
|
|
1 001626 .psect .text con
|
|
400
|
|
400
|
|
401 .sbttl roll handlers
|
|
402
|
|
403 .if ndf xedlsb
|
|
404 lsrch: ;local symbol search
|
|
405 001626 005767 000024' tst lsyflg ;flag set?
|
|
406 001632 001404 beq 1$ ; no
|
|
407 001634 005067 000024' clr lsyflg ;yes, clear it
|
|
408 001640 005267 000026' inc lsybkn ;bump block number
|
|
409 001644 012700 000000G 1$: mov #symbol,r0
|
|
410 001650 016720 000026' mov lsybkn,(r0)+ ;move into "symbol"
|
|
411 001654 016710 000000G mov value,(r0)
|
|
412 .if ndf rsx11d
|
|
413 beq 2$ ;error if zero
|
|
414 cmp (r0),#^d127
|
|
415 blos lsrch3
|
|
416 .iff
|
|
417 001660 001027 bne lsrch3
|
|
418 .endc
|
|
419 001662 2$: error 18,t,<illegal local symbol> ;yes, flag error
|
|
1 001662 sdebug <18>
|
|
1 .globl sdebug,..z,..zbuf
|
|
2 000000 x = 0
|
|
3 .irpc t,<18>
|
|
4 movb #''t,..zbuf+x
|
|
5 x = x+1
|
|
6 .endm
|
|
1 001662 112767 000061 000000G movb #'1,..zbuf+x
|
|
2 000001 x = x+1
|
|
3 001670 112767 000070 000001G movb #'8,..zbuf+x
|
|
4 000002 x = x+1
|
|
7 001676 112767 000000 000002G movb #0,..zbuf+x
|
|
8 001704 012767 000000G 000000G mov #..zbuf,..z
|
|
9 001712 call sdebug
|
|
1 001712 004767 000000G jsr pc,sdebug
|
|
2 .globl err.t,ern18, errbts,errref
|
|
3 .if b <illegal local symbol>
|
|
4 deliberate error mistake
|
|
5 .endc
|
|
6 .if dif 0,18
|
|
7 .globl err.xx
|
|
8 001716 005767 000000G tst err.xx
|
|
9 001722 001003 bne 32768$
|
|
10 001724 012767 000000G 000000G mov #ern18,err.xx
|
|
11 32768$:
|
|
12 .endc
|
|
13 001732 052767 000000G 000000G bis #err.t,errbts
|
|
420 001740 lsrch3: search lsyrol ;search the roll
|
|
1 001740 012700 000000G mov #lsyrol,r0
|
|
2 .globl search
|
|
3 001744 call search
|
|
1 001744 004767 000000G jsr pc,search
|
|
421 001750 return
|
|
1 001750 000207 rts pc
|
|
422 001752 entsec imppas
|
|
1 000024 .psect imppas con
|
|
423 000024 lsyflg: .blkw ;bumped at "label:"
|
|
424 000026 lsybkn: .blkw ;block number
|
|
425 000030 lsybas: .blkw ;section base
|
|
426 000032 lsgbas: .blkw ;base for generated symbols
|
|
427 000034 xitsec
|
|
1 000034 entsec .text
|
|
1 001752 .psect .text con
|
|
428 001752 genedt lsb,lsbtst ;local symbol block
|
|
1 001752 entsec edtsec
|
|
1 000006 .psect edtsec con
|
|
2 000006 046772 .rad50 /lsb/
|
|
3 .if nb lsbtst
|
|
4 000010 001752' .word lsbtst
|
|
5 .iff
|
|
6 .word cpopj
|
|
7 .endc
|
|
8 000012 000000G .word ed.lsb
|
|
9 000014 xitsec
|
|
1 000014 entsec .text
|
|
1 001752 .psect .text con
|
|
429
|
|
430 .enabl lsb
|
|
431 001752 001017 lsbtst: bne 2$ ;bypass if /ds
|
|
432 001754 000404 br 1$
|
|
433
|
|
434 001756 032767 000000G 000000G lsbset: bit #ed.lsb,edmask ;in lsb over-ride?
|
|
435 001764 001412 beq 2$ ; yes
|
|
436 001766 005267 000024' 1$: inc lsyflg ;flag new block
|
|
437 001772 016767 000000G 000030' mov clcloc,lsybas ;set new base
|
|
438 002000 042767 000001 000030' bic #1,lsybas ;be sure its even
|
|
439 002006 005067 000032' clr lsgbas ;clear generated symbol base
|
|
440 002012 2$: return
|
|
1 002012 000207 rts pc
|
|
441
|
|
442 .dsabl lsb
|
|
443
|
|
444 .endc
|
|
444
|
|
445 .sbttl utilities
|
|
446
|
|
447 setxpr: ;set expression registers
|
|
448 002014 012701 000000G mov #symbol,r1
|
|
449 002020 012702 000000G mov #sector,r2
|
|
450 002024 012703 000000G mov #mode,r3
|
|
451 002030 012704 000000G mov #value,r4
|
|
452 002034 return
|
|
1 002034 000207 rts pc
|
|
453 .end
|
|
453
|
|
7
|
|
|
|
|
|
Symbol table
|
|
|
|
$TIMDF = 000007 BSSFLG = 000004 ED.LSB = ****** G IFNDF 001016RG 002 MK.SYM = 000001
|
|
. 002036R 002 CATTRS = 000170 EDMASK = ****** G IFNE 001016RG 002 MODE = ****** G
|
|
..Z = ****** G CDRSAV = ****** G ENDC 001122RG 002 IFNZ 001016RG 002 MSBMRP = ****** G
|
|
..ZBUF = ****** G CH.ADD = 000053 ENDCX 001140R 002 IFOER1 001254R 002 OVRFLG = 000020
|
|
1$10 001766R L 002 CH.AND = 000046 ENDFLG 000000RG 009 IFOERR 001174R 002 PAGEXT 000010RG 009
|
|
1$3 000756R L 002 CH.BSL = 000134 ERN12 = ****** G IFT 001064RG 002 PAGNUM = ****** G
|
|
1$4 001164R L 002 CH.COL = 000072 ERN14 = ****** G IFTF 001100RG 002 PASS = ****** G
|
|
1$8 001522R L 002 CH.COM = 000054 ERN140 = ****** G IFZ 001016RG 002 PATTRS = 000050
|
|
1$9 001644R L 002 CH.DIV = 000057 ERN15 = ****** G IIF 000734RG 002 PDPV45 = 000000
|
|
14$1 000212R L 002 CH.DOL = 000044 ERN16 = ****** G INSFLG = 000002 REGFLG = 000001
|
|
16$1 000224R L 002 CH.DOT = 000056 ERN17 = ****** G IO.EOF = ****** G RELFLG = 000040
|
|
2$0 000056R L 002 CH.EQU = 000075 ERN18 = ****** G IO.EOI = ****** G RSX11D = 000000
|
|
2$10 002012R L 002 CH.HSH = 000043 ERR.A = ****** G IO.ERR = ****** G SAVREG = ****** G
|
|
2$3 001002R L 002 CH.IND = 000100 ERR.E = ****** G LBLEND = ****** G SCANW = ****** G
|
|
2$4 001172R L 002 CH.IOR = 000041 ERR.L = ****** G LBLFLG = 000002 SDEBUG = ****** G
|
|
2$8 001560R L 002 CH.LAB = 000074 ERR.O = ****** G LC.CND = ****** G SEARCH = ****** G
|
|
2$9 001662R L 002 CH.LP = 000050 ERR.T = ****** G LCBEGL = ****** G SECROL = ****** G
|
|
20$1 000304R L 002 CH.MUL = 000052 ERR.XX = ****** G LCENDL = ****** G SECTOR = ****** G
|
|
22$1 000356R L 002 CH.PCT = 000045 ERRBTS = ****** G LCFLAG = ****** G SEQEND 000012RG 009
|
|
23$1 000350R L 002 CH.QM = 000077 ERRREF = ****** G LCMASK = ****** G SETNB = ****** G
|
|
24$1 000364R L 002 CH.QTM = 000042 FF = 000014 LET.A = 000101 SETSEC 000676RG 002
|
|
25$1 000372R L 002 CH.RAB = 000076 FFCNT 000004RG 009 LET.B = 000102 SETXPR 002014RG 002
|
|
3$3 001012R L 002 CH.RP = 000051 FILELN = ****** G LET.C = 000103 SHRFLG = 000001
|
|
3$8 001570R L 002 CH.SMC = 000073 FLAGS = ****** G LET.D = 000104 SMLCHN = ****** G
|
|
30$1 000406R L 002 CH.SUB = 000055 FT.ID = 000001 LET.E = 000105 SMLLVL = ****** G
|
|
32$1 000424R L 002 CH.UAR = 000136 FT.UNX = 000001 LET.F = 000106 SPACE = 000040
|
|
32768$1 000274R L 002 CH.XCL = 000047 GETCHR = ****** G LET.G = 000107 SRCCHN = ****** G
|
|
32768$5 001244R L 002 CHRPNT = ****** G GETIC = ****** G LET.O = 000117 STMNT = ****** G
|
|
32768$6 001324R L 002 CLCFGS = ****** G GETL01 000004R 002 LET.P = 000120 SYMBOL = ****** G
|
|
32768$7 001450R L 002 CLCLOC = ****** G GETL10 000136R 002 LET.R = 000122 SYMROL = ****** G
|
|
32768$9 001732R L 002 CLCMAX = ****** G GETL40 000614R 002 LET.Z = 000132 TAB = 000011
|
|
32769$1 000514R L 002 CLCNAM = ****** G GETLIN 000000RG 002 LF = 000012 TCON 001334R 002
|
|
32770$1 000602R L 002 CLCSEC = ****** G GETLTB 000002R 005 LINBUF = ****** G TCON8 001456R 002
|
|
34$1 000436R L 002 CNDLVL 000020R 009 GETMCH = ****** G LINEND = ****** G TCONDF 001514R 002
|
|
35$1 000524R L 002 CNDMEX 000022RG 009 GETNB = ****** G LINNUM = ****** G TCONEQ 001462R 002
|
|
36$1 000610R L 002 CNDMSK 000016R 009 GETSYM = ****** G LPPCNT 000002RG 009 TCONF 001340R 002
|
|
4$0 000112R L 002 CNDROL = ****** G GLBFLG = 000100 LSBSET 001756RG 002 TCONFA 001470R 002
|
|
4$8 001610R L 002 CNDWRD 000014RG 009 GSARG = ****** G LSBTST 001752R 002 TCONGT 001474R 002
|
|
41$2 000644R L 002 CPOPJ = ****** G IF 001032RG 002 LSGBAS 000032RG 009 TCONLT 001504R 002
|
|
42$2 000666R L 002 CR = 000015 IF1 001036R 002 LSRCH 001626RG 002 TCONTR 001472R 002
|
|
5$8 001616R L 002 CRFDEF = ****** G IFDF 001016RG 002 LSRCH3 001740R 002 TSTARG = ****** G
|
|
6$8 001624R L 002 CRFREF = ****** G IFEQ 001016RG 002 LSYBAS 000030RG 009 U.FLAG = ****** G
|
|
7$7 001400R L 002 DEBUG = 000000 IFF 001072RG 002 LSYBKN 000026R 009 VALUE = ****** G
|
|
8$8 001556R L 002 DEFFLG = 000010 IFG 001016RG 002 LSYFLG 000024R 009 VT = 000013
|
|
AATTRS = 000130 DFGFLG = 000200 IFGE 001016RG 002 LSYROL = ****** G X = 000002
|
|
ABSEXP = ****** G DIG.0 = 000060 IFGT 001016RG 002 M.IDF = 000007 X40 = 000000
|
|
ARGCNT = ****** G DIG.9 = 000071 IFL 001016RG 002 MAC.ER = ****** G XCTLIN = ****** G
|
|
B.IDF = 000001 ED.CDR = ****** G IFLE 001016RG 002 MACDFN = ****** G XMIT0 = ****** G
|
|
BPMB = 000020 ED.LC = ****** G IFLT 001016RG 002 MDFFLG = 000004
|
|
|
|
|
|
Program sections:
|
|
|
|
. ABS. 000000 000 (RW,I,GBL,ABS,OVR,NOSAV)
|
|
000000 001 (RW,I,LCL,REL,CON,NOSAV)
|
|
.TEXT 002036 002 (RW,I,LCL,REL,CON,NOSAV)
|
|
.DATA 000000 003 (RW,I,LCL,REL,CON,NOSAV)
|
|
.BSS 000000 004 (RW,I,LCL,REL,CON,NOSAV)
|
|
DPURE 000006 005 (RW,I,LCL,REL,CON,NOSAV)
|
|
MIXED 000000 006 (RW,I,LCL,REL,CON,NOSAV)
|
|
ERRMES 000000 007 (RW,I,LCL,REL,CON,NOSAV)
|
|
IMPURE 000000 008 (RW,I,LCL,REL,CON,NOSAV)
|
|
IMPPAS 000034 009 (RW,I,LCL,REL,CON,NOSAV)
|
|
IMPLIN 000000 010 (RW,I,LCL,REL,CON,NOSAV)
|
|
SWTSEC 000000 011 (RW,I,LCL,REL,CON,NOSAV)
|
|
CNDSEC 000060 012 (RW,I,LCL,REL,CON,NOSAV)
|
|
CRFSEC 000000 013 (RW,I,LCL,REL,CON,NOSAV)
|
|
EDTSEC 000014 014 (RW,I,LCL,REL,CON,NOSAV)
|
|
LCTSEC 000000 015 (RW,I,LCL,REL,CON,NOSAV)
|
|
PSASEC 000000 016 (RW,I,LCL,REL,CON,NOSAV)
|
|
PSTSEC 000000 017 (RW,I,LCL,REL,CON,NOSAV)
|
|
ROLBAS 000000 018 (RW,I,LCL,REL,CON,NOSAV)
|
|
ROLSIZ 000000 019 (RW,I,LCL,REL,CON,NOSAV)
|
|
ROLTOP 000000 020 (RW,I,LCL,REL,CON,NOSAV)
|
|
XPCOR 000000 021 (RW,I,LCL,REL,CON,NOSAV)
|