From 0b0ea2e637c986fe5888019c2f476a3171f95b7a Mon Sep 17 00:00:00 2001 From: Phil Budne Date: Thu, 25 Feb 2016 18:59:46 -0500 Subject: [PATCH 1/8] typed in files s5-s9 from 01-s1.pdf --- scans/s5.s | 272 +++++++++++++++++++++++++++++++++++++++ scans/s6.s | 341 +++++++++++++++++++++++++++++++++++++++++++++++++ scans/s7.s | 363 +++++++++++++++++++++++++++++++++++++++++++++++++++++ scans/s8.s | 210 +++++++++++++++++++++++++++++++ scans/s9.s | 117 +++++++++++++++++ 5 files changed, 1303 insertions(+) create mode 100644 scans/s5.s create mode 100644 scans/s6.s create mode 100644 scans/s7.s create mode 100644 scans/s8.s create mode 100644 scans/s9.s diff --git a/scans/s5.s b/scans/s5.s new file mode 100644 index 0000000..3baf07f --- /dev/null +++ b/scans/s5.s @@ -0,0 +1,272 @@ +"** 01-s1.pdf page 28 +" s5 + +dskswap: 0 + cli; ais 3 + dac 9f+t + jms dsktrans; -64; userdata; 9f+t; dskswap + lac 0f+t + tad o20 + dac 9f+t + jms dsktrans; -4096; 4096; 9f+t; dekswap + isc dskswap + jmp dskswap + +t = t+1 + +access: 0 + lac i.flags + idunno "** ??? + lac u.uid + spa + jmp access i + sad i.uid + ird 2 + lacq + and mode + sza + jmp access i + jms error + +fassign: 0 + -1 + dac 9f+t +1: + lac 9f+t + tad d10 + jms fget + jms halt " will not happen + lac f.flags + sma + jmp 1f + isz 9f+t + jmp 1b + jmp fassign i +1: + lac mode + xor o400000 + dac f.flags + lac ii + dac f.i + lac 9f+t + tad d10 + dac u.ac + dzm f.badd + jms fput + isz fassign + jmp fassign i +t = t+1 + +fget: 0 + jms betwen; d0; d9 + jmp fget i + cli; mul; 3 + iacq "** ?? +"** 01-s1.pdf page 29 + + tad ofilesp + dac 9f+t + dac .+2 + jms copy; ..; fnode; 3 + isz fget + jmp fget i + +fput: 0 + lac 9f+t + dac .+3 + jms copy; ; fnode; ..; 3 + jmp fput i +t = t+1 + +forall: 0 + lac u.base + sad u.limit + jmp 1f + lac u.base + rai + lac u.base i + sni + lrs 9 + and o777 + jmp forall i +1: + lac u.ount + dac u.ac + jmp sysexit + +sleep: 0 + law ulist-1 + dac 8 + lac o200000 + lmq "** ??? +1: + lac u.ulistp i + sad 8 i + jmp 1f + isz 8 + isz 8 + isz 8 + cla; lrs 1 + jmp 1b +1: + tad o100000 + dac u.ulistp i + lac sleep i + dac 9f+t + lac 9f+t i + isz sleep + jmp sleep i +t = t+1 + +"** 01-s1.pdf page 30 + +dslot: 0 + dzm di + skp +1: + isz di + lac di + jms dget + lac d.i + sza + jmp 1b + jmp dslot i + +icreat: 0 + dac 9f+t + jms dslot + lac o20 + dac ii +1: + isz ii + lac ii + jms iget + lac i.flags + spa + jmp 1b + lac ii + dac d.i + jms copy; name; d.name; 4 + isz s.uniq + lac s.uniq + dac d.uniq + dac i.uniq + lac 9f+t + xor o400000 + dac i.flags + lac u.uid + dac u.uid + -1 + dac i.niks + dzm i.size + jms copyz; i.dskps; 7 + jms iput + jms dput + jmp icreat i +t = t+1 + +dspput: 0 + and o177 + sna + jmp i dspput + sad o14 + jmp 1f + img "** ??? + sad o12 + jmp dspni + lac dsploc i + sad o400000 + jmp dspleft + omq + dac dsploc i + isz dsploc + jmp i dspput + +"** 01-s1.pdf page 31 + +1: + jms dspinit + jmp dspput i + +dspleft: + lac dsploc + sad edspbuf + jmp 1f + dac 8 + lac o400000 + dac 8 i + cla; liss 18+7 + dac dsploc i + jmp dspput i + +dspni: 0 + lac dspino + sad d33 + jmp 1f + isz dspino + jmp dspni i +1: + lac o2000 + wbi + isz dspput + jmp dspput i + +dspinit: 0 + lac dspbuf+3 + dac dsploc + lac o300000 + dac dspbuf+3 + dzm dspino + jmp dspinit i + +movdsp: 0 + iof + cdf + dac dspbufp + -1 + dac .dspb + ion + jmp movdsp i + +arg: 0 + lac u.rq+8 i + isz u.rq+8 + jmp arg i + +argname: 0 + jms arg + dac .+2 + jms copy; ..; name; 4 + lac u.edir + jms namei; name + jms error + jmp argname i + +seektell: 0 + jms arg + dac u.base + +"** 01-s1.pdf page 32 + jms arg + dac u.limit + jms finac + lac u.limit + sna + jmp seektell i + sad d1 + jmp .+3 + lac i.size + jmp seektell i + lac f.badd + jmp seektell i + +isown: 0 + jms argname + jms iget + lac u.uid + sma + sad i.uid + skp + jms error + jmp isown i + diff --git a/scans/s6.s b/scans/s6.s new file mode 100644 index 0000000..9f6559d --- /dev/null +++ b/scans/s6.s @@ -0,0 +1,341 @@ +"** 01-s1.pdf page 34 +" S6 + +itrunc: 0 + -7 + dac 9f+t + lac idskpp + dac 9f+t+1 +1: + lac 9f+t+1 i + sna + jmp 4f + lac i.flags + and o200000 + sna + jmp 3f + -64 + dac 9f+t+2 + lac dskbufp + dac 9f+t+3 +2: + lac 9f+t+1 i + jms dskrd + lac 9f+t+3 i + sza + jms free + isz 9f+t+3 + isz 9f+t+3 + jmp 2b +3: + lac 9f+t+1 i + jms free + dzm 9f+t+1 i +4: + isz 9f+t+1 + isz 9f+t + jmp 1b + lac i.flags + and o577777 + dac i.flacs + jmp itrunc i +t = t+4 + +namei: 0 + jms iget + -1 + tad namei i + dac 9f+t+1 + isz namei + lac i.flags + and o20 + sna + jmp namei i + -8 + tad i.size + cma + irss 3 + dac 9f+t + sna + jmp namei i + dzm di +1: + lac di + +"** 01-s1.pdf page 35 + + jms dget + lac d.i + sna + jmp 2f + lac 9f+t+1 + dac 8 + lac d.name + sad 8 i + skp + jmp 2f + lac d.name+1 + sad 8 i + skp + jmp 2f + lac d.name+2 + sad 8 i + skp + jmp 2f + lac d.i + isz namei + jmp namei 1 +2: + isz di + isz 9f+t + jmp 1b + jmp namei i +t = t+2 + +iget: 0 + dac ii + cli; idiv; 5 + dac 9f+t + tad d2 + dac 9f+i+1 + jms dskrd + lac 9f+t + cli; mul; 12 + lacq + tad dskbufp + dac 9f+t + dac .+2 + jms copy; ..; inode; 12 + jmp iget i + +iput: 0 + lac 9f+t+1 + jms dskrd + law inode-1 + dac 8 + -1 + tad 9f+t + dac 9 + -12 + dac 9f+t+2 +1: + lac 8 i + +"** 01-s1.pdf page 36 + + sad 9 i + skp + jmp 2f + isz 9f+t+2 + jmp 1b + jmp iput i +2: + -1 + tad 8 + dac 8 + -1 + tad 9 + dac 9 +1: + lac 8 i + dac 9 i + isz 9f+t+2 + jmp 1b + lac 9f+t+1 + jms dskwr + jmp iput i +t = t+3 + +dget: 0 + dac di + alss 3 + dac 9f+t + jms pget + fac 9f+t+1 + jms dskrd + lac 9f+t + and o77 + tad dskbufp + dac 9f+t+2 + dac .+2 + jms copy; ..; dnode; 8 + lac 9f+t + tad d8 + jms betwen; d0; i.size + skp + jmp dget i + jms dacisize + dzm d.i + jmp dget i + +dput: 0 + lac 9f+t+1 + jms dskrd + lac 9f+t+2 + dac .+3 + jms copy; dnode; ..; 8 + lac 9f+t+1 + jms dskwr + jmp dput i + +t = t+3 "** first t not there (hole from hole punch?) + +pget: 0 + irss 6 + dac 9f+t + lac i.flags + +"** 01-s1.pdf page 36 + + and o200000 + sza + jmp 2f + lac 9f+t + jms betwen; d0; d6 + jmp 1f + rad idskpp + dac 9f+t + lac 9f+t i + sna + jms alloc + dac 9f+t i + jmp pget i +1: + jms alloc + dac 9f+t+1 + jms copy; idskps; dskbuf; 7 + jms copyz; dskbuf+7; 6467 "** NUMBER UNCLEAR 64-7??? + lac 9f+t+1 + jms dskwr + lac 9f+t+1 + dac i.dskps + jms copyz; i.dskps+1; 6 + lac i.flags + xor o200000 + dac i.flags +2: + lac 9f+t + lrss 7 + jms betwen; d0; d6 + jms halt " file too big + tad idskpp + dac 9f+t+1 + lac 9f+t+1 i + sna + jms alloc + dac 9f+t+1 i + dac 9f+t+2 + jms dskrd + lac 9f+t + and o77 + tad dskbufp + dac 9f+t+1 + lac 9f+t+1 i + sza + jmp pget i + jms alloc + dac 9f+t + lac 9f+t+2 + jms dskrd + lac 9f+t + jmp pget i +t = t+3 + +iwrite: 0 + dac 9f+t + lac iwrite + +"** 01-s1.pdf page 38 + + dac oread + lac cslp + dac iwrite + jmp 1f + +iread: 0 + dac 9f+t + lac cnop + dac iwrite +1: + -1 + tad iread i + dac 10 + dac 11 + isz iread + lac iread i + dac 9f+t+1 + isz iread + lac o70000 + xct iwrite + lac i.size + cma + tad 9f+t + cma + jms betwen; d0; 9f+t+1 + lac 9f+t+1 + dac 9f+t+2 + cma + tad d1 + sna + jmp iread i + dac 9f+t+1 +1: + lac 9f+t + jms pget + das 9f+t+3 + jms dskrd + lac 9f+t + and o77 + tad dskbufp + tad dm1 + xct iwrite + jmp .+3 + dac 10 +cskp: + skp + dac 11 +2: + lac 11 i + dac 10 i + isz 9f+t + isz 9f+t+1 + jmp 3f + xct iwrite + jmp 4f + lac 9f+t + jms betwen; d0; i.size + dac i.size + lac 9f+t+3 + 4: +"** 01-s1.pdf page 38 + lac 9f+t+2 + jmp iread i + +3: + lac 9f+t + and o77 + sza + jmp 2b + xct iwrite + jmp 1b + lac 9f+t+3 + jms dskwr + jmp 1b +t = t+4 + +finac: 0 + lac u.ac + jms fget + jms error + lac f.flags + sma + jms error + lac f.i + jms ihet + jms finac i + +dacisize: 0 + dac i.size + jms iput + lac i.size + jmp dacisize i diff --git a/scans/s7.s b/scans/s7.s new file mode 100644 index 0000000..224f223 --- /dev/null +++ b/scans/s7.s @@ -0,0 +1,363 @@ +"** 01-s1.pdf page 41 +" s7 + +pibreak: + dac .ac "** CROSSED OUT.... + dpsf + jmp 1f + + dpcf + dprs + dac dpstat + sma rad + jmp 2f + dprc + dac dpchar + -1 + dac dpread + lac dpstat + rai +2: + sma + jmp piret + -1 + dac dpwrite + jmp piret "** END OF CROSSOUT + +1: clsf + jmp 1f + + lpb + dac pbsfigs + isz s.tim+1 + skp + isz s.tim + isz uquant + "** written: ttydelay -> ttyd1 + "** written: ttyrestart -> ttyres1 +cnop: + nop + -1 + dac 7 + clon + lac ttydelay + spa + isz ttydelay + skp + jms ttyrestart + lac .dspb "** START CROSSED OUT: written: lac tty + sna + jmp piret + isz .dsptm + skp + jmp dsprestart + sad d3 + jmp piret + isz .dspb + jmp piret + jmp dsprestart "** END CROSSED OUT + +1: dssf + jmp 1f + + -1 + dac .dskb + +"** 01-s1.pdf page 42 + + dsrs + dac .dske + dscs + jmp piret + +1: lds "** BEGIN CROSSED OUT + sma ra1 + jmp 1f + cdf + lac .dspb + sna + jmp 1f + cdf + lac .dspb + sna + jmp piret + tad dm3 + sna + jmp dsprestart + dac .dspb + jmp piret + +1: sna ra1 + jmp .+3 + racf + jmp piret + sma + jmp 1f + lda + dac .lpba + rlpd + jmp piret + +1: ksf + jmp 1f + + lac ttydelay + sma + isz ttydelay + krb + dac char + sad o375 + jmp intrp1 + lac d1 + jms putchar + dzm char + lac sfiles+0 + jms wakeup + dac sfiles+0 + lac char + sad o212 + skp + jmp piret + lac sfiles+1 + sma + xor o400000 + dac sfiles+1 + +"** 01-s1.pdf page 43 + + jms ptcr + jms ttyrestart + jmp piret + +1: tsf + jmp 1f + + tcf + jms ttyrestart + jmp piret + +ttyrestart: 0 + lac ttydelay + spa + jmp ttyrestart i + lac nttychar + dzm nttychar + sza + jmp 3f + isz ttydelay + lac d2 + jms getchar + jmp 2f +3: + tls + sad o12 + jms putcr + sad o15 + skp + jmp ttyrestart i + lac ttydelay + tad o20 + rcr + cma + dac ttydelay + jmp ttyrestart i +2: + lac sfiles+1 + jms wakeup + dac sfiles+1 + jmp ttyrestart i "** written arrow up 2 copies + +1: sck "** BEGIN CROSSED OUT + jmp 1f + + cck + lck + dac char + sad o33 + jmp intrp2 + lac d3 + jms putchar + nop + lac sfiles+2 + jms wakeup + dac sfiles+2 + jmp piret + +1: rsf + jmp 1f + + +"** 01-s1.pdf page 44 + + lac npptchar + sna + jmp .+5 + dac char + rrb + dac npptchar + jmp .+3 + rrb + dac char +3: + lac char + sna + jmp 2f + lac d4 + jms putchar + jmp 3f + lac char + sad d4 + jmp 4f +2: + lac npptchar + sna + jmp .+4 + dac char + dzm npptchar + jmp 3b + rsa + lac sfiles+3 + jms wakeup + xor o400000 + dac sfiles+3 + jmp piret +3: + lac char + dac npptchar +4: + lac sfiles+3 + jms wakeup + dac sfiles+3 + jmp piret + +1: psf + jmp 1f + + pcf + lac d5 + jms getchar + jmp .+3 + psa + jmp piret + lac sfiles+4 + jms wakeup + dac sfiles+4 + jmp piret + +1: spb "** BEGIN CROSSED OUT + jmp 1f + + cpb + lpb + dac pbsflgs+1 + +"** 01-s1.pdf page 44 + + and o2000 + sna + jmp piret + jms dspinit + lac sfiles+6 + jms wakeup + dac sfiles+6 + cla + wbi + jmp piret "** END CROSSED OUT + +1: crsf + jmp 1f + + crrb + dac crchar + -1 + dac crread + jmp piret + +1: crrb + +piret: + lac 0 + rai + lac .ac + ion + jmp 0 i + +wakeup: 0 + dac 9f+t + -mnproc + dac 9f+t+1 + lac tadu + dac 2f + lac dacu + dac 2f+1 +1: + lac 9f+t + rao + dac 9f+t + sma + jmp 2f+2 + lac o700000 +2: tad .. + dac .. + lac 2b + tad d4 + dac 2b + lac 2b+1 + tad d4 + dac 2b+1 + isz 9f+t+1 + jmp 1b + cla + jmp wakeup i + +t = t+2 + +putcr: 0 + lac o15 + dac nttychar + +"** 01-s1.pdf page 46 + + cla + jmp putcr i + +intrp1: + lac d5 + dac .int1 + lac d1 + jms getchar + skp + jmp .-3 + lac d2 + jms getchar + skp + jmp .-3 + lac sfiles+0 + jms wakeup + dac sfiles+0 + lac sfiles+1 + jms wakeup + dac sfiles+1 + jms chkint + jmp piret + jmp 1f +intrp2: + lac d7 + dac .int2 + lac d3 + jms getchar + skp + jmp .-3 + lac sfiles+2 + jms wakeup + dac sfiles+2 + lac sfiles+6 + jms wakeup + dac sfiles+6 + jms chkint + jmp piret +1: + lac 0 + dac 020 + lac .ac + jmp 021 diff --git a/scans/s8.s b/scans/s8.s new file mode 100644 index 0000000..a26d3e9 --- /dev/null +++ b/scans/s8.s @@ -0,0 +1,210 @@ +"** 01-s1.pdf page 48 + +" s8 + +" manifests +mnproc = 10 +dspbss = 270 +ndskbs = 4 + +" flags +.insys: 0 +.int1: 0 +.int2: 0 +.ac: 0 +.savblk: 0 +.dsptm: 0 +.dskb: 0 +.dske: 0 + +" pointers +tadu: tad ulist +dacu: dac ulist +maxquant: 30 +ofilesp: u.ofiles +idskpp: i.dskps +dskbufp: dskbuf +edspbuf: dspbuf+dspbzs +fblksp: s.fblks +dacq1: dac q1 +lacq1: lac q1 +q2p: q2 + +" strings +initf: + n;t;< > ;< > " + +" constants +d0: 0 +d1: 1 +d2: 2 +d3: 3 +d4: 4 +d5: 5 +d6: 6 +d7: o7: 07 +d8: 8 +d9: 9 +o12: d10: 10 +o14: 014 +o15: 015 +o17: 017 +o20: 020 +o33: 033 +o40: 040 +o55: 055 +o77: 077 +d65:o101: 0101 +d33: 33 +o132: 0132 +o134: 0134 +o137: 0137 +o155: 0155 +o177: 0177 +"** 01-s1.pdf page 49 +o232: 0212 +o375: 0375 +o777: 0777 +o2000: 02000 +o4000: 04000 +d7999: 7999 +o10000: 010000 +o17762: 017762 +o17777: 017777 +o20001: 020001 +o40000: 040000 +o40001: 040001 +o77777: 077777 +o100000: 0100000 +o140000: 0140000 +o200000: 0200000 +o200001: 0200001 +o300000: 0300000 +o400000: 0400000 +o500000: 0500000 +o577777: 0577777 +o600000: 0600000 +o640000: 0640000 +o700000: 0700000 +o777700: 0777700 +o777760: 0777760 +dm3: -3 +dm1: -1 + +9: .=.+t +c1: .=.+1 +q1: q2;q2+90 + .=.+14 +q2: + .+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0 + .+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0 + .+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0 + .+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0 + .+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0 +dsploc: .=.+1 +dspinc: .=.+1 +dspbuf: + 0065057;0147740;0160000 + .=.+30 +coldentry: + dzm 0100 " not re-entrant + caf + ion + clon + law 3072 + vcga + jsp dspinit + law dspbuf + jsp movdsp + cla + jsp dskio; 06000 + jms copy; dskbuf; sysdata; ulist-sysdata + lac d3 + jms namei; initf + jms halt +"** 01-s1.pdf page 50 + jms iget + cla + jms iread; 4096; 4096 + jmp 4096 + . = dspbuf+dspbsz+3 +dskbuf = 07700 +dskbs: .=.+65+65+65+65 +edskbsp: . +uquant: .=.+1 +dspbufp: .=.+1 +pbsflgs: .=.+2 +mode: .=.+1 +nttychar: .=.+1 +npptchar: .=.+1 +ttydelay: .=.+1 +name: .=.+4 +lnkaddr: .=.+1 +char: .=.+1 +uniqpid: 1 +lu: .=.+4 +sfiles: .=.+10 +dpdata: + dpstat: .=.+1 + dpread: .=.+1 + dpwrite: .=.+1 + dpchar: .=.+1 +dspdata: + .dspb: .=.+1 + .lpba: .=.+1 "** 4 written on listing +crdata: + crread: .=.+1 + crchar: .=.+1 +sysdata: + s.nxfblk: .=.+1 + s.nfblks: .=.+1 + s.fblks: .=.+10 + s.uniq: .=.+1 + s.tim: .=.+2 +ulist: + 0131000;1;0;0 + 0031040;0;0;0 + 0031100;0;0;0 + 0031140;0;0;0 + 0031200;0;0;0 + 0031240;0;0;0 + 0031300;0;0;0 + 0031340;0;0;0 + 0031400;0;0;0 + 0031440;0;0;0 +userdata: + u.ac: 0 + u.mq: 0 + u.rq: .=.+9 + u.uid: -1 + u.pid: 1 + u.cdir: 3 + u.ulistp: clist + u.swapret: 0 + u.base: 0 + u.count: 0 +"** 01-s1.pdf page 51 + u.limit: 0 + u.ofiles: .=.+30 + u.dspbuf: 0 + u.intflg: 1 + .=userdata+64 +ii: .=.+1 +inode: + i.flags: .=.+1 + i.dskps: .=.+7 + i.uid: .=.+1 + i.lks: .=.+1 + i.size: .=.+1 + i.uniq: .=.+1 + .= inode+12 +di: .=.+1 + d.i: .=.+1 + d.name: .=.+4 + d.uniq: .=.+1 + . = dnode+8 +fnode: + f.flags: .=.+1 + f.badd: .=.+1 + f.i: 0 + diff --git a/scans/s9.s b/scans/s9.s new file mode 100644 index 0000000..77004b2 --- /dev/null +++ b/scans/s9.s @@ -0,0 +1,117 @@ +"** 01-s1.pdf page 54 +" s9 -- cold boot + +. = coldentry+4 + +" zero i-list + + dzm ii + jms copyz; dskbuf; 64 +1: + iac ii + jms dskio; 0700 + isz ii + -710 + tad ii + jmp 1b + +" free rest of disk + +1: + lac ii + jms free + isz ii + -6400 + tad ii + sza + jmp 1b + +" read in tapes + + dzm ii +1: + dzm sum + jms getw " count + sza + jmp .+3 + hlt + jmp 1b " 0 count means pause + dac xx + isz ii + iac ii + jms iget + jms copyz; inode; 12 + jms getw " flags + dac i.dlags + -1 + dac i.uid + jms getw " number links + dac i.nlks + -2 + tad xx + dac i.size + lac ii + dac u.uniq + law 4096-1 + dac 8 + -1 + tad i.size + cma + sna + jmp 3f + dac xx + +"** 01-s1.pdf page 54 +2: + jms getw + dac 8 i + iss xx + jmp 2b +3: + lac sum + dac xx + jms getw " checksum + sad xx + skp + jms halt + lac i.size + dac .+4 + cla + jms iwrite; 4096; .. + jms iput + cla + jms dksio + + + +; 07000 "** writing on listing + jmp 1b + +getw: 0 + jms getc + alss 12 + imq + jms getc + omg + lmg + jms getc + omg + lmg + add sum + dac sum + lacq + jmp getw i + +getc: 0 + iof + rsa + rsf + jmp .-1 + rrb + sna + jmp getc+1 + and o77 + ion + jmp getc i +xx: 0 +sum: 0 From 2cca3d44739e88e39e81238a88d8dad616ed0cf4 Mon Sep 17 00:00:00 2001 From: Phil Budne Date: Thu, 25 Feb 2016 20:58:17 -0500 Subject: [PATCH 2/8] finish s1.s; tried to clean up s5-s8; let as7 continue after error --- scans/Makefile | 4 ++ scans/Readme | 9 +++- scans/s1.s | 111 ++++++++++++++++++++++++++++++++++++++----------- scans/s5.s | 46 ++++++++++---------- scans/s6.s | 32 +++++++------- scans/s7.s | 16 +++---- scans/s8.s | 10 ++--- scans/sx.s | 22 ++++++++++ tools/as7 | 45 ++++++++++++++------ 9 files changed, 206 insertions(+), 89 deletions(-) create mode 100644 scans/Makefile create mode 100644 scans/sx.s diff --git a/scans/Makefile b/scans/Makefile new file mode 100644 index 0000000..2d84114 --- /dev/null +++ b/scans/Makefile @@ -0,0 +1,4 @@ +AS7=../tools/as7 -d + +system: + $(AS7) s?.s > output diff --git a/scans/Readme b/scans/Readme index 2a67a55..df3dc80 100644 --- a/scans/Readme +++ b/scans/Readme @@ -6,5 +6,12 @@ For modified versions of these files, look in src/cmds and src/sys. Details of the files: -s1.s: pages 2-3 of 01-s1.pdf, incomplete and with some cruft at the end +s1.s: pages 2-5 of 01-s1.pdf, incomplete +s2.s: pages 7- +s3.s: pages 14- +s4.s: pages 21- +s5.s: pages 28- +s6.s: pages 34- +sx.s: temp symbol defns (from end of s1.s) + cat.c: pages 21-23 of 06-5-12.pdf diff --git a/scans/s1.s b/scans/s1.s index 355c501..d9e639e 100644 --- a/scans/s1.s +++ b/scans/s1.s @@ -102,31 +102,94 @@ swap: 0 dac u.ulistp i ion jmp dskswap; 07000 + lac u.dspbuf + sna + jmp 2f + law dspbuf + jms movdsp +2: + iof + lac o600000 + tad 9f+t i + dac 9f+t i + ion + jms dskswap; 06000 + lac u.swapret + dac swap + lac o20 + dac maxquant + lac u.dspbuf + sza +"** 01-s1.pdf page 4 + jms movdsp +3: + dzm uquant + iof + jmp swap i +t = t+1 -" For now, this stuff is defined so that -" the assembler doesn't complain about it +swp: + jmp . + .save; .getuid; .open; .read; .write; .creat; .seek; .tell + .close; .link; .unlink; .setuid; .rename; .exit; .time; .intrp + .chdir; .chmod; .chown; badcal; .sysloc; badcal; .capt; .rele + .status; badcal; .sems; .rmes; .fork +swn: + .-swp-1 i +.intrp: + lac u.ac + dac u.intflg + jmp okexit + +.sysloc: + lac u.ac + and o1777 + jms betwen; d1; locn + jms error + tad locsw + dac .+1 + lac .. + dac u.ac + jmp sysexit + +locsw: + lac . + iget; inode; userdata; sysdata; copy; copyz; betwen; dskrd + dskwr; dskbuf; dpdata; namei; pbsflgs; alloc; free; dspdata + crdata +locn: + .-locsw-1 -pibreak: 23 -u.ac: 100 -u.mq: 3 -u.rq: 3 -copy: 7 -.savblk: 0 -.insys: 0 -uquant: 0 -betwen: 0 -maxquant: 0 -laci: 0 -swp: 0 -badcal: 0 -coldentry: 0 -halt: 0 -dskio: 0 -sysdata: 0 -dskbuf: 0 -o7000: 07000 -o20001: 020001 chkint: 0 -.save: 0 -lookfor: 0 + lac .insys + sza + jmp chkint i + lac .int1 + sna + jmp 1f + sad u.ofiles+2 + jmp 2f +1: + lac .int2 + sna + jmp chkint i + sad chkint i + sad u.ofiles+2 + skp + jmp chkint i + dzm .int2 + jmp 1f +2: + dzm .int1 +1: +"** 01-s1.pdf page 5 + lac u.intflg + sza + jmp chkint i + -1 + dac .insys + ion + isz chkint + jmp chkint i + diff --git a/scans/s5.s b/scans/s5.s index 3baf07f..0d20930 100644 --- a/scans/s5.s +++ b/scans/s5.s @@ -2,15 +2,15 @@ " s5 dskswap: 0 - cli; ais 3 + cll; als 3 dac 9f+t jms dsktrans; -64; userdata; 9f+t; dskswap - lac 0f+t + lac 9f+t tad o20 dac 9f+t - jms dsktrans; -4096; 4096; 9f+t; dekswap - isc dskswap - jmp dskswap + jms dsktrans; -4096; 4096; 9f+t; dskswap + isz dskswap + jmp dskswap i t = t+1 @@ -21,7 +21,7 @@ access: 0 spa jmp access i sad i.uid - ird 2 + lrs 2 lacq and mode sza @@ -60,8 +60,8 @@ t = t+1 fget: 0 jms betwen; d0; d9 jmp fget i - cli; mul; 3 - iacq "** ?? + cll; mul; 3 + lacq "** 01-s1.pdf page 29 tad ofilesp @@ -83,14 +83,14 @@ forall: 0 sad u.limit jmp 1f lac u.base - rai + ral lac u.base i - sni + snl lrs 9 and o777 jmp forall i 1: - lac u.ount + lac u.count dac u.ac jmp sysexit @@ -157,7 +157,7 @@ icreat: 0 lac u.uid dac u.uid -1 - dac i.niks + dac i.nlks dzm i.size jms copyz; i.dskps; 7 jms iput @@ -171,9 +171,9 @@ dspput: 0 jmp i dspput sad o14 jmp 1f - img "** ??? + lmq sad o12 - jmp dspni + jmp dspnl lac dsploc i sad o400000 jmp dspleft @@ -195,19 +195,19 @@ dspleft: dac 8 lac o400000 dac 8 i - cla; liss 18+7 + cla; llss 18+7 dac dsploc i jmp dspput i -dspni: 0 - lac dspino +dspnl: 0 + lac dsplno sad d33 jmp 1f - isz dspino - jmp dspni i + isz dsplno + jmp dspnl i 1: lac o2000 - wbi + wbi "** ?? isz dspput jmp dspput i @@ -216,12 +216,12 @@ dspinit: 0 dac dsploc lac o300000 dac dspbuf+3 - dzm dspino + dzm dsplno jmp dspinit i movdsp: 0 iof - cdf + caf dac dspbufp -1 dac .dspb @@ -237,7 +237,7 @@ argname: 0 jms arg dac .+2 jms copy; ..; name; 4 - lac u.edir + lac u.cdir jms namei; name jms error jmp argname i diff --git a/scans/s6.s b/scans/s6.s index 9f6559d..e3855c8 100644 --- a/scans/s6.s +++ b/scans/s6.s @@ -37,7 +37,7 @@ itrunc: 0 jmp 1b lac i.flags and o577777 - dac i.flacs + dac i.flags jmp itrunc i t = t+4 @@ -54,7 +54,7 @@ namei: 0 -8 tad i.size cma - irss 3 + lrss 3 dac 9f+t sna jmp namei i @@ -94,13 +94,13 @@ t = t+2 iget: 0 dac ii - cli; idiv; 5 + cll; idiv; 5 dac 9f+t tad d2 dac 9f+i+1 jms dskrd lac 9f+t - cli; mul; 12 + cll; mul; 12 lacq tad dskbufp dac 9f+t @@ -151,14 +151,14 @@ dget: 0 alss 3 dac 9f+t jms pget - fac 9f+t+1 + dac 9f+t+1 jms dskrd lac 9f+t and o77 tad dskbufp dac 9f+t+2 dac .+2 - jms copy; ..; dnode; 8 + jms copy; ..; inode; 8 lac 9f+t tad d8 jms betwen; d0; i.size @@ -173,7 +173,7 @@ dput: 0 jms dskrd lac 9f+t+2 dac .+3 - jms copy; dnode; ..; 8 + jms copy; inode; ..; 8 lac 9f+t+1 jms dskwr jmp dput i @@ -181,11 +181,11 @@ dput: 0 t = t+3 "** first t not there (hole from hole punch?) pget: 0 - irss 6 + lrss 6 dac 9f+t lac i.flags -"** 01-s1.pdf page 36 +"** 01-s1.pdf page 37 and o200000 sza @@ -193,7 +193,7 @@ pget: 0 lac 9f+t jms betwen; d0; d6 jmp 1f - rad idskpp + tad idskpp dac 9f+t lac 9f+t i sna @@ -203,8 +203,8 @@ pget: 0 1: jms alloc dac 9f+t+1 - jms copy; idskps; dskbuf; 7 - jms copyz; dskbuf+7; 6467 "** NUMBER UNCLEAR 64-7??? + jms copy; i.dskps; dskbuf; 7 + jms copyz; dskbuf+7; 64-7 "** NUMBER UNCLEAR lac 9f+t+1 jms dskwr lac 9f+t+1 @@ -247,8 +247,8 @@ iwrite: 0 "** 01-s1.pdf page 38 - dac oread - lac cslp + dac iread + lac cskp dac iwrite jmp 1f @@ -282,7 +282,7 @@ iread: 0 1: lac 9f+t jms pget - das 9f+t+3 + dac 9f+t+3 jms dskrd lac 9f+t and o77 @@ -331,7 +331,7 @@ finac: 0 sma jms error lac f.i - jms ihet + jms iget jms finac i dacisize: 0 diff --git a/scans/s7.s b/scans/s7.s index 224f223..42d841e 100644 --- a/scans/s7.s +++ b/scans/s7.s @@ -3,20 +3,20 @@ pibreak: dac .ac "** CROSSED OUT.... - dpsf + lpsf jmp 1f - dpcf - dprs + lpcf + dprs "** ?? dac dpstat - sma rad + sma ral jmp 2f - dprc + dprc "** ?? dac dpchar -1 dac dpread lac dpstat - rai + ral 2: sma jmp piret @@ -28,7 +28,7 @@ pibreak: jmp 1f lpb - dac pbsfigs + dac pbsflgs isz s.tim+1 skp isz s.tim @@ -251,7 +251,7 @@ ttyrestart: 0 lpb dac pbsflgs+1 -"** 01-s1.pdf page 44 +"** 01-s1.pdf page 45 and o2000 sna diff --git a/scans/s8.s b/scans/s8.s index a26d3e9..9a243c2 100644 --- a/scans/s8.s +++ b/scans/s8.s @@ -102,7 +102,7 @@ q2: .+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0 .+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0 dsploc: .=.+1 -dspinc: .=.+1 +dsplno: .=.+1 dspbuf: 0065057;0147740;0160000 .=.+30 @@ -113,11 +113,11 @@ coldentry: clon law 3072 vcga - jsp dspinit + jms dspinit law dspbuf - jsp movdsp + jms movdsp cla - jsp dskio; 06000 + jms dskio; 06000 jms copy; dskbuf; sysdata; ulist-sysdata lac d3 jms namei; initf @@ -194,7 +194,7 @@ inode: i.flags: .=.+1 i.dskps: .=.+7 i.uid: .=.+1 - i.lks: .=.+1 + i.nlks: .=.+1 i.size: .=.+1 i.uniq: .=.+1 .= inode+12 diff --git a/scans/sx.s b/scans/sx.s new file mode 100644 index 0000000..958bc61 --- /dev/null +++ b/scans/sx.s @@ -0,0 +1,22 @@ + +" For now, this stuff is defined so that +" the assembler doesn't complain about it + +.save: 0 +alloc: 0 +betwen: 0 +chkint: 0 +copy: 7 +copyz: 0 +dskio: 0 +dskrd: 0 +dsktrans: 0 +dskwr: 0 +error: 0 +free: 0 +halt: 0 +laci: 0 +lookfor: 0 +o7000: 07000 +o70000: 070000 +swp: 0 diff --git a/tools/as7 b/tools/as7 index 1d235b0..8cc7226 100755 --- a/tools/as7 +++ b/tools/as7 @@ -21,6 +21,8 @@ my $origline; # The current input line of code my $stage = 1; # Pass one or pass two my $debug = 0; # Run in debug mode +my $errors = 0; # set to non-zero on error +my %Undef; # undefined symbols: only complain once ### Main program ### @@ -87,13 +89,25 @@ for my $i ( 0 .. $#Mem ) { } } -exit(0); +exit($errors); + +my $file; # global for error messages +my $lineno; + +sub err { + my $msg = shift; + $errors = 1; # exit status + print STDERR "$file:$lineno: $msg\n"; + return 0; +} # Open and parse the given file sub parse_file { - my $file = shift; + $file = shift; open( my $IN, "<", $file ) || die("Cannot read $file: $!\n"); + $lineno = 0; while ( my $line = <$IN> ) { + $lineno++; # Lose the end of line and any leading/trailing whitespace # Discard any comments and preceding comment whitespace @@ -111,12 +125,12 @@ sub parse_file { # Split into a section with possible labels and a # statement section with definitely no labels. The ? # makes the first pattern less greedy. - #print("cmd is >$cmd<\n"); + print("cmd is >$cmd<\n"); $cmd =~ m{(.*?)([^:]*$)}; my $labelsect = $1; my $statement = $2; - #print(">$labelsect< >$statement<\n"); + #print(">$labelsect< >$statement<\n"); # Split $labelsect into labels using the : character my @labellist = split( /:\s*/, $labelsect ); @@ -147,9 +161,9 @@ sub parse_label { } # It's a textual label, check if it's been defined before - die("Label $label defined multiple times\n") - if ( defined( $Label{$label} ) ); - + if ( defined( $Label{$label} ) ) { + err("Label $label defined multiple times\n") if ( $stage == 1 ); + } # Otherwise, save its value $Label{$label} = $Var{'.'}; #printf( "Set absolute label %s to 0%o\n", $label, $Label{$label} ); @@ -202,6 +216,7 @@ sub parse_statement { sub parse_expression { my $expression = shift; +print "exp: $expression\n"; # If it's a defined variable ( . , .. , etc.) # return the value return ( $Var{$expression} ) @@ -426,7 +441,11 @@ sub parse_expression { #print("Did a subtraction and got $diff\n"); return ($diff); } - die("I have no idea what $expression is in pass two\n") if ( $stage == 2 ); + if ( $stage == 2 ) { + err("undefined: $expression") unless (defined $Undef{$expression}); + $Undef{$expression} = 1; + } + return 0; } # Add two expression together @@ -463,18 +482,20 @@ sub find_relative_label { my $curlocation = $Var{'.'}; # Error check: no labels at all - die("No relative labels\n") if ( !defined( $Rlabel{$label} ) ); + if ( !defined( $Rlabel{$label} ) ) { + return err("relative label $label not defined\n"); + } # Get the list of possible locations for this label my $locarray = $Rlabel{$label}; # Error check: no locations - die("No relative labels\n") if ( @{$locarray} == 0 ); + return err("No relative labels") if ( @{$locarray} == 0 ); # Error check: forward but no next location, or backward but no previous - die("No forward label\n") + return err("No forward label $label") if ( ( $direction eq 'f' ) && ( $curlocation > $locarray->[-1] ) ); - die("No backward label\n") + return err("No backward label $label") if ( ( $direction eq 'b' ) && ( $curlocation < $locarray->[0] ) ); # Search forward for a location larger then the current one From 815d8bc220d900e093b34a5449bc3262dcecf107 Mon Sep 17 00:00:00 2001 From: Phil Budne Date: Thu, 25 Feb 2016 21:03:39 -0500 Subject: [PATCH 3/8] comment out debug prints --- tools/as7 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/as7 b/tools/as7 index 8cc7226..433cfd2 100755 --- a/tools/as7 +++ b/tools/as7 @@ -125,7 +125,7 @@ sub parse_file { # Split into a section with possible labels and a # statement section with definitely no labels. The ? # makes the first pattern less greedy. - print("cmd is >$cmd<\n"); + #print("cmd is >$cmd<\n"); $cmd =~ m{(.*?)([^:]*$)}; my $labelsect = $1; my $statement = $2; @@ -216,7 +216,6 @@ sub parse_statement { sub parse_expression { my $expression = shift; -print "exp: $expression\n"; # If it's a defined variable ( . , .. , etc.) # return the value return ( $Var{$expression} ) From 719b5a0968b4b116716c66cda612618d7e66f4b1 Mon Sep 17 00:00:00 2001 From: Phil Budne Date: Thu, 25 Feb 2016 21:42:23 -0500 Subject: [PATCH 4/8] add s4.s --- scans/s4.s | 343 +++++++++++++++++++++++++++++++++++++++++++++++++++++ scans/sx.s | 13 -- 2 files changed, 343 insertions(+), 13 deletions(-) create mode 100644 scans/s4.s diff --git a/scans/s4.s b/scans/s4.s new file mode 100644 index 0000000..6c2ceeb --- /dev/null +++ b/scans/s4.s @@ -0,0 +1,343 @@ +"** 01-s1.pdf page 21 +" s4 + +alloc: 0 + -1 + tad s.nfblks + spa + jmp 1f + dac s.nfblks + tad fblksp + jms laci + dac 9f+t + jms copyz; dskbuf; 64 + lac 9f+t + jms dskwr + dzm .savblk + lac 9f+t + jmp alloc i +1: + lac s.nxfblk + sna + jms halt " OUT OF DISK + dac s.fblks + jms dskrd + lac dskbuf + dac s.nxfblk + jms copy; dskbuf+1; s.fblks+1; 9 + lac d10 + dac s.nfblks + jmp alloc-1 + +free: 0 + lmq + lac x.nfblks + sad d10 + jmp 1f + tad fblksp + dac 9f+t + lacq + dac 9f+t i + dzm .savblk + isz s.nfblks + jmp free i +1: + lac x.nxfblk + dac dskbuf + jms copy; s.fblks+1; dskbuf+1; 9 + lacq + dac s.nxfblk + jms dskwr + dzm .savblk + lac d1 + dac s.nfblks + jmp free i +t = t+1 + +laci: 0 + and o1777 + tad o200000 + dac ._1 + lac .. + jmp laci i + +"** 01-s1.pdf page 22 + +betwen: 0 + lmq cmq + lac betwen i + dac 9f+t + lacq + tad 9f+t i + sma + jmp 1f + lac betwen i + dac 9f+t + isz betwen + lacq + tad 9f+t i + cma + spa sna +1: + isz betwen + lacq + cma + jmp betwen i + +copy: 0 + -1 + tad copy i + dac 8 + isz copy + -1 + tad copu i + dac 9 + isz copy + -1 + tad copy i + cma + dac 9f+t + isz copy +1: + lac 8 i + dac 9 i + isz 9f+t + jmp 1b + jmp copy i + +copyz: 0 + -1 + tad copyz i + dac 8 + isz copyz + -1 + tad copyz i + cma + dac 9f+t + isz copyz +1: + dzm 8 i + isz 9f+t + jmp 1b + jmp copyz i +t = t+1 + +putchar: 0 +"** 01-s1.pdf page 23 + dac 9f+t + cla + jms takeq + jmp putchar i + tad of0001 + dac .+4 + lac 9f+t + jms putc + lac char + lac q2+1 .. + isz putchar + jmp putchar i +t = t+1 + +getchar: 0 + jms takeq + jmp i getchar + tad o200001 + dac .+3 + cla + jms putc + lac q2+1 .. + isz getchar + jmp i getchar + +takeq: 0 + rcl + tad lacq1 + dac .+7 + tad o640000 + dac .+17 + dad s1 + dac .+14 + tad o500000 + dac .+5 + lac q1 .. + sna + jmp takeq i + dac lnkaddr + sad q1+1 .. + jmp .+5 + tad o200000 + dac .+1 + lac q2 .. + jmp .+3 + cla + dac q1+1 .. + dac q1 .. + isz takeq + lac lnkaddr + jmp i takeq + +putq: 0 + rcl + tad dacq1 + dac .+14 + tad d1 + dac .+13 + tad o140000 + dac .+1 + lac q1-1 .. +"** 01-s1.pdf page 24 + sna + jmp .+6 + tad o40000 + dac .+2 + lac lnkaddr + dac q2 .. + jmp .+3 + lac lnkaddr + dac q1 .. + dac q1+1 .. + jmp putq i + +srcdbs: 0 + lmq "** written (printed chars obscured) + -ndskbs + dac 9f+t + law dskbs "* -1 dac 8 written + dac 9f+t+1 +1: + lac 9f+t+2 "** crossed out + sad 9f+t+1 "** isz 8 written + jmp srcdbs i + law 65 "** crossed out + tad 9f+t+1 "** crossed out isz 8 written + isz 9f+t+1 + isx 9f+t + jmp 1b + isz srcdbs + jmp srcdbs i + +collapse: 0 + cla + jms srcdbs + jmp 1f + law dskbs + dac 9f+t+1 "** 9f+t+1 crossed out: 8 written in +1: + lac 9f+t+1 "** 9f+t+1 crossed out: 8 written in + dac 0f+1 + tad d2 "** crossed out: original obscured + dac 0f + cma + rad d1 + tad esdkbsp + and o17777 + sna + jmp 0f+3 + dac 0f+2 + jms copy; 0; ..; ..; .. + -65 + tad edskbsp + dac 9f+t + tad d1 + dac 0f + lac dskaddr + dac 9f+t i + jms copy; dskbuf; 0; ..; 64 + jmp collaps i + +dskrd: 0 + jms betwen; d2; d7999 + +"** 01-s1.pdf page 25 + jms halt + sad dskaddr + jmp dskrd i + dac dskaddr + jms srcdbs + jmp 1f + lac dskaddr + jms dskio; 06000 + jmp 1f +1: + dzm 9f+t+1 i + law 1 + tad 9f+t+1 + dac .+2 + jms copy; ..; dskbuf; 64 +2: + jms collaps + jmp dskrd i + +dskwr: 0 + jms betwen; d2; d7999 + jms halt + jms dskio; 07000 + lac dskaddr + jms srcdbs + dzm 9f+t+1 i + jms collapse + jmp dskwr i +t = t+3 + +dskio: 0 + dac dskaddr + cll; idiv; 80 + dac 9f+t + lacq + idiv; 10 + dac 9f+t+1 + lls 22 + xor 9f+t+1 + als 8 + dac 9f+t+1 + lac 9f+t + idiv; 10 + dac 9f+t + ils 22 + xor 9f+t + jms dsktrans; -64; dskbuf; 9f+t; dskio + isz dskio + jmp dskio i +t = t+1 + +dsktrans: 0 + -10 + dac 9f+t +1: + -1 + tad dsktrans + dac 12 +"** 01-s1.pdf page 26 + dscs + lac 12 i + dslw + lac 12 i + dslm + lac 12 i + jms laci + dsld + dzm .dskb + lac 12 i + jms laci + jms laci + dsls + lac .dskb + sna + jmp .-2 + lac .dske + sma + jmp 12 i + isz 9f+t + jmp 1b + jms halt " 10 disk errors +t = t+1 + +halt: 0 + isz 9f+t + jmp .-1 + iof + hlt + jms copy; law; 4096; 4096 + hlt; jmp .-1 +t = t+1 + diff --git a/scans/sx.s b/scans/sx.s index 958bc61..9b32582 100644 --- a/scans/sx.s +++ b/scans/sx.s @@ -3,20 +3,7 @@ " the assembler doesn't complain about it .save: 0 -alloc: 0 -betwen: 0 -chkint: 0 -copy: 7 -copyz: 0 -dskio: 0 -dskrd: 0 -dsktrans: 0 -dskwr: 0 error: 0 -free: 0 -halt: 0 -laci: 0 lookfor: 0 o7000: 07000 o70000: 070000 -swp: 0 From f89b487d08820cc0f3dbe73adc1a53824e88aa3a Mon Sep 17 00:00:00 2001 From: Phil Budne Date: Thu, 25 Feb 2016 22:13:06 -0500 Subject: [PATCH 5/8] add s3.s --- scans/s3.s | 355 +++++++++++++++++++++++++++++++++++++++++++++++++++++ scans/sx.s | 3 - 2 files changed, 355 insertions(+), 3 deletions(-) create mode 100644 scans/s3.s diff --git a/scans/s3.s b/scans/s3.s new file mode 100644 index 0000000..29b7d21 --- /dev/null +++ b/scans/s3.s @@ -0,0 +1,355 @@ +"** 01-s1.pdf page 14 +" s3 + +searchu: 0 + lac searchu i + dac 9f+t+1 + -mnproc + dac 9f+t + law ulist-1 + dac 8 +1: + lac 8 i + dac lu + lac 8 i + dac lu+1 + lac 8 i + dac lu+2 + lac 8 i + dac lu+3 + jms 9f+t+1 i + isz 9f+t + jmp 1b + isz searchu + jmp searchu i + +lookfor: 0 + jms searchu; 1f + isz lookfor + isz lookfor + jmp lookfor i +1: 0 + lac lu + rtl; rtl; and o7 + sad lookfor i + skp + jmp 1b i + -3 + tad 8 + and o17777 + isz lookfor + jmp lookfor i + +.fork: + jms lookfor; 0 " not-user + skp + jms error + dac 9f+t + isz uniqpid + lac uniqpid + dac u.ac + law sysexit + dac u.swapret + lac o200000 + tad u.listp i + dac u.listp i + jms dskswap; 07000 + lac 9f+t + dac u.ulistp + lac o100000 + xor u.ulistp i + dac u.ulistp i + lac u.pid +"** 01-s1.pdf page 15 + dac u.ac + lac uniqpid + dac u.pid + isz 9f+t + dac 9f+t i + isz u.rq+8 + dzm u.intflg + jmp sysexit +t= t+1 + +badcal: + calon + -1 + dac 7 +.save: + lac d1 + jms iget + cla + jms iwrite; 4096; 4096 + jms iwrite; userdata; 64 + jms iput + +.exit: + lac u.dspbuf + sna + jmp .+3 + law dspbuf + jms movdsp + jms awake + lac u.ulistp i + and o77777 + dac u.ulistp i + isz u.ulistp + dzm u.ulistp i + jms swap + +.rmes: + jms awake + lac o100000 + tad u.ulistp i + dac u.ulistp i + law 2 + tad u.ulistp + dac 9f+t + -1 + dac 9f+t i + jms swap + law 2 + tad u.ulistp + dac 9f+t + lac 9f+t i + cma + dac u.ac + dzm 9f+t i + isz 9f+t i + lac 9f+t i + dac u.mq + dzm 9f+t i + jmp sysexit +t = t+1 + +"** 01-s1.pdf page 16 +.smes: + lac u.ac + sna spa + jms error + jms searchu; 1f + law 2 + tad u.ulistp + dac 9f+t + dzm 9f+t i + jms error +1: 0 + lac lu+1 + sad u.ac + skp + jmp 1b i + lac 1u+2 + sad dm1 + jmp 1f + lac o100000 + tad u.ulistp i + dac u.ulistp i + law 2 + tad u.ulistp + dac 9f+t + lac u.ac + dac 9f+t i + jms swap + law 2 + tad u.ulistp + dac 9f+t + dzm 9f+t i + jmp .smes +1: + -3 + tad 8 + dac 0f+t + lac o700000 + tad 9f+t i + dac 9f+t i + isz 9f+t + isz 9f+t + lac u.pid + cma + dac 9f+t i + isz 9f+t + lac u.mq + dac 9f+t i + jmp okexit +t = t+1 + +awake: 0 + jms searchu; 1f + jmp awake i +1: 0 + lac u.pid + sad lu+2 + skp + jmp 1b i + -3 + tad 8 + dac 9f+t +"** 01-s1.pdf page 17 + lac o700000 + tad 9f+t i + dac 9f+t i + jmp 1b i +t = t+1 + +swr: +sww: + jmp .-4 i + .halt; rttyi; rkbdi; rppti; .halt + .halt; wttyo; wskpo; wppto + +.halt: jms halt + +rttyi: + jms chkint1 + lac d1 + jms getchar + jmp1f + and o177 + jms betwen o101; o132 + skp + tad o40 + alss 9 + jmp passone +1: + jms sleep; sfiles+0 + jms swap + jmp rttyi + +wttyo: + jms chkint1 + jms forall + sna + jmp failr + lmq + lac sfiles+1 + spa + jmp 1f + xor 0400000 + dac dfiles+1 + lacq + tls + sad o12 + jms putcr + jmp failr +1: + lacq + dac char + lac d2 "** written: d6 ttyout + jms putchar + skp + jmp failr + jms sleep; sfiles+1 + jms swap + jmp wttyo + +rkdbi: + jms chkint1 + lac d2 + jms getchar +"** 01-s1.pdf page 18 + jmp 3f + lmq + and o155 + sad o55 + jmp 1f + lacq + and o137 + sad o134 + lacq + xor o40 + lmq + jmp 2f +1: + lacq + xor o20 + lmq +2: + lacq + dac u.limit +1: + jms chkint1 + lac u.limit + jms dspput + jmp 1f + jms sleep; sfiles+6 + jms swap + jmp 1b +1: + lac u.limit + alss 9 + jmp passone +3: + jms sleep; sfiles+2 + jms swap + jmp rkdbi + +wdspo: + jms chkint1 + jms forall + jms dspput + jmp failr + jms sleep; sfiles+6 + jms swap + jmp wdspo + + +rppti: + lac d4 + jms getchar + jmp .+3 + alss 9 + jmp apssone + lac sfiles+3 + sma + rsa +1: + jms sleep; sfiles+3 + jms swap + jmp rppti +"** 01-s1.pdf page 19 + +wppto: + jms forall + sna + jmp failr + lmq + lac sfiles+4 + spa + jmp 1f + xor o400000 + dac sfiles+4 + lacq + psa + jmp failr +1: + lacq + dac char + lac d5 + jms putchar + skp + jmp failr + jms sleep; sfiles+4 + jms swap + jmp wppto + +passone: + sad o4000 + jmp okexit + dac u.base i + lac d1 + dac u.ac + jmp sysexit + +error: 0 + -1 + sac u.ac + jmp sysexit + +chkint1: 0 + dzm .insys + jmp chkint + skp + jmp .save + -1 + dac .insys + jmp chkint1 i diff --git a/scans/sx.s b/scans/sx.s index 9b32582..015accc 100644 --- a/scans/sx.s +++ b/scans/sx.s @@ -2,8 +2,5 @@ " For now, this stuff is defined so that " the assembler doesn't complain about it -.save: 0 -error: 0 -lookfor: 0 o7000: 07000 o70000: 070000 From 73237d68fa029824b44fdbe68b88fdfca60cf06f Mon Sep 17 00:00:00 2001 From: Phil Budne Date: Thu, 25 Feb 2016 22:42:59 -0500 Subject: [PATCH 6/8] add s2.s --- scans/s2.s | 334 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 334 insertions(+) create mode 100644 scans/s2.s diff --git a/scans/s2.s b/scans/s2.s new file mode 100644 index 0000000..89fe2c4 --- /dev/null +++ b/scans/s2.s @@ -0,0 +1,334 @@ +"** 01-s1.pdf page 7 +" s2 + +.status: + jms arg + dac .+5 + jms arg + dac .+6 + lac u.cdir + jms namei; .. + jms error + jms namei; .. + jms error + jms iget + lac u.ac + and o17777 + jms betwen; o10000; o17762 + jms error + dac .+3 + jms copy; inode; ..; 12 + dac 9 i + jmp okexit + +.capt: + lac u.ac + dac u.dspbuf + jms movdsp + jmp sysexit + +.rele: + dzm u.dspbuf + law dspbuf + jsp movdsp + jmp sysexit + +.chmod: + jms isown + lac u.ac + and o17 + lmq + lac i.flags + and o777760 + omq + dac i.flags + jms iput + jmp okexit + +.chown: + jms isown + lac u.ac + dac i.uid + jms iput + jmp okexit + +.getuid: + lac u.uid + dac u.ac + jmp sysexit + +.seek: + jms seektell + tad u.base +"** 01-s1.pdf page 8 + spa + jms error + lmq + lac f.flags + and d1 + sna + jms 1f + lacq + jms betwen; d0; i.size + jms dacisize + jmp 2f +1: + lacq + jms betwen; d0; i.size + lac i.size +2: + dac f.badd + dac u.ac + jms fput + jmp sysexit + +.tell: + jms seektell + cma + tad d1 + tad u.base + dac u.ac + jmp sysexit + +.link: + jms arg + dac 0f + jms arg + dac 1f + jms arg + dac 2f + lac d4 + jms namei; 0; 0 + jms error + jms namei; 1; 0 + jms error + dac u.base + jms copy; 2; 0; name; 4 + lac u.cdir + jms namei; name + skp + jms error + lac d1 + dac mode + jms access + jms dslot + lac u.base + jms iget + lac ii + dac d.i "** ?? + jms copy; name; d.name; 4 + lac i.uniq + dac d.uniq + -1 + tad i.nlks + dac i.nlks +"** 01-s1.pdf page 9 + jms imput + jms dput + jms okexit + +.unlink: + jms argname + dac u.base + lac d1 + dac mode + jms access + dac d.i + jms dput + lac u.base + jms u.base + jms iget + isz i.nlks + jmp 1f + jms itrunc + dzm i.flags +1: + jms iput + jmp sysexit + +.setuid: + lac u.uid + sma + jms error + lac u.ac + dac u.uid + jmp sysexit + +.rename: + jms arg + dac 0f + jms arg + dac 1f + lac u.cdir + jms namei; 0;0 + jms error + lac d1 + dac mode + jms access + jms copy; 1; 0; d.name; 4 + jmp okexit + +.time: + lac s.tim + dac u.ac + lac s.tim+1 + dac u.mq + jmp sysexit + +.chdir: + jms argname + jms iget + lac i.flags + and o20 + sna + jms error + lac ii + dac u.cdir +"** 01-s1.pdf page 10 + jmp okexit + +.open: + jms arg + dac 0f + jms arg + sza + lac d1 + sna + lac d2 + dac mode + lac u.cdir + jms namei; 0; 0 + jms error + jms iget + jms access + lac i.flags + and o20 + sna + jmp open1 + lac mode + and d1 + sna + jmp open1 + lac u.uid + sma + jms error + jmp open1 + +.creat: + lac d1 + dac mode + jms arg + dac .+2 + jms copy; ..; name; 4 + lac u.cdir + jms namei; name + jmp 1f + jms iget + jms access + lac i.flags + and o20 + sna + jmp .+4 + lac u.uid + sma + jms error + jms itrunc + cla + jms dacisize + jmp open1 +1: + jms access + lac u.ac + and o17 + jms icreat +open1: + jms fassign + jms error + jmp sysexit + +"** 01-s1.pdf page 11 +.close: + jms finac + dzm f.flags + jms fput + jmp sysexit + +.read: + jms arg + and o17777 + dac u.base + jms arg + dac u.count + lac u.base + jms betwen; o10000; o17777 + jms error + tad u.count + jms betwen; u.base; o17777 + jms error + dac u.limit +1: + jms finac + lac f.flags + and d1 + sza + jms error + lac i.flags + and o40 + sna + jmp 1f + iof + lac ii + tad swr + dac .+1 + jmp .. i +1: + lac u.base + dac 1f+1 + lac u.count + dac 1f+2 + lac f.badd +1: + jms iread; ..; .. + jmp exitrq + +.write: + jms arg + and o17777 + dac u.base + jms arg + dac u.count + tad u.base + jms betwen; u.base; o17777 + jms error + dac u.limit + jms finac + lac f.flags + and d1 + sna + jms error + lac i.flags + and o40 +"** 01-s1.pdf page 12 + sna + jmp 1f + iof + lac ii + tad sww + dac .+1 + jmp .. i +1: + lac u.base + dac 1f+1 + lac u.count + dac 1f+2 + lac f.badd +1: + jms iwrite; ..; .. + +exitrw: + dac u.ac + tad f.badd + dac f.badd + jms iput + jms fput + jmp sysexit From 92cbc9ed9115b6b20b84a5cfdcf1f0e95cdd6d8c Mon Sep 17 00:00:00 2001 From: Phil Budne Date: Thu, 25 Feb 2016 22:49:34 -0500 Subject: [PATCH 7/8] fixes --- scans/s8.s | 3 ++- scans/sx.s | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scans/s8.s b/scans/s8.s index 9a243c2..e70e643 100644 --- a/scans/s8.s +++ b/scans/s8.s @@ -62,7 +62,7 @@ o137: 0137 o155: 0155 o177: 0177 "** 01-s1.pdf page 49 -o232: 0212 +o212: 0212 o375: 0375 o777: 0777 o2000: 02000 @@ -74,6 +74,7 @@ o17777: 017777 o20001: 020001 o40000: 040000 o40001: 040001 +o70000: 070000 o77777: 077777 o100000: 0100000 o140000: 0140000 diff --git a/scans/sx.s b/scans/sx.s index 015accc..8c16094 100644 --- a/scans/sx.s +++ b/scans/sx.s @@ -3,4 +3,3 @@ " the assembler doesn't complain about it o7000: 07000 -o70000: 070000 From cdb09de1c19ee24dad6f89a7aed37dbbce20b934 Mon Sep 17 00:00:00 2001 From: Phil Budne Date: Fri, 26 Feb 2016 00:51:01 -0500 Subject: [PATCH 8/8] fixes --- scans/s1.s | 4 ++-- scans/s2.s | 6 +++--- scans/s3.s | 14 +++++++------- scans/s4.s | 22 +++++++++++----------- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/scans/s1.s b/scans/s1.s index d9e639e..3a8fead 100644 --- a/scans/s1.s +++ b/scans/s1.s @@ -133,7 +133,7 @@ swp: .save; .getuid; .open; .read; .write; .creat; .seek; .tell .close; .link; .unlink; .setuid; .rename; .exit; .time; .intrp .chdir; .chmod; .chown; badcal; .sysloc; badcal; .capt; .rele - .status; badcal; .sems; .rmes; .fork + .status; badcal; .smes; .rmes; .fork swn: .-swp-1 i @@ -144,7 +144,7 @@ swn: .sysloc: lac u.ac - and o1777 + and o17777 jms betwen; d1; locn jms error tad locsw diff --git a/scans/s2.s b/scans/s2.s index 89fe2c4..5c51afc 100644 --- a/scans/s2.s +++ b/scans/s2.s @@ -30,7 +30,7 @@ .rele: dzm u.dspbuf law dspbuf - jsp movdsp + jms movdsp jmp sysexit .chmod: @@ -123,7 +123,7 @@ tad i.nlks dac i.nlks "** 01-s1.pdf page 9 - jms imput + jms iput jms dput jms okexit @@ -289,7 +289,7 @@ open1: lac f.badd 1: jms iread; ..; .. - jmp exitrq + jmp exitrw .write: jms arg diff --git a/scans/s3.s b/scans/s3.s index 29b7d21..6ca7b28 100644 --- a/scans/s3.s +++ b/scans/s3.s @@ -72,7 +72,7 @@ lookfor: 0 t= t+1 badcal: - calon + clon -1 dac 7 .save: @@ -195,7 +195,7 @@ swr: sww: jmp .-4 i .halt; rttyi; rkbdi; rppti; .halt - .halt; wttyo; wskpo; wppto + .halt; wttyo; wdspo; wppto .halt: jms halt @@ -203,7 +203,7 @@ rttyi: jms chkint1 lac d1 jms getchar - jmp1f + jmp 1f and o177 jms betwen o101; o132 skp @@ -225,7 +225,7 @@ wttyo: spa jmp 1f xor 0400000 - dac dfiles+1 + dac sfiles+1 lacq tls sad o12 @@ -242,7 +242,7 @@ wttyo: jms swap jmp wttyo -rkdbi: +rkbdi: jms chkint1 lac d2 jms getchar @@ -298,7 +298,7 @@ rppti: jms getchar jmp .+3 alss 9 - jmp apssone + jmp passone lac sfiles+3 sma rsa @@ -342,7 +342,7 @@ passone: error: 0 -1 - sac u.ac + dac u.ac jmp sysexit chkint1: 0 diff --git a/scans/s4.s b/scans/s4.s index 6c2ceeb..c4cdfbf 100644 --- a/scans/s4.s +++ b/scans/s4.s @@ -31,7 +31,7 @@ alloc: 0 free: 0 lmq - lac x.nfblks + lac s.nfblks sad d10 jmp 1f tad fblksp @@ -42,7 +42,7 @@ free: 0 isz s.nfblks jmp free i 1: - lac x.nxfblk + lac s.nxfblk dac dskbuf jms copy; s.fblks+1; dskbuf+1; 9 lacq @@ -57,7 +57,7 @@ t = t+1 laci: 0 and o1777 tad o200000 - dac ._1 + dac .+1 lac .. jmp laci i @@ -90,7 +90,7 @@ copy: 0 dac 8 isz copy -1 - tad copu i + tad copy i dac 9 isz copy -1 @@ -128,10 +128,10 @@ putchar: 0 cla jms takeq jmp putchar i - tad of0001 + tad o40001 dac .+4 lac 9f+t - jms putc + jms putq lac char lac q2+1 .. isz putchar @@ -211,7 +211,7 @@ srcdbs: 0 law 65 "** crossed out tad 9f+t+1 "** crossed out isz 8 written isz 9f+t+1 - isx 9f+t + isz 9f+t jmp 1b isz srcdbs jmp srcdbs i @@ -228,8 +228,8 @@ collapse: 0 tad d2 "** crossed out: original obscured dac 0f cma - rad d1 - tad esdkbsp + tad d1 + tad edskbsp and o17777 sna jmp 0f+3 @@ -243,7 +243,7 @@ collapse: 0 lac dskaddr dac 9f+t i jms copy; dskbuf; 0; ..; 64 - jmp collaps i + jmp collapse i dskrd: 0 jms betwen; d2; d7999 @@ -293,7 +293,7 @@ dskio: 0 lac 9f+t idiv; 10 dac 9f+t - ils 22 + lls 22 xor 9f+t jms dsktrans; -64; dskbuf; 9f+t; dskio isz dskio