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, 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- 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 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 284 .globl err.'arg,ern'num, errbts,errref 285 .if b 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 ... 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 ... 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 ... 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 ... 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, 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, ;rsx11d "features" 1 .if df rsx11d 2 .list 3 .globl rsx11d 4 .nlist 5 .irp x, 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, 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, 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, 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, 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 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, 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 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, 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 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, 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,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 1157 entsec impure 1158 .list 1159 1160 .blkw 3 1161 zbuf'buf: .blkw /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 /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 /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 /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 /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 /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 /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, 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)