exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 table of contents 2- 1 assembly options 3- 1 globals 5- 1 mcioch - i/o channel assignments 7- 1 start of program 8- 1 output file initialization 10- 1 pass initialization 11- 1 end of pass routines 12- 1 end of program cleanup 15- 1 system macro handlers 16- 1 init/read/write routines 18- 1 messages 19- 1 i/o tables 22- 1 cross reference handlers exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 1 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 18 000000 ct.mne 19 000000 st.flg 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 exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 2 assembly options 1 .sbttl assembly options 2 3 ;the following macro causes assembly options to be 4 ;printed on the loader map and any implications 5 ;(second argument) to be defined. options are 6 ;selected by equating them to zero. 7 8 .macro ldrmap mne,implies 9 .if df mne 10 .list 11 .globl mne 12 .nlist 13 .irp x, 14 .globl x 15 x= 0 ;invoke implications 16 .endm 17 .endc 18 .endm ldrmap 19 20 21 ;the following group enables functions 22 23 000000 ldrmap rsx11d, ;rsx11d "features" .globl rsx11d 24 25 000000 ldrmap debug ;debug version .globl debug 26 000000 ldrmap pdpv45 ;pdp-11/45 instructions .globl pdpv45 27 000000 ldrmap id.spc ;i- & d-space capability for unix 28 000000 ldrmap dblbuf ;tran'd input 29 30 ;the following group disables functions 31 32 .iif df x40&x45, xfltg= 0 33 34 000000 ldrmap xbaw ;no bells and whistles 35 000000 ldrmap xswit,xcref ;no switches 36 000000 ldrmap xrel,xedpic ;abs output only 37 000000 ldrmap xmacro,xsml ;all generated code (macro, rept, etc.) 38 000000 ldrmap xsml ;system macros 39 000000 ldrmap x40 ;pdp-11/40 features .globl x40 40 000000 ldrmap x45 ;pdp-11/45 features 41 000000 ldrmap xfltg,xedfpt ;floating point evaluation 42 000000 ldrmap xedabs ;ed.abs 43 000000 ldrmap xedama ;ed.ama 44 000000 ldrmap xedpic ;ed.pic 45 000000 ldrmap xedfpt ;ed.fpt 46 000000 ldrmap xedlsb ;ed.lsb 47 000000 ldrmap xedpnc ;ed.pnc 48 000000 ldrmap xedlc ;ed.lc 49 000000 ldrmap xedcdr ;card reader format 50 000000 ldrmap xzerr ;"z" errors 51 000000 ldrmap xlcttm ;no lpt listing format 52 000000 ldrmap xlcseq ;sequence numbers exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 2-2 assembly options 53 000000 ldrmap xtime ;no time & date on header exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 3 globals 1 .sbttl globals 2 3 ;globals defined in assembler 4 5 .globl srchi 6 .globl prop1, endp1, prop2, endp2 7 .globl bksiz 8 .globl symlp, symhp 9 .globl setlc, seted 10 .globl uc.set, um.set 11 12 13 .globl pass 14 15 .globl putkb, putkbl, putlp 16 17 .globl dnc, movbyt, savreg, xmit0 18 19 .globl linbuf, errcnt, openo, openc 20 .globl chrpnt, prosw, absexp 21 22 .globl xctpas 23 24 25 ;globals defined in mcexec 26 27 .globl pagnum, linnum 28 .globl inicor, iargv 29 30 .if ndf xtime 31 .globl dattim 32 .endc 33 .if ndf xsml 34 .globl finsml, inisml, smlnam, smlfil 35 .endc 36 .globl getic, hdrttl, putoc, getsrc 37 .globl io.eof, io.eoi, io.tty, io.err 38 39 .globl ioftbl, cnttbl, buftbl, ioltbl, chrtbl 40 .globl exttbl, bintbl, lstflg, chntbl 41 .globl $wrsys, $wrbfp, $wrcnt, $brksy, $brkad 42 43 .globl symovf, macovf 44 45 .globl errrol,crfrol 46 .globl xctprg 47 000001 errrol= 1 exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 4 globals 1 .mcall (at)param 2 3 .mcall $creat, $open, $close, $exit, $read, $write, $break 4 .mcall $seek, $indir, $time, $fork, $wait, $exec 5 6 ;init sectors 7 8 9 000000 entsec implin 10 .blkw 11 000002 xitsec exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 5 mcioch - i/o channel assignments 1 .sbttl mcioch - i/o channel assignments 2 3 .macro genchn zchan,zlnk,zbuf,ztype,zext,zlen 4 setchn cmo, cmo, cmo, 0, ,80. 5 setchn src, src, src, 0, m11, 132. 6 setchn lst, lst, lst, , lst, 512. 7 setchn obj, obj, obj, 1, obj, 42. 8 .if ndf xsml 9 setchn sml, sml, sml, 0, sml, 80. 10 .endc 11 .if ndf xcref 12 setchn crf, crf, crf, , xrf, 512. 13 .endc 14 .endm genchn 15 16 .macro setchn zchan,zlnk,zbuf,ztype,zext,zlen 17 .if nb 18 param zbuf'len, zlen 19 .endc 20 .endm 21 22 000000 genchn 000120 cmolen= cmolen 000204 srclen= srclen 001000 lstlen= lstlen 000052 objlen= objlen 000120 smllen= smllen 001000 crflen= crflen 23 24 .globl objlen 25 26 000000 tmpcnt= 0 27 .macro setchn zchan,zlnk,zbuf,ztype,zext,zlen 28 .list 29 zchan'chn= tmpcnt 30 .nlist 31 .globl zchan'chn 32 tmpcnt= tmpcnt+2 33 .endm 34 35 000000 genchn 000000 cmochn= tmpcnt 000002 srcchn= tmpcnt 000004 lstchn= tmpcnt 000006 objchn= tmpcnt 000010 smlchn= tmpcnt 000012 crfchn= tmpcnt 36 37 000014 maxchn= tmpcnt ;just to preserve the count exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 6 mcioch - i/o channel assignments 1 .macro serror xxx ; was: .macro serror number,message 2 mov xxx,r0 ; was: jsr r0,serror 3 ; was: .asciz \message\ 4 jmp serror ; new: no return 5 ;.even 6 .endm serror 7 8 .macro .asclc, str 9 .nlist 10 11 .irpc x, ^%str% 12 13 .if ge ''x-101 14 .if le ''x-132 15 .byte ''x+40 16 .iff 17 .byte ''x 18 .endc 19 .iff 20 .byte ''x 21 .endc 22 23 .endm 24 25 .byte 0 26 27 .list 28 .endm exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 7 start of program 1 .sbttl start of program 2 3 .globl start, fin 4 5 6 000000 start: ;start of program 7 000000 012667 000002' mov (sp)+,iargc ;store arg. count 8 000004 010667 000004' mov sp,iargv ;store pointer to arg. vector 9 000010 005016 clr (sp) 10 000012 012702 000124' mov #dattim,r2 ;set date and time 11 000016 $time 12 000020 call cvtim ;convert to ascii 13 14 000024 call xctprg ;clean up core 15 000030 call inip0 ;output file processing 16 000034 call inip1 17 000040 call prop1 ;pass one 18 000044 call finp1 19 000050 call endp1 ;clean up 20 000054 call inip2 21 000060 call prop2 ;pass 2 22 000064 call endp2 23 000070 call setdn ;finished, control not returned 24 25 000074 012700 000006 mov #objchn,r0 26 000100 call zwrite 27 000104 call zclose 28 29 000110 012700 000004 mov #lstchn,r0 ;output any remaining listing 30 000114 call zwrite 31 32 .if ndf xcref 33 000120 016702 000740' mov crfpnt,r2 34 000124 001432 beq 9$ 35 000126 012700 000012 mov #crfchn,r0 36 000132 call zwrite ;dump out any remaining output 37 000136 call zclose ;close cref tmp. file 38 000142 012700 000004 mov #lstchn,r0 39 000146 005767 000000C tst ioftbl+lstchn 40 000152 001007 bne 81$ 41 000154 016767 000000C 000000C mov cnttbl+crfchn,cnttbl+lstchn 42 ;set up to recycle (i hope) 43 000162 005267 000000' inc lstflg 44 000166 call openo 45 000172 012702 000004 81$: mov #lstchn,r2 ;set up name of listing file in linbuf 46 000176 call src.ap 47 000202 $exec ;cref will do the rest!! 48 000204 000244' crfrun 49 000206 000074' crefav 50 ; execl("macxrf", "macxrf", "-flags", "fred.xrf", "fred.lst", 0); 51 ; meaning of flags arg: 52 ; "-" m11 invoked with -cr only: do the standard stuff 53 ; "-am.." other letters added as extra cr flags invoked. 54 ; 55 56 exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 7-2 start of program 57 58 000210 000415 br $$exit 59 .endc 60 61 000212 005767 000012' 9$: tst lpflag ;spooler requested? 62 000216 001412 beq $$exit ;no, leave 63 64 000220 012700 000004 mov #lstchn,r0 ;yes, close listing channel 65 000224 010002 mov r0,r2 ;copy for src.ap 66 000226 call zclose 67 000232 call src.ap ;put name of lst file into linbuf 68 000236 $exec ; take it away, LPR! 69 000240 000006' lprrun 70 000242 000000' lpargs 71 72 000244 005000 $$exit: clr r0 ;leave r0 set corectly 73 000246 005767 000000G tst errcnt 74 000252 001401 beq 1$ ;no problems 75 000254 005200 inc r0 ;return 1 76 000256 1$: 77 000256 $exit ;that's all, folks! 78 79 80 81 000260 entsec dpure 82 000000 000006' lpargs: lprrun 83 000002 000000G linbuf 84 000004 000000 0 85 86 000006 lprrun: .asclc /usr/ucb/bin/lpr 87 .even 88 89 90 91 000030 entsec mixed 92 93 000000 argc: .blkw 1 94 000002 iargc: .blkw 1 95 000004 iargv: .blkw 1 96 000006 argv: .blkw 1 97 000010 000000C symlp: <^pl xpcor> 98 000012 000000C symhp: <<<^ph xpcor>+63.>&^c63.>-2 99 100 000014 entsec impure 101 102 000000 lstflg: .blkw 1 103 000002 lttflg:: .blkw 1 104 000004 crfpnd: .blkw 1 105 000006 no.flg: .blkw 1 106 000010 u.flag:: .blkw 1 ; user wants UNIX style line numbers 107 000012 lpflag: .blkw 1 108 000014 mx.flg:: .blkw 1 ; if set, do macro expansion ONLY 109 000016 xx.flg:: .blkw 1 ; debug switch 110 000020 my.flg:: .blkw 1 ; and also show the pre-xpnd srce lines 111 000022 sx.flg:: .blkw 1 ; if set, generate more local syms syms 112 000024 pdp10:: .blkw 1 ; check for model dependencies in exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 7-3 start of program 113 ; the instruction set 114 000026 entsec mixed 115 000014 crefil: .blkw 30 ; name of cref file: /fred.xrf/ 116 000074 000244' crefav: .word crfrun 117 000076 000000C .word crflag+1 118 000100 000014' .word crefil 119 000102 000000G .word linbuf 120 000104 000000 .word 0 121 000106 055 055 crflag: .ascii /--/ 122 .blkw 5 123 000122 000000C crap: .word crflag+2 124 125 000124 xitsec exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 8 output file initialization 1 .sbttl output file initialization 2 3 000260 inip0: ;initialize things 4 000260 012700 000000 mov #cmochn,r0 ;set up cmo 5 000264 call zopen 6 000270 012767 000001 000000C mov #1,chntbl+cmochn ;it is file handle #1 7 000276 call inip0z ;set up argc & argv 8 000302 005367 000000' 1$: dec argc ;any more arguments? 9 000306 002467 blt 9$ ;no, return 10 000310 016700 000006' mov argv,r0 ;yes, get pointer to next arg. 11 000314 012001 mov (r0)+,r1 ; into r1 12 000316 010067 000006' mov r0,argv ;store back new argv 13 000322 005701 tst r1 14 000324 001766 beq 1$ ;ignore null pointers (maybe, first one) 15 000326 122127 000055 cmpb (r1)+,#'- ;is switch indicated? 16 000332 001403 beq 3$ ;yes 17 000334 014067 000026' mov -(r0),srcnam ;no , last name will be prefix 18 000340 000760 br 1$ 19 000342 3$: ;here is hack for explicit name switch 20 000342 121127 000156 cmpb (r1),#'n 21 000346 001011 bne 33$ 22 000350 126127 000001 000141 cmpb 1(r1),#'a 23 000356 001005 bne 33$ 24 000360 062701 000003 add #3,r1 ;move past na: 25 000364 010167 000030' mov r1,esrcnam 26 000370 000744 br 1$ 27 000372 012702 000000G 33$: mov #linbuf,r2 ;point to dest. for switch 28 000376 010203 mov r2,r3 ;make copy 29 000400 005022 clr (r2)+ ;zap initially 30 000402 010267 000000G mov r2,chrpnt ;copy pointer here for arg. 31 000406 112100 4$: movb (r1)+,r0 ;get char. 32 000410 call mk.up ;make upper case 33 000414 003406 ble 55$ ;null or : 34 000416 110023 movb r0,(r3)+ ;ok, store 35 000420 020302 cmp r3,r2 ;max. of 2 chars. 36 000422 103771 blo 4$ 37 000424 112100 5$: movb (r1)+,r0 ;store rest of arg. in linbuf 38 000426 call mk.up ;check it and make upper case 39 000432 002002 55$: bge 6$ ;neg. indicates : 40 000434 012700 000040 mov #40,r0 ;replace with space 41 000440 110022 6$: movb r0,(r2)+ 42 000442 001370 bne 5$ ;continue till null 43 000444 016700 000000G mov linbuf,r0 ;restore switch name into r0 44 000450 7$: call prosw ;process the switch 45 000454 001312 bne 1$ ;continue if no error 46 000456 8$: serror #swcerr 47 48 000466 9$: 49 000466 005767 000026' 19$: tst srcnam ;must be at least one filename 50 000472 001664 beq $$exit ;or we are just a no-op. 51 000474 return 52 53 .globl cttbl ; defined in misc.m11 54 55 000476 mk.up: 56 000476 042700 177600 bic #^c177,r0 exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 8-2 output file initialization 57 000502 122760 000100 000000G cmpb #ct.lc,cttbl(r0) 58 000510 001002 bne 1$ ; if lower, make upper 59 000512 162700 000040 sub #40,r0 60 000516 122700 000072 1$: cmpb #':,r0 ; if input is a colon, 61 000522 001001 bne 2$ 62 000524 005400 neg r0 ; return MINUS COLON !!! 63 000526 005700 2$: tst r0 ; else return input 64 000530 return 65 66 000532 entsec impure 67 000026 srcnam: .blkw 1 68 000030 esrcnam: .blkw 1 69 000032 xitsec exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 9 output file initialization 1 000532 genswt no,no.set 2 000532 005267 000006' no.set: inc no.flg ;indicate no object output 3 000536 return 4 5 000540 genswt uc,uc.set ; revert to bad old DEC upper case rules 6 000540 genswt um,um.set ; revert to bad old Harvard upper case rules 7 8 000540 genswt sx,sx.set 9 000540 005267 000022' sx.set: inc sx.flg 10 000544 return 11 12 000546 genswt u,u.set 13 14 000546 005267 000010' u.set: inc u.flag 15 000552 return 16 000554 genswt xx,xx.set 17 000554 005267 000016' xx.set: inc xx.flg 18 000560 return 19 000562 genswt mx,mx.set 20 000562 genswt my,my.set 21 000562 genswt lt,lt.set 22 000562 mx.set: 23 000562 call no.set 24 000566 call lt.set 25 000572 005267 000014' inc mx.flg 26 000576 return 27 000600 my.set: 28 000600 005267 000020' inc my.flg 29 000604 000766 br mx.set 30 31 000606 genswt 10,setten 32 000606 setten: 33 000606 005267 000024' inc pdp10 34 000612 return 35 000614 lt.set: 36 000614 012767 000001 000002' mov #1,lttflg 37 000622 call ls.set 38 000626 112777 000157 000122' movb #'o,@crap ; tell cref to go on stdout, too. 39 000634 005267 000122' inc crap 40 000640 return 41 .if ne,mk.symbol 42 000642 genswt ns,ns.set 43 44 000642 005267 000000G ns.set: inc out$ym 45 000646 return 46 47 .globl out$ym 48 .endc 49 .globl fixtit 50 .globl ed.gbl, eddflt 51 000650 genswt xs,xs.set 52 000650 xs.set: ; obsolete 53 000650 call absexp ; so that -xs:3 wont genrerate a 'bad switch' 54 ; error. 55 000654 return 56 exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 9-2 output file initialization 57 000656 genswt ha,ha.set 58 000656 genswt de,de.set 59 000656 ha.set: 60 000656 005267 000000' inc veritas ; reinstate addf #12,3,fr1 61 000662 012767 000166' 000146' mov #harvid,vernam 62 000670 call um.set 63 ; harvard .psect attrib scheme uses same defaults as UCB, 64 ; but uses them wrong. The 'veritas' flag tells when to misuse 65 ; them. See 'psect' in xlat.m11 66 ; 67 000674 052767 000000G 000000G bis #ed.gbl,eddflt 68 000702 000167 000000G jmp fixtit 69 000706 de.set: 70 000706 call uc.set 71 000712 012767 000203' 000146' mov #decid,vernam 72 ; 73 ; incomprehensible but true DEC default attribute patterns 74 ; 75 000720 012767 000052 000000G mov #insflg!pattrs,psdflt 76 000726 012767 000172 000000G mov #insflg!cattrs,csdflt 77 000734 012767 000132 000000G mov #insflg!aattrs,asdflt 78 000742 052767 000000G 000000G bis #ed.gbl,eddflt 79 000750 000167 000000G jmp fixtit 80 81 000754 genswt dp,dp.set 82 000754 genswt da,da.set 83 000754 genswt dc,dc.set 84 .globl psdflt,asdflt,csdflt,psarol ; in xlat.m11: .psect atribs 85 86 000754 da.set: 87 000754 012746 000000G mov #asdflt,-(sp) 88 000760 000405 br dx.set 89 000762 dc.set: 90 000762 012746 000000G mov #csdflt,-(sp) 91 000766 000402 br dx.set 92 000770 dp.set: 93 000770 012746 000000G mov #psdflt,-(sp) 94 000774 dx.set: 95 000774 call gsarg 96 001000 001443 beq 9$ 97 001002 scanw psarol 98 001012 001407 beq 10$ 99 001014 156776 000000C 000000 bisb symbol+2,@(sp) 100 001022 146776 000000C 000000 bicb symbol+3,@(sp) 101 001030 000761 br dx.set 102 001032 10$: error 45,a, 103 001110 9$: 104 001110 005726 tst (sp)+ 105 001112 return 106 107 001114 genswt ls,ls.set 108 001114 genswt lp,lp.set 109 110 001114 005267 000012' lp.set: inc lpflag ;note spooler request 111 001120 112777 000154 000122' movb #'l,@crap 112 001126 005267 000122' inc crap exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 9-3 output file initialization 113 001132 005267 000000' ls.set: inc lstflg ;note lst file req. 114 001136 012702 000004 mov #lstchn,r2 ;set up to add buffer for lstchn 115 001142 016700 000010' addbuf: mov symlp,r0 ;get cur. free loc. 116 001146 010062 000236' mov r0,cnttbl(r2) ;that's where our byte count will go 117 001152 005720 tst (r0)+ ;now point to our buffer 118 001154 010062 000252' mov r0,buftbl(r2) 119 001160 066200 000174' add ioltbl(r2),r0 ;allow for length of buffer 120 001164 010067 000010' mov r0,symlp ;new free loc. 121 122 001170 return 123 124 .if ndf xcref 125 001172 genswt cr,cr.set 126 001172 genedt crf 127 .globl ed.crf,edmask,gsarg,cpopj 128 001172 cr.set: 129 001172 005767 000004' tst crfpnd 130 001176 001056 bne 2$ 131 001200 005267 000004' inc crfpnd ;note pending cref 132 001204 052767 000000G 000000G bis #ed.crf,edmask ; so .enabl/.dsabl crf will work. 133 001212 1$: 134 001212 call gsarg 135 001216 001413 beq 3$ 136 001220 scanw crfrol 137 001230 001412 beq 9$ 138 001232 116777 000000C 000122' movb symbol+4,@crap 139 001240 005267 000122' inc crap 140 001244 000762 br 1$ 141 001246 3$: 142 001246 012702 000012 mov #crfchn,r2 ;set up buffer for it 143 001252 000167 177664 jmp addbuf 144 145 001256 9$: 146 001256 error 55,a, 147 001334 2$: 148 001334 return 149 150 .macro gencrf name,char 151 entsec crfsec 152 .even 153 .rad50 /name/ 154 .word cpopj 155 .word char 156 .endm 157 001336 gencrf s,'s 158 000006 gencrf sy,'s 159 000014 gencrf sym,'s 160 000022 gencrf r,'r 161 000030 gencrf re,'r 162 000036 gencrf reg,'r 163 000044 gencrf m,'m 164 000052 gencrf ma,'m 165 000060 gencrf mac,'m 166 000066 gencrf p,'p 167 000074 gencrf pe,'p 168 000102 gencrf per,'p exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 9-4 output file initialization 169 000110 gencrf pst,'p 170 000116 gencrf c,'c 171 000124 gencrf cs,'c 172 000132 gencrf cse,'c 173 000140 gencrf sec,'c 174 000146 gencrf pse,'c 175 000154 gencrf e,'e 176 000162 gencrf er,'e 177 000170 gencrf err,'e 178 179 000176 xitsec 180 181 .endc exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 10 pass initialization 1 .sbttl pass initialization 2 3 001336 inip1: ;init for pass 1 4 001336 012700 000004 mov #lstchn,r0 5 001342 call openo 6 001346 call srchi ;init the symbol table & rolls 7 001352 000407 br inip2f ;set source for pass 8 9 001354 inip2: ;init for pass 2 10 001354 005267 000000G inc pass 11 001360 005767 000004' tst crfpnd 12 001364 001402 beq inip2f 13 001366 call crfset 14 001372 inip2f: call setlc 15 .globl mx.2 , mdepth 16 .globl mac.er 17 001376 005067 000000G clr mx.2 18 001402 005067 000000G clr mdepth 19 001406 call seted 20 001412 016767 000004' 000006' inip0z: mov iargv,argv ;init count & pointer to args. 21 001420 016767 000002' 000000' mov iargc,argc 22 001426 005367 000000' dec argc 23 001432 062767 000002 000006' add #2,argv 24 001440 return exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 11 end of pass routines 1 .sbttl end of pass routines 2 3 001442 finp1: ;finish of pass 4 001442 012700 000002 mov #srcchn,r0 5 001446 call zclose 6 001452 return 7 8 9 10 001454 openo: ;open output file 11 001454 call savreg 12 001460 010002 mov r0,r2 ;copy r0 (chn. #) 13 001462 020027 000004 cmp r0,#lstchn ;is it list channel? 14 001466 001011 bne 1$ ;no 15 001470 005767 000002' tst lttflg ; <<< REEDS june 1981 16 001474 001403 beq 100$ ; <<< 17 001476 012700 000001 mov #1,r0 ; <<< use standard output if -lt flag in use 18 001502 000437 br 7$ ; <<< 19 001504 100$: 20 001504 005767 000000' tst lstflg ;yes, is listing enabled (-ls) ? 21 001510 001441 beq 9$ ;no, ignore 22 001512 020027 000006 1$: cmp r0,#objchn ;is this object channel? 23 001516 001003 bne 11$ ;no 24 001520 005767 000006' tst no.flg ;were we told to withhold obj. o/p ? 25 001524 001033 bne 9$ ;yes, ignore 26 001526 11$: call src.ap ;set up name in linbuf 27 001532 012767 000000G 000320' mov #linbuf,$crtnm ; and pointer to name 28 001540 2$: $indir 29 001542 000316' $crtsy 30 001544 103016 bcc 7$ ;ok 31 001546 012701 000000G mov #linbuf,r1 ;no good, complain 32 001552 105721 3$: tstb (r1)+ ;find end of filename 33 001554 001376 bne 3$ 34 001556 005301 dec r1 ;back up over null 35 001560 012700 000153' mov #ncmsg,r0 ;append rest of msg. 36 001564 112021 4$: movb (r0)+,(r1)+ 37 001566 001376 bne 4$ 38 001570 putkb #linbuf 39 001600 return 40 41 001602 010062 000124' 7$: mov r0,chntbl(r2) ;store file handle 42 001606 010200 mov r2,r0 ;restore r0 with chn. # 43 001610 call zopen 44 001614 9$: return 45 001616 src.fp: 46 001616 016701 000026' mov srcnam,r1 ;transfer file name from src prefix 47 001622 005767 000030' tst esrcnam 48 001626 001402 beq 1$ 49 001630 016701 000030' mov esrcnam,r1 50 001634 1$: 51 001634 012700 000000G mov #linbuf,r0 ;and store in linbuf 52 001640 005046 nam.fp: clr -(sp) ;clear "." flag 53 001642 112120 2$: movb (r1)+,(r0)+ ;transfer a byte 54 001644 001414 beq 4$ ;move on if done 55 001646 126027 177777 000056 cmpb -1(r0),#'. ;not null, was it a "." ? 56 001654 001406 beq 3$ ;yes, set flag and cont. exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 11-2 end of pass routines 57 001656 126027 177777 000057 cmpb -1(r0),#'/ ;no, was it / ? 58 001664 001366 bne 2$ ;no, continue 59 001666 005016 clr (sp) ;yes, clear flag 60 001670 000764 br 2$ ;continue 61 001672 010016 3$: mov r0,(sp) ;flag with adr. past period. 62 001674 000762 br 2$ 63 001676 010001 4$: mov r0,r1 ;copy adr. past terminating null 64 001700 012600 mov (sp)+,r0 ;restore period flag (adr.) 65 001702 001001 bne 5$ ;if set, move on 66 001704 010100 mov r1,r0 ;use this adr. 67 001706 005300 5$: dec r0 ;back up pointer to null or period. 68 001710 return 69 70 001712 nam.ap: call nam.fp ;move to period 71 001716 000402 br ap.ext 72 73 001720 src.ap: call src.fp ;find period. 74 ; and plop appropriate ext. in 75 76 001724 105720 ap.ext: tstb (r0)+ ;period here? 77 001726 001003 bne 1$ ;yes, assuming non-null is a period 78 001730 112760 000056 177777 movb #'.,-1(r0) ;no, put one in 79 001736 016201 000222' 1$: mov exttbl(r2),r1 ;get pointer to ext. 80 001742 112120 2$: movb (r1)+,(r0)+ ;store the ext. at end of name 81 001744 001376 bne 2$ 82 001746 7$: return exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 12 end of program cleanup 1 .sbttl end of program cleanup 2 3 001750 setdn: ;clean up 4 001750 012701 000115' mov #finmsg,r1 ;set for final message 5 001754 012702 000000G mov #linbuf,r2 6 001760 call movbyt ;move into linbuf 7 001764 016701 000000G mov errcnt,r1 8 ; *** beq 1$ ;don't bother if successful 9 001770 call dnc ;print in decimal 10 001774 105012 clrb (r2) 11 12 001776 005767 000014' tst mx.flg 13 002002 001014 bne 1$ 14 002004 005767 000002' tst lttflg ; <<< REEDS june 81 15 002010 001405 beq 100$ ; <<< REEDS june 81 16 002012 putlp #linbuf ; <<< REEDS june 81 17 002022 000404 br 1$ ; <<< REEDS june 81 18 002024 100$: putkbl #linbuf ;list to kb & lp 19 20 002034 1$: return exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 13 end of program cleanup 1 002036 serror: ;"s" error 2 002036 call putkb 3 002042 call mac.er ;maybe caused by macro explosion 4 002046 012700 000001 mov #1,r0 5 002052 $exit 6 7 ; symovf: serror 217, 8 002054 symovf: 9 002054 serror #symerr 10 002064 macovf: call mac.er 11 002070 serror #macerr ; no return: exit sys call 12 exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 14 end of program cleanup 1 002100 getic: ;get input character 2 002100 005370 000236' dec @cnttbl(r0) ;any chars left in line? 3 002104 002406 blt 4$ ; no 4 002106 005005 clr r5 5 002110 157005 000110' bisb @chrtbl(r0),r5 ;yes, fetch next 6 002114 005260 000110' inc chrtbl(r0) ;bump count 7 002120 return 8 9 002122 005760 000074' 4$: tst ioftbl(r0) ;file initted? 10 002126 001417 beq 5$ ;no, do so 11 002130 call zread ;read and wait 12 002134 016005 000074' mov ioftbl(r0),r5 ;get condition flags 13 002140 042705 177747 bic #^c,r5 ;clear extraneous 14 002144 001755 beq getic ;branch if nothing special 15 002146 032705 000010 bit #io.eof,r5 16 002152 001416 beq 9$ ; error, exit 17 002154 012705 000040 mov #io.eoi,r5 ;in case not source 18 002160 020027 000002 cmp r0,#srcchn ;is it src.? 19 002164 001011 bne 9$ ;no 20 002166 5$: call getsrc ;open next source file 21 002172 012705 000040 mov #io.eoi,r5 ;in case unsuccessful 22 002176 005767 000000C tst ioftbl+srcchn ;winner? 23 002202 001402 beq 9$ ;no 24 002204 012705 000010 mov #io.eof,r5 ;set end-of-file 25 002210 052705 100000 9$: bis #100000,r5 ;set flag bit 26 002214 return 27 28 .globl err.by ; array holds file name for error printer 29 002216 getsrc: 30 002216 105067 000000G clrb err.by 31 002222 005067 000006' clr fileln ; start unix line numbers over 32 002226 012700 000002 mov #srcchn,r0 ;use source chn. 33 002232 010046 mov r0,-(sp) 34 002234 010146 mov r1,-(sp) 35 002236 010246 mov r2,-(sp) 36 002240 010002 mov r0,r2 ;copy chn. # 37 002242 call zclose ;close current source input 38 002246 005367 000000' 1$: dec argc ;any left? 39 002252 002520 blt 7$ ;no 40 002254 016700 000006' mov argv,r0 ;point to next arg. 41 002260 012001 mov (r0)+,r1 42 002262 010067 000006' mov r0,argv 43 002266 005701 tst r1 ;ignore null pointer 44 002270 001766 beq 1$ 45 002272 121127 000055 cmpb (r1),#'- ;switch? 46 002276 001763 beq 1$ ;yes, ignore 47 002300 016700 000000C mov buftbl+srcchn,r0 ;point to dest. of name 48 002304 010067 000326' mov r0,$opnnm ;set up pointer to name 49 002310 call nam.fp ;transfer name & find period. 50 002314 005046 clr -(sp) ;clear retry indicator 51 002316 105710 tstb (r0) ;was ext. specified? 52 002320 001003 bne 13$ ;yes, try it as is 53 002322 010016 mov r0,(sp) ;no, save adr. of null 54 002324 call ap.ext ;append default ext. 55 002330 005067 000330' 13$: clr $opnmd ;set up mode as "read" 56 002334 $indir ;indirect to dirty area exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 14-2 end of program cleanup 57 002336 000324' $opnsy 58 002340 103030 bcc 3$ ;if ok, move on 59 002342 005716 tst (sp) ;prepared to retry w/o ext.? 60 002344 001404 beq 14$ ;no, not found! 61 002346 105076 000000 clrb @(sp) ;yes, remove ext. 62 002352 005016 clr (sp) ;just one retry 63 002354 000765 br 13$ 64 002356 012701 000000G 14$: mov #linbuf,r1 ;store msg. in buffer 65 002362 016700 000326' mov $opnnm,r0 66 002366 112021 15$: movb (r0)+,(r1)+ 67 002370 001376 bne 15$ ;store file name 68 002372 005301 dec r1 ;back up pointer 69 002374 012700 000140' mov #nfmsg,r0 70 002400 112021 2$: movb (r0)+,(r1)+ 71 002402 001376 bne 2$ 72 002404 putkb #linbuf 73 002414 012700 000001 mov #1,r0 ;indicate error status 74 002420 $exit ;and die 75 76 002422 010067 000000C 3$: mov r0,chntbl+srcchn ;store file handle. 77 002426 052767 000002 000000C bis #io.opn,ioftbl+srcchn ;denote open 78 002434 005077 000000C clr @cnttbl+srcchn ;beware of dos "feature" 79 002440 005726 tst (sp)+ ;flush retry indicator 80 002442 016701 000326' mov $opnnm,r1 81 002446 012702 000000G mov #err.by,r2 82 002452 call movbyt 83 002456 105012 clrb (r2) 84 002460 016700 000000' 4$: mov argc,r0 ;get arg. count 85 002464 016701 000006' mov argv,r1 ;and vector ptr. 86 002470 005300 5$: dec r0 ;any left? 87 002472 002410 blt 7$ ;no 88 002474 123127 000055 cmpb @(r1)+,#'- ;yes, but is it switch? 89 002500 001773 beq 5$ ;yes 90 002502 005005 clr r5 ;no, note another file to go 91 002504 6$: 92 002504 012602 10$: mov (sp)+,r2 93 002506 012601 mov (sp)+,r1 94 002510 012600 mov (sp)+,r0 95 002512 return 96 002514 010605 7$: mov sp,r5 ;note no more files 97 002516 000772 br 6$ 98 99 002520 027060 000236' 000174' putoc: cmp @cnttbl(r0),ioltbl(r0) ;any room left? 100 002526 002007 bge 5$ ;no 101 002530 110170 000110' movb r1,@chrtbl(r0) ;yes 102 002534 005260 000110' inc chrtbl(r0) 103 002540 005270 000236' inc @cnttbl(r0) 104 002544 4$: return 105 002546 032760 000002 000074' 5$: bit #io.opn,ioftbl(r0) ;open? 106 002554 001773 beq 4$ ;no, return 107 002556 call zwrite ;yes, dump buffer 108 002562 000756 br putoc ;try again exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 15 system macro handlers 1 .sbttl system macro handlers 2 3 .if ndf xsml 4 5 002564 inisml: ;init sml file 6 002564 012700 000010 mov #smlchn,r0 ;open 'er up 7 002570 005760 000074' tst ioftbl(r0) 8 002574 001031 bne finsml 9 002576 call zopen 10 002602 016701 000032' mov smlnam,r1 ;get pointer to name prefix 11 002606 012700 000034' mov #smlfil,r0 ;point to destination of complete string 12 002612 010067 000326' mov r0,$opnnm ;make copy for system call 13 002616 012702 000010 mov #smlchn,r2 ;set up channel # 14 002622 call nam.fp ;transfer name to smlfil & find period. 15 002626 105710 tstb (r0) ;ext. specified? 16 002630 001002 bne 1$ ;yes 17 002632 call ap.ext ;no, supply default 18 002636 005067 000330' 1$: clr $opnmd ;for reading 19 002642 $indir 20 002644 000324' $opnsy 21 002646 103404 bcs finsml 22 002650 010067 000000C mov r0,chntbl+smlchn 23 002654 010600 mov sp,r0 ;flag good (non-zero) return 24 002656 return 25 26 002660 finsml: ;close out sml file 27 002660 012700 000010 mov #smlchn,r0 ; and release it 28 002664 call zrlse 29 002670 005000 clr r0 ;signal that we're through 30 002672 return 31 32 33 002674 .data 34 .globl veritas 35 000000 veritas: .blkw ; harvard retrocomat in effect 36 ; 37 38 000002 entsec impure 39 40 000032 smlnam: .blkw 1 41 000034 smlfil: .blkw 20 ;macro filename (.sml) goes here 42 43 000074 xitsec 44 45 .endc exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 16 init/read/write routines 1 .sbttl init/read/write routines 2 3 .globl zread, zwrite 4 5 002674 zinit: ;init a device 6 002674 052760 000001 000074' bis #io.ini,ioftbl(r0) ;flag as in use 7 002702 return 8 9 002704 052760 000002 000074' zopen: bis #io.opn,ioftbl(r0) 10 002712 016060 000252' 000110' mov buftbl(r0),chrtbl(r0) 11 002720 005070 000236' clr @cnttbl(r0) 12 002724 return 13 14 002726 zread: ;read a line 15 002726 010046 mov r0,-(sp) 16 002730 010146 mov r1,-(sp) 17 002732 010001 mov r0,r1 18 002734 016067 000252' 000312' mov buftbl(r0),$rdbfp 19 002742 016067 000174' 000314' mov ioltbl(r0),$rdcnt 20 002750 016060 000252' 000110' mov buftbl(r0),chrtbl(r0) 21 002756 016000 000124' mov chntbl(r0),r0 ;get file handle 22 002762 $indir 23 002764 000310' $rdsys 24 002766 103004 bcc 1$ ;ok 25 002770 052761 000020 000074' bis #io.err,ioftbl(r1) 26 002776 000406 br 8$ 27 003000 010071 000236' 1$: mov r0,@cnttbl(r1) ;store count of chars. read 28 003004 001003 bne 8$ 29 003006 052761 000010 000074' bis #io.eof,ioftbl(r1) ;eof if none 30 003014 8$: 31 003014 012601 mov (sp)+,r1 32 003016 012600 mov (sp)+,r0 33 003020 return 34 003022 zwrite: ;write a line 35 003022 010046 mov r0,-(sp) 36 003024 010146 mov r1,-(sp) 37 003026 010246 mov r2,-(sp) 38 003030 010002 mov r0,r2 39 003032 032760 000002 000074' bit #io.opn,ioftbl(r0) ;only if open 40 003040 001460 beq 9$ 41 003042 016001 000252' mov buftbl(r0),r1 42 003046 017000 000236' mov @cnttbl(r0),r0 43 003052 001446 beq 4$ ;and non-zero count 44 003054 005762 000266' tst bintbl(r2) ;binary? 45 003060 003427 ble 59$ ; no 46 003062 010246 mov r2,-(sp) 47 003064 062700 000004 add #4,r0 48 003070 010041 mov r0,-(r1) 49 003072 012741 000001 mov #1,-(r1) 50 003076 010046 mov r0,-(sp) 51 003100 060100 add r1,r0 52 003102 005046 clr -(sp) 53 003104 112102 51$: movb (r1)+,r2 54 003106 060216 add r2,(sp) 55 003110 020100 cmp r1,r0 56 003112 103774 blo 51$ exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 16-2 init/read/write routines 57 003114 005416 neg (sp) 58 003116 112611 movb (sp)+,(r1) 59 003120 105061 000001 clrb 1(r1) 60 003124 012600 mov (sp)+,r0 61 003126 160001 sub r0,r1 62 003130 052700 000001 bis #1,r0 63 003134 005200 inc r0 64 003136 012602 mov (sp)+,r2 65 003140 010067 000306' 59$: mov r0,$wrcnt ;store byte count 66 003144 010167 000304' mov r1,$wrbfp ;and buffer adr. 67 003150 016200 000124' mov chntbl(r2),r0 ;get file handle 68 003154 $indir 69 003156 000302' $wrsys 70 003160 103003 bcc 4$ 71 003162 052762 000020 000074' bis #io.err,ioftbl(r2) ;error 72 003170 005072 000236' 4$: clr @cnttbl(r2) ;clear count initially 73 003174 016262 000252' 000110' mov buftbl(r2),chrtbl(r2) ;point to beg. of buffer 74 003202 012602 9$: mov (sp)+,r2 75 003204 012601 mov (sp)+,r1 76 003206 012600 mov (sp)+,r0 77 003210 return exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 17 init/read/write routines 1 003212 zclose: ;close file 2 003212 032760 000002 000074' bit #io.opn,ioftbl(r0) ;is file open? 3 003220 001411 beq 1$ ;no 4 003222 010046 mov r0,-(sp) ;yes, save r0 5 003224 016000 000124' mov chntbl(r0),r0 ;get file handle 6 003230 $close ;close 7 003232 012600 mov (sp)+,r0 8 003234 005060 000074' clr ioftbl(r0) 9 003240 005070 000236' clr @cnttbl(r0) 10 003244 1$: return 11 12 003246 zrlse: ;close and release file 13 003246 call zclose ;be sure it's closed 14 003252 005060 000074' clr ioftbl(r0) ;clear device table 15 003256 return exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 18 messages 1 .sbttl messages 2 3 003260 entsec imppas 4 000000 pagnum: .blkw ;page number 5 000002 linnum: .blkw 2 ;line number 6 000006 fileln:: .blkw 1 ; true line number in file 7 000010 entsec mixed 8 9 10 .if ndf xtime 11 000124 060 060 055 dattim: .ascii /00-xxx-00 / 12 000136 060 060 072 datti1: .ascii /00:00/ 13 000143 072 060 060 datti2: .ascii /:00/ 14 .even 15 .endc 16 17 000146 entsec dpure 18 19 ;endp1m: .asciz /end of pass/ 20 000030 155 141 143 macerr: .asciz /macro text overflow/ 21 000054 163 171 155 symerr: .asciz /symbol table overflow/ 22 000102 142 141 144 swcerr: .asciz /bad switch/ 23 000115 145 162 162 finmsg: .asciz /errors detected: / 24 25 000140 040 156 157 nfmsg: .asciz / not found/ 26 000153 040 055 040 ncmsg: .asciz / - can't create/ 27 28 .even 29 30 000174 entsec mixed 31 000146 000150' vernam:: 1$ ; addr of default logo 32 000150 125 103 102 1$: .asciz /UCB m11 v1.2 / 33 000166 110 141 162 harvid: .asciz /Harvard m11 / 34 000203 104 105 103 decid: .asciz /DEC Macro-11 / 35 .even 36 37 000222 xitsec exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 19 i/o tables 1 .sbttl i/o tables 2 3 .list meb 4 ;i/o flags 5 000001 io.ini= 000001 ;initted 6 000002 io.opn= 000002 ;opened 7 000004 io.tty= 000004 ;device is tty 8 000010 io.eof= 000010 ;eof seen 9 000020 io.err= 000020 ;error encountered 10 000040 io.eoi= 000040 ;end of input 11 100000 io.out= 100000 ;output device 12 13 003260 entsec impure 14 000074 ioftbl: .blkw maxchn/2 ;i/o flag table 15 16 000110 entsec dpure 17 000174 ioltbl: ;i/o length table 18 .macro setchn zchan,zlnk,zbuf,ztype,zext,zlen 19 .list 20 .word zbuf'len 21 .nlist 22 .endm 23 000174 genchn 000174 000120 .word cmolen 000176 000204 .word srclen 000200 001000 .word lstlen 000202 000052 .word objlen 000204 000120 .word smllen 000206 001000 .word crflen 24 26 27 .macro setchn zchan,zlnk,zbuf,ztype,zext,zlen 28 .list 29 .if nb zext 30 zchan'ext: .asclc zext 31 .endc 32 .nlist 33 .endm 34 35 000210 genchn 000210 setchn cmo, cmo, cmo, 0, ,80. .if nb cmoext: .asclc .endc 000210 setchn src, src, src, 0, m11, 132. .if nb m11 000210 srcext: .asclc m11 .irpc x, ^%m11% .if ge ''x-101 .if le ''x-132 .byte ''x+40 .iff .byte ''x .endc exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 19-2 i/o tables .iff .byte ''x .endc .endm .if ge 'm-101 .if le 'm-132 .byte 'm+40 .iff 000210 155 .byte 'm .endc .iff .byte 'm .endc .if ge '1-101 .if le '1-132 .byte '1+40 .iff .byte '1 .endc .iff 000211 061 .byte '1 .endc .if ge '1-101 .if le '1-132 .byte '1+40 .iff .byte '1 .endc .iff 000212 061 .byte '1 .endc 000213 000 .byte 0 .endc 000214 setchn lst, lst, lst, , lst, 512. .if nb lst 000214 lstext: .asclc lst .irpc x, ^%lst% .if ge ''x-101 .if le ''x-132 .byte ''x+40 .iff .byte ''x .endc .iff .byte ''x exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 19-3 i/o tables .endc .endm .if ge 'l-101 .if le 'l-132 .byte 'l+40 .iff 000214 154 .byte 'l .endc .iff .byte 'l .endc .if ge 's-101 .if le 's-132 .byte 's+40 .iff 000215 163 .byte 's .endc .iff .byte 's .endc .if ge 't-101 .if le 't-132 .byte 't+40 .iff 000216 164 .byte 't .endc .iff .byte 't .endc 000217 000 .byte 0 .endc 000220 setchn obj, obj, obj, 1, obj, 42. .if nb obj 000220 objext: .asclc obj .irpc x, ^%obj% .if ge ''x-101 .if le ''x-132 .byte ''x+40 .iff .byte ''x .endc .iff .byte ''x .endc exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 19-4 i/o tables .endm .if ge 'o-101 .if le 'o-132 .byte 'o+40 .iff 000220 157 .byte 'o .endc .iff .byte 'o .endc .if ge 'b-101 .if le 'b-132 .byte 'b+40 .iff 000221 142 .byte 'b .endc .iff .byte 'b .endc .if ge 'j-101 .if le 'j-132 .byte 'j+40 .iff 000222 152 .byte 'j .endc .iff .byte 'j .endc 000223 000 .byte 0 .endc .if ndf xsml 000224 setchn sml, sml, sml, 0, sml, 80. .if nb sml 000224 smlext: .asclc sml .irpc x, ^%sml% .if ge ''x-101 .if le ''x-132 .byte ''x+40 .iff .byte ''x .endc .iff .byte ''x .endc .endm exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 19-5 i/o tables .if ge 's-101 .if le 's-132 .byte 's+40 .iff 000224 163 .byte 's .endc .iff .byte 's .endc .if ge 'm-101 .if le 'm-132 .byte 'm+40 .iff 000225 155 .byte 'm .endc .iff .byte 'm .endc .if ge 'l-101 .if le 'l-132 .byte 'l+40 .iff 000226 154 .byte 'l .endc .iff .byte 'l .endc 000227 000 .byte 0 .endc .endc .if ndf xcref 000230 setchn crf, crf, crf, , xrf, 512. .if nb xrf 000230 crfext: .asclc xrf .irpc x, ^%xrf% .if ge ''x-101 .if le ''x-132 .byte ''x+40 .iff .byte ''x .endc .iff .byte ''x .endc .endm exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 19-6 i/o tables .if ge 'x-101 .if le 'x-132 .byte 'x+40 .iff 000230 170 .byte 'x .endc .iff .byte 'x .endc .if ge 'r-101 .if le 'r-132 .byte 'r+40 .iff 000231 162 .byte 'r .endc .iff .byte 'r .endc .if ge 'f-101 .if le 'f-132 .byte 'f+40 .iff 000232 146 .byte 'f .endc .iff .byte 'f .endc 000233 000 .byte 0 .endc .endc 36 37 .even 38 000234 000000 nulext: .word 0 39 40 41 000236 entsec mixed .psect mixed con 42 000222 exttbl: 43 .macro setchn zchan,zlnk,zbuf,ztype,zext,zlen 44 .list 45 .if nb zext 46 .word zchan'ext 47 .iff 48 .word nulext 49 .endc 50 .nlist 51 .endm 52 exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 19-7 i/o tables 53 000222 genchn 000222 setchn cmo, cmo, cmo, 0, ,80. .if nb .word cmoext .iff 000222 000234' .word nulext .endc 000224 setchn src, src, src, 0, m11, 132. .if nb m11 000224 000210' .word srcext .iff .word nulext .endc 000226 setchn lst, lst, lst, , lst, 512. .if nb lst 000226 000214' .word lstext .iff .word nulext .endc 000230 setchn obj, obj, obj, 1, obj, 42. .if nb obj 000230 000220' .word objext .iff .word nulext .endc .if ndf xsml 000232 setchn sml, sml, sml, 0, sml, 80. .if nb sml 000232 000224' .word smlext .iff .word nulext .endc .endc .if ndf xcref 000234 setchn crf, crf, crf, , xrf, 512. .if nb xrf 000234 000230' .word crfext .iff .word nulext .endc .endc exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 20 i/o tables 1 000236 entsec mixed .psect mixed con 2 000236 cnttbl: ;pointer to counts 3 .macro setchn zchan,zlnk,zbuf,ztype,zext,zlen 4 .list 5 .if nb ztype 6 .word zbuf'buf-2 7 .iff 8 .word 0 9 .endc 10 .nlist 11 .endm 12 000236 genchn 000236 setchn cmo, cmo, cmo, 0, ,80. .if nb 0 000236 000000C .word cmobuf-2 .iff .word 0 .endc 000240 setchn src, src, src, 0, m11, 132. .if nb 0 000240 000000C .word srcbuf-2 .iff .word 0 .endc 000242 setchn lst, lst, lst, , lst, 512. .if nb .word lstbuf-2 .iff 000242 000000 .word 0 .endc 000244 setchn obj, obj, obj, 1, obj, 42. .if nb 1 000244 000000C .word objbuf-2 .iff .word 0 .endc .if ndf xsml 000246 setchn sml, sml, sml, 0, sml, 80. .if nb 0 000246 000000C .word smlbuf-2 .iff .word 0 .endc .endc .if ndf xcref 000250 setchn crf, crf, crf, , xrf, 512. .if nb .word crfbuf-2 .iff 000250 000000 .word 0 .endc .endc 13 14 15 000252 buftbl: ;pointers to buffers exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 20-2 i/o tables 16 .macro setchn zchan,zlnk,zbuf,ztype,zext,zlen 17 .list 18 .if nb ztype 19 .word zbuf'buf 20 .iff 21 .word 0 22 .endc 23 .nlist 24 .endm 25 000252 genchn 000252 setchn cmo, cmo, cmo, 0, ,80. .if nb 0 000252 000146' .word cmobuf .iff .word 0 .endc 000254 setchn src, src, src, 0, m11, 132. .if nb 0 000254 000300' .word srcbuf .iff .word 0 .endc 000256 setchn lst, lst, lst, , lst, 512. .if nb .word lstbuf .iff 000256 000000 .word 0 .endc 000260 setchn obj, obj, obj, 1, obj, 42. .if nb 1 000260 000516' .word objbuf .iff .word 0 .endc .if ndf xsml 000262 setchn sml, sml, sml, 0, sml, 80. .if nb 0 000262 000602' .word smlbuf .iff .word 0 .endc .endc .if ndf xcref 000264 setchn crf, crf, crf, , xrf, 512. .if nb .word crfbuf .iff 000264 000000 .word 0 .endc .endc 26 27 000266 entsec impure .psect impure con 28 000110 chrtbl: ;char pointer table 29 .blkw maxchn/2 30 exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 20-3 i/o tables 31 32 000124 chntbl: ;channel <--> file handle table 33 .blkw maxchn/2 34 35 000140 entsec mixed .psect mixed con 36 37 000266 bintbl: 38 .macro setchn zchan,zlnk,zbuf,ztype,zext,zlen 39 .list 40 .if nb ztype 41 .word ztype 42 .iff 43 .word 0 44 .endc 45 .nlist 46 .endm 47 48 000266 genchn 000266 setchn cmo, cmo, cmo, 0, ,80. .if nb 0 000266 000000 .word 0 .iff .word 0 .endc 000270 setchn src, src, src, 0, m11, 132. .if nb 0 000270 000000 .word 0 .iff .word 0 .endc 000272 setchn lst, lst, lst, , lst, 512. .if nb .word .iff 000272 000000 .word 0 .endc 000274 setchn obj, obj, obj, 1, obj, 42. .if nb 1 000274 000001 .word 1 .iff .word 0 .endc .if ndf xsml 000276 setchn sml, sml, sml, 0, sml, 80. .if nb 0 000276 000000 .word 0 .iff .word 0 .endc .endc .if ndf xcref 000300 setchn crf, crf, crf, , xrf, 512. .if nb .word .iff exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 20-4 i/o tables 000300 000000 .word 0 .endc .endc exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 21 i/o tables 1 .macro setchn zchan,zlnk,zbuf,ztype,zext,zlen 2 .if nb 3 entsec impure 4 .list 5 6 .blkw 3 7 zbuf'buf: .blkw /2+2 8 .nlist 9 .endc 10 .endm 11 12 000302 genchn 000302 setchn cmo, cmo, cmo, 0, ,80. .if nb <0> 000302 entsec impure .psect impure con .blkw 3 000146 cmobuf: .blkw /2+2 .endc 000272 setchn src, src, src, 0, m11, 132. .if nb <0> 000272 entsec impure .psect impure con .blkw 3 000300 srcbuf: .blkw /2+2 .endc 000510 setchn lst, lst, lst, , lst, 512. .if nb <> entsec impure .list .blkw 3 lstbuf: .blkw /2+2 .nlist .endc 000510 setchn obj, obj, obj, 1, obj, 42. .if nb <1> 000510 entsec impure .psect impure con .blkw 3 000516 objbuf: .blkw /2+2 .endc .if ndf xsml 000574 setchn sml, sml, sml, 0, sml, 80. .if nb <0> 000574 entsec impure .psect impure con .blkw 3 000602 smlbuf: .blkw /2+2 .endc .endc .if ndf xcref exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 21-2 i/o tables 000726 setchn crf, crf, crf, , xrf, 512. .if nb <> entsec impure .list .blkw 3 crfbuf: .blkw /2+2 .nlist .endc .endc 13 14 15 000726 entsec mixed .psect mixed con 16 000302 $wrsys: $write 000302 104404 104400 + 4 17 000304 $wrbfp: .blkw 1 18 000306 $wrcnt: .blkw 1 19 20 000310 $rdsys: $read 000310 104403 104400 + 3 21 000312 $rdbfp: .blkw 1 22 000314 $rdcnt: .blkw 1 23 24 000316 $crtsy: $creat 000316 104410 104400 + 8. 25 000320 $crtnm: .blkw 1 26 000322 000644 $crtmd: .word 0644 27 28 29 000324 $opnsy: $open 000324 104405 104400 + 5 30 000326 $opnnm: .blkw 1 31 000330 $opnmd: .blkw 1 32 33 000332 $brksy: $break 000332 104421 104400 + 17. 34 000334 $brkad: .blkw 1 35 36 000336 xitsec 000336 entsec .text .psect .text con exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 22 cross reference handlers 1 .sbttl cross reference handlers 2 3 .if ndf xcref 4 5 003260 crfset: ;cref switch processor 6 003260 005767 000000G tst pass 7 003264 001424 beq 9$ 8 003266 012700 000012 mov #crfchn,r0 9 003272 call openo 003272 004767 176156 jsr pc,openo 10 003276 032767 000002 000000C bit #io.opn,ioftbl+crfchn ;successful? 11 003304 001414 beq 9$ ;no 12 003306 strcpy #linbuf,#crefil 003306 010046 mov r0,-(sp) 003310 010146 mov r1,-(sp) 003312 012700 000000G mov #linbuf,r0 003316 012701 000014' mov #crefil,r1 003322 64$: 003322 112021 movb (r0)+,(r1)+ 003324 001376 bne 64$ 003326 012601 mov (sp)+,r1 003330 012600 mov (sp)+,r0 13 003332 010667 000740' mov sp,crfpnt ;yes, flag non-null 14 003336 9$: return 003336 000207 rts pc exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 23 cross reference handlers 1 .globl crfdef, crfref, rolndx, r50unp 2 3 .nlist meb 4 .if df xcref 5 crfref: crfdef: return 6 .iff 7 8 .globl symbol 9 10 003340 005267 000002' crfdef: inc crfdfl ;cref definition 11 003344 005767 000740' crfref: tst crfpnt ;any cref output at this time? 12 003350 jeq 9$ ; no 003350 001002 bne 64$ 003352 000167 000272 jmp 9$ 003356 64$: 13 003356 005767 000000G tst pass 14 003362 jeq 9$ ; experiment 003362 001002 bne 65$ 003364 000167 000260 jmp 9$ 003370 65$: 15 003370 005767 000000' tst pagnum ;started yet? 16 003374 jeq 9$ ; no, forget it 003374 001002 bne 66$ 003376 000167 000246 jmp 9$ 003402 66$: 17 003402 032767 000000G 000000G bit #ed.crf,edmask ; cref might be turned off for a while 18 003410 jeq 9$ 003410 001002 bne 67$ 003412 000167 000232 jmp 9$ 003416 67$: 19 003416 call savreg 003416 004767 000000G jsr pc,savreg 20 003422 026767 000746' 000000' 1$: cmp crfpag,pagnum ;new page? 21 003430 103011 bhis 2$ ; no 22 003432 012701 000002 mov #cr.pag,r1 ;yes, send flag 23 003436 call putxrf 003436 004767 000312 jsr pc,putxrf 24 003442 005267 000746' inc crfpag 25 003446 005067 000750' clr crflin 26 003452 000763 br 1$ 27 28 003454 026767 000750' 000002' 2$: cmp crflin,linnum ;new line number? 29 003462 103007 bhis 3$ ; no 30 003464 012701 000003 mov #cr.lin,r1 31 003470 call putxrf 003470 004767 000260 jsr pc,putxrf 32 003474 005267 000750' inc crflin 33 003500 000765 br 2$ 34 35 003502 005767 000000G 3$: tst symbol ;ignore null symbols 36 003506 jeq 8$ 003506 001002 bne 68$ 003510 000167 000134 jmp 8$ 003514 68$: 37 003514 012701 000236' mov #crftyp,r1 38 003520 4$: exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 23-2 cross reference handlers 39 003520 126721 000000G cmpb rolndx,(r1)+ ;map roll number to cref type 40 003524 001375 bne 4$ 41 003526 162701 000000C sub #crftyp+1-cr.sym,r1 42 003532 call tstreg 003532 004767 000120 jsr pc,tstreg 43 003536 005767 000742' tst xxxreg 44 003542 001402 beq 44$ 45 003544 112701 000025 movb #25,r1 46 003550 44$: 47 003550 005067 000742' clr xxxreg 48 003554 call putxrf 003554 004767 000174 jsr pc,putxrf 49 003560 012702 000726' mov #crfsym,r2 ;point to where symbol gets unpacked to 50 003564 call r50unp ;unpack the symbol 003564 004767 000000G jsr pc,r50unp 51 003570 012702 000726' mov #crfsym,r2 ;point to beginning of unpacked symbol 52 003574 112201 5$: movb (r2)+,r1 ;get symbol char. 53 003576 120127 000040 cmpb r1,#space ;space is end 54 003602 001405 beq 55$ 55 003604 call putxrf ;non-space - output it 003604 004767 000144 jsr pc,putxrf 56 003610 020227 000000C cmp r2,#crfsym+6 ;max. of 6 chars. 57 003614 103767 blo 5$ 58 003616 016701 000002' 55$: mov crfdfl,r1 ;set "#" bit 59 003622 105767 000000G tstb opclas 60 003626 100002 bpl 6$ ;branch if no "*" 61 003630 052701 000002 bis #2,r1 62 003634 052701 000020 6$: bis #cr.sym,r1 ;set terminator 63 003640 call putxrf ;send it 003640 004767 000110 jsr pc,putxrf 64 003644 call ckvtc ;see if vt needed 003644 004767 000126 jsr pc,ckvtc 65 003650 8$: 66 003650 005067 000002' 9$: clr crfdfl 67 003654 return 003654 000207 rts pc 68 69 003656 tstreg: 70 003656 005067 000742' clr xxxreg 71 003662 call savreg 003662 004767 000000G jsr pc,savreg 72 003666 026727 000000G 000000G cmp rolndx,#symrol 73 003674 001026 bne 1$ 74 003676 012704 000000G mov #regrol,r4 75 003702 016403 000000C mov <^pl rolbas>(r4),r3 76 003706 016401 000000C mov <^pl roltop>(r4),r1 77 003712 116402 000000C movb <^pl rolsiz>(r4),r2 78 003716 4$: 79 003716 020301 cmp r3,r1 80 003720 002014 bge 1$ 81 003722 021367 000000G cmp (r3),symbol 82 003726 001007 bne 2$ 83 003730 026367 000002 000000C cmp 2(r3),symbol+2 84 003736 001003 bne 2$ 85 003740 005267 000742' inc xxxreg 86 003744 000402 br 1$ exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 23-3 cross reference handlers 87 003746 2$: 88 003746 060203 add r2,r3 89 003750 000762 br 4$ 90 003752 1$: 91 003752 return 003752 000207 rts pc 92 exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 24 cross reference handlers 1 003754 005367 000734' putxrf: dec vtcnt 2 003760 012700 000012 mov #crfchn,r0 ;reset channel # 3 003764 005701 tst r1 4 003766 jne putoc 003766 001402 beq 64$ 003770 000167 176524 jmp putoc 003774 64$: 5 003774 return 003774 000207 rts pc 6 ;jmp putoc 7 8 000144 vtini=100. 9 10 003776 005767 000734' ckvtc: tst vtcnt 11 004002 100401 bmi 1$ 12 004004 return 004004 000207 rts pc 13 004006 012767 000144 000734' 1$: mov #vtini,vtcnt 14 004014 012701 000013 mov #vt,r1 15 004020 012700 000012 mov #crfchn,r0 ;reset channel # 16 004024 005701 tst r1 17 004026 jne putoc 004026 001402 beq 64$ 004030 000167 176464 jmp putoc 004034 64$: 18 004034 return 004034 000207 rts pc 19 ;jmp putoc 20 004036 entsec impure .psect impure con 21 000726 crfsym: .blkw 3 22 000734 vtcnt: .blkw 23 000736 crfflg: .blkw 24 000740 crfpnt: .blkw 25 000742 xxxreg:: .blkw 26 27 28 29 .globl opclas, errrol 30 31 000401 cr.ver= 001+<001*400> ;type 1, version #1 32 000002 cr.pag= 002 ;new page 33 000003 cr.lin= 003 ;new line 34 000020 cr.sym= 020 ;symbol 35 36 000001 errrol= 1 ;dummy roll 37 38 000744 entsec impure .psect impure con 39 000744 crfver: .blkw ;version flag 40 000746 crfpag: .blkw 41 000750 crflin: .blkw 42 43 000752 entsec implin .psect implin con 44 000002 crfdfl: .blkw ; "#" and "*" flags exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 24-2 cross reference handlers 45 46 000004 entsec dpure .psect dpure con 47 000236 crftyp: 48 .irp x, 49 .iif ndf x'rol, .globl x'rol 50 .byte x'rol 51 .endm .iif ndf symrol, .globl symrol 000236 000G .byte symrol .iif ndf macrol, .globl macrol 000237 000G .byte macrol .iif ndf pstrol, .globl pstrol 000240 000G .byte pstrol .iif ndf secrol, .globl secrol 000241 000G .byte secrol .iif ndf errrol, .globl errrol 000242 001 .byte errrol .iif ndf regrol, .globl regrol 000243 000G .byte regrol 52 .even 53 54 000244 crfrun: .asclc /usr/ucb/bin/macxrf 55 .even 56 000270 xitsec 000270 entsec .text .psect .text con 57 58 .endc exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 25 cross reference handlers 1 .if ndf xtime 2 3 .globl dnc, movbyt 4 5 ;called with: 6 ; r0 - high-order word of 32-bit # seconds past 1jan70 gmt 7 ; r1 - low-order word 8 ; r2 - destination adr. of ascii (19 bytes) 9 10 061160 gmtsec = $timdf*3600. 11 12 13 004036 cvtim:: 14 004036 162701 061160 sub #gmtsec,r1 ;adjust for deviation 15 004042 005600 sbc r0 16 004044 071027 070200 div #8.*3600.,r0 ;form # 8-hour units 17 004050 010146 mov r1,-(sp) ;save remaining hours, minutes & seconds 18 004052 010001 mov r0,r1 ;now form days 19 004054 005000 clr r0 20 004056 071027 000003 div #3,r0 21 004062 072127 000003 ash #3,r1 ;and hours 22 004066 010146 mov r1,-(sp) ;saving hours 23 004070 112767 177777 000754' movb #-1.,nmonth ;begin month ticker 24 004076 012767 000105 000752' mov #69.,nyear ;epoch starts in 1970 25 004104 105267 000752' 1$: incb nyear 26 004110 004767 000220 jsr pc,yearl ;returns length of that year in r1 27 004114 160100 sub r1,r0 28 004116 100372 bpl 1$ 29 004120 060100 add r1,r0 30 004122 012767 000034 000340' mov #28.,$feb 31 004130 020127 000556 cmp r1,#366. ;is this leap year? 32 004134 001002 bne 21$ 33 004136 005267 000340' inc $feb ;yes 34 004142 012701 000336' 21$: mov #montab,r1 35 004146 105267 000754' 4$: incb nmonth 36 004152 162100 sub (r1)+,r0 37 004154 100374 bpl 4$ 38 004156 064100 add -(r1),r0 39 004160 005200 inc r0 ;form day of month 40 004162 010001 mov r0,r1 ;put # days into r1 for conversion 41 004164 call dnc 004164 004767 000000G jsr pc,dnc 42 004170 112722 000055 movb #'-,(r2)+ ;store dash 43 004174 116701 000754' movb nmonth,r1 44 004200 006301 asl r1 ;form offset into asciz table 45 004202 006301 asl r1 46 004204 062701 000270' add #mo.tab,r1 ;form adr. of string 47 004210 call movbyt 004210 004767 000000G jsr pc,movbyt exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 26 cross reference handlers 1 004214 112722 000055 movb #'-,(r2)+ 2 004220 016701 000752' mov nyear,r1 ;print out year modulo 100 3 004224 call dnc 004224 004767 000000G jsr pc,dnc 4 004230 112722 000040 movb #40,(r2)+ 5 004234 012600 mov (sp)+,r0 ;get partial hours 6 004236 012601 mov (sp)+,r1 ;get initial remainder 7 004240 010046 mov r0,-(sp) ;save 8 004242 005000 clr r0 ;form hours 9 004244 071027 007020 div #3600.,r0 10 004250 062600 add (sp)+,r0 11 004252 010146 mov r1,-(sp) ;save # seconds 12 004254 010001 mov r0,r1 ;set up for conversion 13 004256 020127 000012 cmp r1,#10. 14 004262 002002 bge 6$ 15 004264 112722 000060 movb #'0,(r2)+ 16 004270 6$: call dnc 004270 004767 000000G jsr pc,dnc 17 004274 112722 000072 movb #':,(r2)+ 18 004300 012601 mov (sp)+,r1 ;restore # seconds 19 004302 005000 clr r0 20 004304 071027 000074 div #60.,r0 ;form # minutes 21 004310 010001 mov r0,r1 22 004312 020127 000012 cmp r1,#10. 23 004316 002002 bge 7$ 24 004320 112722 000060 movb #'0,(r2)+ 25 004324 7$: call dnc 004324 004767 000000G jsr pc,dnc 26 004330 105022 clrb (r2)+ 27 004332 000207 rts pc 28 004334 012701 000555 yearl: mov #365.,r1 29 004340 032767 000003 000752' bit #3,nyear 30 004346 001001 bne 8$ 31 004350 005201 inc r1 32 004352 000207 8$: rts pc 33 34 35 36 004354 entsec dpure .psect dpure con 37 exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 27 cross reference handlers 1 000270 152 141 156 mo.tab: .asciz /jan/ 2 000274 146 145 142 .asciz /feb/ 3 000300 155 141 162 .asciz /mar/ 4 000304 141 160 162 .asciz /apr/ 5 000310 155 141 171 .asciz /may/ 6 000314 152 165 156 .asciz /jun/ 7 000320 152 165 154 .asciz /jul/ 8 000324 141 165 147 .asciz /aug/ 9 000330 163 145 160 .asciz /sep/ 10 000334 157 143 164 .asciz /oct/ 11 000340 156 157 166 .asciz /nov/ 12 000344 144 145 143 .asciz /dec/ 13 14 000350 entsec mixed .psect mixed con 15 16 000336 000037 montab: 31. 17 000340 000034 $feb: 28. 18 000342 000037 31. 19 000344 000036 30. 20 000346 000037 31. 21 000350 000036 30. 22 000352 000037 31. 23 000354 000037 31. 24 000356 000036 30. 25 000360 000037 31. 26 000362 000036 30. 27 000364 000037 31. 28 29 30 000366 entsec impure .psect impure con 31 .even 32 000752 nyear: .blkw 33 000754 nmonth: .blkb 34 .even 35 36 000756 xitsec 000756 entsec .text .psect .text con 37 38 .endc 39 40 000000" .end start exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 28 symbol table AATTRS= 000130 ABSEXP= ****** g ADDBUF 001142r 002 AP.EXT 001724r 002 ARGC 000000r 006 ARGV 000006r 006 ASDFLT= ****** g BINTBL 000266rg 006 BKSIZ = ****** g BPMB = 000020 BSSFLG= 000004 BUFTBL 000252rg 006 B.IDF = 000001 CATTRS= 000170 CHNTBL 000124rg 010 CHRPNT= ****** g CHRTBL 000110rg 010 CKVTC 003776r 002 CMOBUF 000146r 010 CMOCHN= 000000 g CMOLEN= 000120 CNTTBL 000236rg 006 CPOPJ = ****** g CR = 000015 CRAP 000122r 006 CREFAV 000074r 006 CREFIL 000014r 006 CRFCHN= 000012 g CRFDEF 003340rg 002 CRFDFL 000002r 012 CRFEXT 000230r 005 CRFFLG 000736r 010 CRFLAG 000106r 006 CRFLEN= 001000 CRFLIN 000750r 010 CRFPAG 000746r 010 CRFPND 000004r 010 CRFPNT 000740r 010 CRFREF 003344rg 002 CRFROL= ****** g CRFRUN 000244r 005 CRFSET 003260r 002 CRFSYM 000726r 010 CRFTYP 000236r 005 CRFVER 000744r 010 CR.LIN= 000003 g CR.PAG= 000002 g CR.SET 001172r 002 CR.SYM= 000020 g CR.VER= 000401 CSDFLT= ****** g CTTBL = ****** g CT.ALP= 000040 CT.COM= 000001 CT.EOL= 000000 CT.LC = 000100 CT.NUM= 000020 CT.PC = 000271 CT.PCX= 000010 CT.SMC= 000200 CT.SP = 000004 CT.TAB= 000002 CVTIM 004036rg 002 DATTIM 000124rg 006 DATTI1 000136r 006 DATTI2 000143r 006 DA.SET 000754r 002 DC.SET 000762r 002 DEBUG = 000000 g DECID 000203r 006 DEFFLG= 000010 DE.SET 000706r 002 DFGFLG= 000200 DFLGTB= 000000 g DNC = ****** g DP.SET 000770r 002 DX.SET 000774r 002 EDDFLT= ****** g EDMASK= ****** g ED.CRF= ****** g ED.GBL= ****** g ENDP1 = ****** g ENDP2 = ****** g ERN45 = ****** g ERN55 = ****** g ERRBTS= ****** g ERRCNT= ****** g ERRREF= ****** g ERRROL= 000001 g ERR.A = ****** g ERR.BY= ****** g ERR.XX= ****** g ESRCNA 000030r 010 EXTTBL 000222rg 006 FF = 000014 FILELN 000006rg 011 FIN = ****** g FINMSG 000115r 005 FINP1 001442r 002 FINSML 002660rg 002 FIXTIT= ****** g FT.ID = 000001 FT.UNX= 000001 GETIC 002100rg 002 GETSRC 002216rg 002 GLBFLG= 000100 GMTSEC= 061160 GSARG = ****** g HARVID 000166r 006 HA.SET 000656r 002 HDRTTL= ****** g IARGC 000002r 006 IARGV 000004rg 006 INICOR= ****** g INIP0 000260r 002 INIP0Z 001412r 002 INIP1 001336r 002 INIP2 001354r 002 INIP2F 001372r 002 INISML 002564rg 002 INSFLG= 000002 IOFTBL 000074rg 010 IOLTBL 000174rg 005 IO.EOF= 000010 g IO.EOI= 000040 g IO.ERR= 000020 g IO.INI= 000001 g IO.OPN= 000002 g IO.OUT= 100000 IO.TTY= 000004 g LBLFLG= 000002 LF = 000012 LINBUF= ****** g LINNUM 000002rg 011 LPARGS 000000r 005 LPFLAG 000012r 010 LPRRUN 000006r 005 LP.SET 001114r 002 LSTCHN= 000004 g LSTEXT 000214r 005 LSTFLG 000000rg 010 LSTLEN= 001000 LS.SET 001132r 002 LTTFLG 000002rg 010 LT.SET 000614r 002 MACERR 000030r 005 MACOVF 002064rg 002 MACROL= ****** g MAC.ER= ****** g MAXCHN= 000014 MDEPTH= ****** g MDFFLG= 000004 MK.SYM= 000001 MK.UP 000476r 002 MONTAB 000336r 006 MOVBYT= ****** g MO.TAB 000270r 005 MX.FLG 000014rg 010 MX.SET 000562r 002 MX.2 = ****** g MY.FLG 000020rg 010 MY.SET 000600r 002 M.IDF = 000007 NAM.AP 001712r 002 NAM.FP 001640r 002 NCMSG 000153r 005 NFMSG 000140r 005 NMONTH 000754r 010 exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 28-2 symbol table NO.FLG 000006r 010 NO.SET 000532r 002 NS.SET 000642r 002 NULEXT 000234r 005 NYEAR 000752r 010 OBJBUF 000516r 010 OBJCHN= 000006 g OBJEXT 000220r 005 OBJLEN= 000052 g OPCLAS= ****** g OPENC = ****** g OPENO 001454rg 002 OUT$YM= ****** g OVRFLG= 000020 PAGNUM 000000rg 011 PASS = ****** g PATTRS= 000050 PDPV45= 000000 g PDP10 000024rg 010 PROP1 = ****** g PROP2 = ****** g PROSW = ****** g PSAROL= ****** g PSDFLT= ****** g PSTROL= ****** g PUTKB = ****** g PUTKBL= ****** g PUTLP = ****** g PUTOC 002520rg 002 PUTXRF 003754r 002 REGFLG= 000001 REGROL= ****** g RELFLG= 000040 ROLNDX= ****** g RSX11D= 000000 g R50UNP= ****** g SAVREG= ****** g SCANW = ****** g SDEBUG= ****** g SECROL= ****** g SERROR 002036r 002 SETDN 001750r 002 SETED = ****** g SETLC = ****** g SETTEN 000606r 002 SHRFLG= 000001 SMLBUF 000602r 010 SMLCHN= 000010 g SMLEXT 000224r 005 SMLFIL 000034rg 010 SMLLEN= 000120 SMLNAM 000032rg 010 SPACE = 000040 SRCBUF 000300r 010 SRCCHN= 000002 g SRCEXT 000210r 005 SRCHI = ****** g SRCLEN= 000204 SRCNAM 000026r 010 SRC.AP 001720r 002 SRC.FP 001616r 002 START 000000rg 002 SWCERR 000102r 005 SX.FLG 000022rg 010 SX.SET 000540r 002 SYMBOL= ****** g SYMERR 000054r 005 SYMHP 000012rg 006 SYMLP 000010rg 006 SYMOVF 002054rg 002 SYMROL= ****** g TAB = 000011 TMPCNT= 000014 TSTREG 003656r 002 UC.SET= ****** g UM.SET= ****** g U.FLAG 000010rg 010 U.SET 000546r 002 VERITA 000000rg 003 VERNAM 000146rg 006 VT = 000013 VTCNT 000734r 010 VTINI = 000144 X = 000002 XCTPAS= ****** g XCTPRG= ****** g XMIT0 = ****** g XS.SET 000650r 002 XXXREG 000742rg 010 XX.FLG 000016rg 010 XX.SET 000554r 002 X40 = 000000 g YEARL 004334r 002 ZCLOSE 003212r 002 ZINIT 002674r 002 ZOPEN 002704r 002 ZREAD 002726rg 002 ZRLSE 003246r 002 ZWRITE 003022rg 002 $BRKAD 000334rg 006 $BRKSY 000332rg 006 $CRTMD 000322r 006 $CRTNM 000320r 006 $CRTSY 000316r 006 $FEB 000340r 006 $OPNMD 000330r 006 $OPNNM 000326r 006 $OPNSY 000324r 006 $RDBFP 000312r 006 $RDCNT 000314r 006 $RDSYS 000310r 006 $TIMDF= 000007 $WRBFP 000304rg 006 $WRCNT 000306rg 006 $WRSYS 000302rg 006 $$EXIT 000244r 002 ..Z = ****** g ..ZBUF= ****** g <. ABS.> 000000 000 130 < > 000000 001 050 <.TEXT > 004354 002 153 <.DATA > 000002 003 150 <.BSS > 000000 004 150 000350 005 150 000366 006 150 000000 007 150 000756 010 150 000010 011 150 000004 012 150 000120 013 150 000000 014 150 000176 015 150 000006 016 150 000000 017 150 exec - assembler exec UCB m11 v1.2 23-oct-82 16:02 page 28-3 symbol table 000000 020 150 000000 021 150 000000 022 150 000000 023 150 000000 024 150 000000 025 150 errors detected: 0