mirror of
https://github.com/open-simh/simtools.git
synced 2026-02-07 08:48:12 +00:00
4715 lines
257 KiB
Plaintext
4715 lines
257 KiB
Plaintext
1 ;;;; Wrapper for 2.11BSD/m11/exec.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/exec.m11"
|
|
1
|
|
2 ; @(#)exec.m11 1.2 3/26/82
|
|
3 ;this is the key to the bob bowering assembler that has been modified for
|
|
4 ;unix by brent byer
|
|
5 ;symbols for ddt have been added by forrest howard, who also fixed various
|
|
6 ;bugs
|
|
7 .title exec - assembler exec
|
|
8
|
|
9 .ident /01aug5/
|
|
10
|
|
11 .mcall (at)ndebug,sdebug
|
|
12 .mcall (at)jeq,jne
|
|
13 .mcall (at)always,ct.mne,xmit,putkb,putkbl,putlp,genswt
|
|
14 .mcall (at)genedt
|
|
15 .mcall (at)error,scanw
|
|
16 .mcall (at)st.flg
|
|
17 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/exec.m11:17->ALWAYS:44: ***ERROR Unknown flag SHR given to .PSECT directive
|
|
44 .psect .text con, shr, gbl,ins
|
|
./2.11BSD/m11/exec.m11:17->ALWAYS:45: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
45 .psect .data con, dat, prv, gbl
|
|
./2.11BSD/m11/exec.m11:17->ALWAYS:46: ***ERROR Unknown flag BSS given to .PSECT directive
|
|
46 .psect .bss con, bss, gbl
|
|
47
|
|
./2.11BSD/m11/exec.m11:17->ALWAYS:48: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
48 .psect dpure con, dat, prv, gbl
|
|
./2.11BSD/m11/exec.m11:17->ALWAYS:49: ***ERROR Unknown flag PRV given to .PSECT directive
|
|
49 .psect mixed con, prv, gbl
|
|
./2.11BSD/m11/exec.m11:17->ALWAYS:50: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
50 .psect errmes con, dat, prv, gbl
|
|
./2.11BSD/m11/exec.m11:17->ALWAYS:51: ***ERROR Unknown flag BSS given to .PSECT directive
|
|
51 .psect impure con, bss, gbl
|
|
./2.11BSD/m11/exec.m11:17->ALWAYS:52: ***ERROR Unknown flag BSS given to .PSECT directive
|
|
52 .psect imppas con, bss, gbl
|
|
./2.11BSD/m11/exec.m11:17->ALWAYS:53: ***ERROR Unknown flag BSS given to .PSECT directive
|
|
53 .psect implin con, bss, gbl
|
|
./2.11BSD/m11/exec.m11:17->ALWAYS:54: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
54 .psect swtsec con, dat, prv, gbl ; unix command line flags
|
|
./2.11BSD/m11/exec.m11:17->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/exec.m11:17->ALWAYS:56: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
56 .psect crfsec con, dat, prv, gbl ; args for -cr flag
|
|
./2.11BSD/m11/exec.m11:17->ALWAYS:57: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
57 .psect edtsec con, dat, prv, gbl ; args for .enabl
|
|
./2.11BSD/m11/exec.m11:17->ALWAYS:58: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
58 .psect lctsec con, dat, prv, gbl ; args for .list
|
|
./2.11BSD/m11/exec.m11:17->ALWAYS:59: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
59 .psect psasec con, dat, prv, gbl
|
|
./2.11BSD/m11/exec.m11:17->ALWAYS:60: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
60 .psect pstsec con, dat, prv, gbl
|
|
./2.11BSD/m11/exec.m11:17->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/exec.m11:17->ALWAYS:62: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
62 .psect rolsiz con, dat, prv, gbl ; sizes of table entries
|
|
./2.11BSD/m11/exec.m11:17->ALWAYS:63: ***ERROR Unknown flag DAT given to .PSECT directive
|
|
63 .psect roltop con, dat, prv, gbl ; tops of tables
|
|
./2.11BSD/m11/exec.m11:17->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
|
|
18 000000 ct.mne
|
|
1 .globl cttbl
|
|
2 000000 ct.eol = 000 ; eol
|
|
3 000001 ct.com = 001 ; comma
|
|
4 000002 ct.tab = 002 ; tab
|
|
5 000004 ct.sp = 004 ; space
|
|
6 000010 ct.pcx = 010 ; printing character
|
|
7 000020 ct.num = 020 ; numeric
|
|
8 000040 ct.alp = 040 ; alpha, dot, dollar
|
|
9 000100 ct.lc = 100 ; lower case alpha
|
|
10 000200 ct.smc = 200 ; semi-colon (sign bit)
|
|
11
|
|
12 000271 ct.pc = ct.com!ct.smc!ct.pcx!ct.num!ct.alp
|
|
13 .macro ct.mne
|
|
14 .endm ct.mne
|
|
19 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
|
|
20
|
|
21
|
|
22 .macro strcpy from,to ,?loop
|
|
23 mov r0,-(sp)
|
|
24 mov r1,-(sp)
|
|
25 mov from,r0
|
|
26 mov to,r1
|
|
27 loop:
|
|
28 movb (r0)+,(r1)+
|
|
29 bne loop
|
|
30
|
|
31 mov (sp)+,r1
|
|
32 mov (sp)+,r0
|
|
33 .endm
|
|
33
|
|
34 .sbttl assembly options
|
|
35
|
|
36 ;the following macro causes assembly options to be
|
|
37 ;printed on the loader map and any implications
|
|
38 ;(second argument) to be defined. options are
|
|
39 ;selected by equating them to zero.
|
|
40
|
|
41 .macro ldrmap mne,implies
|
|
42 .if df mne
|
|
43 .list
|
|
44 .globl mne
|
|
45 .nlist
|
|
46 .irp x,<implies>
|
|
47 .globl x
|
|
48 x= 0 ;invoke implications
|
|
49 .endm
|
|
50 .endc
|
|
51 .endm ldrmap
|
|
52
|
|
53
|
|
54 ;the following group enables functions
|
|
55
|
|
56 000000 ldrmap rsx11d,<dflgtb> ;rsx11d "features"
|
|
1 .if df rsx11d
|
|
2 .list
|
|
3 .globl rsx11d
|
|
4 .nlist
|
|
5 .irp x,<dflgtb>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
1 .globl dflgtb
|
|
2 000000 dflgtb= 0 ;invoke implications
|
|
9 .endc
|
|
57
|
|
58 000000 ldrmap debug ;debug version
|
|
1 .if df debug
|
|
2 .list
|
|
3 .globl debug
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
59 000000 ldrmap pdpv45 ;pdp-11/45 instructions
|
|
1 .if df pdpv45
|
|
2 .list
|
|
3 .globl pdpv45
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
60 000000 ldrmap id.spc ;i- & d-space capability for unix
|
|
1 .if df id.spc
|
|
2 .list
|
|
3 .globl id.spc
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
61 000000 ldrmap dblbuf ;tran'd input
|
|
1 .if df dblbuf
|
|
2 .list
|
|
3 .globl dblbuf
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
62
|
|
63 ;the following group disables functions
|
|
64
|
|
65 000000 .iif df x40&x45, xfltg= 0
|
|
66
|
|
67 000000 ldrmap xbaw ;no bells and whistles
|
|
1 .if df xbaw
|
|
2 .list
|
|
3 .globl xbaw
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
68 000000 ldrmap xswit,xcref ;no switches
|
|
1 .if df xswit
|
|
2 .list
|
|
3 .globl xswit
|
|
4 .nlist
|
|
5 .irp x,<xcref>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
69 000000 ldrmap xrel,xedpic ;abs output only
|
|
1 .if df xrel
|
|
2 .list
|
|
3 .globl xrel
|
|
4 .nlist
|
|
5 .irp x,<xedpic>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
70 000000 ldrmap xmacro,xsml ;all generated code (macro, rept, etc.)
|
|
1 .if df xmacro
|
|
2 .list
|
|
3 .globl xmacro
|
|
4 .nlist
|
|
5 .irp x,<xsml>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
71 000000 ldrmap xsml ;system macros
|
|
1 .if df xsml
|
|
2 .list
|
|
3 .globl xsml
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
72 000000 ldrmap x40 ;pdp-11/40 features
|
|
1 .if df x40
|
|
2 .list
|
|
3 .globl x40
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
73 000000 ldrmap x45 ;pdp-11/45 features
|
|
1 .if df x45
|
|
2 .list
|
|
3 .globl x45
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
74 000000 ldrmap xfltg,xedfpt ;floating point evaluation
|
|
1 .if df xfltg
|
|
2 .list
|
|
3 .globl xfltg
|
|
4 .nlist
|
|
5 .irp x,<xedfpt>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
1 .globl xedfpt
|
|
2 000000 xedfpt= 0 ;invoke implications
|
|
9 .endc
|
|
75 000000 ldrmap xedabs ;ed.abs
|
|
1 .if df xedabs
|
|
2 .list
|
|
3 .globl xedabs
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
76 000000 ldrmap xedama ;ed.ama
|
|
1 .if df xedama
|
|
2 .list
|
|
3 .globl xedama
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
77 000000 ldrmap xedpic ;ed.pic
|
|
1 .if df xedpic
|
|
2 .list
|
|
3 .globl xedpic
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
78 000000 ldrmap xedfpt ;ed.fpt
|
|
1 .if df xedfpt
|
|
2 .list
|
|
3 .globl xedfpt
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
79 000000 ldrmap xedlsb ;ed.lsb
|
|
1 .if df xedlsb
|
|
2 .list
|
|
3 .globl xedlsb
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
80 000000 ldrmap xedpnc ;ed.pnc
|
|
1 .if df xedpnc
|
|
2 .list
|
|
3 .globl xedpnc
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
81 000000 ldrmap xedlc ;ed.lc
|
|
1 .if df xedlc
|
|
2 .list
|
|
3 .globl xedlc
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
82 000000 ldrmap xedcdr ;card reader format
|
|
1 .if df xedcdr
|
|
2 .list
|
|
3 .globl xedcdr
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
83 000000 ldrmap xzerr ;"z" errors
|
|
1 .if df xzerr
|
|
2 .list
|
|
3 .globl xzerr
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
84 000000 ldrmap xlcttm ;no lpt listing format
|
|
1 .if df xlcttm
|
|
2 .list
|
|
3 .globl xlcttm
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
85 000000 ldrmap xlcseq ;sequence numbers
|
|
1 .if df xlcseq
|
|
2 .list
|
|
3 .globl xlcseq
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
86 000000 ldrmap xtime ;no time & date on header
|
|
1 .if df xtime
|
|
2 .list
|
|
3 .globl xtime
|
|
4 .nlist
|
|
5 .irp x,<>
|
|
6 .globl x
|
|
7 x= 0 ;invoke implications
|
|
8 .endm
|
|
9 .endc
|
|
86
|
|
87 .sbttl globals
|
|
88
|
|
89 ;globals defined in assembler
|
|
90
|
|
91 .globl srchi
|
|
92 .globl prop1, endp1, prop2, endp2
|
|
93 .globl bksiz
|
|
94 .globl symlp, symhp
|
|
95 .globl setlc, seted
|
|
96 .globl uc.set, um.set
|
|
97
|
|
98
|
|
99 .globl pass
|
|
100
|
|
101 .globl putkb, putkbl, putlp
|
|
102
|
|
103 .globl dnc, movbyt, savreg, xmit0
|
|
104
|
|
105 .globl linbuf, errcnt, openo, openc
|
|
106 .globl chrpnt, prosw, absexp
|
|
107
|
|
108 .globl xctpas
|
|
109
|
|
110
|
|
111 ;globals defined in mcexec
|
|
112
|
|
113 .globl pagnum, linnum
|
|
114 .globl inicor, iargv
|
|
115
|
|
116 .if ndf xtime
|
|
117 .globl dattim
|
|
118 .endc
|
|
119 .if ndf xsml
|
|
120 .globl finsml, inisml, smlnam, smlfil
|
|
121 .endc
|
|
122 .globl getic, hdrttl, putoc, getsrc
|
|
123 .globl io.eof, io.eoi, io.tty, io.err
|
|
124
|
|
125 .globl ioftbl, cnttbl, buftbl, ioltbl, chrtbl
|
|
126 .globl exttbl, bintbl, lstflg, chntbl
|
|
127 .globl $wrsys, $wrbfp, $wrcnt, $brksy, $brkad
|
|
128
|
|
129 .globl symovf, macovf
|
|
130
|
|
131 .globl errrol,crfrol
|
|
132 .globl xctprg
|
|
133 000001 errrol= 1
|
|
133
|
|
134 .mcall (at)param
|
|
135
|
|
136 .globl $creat, $open, $close, $exit, $read, $write, $sbrk
|
|
137 .globl $seek, $gettod, $fork, $wait, $execv
|
|
138
|
|
139 ;init sectors
|
|
140
|
|
141
|
|
142 000000 entsec implin
|
|
1 000000 .psect implin con
|
|
143 000000 .blkw
|
|
144 000002 xitsec
|
|
1 000002 entsec .text
|
|
1 000000 .psect .text con
|
|
144
|
|
145 .sbttl mcioch - i/o channel assignments
|
|
146
|
|
147 .macro genchn zchan,zlnk,zbuf,ztype,zext,zlen
|
|
148 setchn cmo, cmo, cmo, 0, ,80.
|
|
149 setchn src, src, src, 0, m11, 132.
|
|
150 setchn lst, lst, lst, , lst, 512.
|
|
151 setchn obj, obj, obj, 1, obj, 42.
|
|
152 .if ndf xsml
|
|
153 setchn sml, sml, sml, 0, sml, 80.
|
|
154 .endc
|
|
155 .if ndf xcref
|
|
156 setchn crf, crf, crf, , xrf, 512.
|
|
157 .endc
|
|
158 .endm genchn
|
|
159
|
|
160 .macro setchn zchan,zlnk,zbuf,ztype,zext,zlen
|
|
161 .if nb <zlen>
|
|
162 param zbuf'len, zlen
|
|
163 .endc
|
|
164 .endm
|
|
165
|
|
166 000000 genchn
|
|
1 000000 setchn cmo, cmo, cmo, 0, ,80.
|
|
1 .if nb <80.>
|
|
2 000000 param cmolen, 80.
|
|
1 .iif ndf cmolen, cmolen= 80.
|
|
2 .list
|
|
3 000120 cmolen= cmolen
|
|
4 .nlist
|
|
3 .endc
|
|
2 000000 setchn src, src, src, 0, m11, 132.
|
|
1 .if nb <132.>
|
|
2 000000 param srclen, 132.
|
|
1 .iif ndf srclen, srclen= 132.
|
|
2 .list
|
|
3 000204 srclen= srclen
|
|
4 .nlist
|
|
3 .endc
|
|
3 000000 setchn lst, lst, lst, , lst, 512.
|
|
1 .if nb <512.>
|
|
2 000000 param lstlen, 512.
|
|
1 .iif ndf lstlen, lstlen= 512.
|
|
2 .list
|
|
3 001000 lstlen= lstlen
|
|
4 .nlist
|
|
3 .endc
|
|
4 000000 setchn obj, obj, obj, 1, obj, 42.
|
|
1 .if nb <42.>
|
|
2 000000 param objlen, 42.
|
|
1 .iif ndf objlen, objlen= 42.
|
|
2 .list
|
|
3 000052 objlen= objlen
|
|
4 .nlist
|
|
3 .endc
|
|
5 .if ndf xsml
|
|
6 000000 setchn sml, sml, sml, 0, sml, 80.
|
|
1 .if nb <80.>
|
|
2 000000 param smllen, 80.
|
|
1 .iif ndf smllen, smllen= 80.
|
|
2 .list
|
|
3 000120 smllen= smllen
|
|
4 .nlist
|
|
3 .endc
|
|
7 .endc
|
|
8 .if ndf xcref
|
|
9 000000 setchn crf, crf, crf, , xrf, 512.
|
|
1 .if nb <512.>
|
|
2 000000 param crflen, 512.
|
|
1 .iif ndf crflen, crflen= 512.
|
|
2 .list
|
|
3 001000 crflen= crflen
|
|
4 .nlist
|
|
3 .endc
|
|
10 .endc
|
|
167
|
|
168 .globl objlen
|
|
169
|
|
170 000000 tmpcnt= 0
|
|
171 .macro setchn zchan,zlnk,zbuf,ztype,zext,zlen
|
|
172 .list
|
|
173 zchan'chn= tmpcnt
|
|
174 .nlist
|
|
175 .globl zchan'chn
|
|
176 tmpcnt= tmpcnt+2
|
|
177 .endm
|
|
178
|
|
179 000000 genchn
|
|
1 000000 setchn cmo, cmo, cmo, 0, ,80.
|
|
1 .list
|
|
2 000000 cmochn= tmpcnt
|
|
3 .nlist
|
|
4 .globl cmochn
|
|
5 000002 tmpcnt= tmpcnt+2
|
|
2 000000 setchn src, src, src, 0, m11, 132.
|
|
1 .list
|
|
2 000002 srcchn= tmpcnt
|
|
3 .nlist
|
|
4 .globl srcchn
|
|
5 000004 tmpcnt= tmpcnt+2
|
|
3 000000 setchn lst, lst, lst, , lst, 512.
|
|
1 .list
|
|
2 000004 lstchn= tmpcnt
|
|
3 .nlist
|
|
4 .globl lstchn
|
|
5 000006 tmpcnt= tmpcnt+2
|
|
4 000000 setchn obj, obj, obj, 1, obj, 42.
|
|
1 .list
|
|
2 000006 objchn= tmpcnt
|
|
3 .nlist
|
|
4 .globl objchn
|
|
5 000010 tmpcnt= tmpcnt+2
|
|
5 .if ndf xsml
|
|
6 000000 setchn sml, sml, sml, 0, sml, 80.
|
|
1 .list
|
|
2 000010 smlchn= tmpcnt
|
|
3 .nlist
|
|
4 .globl smlchn
|
|
5 000012 tmpcnt= tmpcnt+2
|
|
7 .endc
|
|
8 .if ndf xcref
|
|
9 000000 setchn crf, crf, crf, , xrf, 512.
|
|
1 .list
|
|
2 000012 crfchn= tmpcnt
|
|
3 .nlist
|
|
4 .globl crfchn
|
|
5 000014 tmpcnt= tmpcnt+2
|
|
10 .endc
|
|
180
|
|
181 000014 maxchn= tmpcnt ;just to preserve the count
|
|
181
|
|
182 .macro serror xxx ; was: .macro serror number,message
|
|
183 mov xxx,r0 ; was: jsr r0,serror
|
|
184 ; was: .asciz \message\
|
|
185 jmp serror ; new: no return
|
|
186 ;.even
|
|
187 .endm serror
|
|
188
|
|
189 .macro .asclc, str
|
|
190 .nlist
|
|
191
|
|
192 .irpc x, ^%str%
|
|
193
|
|
194 .if ge ''x-101
|
|
195 .if le ''x-132
|
|
196 .byte ''x+40
|
|
197 .iff
|
|
198 .byte ''x
|
|
199 .endc
|
|
200 .iff
|
|
201 .byte ''x
|
|
202 .endc
|
|
203
|
|
204 .endm
|
|
205
|
|
206 .byte 0
|
|
207
|
|
208 .list
|
|
209 .endm
|
|
209
|
|
210 .sbttl start of program
|
|
211
|
|
212 .globl start, fin
|
|
213
|
|
214
|
|
215 start: ;start of program
|
|
216 000000 012667 000002' mov (sp)+,iargc ;store arg. count
|
|
217 000004 010667 000004' mov sp,iargv ;store pointer to arg. vector
|
|
218 000010 005016 clr (sp)
|
|
219 000012 012702 000124' mov #dattim,r2 ;set date and time
|
|
220 000016 162706 000010 sub #8.,sp ;allocate a timeval on the stack
|
|
221 000022 010600 mov sp,r0
|
|
222 000024 005046 clr -(sp) ;we're not interested in the time zone
|
|
223 000026 010046 mov r0,-(sp) ;pointer to allocated timeval
|
|
224 000030 005746 tst -(sp) ;simulate return address stack spacing
|
|
225 000032 000000G $gettod
|
|
226 000034 062706 000006 add #6.,sp ;skip up to timeval
|
|
227 000040 012600 mov (sp)+,r0 ;snag tv_sec
|
|
228 000042 012601 mov (sp)+,r1
|
|
229 000044 022626 cmp (sp)+,(sp)+ ;toss tv_usec
|
|
230 000046 call cvtim ;convert to ascii
|
|
1 000046 004767 004206 jsr pc,cvtim
|
|
231
|
|
232 000052 call xctprg ;clean up core
|
|
1 000052 004767 000000G jsr pc,xctprg
|
|
233 000056 call inip0 ;output file processing
|
|
1 000056 004767 000254 jsr pc,inip0
|
|
234 000062 call inip1
|
|
1 000062 004767 001326 jsr pc,inip1
|
|
235 000066 call prop1 ;pass one
|
|
1 000066 004767 000000G jsr pc,prop1
|
|
236 000072 call finp1
|
|
1 000072 004767 001422 jsr pc,finp1
|
|
237 000076 call endp1 ;clean up
|
|
1 000076 004767 000000G jsr pc,endp1
|
|
238 000102 call inip2
|
|
1 000102 004767 001324 jsr pc,inip2
|
|
239 000106 call prop2 ;pass 2
|
|
1 000106 004767 000000G jsr pc,prop2
|
|
240 000112 call endp2
|
|
1 000112 004767 000000G jsr pc,endp2
|
|
241 000116 call setdn ;finished, control not returned
|
|
1 000116 004767 001726 jsr pc,setdn
|
|
242
|
|
243 000122 012700 000006 mov #objchn,r0
|
|
244 000126 call zwrite
|
|
1 000126 004767 003064 jsr pc,zwrite
|
|
245 000132 call zclose
|
|
1 000132 004767 003272 jsr pc,zclose
|
|
246
|
|
247 000136 012700 000004 mov #lstchn,r0 ;output any remaining listing
|
|
248 000142 call zwrite
|
|
1 000142 004767 003050 jsr pc,zwrite
|
|
249
|
|
250 .if ndf xcref
|
|
251 000146 016702 000740' mov crfpnt,r2
|
|
252 000152 001437 beq 9$
|
|
253 000154 012700 000012 mov #crfchn,r0
|
|
254 000160 call zwrite ;dump out any remaining output
|
|
1 000160 004767 003032 jsr pc,zwrite
|
|
255 000164 call zclose ;close cref tmp. file
|
|
1 000164 004767 003240 jsr pc,zclose
|
|
256 000170 012700 000004 mov #lstchn,r0
|
|
257 000174 005767 000100' tst ioftbl+lstchn
|
|
258 000200 001007 bne 81$
|
|
259 000202 016767 000250' 000242' mov cnttbl+crfchn,cnttbl+lstchn
|
|
260 ;set up to recycle (i hope)
|
|
261 000210 005267 000000' inc lstflg
|
|
262 000214 call openo
|
|
1 000214 004767 001312 jsr pc,openo
|
|
263 000220 012702 000004 81$: mov #lstchn,r2 ;set up name of listing file in linbuf
|
|
264 000224 call src.ap
|
|
1 000224 004767 001570 jsr pc,src.ap
|
|
265 ; execl("macxrf", "macxrf", "-flags", "fred.xrf", "fred.lst", 0);
|
|
266 ; meaning of flags arg:
|
|
267 ; "-" m11 invoked with -cr only: do the standard stuff
|
|
268 ; "-am.." other letters added as extra cr flags invoked.
|
|
269 ;
|
|
270 000230 012746 000074' mov #crefav,-(sp) ;cref will do the rest!!
|
|
271 000234 012746 000240' mov #crfrun,-(sp)
|
|
272 000240 005746 tst -(sp) ;simulate return address stack spacing
|
|
273 000242 000000G $execv
|
|
274 000244 062706 000006 add #6.,sp
|
|
275
|
|
276
|
|
277 000250 000422 br $$exit
|
|
278 .endc
|
|
279
|
|
280 000252 005767 000012' 9$: tst lpflag ;spooler requested?
|
|
281 000256 001417 beq $$exit ;no, leave
|
|
282
|
|
283 000260 012700 000004 mov #lstchn,r0 ;yes, close listing channel
|
|
284 000264 010002 mov r0,r2 ;copy for src.ap
|
|
285 000266 call zclose
|
|
1 000266 004767 003136 jsr pc,zclose
|
|
286 000272 call src.ap ;put name of lst file into linbuf
|
|
1 000272 004767 001522 jsr pc,src.ap
|
|
287 000276 012746 000000' mov #lpargs,-(sp) ;take it away, LPR!
|
|
288 000302 012746 000006' mov #lprrun,-(sp)
|
|
289 000306 005746 tst -(sp) ;simulate return address stack spacing
|
|
290 000310 000000G $execv
|
|
291 000312 062706 000006 add #6.,sp
|
|
292
|
|
293 000316 005000 $$exit: clr r0 ;leave r0 set corectly
|
|
294 000320 005767 000000G tst errcnt
|
|
295 000324 001401 beq 1$ ;no problems
|
|
296 000326 005200 inc r0 ;return 1
|
|
297 1$:
|
|
298 000330 010046 mov r0,-(sp) ;that's all, folks!
|
|
299 000332 005746 tst -(sp) ;simulate return address stack spacing
|
|
300 000334 000000G $exit
|
|
301
|
|
302
|
|
303
|
|
304 000336 entsec dpure
|
|
1 000000 .psect dpure con
|
|
305 000000 000006' lpargs: lprrun
|
|
306 000002 000000G linbuf
|
|
307 000004 000000 0
|
|
308
|
|
309 000006 lprrun: .asclc /usr/ucb/lpr
|
|
1 .nlist
|
|
2
|
|
3 .irpc x, ^%/usr/ucb/lpr%
|
|
4
|
|
5 .if ge ''x-101
|
|
6 .if le ''x-132
|
|
7 .byte ''x+40
|
|
8 .iff
|
|
9 .byte ''x
|
|
10 .endc
|
|
11 .iff
|
|
12 .byte ''x
|
|
13 .endc
|
|
14
|
|
15 .endm
|
|
1
|
|
2 177756 .if ge '/-101
|
|
3 .if le '/-132
|
|
4 .byte '/+40
|
|
5 .iff
|
|
6 .byte '/
|
|
7 .endc
|
|
8 .iff
|
|
9 000006 057 .byte '/
|
|
10 .endc
|
|
11
|
|
12
|
|
13 000064 .if ge 'u-101
|
|
14 000033 .if le 'u-132
|
|
15 .byte 'u+40
|
|
16 .iff
|
|
17 000007 165 .byte 'u
|
|
18 .endc
|
|
19 .iff
|
|
20 .byte 'u
|
|
21 .endc
|
|
22
|
|
23
|
|
24 000062 .if ge 's-101
|
|
25 000031 .if le 's-132
|
|
26 .byte 's+40
|
|
27 .iff
|
|
28 000010 163 .byte 's
|
|
29 .endc
|
|
30 .iff
|
|
31 .byte 's
|
|
32 .endc
|
|
33
|
|
34
|
|
35 000061 .if ge 'r-101
|
|
36 000030 .if le 'r-132
|
|
37 .byte 'r+40
|
|
38 .iff
|
|
39 000011 162 .byte 'r
|
|
40 .endc
|
|
41 .iff
|
|
42 .byte 'r
|
|
43 .endc
|
|
44
|
|
45
|
|
46 177756 .if ge '/-101
|
|
47 .if le '/-132
|
|
48 .byte '/+40
|
|
49 .iff
|
|
50 .byte '/
|
|
51 .endc
|
|
52 .iff
|
|
53 000012 057 .byte '/
|
|
54 .endc
|
|
55
|
|
56
|
|
57 000064 .if ge 'u-101
|
|
58 000033 .if le 'u-132
|
|
59 .byte 'u+40
|
|
60 .iff
|
|
61 000013 165 .byte 'u
|
|
62 .endc
|
|
63 .iff
|
|
64 .byte 'u
|
|
65 .endc
|
|
66
|
|
67
|
|
68 000042 .if ge 'c-101
|
|
69 000011 .if le 'c-132
|
|
70 .byte 'c+40
|
|
71 .iff
|
|
72 000014 143 .byte 'c
|
|
73 .endc
|
|
74 .iff
|
|
75 .byte 'c
|
|
76 .endc
|
|
77
|
|
78
|
|
79 000041 .if ge 'b-101
|
|
80 000010 .if le 'b-132
|
|
81 .byte 'b+40
|
|
82 .iff
|
|
83 000015 142 .byte 'b
|
|
84 .endc
|
|
85 .iff
|
|
86 .byte 'b
|
|
87 .endc
|
|
88
|
|
89
|
|
90 177756 .if ge '/-101
|
|
91 .if le '/-132
|
|
92 .byte '/+40
|
|
93 .iff
|
|
94 .byte '/
|
|
95 .endc
|
|
96 .iff
|
|
97 000016 057 .byte '/
|
|
98 .endc
|
|
99
|
|
100
|
|
101 000053 .if ge 'l-101
|
|
102 000022 .if le 'l-132
|
|
103 .byte 'l+40
|
|
104 .iff
|
|
105 000017 154 .byte 'l
|
|
106 .endc
|
|
107 .iff
|
|
108 .byte 'l
|
|
109 .endc
|
|
110
|
|
111
|
|
112 000057 .if ge 'p-101
|
|
113 000026 .if le 'p-132
|
|
114 .byte 'p+40
|
|
115 .iff
|
|
116 000020 160 .byte 'p
|
|
117 .endc
|
|
118 .iff
|
|
119 .byte 'p
|
|
120 .endc
|
|
121
|
|
122
|
|
123 000061 .if ge 'r-101
|
|
124 000030 .if le 'r-132
|
|
125 .byte 'r+40
|
|
126 .iff
|
|
127 000021 162 .byte 'r
|
|
128 .endc
|
|
129 .iff
|
|
130 .byte 'r
|
|
131 .endc
|
|
132
|
|
16
|
|
17 000022 000 .byte 0
|
|
18
|
|
19 .list
|
|
310 000023 000 .even
|
|
311
|
|
312
|
|
313
|
|
314 000024 entsec mixed
|
|
1 000000 .psect mixed con
|
|
315
|
|
316 000000 argc: .blkw 1
|
|
317 000002 iargc: .blkw 1
|
|
318 000004 iargv: .blkw 1
|
|
319 000006 argv: .blkw 1
|
|
320 000010 000000' symlp: <^pl xpcor>
|
|
321 000012 000000C symhp: <<<^ph xpcor>+63.>&^c63.>-2
|
|
322
|
|
323 000014 entsec impure
|
|
1 000000 .psect impure con
|
|
324
|
|
325 000000 lstflg: .blkw 1
|
|
326 000002 lttflg:: .blkw 1
|
|
327 000004 crfpnd: .blkw 1
|
|
328 000006 no.flg: .blkw 1
|
|
329 000010 u.flag:: .blkw 1 ; user wants UNIX style line numbers
|
|
330 000012 lpflag: .blkw 1
|
|
331 000014 mx.flg:: .blkw 1 ; if set, do macro expansion ONLY
|
|
332 000016 xx.flg:: .blkw 1 ; debug switch
|
|
333 000020 my.flg:: .blkw 1 ; and also show the pre-xpnd srce lines
|
|
334 000022 sx.flg:: .blkw 1 ; if set, generate more local syms syms
|
|
335 000024 pdp10:: .blkw 1 ; check for model dependencies in
|
|
336 ; the instruction set
|
|
337 000026 entsec mixed
|
|
1 000014 .psect mixed con
|
|
338 000014 crefil: .blkw 30 ; name of cref file: /fred.xrf/
|
|
339 000074 000240' crefav: .word crfrun
|
|
340 000076 000107' .word crflag+1
|
|
341 000100 000014' .word crefil
|
|
342 000102 000000G .word linbuf
|
|
343 000104 000000 .word 0
|
|
344 000106 055 055 crflag: .ascii /--/
|
|
345 000110 .blkw 5
|
|
346 000122 000110' crap: .word crflag+2
|
|
347
|
|
348 000124 xitsec
|
|
1 000124 entsec .text
|
|
1 000336 .psect .text con
|
|
348
|
|
349 .sbttl output file initialization
|
|
350
|
|
351 inip0: ;initialize things
|
|
352 000336 012700 000000 mov #cmochn,r0 ;set up cmo
|
|
353 000342 call zopen
|
|
1 000342 004767 002510 jsr pc,zopen
|
|
354 000346 012767 000001 000124' mov #1,chntbl+cmochn ;it is file handle #1
|
|
355 000354 call inip0z ;set up argc & argv
|
|
1 000354 004767 001110 jsr pc,inip0z
|
|
356 000360 005367 000000' 1$: dec argc ;any more arguments?
|
|
357 000364 002467 blt 9$ ;no, return
|
|
358 000366 016700 000006' mov argv,r0 ;yes, get pointer to next arg.
|
|
359 000372 012001 mov (r0)+,r1 ; into r1
|
|
360 000374 010067 000006' mov r0,argv ;store back new argv
|
|
361 000400 005701 tst r1
|
|
362 000402 001766 beq 1$ ;ignore null pointers (maybe, first one)
|
|
363 000404 122127 000055 cmpb (r1)+,#'- ;is switch indicated?
|
|
364 000410 001403 beq 3$ ;yes
|
|
365 000412 014067 000026' mov -(r0),srcnam ;no , last name will be prefix
|
|
366 000416 000760 br 1$
|
|
367 3$: ;here is hack for explicit name switch
|
|
368 000420 121127 000156 cmpb (r1),#'n
|
|
369 000424 001011 bne 33$
|
|
370 000426 126127 000001 000141 cmpb 1(r1),#'a
|
|
371 000434 001005 bne 33$
|
|
372 000436 062701 000003 add #3,r1 ;move past na:
|
|
373 000442 010167 000030' mov r1,esrcnam
|
|
374 000446 000744 br 1$
|
|
375 000450 012702 000000G 33$: mov #linbuf,r2 ;point to dest. for switch
|
|
376 000454 010203 mov r2,r3 ;make copy
|
|
377 000456 005022 clr (r2)+ ;zap initially
|
|
378 000460 010267 000000G mov r2,chrpnt ;copy pointer here for arg.
|
|
379 000464 112100 4$: movb (r1)+,r0 ;get char.
|
|
380 000466 call mk.up ;make upper case
|
|
1 000466 004767 000062 jsr pc,mk.up
|
|
381 000472 003406 ble 55$ ;null or :
|
|
382 000474 110023 movb r0,(r3)+ ;ok, store
|
|
383 000476 020302 cmp r3,r2 ;max. of 2 chars.
|
|
384 000500 103771 blo 4$
|
|
385 000502 112100 5$: movb (r1)+,r0 ;store rest of arg. in linbuf
|
|
386 000504 call mk.up ;check it and make upper case
|
|
1 000504 004767 000044 jsr pc,mk.up
|
|
387 000510 002002 55$: bge 6$ ;neg. indicates :
|
|
388 000512 012700 000040 mov #40,r0 ;replace with space
|
|
389 000516 110022 6$: movb r0,(r2)+
|
|
390 000520 001370 bne 5$ ;continue till null
|
|
391 000522 016700 000000G mov linbuf,r0 ;restore switch name into r0
|
|
392 000526 7$: call prosw ;process the switch
|
|
1 000526 004767 000000G jsr pc,prosw
|
|
393 000532 001312 bne 1$ ;continue if no error
|
|
394 000534 8$: serror #swcerr
|
|
1 000534 012700 000076' mov #swcerr,r0 ; was: jsr r0,serror
|
|
2 ; was: .asciz \message\
|
|
3 000540 000167 001372 jmp serror ; new: no return
|
|
4 ;.even
|
|
395
|
|
396 9$:
|
|
397 000544 005767 000026' 19$: tst srcnam ;must be at least one filename
|
|
398 000550 001662 beq $$exit ;or we are just a no-op.
|
|
399 000552 return
|
|
1 000552 000207 rts pc
|
|
400
|
|
401 .globl cttbl ; defined in misc.m11
|
|
402
|
|
403 mk.up:
|
|
404 000554 042700 177600 bic #^c177,r0
|
|
405 000560 122760 000100 000000G cmpb #ct.lc,cttbl(r0)
|
|
406 000566 001002 bne 1$ ; if lower, make upper
|
|
407 000570 162700 000040 sub #40,r0
|
|
408 000574 122700 000072 1$: cmpb #':,r0 ; if input is a colon,
|
|
409 000600 001001 bne 2$
|
|
410 000602 005400 neg r0 ; return MINUS COLON !!!
|
|
411 000604 005700 2$: tst r0 ; else return input
|
|
412 000606 return
|
|
1 000606 000207 rts pc
|
|
413
|
|
414 000610 entsec impure
|
|
1 000026 .psect impure con
|
|
415 000026 srcnam: .blkw 1
|
|
416 000030 esrcnam: .blkw 1
|
|
417 000032 xitsec
|
|
1 000032 entsec .text
|
|
1 000610 .psect .text con
|
|
417
|
|
418 000610 genswt no,no.set
|
|
1 000610 entsec swtsec
|
|
1 000000 .psect swtsec con
|
|
2 32768$: .irpc x,no
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000015 .if ge 'n-141
|
|
2 177764 .if le 'n-172
|
|
3 000000 116 .byte 'n-40
|
|
4 .iff
|
|
5 .byte 'n
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 'n
|
|
9 .endc
|
|
10 000016 .if ge 'o-141
|
|
11 177765 .if le 'o-172
|
|
12 000001 117 .byte 'o-40
|
|
13 .iff
|
|
14 .byte 'o
|
|
15 .endc
|
|
16 .iff
|
|
17 .byte 'o
|
|
18 .endc
|
|
13 000000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000002 000610' .word no.set
|
|
15 000004 xitsec
|
|
1 000004 entsec .text
|
|
1 000610 .psect .text con
|
|
419 000610 005267 000006' no.set: inc no.flg ;indicate no object output
|
|
420 000614 return
|
|
1 000614 000207 rts pc
|
|
421
|
|
422 000616 genswt uc,uc.set ; revert to bad old DEC upper case rules
|
|
1 000616 entsec swtsec
|
|
1 000004 .psect swtsec con
|
|
2 32768$: .irpc x,uc
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000024 .if ge 'u-141
|
|
2 177773 .if le 'u-172
|
|
3 000004 125 .byte 'u-40
|
|
4 .iff
|
|
5 .byte 'u
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 'u
|
|
9 .endc
|
|
10 000002 .if ge 'c-141
|
|
11 177751 .if le 'c-172
|
|
12 000005 103 .byte 'c-40
|
|
13 .iff
|
|
14 .byte 'c
|
|
15 .endc
|
|
16 .iff
|
|
17 .byte 'c
|
|
18 .endc
|
|
13 000000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000006 000000G .word uc.set
|
|
15 000010 xitsec
|
|
1 000010 entsec .text
|
|
1 000616 .psect .text con
|
|
423 000616 genswt um,um.set ; revert to bad old Harvard upper case rules
|
|
1 000616 entsec swtsec
|
|
1 000010 .psect swtsec con
|
|
2 32768$: .irpc x,um
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000024 .if ge 'u-141
|
|
2 177773 .if le 'u-172
|
|
3 000010 125 .byte 'u-40
|
|
4 .iff
|
|
5 .byte 'u
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 'u
|
|
9 .endc
|
|
10 000014 .if ge 'm-141
|
|
11 177763 .if le 'm-172
|
|
12 000011 115 .byte 'm-40
|
|
13 .iff
|
|
14 .byte 'm
|
|
15 .endc
|
|
16 .iff
|
|
17 .byte 'm
|
|
18 .endc
|
|
13 000000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000012 000000G .word um.set
|
|
15 000014 xitsec
|
|
1 000014 entsec .text
|
|
1 000616 .psect .text con
|
|
424
|
|
425 000616 genswt sx,sx.set
|
|
1 000616 entsec swtsec
|
|
1 000014 .psect swtsec con
|
|
2 32768$: .irpc x,sx
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000022 .if ge 's-141
|
|
2 177771 .if le 's-172
|
|
3 000014 123 .byte 's-40
|
|
4 .iff
|
|
5 .byte 's
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 's
|
|
9 .endc
|
|
10 000027 .if ge 'x-141
|
|
11 177776 .if le 'x-172
|
|
12 000015 130 .byte 'x-40
|
|
13 .iff
|
|
14 .byte 'x
|
|
15 .endc
|
|
16 .iff
|
|
17 .byte 'x
|
|
18 .endc
|
|
13 000000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000016 000616' .word sx.set
|
|
15 000020 xitsec
|
|
1 000020 entsec .text
|
|
1 000616 .psect .text con
|
|
426 000616 005267 000022' sx.set: inc sx.flg
|
|
427 000622 return
|
|
1 000622 000207 rts pc
|
|
428
|
|
429 000624 genswt u,u.set
|
|
1 000624 entsec swtsec
|
|
1 000020 .psect swtsec con
|
|
2 32768$: .irpc x,u
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000024 .if ge 'u-141
|
|
2 177773 .if le 'u-172
|
|
3 000020 125 .byte 'u-40
|
|
4 .iff
|
|
5 .byte 'u
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 'u
|
|
9 .endc
|
|
13 000001 000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000022 000624' .word u.set
|
|
15 000024 xitsec
|
|
1 000024 entsec .text
|
|
1 000624 .psect .text con
|
|
430
|
|
431 000624 005267 000010' u.set: inc u.flag
|
|
432 000630 return
|
|
1 000630 000207 rts pc
|
|
433 000632 genswt xx,xx.set
|
|
1 000632 entsec swtsec
|
|
1 000024 .psect swtsec con
|
|
2 32768$: .irpc x,xx
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000027 .if ge 'x-141
|
|
2 177776 .if le 'x-172
|
|
3 000024 130 .byte 'x-40
|
|
4 .iff
|
|
5 .byte 'x
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 'x
|
|
9 .endc
|
|
10 000027 .if ge 'x-141
|
|
11 177776 .if le 'x-172
|
|
12 000025 130 .byte 'x-40
|
|
13 .iff
|
|
14 .byte 'x
|
|
15 .endc
|
|
16 .iff
|
|
17 .byte 'x
|
|
18 .endc
|
|
13 000000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000026 000632' .word xx.set
|
|
15 000030 xitsec
|
|
1 000030 entsec .text
|
|
1 000632 .psect .text con
|
|
434 000632 005267 000016' xx.set: inc xx.flg
|
|
435 000636 return
|
|
1 000636 000207 rts pc
|
|
436 000640 genswt mx,mx.set
|
|
1 000640 entsec swtsec
|
|
1 000030 .psect swtsec con
|
|
2 32768$: .irpc x,mx
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000014 .if ge 'm-141
|
|
2 177763 .if le 'm-172
|
|
3 000030 115 .byte 'm-40
|
|
4 .iff
|
|
5 .byte 'm
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 'm
|
|
9 .endc
|
|
10 000027 .if ge 'x-141
|
|
11 177776 .if le 'x-172
|
|
12 000031 130 .byte 'x-40
|
|
13 .iff
|
|
14 .byte 'x
|
|
15 .endc
|
|
16 .iff
|
|
17 .byte 'x
|
|
18 .endc
|
|
13 000000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000032 000640' .word mx.set
|
|
15 000034 xitsec
|
|
1 000034 entsec .text
|
|
1 000640 .psect .text con
|
|
437 000640 genswt my,my.set
|
|
1 000640 entsec swtsec
|
|
1 000034 .psect swtsec con
|
|
2 32768$: .irpc x,my
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000014 .if ge 'm-141
|
|
2 177763 .if le 'm-172
|
|
3 000034 115 .byte 'm-40
|
|
4 .iff
|
|
5 .byte 'm
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 'm
|
|
9 .endc
|
|
10 000030 .if ge 'y-141
|
|
11 177777 .if le 'y-172
|
|
12 000035 131 .byte 'y-40
|
|
13 .iff
|
|
14 .byte 'y
|
|
15 .endc
|
|
16 .iff
|
|
17 .byte 'y
|
|
18 .endc
|
|
13 000000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000036 000656' .word my.set
|
|
15 000040 xitsec
|
|
1 000040 entsec .text
|
|
1 000640 .psect .text con
|
|
438 000640 genswt lt,lt.set
|
|
1 000640 entsec swtsec
|
|
1 000040 .psect swtsec con
|
|
2 32768$: .irpc x,lt
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000013 .if ge 'l-141
|
|
2 177762 .if le 'l-172
|
|
3 000040 114 .byte 'l-40
|
|
4 .iff
|
|
5 .byte 'l
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 'l
|
|
9 .endc
|
|
10 000023 .if ge 't-141
|
|
11 177772 .if le 't-172
|
|
12 000041 124 .byte 't-40
|
|
13 .iff
|
|
14 .byte 't
|
|
15 .endc
|
|
16 .iff
|
|
17 .byte 't
|
|
18 .endc
|
|
13 000000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000042 000672' .word lt.set
|
|
15 000044 xitsec
|
|
1 000044 entsec .text
|
|
1 000640 .psect .text con
|
|
439 mx.set:
|
|
440 000640 call no.set
|
|
1 000640 004767 177744 jsr pc,no.set
|
|
441 000644 call lt.set
|
|
1 000644 004767 000022 jsr pc,lt.set
|
|
442 000650 005267 000014' inc mx.flg
|
|
443 000654 return
|
|
1 000654 000207 rts pc
|
|
444 my.set:
|
|
445 000656 005267 000020' inc my.flg
|
|
446 000662 000766 br mx.set
|
|
447
|
|
448 000664 genswt 10,setten
|
|
1 000664 entsec swtsec
|
|
1 000044 .psect swtsec con
|
|
2 32768$: .irpc x,10
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 177720 .if ge '1-141
|
|
2 .if le '1-172
|
|
3 .byte '1-40
|
|
4 .iff
|
|
5 .byte '1
|
|
6 .endc
|
|
7 .iff
|
|
8 000044 061 .byte '1
|
|
9 .endc
|
|
10 177717 .if ge '0-141
|
|
11 .if le '0-172
|
|
12 .byte '0-40
|
|
13 .iff
|
|
14 .byte '0
|
|
15 .endc
|
|
16 .iff
|
|
17 000045 060 .byte '0
|
|
18 .endc
|
|
13 000000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000046 000664' .word setten
|
|
15 000050 xitsec
|
|
1 000050 entsec .text
|
|
1 000664 .psect .text con
|
|
449 setten:
|
|
450 000664 005267 000024' inc pdp10
|
|
451 000670 return
|
|
1 000670 000207 rts pc
|
|
452 lt.set:
|
|
453 000672 012767 000001 000002' mov #1,lttflg
|
|
454 000700 call ls.set
|
|
1 000700 004767 000304 jsr pc,ls.set
|
|
455 000704 112777 000157 000122' movb #'o,@crap ; tell cref to go on stdout, too.
|
|
456 000712 005267 000122' inc crap
|
|
457 000716 return
|
|
1 000716 000207 rts pc
|
|
458 000001 .if ne,mk.symbol
|
|
459 000720 genswt ns,ns.set
|
|
1 000720 entsec swtsec
|
|
1 000050 .psect swtsec con
|
|
2 32768$: .irpc x,ns
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000015 .if ge 'n-141
|
|
2 177764 .if le 'n-172
|
|
3 000050 116 .byte 'n-40
|
|
4 .iff
|
|
5 .byte 'n
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 'n
|
|
9 .endc
|
|
10 000022 .if ge 's-141
|
|
11 177771 .if le 's-172
|
|
12 000051 123 .byte 's-40
|
|
13 .iff
|
|
14 .byte 's
|
|
15 .endc
|
|
16 .iff
|
|
17 .byte 's
|
|
18 .endc
|
|
13 000000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000052 000720' .word ns.set
|
|
15 000054 xitsec
|
|
1 000054 entsec .text
|
|
1 000720 .psect .text con
|
|
460
|
|
461 000720 005267 000000G ns.set: inc out$ym
|
|
462 000724 return
|
|
1 000724 000207 rts pc
|
|
463
|
|
464 .globl out$ym
|
|
465 .endc
|
|
466 .globl fixtit
|
|
467 .globl ed.gbl, eddflt
|
|
468 000726 genswt xs,xs.set
|
|
1 000726 entsec swtsec
|
|
1 000054 .psect swtsec con
|
|
2 32768$: .irpc x,xs
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000027 .if ge 'x-141
|
|
2 177776 .if le 'x-172
|
|
3 000054 130 .byte 'x-40
|
|
4 .iff
|
|
5 .byte 'x
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 'x
|
|
9 .endc
|
|
10 000022 .if ge 's-141
|
|
11 177771 .if le 's-172
|
|
12 000055 123 .byte 's-40
|
|
13 .iff
|
|
14 .byte 's
|
|
15 .endc
|
|
16 .iff
|
|
17 .byte 's
|
|
18 .endc
|
|
13 000000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000056 000726' .word xs.set
|
|
15 000060 xitsec
|
|
1 000060 entsec .text
|
|
1 000726 .psect .text con
|
|
469 xs.set: ; obsolete
|
|
470 000726 call absexp ; so that -xs:3 wont genrerate a 'bad switch'
|
|
1 000726 004767 000000G jsr pc,absexp
|
|
471 ; error.
|
|
472 000732 return
|
|
1 000732 000207 rts pc
|
|
473
|
|
474 000734 genswt ha,ha.set
|
|
1 000734 entsec swtsec
|
|
1 000060 .psect swtsec con
|
|
2 32768$: .irpc x,ha
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000007 .if ge 'h-141
|
|
2 177756 .if le 'h-172
|
|
3 000060 110 .byte 'h-40
|
|
4 .iff
|
|
5 .byte 'h
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 'h
|
|
9 .endc
|
|
10 000000 .if ge 'a-141
|
|
11 177747 .if le 'a-172
|
|
12 000061 101 .byte 'a-40
|
|
13 .iff
|
|
14 .byte 'a
|
|
15 .endc
|
|
16 .iff
|
|
17 .byte 'a
|
|
18 .endc
|
|
13 000000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000062 000734' .word ha.set
|
|
15 000064 xitsec
|
|
1 000064 entsec .text
|
|
1 000734 .psect .text con
|
|
475 000734 genswt de,de.set
|
|
1 000734 entsec swtsec
|
|
1 000064 .psect swtsec con
|
|
2 32768$: .irpc x,de
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000003 .if ge 'd-141
|
|
2 177752 .if le 'd-172
|
|
3 000064 104 .byte 'd-40
|
|
4 .iff
|
|
5 .byte 'd
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 'd
|
|
9 .endc
|
|
10 000004 .if ge 'e-141
|
|
11 177753 .if le 'e-172
|
|
12 000065 105 .byte 'e-40
|
|
13 .iff
|
|
14 .byte 'e
|
|
15 .endc
|
|
16 .iff
|
|
17 .byte 'e
|
|
18 .endc
|
|
13 000000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000066 000764' .word de.set
|
|
15 000070 xitsec
|
|
1 000070 entsec .text
|
|
1 000734 .psect .text con
|
|
476 ha.set:
|
|
477 000734 005267 000000' inc veritas ; reinstate addf #12,3,fr1
|
|
478 000740 012767 000166' 000146' mov #harvid,vernam
|
|
479 000746 call um.set
|
|
1 000746 004767 000000G jsr pc,um.set
|
|
480 ; harvard .psect attrib scheme uses same defaults as UCB,
|
|
481 ; but uses them wrong. The 'veritas' flag tells when to misuse
|
|
482 ; them. See 'psect' in xlat.m11
|
|
483 ;
|
|
484 000752 052767 000000G 000000G bis #ed.gbl,eddflt
|
|
485 000760 000167 000000G jmp fixtit
|
|
486 de.set:
|
|
487 000764 call uc.set
|
|
1 000764 004767 000000G jsr pc,uc.set
|
|
488 000770 012767 000203' 000146' mov #decid,vernam
|
|
489 ;
|
|
490 ; incomprehensible but true DEC default attribute patterns
|
|
491 ;
|
|
492 000776 012767 000052 000000G mov #insflg!pattrs,psdflt
|
|
493 001004 012767 000172 000000G mov #insflg!cattrs,csdflt
|
|
494 001012 012767 000132 000000G mov #insflg!aattrs,asdflt
|
|
495 001020 052767 000000G 000000G bis #ed.gbl,eddflt
|
|
496 001026 000167 000000G jmp fixtit
|
|
497
|
|
498 001032 genswt dp,dp.set
|
|
1 001032 entsec swtsec
|
|
1 000070 .psect swtsec con
|
|
2 32768$: .irpc x,dp
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000003 .if ge 'd-141
|
|
2 177752 .if le 'd-172
|
|
3 000070 104 .byte 'd-40
|
|
4 .iff
|
|
5 .byte 'd
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 'd
|
|
9 .endc
|
|
10 000017 .if ge 'p-141
|
|
11 177766 .if le 'p-172
|
|
12 000071 120 .byte 'p-40
|
|
13 .iff
|
|
14 .byte 'p
|
|
15 .endc
|
|
16 .iff
|
|
17 .byte 'p
|
|
18 .endc
|
|
13 000000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000072 001046' .word dp.set
|
|
15 000074 xitsec
|
|
1 000074 entsec .text
|
|
1 001032 .psect .text con
|
|
499 001032 genswt da,da.set
|
|
1 001032 entsec swtsec
|
|
1 000074 .psect swtsec con
|
|
2 32768$: .irpc x,da
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000003 .if ge 'd-141
|
|
2 177752 .if le 'd-172
|
|
3 000074 104 .byte 'd-40
|
|
4 .iff
|
|
5 .byte 'd
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 'd
|
|
9 .endc
|
|
10 000000 .if ge 'a-141
|
|
11 177747 .if le 'a-172
|
|
12 000075 101 .byte 'a-40
|
|
13 .iff
|
|
14 .byte 'a
|
|
15 .endc
|
|
16 .iff
|
|
17 .byte 'a
|
|
18 .endc
|
|
13 000000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000076 001032' .word da.set
|
|
15 000100 xitsec
|
|
1 000100 entsec .text
|
|
1 001032 .psect .text con
|
|
500 001032 genswt dc,dc.set
|
|
1 001032 entsec swtsec
|
|
1 000100 .psect swtsec con
|
|
2 32768$: .irpc x,dc
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000003 .if ge 'd-141
|
|
2 177752 .if le 'd-172
|
|
3 000100 104 .byte 'd-40
|
|
4 .iff
|
|
5 .byte 'd
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 'd
|
|
9 .endc
|
|
10 000002 .if ge 'c-141
|
|
11 177751 .if le 'c-172
|
|
12 000101 103 .byte 'c-40
|
|
13 .iff
|
|
14 .byte 'c
|
|
15 .endc
|
|
16 .iff
|
|
17 .byte 'c
|
|
18 .endc
|
|
13 000000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000102 001040' .word dc.set
|
|
15 000104 xitsec
|
|
1 000104 entsec .text
|
|
1 001032 .psect .text con
|
|
501 .globl psdflt,asdflt,csdflt,psarol ; in xlat.m11: .psect atribs
|
|
502
|
|
503 da.set:
|
|
504 001032 012746 000000G mov #asdflt,-(sp)
|
|
505 001036 000405 br dx.set
|
|
506 dc.set:
|
|
507 001040 012746 000000G mov #csdflt,-(sp)
|
|
508 001044 000402 br dx.set
|
|
509 dp.set:
|
|
510 001046 012746 000000G mov #psdflt,-(sp)
|
|
511 dx.set:
|
|
512 001052 call gsarg
|
|
1 001052 004767 000000G jsr pc,gsarg
|
|
513 001056 001443 beq 9$
|
|
514 001060 scanw psarol
|
|
1 001060 012700 000000G mov #psarol,r0
|
|
2 .globl scanw
|
|
3 001064 call scanw
|
|
1 001064 004767 000000G jsr pc,scanw
|
|
515 001070 001407 beq 10$
|
|
516 001072 156776 000002G 000000 bisb symbol+2,@(sp)
|
|
517 001100 146776 000003G 000000 bicb symbol+3,@(sp)
|
|
518 001106 000761 br dx.set
|
|
519 001110 10$: error 45,a,<illegal .psect attribute>
|
|
1 001110 sdebug <45>
|
|
1 .globl sdebug,..z,..zbuf
|
|
2 000000 x = 0
|
|
3 .irpc t,<45>
|
|
4 movb #''t,..zbuf+x
|
|
5 x = x+1
|
|
6 .endm
|
|
1 001110 112767 000064 000000G movb #'4,..zbuf+x
|
|
2 000001 x = x+1
|
|
3 001116 112767 000065 000001G movb #'5,..zbuf+x
|
|
4 000002 x = x+1
|
|
7 001124 112767 000000 000002G movb #0,..zbuf+x
|
|
8 001132 012767 000000G 000000G mov #..zbuf,..z
|
|
9 001140 call sdebug
|
|
1 001140 004767 000000G jsr pc,sdebug
|
|
2 .globl err.a,ern45, errbts,errref
|
|
3 .if b <illegal .psect attribute>
|
|
4 deliberate error mistake
|
|
5 .endc
|
|
6 .if dif 0,45
|
|
7 .globl err.xx
|
|
8 001144 005767 000000G tst err.xx
|
|
9 001150 001003 bne 32768$
|
|
10 001152 012767 000000G 000000G mov #ern45,err.xx
|
|
11 32768$:
|
|
12 .endc
|
|
13 001160 052767 000000G 000000G bis #err.a,errbts
|
|
520 9$:
|
|
521 001166 005726 tst (sp)+
|
|
522 001170 return
|
|
1 001170 000207 rts pc
|
|
523
|
|
524 001172 genswt ls,ls.set
|
|
1 001172 entsec swtsec
|
|
1 000104 .psect swtsec con
|
|
2 32769$: .irpc x,ls
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000013 .if ge 'l-141
|
|
2 177762 .if le 'l-172
|
|
3 000104 114 .byte 'l-40
|
|
4 .iff
|
|
5 .byte 'l
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 'l
|
|
9 .endc
|
|
10 000022 .if ge 's-141
|
|
11 177771 .if le 's-172
|
|
12 000105 123 .byte 's-40
|
|
13 .iff
|
|
14 .byte 's
|
|
15 .endc
|
|
16 .iff
|
|
17 .byte 's
|
|
18 .endc
|
|
13 000000 .iif ne <.-32769$&1>, .byte 0
|
|
14 000106 001210' .word ls.set
|
|
15 000110 xitsec
|
|
1 000110 entsec .text
|
|
1 001172 .psect .text con
|
|
525 001172 genswt lp,lp.set
|
|
1 001172 entsec swtsec
|
|
1 000110 .psect swtsec con
|
|
2 32768$: .irpc x,lp
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000013 .if ge 'l-141
|
|
2 177762 .if le 'l-172
|
|
3 000110 114 .byte 'l-40
|
|
4 .iff
|
|
5 .byte 'l
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 'l
|
|
9 .endc
|
|
10 000017 .if ge 'p-141
|
|
11 177766 .if le 'p-172
|
|
12 000111 120 .byte 'p-40
|
|
13 .iff
|
|
14 .byte 'p
|
|
15 .endc
|
|
16 .iff
|
|
17 .byte 'p
|
|
18 .endc
|
|
13 000000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000112 001172' .word lp.set
|
|
15 000114 xitsec
|
|
1 000114 entsec .text
|
|
1 001172 .psect .text con
|
|
526
|
|
527 001172 005267 000012' lp.set: inc lpflag ;note spooler request
|
|
528 001176 112777 000154 000122' movb #'l,@crap
|
|
529 001204 005267 000122' inc crap
|
|
530 001210 005267 000000' ls.set: inc lstflg ;note lst file req.
|
|
531 001214 012702 000004 mov #lstchn,r2 ;set up to add buffer for lstchn
|
|
532 001220 016700 000010' addbuf: mov symlp,r0 ;get cur. free loc.
|
|
533 001224 010062 000236' mov r0,cnttbl(r2) ;that's where our byte count will go
|
|
534 001230 005720 tst (r0)+ ;now point to our buffer
|
|
535 001232 010062 000252' mov r0,buftbl(r2)
|
|
536 001236 066200 000170' add ioltbl(r2),r0 ;allow for length of buffer
|
|
537 001242 010067 000010' mov r0,symlp ;new free loc.
|
|
538
|
|
539 001246 return
|
|
1 001246 000207 rts pc
|
|
540
|
|
541 .if ndf xcref
|
|
542 001250 genswt cr,cr.set
|
|
1 001250 entsec swtsec
|
|
1 000114 .psect swtsec con
|
|
2 32768$: .irpc x,cr
|
|
3 .if ge ''x-141
|
|
4 .if le ''x-172
|
|
5 .byte ''x-40
|
|
6 .iff
|
|
7 .byte ''x
|
|
8 .endc
|
|
9 .iff
|
|
10 .byte ''x
|
|
11 .endc
|
|
12 .endm
|
|
1 000002 .if ge 'c-141
|
|
2 177751 .if le 'c-172
|
|
3 000114 103 .byte 'c-40
|
|
4 .iff
|
|
5 .byte 'c
|
|
6 .endc
|
|
7 .iff
|
|
8 .byte 'c
|
|
9 .endc
|
|
10 000021 .if ge 'r-141
|
|
11 177770 .if le 'r-172
|
|
12 000115 122 .byte 'r-40
|
|
13 .iff
|
|
14 .byte 'r
|
|
15 .endc
|
|
16 .iff
|
|
17 .byte 'r
|
|
18 .endc
|
|
13 000000 .iif ne <.-32768$&1>, .byte 0
|
|
14 000116 001250' .word cr.set
|
|
15 000120 xitsec
|
|
1 000120 entsec .text
|
|
1 001250 .psect .text con
|
|
543 001250 genedt crf
|
|
1 001250 entsec edtsec
|
|
1 000000 .psect edtsec con
|
|
2 000000 012626 .rad50 /crf/
|
|
3 .if nb
|
|
4 .word
|
|
5 .iff
|
|
6 000002 000000G .word cpopj
|
|
7 .endc
|
|
8 000004 000000G .word ed.crf
|
|
9 000006 xitsec
|
|
1 000006 entsec .text
|
|
1 001250 .psect .text con
|
|
544 .globl ed.crf,edmask,gsarg,cpopj
|
|
545 cr.set:
|
|
546 001250 005767 000004' tst crfpnd
|
|
547 001254 001056 bne 2$
|
|
548 001256 005267 000004' inc crfpnd ;note pending cref
|
|
549 001262 052767 000000G 000000G bis #ed.crf,edmask ; so .enabl/.dsabl crf will work.
|
|
550 1$:
|
|
551 001270 call gsarg
|
|
1 001270 004767 000000G jsr pc,gsarg
|
|
552 001274 001413 beq 3$
|
|
553 001276 scanw crfrol
|
|
1 001276 012700 000000G mov #crfrol,r0
|
|
2 .globl scanw
|
|
3 001302 call scanw
|
|
1 001302 004767 000000G jsr pc,scanw
|
|
554 001306 001412 beq 9$
|
|
555 001310 116777 000004G 000122' movb symbol+4,@crap
|
|
556 001316 005267 000122' inc crap
|
|
557 001322 000762 br 1$
|
|
558 3$:
|
|
559 001324 012702 000012 mov #crfchn,r2 ;set up buffer for it
|
|
560 001330 000167 177664 jmp addbuf
|
|
561
|
|
562 9$:
|
|
563 001334 error 55,a, <illegal cref argument>
|
|
1 001334 sdebug <55>
|
|
1 .globl sdebug,..z,..zbuf
|
|
2 000000 x = 0
|
|
3 .irpc t,<55>
|
|
4 movb #''t,..zbuf+x
|
|
5 x = x+1
|
|
6 .endm
|
|
1 001334 112767 000065 000000G movb #'5,..zbuf+x
|
|
2 000001 x = x+1
|
|
3 001342 112767 000065 000001G movb #'5,..zbuf+x
|
|
4 000002 x = x+1
|
|
7 001350 112767 000000 000002G movb #0,..zbuf+x
|
|
8 001356 012767 000000G 000000G mov #..zbuf,..z
|
|
9 001364 call sdebug
|
|
1 001364 004767 000000G jsr pc,sdebug
|
|
2 .globl err.a,ern55, errbts,errref
|
|
3 .if b <illegal cref argument>
|
|
4 deliberate error mistake
|
|
5 .endc
|
|
6 .if dif 0,55
|
|
7 .globl err.xx
|
|
8 001370 005767 000000G tst err.xx
|
|
9 001374 001003 bne 32768$
|
|
10 001376 012767 000000G 000000G mov #ern55,err.xx
|
|
11 32768$:
|
|
12 .endc
|
|
13 001404 052767 000000G 000000G bis #err.a,errbts
|
|
564 2$:
|
|
565 001412 return
|
|
1 001412 000207 rts pc
|
|
566
|
|
567 .macro gencrf name,char
|
|
568 entsec crfsec
|
|
569 .even
|
|
570 .rad50 /name/
|
|
571 .word cpopj
|
|
572 .word char
|
|
573 .endm
|
|
574 001414 gencrf s,'s
|
|
1 001414 entsec crfsec
|
|
1 000000 .psect crfsec con
|
|
2 .even
|
|
3 000000 073300 .rad50 /s/
|
|
4 000002 000000G .word cpopj
|
|
5 000004 000163 .word 's
|
|
575 000006 gencrf sy,'s
|
|
1 000006 entsec crfsec
|
|
1 000006 .psect crfsec con
|
|
2 .even
|
|
3 000006 075250 .rad50 /sy/
|
|
4 000010 000000G .word cpopj
|
|
5 000012 000163 .word 's
|
|
576 000014 gencrf sym,'s
|
|
1 000014 entsec crfsec
|
|
1 000014 .psect crfsec con
|
|
2 .even
|
|
3 000014 075265 .rad50 /sym/
|
|
4 000016 000000G .word cpopj
|
|
5 000020 000163 .word 's
|
|
577 000022 gencrf r,'r
|
|
1 000022 entsec crfsec
|
|
1 000022 .psect crfsec con
|
|
2 .even
|
|
3 000022 070200 .rad50 /r/
|
|
4 000024 000000G .word cpopj
|
|
5 000026 000162 .word 'r
|
|
578 000030 gencrf re,'r
|
|
1 000030 entsec crfsec
|
|
1 000030 .psect crfsec con
|
|
2 .even
|
|
3 000030 070510 .rad50 /re/
|
|
4 000032 000000G .word cpopj
|
|
5 000034 000162 .word 'r
|
|
579 000036 gencrf reg,'r
|
|
1 000036 entsec crfsec
|
|
1 000036 .psect crfsec con
|
|
2 .even
|
|
3 000036 070517 .rad50 /reg/
|
|
4 000040 000000G .word cpopj
|
|
5 000042 000162 .word 'r
|
|
580 000044 gencrf m,'m
|
|
1 000044 entsec crfsec
|
|
1 000044 .psect crfsec con
|
|
2 .even
|
|
3 000044 050500 .rad50 /m/
|
|
4 000046 000000G .word cpopj
|
|
5 000050 000155 .word 'm
|
|
581 000052 gencrf ma,'m
|
|
1 000052 entsec crfsec
|
|
1 000052 .psect crfsec con
|
|
2 .even
|
|
3 000052 050550 .rad50 /ma/
|
|
4 000054 000000G .word cpopj
|
|
5 000056 000155 .word 'm
|
|
582 000060 gencrf mac,'m
|
|
1 000060 entsec crfsec
|
|
1 000060 .psect crfsec con
|
|
2 .even
|
|
3 000060 050553 .rad50 /mac/
|
|
4 000062 000000G .word cpopj
|
|
5 000064 000155 .word 'm
|
|
583 000066 gencrf p,'p
|
|
1 000066 entsec crfsec
|
|
1 000066 .psect crfsec con
|
|
2 .even
|
|
3 000066 062000 .rad50 /p/
|
|
4 000070 000000G .word cpopj
|
|
5 000072 000160 .word 'p
|
|
584 000074 gencrf pe,'p
|
|
1 000074 entsec crfsec
|
|
1 000074 .psect crfsec con
|
|
2 .even
|
|
3 000074 062310 .rad50 /pe/
|
|
4 000076 000000G .word cpopj
|
|
5 000100 000160 .word 'p
|
|
585 000102 gencrf per,'p
|
|
1 000102 entsec crfsec
|
|
1 000102 .psect crfsec con
|
|
2 .even
|
|
3 000102 062332 .rad50 /per/
|
|
4 000104 000000G .word cpopj
|
|
5 000106 000160 .word 'p
|
|
586 000110 gencrf pst,'p
|
|
1 000110 entsec crfsec
|
|
1 000110 .psect crfsec con
|
|
2 .even
|
|
3 000110 063414 .rad50 /pst/
|
|
4 000112 000000G .word cpopj
|
|
5 000114 000160 .word 'p
|
|
587 000116 gencrf c,'c
|
|
1 000116 entsec crfsec
|
|
1 000116 .psect crfsec con
|
|
2 .even
|
|
3 000116 011300 .rad50 /c/
|
|
4 000120 000000G .word cpopj
|
|
5 000122 000143 .word 'c
|
|
588 000124 gencrf cs,'c
|
|
1 000124 entsec crfsec
|
|
1 000124 .psect crfsec con
|
|
2 .even
|
|
3 000124 012670 .rad50 /cs/
|
|
4 000126 000000G .word cpopj
|
|
5 000130 000143 .word 'c
|
|
589 000132 gencrf cse,'c
|
|
1 000132 entsec crfsec
|
|
1 000132 .psect crfsec con
|
|
2 .even
|
|
3 000132 012675 .rad50 /cse/
|
|
4 000134 000000G .word cpopj
|
|
5 000136 000143 .word 'c
|
|
590 000140 gencrf sec,'c
|
|
1 000140 entsec crfsec
|
|
1 000140 .psect crfsec con
|
|
2 .even
|
|
3 000140 073613 .rad50 /sec/
|
|
4 000142 000000G .word cpopj
|
|
5 000144 000143 .word 'c
|
|
591 000146 gencrf pse,'c
|
|
1 000146 entsec crfsec
|
|
1 000146 .psect crfsec con
|
|
2 .even
|
|
3 000146 063375 .rad50 /pse/
|
|
4 000150 000000G .word cpopj
|
|
5 000152 000143 .word 'c
|
|
592 000154 gencrf e,'e
|
|
1 000154 entsec crfsec
|
|
1 000154 .psect crfsec con
|
|
2 .even
|
|
3 000154 017500 .rad50 /e/
|
|
4 000156 000000G .word cpopj
|
|
5 000160 000145 .word 'e
|
|
593 000162 gencrf er,'e
|
|
1 000162 entsec crfsec
|
|
1 000162 .psect crfsec con
|
|
2 .even
|
|
3 000162 021020 .rad50 /er/
|
|
4 000164 000000G .word cpopj
|
|
5 000166 000145 .word 'e
|
|
594 000170 gencrf err,'e
|
|
1 000170 entsec crfsec
|
|
1 000170 .psect crfsec con
|
|
2 .even
|
|
3 000170 021042 .rad50 /err/
|
|
4 000172 000000G .word cpopj
|
|
5 000174 000145 .word 'e
|
|
595
|
|
596 000176 xitsec
|
|
1 000176 entsec .text
|
|
1 001414 .psect .text con
|
|
597
|
|
598 .endc
|
|
598
|
|
599 .sbttl pass initialization
|
|
600
|
|
601 inip1: ;init for pass 1
|
|
602 001414 012700 000004 mov #lstchn,r0
|
|
603 001420 call openo
|
|
1 001420 004767 000106 jsr pc,openo
|
|
604 001424 call srchi ;init the symbol table & rolls
|
|
1 001424 004767 000000G jsr pc,srchi
|
|
605 001430 000407 br inip2f ;set source for pass
|
|
606
|
|
607 inip2: ;init for pass 2
|
|
608 001432 005267 000000G inc pass
|
|
609 001436 005767 000004' tst crfpnd
|
|
610 001442 001402 beq inip2f
|
|
611 001444 call crfset
|
|
1 001444 004767 002032 jsr pc,crfset
|
|
612 001450 inip2f: call setlc
|
|
1 001450 004767 000000G jsr pc,setlc
|
|
613 .globl mx.2 , mdepth
|
|
614 .globl mac.er
|
|
615 001454 005067 000000G clr mx.2
|
|
616 001460 005067 000000G clr mdepth
|
|
617 001464 call seted
|
|
1 001464 004767 000000G jsr pc,seted
|
|
618 001470 016767 000004' 000006' inip0z: mov iargv,argv ;init count & pointer to args.
|
|
619 001476 016767 000002' 000000' mov iargc,argc
|
|
620 001504 005367 000000' dec argc
|
|
621 001510 062767 000002 000006' add #2,argv
|
|
622 001516 return
|
|
1 001516 000207 rts pc
|
|
622
|
|
623 .sbttl end of pass routines
|
|
624
|
|
625 finp1: ;finish of pass
|
|
626 001520 012700 000002 mov #srcchn,r0
|
|
627 001524 call zclose
|
|
1 001524 004767 001700 jsr pc,zclose
|
|
628 001530 return
|
|
1 001530 000207 rts pc
|
|
629
|
|
630
|
|
631
|
|
632 openo: ;open output file
|
|
633 001532 call savreg
|
|
1 001532 004767 000000G jsr pc,savreg
|
|
634 001536 010002 mov r0,r2 ;copy r0 (chn. #)
|
|
635 001540 020027 000004 cmp r0,#lstchn ;is it list channel?
|
|
636 001544 001011 bne 1$ ;no
|
|
637 001546 005767 000002' tst lttflg ; <<< REEDS june 1981
|
|
638 001552 001403 beq 100$ ; <<<
|
|
639 001554 012700 000001 mov #1,r0 ; <<< use standard output if -lt flag in use
|
|
640 001560 000450 br 7$ ; <<<
|
|
641 100$:
|
|
642 001562 005767 000000' tst lstflg ;yes, is listing enabled (-ls) ?
|
|
643 001566 001452 beq 9$ ;no, ignore
|
|
644 001570 020027 000006 1$: cmp r0,#objchn ;is this object channel?
|
|
645 001574 001003 bne 11$ ;no
|
|
646 001576 005767 000006' tst no.flg ;were we told to withhold obj. o/p ?
|
|
647 001602 001044 bne 9$ ;yes, ignore
|
|
648 001604 11$: call src.ap ;set up name in linbuf
|
|
1 001604 004767 000210 jsr pc,src.ap
|
|
649 001610 012767 000000G 000312' mov #linbuf,$crtnm ; and pointer to name
|
|
650 001616 016746 000314' 2$: mov $crtmd,-(sp)
|
|
651 001622 016746 000312' mov $crtnm,-(sp)
|
|
652 001626 005746 tst -(sp)
|
|
653 001630 000000G $creat
|
|
654 001632 103403 bcs 99$
|
|
655 001634 062706 000006 add #6.,sp
|
|
656 001640 000420 br 7$
|
|
657 99$:
|
|
658 001642 062706 000006 add #6.,sp
|
|
659 001646 012701 000000G mov #linbuf,r1 ;no good, complain
|
|
660 001652 105721 3$: tstb (r1)+ ;find end of filename
|
|
661 001654 001376 bne 3$
|
|
662 001656 005301 dec r1 ;back up over null
|
|
663 001660 012700 000147' mov #ncmsg,r0 ;append rest of msg.
|
|
664 001664 112021 4$: movb (r0)+,(r1)+
|
|
665 001666 001376 bne 4$
|
|
666 001670 putkb #linbuf
|
|
1 .globl putkb
|
|
2 001670 012700 000000G mov #linbuf,r0
|
|
3 001674 call putkb
|
|
1 001674 004767 000000G jsr pc,putkb
|
|
667 001700 return
|
|
1 001700 000207 rts pc
|
|
668
|
|
669 001702 010062 000124' 7$: mov r0,chntbl(r2) ;store file handle
|
|
670 001706 010200 mov r2,r0 ;restore r0 with chn. #
|
|
671 001710 call zopen
|
|
1 001710 004767 001142 jsr pc,zopen
|
|
672 001714 9$: return
|
|
1 001714 000207 rts pc
|
|
673 src.fp:
|
|
674 001716 016701 000026' mov srcnam,r1 ;transfer file name from src prefix
|
|
675 001722 005767 000030' tst esrcnam
|
|
676 001726 001402 beq 1$
|
|
677 001730 016701 000030' mov esrcnam,r1
|
|
678 1$:
|
|
679 001734 012700 000000G mov #linbuf,r0 ;and store in linbuf
|
|
680 001740 005046 nam.fp: clr -(sp) ;clear "." flag
|
|
681 001742 112120 2$: movb (r1)+,(r0)+ ;transfer a byte
|
|
682 001744 001414 beq 4$ ;move on if done
|
|
683 001746 126027 177777 000056 cmpb -1(r0),#'. ;not null, was it a "." ?
|
|
684 001754 001406 beq 3$ ;yes, set flag and cont.
|
|
685 001756 126027 177777 000057 cmpb -1(r0),#'/ ;no, was it / ?
|
|
686 001764 001366 bne 2$ ;no, continue
|
|
687 001766 005016 clr (sp) ;yes, clear flag
|
|
688 001770 000764 br 2$ ;continue
|
|
689 001772 010016 3$: mov r0,(sp) ;flag with adr. past period.
|
|
690 001774 000762 br 2$
|
|
691 001776 010001 4$: mov r0,r1 ;copy adr. past terminating null
|
|
692 002000 012600 mov (sp)+,r0 ;restore period flag (adr.)
|
|
693 002002 001001 bne 5$ ;if set, move on
|
|
694 002004 010100 mov r1,r0 ;use this adr.
|
|
695 002006 005300 5$: dec r0 ;back up pointer to null or period.
|
|
696 002010 return
|
|
1 002010 000207 rts pc
|
|
697
|
|
698 002012 nam.ap: call nam.fp ;move to period
|
|
1 002012 004767 177722 jsr pc,nam.fp
|
|
699 002016 000402 br ap.ext
|
|
700
|
|
701 002020 src.ap: call src.fp ;find period.
|
|
1 002020 004767 177672 jsr pc,src.fp
|
|
702 ; and plop appropriate ext. in
|
|
703
|
|
704 002024 105720 ap.ext: tstb (r0)+ ;period here?
|
|
705 002026 001003 bne 1$ ;yes, assuming non-null is a period
|
|
706 002030 112760 000056 177777 movb #'.,-1(r0) ;no, put one in
|
|
707 002036 016201 000222' 1$: mov exttbl(r2),r1 ;get pointer to ext.
|
|
708 002042 112120 2$: movb (r1)+,(r0)+ ;store the ext. at end of name
|
|
709 002044 001376 bne 2$
|
|
710 002046 7$: return
|
|
1 002046 000207 rts pc
|
|
710
|
|
711 .sbttl end of program cleanup
|
|
712
|
|
713 setdn: ;clean up
|
|
714 002050 012701 000111' mov #finmsg,r1 ;set for final message
|
|
715 002054 012702 000000G mov #linbuf,r2
|
|
716 002060 call movbyt ;move into linbuf
|
|
1 002060 004767 000000G jsr pc,movbyt
|
|
717 002064 016701 000000G mov errcnt,r1
|
|
718 ; *** beq 1$ ;don't bother if successful
|
|
719 002070 call dnc ;print in decimal
|
|
1 002070 004767 000000G jsr pc,dnc
|
|
720 002074 105012 clrb (r2)
|
|
721
|
|
722 002076 005767 000014' tst mx.flg
|
|
723 002102 001014 bne 1$
|
|
724 002104 005767 000002' tst lttflg ; <<< REEDS june 81
|
|
725 002110 001405 beq 100$ ; <<< REEDS june 81
|
|
726 002112 putlp #linbuf ; <<< REEDS june 81
|
|
1 .globl putlp
|
|
2 002112 012700 000000G mov #linbuf,r0
|
|
3 002116 call putlp
|
|
1 002116 004767 000000G jsr pc,putlp
|
|
727 002122 000404 br 1$ ; <<< REEDS june 81
|
|
728 002124 100$: putkbl #linbuf ;list to kb & lp
|
|
1 .globl putkbl
|
|
2 002124 012700 000000G mov #linbuf,r0
|
|
3 002130 call putkbl
|
|
1 002130 004767 000000G jsr pc,putkbl
|
|
729
|
|
730 002134 1$: return
|
|
1 002134 000207 rts pc
|
|
730
|
|
731 serror: ;"s" error
|
|
732 002136 call putkb
|
|
1 002136 004767 000000G jsr pc,putkb
|
|
733 002142 call mac.er ;maybe caused by macro explosion
|
|
1 002142 004767 000000G jsr pc,mac.er
|
|
734 002146 012700 000001 mov #1,r0
|
|
735 002152 010046 mov r0,-(sp)
|
|
736 002154 005746 tst -(sp) ;simulate return address stack spacing
|
|
737 002156 000000G $exit
|
|
738
|
|
739 ; symovf: serror 217,<symbol table overflow>
|
|
740 symovf:
|
|
741 002160 serror #symerr
|
|
1 002160 012700 000050' mov #symerr,r0 ; was: jsr r0,serror
|
|
2 ; was: .asciz \message\
|
|
3 002164 000167 177746 jmp serror ; new: no return
|
|
4 ;.even
|
|
742 002170 macovf: call mac.er
|
|
1 002170 004767 000000G jsr pc,mac.er
|
|
743 002174 serror #macerr ; no return: exit sys call
|
|
1 002174 012700 000024' mov #macerr,r0 ; was: jsr r0,serror
|
|
2 ; was: .asciz \message\
|
|
3 002200 000167 177732 jmp serror ; new: no return
|
|
4 ;.even
|
|
744
|
|
744
|
|
745 getic: ;get input character
|
|
746 002204 005370 000236' dec @cnttbl(r0) ;any chars left in line?
|
|
747 002210 002406 blt 4$ ; no
|
|
748 002212 005005 clr r5
|
|
749 002214 157005 000110' bisb @chrtbl(r0),r5 ;yes, fetch next
|
|
750 002220 005260 000110' inc chrtbl(r0) ;bump count
|
|
751 002224 return
|
|
1 002224 000207 rts pc
|
|
752
|
|
753 002226 005760 000074' 4$: tst ioftbl(r0) ;file initted?
|
|
754 002232 001417 beq 5$ ;no, do so
|
|
755 002234 call zread ;read and wait
|
|
1 002234 004767 000640 jsr pc,zread
|
|
756 002240 016005 000074' mov ioftbl(r0),r5 ;get condition flags
|
|
757 002244 042705 177747 bic #^c<io.eof!io.err>,r5 ;clear extraneous
|
|
758 002250 001755 beq getic ;branch if nothing special
|
|
759 002252 032705 000010 bit #io.eof,r5
|
|
760 002256 001416 beq 9$ ; error, exit
|
|
761 002260 012705 000040 mov #io.eoi,r5 ;in case not source
|
|
762 002264 020027 000002 cmp r0,#srcchn ;is it src.?
|
|
763 002270 001011 bne 9$ ;no
|
|
764 002272 5$: call getsrc ;open next source file
|
|
1 002272 004767 000024 jsr pc,getsrc
|
|
765 002276 012705 000040 mov #io.eoi,r5 ;in case unsuccessful
|
|
766 002302 005767 000076' tst ioftbl+srcchn ;winner?
|
|
767 002306 001402 beq 9$ ;no
|
|
768 002310 012705 000010 mov #io.eof,r5 ;set end-of-file
|
|
769 002314 052705 100000 9$: bis #100000,r5 ;set flag bit
|
|
770 002320 return
|
|
1 002320 000207 rts pc
|
|
771
|
|
772 .globl err.by ; array holds file name for error printer
|
|
773 getsrc:
|
|
774 002322 105067 000000G clrb err.by
|
|
775 002326 005067 000006' clr fileln ; start unix line numbers over
|
|
776 002332 012700 000002 mov #srcchn,r0 ;use source chn.
|
|
777 002336 010046 mov r0,-(sp)
|
|
778 002340 010146 mov r1,-(sp)
|
|
779 002342 010246 mov r2,-(sp)
|
|
780 002344 010002 mov r0,r2 ;copy chn. #
|
|
781 002346 call zclose ;close current source input
|
|
1 002346 004767 001056 jsr pc,zclose
|
|
782 002352 005367 000000' 1$: dec argc ;any left?
|
|
783 002356 002532 blt 7$ ;no
|
|
784 002360 016700 000006' mov argv,r0 ;point to next arg.
|
|
785 002364 012001 mov (r0)+,r1
|
|
786 002366 010067 000006' mov r0,argv
|
|
787 002372 005701 tst r1 ;ignore null pointer
|
|
788 002374 001766 beq 1$
|
|
789 002376 121127 000055 cmpb (r1),#'- ;switch?
|
|
790 002402 001763 beq 1$ ;yes, ignore
|
|
791 002404 016700 000254' mov buftbl+srcchn,r0 ;point to dest. of name
|
|
792 002410 010067 000316' mov r0,$opnnm ;set up pointer to name
|
|
793 002414 call nam.fp ;transfer name & find period.
|
|
1 002414 004767 177320 jsr pc,nam.fp
|
|
794 002420 005046 clr -(sp) ;clear retry indicator
|
|
795 002422 105710 tstb (r0) ;was ext. specified?
|
|
796 002424 001003 bne 13$ ;yes, try it as is
|
|
797 002426 010016 mov r0,(sp) ;no, save adr. of null
|
|
798 002430 call ap.ext ;append default ext.
|
|
1 002430 004767 177370 jsr pc,ap.ext
|
|
799 002434 005067 000320' 13$: clr $opnmd ;set up mode as "read"
|
|
800 002440 016746 000320' mov $opnmd,-(sp)
|
|
801 002444 016746 000316' mov $opnnm,-(sp)
|
|
802 002450 005746 tst -(sp) ;simulate return address stack spacing
|
|
803 002452 000000G $open
|
|
804 002454 103403 bcs 99$ ;if ok, move on
|
|
805 002456 062706 000006 add #6.,sp
|
|
806 002462 000433 br 3$
|
|
807 99$:
|
|
808 002464 062706 000006 add #6,sp
|
|
809 002470 005716 tst (sp) ;prepared to retry w/o ext.?
|
|
810 002472 001404 beq 14$ ;no, not found!
|
|
811 002474 105076 000000 clrb @(sp) ;yes, remove ext.
|
|
812 002500 005016 clr (sp) ;just one retry
|
|
813 002502 000754 br 13$
|
|
814 002504 012701 000000G 14$: mov #linbuf,r1 ;store msg. in buffer
|
|
815 002510 016700 000316' mov $opnnm,r0
|
|
816 002514 112021 15$: movb (r0)+,(r1)+
|
|
817 002516 001376 bne 15$ ;store file name
|
|
818 002520 005301 dec r1 ;back up pointer
|
|
819 002522 012700 000134' mov #nfmsg,r0
|
|
820 002526 112021 2$: movb (r0)+,(r1)+
|
|
821 002530 001376 bne 2$
|
|
822 002532 putkb #linbuf
|
|
1 .globl putkb
|
|
2 002532 012700 000000G mov #linbuf,r0
|
|
3 002536 call putkb
|
|
1 002536 004767 000000G jsr pc,putkb
|
|
823 002542 012746 000001 mov #1,-(sp) ;indicate error status
|
|
824 002546 005746 tst -(sp) ;and die
|
|
825 002550 000000G $exit
|
|
826
|
|
827 002552 010067 000126' 3$: mov r0,chntbl+srcchn ;store file handle.
|
|
828 002556 052767 000002 000076' bis #io.opn,ioftbl+srcchn ;denote open
|
|
829 002564 005077 000240' clr @cnttbl+srcchn ;beware of dos "feature"
|
|
830 002570 005726 tst (sp)+ ;flush retry indicator
|
|
831 002572 016701 000316' mov $opnnm,r1
|
|
832 002576 012702 000000G mov #err.by,r2
|
|
833 002602 call movbyt
|
|
1 002602 004767 000000G jsr pc,movbyt
|
|
834 002606 105012 clrb (r2)
|
|
835 002610 016700 000000' 4$: mov argc,r0 ;get arg. count
|
|
836 002614 016701 000006' mov argv,r1 ;and vector ptr.
|
|
837 002620 005300 5$: dec r0 ;any left?
|
|
838 002622 002410 blt 7$ ;no
|
|
839 002624 123127 000055 cmpb @(r1)+,#'- ;yes, but is it switch?
|
|
840 002630 001773 beq 5$ ;yes
|
|
841 002632 005005 clr r5 ;no, note another file to go
|
|
842 6$:
|
|
843 002634 012602 10$: mov (sp)+,r2
|
|
844 002636 012601 mov (sp)+,r1
|
|
845 002640 012600 mov (sp)+,r0
|
|
846 002642 return
|
|
1 002642 000207 rts pc
|
|
847 002644 010605 7$: mov sp,r5 ;note no more files
|
|
848 002646 000772 br 6$
|
|
849
|
|
850 002650 027060 000236' 000170' putoc: cmp @cnttbl(r0),ioltbl(r0) ;any room left?
|
|
851 002656 002007 bge 5$ ;no
|
|
852 002660 110170 000110' movb r1,@chrtbl(r0) ;yes
|
|
853 002664 005260 000110' inc chrtbl(r0)
|
|
854 002670 005270 000236' inc @cnttbl(r0)
|
|
855 002674 4$: return
|
|
1 002674 000207 rts pc
|
|
856 002676 032760 000002 000074' 5$: bit #io.opn,ioftbl(r0) ;open?
|
|
857 002704 001773 beq 4$ ;no, return
|
|
858 002706 call zwrite ;yes, dump buffer
|
|
1 002706 004767 000304 jsr pc,zwrite
|
|
859 002712 000756 br putoc ;try again
|
|
859
|
|
860 .sbttl system macro handlers
|
|
861
|
|
862 .if ndf xsml
|
|
863
|
|
864 inisml: ;init sml file
|
|
865 002714 012700 000010 mov #smlchn,r0 ;open 'er up
|
|
866 002720 005760 000074' tst ioftbl(r0)
|
|
867 002724 001042 bne finsml
|
|
868 002726 call zopen
|
|
1 002726 004767 000124 jsr pc,zopen
|
|
869 002732 016701 000032' mov smlnam,r1 ;get pointer to name prefix
|
|
870 002736 012700 000034' mov #smlfil,r0 ;point to destination of complete string
|
|
871 002742 010067 000316' mov r0,$opnnm ;make copy for system call
|
|
872 002746 012702 000010 mov #smlchn,r2 ;set up channel #
|
|
873 002752 call nam.fp ;transfer name to smlfil & find period.
|
|
1 002752 004767 176762 jsr pc,nam.fp
|
|
874 002756 105710 tstb (r0) ;ext. specified?
|
|
875 002760 001002 bne 1$ ;yes
|
|
876 002762 call ap.ext ;no, supply default
|
|
1 002762 004767 177036 jsr pc,ap.ext
|
|
877 002766 005067 000320' 1$: clr $opnmd ;for reading
|
|
878 002772 016746 000320' mov $opnmd,-(sp)
|
|
879 002776 016746 000316' mov $opnnm,-(sp)
|
|
880 003002 005746 tst -(sp)
|
|
881 003004 000000G $open
|
|
882 003006 103003 bcc 99$
|
|
883 003010 062706 000006 add #6.,sp
|
|
884 003014 000406 br finsml
|
|
885 99$:
|
|
886 003016 062706 000006 add #6.,sp
|
|
887 003022 010067 000134' mov r0,chntbl+smlchn
|
|
888 003026 010600 mov sp,r0 ;flag good (non-zero) return
|
|
889 003030 return
|
|
1 003030 000207 rts pc
|
|
890
|
|
891 finsml: ;close out sml file
|
|
892 003032 012700 000010 mov #smlchn,r0 ; and release it
|
|
893 003036 call zrlse
|
|
1 003036 004767 000426 jsr pc,zrlse
|
|
894 003042 005000 clr r0 ;signal that we're through
|
|
895 003044 return
|
|
1 003044 000207 rts pc
|
|
896
|
|
897
|
|
898 003046 .data
|
|
1 003046 entsec .data
|
|
1 000000 .psect .data con
|
|
899 .globl veritas
|
|
900 000000 veritas: .blkw ; harvard retrocomat in effect
|
|
901 ;
|
|
902
|
|
903 000002 entsec impure
|
|
1 000032 .psect impure con
|
|
904
|
|
905 000032 smlnam: .blkw 1
|
|
906 000034 smlfil: .blkw 20 ;macro filename (.sml) goes here
|
|
907
|
|
908 000074 xitsec
|
|
1 000074 entsec .text
|
|
1 003046 .psect .text con
|
|
909
|
|
910 .endc
|
|
910
|
|
911 .sbttl init/read/write routines
|
|
912
|
|
913 .globl zread, zwrite
|
|
914
|
|
915 zinit: ;init a device
|
|
916 003046 052760 000001 000074' bis #io.ini,ioftbl(r0) ;flag as in use
|
|
917 003054 return
|
|
1 003054 000207 rts pc
|
|
918
|
|
919 003056 052760 000002 000074' zopen: bis #io.opn,ioftbl(r0)
|
|
920 003064 016060 000252' 000110' mov buftbl(r0),chrtbl(r0)
|
|
921 003072 005070 000236' clr @cnttbl(r0)
|
|
922 003076 return
|
|
1 003076 000207 rts pc
|
|
923
|
|
924 zread: ;read a line
|
|
925 003100 010046 mov r0,-(sp)
|
|
926 003102 010146 mov r1,-(sp)
|
|
927 003104 010001 mov r0,r1
|
|
928 003106 016067 000252' 000306' mov buftbl(r0),$rdbfp
|
|
929 003114 016067 000170' 000310' mov ioltbl(r0),$rdcnt
|
|
930 003122 016060 000252' 000110' mov buftbl(r0),chrtbl(r0)
|
|
931 003130 016746 000310' mov $rdcnt,-(sp)
|
|
932 003134 016746 000306' mov $rdbfp,-(sp)
|
|
933 003140 016046 000124' mov chntbl(r0),-(sp);get file handle
|
|
934 003144 005746 tst -(sp)
|
|
935 003146 000000G $read
|
|
936 003150 103403 bcs 99$
|
|
937 003152 062706 000010 add #8.,sp
|
|
938 003156 000406 br 1$
|
|
939 99$:
|
|
940 003160 062706 000010 add #8.,sp
|
|
941 003164 052761 000020 000074' bis #io.err,ioftbl(r1)
|
|
942 003172 000406 br 8$
|
|
943 003174 010071 000236' 1$: mov r0,@cnttbl(r1) ;store count of chars. read
|
|
944 003200 001003 bne 8$
|
|
945 003202 052761 000010 000074' bis #io.eof,ioftbl(r1) ;eof if none
|
|
946 8$:
|
|
947 003210 012601 mov (sp)+,r1
|
|
948 003212 012600 mov (sp)+,r0
|
|
949 003214 return
|
|
1 003214 000207 rts pc
|
|
950 zwrite: ;write a line
|
|
951 003216 010046 mov r0,-(sp)
|
|
952 003220 010146 mov r1,-(sp)
|
|
953 003222 010246 mov r2,-(sp)
|
|
954 003224 010002 mov r0,r2
|
|
955 003226 032760 000002 000074' bit #io.opn,ioftbl(r0) ;only if open
|
|
956 003234 001471 beq 9$
|
|
957 003236 016001 000252' mov buftbl(r0),r1
|
|
958 003242 017000 000236' mov @cnttbl(r0),r0
|
|
959 003246 001457 beq 4$ ;and non-zero count
|
|
960 003250 005762 000266' tst bintbl(r2) ;binary?
|
|
961 003254 003427 ble 59$ ; no
|
|
962 003256 010246 mov r2,-(sp)
|
|
963 003260 062700 000004 add #4,r0
|
|
964 003264 010041 mov r0,-(r1)
|
|
965 003266 012741 000001 mov #1,-(r1)
|
|
966 003272 010046 mov r0,-(sp)
|
|
967 003274 060100 add r1,r0
|
|
968 003276 005046 clr -(sp)
|
|
969 003300 112102 51$: movb (r1)+,r2
|
|
970 003302 060216 add r2,(sp)
|
|
971 003304 020100 cmp r1,r0
|
|
972 003306 103774 blo 51$
|
|
973 003310 005416 neg (sp)
|
|
974 003312 112611 movb (sp)+,(r1)
|
|
975 003314 105061 000001 clrb 1(r1)
|
|
976 003320 012600 mov (sp)+,r0
|
|
977 003322 160001 sub r0,r1
|
|
978 003324 052700 000001 bis #1,r0
|
|
979 003330 005200 inc r0
|
|
980 003332 012602 mov (sp)+,r2
|
|
981 003334 010067 000304' 59$: mov r0,$wrcnt ;store byte count
|
|
982 003340 010167 000302' mov r1,$wrbfp ;and buffer adr.
|
|
983 003344 016746 000304' mov $wrcnt,-(sp)
|
|
984 003350 016746 000302' mov $wrbfp,-(sp)
|
|
985 003354 016246 000124' mov chntbl(r2),-(sp);get file handle
|
|
986 003360 005746 tst -(sp)
|
|
987 003362 000000G $write
|
|
988 003364 103403 bcs 99$
|
|
989 003366 062706 000010 add #8.,sp
|
|
990 003372 000405 br 4$
|
|
991 99$:
|
|
992 003374 062706 000010 add #8.,sp
|
|
993 003400 052762 000020 000074' bis #io.err,ioftbl(r2) ;error
|
|
994 003406 005072 000236' 4$: clr @cnttbl(r2) ;clear count initially
|
|
995 003412 016262 000252' 000110' mov buftbl(r2),chrtbl(r2) ;point to beg. of buffer
|
|
996 003420 012602 9$: mov (sp)+,r2
|
|
997 003422 012601 mov (sp)+,r1
|
|
998 003424 012600 mov (sp)+,r0
|
|
999 003426 return
|
|
1 003426 000207 rts pc
|
|
999
|
|
1000 zclose: ;close file
|
|
1001 003430 032760 000002 000074' bit #io.opn,ioftbl(r0) ;is file open?
|
|
1002 003436 001413 beq 1$ ;no
|
|
1003 003440 010046 mov r0,-(sp) ;yes, save r0
|
|
1004 003442 016046 000124' mov chntbl(r0),-(sp) ;get file handle
|
|
1005 003446 005746 tst -(sp) ;close
|
|
1006 003450 000000G $close
|
|
1007 003452 022626 cmp (sp)+,(sp)+
|
|
1008 003454 012600 mov (sp)+,r0
|
|
1009 003456 005060 000074' clr ioftbl(r0)
|
|
1010 003462 005070 000236' clr @cnttbl(r0)
|
|
1011 003466 1$: return
|
|
1 003466 000207 rts pc
|
|
1012
|
|
1013 zrlse: ;close and release file
|
|
1014 003470 call zclose ;be sure it's closed
|
|
1 003470 004767 177734 jsr pc,zclose
|
|
1015 003474 005060 000074' clr ioftbl(r0) ;clear device table
|
|
1016 003500 return
|
|
1 003500 000207 rts pc
|
|
1016
|
|
1017 .sbttl messages
|
|
1018
|
|
1019 003502 entsec imppas
|
|
1 000000 .psect imppas con
|
|
1020 000000 pagnum: .blkw ;page number
|
|
1021 000002 linnum: .blkw 2 ;line number
|
|
1022 000006 fileln:: .blkw 1 ; true line number in file
|
|
1023 000010 entsec mixed
|
|
1 000124 .psect mixed con
|
|
1024
|
|
1025
|
|
1026 .if ndf xtime
|
|
1027 000124 060 060 055 dattim: .ascii /00-xxx-00 /
|
|
000127 170 170 170
|
|
000132 055 060 060
|
|
000135 040
|
|
1028 000136 060 060 072 datti1: .ascii /00:00/
|
|
000141 060 060
|
|
1029 000143 072 060 060 datti2: .ascii /:00/
|
|
1030 .even
|
|
1031 .endc
|
|
1032
|
|
1033 000146 entsec dpure
|
|
1 000024 .psect dpure con
|
|
1034
|
|
1035 ;endp1m: .asciz /end of pass/
|
|
1036 000024 155 141 143 macerr: .asciz /macro text overflow/
|
|
000027 162 157 040
|
|
000032 164 145 170
|
|
000035 164 040 157
|
|
000040 166 145 162
|
|
000043 146 154 157
|
|
000046 167 000
|
|
1037 000050 163 171 155 symerr: .asciz /symbol table overflow/
|
|
000053 142 157 154
|
|
000056 040 164 141
|
|
000061 142 154 145
|
|
000064 040 157 166
|
|
000067 145 162 146
|
|
000072 154 157 167
|
|
000075 000
|
|
1038 000076 142 141 144 swcerr: .asciz /bad switch/
|
|
000101 040 163 167
|
|
000104 151 164 143
|
|
000107 150 000
|
|
1039 000111 145 162 162 finmsg: .asciz /errors detected: /
|
|
000114 157 162 163
|
|
000117 040 144 145
|
|
000122 164 145 143
|
|
000125 164 145 144
|
|
000130 072 040 040
|
|
000133 000
|
|
1040
|
|
1041 000134 040 156 157 nfmsg: .asciz / not found/
|
|
000137 164 040 146
|
|
000142 157 165 156
|
|
000145 144 000
|
|
1042 000147 040 055 040 ncmsg: .asciz / - can't create/
|
|
000152 143 141 156
|
|
000155 047 164 040
|
|
000160 143 162 145
|
|
000163 141 164 145
|
|
000166 000
|
|
1043
|
|
1044 000167 000 .even
|
|
1045
|
|
1046 000170 entsec mixed
|
|
1 000146 .psect mixed con
|
|
1047 000146 000150' vernam:: 1$ ; addr of default logo
|
|
1048 000150 125 103 102 1$: .asciz /UCB m11 v1.2 /
|
|
000153 040 155 061
|
|
000156 061 040 166
|
|
000161 061 056 062
|
|
000164 040 000
|
|
1049 000166 110 141 162 harvid: .asciz /Harvard m11 /
|
|
000171 166 141 162
|
|
000174 144 040 155
|
|
000177 061 061 040
|
|
000202 000
|
|
1050 000203 104 105 103 decid: .asciz /DEC Macro-11 /
|
|
000206 040 115 141
|
|
000211 143 162 157
|
|
000214 055 061 061
|
|
000217 040 000
|
|
1051 000221 000 .even
|
|
1052
|
|
1053 000222 xitsec
|
|
1 000222 entsec .text
|
|
1 003502 .psect .text con
|
|
1053
|
|
1054 .sbttl i/o tables
|
|
1055
|
|
1056 .list meb
|
|
1057 ;i/o flags
|
|
1058 000001 io.ini= 000001 ;initted
|
|
1059 000002 io.opn= 000002 ;opened
|
|
1060 000004 io.tty= 000004 ;device is tty
|
|
1061 000010 io.eof= 000010 ;eof seen
|
|
1062 000020 io.err= 000020 ;error encountered
|
|
1063 000040 io.eoi= 000040 ;end of input
|
|
1064 100000 io.out= 100000 ;output device
|
|
1065
|
|
1066 003502 entsec impure
|
|
1 000074 .psect impure con
|
|
1067 000074 ioftbl: .blkw maxchn/2 ;i/o flag table
|
|
1068
|
|
1069 000110 entsec dpure
|
|
1 000170 .psect dpure con
|
|
1070 ioltbl: ;i/o length table
|
|
1071 .macro setchn zchan,zlnk,zbuf,ztype,zext,zlen
|
|
1072 .list
|
|
1073 .word zbuf'len
|
|
1074 .nlist
|
|
1075 .endm
|
|
1076 000170 genchn
|
|
1 000170 setchn cmo, cmo, cmo, 0, ,80.
|
|
1 .list
|
|
2 000170 000120 .word cmolen
|
|
3 .nlist
|
|
2 000172 setchn src, src, src, 0, m11, 132.
|
|
1 .list
|
|
2 000172 000204 .word srclen
|
|
3 .nlist
|
|
3 000174 setchn lst, lst, lst, , lst, 512.
|
|
1 .list
|
|
2 000174 001000 .word lstlen
|
|
3 .nlist
|
|
4 000176 setchn obj, obj, obj, 1, obj, 42.
|
|
1 .list
|
|
2 000176 000052 .word objlen
|
|
3 .nlist
|
|
5 .if ndf xsml
|
|
6 000200 setchn sml, sml, sml, 0, sml, 80.
|
|
1 .list
|
|
2 000200 000120 .word smllen
|
|
3 .nlist
|
|
7 .endc
|
|
8 .if ndf xcref
|
|
9 000202 setchn crf, crf, crf, , xrf, 512.
|
|
1 .list
|
|
2 000202 001000 .word crflen
|
|
3 .nlist
|
|
10 .endc
|
|
1077
|
|
1078 .list
|
|
1079
|
|
1080 .macro setchn zchan,zlnk,zbuf,ztype,zext,zlen
|
|
1081 .list
|
|
1082 .if nb zext
|
|
1083 zchan'ext: .asclc zext
|
|
1084 .endc
|
|
1085 .nlist
|
|
1086 .endm
|
|
1087
|
|
1088 000204 genchn
|
|
1 000204 setchn cmo, cmo, cmo, 0, ,80.
|
|
1 .list
|
|
2 .if nb
|
|
3 cmoext: .asclc
|
|
4 .endc
|
|
5 .nlist
|
|
2 000204 setchn src, src, src, 0, m11, 132.
|
|
1 .list
|
|
2 .if nb m11
|
|
3 000204 srcext: .asclc m11
|
|
1 .nlist
|
|
2
|
|
3 .irpc x, ^%m11%
|
|
4
|
|
5 .if ge ''x-101
|
|
6 .if le ''x-132
|
|
7 .byte ''x+40
|
|
8 .iff
|
|
9 .byte ''x
|
|
10 .endc
|
|
11 .iff
|
|
12 .byte ''x
|
|
13 .endc
|
|
14
|
|
15 .endm
|
|
1
|
|
2 000054 .if ge 'm-101
|
|
3 000023 .if le 'm-132
|
|
4 .byte 'm+40
|
|
5 .iff
|
|
6 000204 155 .byte 'm
|
|
7 .endc
|
|
8 .iff
|
|
9 .byte 'm
|
|
10 .endc
|
|
11
|
|
12
|
|
13 177760 .if ge '1-101
|
|
14 .if le '1-132
|
|
15 .byte '1+40
|
|
16 .iff
|
|
17 .byte '1
|
|
18 .endc
|
|
19 .iff
|
|
20 000205 061 .byte '1
|
|
21 .endc
|
|
22
|
|
23
|
|
24 177760 .if ge '1-101
|
|
25 .if le '1-132
|
|
26 .byte '1+40
|
|
27 .iff
|
|
28 .byte '1
|
|
29 .endc
|
|
30 .iff
|
|
31 000206 061 .byte '1
|
|
32 .endc
|
|
33
|
|
16
|
|
17 000207 000 .byte 0
|
|
18
|
|
19 .list
|
|
4 .endc
|
|
5 .nlist
|
|
3 000210 setchn lst, lst, lst, , lst, 512.
|
|
1 .list
|
|
2 .if nb lst
|
|
3 000210 lstext: .asclc lst
|
|
1 .nlist
|
|
2
|
|
3 .irpc x, ^%lst%
|
|
4
|
|
5 .if ge ''x-101
|
|
6 .if le ''x-132
|
|
7 .byte ''x+40
|
|
8 .iff
|
|
9 .byte ''x
|
|
10 .endc
|
|
11 .iff
|
|
12 .byte ''x
|
|
13 .endc
|
|
14
|
|
15 .endm
|
|
1
|
|
2 000053 .if ge 'l-101
|
|
3 000022 .if le 'l-132
|
|
4 .byte 'l+40
|
|
5 .iff
|
|
6 000210 154 .byte 'l
|
|
7 .endc
|
|
8 .iff
|
|
9 .byte 'l
|
|
10 .endc
|
|
11
|
|
12
|
|
13 000062 .if ge 's-101
|
|
14 000031 .if le 's-132
|
|
15 .byte 's+40
|
|
16 .iff
|
|
17 000211 163 .byte 's
|
|
18 .endc
|
|
19 .iff
|
|
20 .byte 's
|
|
21 .endc
|
|
22
|
|
23
|
|
24 000063 .if ge 't-101
|
|
25 000032 .if le 't-132
|
|
26 .byte 't+40
|
|
27 .iff
|
|
28 000212 164 .byte 't
|
|
29 .endc
|
|
30 .iff
|
|
31 .byte 't
|
|
32 .endc
|
|
33
|
|
16
|
|
17 000213 000 .byte 0
|
|
18
|
|
19 .list
|
|
4 .endc
|
|
5 .nlist
|
|
4 000214 setchn obj, obj, obj, 1, obj, 42.
|
|
1 .list
|
|
2 .if nb obj
|
|
3 000214 objext: .asclc obj
|
|
1 .nlist
|
|
2
|
|
3 .irpc x, ^%obj%
|
|
4
|
|
5 .if ge ''x-101
|
|
6 .if le ''x-132
|
|
7 .byte ''x+40
|
|
8 .iff
|
|
9 .byte ''x
|
|
10 .endc
|
|
11 .iff
|
|
12 .byte ''x
|
|
13 .endc
|
|
14
|
|
15 .endm
|
|
1
|
|
2 000056 .if ge 'o-101
|
|
3 000025 .if le 'o-132
|
|
4 .byte 'o+40
|
|
5 .iff
|
|
6 000214 157 .byte 'o
|
|
7 .endc
|
|
8 .iff
|
|
9 .byte 'o
|
|
10 .endc
|
|
11
|
|
12
|
|
13 000041 .if ge 'b-101
|
|
14 000010 .if le 'b-132
|
|
15 .byte 'b+40
|
|
16 .iff
|
|
17 000215 142 .byte 'b
|
|
18 .endc
|
|
19 .iff
|
|
20 .byte 'b
|
|
21 .endc
|
|
22
|
|
23
|
|
24 000051 .if ge 'j-101
|
|
25 000020 .if le 'j-132
|
|
26 .byte 'j+40
|
|
27 .iff
|
|
28 000216 152 .byte 'j
|
|
29 .endc
|
|
30 .iff
|
|
31 .byte 'j
|
|
32 .endc
|
|
33
|
|
16
|
|
17 000217 000 .byte 0
|
|
18
|
|
19 .list
|
|
4 .endc
|
|
5 .nlist
|
|
5 .if ndf xsml
|
|
6 000220 setchn sml, sml, sml, 0, sml, 80.
|
|
1 .list
|
|
2 .if nb sml
|
|
3 000220 smlext: .asclc sml
|
|
1 .nlist
|
|
2
|
|
3 .irpc x, ^%sml%
|
|
4
|
|
5 .if ge ''x-101
|
|
6 .if le ''x-132
|
|
7 .byte ''x+40
|
|
8 .iff
|
|
9 .byte ''x
|
|
10 .endc
|
|
11 .iff
|
|
12 .byte ''x
|
|
13 .endc
|
|
14
|
|
15 .endm
|
|
1
|
|
2 000062 .if ge 's-101
|
|
3 000031 .if le 's-132
|
|
4 .byte 's+40
|
|
5 .iff
|
|
6 000220 163 .byte 's
|
|
7 .endc
|
|
8 .iff
|
|
9 .byte 's
|
|
10 .endc
|
|
11
|
|
12
|
|
13 000054 .if ge 'm-101
|
|
14 000023 .if le 'm-132
|
|
15 .byte 'm+40
|
|
16 .iff
|
|
17 000221 155 .byte 'm
|
|
18 .endc
|
|
19 .iff
|
|
20 .byte 'm
|
|
21 .endc
|
|
22
|
|
23
|
|
24 000053 .if ge 'l-101
|
|
25 000022 .if le 'l-132
|
|
26 .byte 'l+40
|
|
27 .iff
|
|
28 000222 154 .byte 'l
|
|
29 .endc
|
|
30 .iff
|
|
31 .byte 'l
|
|
32 .endc
|
|
33
|
|
16
|
|
17 000223 000 .byte 0
|
|
18
|
|
19 .list
|
|
4 .endc
|
|
5 .nlist
|
|
7 .endc
|
|
8 .if ndf xcref
|
|
9 000224 setchn crf, crf, crf, , xrf, 512.
|
|
1 .list
|
|
2 .if nb xrf
|
|
3 000224 crfext: .asclc xrf
|
|
1 .nlist
|
|
2
|
|
3 .irpc x, ^%xrf%
|
|
4
|
|
5 .if ge ''x-101
|
|
6 .if le ''x-132
|
|
7 .byte ''x+40
|
|
8 .iff
|
|
9 .byte ''x
|
|
10 .endc
|
|
11 .iff
|
|
12 .byte ''x
|
|
13 .endc
|
|
14
|
|
15 .endm
|
|
1
|
|
2 000067 .if ge 'x-101
|
|
3 000036 .if le 'x-132
|
|
4 .byte 'x+40
|
|
5 .iff
|
|
6 000224 170 .byte 'x
|
|
7 .endc
|
|
8 .iff
|
|
9 .byte 'x
|
|
10 .endc
|
|
11
|
|
12
|
|
13 000061 .if ge 'r-101
|
|
14 000030 .if le 'r-132
|
|
15 .byte 'r+40
|
|
16 .iff
|
|
17 000225 162 .byte 'r
|
|
18 .endc
|
|
19 .iff
|
|
20 .byte 'r
|
|
21 .endc
|
|
22
|
|
23
|
|
24 000045 .if ge 'f-101
|
|
25 000014 .if le 'f-132
|
|
26 .byte 'f+40
|
|
27 .iff
|
|
28 000226 146 .byte 'f
|
|
29 .endc
|
|
30 .iff
|
|
31 .byte 'f
|
|
32 .endc
|
|
33
|
|
16
|
|
17 000227 000 .byte 0
|
|
18
|
|
19 .list
|
|
4 .endc
|
|
5 .nlist
|
|
10 .endc
|
|
1089
|
|
1090 .even
|
|
1091 000230 000000 nulext: .word 0
|
|
1092
|
|
1093
|
|
1094 000232 entsec mixed
|
|
1 000222 .psect mixed con
|
|
1095 exttbl:
|
|
1096 .macro setchn zchan,zlnk,zbuf,ztype,zext,zlen
|
|
1097 .list
|
|
1098 .if nb zext
|
|
1099 .word zchan'ext
|
|
1100 .iff
|
|
1101 .word nulext
|
|
1102 .endc
|
|
1103 .nlist
|
|
1104 .endm
|
|
1105
|
|
1106 000222 genchn
|
|
1 000222 setchn cmo, cmo, cmo, 0, ,80.
|
|
1 .list
|
|
2 .if nb
|
|
3 .word cmoext
|
|
4 .iff
|
|
5 000222 000230' .word nulext
|
|
6 .endc
|
|
7 .nlist
|
|
2 000224 setchn src, src, src, 0, m11, 132.
|
|
1 .list
|
|
2 .if nb m11
|
|
3 000224 000204' .word srcext
|
|
4 .iff
|
|
5 .word nulext
|
|
6 .endc
|
|
7 .nlist
|
|
3 000226 setchn lst, lst, lst, , lst, 512.
|
|
1 .list
|
|
2 .if nb lst
|
|
3 000226 000210' .word lstext
|
|
4 .iff
|
|
5 .word nulext
|
|
6 .endc
|
|
7 .nlist
|
|
4 000230 setchn obj, obj, obj, 1, obj, 42.
|
|
1 .list
|
|
2 .if nb obj
|
|
3 000230 000214' .word objext
|
|
4 .iff
|
|
5 .word nulext
|
|
6 .endc
|
|
7 .nlist
|
|
5 .if ndf xsml
|
|
6 000232 setchn sml, sml, sml, 0, sml, 80.
|
|
1 .list
|
|
2 .if nb sml
|
|
3 000232 000220' .word smlext
|
|
4 .iff
|
|
5 .word nulext
|
|
6 .endc
|
|
7 .nlist
|
|
7 .endc
|
|
8 .if ndf xcref
|
|
9 000234 setchn crf, crf, crf, , xrf, 512.
|
|
1 .list
|
|
2 .if nb xrf
|
|
3 000234 000224' .word crfext
|
|
4 .iff
|
|
5 .word nulext
|
|
6 .endc
|
|
7 .nlist
|
|
10 .endc
|
|
1106
|
|
1107 000236 entsec mixed
|
|
1 000236 .psect mixed con
|
|
1108 cnttbl: ;pointer to counts
|
|
1109 .macro setchn zchan,zlnk,zbuf,ztype,zext,zlen
|
|
1110 .list
|
|
1111 .if nb ztype
|
|
1112 .word zbuf'buf-2
|
|
1113 .iff
|
|
1114 .word 0
|
|
1115 .endc
|
|
1116 .nlist
|
|
1117 .endm
|
|
1118 000236 genchn
|
|
1 000236 setchn cmo, cmo, cmo, 0, ,80.
|
|
1 .list
|
|
2 .if nb 0
|
|
3 000236 000144' .word cmobuf-2
|
|
4 .iff
|
|
5 .word 0
|
|
6 .endc
|
|
7 .nlist
|
|
2 000240 setchn src, src, src, 0, m11, 132.
|
|
1 .list
|
|
2 .if nb 0
|
|
3 000240 000276' .word srcbuf-2
|
|
4 .iff
|
|
5 .word 0
|
|
6 .endc
|
|
7 .nlist
|
|
3 000242 setchn lst, lst, lst, , lst, 512.
|
|
1 .list
|
|
2 .if nb
|
|
3 .word lstbuf-2
|
|
4 .iff
|
|
5 000242 000000 .word 0
|
|
6 .endc
|
|
7 .nlist
|
|
4 000244 setchn obj, obj, obj, 1, obj, 42.
|
|
1 .list
|
|
2 .if nb 1
|
|
3 000244 000514' .word objbuf-2
|
|
4 .iff
|
|
5 .word 0
|
|
6 .endc
|
|
7 .nlist
|
|
5 .if ndf xsml
|
|
6 000246 setchn sml, sml, sml, 0, sml, 80.
|
|
1 .list
|
|
2 .if nb 0
|
|
3 000246 000600' .word smlbuf-2
|
|
4 .iff
|
|
5 .word 0
|
|
6 .endc
|
|
7 .nlist
|
|
7 .endc
|
|
8 .if ndf xcref
|
|
9 000250 setchn crf, crf, crf, , xrf, 512.
|
|
1 .list
|
|
2 .if nb
|
|
3 .word crfbuf-2
|
|
4 .iff
|
|
5 000250 000000 .word 0
|
|
6 .endc
|
|
7 .nlist
|
|
10 .endc
|
|
1119
|
|
1120
|
|
1121 buftbl: ;pointers to buffers
|
|
1122 .macro setchn zchan,zlnk,zbuf,ztype,zext,zlen
|
|
1123 .list
|
|
1124 .if nb ztype
|
|
1125 .word zbuf'buf
|
|
1126 .iff
|
|
1127 .word 0
|
|
1128 .endc
|
|
1129 .nlist
|
|
1130 .endm
|
|
1131 000252 genchn
|
|
1 000252 setchn cmo, cmo, cmo, 0, ,80.
|
|
1 .list
|
|
2 .if nb 0
|
|
3 000252 000146' .word cmobuf
|
|
4 .iff
|
|
5 .word 0
|
|
6 .endc
|
|
7 .nlist
|
|
2 000254 setchn src, src, src, 0, m11, 132.
|
|
1 .list
|
|
2 .if nb 0
|
|
3 000254 000300' .word srcbuf
|
|
4 .iff
|
|
5 .word 0
|
|
6 .endc
|
|
7 .nlist
|
|
3 000256 setchn lst, lst, lst, , lst, 512.
|
|
1 .list
|
|
2 .if nb
|
|
3 .word lstbuf
|
|
4 .iff
|
|
5 000256 000000 .word 0
|
|
6 .endc
|
|
7 .nlist
|
|
4 000260 setchn obj, obj, obj, 1, obj, 42.
|
|
1 .list
|
|
2 .if nb 1
|
|
3 000260 000516' .word objbuf
|
|
4 .iff
|
|
5 .word 0
|
|
6 .endc
|
|
7 .nlist
|
|
5 .if ndf xsml
|
|
6 000262 setchn sml, sml, sml, 0, sml, 80.
|
|
1 .list
|
|
2 .if nb 0
|
|
3 000262 000602' .word smlbuf
|
|
4 .iff
|
|
5 .word 0
|
|
6 .endc
|
|
7 .nlist
|
|
7 .endc
|
|
8 .if ndf xcref
|
|
9 000264 setchn crf, crf, crf, , xrf, 512.
|
|
1 .list
|
|
2 .if nb
|
|
3 .word crfbuf
|
|
4 .iff
|
|
5 000264 000000 .word 0
|
|
6 .endc
|
|
7 .nlist
|
|
10 .endc
|
|
1132
|
|
1133 000266 entsec impure
|
|
1 000110 .psect impure con
|
|
1134 chrtbl: ;char pointer table
|
|
1135 000110 .blkw maxchn/2
|
|
1136
|
|
1137
|
|
1138 chntbl: ;channel <--> file handle table
|
|
1139 000124 .blkw maxchn/2
|
|
1140
|
|
1141 000140 entsec mixed
|
|
1 000266 .psect mixed con
|
|
1142
|
|
1143 bintbl:
|
|
1144 .macro setchn zchan,zlnk,zbuf,ztype,zext,zlen
|
|
1145 .list
|
|
1146 .if nb ztype
|
|
1147 .word ztype
|
|
1148 .iff
|
|
1149 .word 0
|
|
1150 .endc
|
|
1151 .nlist
|
|
1152 .endm
|
|
1153
|
|
1154 000266 genchn
|
|
1 000266 setchn cmo, cmo, cmo, 0, ,80.
|
|
1 .list
|
|
2 .if nb 0
|
|
3 000266 000000 .word 0
|
|
4 .iff
|
|
5 .word 0
|
|
6 .endc
|
|
7 .nlist
|
|
2 000270 setchn src, src, src, 0, m11, 132.
|
|
1 .list
|
|
2 .if nb 0
|
|
3 000270 000000 .word 0
|
|
4 .iff
|
|
5 .word 0
|
|
6 .endc
|
|
7 .nlist
|
|
3 000272 setchn lst, lst, lst, , lst, 512.
|
|
1 .list
|
|
2 .if nb
|
|
3 .word
|
|
4 .iff
|
|
5 000272 000000 .word 0
|
|
6 .endc
|
|
7 .nlist
|
|
4 000274 setchn obj, obj, obj, 1, obj, 42.
|
|
1 .list
|
|
2 .if nb 1
|
|
3 000274 000001 .word 1
|
|
4 .iff
|
|
5 .word 0
|
|
6 .endc
|
|
7 .nlist
|
|
5 .if ndf xsml
|
|
6 000276 setchn sml, sml, sml, 0, sml, 80.
|
|
1 .list
|
|
2 .if nb 0
|
|
3 000276 000000 .word 0
|
|
4 .iff
|
|
5 .word 0
|
|
6 .endc
|
|
7 .nlist
|
|
7 .endc
|
|
8 .if ndf xcref
|
|
9 000300 setchn crf, crf, crf, , xrf, 512.
|
|
1 .list
|
|
2 .if nb
|
|
3 .word
|
|
4 .iff
|
|
5 000300 000000 .word 0
|
|
6 .endc
|
|
7 .nlist
|
|
10 .endc
|
|
1154
|
|
1155 .macro setchn zchan,zlnk,zbuf,ztype,zext,zlen
|
|
1156 .if nb <ztype>
|
|
1157 entsec impure
|
|
1158 .list
|
|
1159
|
|
1160 .blkw 3
|
|
1161 zbuf'buf: .blkw <zbuf'len+1>/2+2
|
|
1162 .nlist
|
|
1163 .endc
|
|
1164 .endm
|
|
1165
|
|
1166 000302 genchn
|
|
1 000302 setchn cmo, cmo, cmo, 0, ,80.
|
|
1 .if nb <0>
|
|
2 000302 entsec impure
|
|
1 000140 .psect impure con
|
|
3 .list
|
|
4
|
|
5 000140 .blkw 3
|
|
6 000146 cmobuf: .blkw <cmolen+1>/2+2
|
|
7 .nlist
|
|
8 .endc
|
|
2 000272 setchn src, src, src, 0, m11, 132.
|
|
1 .if nb <0>
|
|
2 000272 entsec impure
|
|
1 000272 .psect impure con
|
|
3 .list
|
|
4
|
|
5 000272 .blkw 3
|
|
6 000300 srcbuf: .blkw <srclen+1>/2+2
|
|
7 .nlist
|
|
8 .endc
|
|
3 000510 setchn lst, lst, lst, , lst, 512.
|
|
1 .if nb <>
|
|
2 entsec impure
|
|
3 .list
|
|
4
|
|
5 .blkw 3
|
|
6 lstbuf: .blkw <lstlen+1>/2+2
|
|
7 .nlist
|
|
8 .endc
|
|
4 000510 setchn obj, obj, obj, 1, obj, 42.
|
|
1 .if nb <1>
|
|
2 000510 entsec impure
|
|
1 000510 .psect impure con
|
|
3 .list
|
|
4
|
|
5 000510 .blkw 3
|
|
6 000516 objbuf: .blkw <objlen+1>/2+2
|
|
7 .nlist
|
|
8 .endc
|
|
5 .if ndf xsml
|
|
6 000574 setchn sml, sml, sml, 0, sml, 80.
|
|
1 .if nb <0>
|
|
2 000574 entsec impure
|
|
1 000574 .psect impure con
|
|
3 .list
|
|
4
|
|
5 000574 .blkw 3
|
|
6 000602 smlbuf: .blkw <smllen+1>/2+2
|
|
7 .nlist
|
|
8 .endc
|
|
7 .endc
|
|
8 .if ndf xcref
|
|
9 000726 setchn crf, crf, crf, , xrf, 512.
|
|
1 .if nb <>
|
|
2 entsec impure
|
|
3 .list
|
|
4
|
|
5 .blkw 3
|
|
6 crfbuf: .blkw <crflen+1>/2+2
|
|
7 .nlist
|
|
8 .endc
|
|
10 .endc
|
|
1167
|
|
1168
|
|
1169 000726 entsec mixed
|
|
1 000302 .psect mixed con
|
|
1170 000302 $wrbfp: .blkw 1
|
|
1171 000304 $wrcnt: .blkw 1
|
|
1172
|
|
1173 000306 $rdbfp: .blkw 1
|
|
1174 000310 $rdcnt: .blkw 1
|
|
1175
|
|
1176 000312 $crtnm: .blkw 1
|
|
1177 000314 000644 $crtmd: .word 0644
|
|
1178
|
|
1179
|
|
1180 000316 $opnnm: .blkw 1
|
|
1181 000320 $opnmd: .blkw 1
|
|
1182
|
|
1183 000322 $brkad: .blkw 1
|
|
1184
|
|
1185 000324 xitsec
|
|
1 000324 entsec .text
|
|
1 003502 .psect .text con
|
|
1185
|
|
1186 .sbttl cross reference handlers
|
|
1187
|
|
1188 .if ndf xcref
|
|
1189
|
|
1190 crfset: ;cref switch processor
|
|
1191 003502 005767 000000G tst pass
|
|
1192 003506 001424 beq 9$
|
|
1193 003510 012700 000012 mov #crfchn,r0
|
|
1194 003514 call openo
|
|
1 003514 004767 176012 jsr pc,openo
|
|
1195 003520 032767 000002 000106' bit #io.opn,ioftbl+crfchn ;successful?
|
|
1196 003526 001414 beq 9$ ;no
|
|
1197 003530 strcpy #linbuf,#crefil
|
|
1 003530 010046 mov r0,-(sp)
|
|
2 003532 010146 mov r1,-(sp)
|
|
3 003534 012700 000000G mov #linbuf,r0
|
|
4 003540 012701 000014' mov #crefil,r1
|
|
5 32768$:
|
|
6 003544 112021 movb (r0)+,(r1)+
|
|
7 003546 001376 bne 32768$
|
|
8
|
|
9 003550 012601 mov (sp)+,r1
|
|
10 003552 012600 mov (sp)+,r0
|
|
1198 003554 010667 000740' mov sp,crfpnt ;yes, flag non-null
|
|
1199 003560 9$: return
|
|
1 003560 000207 rts pc
|
|
1199
|
|
1200 .globl crfdef, crfref, rolndx, r50unp
|
|
1201
|
|
1202 .nlist meb
|
|
1203 .if df xcref
|
|
1204 crfref: crfdef: return
|
|
1205 .iff
|
|
1206
|
|
1207 .globl symbol
|
|
1208
|
|
1209 003562 005267 000002' crfdef: inc crfdfl ;cref definition
|
|
1210 003566 005767 000740' crfref: tst crfpnt ;any cref output at this time?
|
|
1211 003572 jeq 9$ ; no
|
|
1 003572 001002 bne 32768$
|
|
2 003574 000167 000272 jmp 9$
|
|
3 32768$:
|
|
1212 003600 005767 000000G tst pass
|
|
1213 003604 jeq 9$ ; experiment
|
|
1 003604 001002 bne 32769$
|
|
2 003606 000167 000260 jmp 9$
|
|
3 32769$:
|
|
1214 003612 005767 000000' tst pagnum ;started yet?
|
|
1215 003616 jeq 9$ ; no, forget it
|
|
1 003616 001002 bne 32770$
|
|
2 003620 000167 000246 jmp 9$
|
|
3 32770$:
|
|
1216 003624 032767 000000G 000000G bit #ed.crf,edmask ; cref might be turned off for a while
|
|
1217 003632 jeq 9$
|
|
1 003632 001002 bne 32771$
|
|
2 003634 000167 000232 jmp 9$
|
|
3 32771$:
|
|
1218 003640 call savreg
|
|
1 003640 004767 000000G jsr pc,savreg
|
|
1219 003644 026767 000746' 000000' 1$: cmp crfpag,pagnum ;new page?
|
|
1220 003652 103011 bhis 2$ ; no
|
|
1221 003654 012701 000002 mov #cr.pag,r1 ;yes, send flag
|
|
1222 003660 call putxrf
|
|
1 003660 004767 000312 jsr pc,putxrf
|
|
1223 003664 005267 000746' inc crfpag
|
|
1224 003670 005067 000750' clr crflin
|
|
1225 003674 000763 br 1$
|
|
1226
|
|
1227 003676 026767 000750' 000002' 2$: cmp crflin,linnum ;new line number?
|
|
1228 003704 103007 bhis 3$ ; no
|
|
1229 003706 012701 000003 mov #cr.lin,r1
|
|
1230 003712 call putxrf
|
|
1 003712 004767 000260 jsr pc,putxrf
|
|
1231 003716 005267 000750' inc crflin
|
|
1232 003722 000765 br 2$
|
|
1233
|
|
1234 003724 005767 000000G 3$: tst symbol ;ignore null symbols
|
|
1235 003730 jeq 8$
|
|
1 003730 001002 bne 32772$
|
|
2 003732 000167 000134 jmp 8$
|
|
3 32772$:
|
|
1236 003736 012701 000232' mov #crftyp,r1
|
|
1237 4$:
|
|
1238 003742 126721 000000G cmpb rolndx,(r1)+ ;map roll number to cref type
|
|
1239 003746 001375 bne 4$
|
|
1240 003750 162701 000213' sub #crftyp+1-cr.sym,r1
|
|
1241 003754 call tstreg
|
|
1 003754 004767 000120 jsr pc,tstreg
|
|
1242 003760 005767 000742' tst xxxreg
|
|
1243 003764 001402 beq 44$
|
|
1244 003766 112701 000025 movb #25,r1
|
|
1245 44$:
|
|
1246 003772 005067 000742' clr xxxreg
|
|
1247 003776 call putxrf
|
|
1 003776 004767 000174 jsr pc,putxrf
|
|
1248 004002 012702 000726' mov #crfsym,r2 ;point to where symbol gets unpacked to
|
|
1249 004006 call r50unp ;unpack the symbol
|
|
1 004006 004767 000000G jsr pc,r50unp
|
|
1250 004012 012702 000726' mov #crfsym,r2 ;point to beginning of unpacked symbol
|
|
1251 004016 112201 5$: movb (r2)+,r1 ;get symbol char.
|
|
1252 004020 120127 000040 cmpb r1,#space ;space is end
|
|
1253 004024 001405 beq 55$
|
|
1254 004026 call putxrf ;non-space - output it
|
|
1 004026 004767 000144 jsr pc,putxrf
|
|
1255 004032 020227 000734' cmp r2,#crfsym+6 ;max. of 6 chars.
|
|
1256 004036 103767 blo 5$
|
|
1257 004040 016701 000002' 55$: mov crfdfl,r1 ;set "#" bit
|
|
1258 004044 105767 000000G tstb opclas
|
|
1259 004050 100002 bpl 6$ ;branch if no "*"
|
|
1260 004052 052701 000002 bis #2,r1
|
|
1261 004056 052701 000020 6$: bis #cr.sym,r1 ;set terminator
|
|
1262 004062 call putxrf ;send it
|
|
1 004062 004767 000110 jsr pc,putxrf
|
|
1263 004066 call ckvtc ;see if vt needed
|
|
1 004066 004767 000126 jsr pc,ckvtc
|
|
1264 8$:
|
|
1265 004072 005067 000002' 9$: clr crfdfl
|
|
1266 004076 return
|
|
1 004076 000207 rts pc
|
|
1267
|
|
1268 tstreg:
|
|
1269 004100 005067 000742' clr xxxreg
|
|
1270 004104 call savreg
|
|
1 004104 004767 000000G jsr pc,savreg
|
|
1271 004110 026727 000000G 000000G cmp rolndx,#symrol
|
|
1272 004116 001026 bne 1$
|
|
1273 004120 012704 000000G mov #regrol,r4
|
|
1274 004124 016403 000000' mov <^pl rolbas>(r4),r3
|
|
1275 004130 016401 000000' mov <^pl roltop>(r4),r1
|
|
1276 004134 116402 000000' movb <^pl rolsiz>(r4),r2
|
|
1277 4$:
|
|
1278 004140 020301 cmp r3,r1
|
|
1279 004142 002014 bge 1$
|
|
1280 004144 021367 000000G cmp (r3),symbol
|
|
1281 004150 001007 bne 2$
|
|
1282 004152 026367 000002 000002G cmp 2(r3),symbol+2
|
|
1283 004160 001003 bne 2$
|
|
1284 004162 005267 000742' inc xxxreg
|
|
1285 004166 000402 br 1$
|
|
1286 2$:
|
|
1287 004170 060203 add r2,r3
|
|
1288 004172 000762 br 4$
|
|
1289 1$:
|
|
1290 004174 return
|
|
1 004174 000207 rts pc
|
|
1291
|
|
1291
|
|
1292 004176 005367 000734' putxrf: dec vtcnt
|
|
1293 004202 012700 000012 mov #crfchn,r0 ;reset channel #
|
|
1294 004206 005701 tst r1
|
|
1295 004210 jne putoc
|
|
1 004210 001402 beq 32768$
|
|
2 004212 000167 176432 jmp putoc
|
|
3 32768$:
|
|
1296 004216 return
|
|
1 004216 000207 rts pc
|
|
1297 ;jmp putoc
|
|
1298
|
|
1299 000144 vtini=100.
|
|
1300
|
|
1301 004220 005767 000734' ckvtc: tst vtcnt
|
|
1302 004224 100401 bmi 1$
|
|
1303 004226 return
|
|
1 004226 000207 rts pc
|
|
1304 004230 012767 000144 000734' 1$: mov #vtini,vtcnt
|
|
1305 004236 012701 000013 mov #vt,r1
|
|
1306 004242 012700 000012 mov #crfchn,r0 ;reset channel #
|
|
1307 004246 005701 tst r1
|
|
1308 004250 jne putoc
|
|
1 004250 001402 beq 32768$
|
|
2 004252 000167 176372 jmp putoc
|
|
3 32768$:
|
|
1309 004256 return
|
|
1 004256 000207 rts pc
|
|
1310 ;jmp putoc
|
|
1311 004260 entsec impure
|
|
1 000726 .psect impure con
|
|
1312 000726 crfsym: .blkw 3
|
|
1313 000734 vtcnt: .blkw
|
|
1314 000736 crfflg: .blkw
|
|
1315 000740 crfpnt: .blkw
|
|
1316 000742 xxxreg:: .blkw
|
|
1317
|
|
1318
|
|
1319
|
|
1320 .globl opclas, errrol
|
|
1321
|
|
1322 000401 cr.ver= 001+<001*400> ;type 1, version #1
|
|
1323 000002 cr.pag= 002 ;new page
|
|
1324 000003 cr.lin= 003 ;new line
|
|
1325 000020 cr.sym= 020 ;symbol
|
|
1326
|
|
1327 000001 errrol= 1 ;dummy roll
|
|
1328
|
|
1329 000744 entsec impure
|
|
1 000744 .psect impure con
|
|
1330 000744 crfver: .blkw ;version flag
|
|
1331 000746 crfpag: .blkw
|
|
1332 000750 crflin: .blkw
|
|
1333
|
|
1334 000752 entsec implin
|
|
1 000002 .psect implin con
|
|
1335 000002 crfdfl: .blkw ; "#" and "*" flags
|
|
1336
|
|
1337 000004 entsec dpure
|
|
1 000232 .psect dpure con
|
|
1338 crftyp:
|
|
1339 .irp x,<sym,mac,pst,sec,err,reg>
|
|
1340 .iif ndf x'rol, .globl x'rol
|
|
1341 .byte x'rol
|
|
1342 .endm
|
|
1 .iif ndf symrol, .globl symrol
|
|
2 000232 000G .byte symrol
|
|
3 .iif ndf macrol, .globl macrol
|
|
4 000233 000G .byte macrol
|
|
5 .iif ndf pstrol, .globl pstrol
|
|
6 000234 000G .byte pstrol
|
|
7 .iif ndf secrol, .globl secrol
|
|
8 000235 000G .byte secrol
|
|
9 .iif ndf errrol, .globl errrol
|
|
10 000236 001 .byte errrol
|
|
11 .iif ndf regrol, .globl regrol
|
|
12 000237 000G .byte regrol
|
|
1343 .even
|
|
1344
|
|
1345 000240 crfrun: .asclc /usr/new/macxrf
|
|
1 .nlist
|
|
2
|
|
3 .irpc x, ^%/usr/new/macxrf%
|
|
4
|
|
5 .if ge ''x-101
|
|
6 .if le ''x-132
|
|
7 .byte ''x+40
|
|
8 .iff
|
|
9 .byte ''x
|
|
10 .endc
|
|
11 .iff
|
|
12 .byte ''x
|
|
13 .endc
|
|
14
|
|
15 .endm
|
|
1
|
|
2 177756 .if ge '/-101
|
|
3 .if le '/-132
|
|
4 .byte '/+40
|
|
5 .iff
|
|
6 .byte '/
|
|
7 .endc
|
|
8 .iff
|
|
9 000240 057 .byte '/
|
|
10 .endc
|
|
11
|
|
12
|
|
13 000064 .if ge 'u-101
|
|
14 000033 .if le 'u-132
|
|
15 .byte 'u+40
|
|
16 .iff
|
|
17 000241 165 .byte 'u
|
|
18 .endc
|
|
19 .iff
|
|
20 .byte 'u
|
|
21 .endc
|
|
22
|
|
23
|
|
24 000062 .if ge 's-101
|
|
25 000031 .if le 's-132
|
|
26 .byte 's+40
|
|
27 .iff
|
|
28 000242 163 .byte 's
|
|
29 .endc
|
|
30 .iff
|
|
31 .byte 's
|
|
32 .endc
|
|
33
|
|
34
|
|
35 000061 .if ge 'r-101
|
|
36 000030 .if le 'r-132
|
|
37 .byte 'r+40
|
|
38 .iff
|
|
39 000243 162 .byte 'r
|
|
40 .endc
|
|
41 .iff
|
|
42 .byte 'r
|
|
43 .endc
|
|
44
|
|
45
|
|
46 177756 .if ge '/-101
|
|
47 .if le '/-132
|
|
48 .byte '/+40
|
|
49 .iff
|
|
50 .byte '/
|
|
51 .endc
|
|
52 .iff
|
|
53 000244 057 .byte '/
|
|
54 .endc
|
|
55
|
|
56
|
|
57 000055 .if ge 'n-101
|
|
58 000024 .if le 'n-132
|
|
59 .byte 'n+40
|
|
60 .iff
|
|
61 000245 156 .byte 'n
|
|
62 .endc
|
|
63 .iff
|
|
64 .byte 'n
|
|
65 .endc
|
|
66
|
|
67
|
|
68 000044 .if ge 'e-101
|
|
69 000013 .if le 'e-132
|
|
70 .byte 'e+40
|
|
71 .iff
|
|
72 000246 145 .byte 'e
|
|
73 .endc
|
|
74 .iff
|
|
75 .byte 'e
|
|
76 .endc
|
|
77
|
|
78
|
|
79 000066 .if ge 'w-101
|
|
80 000035 .if le 'w-132
|
|
81 .byte 'w+40
|
|
82 .iff
|
|
83 000247 167 .byte 'w
|
|
84 .endc
|
|
85 .iff
|
|
86 .byte 'w
|
|
87 .endc
|
|
88
|
|
89
|
|
90 177756 .if ge '/-101
|
|
91 .if le '/-132
|
|
92 .byte '/+40
|
|
93 .iff
|
|
94 .byte '/
|
|
95 .endc
|
|
96 .iff
|
|
97 000250 057 .byte '/
|
|
98 .endc
|
|
99
|
|
100
|
|
101 000054 .if ge 'm-101
|
|
102 000023 .if le 'm-132
|
|
103 .byte 'm+40
|
|
104 .iff
|
|
105 000251 155 .byte 'm
|
|
106 .endc
|
|
107 .iff
|
|
108 .byte 'm
|
|
109 .endc
|
|
110
|
|
111
|
|
112 000040 .if ge 'a-101
|
|
113 000007 .if le 'a-132
|
|
114 .byte 'a+40
|
|
115 .iff
|
|
116 000252 141 .byte 'a
|
|
117 .endc
|
|
118 .iff
|
|
119 .byte 'a
|
|
120 .endc
|
|
121
|
|
122
|
|
123 000042 .if ge 'c-101
|
|
124 000011 .if le 'c-132
|
|
125 .byte 'c+40
|
|
126 .iff
|
|
127 000253 143 .byte 'c
|
|
128 .endc
|
|
129 .iff
|
|
130 .byte 'c
|
|
131 .endc
|
|
132
|
|
133
|
|
134 000067 .if ge 'x-101
|
|
135 000036 .if le 'x-132
|
|
136 .byte 'x+40
|
|
137 .iff
|
|
138 000254 170 .byte 'x
|
|
139 .endc
|
|
140 .iff
|
|
141 .byte 'x
|
|
142 .endc
|
|
143
|
|
144
|
|
145 000061 .if ge 'r-101
|
|
146 000030 .if le 'r-132
|
|
147 .byte 'r+40
|
|
148 .iff
|
|
149 000255 162 .byte 'r
|
|
150 .endc
|
|
151 .iff
|
|
152 .byte 'r
|
|
153 .endc
|
|
154
|
|
155
|
|
156 000045 .if ge 'f-101
|
|
157 000014 .if le 'f-132
|
|
158 .byte 'f+40
|
|
159 .iff
|
|
160 000256 146 .byte 'f
|
|
161 .endc
|
|
162 .iff
|
|
163 .byte 'f
|
|
164 .endc
|
|
165
|
|
16
|
|
17 000257 000 .byte 0
|
|
18
|
|
19 .list
|
|
1346 .even
|
|
1347 000260 xitsec
|
|
1 000260 entsec .text
|
|
1 004260 .psect .text con
|
|
1348
|
|
1349 .endc
|
|
1349
|
|
1350 .if ndf xtime
|
|
1351
|
|
1352 .globl dnc, movbyt
|
|
1353
|
|
1354 ;called with:
|
|
1355 ; r0 - high-order word of 32-bit # seconds past 1jan70 gmt
|
|
1356 ; r1 - low-order word
|
|
1357 ; r2 - destination adr. of ascii (19 bytes)
|
|
1358
|
|
1359 061160 gmtsec = $timdf*3600.
|
|
1360
|
|
1361
|
|
1362 cvtim::
|
|
1363 004260 162701 061160 sub #gmtsec,r1 ;adjust for deviation
|
|
1364 004264 005600 sbc r0
|
|
1365 004266 071027 070200 div #8.*3600.,r0 ;form # 8-hour units
|
|
1366 004272 010146 mov r1,-(sp) ;save remaining hours, minutes & seconds
|
|
1367 004274 010001 mov r0,r1 ;now form days
|
|
1368 004276 005000 clr r0
|
|
1369 004300 071027 000003 div #3,r0
|
|
1370 004304 072127 000003 ash #3,r1 ;and hours
|
|
1371 004310 010146 mov r1,-(sp) ;saving hours
|
|
1372 004312 112767 177777 000754' movb #-1.,nmonth ;begin month ticker
|
|
1373 004320 012767 000105 000752' mov #69.,nyear ;epoch starts in 1970
|
|
1374 004326 105267 000752' 1$: incb nyear
|
|
1375 004332 004767 000220 jsr pc,yearl ;returns length of that year in r1
|
|
1376 004336 160100 sub r1,r0
|
|
1377 004340 100372 bpl 1$
|
|
1378 004342 060100 add r1,r0
|
|
1379 004344 012767 000034 000326' mov #28.,$feb
|
|
1380 004352 020127 000556 cmp r1,#366. ;is this leap year?
|
|
1381 004356 001002 bne 21$
|
|
1382 004360 005267 000326' inc $feb ;yes
|
|
1383 004364 012701 000324' 21$: mov #montab,r1
|
|
1384 004370 105267 000754' 4$: incb nmonth
|
|
1385 004374 162100 sub (r1)+,r0
|
|
1386 004376 100374 bpl 4$
|
|
1387 004400 064100 add -(r1),r0
|
|
1388 004402 005200 inc r0 ;form day of month
|
|
1389 004404 010001 mov r0,r1 ;put # days into r1 for conversion
|
|
1390 004406 call dnc
|
|
1 004406 004767 000000G jsr pc,dnc
|
|
1391 004412 112722 000055 movb #'-,(r2)+ ;store dash
|
|
1392 004416 116701 000754' movb nmonth,r1
|
|
1393 004422 006301 asl r1 ;form offset into asciz table
|
|
1394 004424 006301 asl r1
|
|
1395 004426 062701 000260' add #mo.tab,r1 ;form adr. of string
|
|
1396 004432 call movbyt
|
|
1 004432 004767 000000G jsr pc,movbyt
|
|
1396
|
|
1397 004436 112722 000055 movb #'-,(r2)+
|
|
1398 004442 016701 000752' mov nyear,r1 ;print out year modulo 100
|
|
1399 004446 call dnc
|
|
1 004446 004767 000000G jsr pc,dnc
|
|
1400 004452 112722 000040 movb #40,(r2)+
|
|
1401 004456 012600 mov (sp)+,r0 ;get partial hours
|
|
1402 004460 012601 mov (sp)+,r1 ;get initial remainder
|
|
1403 004462 010046 mov r0,-(sp) ;save
|
|
1404 004464 005000 clr r0 ;form hours
|
|
1405 004466 071027 007020 div #3600.,r0
|
|
1406 004472 062600 add (sp)+,r0
|
|
1407 004474 010146 mov r1,-(sp) ;save # seconds
|
|
1408 004476 010001 mov r0,r1 ;set up for conversion
|
|
1409 004500 020127 000012 cmp r1,#10.
|
|
1410 004504 002002 bge 6$
|
|
1411 004506 112722 000060 movb #'0,(r2)+
|
|
1412 004512 6$: call dnc
|
|
1 004512 004767 000000G jsr pc,dnc
|
|
1413 004516 112722 000072 movb #':,(r2)+
|
|
1414 004522 012601 mov (sp)+,r1 ;restore # seconds
|
|
1415 004524 005000 clr r0
|
|
1416 004526 071027 000074 div #60.,r0 ;form # minutes
|
|
1417 004532 010001 mov r0,r1
|
|
1418 004534 020127 000012 cmp r1,#10.
|
|
1419 004540 002002 bge 7$
|
|
1420 004542 112722 000060 movb #'0,(r2)+
|
|
1421 004546 7$: call dnc
|
|
1 004546 004767 000000G jsr pc,dnc
|
|
1422 004552 105022 clrb (r2)+
|
|
1423 004554 000207 rts pc
|
|
1424 004556 012701 000555 yearl: mov #365.,r1
|
|
1425 004562 032767 000003 000752' bit #3,nyear
|
|
1426 004570 001001 bne 8$
|
|
1427 004572 005201 inc r1
|
|
1428 004574 000207 8$: rts pc
|
|
1429
|
|
1430
|
|
1431
|
|
1432 004576 entsec dpure
|
|
1 000260 .psect dpure con
|
|
1433
|
|
1433
|
|
1434 000260 152 141 156 mo.tab: .asciz /jan/
|
|
000263 000
|
|
1435 000264 146 145 142 .asciz /feb/
|
|
000267 000
|
|
1436 000270 155 141 162 .asciz /mar/
|
|
000273 000
|
|
1437 000274 141 160 162 .asciz /apr/
|
|
000277 000
|
|
1438 000300 155 141 171 .asciz /may/
|
|
000303 000
|
|
1439 000304 152 165 156 .asciz /jun/
|
|
000307 000
|
|
1440 000310 152 165 154 .asciz /jul/
|
|
000313 000
|
|
1441 000314 141 165 147 .asciz /aug/
|
|
000317 000
|
|
1442 000320 163 145 160 .asciz /sep/
|
|
000323 000
|
|
1443 000324 157 143 164 .asciz /oct/
|
|
000327 000
|
|
1444 000330 156 157 166 .asciz /nov/
|
|
000333 000
|
|
1445 000334 144 145 143 .asciz /dec/
|
|
000337 000
|
|
1446
|
|
1447 000340 entsec mixed
|
|
1 000324 .psect mixed con
|
|
1448
|
|
1449 000324 000037 montab: 31.
|
|
1450 000326 000034 $feb: 28.
|
|
1451 000330 000037 31.
|
|
1452 000332 000036 30.
|
|
1453 000334 000037 31.
|
|
1454 000336 000036 30.
|
|
1455 000340 000037 31.
|
|
1456 000342 000037 31.
|
|
1457 000344 000036 30.
|
|
1458 000346 000037 31.
|
|
1459 000350 000036 30.
|
|
1460 000352 000037 31.
|
|
1461
|
|
1462
|
|
1463 000354 entsec impure
|
|
1 000752 .psect impure con
|
|
1464 .even
|
|
1465 000752 nyear: .blkw
|
|
1466 000754 nmonth: .blkb
|
|
1467 000755 000 .even
|
|
1468
|
|
1469 000756 xitsec
|
|
1 000756 entsec .text
|
|
1 004576 .psect .text con
|
|
1470
|
|
1471 .endc
|
|
1472
|
|
1473 .end start
|
|
1473
|
|
7
|
|
**:0: ***ERROR ./2.11BSD/m11/exec.m11:1188: Unterminated conditional
|
|
|
|
|
|
Symbol table
|
|
|
|
$$EXIT 000316R 002 4$32 002610R L 002 CT.TAB = 000002 NCMSG 000147R 005
|
|
$BRKAD 000322RG 006 4$33 002674R L 002 CTTBL = ****** G NFMSG 000134R 005
|
|
$BRKSY = ****** G 4$36 003406R L 002 CVTIM 004260RG 002 NMONTH 000754R 008
|
|
$CLOSE = ****** G 4$40 003742R L 002 DA.SET 001032R 002 NO.FLG 000006R 008
|
|
$CREAT = ****** G 4$41 004140R L 002 DATTI1 000136R 006 NO.SET 000610R 002
|
|
$CRTMD 000314R 006 4$44 004370R L 002 DATTI2 000143R 006 NS.SET 000720R 002
|
|
$CRTNM 000312R 006 44$40 003772R L 002 DATTIM 000124RG 006 NULEXT 000230R 005
|
|
$EXECV = ****** G 5$2 000502R L 002 DC.SET 001040R 002 NYEAR 000752R 008
|
|
$EXIT = ****** G 5$28 002006R L 002 DE.SET 000764R 002 OBJBUF 000516R 008
|
|
$FEB 000326R 006 5$31 002272R L 002 DEBUG = 000000 G OBJCHN = 000006 G
|
|
$FORK = ****** G 5$32 002620R L 002 DECID 000203R 006 OBJEXT 000214R 005
|
|
$GETTO = ****** G 5$33 002676R L 002 DEFFLG = 000010 OBJLEN = 000052 G
|
|
$OPEN = ****** G 5$40 004016R L 002 DFGFLG = 000200 OPCLAS = ****** G
|
|
$OPNMD 000320R 006 51$36 003300R L 002 DFLGTB = 000000 G OPENC = ****** G
|
|
$OPNNM 000316R 006 55$2 000510R L 002 DNC = ****** G OPENO 001532RG 002
|
|
$RDBFP 000306R 006 55$40 004040R L 002 DP.SET 001046R 002 OUT$YM = ****** G
|
|
$RDCNT 000310R 006 59$36 003334R L 002 DX.SET 001052R 002 OVRFLG = 000020
|
|
$READ = ****** G 6$2 000516R L 002 ED.CRF = ****** G PAGNUM 000000RG 009
|
|
$SBRK = ****** G 6$32 002634R L 002 ED.GBL = ****** G PASS = ****** G
|
|
$SEEK = ****** G 6$40 004056R L 002 EDDFLT = ****** G PATTRS = 000050
|
|
$TIMDF = 000007 6$44 004512R L 002 EDMASK = ****** G PDP10 000024RG 008
|
|
$WAIT = ****** G 7$2 000526R L 002 ENDP1 = ****** G PDPV45 = 000000 G
|
|
$WRBFP 000302RG 006 7$26 001702R L 002 ENDP2 = ****** G PROP1 = ****** G
|
|
$WRCNT 000304RG 006 7$29 002046R L 002 ERN45 = ****** G PROP2 = ****** G
|
|
$WRITE = ****** G 7$32 002644R L 002 ERN55 = ****** G PROSW = ****** G
|
|
$WRSYS = ****** G 7$44 004546R L 002 ERR.A = ****** G PSAROL = ****** G
|
|
. ******R 002 8$2 000534R L 002 ERR.BY = ****** G PSDFLT = ****** G
|
|
..Z = ****** G 8$35 003210R L 002 ERR.XX = ****** G PSTROL = ****** G
|
|
..ZBUF = ****** G 8$40 004072R L 002 ERRBTS = ****** G PUTKB = ****** G
|
|
1$1 000330R L 002 8$45 004574R L 002 ERRCNT = ****** G PUTKBL = ****** G
|
|
1$2 000360R L 002 81$0 000220R L 002 ERRREF = ****** G PUTLP = ****** G
|
|
1$25 001270R L 002 9$0 000252R L 002 ERRROL = 000001 G PUTOC 002650RG 002
|
|
1$26 001570R L 002 9$2 000544R L 002 ESRCNA 000030R 008 PUTXRF 004176R 002
|
|
1$27 001734R L 002 9$21 001166R L 002 EXTTBL 000222RG 006 R50UNP = ****** G
|
|
1$29 002036R L 002 9$25 001334R L 002 FF = 000014 REGFLG = 000001
|
|
1$3 000574R L 002 9$26 001714R L 002 FILELN 000006RG 009 REGROL = ****** G
|
|
1$30 002134R L 002 9$31 002314R L 002 FIN = ****** G RELFLG = 000040
|
|
1$32 002352R L 002 9$36 003420R L 002 FINMSG 000111R 005 ROLNDX = ****** G
|
|
1$34 002766R L 002 9$39 003560R L 002 FINP1 001520R 002 RSX11D = 000000 G
|
|
1$35 003174R L 002 9$40 004072R L 002 FINSML 003032RG 002 SAVREG = ****** G
|
|
1$37 003466R L 002 99$26 001642R L 002 FIXTIT = ****** G SCANW = ****** G
|
|
1$38 000150R L 006 99$32 002464R L 002 FT.ID = 000001 SDEBUG = ****** G
|
|
1$40 003644R L 002 99$34 003016R L 002 FT.UNX = 000001 SECROL = ****** G
|
|
1$41 004174R L 002 99$35 003160R L 002 GETIC 002204RG 002 SERROR 002136R 002
|
|
1$43 004230R L 002 99$36 003374R L 002 GETSRC 002322RG 002 SETDN 002050R 002
|
|
1$44 004326R L 002 AATTRS = 000130 GLBFLG = 000100 SETED = ****** G
|
|
10$21 001110R L 002 ABSEXP = ****** G GMTSEC = 061160 SETLC = ****** G
|
|
10$32 002634R L 002 ADDBUF 001220R 002 GSARG = ****** G SETTEN 000664R 002
|
|
100$26 001562R L 002 AP.EXT 002024R 002 HA.SET 000734R 002 SHRFLG = 000001
|
|
100$30 002124R L 002 ARGC 000000R 006 HARVID 000166R 006 SMLBUF 000602R 008
|
|
11$26 001604R L 002 ARGV 000006R 006 HDRTTL = ****** G SMLCHN = 000010 G
|
|
13$32 002434R L 002 ASDFLT = ****** G IARGC 000002R 006 SMLEXT 000220R 005
|
|
14$32 002504R L 002 B.IDF = 000001 IARGV 000004RG 006 SMLFIL 000034RG 008
|
|
15$32 002514R L 002 BINTBL 000266RG 006 INICOR = ****** G SMLLEN = 000120
|
|
19$2 000544R L 002 BKSIZ = ****** G INIP0 000336R 002 SMLNAM 000032RG 008
|
|
2$25 001412R L 002 BPMB = 000020 INIP0Z 001470R 002 SPACE = 000040
|
|
2$26 001616R L 002 BSSFLG = 000004 INIP1 001414R 002 SRC.AP 002020R 002
|
|
2$28 001742R L 002 BUFTBL 000252RG 006 INIP2 001432R 002 SRC.FP 001716R 002
|
|
2$29 002042R L 002 CATTRS = 000170 INIP2F 001450R 002 SRCBUF 000300R 008
|
|
2$3 000604R L 002 CHNTBL 000124RG 008 INISML 002714RG 002 SRCCHN = 000002 G
|
|
2$32 002526R L 002 CHRPNT = ****** G INSFLG = 000002 SRCEXT 000204R 005
|
|
2$40 003676R L 002 CHRTBL 000110RG 008 IO.EOF = 000010 G SRCHI = ****** G
|
|
2$41 004170R L 002 CKVTC 004220R 002 IO.EOI = 000040 G SRCLEN = 000204
|
|
21$44 004364R L 002 CMOBUF 000146R 008 IO.ERR = 000020 G SRCNAM 000026R 008
|
|
3$2 000420R L 002 CMOCHN = 000000 G IO.INI = 000001 START 000000RG 002
|
|
3$25 001324R L 002 CMOLEN = 000120 IO.OPN = 000002 SWCERR 000076R 005
|
|
3$26 001652R L 002 CNTTBL 000236RG 006 IO.OUT = 100000 SX.FLG 000022RG 008
|
|
3$28 001772R L 002 CPOPJ = ****** G IO.TTY = 000004 G SX.SET 000616R 002
|
|
3$32 002552R L 002 CR = 000015 IOFTBL 000074RG 008 SYMBOL = ****** G
|
|
3$40 003724R L 002 CR.LIN = 000003 IOLTBL 000170RG 005 SYMERR 000050R 005
|
|
32768$10 000030R L 011 CR.PAG = 000002 LBLFLG = 000002 SYMHP 000012RG 006
|
|
32768$11 000034R L 011 CR.SET 001250R 002 LF = 000012 SYMLP 000010RG 006
|
|
32768$12 000040R L 011 CR.SYM = 000020 LINBUF = ****** G SYMOVF 002160RG 002
|
|
32768$13 000044R L 011 CR.VER = 000401 LINNUM 000002RG 009 SYMROL = ****** G
|
|
32768$14 000050R L 011 CRAP 000122R 006 LP.SET 001172R 002 TAB = 000011
|
|
32768$15 000054R L 011 CREFAV 000074R 006 LPARGS 000000R 005 TMPCNT = 000014
|
|
32768$16 000060R L 011 CREFIL 000014R 006 LPFLAG 000012R 008 TSTREG 004100R 002
|
|
32768$17 000064R L 011 CRFCHN = 000012 G LPRRUN 000006R 005 U.FLAG 000010RG 008
|
|
32768$18 000070R L 011 CRFDEF 003562RG 002 LS.SET 001210R 002 U.SET 000624R 002
|
|
32768$19 000074R L 011 CRFDFL 000002R 010 LSTCHN = 000004 G UC.SET = ****** G
|
|
32768$20 000100R L 011 CRFEXT 000224R 005 LSTEXT 000210R 005 UM.SET = ****** G
|
|
32768$21 001160R L 002 CRFFLG 000736R 008 LSTFLG 000000RG 008 VERITA 000000RG 003
|
|
32768$23 000110R L 011 CRFLAG 000106R 006 LSTLEN = 001000 VERNAM 000146RG 006
|
|
32768$24 000114R L 011 CRFLEN = 001000 LT.SET 000672R 002 VT = 000013
|
|
32768$25 001404R L 002 CRFLIN 000750R 008 LTTFLG 000002RG 008 VTCNT 000734R 008
|
|
32768$39 003544R L 002 CRFPAG 000746R 008 M.IDF = 000007 VTINI = 000144
|
|
32768$4 000000R L 011 CRFPND 000004R 008 MAC.ER = ****** G X = 000002
|
|
32768$40 003600R L 002 CRFPNT 000740R 008 MACERR 000024R 005 X40 = 000000 G
|
|
32768$42 004216R L 002 CRFREF 003566RG 002 MACOVF 002170RG 002 XCTPAS = ****** G
|
|
32768$43 004256R L 002 CRFROL = ****** G MACROL = ****** G XCTPRG = ****** G
|
|
32768$5 000004R L 011 CRFRUN 000240R 005 MAXCHN = 000014 XEDFPT = 000000 G
|
|
32768$6 000010R L 011 CRFSET 003502R 002 MDEPTH = ****** G XFLTG = 000000 G
|
|
32768$7 000014R L 011 CRFSYM 000726R 008 MDFFLG = 000004 XMIT0 = ****** G
|
|
32768$8 000020R L 011 CRFTYP 000232R 005 MK.SYM = 000001 XS.SET 000726R 002
|
|
32768$9 000024R L 011 CRFVER 000744R 008 MK.UP 000554R 002 XX.FLG 000016RG 008
|
|
32769$22 000104R L 011 CSDFLT = ****** G MO.TAB 000260R 005 XX.SET 000632R 002
|
|
32769$40 003612R L 002 CT.ALP = 000040 MONTAB 000324R 006 XXXREG 000742RG 008
|
|
32770$40 003624R L 002 CT.COM = 000001 MOVBYT = ****** G YEARL 004556R 002
|
|
32771$40 003640R L 002 CT.EOL = 000000 MX.2 = ****** G ZCLOSE 003430R 002
|
|
32772$40 003736R L 002 CT.LC = 000100 MX.FLG 000014RG 008 ZINIT 003046R 002
|
|
33$2 000450R L 002 CT.NUM = 000020 MX.SET 000640R 002 ZOPEN 003056R 002
|
|
4$2 000464R L 002 CT.PC = 000271 MY.FLG 000020RG 008 ZREAD 003100RG 002
|
|
4$26 001664R L 002 CT.PCX = 000010 MY.SET 000656R 002 ZRLSE 003470R 002
|
|
4$28 001776R L 002 CT.SMC = 000200 NAM.AP 002012R 002 ZWRITE 003216RG 002
|
|
4$31 002226R L 002 CT.SP = 000004 NAM.FP 001740R 002
|
|
|
|
|
|
Program sections:
|
|
|
|
. ABS. 000000 000 (RW,I,GBL,ABS,OVR,NOSAV)
|
|
000000 001 (RW,I,LCL,REL,CON,NOSAV)
|
|
.TEXT 004576 002 (RW,I,LCL,REL,CON,NOSAV)
|
|
.DATA 000002 003 (RW,I,LCL,REL,CON,NOSAV)
|
|
.BSS 000000 004 (RW,I,LCL,REL,CON,NOSAV)
|
|
DPURE 000340 005 (RW,I,LCL,REL,CON,NOSAV)
|
|
MIXED 000354 006 (RW,I,LCL,REL,CON,NOSAV)
|
|
ERRMES 000000 007 (RW,I,LCL,REL,CON,NOSAV)
|
|
IMPURE 000756 008 (RW,I,LCL,REL,CON,NOSAV)
|
|
IMPPAS 000010 009 (RW,I,LCL,REL,CON,NOSAV)
|
|
IMPLIN 000004 010 (RW,I,LCL,REL,CON,NOSAV)
|
|
SWTSEC 000120 011 (RW,I,LCL,REL,CON,NOSAV)
|
|
CNDSEC 000000 012 (RW,I,LCL,REL,CON,NOSAV)
|
|
CRFSEC 000176 013 (RW,I,LCL,REL,CON,NOSAV)
|
|
EDTSEC 000006 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)
|