Files
open-simh.simtools/tests/2.11BSD-m11-exec.lst.ok
Olaf Seibert 015c8bee23 Prepent register label values with a % in symbol table.
This changes the layout of all the regression test listings...
2021-01-23 16:37:15 +01:00

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)