Research PDP7 development Research-PDP7-Snapshot-Development origin/HEAD origin/Research-PDP7-Snapshot-Development
authorKen Thompson <ken@research.uucp>
Tue, 30 Jun 1970 10:00:00 +0000 (05:00 -0500)
committerKen Thompson <ken@research.uucp>
Tue, 30 Jun 1970 10:00:00 +0000 (05:00 -0500)
Work on file cas.s
Work on file bl.s
Work on file as.s
Work on file s3.s
Work on file dsksav.s
Work on file s7.s
Work on file trysys.s
Work on file chmod.s
Work on file s2.s
Work on file apr.s
Work on file ald.s
Work on file cp.s
Work on file dmabs.s
Work on file bc.s
Work on file check.s
Work on file ed1.s
Work on file sop.s
Work on file s1.s
Work on file chrm.s
Work on file sysmap
Work on file dsw.s
Work on file bi.s
Work on file init.s
Work on file chown.s
Work on file s4.s
Work on file dskres.s
Work on file cat.s
Work on file s9.s
Work on file adm.s
Work on file s5.s
Work on file ds.s
Work on file lcase.b
Work on file ed2.s
Work on file dskio.s
Work on file s6.s
Work on file maksys.s
Work on file db.s
Work on file ind.b
Work on file scope.v
Work on file s8.s

Co-Authored-By: Dennis Ritchie <dmr@research.uucp>
Synthesized-from: pdp7-unix/scans

40 files changed:
adm.s [new file with mode: 0644]
ald.s [new file with mode: 0644]
apr.s [new file with mode: 0644]
as.s [new file with mode: 0644]
bc.s [new file with mode: 0644]
bi.s [new file with mode: 0644]
bl.s [new file with mode: 0644]
cas.s [new file with mode: 0644]
cat.s [new file with mode: 0644]
check.s [new file with mode: 0644]
chmod.s [new file with mode: 0644]
chown.s [new file with mode: 0644]
chrm.s [new file with mode: 0644]
cp.s [new file with mode: 0644]
db.s [new file with mode: 0644]
dmabs.s [new file with mode: 0644]
ds.s [new file with mode: 0644]
dskio.s [new file with mode: 0644]
dskres.s [new file with mode: 0644]
dsksav.s [new file with mode: 0644]
dsw.s [new file with mode: 0644]
ed1.s [new file with mode: 0644]
ed2.s [new file with mode: 0644]
ind.b [new file with mode: 0644]
init.s [new file with mode: 0644]
lcase.b [new file with mode: 0644]
maksys.s [new file with mode: 0644]
s1.s [new file with mode: 0644]
s2.s [new file with mode: 0644]
s3.s [new file with mode: 0644]
s4.s [new file with mode: 0644]
s5.s [new file with mode: 0644]
s6.s [new file with mode: 0644]
s7.s [new file with mode: 0644]
s8.s [new file with mode: 0644]
s9.s [new file with mode: 0644]
scope.v [new file with mode: 0644]
sop.s [new file with mode: 0644]
sysmap [new file with mode: 0644]
trysys.s [new file with mode: 0644]

diff --git a/adm.s b/adm.s
new file mode 100644 (file)
index 0000000..c78e67b
--- /dev/null
+++ b/adm.s
@@ -0,0 +1,586 @@
+" adm
+
+   lac 017777 i
+   sad d4
+   jmp nofiles
+   lac 017777
+   tad d1
+   dac name
+   jms connect
+   sys time
+   llss 9
+   ecla lls 3
+   tad o60
+   alss 9
+   dac snumb
+   ecla llss 3
+   tad o60
+   alss 9
+   dac snumb+1
+   ecla llss 3
+   tad o60
+   alss 9
+   dac snumb+2
+   lac d1
+   sys write; snumb; 3
+   lac d1
+   sys write; o12; 1
+   jms gcard; <$;<*;<$;<7;<c;0
+   jms gcard; <$;<*;<$;<r;<c;<d;0
+   jms gcard; <$;<%;6;<s;<n;<u;<m;<b;<%;3;<7;<c
+snumb:
+      <x;<x;<x;<,;<3;<1;0
+   jms gcard; <$;<%;6;<i;<d;<e;<n;<t;<%;3;<m;<0;<1;<3;<0;<,
+      <m;<3;<2;<2;<,;<k;<e;<n;0
+   jms gcard; <$;<%;6;<s;<e;<l;<e;<c;<t;<%;2;<k;<e;<n
+      </;<d;<m;<p;<o;<f;<f;0
+   jms gcard; <$;<%;6;<l;<i;<m;<i;<t;<s;<%;2;<3;<,;<,;<,
+      <9;<0;<0;<0;<0
+   jms gcard; <$;<%;6;<d;<a;<t;<a;<%;4;<i;<*;<,
+      <n;<c;<k;<s;<u;<m;<,
+        <c;<o;<p;<y;0
+   jmp floop1
+
+floop:
+   lac fi
+   sys close
+floop1:
+   lac 017777 i
+   sad d4
+   jmp done
+   tad dm4
+   dac 017777 i
+   lac name
+   tad d4
+   dac name
+
+   sys open; name: ..; 0
+   spa
+   jmp ferror
+   dac fi
+
+   -1
+   tad name
+   dac 8
+   r4
+   dac c1
+1:
+   lac 8 i
+   jms putw
+   isz c1
+   jmp 1b
+   jms gcard; 0
+   jms flush
+
+   lac o200500 " first card, 7/9
+   dac buf
+   dzm buf+1 " seq
+
+cloop:
+   dzm buf+2 " word count
+   dzm buf+3 " checksum
+   law buf+3
+   dac 10
+   -44
+   dac c1
+
+wloop:
+   jms getword
+      jmp eof
+   dac 10 i
+   add buf+3
+   dac buf+3 " check sum
+   isz buf+2 " word count
+   isz c1
+   jmp wloop
+
+   lac buf+3
+   add buf
+   add buf+1
+   add buf+2
+   dac buf+3 " ffinal check sum
+   jms putcard
+   lac buf
+   and o577777 " not first card
+   dac buf
+   isz buf+1 " sequence
+   jmp cloop
+
+eof:
+   dzm 10 i
+   isz c1
+   jmp eof
+
+   lac buf
+   xor o400000
+   dac buf " last card
+   lac buf+3
+   add buf
+   add buf+1
+   add buf+2
+   dac buf+3 " final check sum
+   jms putcard
+   jmp floop
+
+getword: 0
+   lac ipt
+   sad eipt
+   jmp 1f
+   lac ipt i
+   isz ipt
+   isz getword
+   jmp getword i
+1:
+   lac fi
+   sys read; ibuf; 64
+   sna
+   jmp getword i
+   tad iipt
+   dac eipt
+   lac iipt
+   dac ipt
+   jmp getword+1
+ipt: 0
+eipt: 0
+iipt: ibuf
+
+putcard: 0
+   -48
+   dac c1
+   law buf-1
+   dac 10
+1:
+   lac 10 i
+   lmq
+   -3
+   dac c2
+2:
+   ecla llss 6
+   tad lactab
+   dac .+1
+   lac ..
+   dac opt i
+   isz opt
+   isz c2
+   jmp 2b
+   isz c1
+   jmp 1b
+
+   -16
+   dac c1
+   cla
+1:
+   dac opt i
+   isz opt
+   isz c1
+   jmp 1b
+   law 0144
+   jms message; tbuf
+   law tbuf
+   dac opt
+   jmp putcard i
+
+   jmp floop
+
+ferror:
+   lac name
+   dac 1f
+   lac d1
+   sys write; 1:..; 4
+   lac d1
+   sys write; 1f; 1
+   jmp floop1
+1: 077012
+
+hangup:
+   lac d1
+   sys write; m1; m1s
+   jmp stop
+
+abort:
+   lac d1
+   sys write; m2; m2s
+   jmp stop
+
+nofiles:
+   lac d1
+   sys write; m3; m3s
+   sys exit
+
+discon:
+   lac d1
+   sys write; m4; m4s
+   jmp stop
+
+m1:
+   <ha>;<ng>;<up>;012
+m2s = .-m1
+m2:
+   <ab>;<or>;<te>;<d 012
+m2s = .-m2
+m3:
+   <us>;<ag>;<e;<:;040;<ad>;<m 040; <fi>;<le>;<s 012
+   <di>;<al>;040;<x;<5;<3;<8;<0 040; <on>;040;<th>;<e 040
+   <da>;<ta>;<ph>;<on>;<e 012
+m3s = .-m3
+m4:
+   <di>;<sc>;<on>;<ne>;<ct>;<ed>;012
+m4s = .-m4
+
+stop:
+   dpof
+   las
+   and o400000
+   sna
+   sys save
+   sys exit
+
+carrier: 0100000
+ilock: 040000
+totime: 300
+disflg: 0
+
+flush: 0
+   lac noc
+   sna
+   jmp flush i
+   law 0104
+   jms message; tbuf
+   law tbuf
+   dac opt
+   dzm noc
+   jmp flush i
+
+gcard: 0
+   lac gcard i
+   isz gcard
+   sna
+   jmp 3f
+   lrss 9
+   sad o45
+   jmp 1f
+   jms putc
+   jmp gcard+1
+1:
+   -1
+   tad gcard i
+   cma
+   dac 2f
+   isz gcard
+1:
+   law 040
+   jms putc
+   isz 2f
+   jmp 1b
+   jmp gcard+1
+2: 0
+3:
+   lac noc
+   sna
+   jmp gcard i
+   sad d80
+   jmp gcard i
+   law 040
+   jms putc
+   jmp 3b
+
+done:
+   jms gcard; <$;<%;6;<e;<n;<d;<c;<o;<p;<y;0
+   jms gcard; <$;<%;6;<s;<y;<s;<o;<u;<t;<%;2;<p;<*;0
+   jms gcard; <$;<%;6;<e;<n;<d;<j;<o;<b;0
+   -1
+   dac disflg
+1:
+   jms gcard; <$;<*;<$;<d;<i;<s;0
+   jmp 1b
+
+putw: 0
+   dac 1f
+   lrss 9
+   jms putc
+   lac 1f
+   jms putc
+   jmp putw i
+1: 0
+
+putc: 0
+   and o177
+   dac opt i
+   -0141
+   tad opt i
+   spa
+   jmp 1f
+   -0173
+   tad opt i
+   sma
+   jmp 1f
+   -040
+   tad opt i
+   dac opt i
+1:
+   isz opt
+   isz noc
+   lac noc
+   sad d160
+   skp
+   jmp putc i
+   dzm noc
+   law tbuf
+   dac opt
+   law 0110
+   jms message; tbuf
+   jmp putc i
+noc: 0
+opt: tbuf
+
+connect: 0
+   dpon
+   dpop
+
+   law 4
+   sys sysloc
+   tad d14
+   dac systime
+   law 11
+   sys sysloc
+   dac dpstat
+   tad d1
+   dac dpread
+   tad d1
+   dac dpwrite
+   tad d1
+   dac dpchar
+
+   dzm dpstat i
+   las
+   dac opch
+1:
+   las
+   sad opch
+   skp
+   jmp abort
+   sys time
+   lac dpstat i
+   and ilock
+   sna
+   jmp 1b
+   law 041
+   dac echoch
+   law 0102
+   jms message; 0
+   jmp i connect
+
+message: 0
+   dac stsch
+
+retry:
+   lac dpstat i
+   and carrier
+   sza
+   jmp retry
+   dprs
+   and ilock
+   sna
+   jmp hangup
+   lac d1
+   dac dpwrite i
+   sys time
+   lacq
+   tad totime
+   dac rctim
+
+" put out 6 sync characters
+   -6
+   dac c2
+1:
+   law 026
+   jms transch
+   isz c2
+   jmp 1b
+
+" put out stx character
+   law 002
+   jms transch
+   dzm sum
+
+" put out the status character
+   lac stsch
+   jms transch
+
+" echo the sequence character
+   lac echoch
+   jms transch
+
+" if there is a buffer pointer
+" put out 160 words of data
+   -1
+   tad i message
+   spa
+   jmp 2f
+   dac 10
+   -160
+   dac c2
+1:
+   lac 10 i
+   jms transch
+   isz c2
+   jmp 1b
+
+" put out etx character
+2:
+   law 003
+   jms transch
+
+" put out lateral parity
+   lac sum
+   jms transch
+
+" put out a sync
+   law 026
+   jms transch
+
+" loop looking for stx
+1:
+   jms recvch
+   sad o2
+   skp
+   jmp 1b
+   dzm sum
+
+" pick up op code
+   jms recvch
+   spa
+   jmp error
+   dac opch
+
+" pick up sequence character
+   jms recvch
+   spa
+   jmp error
+   dac seqch
+   sad echoch
+   jmp error
+
+" skip over data block to etx character
+1:
+   jms recvch
+   spa
+   jmp error
+   sad o3
+   skp
+   jmp 1b
+
+" pick up the lateral parity character
+   jms recvch
+   lac sum
+   and o177
+   sza
+   jmp error
+
+" and exit
+   lac seqch
+   dac echoch
+   -1
+   dac 7
+   isz message
+   lac opch
+   sad o122
+   jmp i message
+   lac distlg
+   sna
+   jmp discon
+   jmp stop
+
+transch: 0
+   lmq
+   xor sum
+   dac sum
+1:
+   jms checktim
+   lac dpwrite i
+   sna
+   jmp 1b
+   dzm dpwrite i
+   lacq
+   dpwc
+   jmp i transch
+
+recvch: 0
+1:
+   jms checktim
+   lac dpread i
+   sna
+   jmp 1b
+   dzm dpread i
+   lac dpchar i
+   xor sum
+   dac sum
+   lac dpchar i
+   jmp i recvch
+
+checktim: 0
+   lac systime i
+   cma
+   tad rctim
+   spa
+   jmp error
+   jmp i checktim
+
+error:
+   lac stsch
+   lmq
+   lac o2
+   omq
+   dac stsch
+   jmp retry
+
+d1: 1
+d4: 4
+o60: 060
+o12: 012
+dm4: -4
+o45: 045
+o177: 0177
+d160: 160
+d80: 80
+d14: 14
+o400000: 0400000
+o577777: 0577777
+o200500: 0200500
+o122: 0122
+o3: 3
+o2: 2
+
+lactab: lac .+1
+   0060;0061;0062;0063;0064;0065;0066;0067
+   0070;0071;0133;0043;0100;0072;0076;0077
+   0040;0101;0102;0103;0104;0105;0106;0107
+   0110;0111;0046;0056;0135;0050;0074;0134
+   0136;0112;0113;0114;0115;0116;0117;0120
+   0121;0122;0055;0044;0052;0051;0073;0047
+   0053;0057;0123;0124;0125;0126;0127;0130
+   0131;0132;0137;0054;0045;0075;0042;0041
+
+dpstat: .=.+1
+dpread: .=.+1
+dpwrite: .=.+1
+dpchar: .=.+1
+systime: .=.+1
+opch: .=.+1
+stsch: .=.+1
+echoch: .=.+1
+seqch: .=.+1
+tbuf: .=.+160
+buf: .=.+48
+ibuf: .=.+64
+rctim: .=.+1
+fi: .=.+1
+c1: .=.+1
+c2: .=.+1
+sum: .=.+1
+
+dpon = 0704701
+dpof = 0704704
+dpwc = 0704722
+dpop = 0704764
+dprs = 0704752
\ No newline at end of file
diff --git a/ald.s b/ald.s
new file mode 100644 (file)
index 0000000..f0c79a0
--- /dev/null
+++ b/ald.s
@@ -0,0 +1,250 @@
+" ald
+
+   law 17
+   sys sysloc
+   dac crread
+   tad d1
+   dac crchar
+
+   law 4
+   sys sysloc
+   tad d14
+   dac systime
+
+loop:
+   jms holcard
+   lac o12
+   dac buf+4
+   lac d1
+   sys write; buf; 5
+   law 017
+   sys creat; buf
+   spa
+   jmp ferror
+   dac fo
+   dzm noc
+   law obuf
+   dac opt
+   dzm seq
+
+cloop:
+   jms bincard
+   lac buf
+   and o700
+   sad o500
+   skp
+   jmp notbin
+
+   -48
+   dac c1
+   lac buf+3
+   dac sum
+   dzm buf+3
+   law buf-1
+   dac 10
+   cla
+1:
+   add 10 i
+   isz c1
+   jmp 1b
+   sad sum
+   skp
+   jmp badcksum
+
+   lac buf+1
+   sad seq
+   skp
+   jmp badseq
+
+   -1
+   tad buf+2
+   cma
+   dac c1
+   law buf+3
+   dac 10
+1:
+   lac 10 i
+   jms putword
+   isz c1
+   jmp 1b
+
+   isz seq
+   lac buf
+   sma
+   jmp cloop
+   lac noc
+   sna
+   jmp 1f
+   dac 0f
+   lac fo
+   sys write; obuf; 0;..
+1:
+   lac fo
+   sys close
+   sys exit
+
+holcard: 0
+   jms rawcard
+   lac 1f
+   dac buf
+   lac 1f+1
+   dac buf+1
+   lac 1f+2
+   dac buf+2
+   lac 1f+3
+   dac buf+3
+   jmp holcard i
+1: <xx>;040040;040040;040040
+
+bincard: 0
+   jms rawcard
+   -24
+   dac c
+   law tbuf-1
+   dac 8
+   law buf-1
+   dac 9
+1:
+   lac 8 i
+   alss 6
+   dac 1f
+   lac 8 i
+   dac 1f+1
+   lac 8 i
+   dac 1f+2
+   lac 1f+1
+   lrss 6
+   xor 1f
+   dac 9 i
+   lac 1f+1
+   alss 12
+   xor 1f+2
+   dac 9 i
+   isz c
+   jmp 1b
+   jmp bincard i
+1: 0;0;0
+
+rawcard: 0
+   lac systime i
+   tad wtime
+   dac tmtime
+   -80
+   dac c
+   law tbuf-1
+   dac 8
+   crsb
+1:
+   dzm crread i
+2:
+   lac systime i
+   cma
+   tad tmtime
+   spa
+   jmp timeout
+   lac crread i
+   sna
+   jmp 2b
+   lac crchar i
+   dac 8 i
+   isz c
+   jmp 1b
+   law
+   dac 1f
+   isz 1f
+   jmp .-1
+   jmp rawcard i
+1: 0
+
+badcksum:
+   lac d1
+   sys write; m1; m1s
+   jms wait
+   jmp cloop
+
+badseq:
+   lac d1
+   sys write; m2; m2s
+   jms wait
+   jmp cloop
+
+notbin:
+   lac d1
+   sys write; m3; m3s
+   jms wait
+   cmp cloop
+
+timeout:
+   lac d1
+   sys write; m4; m4s
+   jms wait
+   jmp rawcard+1
+
+m1:
+  <ba>;<d 040; <ch>;<ec>;<ks>;<um>; 012
+m1s = .-m1
+
+m2:
+   <ba>;<d 040; <se>;<qu>;<en>;<ce>; 012
+m2s = .-m2
+
+m3:
+   <no>;<t 040; <bi>;<na>;<ry>; 012
+m3s = .-m3
+
+m4:
+  <ti>;<me>;<ou>;<t 012
+m4s = .-m4
+
+wait: 0
+   las
+   dac 2f
+1:
+   las
+   sad 2f
+   jmp 1b
+   and d1
+   sna
+   jmp wait i
+   sys save
+2: 0
+
+putword: 0
+   dac opt i
+   isz opt
+   isz noc
+   lac noc
+   sad d2048
+   skp
+   jmp putword i
+   lac fo
+   sys write; obuf; 2048
+   dzm noc
+   law obuf
+   dac opt
+   jmp putword i
+   jmp putword i
+
+d1: 1
+d2048: 2048
+d14: 14
+o500: 0500
+o700: 0700
+o12: 012
+wtime: 300
+c: .=.+1
+c1: .=.+1
+buf: .=.+100
+tbuf: .=.+80
+fo: .=.+1
+seq: .=.+1
+sum: .=.+1
+obuf: .=.+2048
+noc: .=.+1
+opt: .=.+1
+systime: .=.+1
+crread: .=.+1
+crchar: .=.+1
+tmtime: .=.+1
+
+crsb = 0706744
\ No newline at end of file
diff --git a/apr.s b/apr.s
new file mode 100644 (file)
index 0000000..c2e1597
--- /dev/null
+++ b/apr.s
@@ -0,0 +1,690 @@
+" apr
+
+   lac 017777 i
+   sad d4
+   jmp nofiles
+   lac 017777
+   tad d1
+   dac name
+   jms connect
+   sys time
+   llss 9
+   ecla llss 3
+   tad o60
+   alss 9
+   dac snumb
+   ecla llss 3
+   tad o60
+   alss 9
+   dac snumb+1
+   ecla llss 3
+   tad o60
+   alss 9
+   dac snumb+2
+   lac d1
+   sys write; snumb; 3
+   lac d1
+   sys write; o12; 1
+   jms gcard; <$;<*;<$;<7;<c;<%;67;0
+   jms gcard; <$;<*;<$;<r;<c;<d;<%;66;0
+   jms gcard; <$;<%;6;<s;<n;<u;<m;<b;<%;3;<7;<c
+snumb:
+      <x;<x;<x;<,;<3;<1;<%;49;0
+   jms gcard; <$;<%;6;<i;<d;<e;<n;<t;<%;3;<m;<0;<1;<3;<0;<,
+      <m;<3;<2;<2;<,;<k;<e;<n;<%;48;0
+   jms gcard; <$;<%;6;<s;<e;<l;<e;<c;<t;<%;2;<k;<e;<n
+      </;<p;<r;<n;<o;<f;<f;<%;47;0
+   jms gcard; <$;<%;6;<l;<i;<m;<i;<t;<s;<%;2;<2;<,;<,;<,
+      <9;<0;<0;<0;<%;49;0
+   jms gcard; <$;<%;6;<d;<a;<t;<a;<%;4;<i;<*;<,;<,;<c;<o;<p;<y;<%;49;0
+   jmp 1f
+
+floop:
+   lac fi
+   sys close
+1:
+   law 041
+   jms putc
+   law 040
+   jms putc
+   law 044
+   jms putc
+   law040
+   jms putc
+
+floop1:
+   lac 017777 i
+   sad d4
+   jmp done
+   tad dm4
+   dac 017777 i
+   lac name
+   tad d4
+   dac name
+
+   sys open; name: ..; 0
+   spa
+   jmp ferror
+   dac fi
+   jmp loop
+
+ferror:
+   lac name
+   dac 1f
+   lac d1
+   sys write; 1:..; 4
+   lac d1
+   sys write; 1f; 1
+   jmp floop1
+1: 077012
+
+loop:
+   dzm crflg
+   dzm col
+   law cbuf1-1
+   dac 8
+   -200
+   dac c
+1:
+   dzm 8 i
+   isz c
+   jmp 1b
+
+cloop:
+   jms getc
+   dac ch
+   sad o4
+   jmp pass2
+   sad o12
+   jmp pass2
+   sad o10
+   jmp bksp
+" -------------- sad o11
+"                jmp tab       "tab:
+"                              "isz eol
+"                              "lac col
+"                              "ell: >div; 5
+"                               "jmp tab
+"                              "jmp ell
+   sad o15
+   jmp cret
+   sad o40
+   jmp 1f
+   law cbuf1
+   tad col
+   dac t
+   lac t i
+   sza
+   jmp inb2
+   lac ch
+   dac t i
+1:
+   isz col
+   jmp cloop
+
+inb2:
+   law cbuf2
+   tad col
+   dac t
+   dac crflg
+   lac ch
+   dac t i
+   isz col
+   jmp cloop
+
+bksp:
+   -1
+   tad col
+   spa
+   cla
+   dac col
+   jmp cloop
+
+cret:
+   dzm col
+   jmp cloop
+
+pass2:
+   law cbuf1
+
+p21:
+   dac t
+   dzm case
+   -100
+   dac c
+   dzm nblank
+
+p2loop:
+   lac t i
+   sna
+   jmp blk
+
+   -1
+   tad nblank
+   spa
+   jmp 2f
+   cma
+   dac c1
+1:
+   law 040
+   jms putc
+   isz c1
+   jmp 1b
+   dzm nblank
+2:
+   law casetab
+   tad t i
+   dac t1
+   lac t1 i
+   sad case
+   jmp 1f
+   sad d2
+   jmp 1f
+   dac case
+   law 041
+   jms putc
+   law 041
+   jms putc
+1:
+   lac t i
+   sad o44
+   jmp dol
+   sad o41
+   law 045
+   sad o77
+   law 0100
+   sad o134
+   law 0137 " ??
+   sad o137
+   law 055
+   sad o140
+   law 0134
+   sad o173
+   law 0133
+   sad o174
+   law 046
+   sad o175
+   law 0135
+   sad o176
+   law 0137 " ??
+   jms putc
+   jmp p2test
+
+dol:
+   law 044
+   jms putc
+   law 044
+   jms putc
+   jmp p2test
+
+blk:
+   isz nblank
+
+p2test:
+   isz t
+   isz c
+   jmp p2loop
+   lac crflg
+   sna
+   jmp 1f
+   law 041
+   jms putc
+   law 060
+   jms putc
+   law 044
+   jms putc
+   law 040
+   jms putc
+   dzm crflg
+   law cbuf2
+   jmp p21
+1:
+   law 044
+   jms putc
+   law 040
+   jms putc
+   lac ch
+   sad o4
+   jmp floop
+   jmp loop
+
+getc: 0
+   lac ipt
+   sad eipt
+   jmp 1f
+   dac 2f
+   add o400000
+   dac ipt
+   ral
+   lac 2f i
+   szl
+   lrss 9
+   and o177
+   sna
+   jmp getc+1
+   jmp getc i
+1:
+   lac fi
+   sys read; rbuf; 64
+   sna
+   jmp 1f
+   tad iipt
+   dac eipt
+   lac iipt
+   dac ipt
+   jmp getc+1
+1:
+   lac o4
+   jmp getc i
+
+hangup:
+   lac d1
+   sys write; m1; m1s
+   jmp stop
+
+abort:
+   lac d1
+   sys write; m2; m2s
+   jmp stop
+
+nofiles:
+   lac d1
+   sys write; m3; m3s
+   sys exit
+
+discon:
+   lac d1
+   sys write; m4; m4s
+   jmp stop
+
+m1:
+   <ha>;<ng>;<up>;012
+m1s = .-m1
+m2:
+   <ab>;<or>;<te>;<d 012
+m2s = .-m2
+m3:
+   <us>;<ag>;<e;<;;040;<ap>;<r 040; <fi>;<le>;<s 012
+   <di>;<al>;040;<x;<5;<3;<8;<0 040; <on>;040;<th>;<e 040
+   <da>;<ta>;<ph>;<on>;<e 012
+m3s = .-m3
+m4:
+   <di>;<sc>;<on>;<ne>;<ct>;<ed>;012
+m4s = .-m4
+
+stop:
+   dpof
+   sys exit
+
+ipt: 0
+eipt: 0
+iipt: rbuf
+fi: 0
+opt: tbuf
+noc: 0
+carrier: 0100000
+ilock: 040000
+totime: 300
+disflg: 0      " 2: both cases
+
+casetab:
+   2;2;2;2;2;2;2;2
+   2;2;2;2;2;2;2;2
+   2;2;2;2;2;2;2;2
+   2;2;2;2;2;2;2;2
+   2;1;2;2;2;0;0;2
+   2;2;2;2;2;0;2;2
+   2;2;2;2;2;2;2;2
+   2;2;2;2;2;2;2;1     " 0 - 100 case
+   0;0;0;0;0;0;0;0     " 1 - 200 case
+   0;0;0;0;0;0;0;0     " 2 - 300 case
+   0;0;0;0;0;0;0;0
+   0;0;0;0;0;0;2;1
+   2;1;1;1;1;1;1;1
+   1;1;1;1;1;1;1;1
+   1;1;1;1;1;1;1;1
+   1;1;1;1;1;1;1;1
+
+gcard: 0
+   lac gcard i
+   isz gcard
+   sna
+   jmp gcard i "circled with 3f written in and to the right:
+   lrss 9      "3: lac noc
+   sad o45     "sna
+   jmp 1f      "jmp gcard i
+   jms putc    "sad d80
+   jmp gcard+1  "jmp gcard i
+1:             "law 040
+   -1          "jms putc
+   tad gcard i "jmp 3b
+   cma
+   dac 2f
+   isz gcard
+1:
+   law 040
+   jms putc
+   isz 2f
+   jmp 1b
+   jmp gcard+1
+2: 0
+
+done:
+   lac noc
+   sna
+   jmp 1f
+   sad d72
+   jmp 1f
+   law 040
+   jms putc
+   jmp done
+1:
+   jms gcard; <$;<%;6;<e;<n;<d;<c;<o;<p;<y;<%;58;0
+   jms gcard; <$;<%;6;<s;<y;<s;<o;<u;<t;<%;2;<p;<*;<%;55;0
+   jms gcard; <$;<%;6;<e;<n;<d;<j;<o;<b;<%;59;0
+   -1
+   dac disflg
+1:
+   jms gcard; <$;<*;<$;<d;<i;<s;<%;66;0
+   jmp 1b
+
+putc: 0
+   and o177
+   dac opt i
+   -0141
+   tad opt i
+   spa
+   jmp 1f
+   -0173
+   tad opt i
+   sma
+   jmp 1f
+   -040
+   tad opt i
+   dac opt i
+1:
+   isz opt
+   isz noc
+   lac noc
+   sad d144
+   skp
+   jmp putc i
+   dzm noc
+   law tbuf
+   dac opt
+   law 0110
+   jms message; tbuf
+   jmp putc i
+
+connect: 0
+   dpon
+   dpop
+
+   law 4
+   sys sysloc
+   tad d14
+   dac systime
+   law 11
+   sys sysloc
+   dac dpstat
+   tad d1
+   dac dpread
+   tad d1
+   dac dpwrite
+   tad d1
+   dac dpchar
+   dzm dpstat i
+   las
+   dac opch
+1:
+   las
+   sad opch
+   skp
+   jmp abort
+   sys time
+   lac dpstat i
+   and ilock
+   sna
+   jmp 1b
+
+   law 041
+   dac echoch
+   law 0102
+   jms message; 0
+   jmp i connect
+
+message: 0
+   dac stsch
+
+retry:
+   lac dpstat i        "* lac dpstat crossed through and dpstart written in
+   and carrier
+   sza
+   jmp retry
+   dprs
+   and ilock   "* arrow to note carrier drops + iloc
+   sna         "* carrier = 0
+   jmp hangup  "* ilock = 1
+   lac d1
+   dac dpwrite i
+   sys time
+   lacq
+   tad totime
+   dac rctim
+
+" put out 6 sync characters
+   -6
+   dac c2
+1:
+   law 026
+   jms transch
+   isz c2
+   jmp 1b
+
+" put out stx character
+   law 002
+   jms transch
+   dzm sum
+
+" put out the status character
+   lac stsch
+   jms transch
+
+" echo the sequence character
+   lac echoch
+   jms transch
+" if there is a buffer pointer
+" put out 160 words of data
+   -1
+   tad i message
+   spa
+   jmp 2f
+   dac 10
+   jms transcd
+   jms transcd
+
+" put out etx character
+2:
+   law 003
+   jms transch
+
+" put out lateral parity
+   lac sum
+   jms transch
+
+" put out a sync
+   law 026
+   jms transch
+
+" loop looking for stx
+1:
+   jms recvch
+   sad o2
+   skp
+   jmp 1b
+   dzm sum
+
+" pick up op code
+   jms recvch
+   spa
+   jmp error
+   dac opch
+
+" pick up sequence character
+   jms recvch
+   spa
+   jmp error
+   dac seqch
+   sad echoch
+   jmp error
+
+" skip over data block to etx character
+1:
+   jms recvch
+   spa
+   jmp error
+   sad o3
+   skp
+   jmp 1b
+
+" pick up the lateral parity character
+   jms recvch
+   lac sum
+   and o177
+   sza
+   jmp error
+
+" and exit
+   lac seqch
+   dac echoch
+   -1
+   dac 7
+   isz message
+   lac opch
+   sad o122
+   jmp i message
+   lac disflg
+   sna
+   jmp discon
+   jmp stop
+
+transcd: 0
+   -72
+   dac c2
+1:
+   lac 10 i
+   jms transch
+   isz c2
+   jmp 1b
+   -8
+   dac c2
+1:
+   law 040
+   jms transch
+   isz c2
+   jmp 1b
+   jmp transch i
+
+transch: 0
+   lmq
+   xor sum
+   dac sum
+1:
+   jms checktim
+   lac dpwrite i
+   sna
+   jmp 1b
+   dzm dpwrite i
+   lacq
+   dpwc
+   jmp i transch
+
+recvch: 0
+1:
+   jms checktim
+   lac dpread i
+   sna
+   jmp 1b
+   dzm dpread i
+   lac dpchar i
+   xor sum
+   dac sum
+   lac dpchar i
+   jmp i recvch
+
+checktim: 0
+   lac systime i
+   cma
+   tad rctim
+   spa
+   jmp error
+   jmp i checktim
+
+error:
+   lac stsch
+   lmq
+   lac o2
+   omq
+   dac stsch
+   jmp retry
+
+d1: 1
+o60: 060
+o122: 0122
+d72: 72
+o45: 045
+o134: 0134
+o140: 0140
+o41: 041
+o44: 044
+o77: 077
+o137: 0137
+o173: 0173
+o174: 0174
+o175: 0175
+o176: 0176
+d128: 128
+o400000: 0400000
+o177: 0177
+o2:d2: 2
+o3: 3
+d14: 14
+d144: 144
+o12: 012
+d4:o4: 04
+dm4: -4
+o10: 010
+o15: 015
+o40: 040
+
+crflg: .=.+1
+col: .=.+1
+t: .=.+1
+t1: .=.+1
+c: .=.+1
+c1: .=.+1
+c2: .=.+1
+dpstat: .=.+1
+dpread: .=.+1
+dpwrite: .=.+1
+dpchar: .=.+1
+systime: .=.+1
+opch: .=.+1
+stsch: .=.+1
+echoch: .=.+1
+seqch: .=.+1
+tbuf: .=.+144
+rbuf: .=.+64
+rctim: .=.+1
+sum: .=.+1
+ch: .=.+1
+nblank: .=.+1
+case: .=.+1
+cbuf1: .=.+100
+cbuf2: .=.+100
+
+dpon = 0704701
+dpof = 0704704
+dpwc = 0704722
+dpop = 0704764
+dprs = 0704752
\ No newline at end of file
diff --git a/as.s b/as.s
new file mode 100644 (file)
index 0000000..f63d3bc
--- /dev/null
+++ b/as.s
@@ -0,0 +1,980 @@
+" as
+
+   jms init1
+
+assm1:
+   lac eofflg
+   sza
+   jmp assm2
+   lac passno
+   sza
+   jmp finis
+   jms init2
+
+assm2:
+   jms gchar
+   sad d4
+   jmp assm1
+   sad d5
+   jmp assm1
+   lac char
+   dac savchr
+   jms gpair
+   lac rator
+   jms betwen; d1; d6
+   jmp assm3
+   jms expr
+   lac passno
+   sza
+   jms process
+   isz dot+1
+   nop
+   lac dot+1
+   and o17777
+   sad dot+1
+   jmp assm1
+   jms error; >>
+   dzm dot+1
+   jmp assm1
+
+assm3:
+   lac rand
+   sad d2
+   jmp assm4
+   sza
+   jmp assm6
+   lac rator
+   sza
+   jmp assm6
+   lac rand+1
+   jms betwen; dm1; d10
+   jmp assm6
+   dac name
+   tad fbxp
+   dac lvrand
+   lac i lvrand
+   dac name+1
+   isz i lvrand
+   lac o146
+   dac name+2
+   dzm name+3
+   jms tlookup
+   -1
+   dac fbflg
+assm4:
+   lac rand+1
+   tad d4
+   dac lvrand
+   lac rator
+   sza
+   jmp assm5
+   lac dot
+   dac r
+   lac dot+1
+   dac r+1
+   jmp 1f
+
+assm5:
+   jms gpair
+   jms expr
+1:
+   lac r
+   dac i lvrand
+   isz lvrand
+   lac r+1
+   dac i lvrand
+   lac fbflg
+   sna
+   jmp assm1
+   dzm fbflg
+   dzm name+1
+   lac o142
+   dac name+2
+   jms lookup
+   jmp assm4
+
+assm6:
+   jms error; x>
+   jmp assm1
+
+init1: 0
+   lac d1
+   sys write; 1f; 2f-1f
+   dzm passno
+   lac o56040
+   dac dot-4
+   lac o56056
+   dac cmflx-4
+   lac o40040
+   dac dot-3
+   dac dot-2
+   dac dot-1
+   dac cmflx-3
+   dac cmflx-2
+   dac cmflx-1
+   dzm iof
+   jms init
+   jmp i init1
+1:
+   0111012
+2:
+
+init2: 0
+   lac d1
+   dac passno
+   sys write; 1f; 2f-1f
+   jms init
+   lac o17
+   sys creat; 2f
+   dac bfo
+   sys open; 2f; 0
+   dac bfi
+   dzm bufadd
+   jms copyz; buf; 64
+   jmp i init2
+1:
+   0111111;012000
+2:
+   0141056;0157165;0164040;040040
+
+init: 0
+   lac i 017777
+   dac narg
+   lac 017777
+   tad d1
+   dac fname
+   -1
+   dac eofflg
+   jms nextfil
+   jms ioinit
+   dzm savchr
+   dzm comflg
+   lac d1
+   dac dot
+   dzm dot+1
+   dzm cmflx
+   lac d4096
+   dac cmflx+1
+   dzm fbflg
+   jms copyz; fbxp: fbx; 10
+   jmp i init
+
+finis:
+   lac iof
+   sys close
+   jms bufwr
+   lac bfi
+   sys close
+   lac bfo
+   sys close
+   -1
+   tad namsiz
+   cma
+   rcl
+   dac char
+   rcl
+   tad char
+   dac 1f
+   lac o17
+   sys creat; n.out
+   dac bfi
+   sys write; namlst; 1: 0
+   lac bfi
+   sys close
+   sys exit
+n.out:
+   0156056;0157165;0164040;040040
+
+process: 0
+   lac dot+1
+   dac lvrand
+   lac dot
+   sad d3
+   jmp proc4
+   sza
+   jmp proc1
+   -1
+   tad cmflx+1
+   cma
+   tad lvrand
+   dac lvrand
+
+proc1:
+   lac lvrand
+   spa
+   jmp proc4
+   and o17700
+   sad bufadd
+   jmp proc2
+   jms bufwr
+   jms copyz; buf; 64
+   lac lvrand
+   and o17700
+   dac bufadd
+   dac 1f
+   lac bfi
+   sys seek; 1: 0; 0
+   spa
+   jmp proc2
+   lac bfi
+   sys read; buf; 64
+
+proc2:
+   lac lvrand
+   and o77
+   jms betwen; dm1; maxsto
+   dac maxsto
+   tad bufp
+   dac lvrand
+   lac r
+   sna
+   jmp proc3
+   sad d3
+   jmp proc5
+   lac cmflx+1
+   tad r+1
+   dac r+1
+
+proc3:
+   lac r+1
+   dac i lvrand
+   jmp i process
+
+proc4:
+   jms error; .>
+   lac d1
+   dac dot
+   dzm dot+1
+   jmp skip
+
+proc5:
+   jms error; u>
+   jmp proc3
+
+bufwr: 0
+   lac bfo
+   sys seek; bufadd: 0; 0
+   isz maxsto
+   lac bfo
+   sys write; bufp: buf; maxsto: -1
+   -1
+   dac maxsto
+   jmp i bufwr
+
+:number: 0
+   dac 3f
+   lac d1000
+   dac 2f
+1:
+   lac 3f
+   cll
+   idiv; 2: 0
+   dac 3f
+   lacq
+   tad o60
+   dac i 8
+   lac 2b
+   cll
+   idiv; 10
+   lacq
+   dac 2b
+   sza
+   jmp 1b
+   jmp i number
+3: 0
+
+getsc: 0
+   lac i getsc
+   dac sctalp
+   isz getsc
+   lac i sctalp
+   dac sctal
+   add o400000
+   dac i sctalp
+   ral
+   lac i sctal
+   szl
+   lrss 9
+   and o177
+   jmp i getsc
+
+putsc: 0
+   and o177
+   lmq
+   lac i putsc
+   dac sctalp
+   isz putsc
+   lac i sctalp
+   dac sctal
+   add o400000
+   dac i sctalp
+   sma cla
+   jmp 1f
+   llss 27
+   dac i sctal
+   lrss 9
+   jmp i putsc
+
+1:
+   lac i sctal
+   omq
+   dac i sctal
+   lacq
+   jmp i putsc
+
+sctalp: 0
+sctal: 0
+
+betwen: 0
+   dac 2f
+   lac i betwen
+   dac 3f
+   isz betwen
+   lac i 3f
+   cma
+   tad 2f
+   spa
+   jmp 1f
+   lac i betwen
+   dac 3f
+   isz betwen
+   lac i 3f
+   cma
+   tad d1
+   tad 2f
+   spa
+1:
+   isz betwen
+   lac 2f
+   jmp i betwen
+2: 0
+3: 0
+
+copyz: 0
+   -1
+   tad i copyz
+   dac 8
+   isz copyz
+   lac i copyz
+   cma
+   tad d1
+   dac 2f
+   isz copyz
+1:
+   dzm i 8
+   isz 2f
+   jmp 1b
+   jmp i copyz
+2: 0
+
+error: 0
+   lac passno
+   sza
+   jmp 1f
+   isz error
+   jmp i error
+1:
+   -1
+   tad mesp
+   dac 8
+   lac i error
+   dac i 8
+   lac o40
+   dac i 8
+   lac rator
+   sad d5
+   jmp 1f
+   lac savchr
+   sad o12
+   jmp 1f
+   lac lineno
+   jmp 2f
+1:
+   -1
+   tad lineno
+2:
+   jms number
+   lac o12
+   dac i 8
+   -2
+   tad mesp
+   cma
+   tad 8
+   dac 1f
+   lac d1
+   sys write; mesp: mes; 1: 0
+   isz error
+   jmp i error
+
+skip:
+   lac rator
+   sad d5
+   jmp assm1
+1:
+   jms gchar
+   sad d5
+   jmp assm1
+   jmp 1b
+
+ioinit: 0
+   jms copyz; iobuf; 64
+   lac iof
+   sys read; iobufp: iobuf; 64
+   sna
+   jms nextfil
+   lac iobufp
+   dac tal
+   -129
+   dac talc
+   jmp i ioinit
+
+nextfil: 0
+   lac d1
+   dac lineno
+   lac iof
+   sza
+   sys close
+nf1:
+   lac narg
+   sad d4
+   skp
+   jmp 1f
+   dzm eofflg
+   jmp i nextfil
+1:
+   tad dm4
+   dac narg
+   lac fname
+   tad d4
+   dac fname
+   sys open; fname: 0; 0
+   dac iof
+   sma
+   lac passno
+   sna
+   jmp nextfil i
+   lac fname
+   dac 1f
+   lac d1
+   sys write; 1; 0; 4
+   lac iof
+   sma
+   jmp 1f
+   lac d1
+   sys write; emes; 2
+   sys exit
+1:
+   lac d1
+   sys write; emes+1; 1
+   jmp i nextfil
+emes:
+   040077;012000
+
+gchar: 0
+   lac savchr
+   dzm savchr
+   sza
+   jmp gch3
+   lac eofflg
+   sza
+   jmp 1f
+   lac o12
+   jmp gch3
+1:
+   isz talc
+   skp
+   jms ioinit
+   jms getsc; tal
+   sna
+   jmp gchar+1
+   sad o177
+   jmp gchar+1
+   sad o12
+   skp
+   jmp 1f
+   dzm comflg
+   isz lineno
+1:
+   sad o42
+   dac comflg
+   dac char
+   lac comflg
+   sza
+   jmp gchar+1
+   lac char
+
+gch3:
+   dac char
+   jms betwen; d0; o200
+   cla
+   tad lactab
+   dac .+1
+   lac 0
+   jmp i gchar
+
+gsymb: 0
+   jms gchar
+   dac rator
+   tad jmpsw1
+   dac 1f
+   lac char
+   sad o74
+   jmp lqot
+   dac namc
+   jms gchar
+   lac char
+   sad o76
+   jmp rqot
+   dac savchr
+   lac namc
+   dac char
+1:
+   jmp 0
+
+jmpsw1:
+   jmp .+1
+   jmp i gsymb
+   jmp i gsymb
+   jmp i gsymb
+   jmp i gsymb
+   jmp gs1
+   jmp i gsymb
+   jmp gs2
+   jmp gs3
+
+badchr:
+   jms error; g>
+1:
+   jms gchar
+   lac char
+   sad o12
+   skp
+   jmp 1b
+   dac savchr
+   jmp gsymb+1
+
+lqot:
+   jms gchar
+   lac o40
+   dac savchr
+   lac char
+   alss 9
+   jmp 1f
+
+rqot:
+   lac namc
+1:
+   dac rand+1
+   lac d7
+   dac rator
+   jmp i gsymb
+
+gs1:
+   jms gchar
+   sad d4
+   jmp gs1
+   lac char
+   dac savchr
+   jmp i gsymb
+
+gs2:
+   lac namep
+   dac tal1
+   -7
+   dac tal1c
+   lac char
+   jms putsc; tal1
+
+gnam1:
+   jms gchar
+   jms betwen; d5; d8
+   jmp gnam3
+   lac char
+   jms putsc; tal1
+   isz tal1c
+   jmp gnam1
+
+gnam2:
+   jms gchar
+   jms betwen; d5; d8
+   skp
+   jmp gnam2
+   lac char
+   dac savchr
+   jms lookup
+   jmp i gsymb
+
+gnam3:
+   lac char
+   dac savchr
+1:
+   lac o40
+   jms putsc; tal1
+   isz tal1c
+   jmp 1b
+   jms lookup
+   jmp i gsymb
+
+gs3:
+   dzm rand+1
+   lac char
+   sad o60
+   jmp 1f
+   lac d10
+   jmp 2f
+1:
+   lac d8
+2:
+   dac num2
+
+num1:
+   lac rand+1
+   cll
+   mul
+num2: 0
+   lacq
+   tad char
+   tad dm48
+   dac rand+1
+   jms gchar
+   sad d7
+   jmp num1
+   lac char
+   dac savchr
+   lac rand+1
+   jms betwen; dm1; d10
+   jmp i gsymb
+   dac name
+   tad fbxp
+   dac name+1
+   lac i name+1
+   dac name+1
+   lac savchr
+   sad o146
+   jmp 1f
+   sad o142
+   skp
+   jmp i gsymb
+   dzm name+1
+1:
+   dac name+2
+   dzm name+3
+   lac d6
+   dac rator
+   jms lookup
+   dzm savchr
+   jmp i gsymb
+
+tlookup: 0
+      jmp 1f
+lookup: 0
+      dzm tlookup
+1:
+   -1
+   tad namlstp
+   dac 8
+   lac namsiz
+   dac namc
+lu1:
+   lac i 8
+   sad name
+   jmp 1f
+   lac d5
+lu2:
+   tad 8
+   dac 8
+   isz namc
+   jmp lu1
+      lac tlookup
+      sna
+      jmp 2f
+      lac fnamep
+      dac rand+1
+      jmp i tlookup
+2:
+   lac name
+   dac i 8
+   lac 8
+   dac rand+1
+   lac name+1
+   dac i 8
+   lac name+2
+   dac i 8
+   lac name+3
+   dac i 8
+   lac d3
+   dac i 8
+   dzm i 8
+   -1
+   tad namsiz
+   dac namsiz
+   jmp i lookup
+1:
+   lac i 8
+   sad name+1
+   jmp 1f
+   lac d4
+   jmp lu2
+1:
+   lac i 8
+   sad name+2
+   jmp 1f
+   lac d3
+   jmp lu2
+1:
+   lac i 8
+   sad name+3
+   jmp 1f
+   lac d2
+   jmp lu2
+1:
+   -3
+   tad 8
+   dac rand+1
+      lac tlookup
+      sza
+      jmp i tlookup
+   jmp i lookup
+namep: name
+
+gpair: 0
+   jms gsymb
+   lac rator
+   sad d4
+   jmp gpair+1
+   jms betwen; dm1; d6
+   jmp gp1
+   dzm rand
+   dzm rand+1
+   jmp i gpair
+gp1:
+   sad d7
+   lac d4
+   tad dm4
+   dac rand
+   jms gsymb
+   lac rator
+   sad d4
+   jmp gp2
+   jms betwen; dm1; d6
+   skp
+   jmp i gpair
+   jms error; x>
+   jmp skip
+gp2:
+   jms gchar
+   jms betwen; d5; d8
+   jmp gp3
+   lac char
+   dac savchr
+   jmp i gpair
+gp3:
+   lac char
+   dac savchr
+   jms gsymb
+   jmp i gpair
+
+expr: 0
+   jms grand
+   -1
+   dac srand
+exp5:
+   lac rand
+   dac r
+   lac rand+1
+   dac r+1
+exp1:
+   lac rator
+   jms betwen; d1; d5
+   jmp exp3
+   dac orator
+   jms gpair
+   jms grand
+   lac orator
+   sad d4
+   jmp exp2
+   jms oper; rand
+   jmp exp1
+exp2:
+   jms pickup
+   lac r
+   dac srand
+   lac r+1
+   dac srand+1
+   jmp exp5
+exp3:
+   sad d5
+   jmp exp4
+   jms error; x>
+   jmp skip
+exp4:
+   jms pickup
+   jmp i expr
+
+pickup: 0
+   lac srand
+   spa
+   jmp i pickup
+   lac d4
+   jms oper; srand
+   jmp i pickup
+
+grand: 0
+   lac rand
+   sad d2
+   skp
+   jmp i grand
+   lac rand+1
+   tad d4
+   dac rand+1
+   lac i rand+1
+   dac rand
+   isz rand+1
+   lac i rand+1
+   dac rand+1
+   jmp i grand
+
+oper: 0
+   tad opsw
+   dac oper1
+   -1
+   tad i oper
+   dac 8
+   isz oper
+   lac r
+   sad d3
+   jmp oper2
+   lac i 8
+   sad d3
+   jmp oper2
+oper1:
+   jmp 0
+opsw:
+   jmp .-1
+   jmp oplus
+   jmp ominus
+   tad r
+   dac r
+   lac r+1
+   lmq
+   lac i 8
+   omq
+   jmp oret
+oplus:
+   tad r
+   dac r
+   lac r+1
+   tad i 8
+   jmp oret
+ominus:
+   cma
+   tad d1
+   tad r
+   dac r
+   -1
+   tad i 8
+   cma
+   tad r+1
+oret:
+   dac r+1
+   lac r
+   jms betwen; dm1; d2
+   skp
+   jmp i oper
+   jms error; r>
+   lac d1
+   dac r
+   jmp i oper
+oper2:
+   dac r
+   dzm r+1
+   jmp i oper
+
+d0: 0
+d1: 1
+d4096: 4096
+d2: 2
+d3: 3
+d4: 4
+d5: 5
+d6: 6
+d7: 7
+d8: 8
+o12: d10: 10
+dm1: -1
+o40: 040
+o60: 060
+dm48: -48
+o400000: 0400000
+o177: 0177
+dm4: -4
+o200: 0200
+o42: 042
+o142: 0142
+o40040: 040040
+o56056: 056056
+o56040: 056040
+o146: 0146
+o17777: 017777
+d1000: 1000
+o17: 017
+o17700: 017700
+o77: 077
+o74: 074
+o76: 076
+
+namsiz: -2
+namlstp: namlst
+fnamep: fakename
+lactab: lac .+1
+8;8;8;8;8;8;8;8
+8;4;5;8;8;8;8;8
+8;8;8;8;8;8;8;8
+8;8;8;8;8;8;8;8
+4;8;8;8;8;8;8;8
+8;8;6;2;4;3;6;8
+7;7;7;7;7;7;7;7
+7;7;0;5;8;1;8;8
+8;6;6;6;6;6;6;6
+6;6;6;6;6;6;6;6
+6;6;6;6;6;6;6;6
+6;6;6;8;8;8;8;8
+8;6;6;6;6;6;6;6
+6;6;6;6;6;6;6;6
+6;6;6;6;6;6;6;6
+6;6;6;8;8;8;8;8
+
+fbflg: .=.+1
+tal: .=.+1
+talc: .=.+1
+tal1: .=.+1
+tal1c: .=.+1
+narg: .=.+1
+lvrand: .=.+1
+eofflg: .=.+1
+namc: .=.+1
+passno: .=.+1
+char: .=.+1
+savchr: .=.+1
+comflg: .=.+1
+rator: .=.+1
+orator: .=.+1
+rand: .=.+2
+srand: .=.+2
+r: .=.+2
+name: .=.+4
+buf: .=.+64
+iobuf: .=.+64
+fbx: .=.+10
+mes: .=.+20
+iof: .=.+1
+bfi: .=.+1
+bfo: .=.+1
+lineno: .=.+1
+
+fakename: .=.+6
+namlst:
+.=.+4
+dot:
+.=.+6
+cmflx:
diff --git a/bc.s b/bc.s
new file mode 100644 (file)
index 0000000..b857335
--- /dev/null
+++ b/bc.s
@@ -0,0 +1,288 @@
+" bc
+
+   jmp start
+rinit:
+   jms initio
+   jmp .+1 i
+initio: 0
+   lac inter-1
+   dac fetch
+   jmp rinit
+   jms inter
+inter: 0
+   las
+   and o17
+   sza
+   jms trace
+   lac pc i
+   dac instr
+   lac pc
+   and o10000
+   sna
+   jmp badpc
+   lac sp
+   and o17700
+   sad o17700
+   jmp badsp
+   and o10000
+   sna
+   jmp badsp
+   lac instr
+   sad insasg
+   skp
+   jmp inter i
+   -4
+   tad sp
+   dac t1
+   lac t1 i
+   and o10000
+   sna
+   jmp badasgn
+   lac instr
+   jmp inter i
+
+trace: 0
+   and d1
+   sza
+   jms dtrace
+   las
+   and d2
+   sza
+   jms ddisp
+   las
+   and d4
+   sza
+   jms histog
+   las
+   and d8
+   sza
+   jmp stop
+   jmp trace i
+
+dtrace: 0
+   lac pc
+   dac 8
+   lac 8 i
+   dac instr
+   lac 8
+   jms octal; -4
+   law 040
+   jms putc
+   lac instr
+   cll; lrs 14
+   tad lacop
+   dac .+1
+   lac ..
+   jms putc
+   law 040
+   jms putc
+   lac instr
+   jms octal; -4
+   
+   lac instr
+   sad inslitr
+   skp
+   jmp 1f
+   law 040
+   jms putc
+   lac 8 i
+   jms octal; -6
+1:
+   law 012
+   jms putc
+   jms flush
+   jmp dtrace i
+
+ddisp: 0
+   jms dspinit
+   lac dspbp
+   dac 8
+   lac dp
+   sad olddp
+   skp
+   jms dspblk
+   lac pc
+   jms dspnt
+   lac sp
+   jms dspnt
+   lac lastv
+   jms dspnt
+   -1
+   dac B i
+   lac pbs i
+   sza
+   jmp .-2
+   jmp ddisp i
+
+dspblk: 0
+   lac dspbuf
+   dac 8
+   lac dp
+   dac t1
+   dzm t2
+1:
+   lac t1
+   sna
+   jmp 1f
+   lac o216000 " dx -20
+   dac 8 i
+   lac t2
+   tad o20
+   dac t2
+   lac t1
+   tad d1
+   dac t3
+   lac t3 i
+   jms dspnt
+   lac t1 i
+   dac t1
+   jmp 1b
+1:
+   lac o160020 " sx 20
+   tad t2
+   dac dspbuf i
+   dac 8 i
+   lac 8
+   dac dspbp
+   jmp dspblk i
+
+dspnt: 0
+   and o7777
+   lrss 2
+   xor o164000 " sy 0
+   dac 8 i
+   lac o17010
+   dac 8 i
+   jmp dspnt i
+
+dspinit: 0
+   -1
+   tad dspinit
+   dac dspinit
+   -300
+   tad lastv
+   dac lastv
+   dac dspbuf
+   -1
+   dac dspinit i
+   dac dspbuf i
+   dzm olddp
+   lac dspbuf
+   sys capt
+   law 13
+   sys sysloc
+   dac pbs
+   jmp dspinit i
+
+histog: 0
+   jms hisinit
+   lac pc
+   lrs 6
+   and o77
+   tad histbuf
+   dac t1
+   isz t1 i
+   jmp histog i
+   jmp .
+
+hisinit: 0
+   -1
+   tad hisinit
+   dac hisinit
+   -1
+   dac hisinit i
+   -64
+   dac t1
+   tad lastv
+   dac lastv
+   dac histbuf
+   tad dm1
+   dac 8
+1:
+   dsm 8 i
+   isz t1
+   jmp 1b
+   jmp hisinit i
+
+histbuf: 0
+olddp: 0
+dspbuf: 0
+dspbp: 0
+instr: 0
+obs: 0
+inslitr: n 5
+insasg: b 1
+o17: 017
+d8: 8
+o77: 077
+o10000: 010000
+d5: 5
+o60: 060
+o7777: 07777
+o216000: 0216000
+o160020: 0160020
+o20: 020
+o164000: 0164000
+o17010: 017010
+o17700: 017700
+d2: 2
+
+lacop: lac .
+   a>;b>;c>;f>;n>;s>;t>;u>;x>;y>
+
+badpc:
+   jms flush
+   lac d1
+   sys write; mpc; mpcs
+   jmp stop
+badsp:
+   jms flush
+   lac d1
+   sys write; msp; msps
+   jmp stop
+badasgn:
+   jms flush
+   lac d1
+   sys write; mas; mass
+   jmp stop
+mpc:
+   012;<pc>;012
+mpcs = .-mpc
+msp:
+   012;<sp>;012
+msps = .-msp
+mas:
+   012;<as>;012
+mass = .-mas
+
+octal: 0
+   lmq
+   lac d5
+   tad octal i
+   cma
+   dac 2f
+   sna
+   jmp 3f
+1:
+   llss 3
+   isz 2f
+   jmp 1b
+3:
+   lac octal i
+   dac 2f
+   lacq
+   dac 2f+1
+1:
+   lac 2f+1
+   lmq
+   ecla llss 3
+   tad o60
+   jms putc
+   lac 2f+1
+   alss 3
+   dac 2f+1
+   isz 2f
+   jmp 1b
+   isz octal
+   jmp octal i
+2: 0;0
diff --git a/bi.s b/bi.s
new file mode 100644 (file)
index 0000000..f8abd9d
--- /dev/null
+++ b/bi.s
@@ -0,0 +1,433 @@
+" bi
+
+start:
+   jms initio
+   -1
+   tad .main
+   dac pc
+
+fetch:
+   lac pc i
+   lmq
+   and o17777
+   dac addr
+   ecla lls 4
+   tad .+3
+   dac .+1
+   jmp .. i
+   jmp . i
+   autop; binop; consop; ifop; etcop; setop; traop
+   unaop; extop; aryop
+
+
+ifop:
+   -2
+   tad sp
+   dac sp
+   lac sp i
+   dac t1
+   lac t1 i
+   sza
+   jmp fetch
+   -1
+   tad addr i
+   dac pc
+   jmp fetch
+
+autop:
+   lac addr
+   tad dp
+   dac sp i
+   isz sp
+   isz sp
+   jmp fetch
+
+binop:
+   -2
+   tad sp
+   dac sp
+   tad dm1
+   dac t4
+   tad dm1
+   dac t3
+   lac t3 i
+   dac t1
+   lac sp i
+   dac t2
+   lac t4
+   dac t3 i
+   lac addr
+   tad .+3
+   dac .+1
+   jmp .. i
+   jmp . i
+   basg; bor; band; beq; bne; ble; blt; bge; bgt; brsh; blsh
+   badd; bmin; bmod; bmul; bdiv
+
+basg:
+   lac t2 i
+   dac t1 i
+   dac t4 i
+   jmp fetch
+
+bor:
+   lac t1 i
+   lmq
+   lac t2 i
+   omq
+   dac t4 i
+   jmp fetch
+
+band:
+   lac t1 i
+   and t2 i
+   dac t4 i
+   jmp fetch
+
+beq:
+   lac t1 i
+   xor t2 i
+   sna cla
+   lac d1
+   dac t4 i
+   jmp fetch
+
+bne:
+   lac t1 i
+   xor t2 i
+   sza
+   lac d1
+   dac t4 i
+   jmp fetch
+
+ble:
+   lac t2 i
+   cma
+   tad t1 i
+   spa cla
+   lac d1
+   dac t4 i
+   jmp fetch
+
+blt:
+   lac t1 i
+   cma
+   tad t2 i
+   sma cla
+   lac d1
+   dac t4 i
+   jmp fetch
+
+bge:
+   lac t1 i
+   cma
+   tad t2 i
+   spa cla
+   lac d1
+   dac t4 i
+   jmp fetch
+
+bgt:
+   lac t2 i
+   cma
+   tad t1 i
+   sma cla
+   lac d1
+   dac t4 i
+   jmp fetch
+
+brsh:
+blsh:
+   hlt
+
+badd:
+   lac t1 i
+   tad t2 i
+   dac t4 i
+   jmp fetch
+
+bmin:
+   lac t1 i
+   cma
+   tad t2 i
+   cma
+   dac t4 i
+   jmp fetch
+
+bmod:
+   lac t2 i
+   dac .+4
+   lac t1 i
+   cll; idiv; ..
+   dac t4 i
+   jmp fetch
+
+bmul:
+   lac t2 i
+   dac .+4
+   lac t1 i
+   cll; mul; ..
+   lacq
+   dac t4 i
+   jmp fetch
+
+bdiv:
+   lac t2 i
+   dac .+4
+   lac t1 i
+   cll; idiv; ..
+   lacq
+   dac t4 i
+   jmp fetch
+
+consop:
+   lac sp
+   tad d1
+   dac sp i
+   isz sp
+   lac addr
+   dac sp i
+   isz sp
+   jmp fetch
+
+etcop:
+   lac addr
+   tad .+3
+   dac .+1
+   jmp .. i
+   jmp . i
+   mcall; mark; call; vector; litrl; goto; retrn; escp
+
+mcall:
+   -2
+   tad sp
+   dac t1
+   lac t1 i
+   dac t2
+   -1
+   tad t2 i
+   lmq
+   lac dp
+   dac t1 i
+   lac t1
+   dac dp
+   isz t1
+   lac pc
+   dac t1 i
+   lacq
+   dac pc
+   jmp fetch
+
+mark:
+   -1
+   tad sp
+   dac t2
+   tad dm1
+   dac t1
+   lac t1 i
+   dac t3
+   lac t3 i
+   dac t2 i
+   lac ap
+   dac t1 i
+   lac t1
+   dac ap
+   jmp fetch
+
+call:
+   lac ap
+   tad d1
+   dac 8
+   dac 9
+1:
+   lac 8 i
+   dac t1
+   lac t1 i
+   dac 9 i
+   isz 8
+   -1
+   tad sp
+   sad 8
+   skp
+   jmp 1b
+   lac ap i
+   lmq
+   lac dp
+   dac ap i
+   lac ap
+   dac dp
+   isz ap
+   -1
+   tad ap i
+   dac t1
+   lac pc
+   dac ap i
+   lacq
+   dac ap
+   lac t1
+   dac pc
+   jmp fetch
+
+vector:
+   -2
+   tad sp
+   dac sp
+   tad dm2
+   dac t1
+   lac sp i
+   dac t2
+   lac t1 i
+   dac t3
+   lac t3 i
+   tad t2 i
+   dac t1 i
+   jmp fetch
+
+litrl:
+   lac sp
+   tad d1
+   dac sp i
+   isz sp
+   lac pc i
+   dac sp i
+   isz sp
+   jmp fetch
+
+goto:
+   -2
+   tad sp
+   dac sp
+   lac sp i
+   dac t1
+   -1
+   tad t1 i
+   dac pc
+   jmp fetch
+   
+retrn:
+   -2
+   tad sp
+   dac sp
+   lac sp i
+   dac t1
+   lac t1 i
+   lmq
+   lac dp
+   dac sp
+   dac t1
+   lac sp i
+   sna
+   jmp stop
+   dac dp
+   isz sp
+   lac sp
+   dac t1 i
+   lac sp i
+   dac pc
+   lacq
+   dac sp i
+   isz sp
+   jmp fetch
+
+escp:
+   law 2
+   tad pc
+   dac t1
+   jmp t1 i
+
+setop:
+   lac addr
+   tad dp
+   dac sp
+   jmp fetch
+
+traop:
+   -1
+   tad addr
+   dac pc
+   jmp fetch
+
+unaop:
+   -1
+   tad sp
+   dac t3
+   tad dm1
+   dac t2
+   lac t2 i
+   dac t1
+   lac t3
+   dac t2 i
+   lac addr
+   tad .+3
+   dac .+1
+   jmp .. i
+   jmp . i
+   uadr; umin; uind; unot
+
+uadr:
+   lac t1
+   dac t3 i
+   jmp fetch
+
+umin:
+   -1
+   tad t1 i
+   cma
+   dac t3 i
+   jmp fetch
+
+uind:
+   lac t1 i
+   dac t2 i
+   jmp fetch
+
+unot:
+   lac t1 i
+   sna cla
+   lac d1
+   dac t3 i
+   jmp fetch
+
+extop:
+   lac addr
+   dac sp i
+   isz sp
+   isz sp
+   jmp fetch
+
+aryop:
+   lac addr
+   tad dp
+   dac t1
+   tad d1
+   dac t1 i
+   jmp fetch
+
+a = 040000
+b = a+a
+c = b+a
+f = c+a
+n = f+a
+s = n+a
+t = s+a
+u = t+a
+x = u+a
+y = x+a
+
+d1: 1
+dm1: -1
+dm2: -2
+o17777: 017777
+
+t1: 0
+t2: 0
+t3: 0
+t4: 0
+addr: 0
+
+pc = 017
+
+sp: stack
+dp: stack
+ap: stack
+stack: 0
\ No newline at end of file
diff --git a/bl.s b/bl.s
new file mode 100644 (file)
index 0000000..598f175
--- /dev/null
+++ b/bl.s
@@ -0,0 +1,194 @@
+" bl\r
+\r
+jmp start\r
+\r
+.array: .+1\r
+   s 2\r
+   n 8\r
+   n 7\r
+   -1\r
+   tad sp i\r
+   cma\r
+   tad lastv\r
+   dac lastv\r
+   lmq\r
+   lac sp\r
+   tad d1\r
+   dac sp i\r
+   isz sp\r
+   lacq\r
+   dac sp i\r
+   isz sp\r
+   jmp fetch\r
+\r
+.read: .+1\r
+   s 2\r
+   n 8\r
+   n 7\r
+   lac sp\r
+   tad d1\r
+   dac sp i\r
+   isz sp\r
+   jms getc\r
+   dac sp i\r
+   isz sp\r
+   jmp fetch\r
+\r
+.write: .+1\r
+   s 2\r
+   n 8\r
+   n 7\r
+   lac sp i\r
+   dac t1\r
+   lrss 9\r
+   jms putc\r
+   lac t1\r
+   jms putc\r
+   jmp fetch\r
+\r
+.flush: .+1\r
+   n 8\r
+   n 7\r
+   jms flush\r
+   jmp fetch\r
+\r
+getc: 0\r
+   lac iflg\r
+   dzm iflg\r
+   sza\r
+   jmp getc i\r
+   lac cibufp\r
+   sad eibufp\r
+   jmp 1f\r
+   lac cibufp i\r
+   and o777\r
+   dac iflg\r
+   lac cibufp i\r
+   isz cibufp\r
+   lrss 9\r
+   jmp getc i\r
+1:\r
+   lac .fin\r
+   sys read; ibufp: ..; 64\r
+   sna spa\r
+   jmp 1f\r
+   tad ibufp\r
+   dac eibufp\r
+   lac ibufp\r
+   dac cibufp\r
+   jmp getc+1\r
+1:\r
+   lac o4\r
+   jmp getc i\r
+\r
+putc: 0\r
+   and o777\r
+   sna\r
+   jmp putc i\r
+   lmq\r
+   lac oflg\r
+   sza\r
+   jmp 1f\r
+   lacq\r
+   alss 9\r
+   dac cobufp i\r
+   dac oflg\r
+   jmp putc i\r
+1:\r
+   lac cobufp i\r
+   omq\r
+   dac cobufp i\r
+   dac cobufp i\r
+   dzm oflg\r
+   isz cobufp\r
+   lac cobufp\r
+   sad eobufp\r
+   skp\r
+   jmp putc i\r
+   lac .fout\r
+   sys write; obufp: ..; 64\r
+   lac obufp\r
+   dac cobufp\r
+   jmp putc i\r
+\r
+stop:\r
+   jms flush\r
+   las\r
+   sma\r
+   sys save\r
+   sys exit\r
+\r
+flush: 0\r
+   lac oflg\r
+   sza\r
+   isz cobufp\r
+   lac cobufp\r
+   cma\r
+   tad obufp\r
+   cma\r
+   sna\r
+   jmp flush i\r
+   dac 1f+1\r
+   lac obufp\r
+   dac 1f\r
+   lac .fout\r
+   sys write; 1: ..; ..\r
+   lac obufp\r
+   dac cobufp\r
+   dzm oflg\r
+   jmp flush i\r
+\r
+initio: 0\r
+   lac 017777 i\r
+   sad d4\r
+   jmp 2f\r
+   sad d8\r
+   jmp 1f\r
+\r
+   law 9\r
+   tad 017777\r
+   dac .+3\r
+   law 017\r
+   sys creat; ..\r
+   spa\r
+   jmp stop\r
+   dac .fout\r
+1:\r
+   law 5\r
+   tad 017777\r
+   dac .+2\r
+   sys open; ..; 0\r
+   spa\r
+   jmp stop\r
+   dac .fin\r
+2:\r
+   lac lastv\r
+   dac eibufp\r
+   dac cibufp\r
+   -64\r
+   tad lastv\r
+   dac lastv\r
+   dac ibufp\r
+   lac lastv\r
+   dac eobufp\r
+   -64\r
+   tad lastv\r
+   dac lastv\r
+   dac obufp\r
+   dac cobufp\r
+   dzm oflg\r
+   jmp initio i\r
+\r
+.fin: 0\r
+.fout: 1\r
+eibufp: 0\r
+cibufp: 0\r
+iflg: 0\r
+eobufp: 0\r
+cobufp: 0\r
+oflg: 0\r
+lastv: 017770\r
+\r
+o777: 0777\r
+d4:o4: 4\r
+d8: 8
\ No newline at end of file
diff --git a/cas.s b/cas.s
new file mode 100644 (file)
index 0000000..ed3c981
--- /dev/null
+++ b/cas.s
@@ -0,0 +1,1042 @@
+" cas
+
+   narg = i 017777
+
+   lac 017777
+   tad d5
+   dac name1
+   tad d4
+   dac name 2
+   lac narg
+   sad d4
+   jmp 1f
+   sad d8
+   jmp 2f
+   jmp 3f
+1:
+   law ttyout
+   dac name1
+2:
+   law ttyin
+   dac name2
+3:
+   sys open; name2: 0; 0
+   sma
+   jmp 1f
+   lac name2
+   dac 2f
+   lac d1
+   sys write; 2: 0; 4
+   lac d1
+   sys write; mes; 2
+   sys exit
+1:
+   sys open; name1: 0; 1
+   sma
+   jmp 1f
+   lac name1
+   dac 2f
+   lac o17
+   sys creat; 2: 0
+   sma
+   jmp 1f
+   lac name1
+   dac 2f
+   lac d1
+   sys write; 2: 0; 4
+   lac d1
+   sys write; mes; 2
+   sys exit
+mes:
+   040077;012
+1:
+   dzm nchar
+   dzm x
+   dzm y
+   dzm parflg
+   dzm nins
+   dzm nwds
+   lac bufp
+   dac 10
+
+advanc:
+   lac nchar
+   dzm nchar
+   sza
+   jmp adv1
+   lac d2
+   sys read; char; 1
+   sna
+   jmp done
+   lac char
+   and o777
+   dac nchar
+   lac char
+   lrss 9
+
+adv1:
+   sna
+   jmp advanc
+   dac char
+   lac labflg
+   sna
+   jmp 2f
+   lac char
+   sad o12
+   skp
+   jmp 1f
+   dzm labflg
+   dac i 11
+   jmp advanc
+1:
+   dac i 11
+   jmp advanc
+2:
+   lac parflg
+   sza
+   jmp atoz
+   lac char
+   sad o12
+   jmp advanc
+   sad o72
+   skp
+   jmp 1f
+   -4
+   dac labflg
+   dac mod3
+   jms wbuf "???
+   lac lbufp
+   dac 11
+   lac o170072
+   dac i 10
+   lac o12
+   dac i 10
+   lac o60
+   dac i 10
+   isz nwds
+   isz nwds
+   isz nwds
+   jmp advanc
+1:
+   sad o170
+   skp
+   jmp 1f
+   dzm vis
+   jmp advanc
+1:
+   sad o166
+   skp
+   jmp 1f
+   lac visbit
+   dac vis
+   jmp advanc
+1:
+   sad 0162
+   skp
+   jmp letr
+   isz mod3
+   skp
+   jmp 2f
+   lac o60060
+1:
+   dac i 10
+   isz nwds
+   isz mod3
+   jmp 1b
+2:
+   lac o12
+   dac i 10
+   isz nwds
+   lac lbufp
+   dac 11
+    1: "???
+   lac i 11
+   sad o12
+   jmp 1f
+   dac i 10
+   isz nwds
+   jmp 1b
+1:
+   lac o75170
+   dac i 10
+   isz nwds
+   lac ob1
+   dac i 10
+   isz nwds
+   lac sp
+   dac i 10
+   isz nwds
+   lac nins
+   dzm nins
+   tad o100
+   lmq
+   llss 10
+   cla
+   llss 3
+   alss 6
+   llss 3
+   tad o60060
+   dac i 10
+   cla
+   llss 3
+   alss 6
+   llss 3
+   tad o60060
+   dac i 10
+   cla
+   llss 3
+   alss 6
+   llss 3
+   tad o60060
+   dac i 10
+   lac nwds
+   tad d4
+   dac nwds
+   lac o12012
+   dac i 10
+   dzm x
+   dzm y
+   jmp advanc
+letr:
+   tad om141 "???
+   spa
+   jmp error
+   tad dm16
+   sma "???
+   jmp error
+   cma "???
+   tad dm3
+   dac ny
+   -1
+   dac parflg
+   jmp advanc
+
+atoz:
+   lac char
+   tad om141
+   spa
+   jmp error
+   tad dm14
+   sma
+   jmp error
+   tad d14
+   dac nx
+
+loop:
+   -1
+   tad x
+   cma
+   tad nx
+   dac delx
+   -1
+   tad y
+   cma
+   tad ny
+   dac dely
+   " generate direction
+
+   lac delx
+   sna
+   jmp c1
+   spa
+   jmp c2
+   lac dely  ;"dx ,gr, 0
+   sna
+   jmp c3
+   spa
+   jmp c4
+   lac d1
+   jmp b
+c3:
+   lac d2
+   jmp a
+c4:
+   lac d3
+   jmp b
+
+c1:
+   lac dely
+   sna
+   jmp out
+   spa
+   jmp c5
+   cla
+   jmp a
+c5:
+   lac d4
+   jmp a
+c2:
+   lac dely
+   sna
+   jmp c6
+   spa
+   jmp c7
+   lac d7
+   jmp b
+c6:
+   lac d6
+   jmp a
+c7:
+   lac d5
+   jmp b
+   "
+   "
+a:
+   dac direc
+   lac delx
+   sma
+   jmp 1f
+   cma
+   tad d1
+   dac delx
+1:
+   lac dely
+   sma
+   jmp 1f
+   cma
+   tad d1
+1:
+   tad dlex
+   tad dm4
+   sma
+   cla
+   tad d3
+   dac dist
+   tad incxp
+   dac tmp
+   lac i tmp
+   dac incx
+   lac dist
+   tad incyp
+   dac tmp
+   lac i tmp
+   dac incy
+   jmp com
+   "
+b:
+   dzm dist
+   dac direc
+   lac incxt
+   dac incx
+   lac incyt
+   dac incy
+   "
+com:
+   isz nins
+   lac dist
+   alss 4
+   xor vis
+   xor direc
+   isz mod3
+   skp
+   jmp 1f
+2:
+   lmq
+   llss 12
+   cla
+   llss 3
+   alss 6
+   llss 3
+   tad o60060
+   dac i 10
+   isz nwds
+   jmp 3f
+1:
+   dac tmp
+   lac o12060
+   dac i 10
+   isz nwds
+   -3
+   dac mod3
+   lac tmp
+   jmp 2b
+3:
+   lac direc
+   tad incx
+   dac tmp
+   lac i tmp
+   tad x
+   dac x
+   lac direc
+   tad incy
+   dac tmp
+   lac i tmp
+   tad y
+   dac y
+   jmp loop
+out:
+   lac nx
+   dac x
+   lac ny
+   dac y
+   dzm parflg
+   jmp advanc
+
+done:
+   lac d2
+   sys close
+   jms wbuf
+   lac d3
+   sys close
+   sys exit
+
+error:
+   lac d1
+   sys write; char; 1
+   lac d1
+   sys write; mes; 2
+   dzm parflg
+   dzm labflg
+   jmp advanc
+
+wbuf: 0
+   lac nwds
+   dac 1f
+   lac d3
+   sys write; buf; 1f: 0; "???
+   dzm nwds
+   lac bufp
+   dac 10
+   jmp i wbuf
+
+d1: 1
+d2: 2
+d3: 3
+d4: 4
+d5: 5
+d6: 6
+d7: 7
+d8: 8
+o12: 012
+o75170: 075170
+ob1: 055142
+
+sp: 053060
+o60: 060
+o60060: 060060
+o73: 073
+d6: 6 "seems like a dupe
+d14: 14
+dm14: -14
+dm16: -16
+om141: -0141 "???
+dm3: -3
+dm4: -4
+o162: 0162
+o166: 0166
+o17: 017
+o777: 0777
+o72: 072
+o170: 0170
+o10000: 010000
+o20000: 020000
+o200000: 0200000
+o41: 041
+ttyin:
+   0164164;0171151;0156040;040040
+ttyout:
+   0164164;0171157;0165164;040040
+
+char: .=.+1
+parflg: .=.+1
+labflg: .=.+1
+obuf: .=.+8
+x: .=.+1
+y: .=.+1
+nx: .=.+1
+ny: .=.+1
+vis: .=.+1
+nchar: .=.+1
+   "
+incxp:incxt
+incyp:incyt
+incxt: x1;x2;x3;x4
+incyt: y1;y2;y3;y4
+   "
+x1: 0;1;1;1;0;-1;-1;-1
+x2: 0;2;2;2;0;-2;-2;-2
+x3: 0;3;3;3;0;-3;-3;-3
+x4: 0;4;4;4;0;-4;-4;-4
+y1: 1;1;0;-1;-1;-1;0;1
+y2: 2;2;0;-2;-2;-2;0;2
+y3: 3;3;0;-3;-3;-3;0;3
+y4: 4;4;0;-4;-4;-4;0;4
+delx: .=.+1
+dely: .=.+1
+incx: .=.+1
+incy: .=.+1
+direc: .=.+1
+dist: .=.+1
+visbit: 010
+mod3: .=.+1
+tmp: .=.+1
+buf: .=.+500
+bufp: buf-1
+lbuf: .=.+10
+lpbufp: lbuf-1
+nwds: .=.+1
+o1770072: 0170072
+nins: .=.+1
+o100: 0100
+o12012: 012012
+o12060: 012060
+
+
+
+
+
+:ca
+v
+af
+nl "???
+x
+hd
+v
+hi
+x
+mn
+r
+
+:cb
+x
+ga
+v
+gi
+ik
+kk
+mi "???
+ma
+aa
+ai
+ck
+ek
+gi
+x
+mn
+r
+
+:cc
+x
+kk
+v
+mi "???
+mc
+ka
+ca
+ac
+ai
+dl
+x
+mn
+r
+
+:cd
+v
+aa
+ai
+ck
+kk
+mi
+ma
+x
+mn
+r
+
+:ce
+x
+mk
+v
+ma
+aa
+ak
+x
+gh
+v
+ga
+x
+mn
+r
+
+:cf
+v
+aa
+ak
+x
+gh
+v
+ga
+x
+mn
+r
+
+:cg
+x
+gf
+v
+gk
+nk
+x
+kk
+v
+mi
+mc
+ka
+ca
+ac
+ai
+dl
+x
+mn
+r
+
+:ch
+x
+aa
+v
+na
+x
+gb "???
+v
+gk
+x
+ak
+v
+nk
+x
+mn
+r
+
+:ci
+x
+md
+v
+mi
+x
+lf
+v
+af
+x
+ad
+v
+ai
+x
+mn
+r
+
+:cj
+x
+ka
+v
+mc
+mg
+ki
+ai "???
+x
+ag
+v
+al "???
+x
+mn
+r
+
+:ck
+x
+aa
+v
+na
+x
+ak
+v
+ia
+x
+mk
+v
+fe
+x
+mn
+r
+
+:cl
+x
+aa
+v
+ma
+mk
+x
+mn
+r
+
+:cm
+v
+aa
+hf
+ak
+nk
+x
+mn
+r
+
+:cn
+x
+ak
+v
+mk
+aa
+na
+x
+mn
+r
+
+:co
+x "???
+ai
+v
+ch
+ei
+ck
+ai
+ac
+ca
+ka
+mc "???
+mi
+kk
+ck
+x
+mn
+r
+
+:cp
+v
+aa
+ai
+ck
+ek
+gi
+ga
+x
+mn
+r
+
+:cq
+x
+mc
+v
+ka
+ca
+ac
+ai
+ck
+kk
+mi
+mc
+x
+jh
+v
+nl
+x
+mn
+r
+
+:cr
+v
+aa
+ai
+ck
+ek
+gi
+ga
+x
+mk
+v
+gf
+x
+mn
+r
+
+:cs
+x
+ka
+v
+mc
+mi
+kk
+ik
+gi
+gc
+ea
+ca
+ac
+ai
+dl
+x
+mn
+r
+
+:ct
+x
+aa
+v
+al
+x
+mf
+v
+af
+x
+mn
+r
+
+:cu
+x
+aa
+v
+ka
+mc
+ml "???
+kk
+x
+ak
+v
+lk
+x
+mn
+r
+
+:cv
+x
+aa
+v
+mf
+x
+ak
+v
+mf
+x
+mn
+r
+
+:cw
+x
+aa
+v
+mc
+af
+x
+ak
+v
+mi
+af
+x
+mn
+r
+
+:cx
+v
+gf
+x
+ak
+v
+gf
+x
+aa
+v
+nl
+x
+mn
+r
+
+:cy
+x
+aa
+v
+if
+x
+ak
+v
+if
+nf
+x
+mn
+r
+
+:cz
+x
+aa
+v
+ak
+ma
+ml
+x
+mn
+r
+
+:c0
+x
+ck
+v
+ai
+ac
+ca
+ka
+mc
+mi
+kk
+ck
+x
+mn
+r
+
+:c1
+x
+ce
+v
+af
+mf
+x
+md
+v
+mi
+x
+mn
+r
+
+:c2
+x
+ca
+v
+ac
+ai
+ck
+ek
+gi
+gc
+ia
+ma
+ml "???
+mc
+mi
+kk
+hk
+fi
+fc
+ha
+x
+mn
+r
+
+:c7
+x
+aa
+v
+ak
+nb
+x
+mn
+r
+
+:c8
+x
+gc
+v
+ea
+ca
+ac
+ai
+ck
+ek
+gi
+gc
+ia
+ka
+mc
+mi
+kk
+ik
+gi
+x
+mn
+r
+
+:c9
+x
+ka
+v
+mc
+mi
+kk
+ck
+ai
+ac
+ca
+fa
+hc
+hi
+fk
+x
+mn
+x
+mn
+r
+
+:c3
+x
+aa
+v
+ak
+fe
+fi
+hk
+kk
+mi
+mc
+x
+ka
+v
+nd
+x
+mn
+r
+
+:c4
+x
+mh
+v
+ah
+ia
+ll
+x
+mn
+r
+
+:c5
+x
+ak
+v
+aa
+fa
+fi
+hk
+kk
+mi
+mc
+x
+ka
+v
+nd
+x
+mn
+r
+
+:c6
+x
+ck
+v
+ai
+ac
+ca
+ka
+
+" The end of file seems abrupt, every other :cX section ends with:
+" x
+" mn
+" r
diff --git a/cat.s b/cat.s
new file mode 100644 (file)
index 0000000..6748efe
--- /dev/null
+++ b/cat.s
@@ -0,0 +1,145 @@
+" cat
+
+   lac 017777 i
+   sad d4
+   jmp nofiles
+   lac 017777
+   tad d1
+   tad d4
+   dac name
+
+loop:
+   sys open; name: 0; 0
+   spa
+   jmp badfile
+   dac fi
+
+1:
+   jms getc
+   sad o4
+   jmp 1f
+   jms putc
+   jmp 1b
+
+1:
+   lac fi
+   sys close
+
+loop1:
+   -4
+   tad 017777 i
+   dac 017777 i
+   sad d4
+   jmp done
+   lac name
+   tad d4
+   dac name
+   jmp loop
+
+badfile:
+   lac name
+   dac 1f
+   lac d8
+   sys write; 1:0; 4
+   lac d8
+   sys write; 1f; 2
+   jmp loop1
+
+1: 040;077012
+nofiles:
+   lac d8
+   sys write; 1f; 5
+   sys exit
+
+1: <no>; 040;  <fi>;<le>;<s 012
+
+done:
+   lac noc
+   sns
+   sys exit
+   and d1
+   sna cla
+   jmp 1f
+   jms putc
+   jmp done
+1:
+   lac noc
+   rcr
+   dac 1f
+   lac fo
+   sys write; iopt+1; 1:..
+   sys exit
+
+getc: 0
+   lac ipt
+   sad eipt
+   jmp 1f
+   dac 2f
+   add o400000
+   dac ipt
+   ral
+   lac 2f i
+   szl
+   lrss 9
+   and o177
+   sna
+   jmp getc+1
+   jmp getc i
+1:
+   lac fi
+   sys read; iipt+1; 64
+   sna
+   jmp 1f
+   tad iipt
+   dac eipt
+   lac iipt
+   dac ipt
+   jmp getc+1
+1:
+   lac o4
+   jmp getc i
+
+putc: 0
+   and o177
+   dac 2f+1
+   lac opt
+   dac 2f
+   add o400000
+   dac opt
+   spa
+   jmp 1f
+   lac 2f i
+   xor 2f+1
+   jmp 3f
+1:
+   lac 2f+1
+   alss 9
+3:
+   dac 2f i
+   isz noc
+   lac noc
+   sad d128
+   skp
+   jmp putc i
+   lac fo
+   sys write; iopt+1; 64
+   lac iopt
+   dac opt
+   dzm noc
+   jmp putc i
+2: 0;0
+ipt: 0
+eipt: 0
+iipt: .+1; .=.+64
+fi: 0
+opt: .+2
+iopt: .+1; .=.+64
+noc: 0
+fo: 1
+
+d1: 1
+o4:d4: 4
+d8: 8
+o400000: 0400000
+o177: 0177
+d128: 128
diff --git a/check.s b/check.s
new file mode 100644 (file)
index 0000000..8cda452
--- /dev/null
+++ b/check.s
@@ -0,0 +1,324 @@
+" check
+
+lac d1
+sys sysloc
+dac iget
+
+lac d2
+sys sysloc
+dac inode
+
+lac d4
+sys sysloc
+dac nxfblk
+tad d1
+dac nfblks
+tad d1
+dac fblks
+
+lac d5
+sys sysloc
+dac copy
+
+lac d6
+sys sysloc
+dac copyz
+
+lac d7
+sys sysloc
+dac betwen
+
+lac d8
+sys sysloc
+dac dskrd
+
+lac d10
+sys sysloc
+dac dskbuf
+dac dskbuf1
+
+   dzm indircnt
+   dzm icnt
+   dzm licnt
+   dzm blcnt
+   dzm curi
+   jms copyz i; usetab; 500
+
+iloop:
+   isz curi
+   -3400
+   tad curi
+   sma
+   jmp part2
+   lac curi
+   jms iget i
+   jms copy i; inode: 0; linode; 12
+   lac iflags
+   sma
+   jmp iloop
+   isz icnt
+   lac iflags
+   and o40
+   sza
+   jmp iloop
+   law idskps
+   dac t1
+   -7
+   dac t2
+1:
+   lac i t1
+   sza
+   jms dupcheck
+   isz t1
+   isz t2
+   jmp 1b
+   lac iflags
+   and o200000
+   sna
+   jmp iloop
+
+   isz licnt
+   law idskps
+   dac t1
+   -7
+   dac t2
+1:
+   lac i t1
+   sna
+   jmp 3f
+   jms dskrd i
+   jms copy i; dskbuf: 0; ldskbuf; 64
+   isz indircnt
+   law ldskbuf
+   dac t3
+   -64
+   dac t4
+2:
+   lac i t3
+   sza
+   jms dupcheck
+   isz t3
+   isz t4
+   jmp 2b
+3:
+   isz t1
+   isz t2
+   jmp 1b
+   jmp iloop
+
+dupcheck: 0
+   isz blcnt
+   jms betwen i; d709; d6400
+   jmp badadr
+   dac t5
+   lrss 4
+   tad usetabp
+   dac t6
+   cla
+   llss 4
+   tad alsscom
+   dac 2f
+   lac d1
+2: alss 0
+   dac bit
+   lac i t6
+   and bit
+   sza
+   jmp dup
+   lac i t6
+   xor bit
+   dac i t6
+   jmp i dupcheck
+
+badadr:
+   jms print
+   lac d1
+   sys write; badmes; 3
+   jmp i dupcheck
+badmes:
+   < b>;<ad>;<r 012
+
+dup:
+   lac t5
+   jms print
+   lac d1
+   sys write; dupmes; 3
+   lac curi
+   jms print
+   lac d1
+   sys write; dupmes+3; 1
+   jmp i dupcheck
+dupmes:
+   < d>;<up>; 040; 012
+
+print: 0
+   lmq
+   law prbuf-1
+   dac 8
+   -6
+   dac t6
+1:
+   cla
+   llss 3
+   tad o60
+   dac i 8
+   isz t6
+   jmp 1b
+   lac d1
+   sys write; prbuf; 6
+   jmp i print
+
+part2:
+   lac icnt
+   jmp print
+   lac d1
+   sys write; m3; m3s
+   lac licnt
+   jms print
+   lac d1
+   sys write; m4; m4s
+   lac indircnt
+   jms print
+   lac d1
+   sys write; m5; m5s
+   lac blcnt
+   jms print
+   lac d1
+   sys write; m6; m6s
+   dzm blcnt
+
+   -1
+   tad nfblks i
+   cma
+   sma
+   jmp 2f
+   dac t1
+   lac fblks
+   dac t2
+1:
+   lac i t2
+   jms dupcheck
+   isz t2
+   isz t1
+   jmp 1b
+
+2:
+   lac nxfblk i
+1:
+   sna
+   jmp part3
+   dac t1
+   jms dupcheck
+   lac t1
+   jms dskrd i
+   jms copy i; dskbuf1: 0; ldskbuf; 64
+   law ldskbuf
+   dac t1
+   -9
+   dac t2
+2:
+   isz t1
+   lac i t1
+   jms dupcheck
+   isz t2
+   jmp 2b
+   lac ldskbuf
+   jmp 1b
+
+part3:
+   lac blcnt
+   jms print
+   lac d1
+   sys write; m7; m7s
+   lac d709
+   dac t1
+1:
+   isz t1
+   lac t1
+   sad d6400
+   sys exit
+   lrss 4
+   tad usetabp
+   dac t2
+   cla
+   llss 4
+   tad alsscom
+   dac 2f
+   lac d1
+2: alss 0
+   dac bit
+   lac i t2
+   and bit
+   sza
+   jmp 1b
+   lac t1
+   jms print
+   lac d1
+   sys write; m8; m8s
+   jmp 1b
+
+d1: 1
+d2: 2
+d4: 4
+d5: 5
+d6: 6
+d7: 7
+d8: 8
+d10: 10
+o60: 060
+o400000: 0400000
+o400001: 0400001
+o40: 040
+o200000: 0200000
+alsscom: alss 0
+d709: 709
+d6400: 6400
+
+m3:
+   040;<fi>;<le>;<s 012
+m3s = .-m3
+m4:
+   040;<la>;<rg>;<e 012
+m4s = .-m4
+m5:
+   040;<in>;<di>;<r 012
+m5s = .-m5
+m6:
+   040;<us>;<ed>;012
+m6s = .-m6
+m7:
+   040;<fr>;<ee>;012
+m7s = .-m7
+m8:
+   040;<mi>;<ss>;<in>;<g 012
+m8s = .-m8
+
+usetabp: usetab
+curi: 0
+bit: 0
+blcnt: 0
+indircnt: 0
+icnt: 0
+licnt: 0
+t1: 0
+t2: 0
+t3: 0
+t4: 0
+t5: 0
+t6: 0
+
+iget: 0
+nxfblk: 0
+nfblks: 0
+fblks: 0
+copy: 0
+copyz: 0
+betwen: 0
+dskrd: 0
+
+ldskbuf: .=.+64
+linode: .=.+12
+iflags = linode
+idskps = iflags+1
+usetab: .=.+500
+prbuf: .=.+6
\ No newline at end of file
diff --git a/chmod.s b/chmod.s
new file mode 100644 (file)
index 0000000..6748186
--- /dev/null
+++ b/chmod.s
@@ -0,0 +1,77 @@
+" chmode
+
+   lac 017777 i
+   sad d4
+   jmp error
+
+   lac 017777
+   tad d4
+   dac 8
+   tad d1
+   dac name
+   dzm octal
+   dzm nchar
+   -8
+   dac c1
+1:
+   lac nchar
+   dzm nchar
+   sza
+   jmp 2f
+   lac 8 i
+   lmq
+   and o177
+   dac nchar
+   lacq
+   lrss 9
+2:
+   sad o40
+   jmp 3f
+   tad om60
+   lmq
+   lac octal
+   cll; als 3
+   omq
+   dac octal
+3:
+   isz c1
+   jmp 1b
+
+loop:
+   lac 017777 i
+   sad d8
+   sys exit
+   tad dm4
+   dac 017777 i
+   lac name
+   tad d4
+   dac name
+   lac octal
+   sys chmode; name:0
+   sma
+   jmp loop
+   lac name
+   dac 1f
+   lac d1
+   sys write; 1:0; 4
+   lac d1
+   sys write; 1f; 2
+   jmp loop
+1:
+   040;077012
+error:
+   lac d1
+   sys write; 1b+1; 1
+   sys exit
+
+om60: -060
+o40: 040
+d1: 1
+d8: 8
+dm4: -4
+d4: 4
+o177: 0177
+
+nchar: .=.+1
+c1: .=.+1
+octal: .=.+1
\ No newline at end of file
diff --git a/chown.s b/chown.s
new file mode 100644 (file)
index 0000000..80fb8aa
--- /dev/null
+++ b/chown.s
@@ -0,0 +1,78 @@
+" chowner
+
+   lac 017777 i
+   sad d4
+   jmp error
+
+   lac 017777
+   tad d4
+   dac 8
+   tad d1
+   dac name
+   dzm octal
+   dzm nchar
+   -8
+   dac c1
+1:
+   lac nchar
+   dzm nchar
+   sza
+   jmp 2f
+   lac 8 i
+   lmq
+   and o177
+   dac nchar
+   lacq
+   lrss 9
+2:
+   sad o40
+   jmp 3f
+   tad om60
+   lmq
+   lac octal
+   cll; als 3
+   omq
+   dac octal
+3:
+   isz c1
+   jmp 1b
+
+loop:
+   lac 017777 i
+   sad d8
+   sys exit
+   tad dm4
+   dac 017777 i
+   lac name
+   tad d4
+   dac name
+   lac octal
+   sys chowner; name:0
+   sma
+   jmp loop
+   lac name
+   dac 1f
+   lac d1
+   sys write; 1:0; 4
+   lac d1
+   sys write; 1f; 2
+   jmp loop
+1:
+   040;077012
+
+error:
+   lac d1
+   sys write; 1b+1; 1
+   sys exit
+
+om60: -060
+o40: 040
+d1: 1
+d8: 8
+dm4: -4
+d4: 4
+o177: 0177
+
+nchar: .=.+1
+c1: .=.+1
+octal: .=.+1
\ No newline at end of file
diff --git a/chrm.s b/chrm.s
new file mode 100644 (file)
index 0000000..5f5cab3
--- /dev/null
+++ b/chrm.s
@@ -0,0 +1,41 @@
+" chrm
+
+   lac 017777
+   tad d5
+   dac 1f
+   dac 2f
+   lac 017777 i
+   sad d4
+   sys exit
+   tad dm4
+   dac 017777 i
+   sys chdir; dd
+   sys chdir; 1;0
+1:
+   lac 017777 i
+   sad d4
+   sys exit
+   tad dm4
+   dac 017777 i
+   lac 2f
+   tad d4
+   dac 2f
+   sys unlink; 2:0
+   sma
+   jmp 1b
+   lac 2b
+   dac 2f
+   lac d1
+   sys write; 2:0; 4
+   lac d1
+   sys write; 1f; 2
+   jmp 1b
+1:
+   040077;012000
+
+dd:
+   <dd>;040040;040040;040040
+d1: 1
+d4: 4
+d5: 5
+dm4: -4
\ No newline at end of file
diff --git a/cp.s b/cp.s
new file mode 100644 (file)
index 0000000..a77f91b
--- /dev/null
+++ b/cp.s
@@ -0,0 +1,97 @@
+" cp
+
+   lac 017777
+   tad d1
+   dac name2
+loop:
+   lac 017777 i
+   sad d4
+   sys exit
+   sad d8
+   jmp unbal
+   tad dm8
+   dac 017777 i
+   lac name2
+   tad d4
+   dac name1
+   tad d4
+   dac name2
+   sys open; name1: 0; 0
+   spa
+   jmp error
+   lac o17
+   sys creat; name2: 0
+   spa
+   jmp error
+   dzm nin
+
+1:
+   lac bufp
+   tad nin
+   dac 0f
+   -1
+   tad nin
+   cma
+   tad d1024
+   dac 0f+1
+   lac d2
+   sys read; 0:..;..
+   sna
+   jmp 2f
+   tad nin
+   dac nin
+   sad d1024
+   jmp 2f
+   jmp 1b
+2:
+   lac nin
+   dac 2f
+   lac d3
+   sys write; buf; 2: 0
+   dzm nin
+   lac 2b
+   sad d1024
+   jmp 1b
+   lac d2
+   sys close
+   lac d3
+   sys close
+   jmp loop
+error:
+   lac name1
+   dac 1f
+   lac d1
+   sys write; 1: 0; 4
+   lac d1
+   sys write; mes; 1
+   lac name2
+   dac 1f
+   lac d1
+   sys write; 1: 0; 4
+   lac d1
+   sys write; mes; 2
+   jmp loop
+mes:
+   040000;077012
+unbal:
+   lac name2
+   tad d4
+   dac 1f
+   lac d1
+   sys write; 1: 0; 4
+   lac d1
+   sys write; mes; 2
+   sys exit
+
+d1: 1
+d4: 4
+d8: 8
+o17: 017
+dm8: -8
+d3: 3
+d1024: 1024
+nin: 0
+bufp: buf
+d2: 2
+
+buf:
\ No newline at end of file
diff --git a/db.s b/db.s
new file mode 100644 (file)
index 0000000..41096bf
--- /dev/null
+++ b/db.s
@@ -0,0 +1,1217 @@
+" db
+
+   narg = ..+07777
+   lac i narg
+   sad d4
+   jmp start
+   lac narg
+   tad d5
+   dac rcorep
+   dac wcorep
+   lac i narg
+   sad d8
+   jmp start
+   sad d12
+   skp
+   jmp error
+   lac narg
+   tad d9
+   dac nlnamep
+   "
+start:
+   lac nlbufp
+   cma
+   tad o17777
+   cll
+   idiv
+   6
+   cll
+   lacq
+   mul
+   6
+   lacq
+   dac namesize
+   sys open; nlnamep: nlname; 0
+   dac symindex
+   sma
+   jmp 1f
+2:
+   dzm nlcnt
+   lac nlbufp
+   dac nlsize
+   jmp 3f
+1:
+   sys read; nlbuff; namesize:0
+   spa
+   jmp 2b
+   dac nlcnt
+   tad nlbufp
+   dac nlsize
+3:
+   lac symindex
+   sys close
+   sys open
+wcorep: corename; 1
+   dac wcore
+   sys open; rcorep: corename; 0
+   dac rcore
+   spa
+   jmp error
+   "
+   lac o52012
+   jms wchar
+   law dotdot
+   dac nsearch
+   jms nlsearch
+   jmp mloop
+   lac value
+   dac relocval
+   cma
+   tad d1
+   dac mrelocv
+   dzm sysflag
+mloop:
+   -1
+   dac nwords
+ml1:
+   jms rch
+   dac nchar1
+   sad o52
+   skp
+   jmp 1f
+   dzm nchar1
+   dac indflg
+1:
+   jms getexp
+   lac errf
+   sna
+   jmp cmd
+error:
+   dzm indflg
+   lac o40
+   dac rator
+   dzm errf
+   lac d1
+   sys write; errmes; 1
+   jmp mloop
+cmd:
+   lacq
+   sad o41
+   jmp patch
+   lac opfound
+   sna
+   jmp 1f
+   lac comflg
+   dzm comflg
+   sza
+   jmp 1f
+   lac curval
+   dac curdot
+   lac curreloc
+   dac dotrel
+1:
+   lacq
+   sad o42
+   jmp ascii
+   sad o12
+   jmp newln
+   sad o77
+   jmp symbol
+   sad o47
+   jmp saddress
+   sad o75
+   jmp address
+   sad o57
+   jmp octal
+   sad o72
+   jmp decimal
+   sad o136
+   skp
+   jmp 1f
+   dac sysflag
+   jmp mloop
+1:
+   sad o45
+   skp
+   jmp 1f
+   dzm sysflag
+   jmp mloop
+1:
+   sad d1
+   sys exit
+   sad o54
+   skp
+   jmp error
+   " comma
+   jms getexp
+   lac errf
+   sza
+   jmp error
+   law
+   dac comflg
+   lac curreloc
+   sza
+   jmp 1f
+   lac value
+   cma
+   dac nwords
+   jmp cmd
+1:
+   lac reldot
+   sna
+   jmp error
+   lac curval
+   cma
+   tad curdot
+   sma
+   jmp error
+   dac nwords
+   jmp cmd
+   "
+saddress:
+   lac curdot
+   dac 9f
+   dzm curdot
+   lac reldot
+   sza
+   lac relocval
+   tad 9f
+   jms prsym
+   lac o12
+   jms wchar
+   lac 9f
+   dac curdot
+   jmp mloop
+9:0
+   "
+symbol:
+   law prsym
+   dac type
+   jmp print
+   "
+octal:
+   law proct
+   dac type
+   jmp print
+   "
+ascii:
+   law prasc
+   dac type
+   jmp print
+   "
+decimal:
+   law prdec
+   dac type
+   jmp print
+   "
+address:
+   lac curdot
+   jms octw
+   5
+   lac curreloc
+   sza
+   jmp 1f
+   lac o12
+   jms wchar
+   jmp mloop
+1:
+   lac o162012
+   jms wchar
+   jmp mloop
+   "
+print:
+   lac sysflag
+   sza
+   jmp 2f
+   lac reldot
+   sza
+   jmp 1f
+   lac curdot
+   dac addr
+   jmp sprint
+2:
+   lac curdot
+   dac addr
+   jmp sprint
+1:
+   law inbuf
+   dac addr
+   lac curdot
+   dac 1f
+   lac rcore
+   sys seek; 1:0; 0
+   spa
+   jmp error
+   lac rcore
+   sys read; inbuf; 64
+   spa
+   jmp error
+   sna
+   jmp error
+   "
+sprint:
+   lac indflg
+   sna
+   jmp 2f
+   dzm indflg
+   lac i addr
+   and o17777
+   dac curdot
+   dzm reldot
+   tad mrelocv
+   spa
+   jmp print
+   dac curdot
+   lac d1
+   dac reldot
+   jmp print
+   "
+2:
+   lac o40
+   jms wchar
+   lac addr
+   dac 3f
+   lac i addr
+   jms i type
+   lac 3f
+   dac addr
+   isz addr
+   law prasc
+   sad type
+   jmp 1f
+   lac nl
+   jms wchar
+1:
+   isz nwords
+   jmp 1f
+   law prasc
+   sad type
+   skp
+   jmp mloop
+   lac nl
+   jms wchar
+   jmp mloop
+1:
+   isz curdot
+   nop
+   lac nwords
+   spa
+   jmp print
+   jmp 2b
+3:0
+   "
+prdec:     "temp
+proct:0
+   jms octw
+   6
+   jmp i proct
+   "
+patch:
+   lac opfound
+   sna
+   jmp error
+   lac curreloc
+   sna
+   jmp 1f
+   lac curval
+   tad relocval
+   skp
+1:
+   lac curval
+   dac inbuf
+   lac sysflag
+   sna
+   jmp 1f
+   lac inbuf
+   dac i curdot
+   jmp bump
+1:
+   lac reldot
+   sna
+   jmp error
+   lac curdot
+   dac 2f
+   lac wcore
+   spa
+   jmp error
+   sys seek; 2:0; 0
+   spa
+   jmp error
+   lac wcore
+   sys write; inbuf; 1
+   spa
+   jmp error
+bump:
+   -1
+   dac nwords
+   isz curdot
+   jmp print
+   "
+newln:
+   lac opfound
+   sna
+   jmp bump
+   jmp print
+   "
+getexp:0
+   dzm errf
+   lac o40
+   dac rator
+   dzm curval
+   dzm curreloc
+   dzm reloc
+   dzm value
+   dzm opfound
+xloop:
+   jms rch
+   lmq
+   sad o44
+   skp
+   jmp 1f
+   jms getspec
+   jms oprand
+   jmp xloop
+1:
+   tad om60
+   spa
+   jmp 1f
+   tad om10
+   sma
+   jmp 1f
+   lacq
+   jms getnum  " ??? getnur
+   jms oprand
+   jmp xloop
+1:
+   lacq
+   sad o56
+   jmp 1f
+   tad om141
+   spa
+   jmp 2f
+   tad om32
+   sma
+   jmp 2f
+1:
+   lacq
+   jms getsym
+   jms oprand
+   jmp xloop
+2:
+   lacq
+   tad om101
+   spa
+   jmp 1f
+   tad om32
+   spa
+   jmp 1b
+1:
+   lacq
+   sad o74
+   skp
+   jmp 1f
+   jms rch
+   alss 9
+   dac value
+   dzm reloc
+   jms oprand
+   jmp xloop
+1:
+   sad o40
+   jmp xloop
+   sad o55 "-
+   skp
+   jmp 1f
+2:
+   lac o40
+   sad rator
+   skp
+   jmp error
+   lacq
+   dac rator
+   jmp xloop
+1:
+   sad o53 "+
+   jmp 2b
+   lac curreloc
+   sna
+   jmp 1f
+   sad d1
+   skp
+   dac errf
+1:
+   lac o40
+   sad rator
+   jmp i getexp
+   dac errf
+   jmp i getexp
+   "
+getspec: 0
+      jms rch
+      sad o141
+      jmp spcac
+      sad o161 "q
+      jmp spcmq
+      sad o151 "i
+      jmp spcic
+      lmq
+      tad om60
+      spa
+      jmp 2f
+      tad om10
+      sma
+      jmp 2f
+      lacq
+      jms getnum
+      jmp spcai
+2:
+      law
+      dac errf
+      jmp getspec i
+spcac:
+      cla
+      jmp 1f
+spcmq:
+      lac d1
+      jmp 1f
+spcic:
+      lac d10
+      jmp 1f
+spcai:
+      lac value
+      tad dm6
+
+1:
+      tad o10000
+      dac value
+      lac d1
+      dac reloc
+      jmp i getspec
+   "
+getsym:0
+   lmq
+   law symbuf
+   dac symbufp
+   dzm symbuf
+   -8
+   dac symcnt
+   dzm nchar1
+   lac nopcom
+   dac skipt
+   skp
+storech:
+   lmq
+   lac i symbufp
+   and o177000
+   sna
+   jmp 1f
+   omq
+   dac i symbufp
+   isz symbufp
+   dzm i symbufp
+   jmp 2f
+1:
+   llss 27
+   dac i symbufp
+   "
+2:
+   isz symcnt
+   skp
+   jmp endsym
+skipt:
+   nop " or jmp fill
+   jms rch
+   sad o76
+   skp
+   jmp 1f
+   lac symbuf
+   lrss 9
+   and o177
+   dac value
+   dzm reloc
+   jmp i getsym
+1:
+   sad o56
+   jmp storech
+   dac nchar1
+   tad om60
+   spa
+   jmp fill
+   tad m10
+   spa
+   jmp 2f
+   lac nchar1
+   tad om141
+   spa
+   jmp 1f
+   tad om32
+   spa
+   jmp 2f
+1:
+   lac nchar1
+   tad om101
+   spa
+   jmp fill
+   tad om32
+   sma
+   jmp fill
+2:
+   lac nchar1
+   dzm nchar1
+   jmp storech
+   "
+fill:
+   lac trafill
+   dac skipt
+   lac o40
+   jmp storech
+   "
+endsym:
+   lac symbuf
+   sad o56040
+   jmp dotsym
+   law symbuf
+   dac nsearch
+   jms nlsearch
+   jmp undef
+   dzm nsearch
+   jmp i getsym
+   "
+dotsym:
+   lac curdot
+   dac value
+   lac dotrel
+   dac reloc
+   jmp i getsym
+   "
+undef:
+   dzm nsearch
+   law
+   dac errf
+   jmp i getsym
+   "
+getnum:0
+   dzm reloc
+   dzm value
+num1:
+   tad om60
+   lmq
+   lac value
+   alss 3
+   omq
+   dac value
+   jms rch
+   dac nchar1
+   sad o162
+   jmp nrel
+   tad om60
+   spa
+   jmp i getnum
+   tad om10
+   sma
+   jmp i getnum
+   lac nchar1
+   dzm nchar1
+   jmp num1
+nrel:
+   dzm nchar1
+   lac d1
+   dac reloc
+   jmp i getnum
+   "
+oprand:0
+   lac rator
+   sad o53
+   jmp opplus
+   sad o40
+   jmp opor
+   sad o55
+   jmp opminus
+opplus:
+   lac value
+   tad curval
+   dac curval
+1:
+   lac curreloc
+   tad reloc
+   dac curreloc
+   jmp retop
+   "
+opor:
+   lac value
+   lmq
+   lac curval
+   omq
+   dac curval
+   jmp 1b
+   "
+opminus:
+   lac curval
+   cma
+   tad value
+   cma
+   dac curval
+   lac reloc
+   cma
+   tad d1
+   tad curreloc
+   dac curreloc
+retop:
+   lac o40
+   dac rator
+   dac opfound
+   jmp i oprand
+   "
+prasc:0
+   jms wchar
+   jmp i prasc
+   "
+prsym:0
+   dac word
+   dzm relflg
+   dzm relocflg
+   dzm nsearch
+   and o760000
+   sad o760000
+   jmp plaw
+   sad o20000
+   jmp pcal
+   and o740000
+   sad o640000
+   jmp peae
+   sad o740000
+   jmp popr
+   sad o700000
+   jmp piot
+   sna
+   jmp poct
+   jms nlsearch
+   jmp poct
+   jms wrname
+   lac o40
+   jms wchar
+   lac word
+   and o20000
+   sna
+   jmp 1f
+   lac o151040
+   jms wchar
+   lac word
+   xor o20000
+   dac word
+1:
+symadr:
+   lac d1
+   dac relflg
+   dac relocflg
+   lac word
+   and o17777
+   tad mrelocv
+   sma
+   jmp 1f
+   tad relocval
+   dzm relocflg
+1:
+pradr:
+   dac addr
+   jms nlsearch
+   jmp octala
+pr1:
+   dzm relflg
+   jms wrname
+   lac value
+   sad addr
+   jmp i prsym
+   cma
+   tad d1
+   tad addr
+   sma
+   jmp 1f
+   cma
+   tad d1
+   dac addr
+   lac o55
+   jms wchar
+   jmp 2f
+1:
+   dac addr
+   lac o53
+   jms wchar
+2:
+   lac addr
+   jms octw
+   1
+   jmp i prsym
+   "
+plaw:
+   lac d1
+   dac relocflg
+   lac word
+   and o17777
+   tad mrelocv
+   sma
+   jmp 1f
+   tad relocval
+   dzm relocflg
+1:
+   dac addr
+   law
+   dac relflg
+   lac addr
+   jms nlsearch
+   jmp poct
+   dac symindex
+   law laws
+   jms wrname
+   lac o40
+   jms wchar
+3:
+   lac symindex
+   jmp pr1
+2:0
+9:0
+   "
+peae:
+   lac word
+   jms nlsearch
+   jmp 1f
+   jms wrname
+   jmp i prsym
+1:
+   lac word
+   and o777700
+   jms nlsearch
+   jmp 1f
+   jms wrname
+   lac o40
+   jms wchar
+   lac word
+   and o77
+   jms octw
+   1
+   jmp i prsym
+1:
+   law eaes
+   dac addr
+   jmp nfnd
+   "
+popr:
+   law oprs
+   jmp 1f
+piot:
+   law iots
+1:
+   dac addr
+   lac word
+   jms nlsearch
+   jmp 1f
+   jms wrname
+   jmp i prsym
+1:
+nfnd:
+   lac addr
+   jms wrname
+octala:
+   dzm relflg
+   lac o40
+   jms wchar
+   lac word
+   and o37777
+   lmq
+   lac relocflg
+   sna
+   jmp 1f
+   lacq
+   tad mrelocv
+   lmq
+1:
+   lacq
+   jms octw
+   1
+   lac relocflg
+   sna
+   jmp i prsym
+   lac o162
+   jms wchar
+   dzm relocflg
+   jmp i prsym
+   "
+poct:
+   lac word
+   jms octw
+   6
+   jmp i prsym
+   "
+pcal:
+   lac word
+   sna
+   jmp poct
+   and o17777
+   jms nlsearch
+   jmp 1f
+   dac addr
+   law syss
+   jms wrname
+   lac o40
+   jms wchar
+   lac addr
+   jms wrname
+   jmp i prsym
+   "
+1:
+   lac word
+   and o20000
+   sza
+   jmp poct
+   jmp symadr
+   "
+wrname:0
+   tad dm1
+   dac 10
+   -4
+   dac 3f
+1:
+   lac i 10
+   dac 2f
+   lmq
+   cla
+   llss 9
+   sad o40
+   jmp i wrname
+   jms wchar
+   lac 2f
+   and o177
+   sad o40
+   jmp i wrname
+   jms wchar
+   isz 3f
+   jmp 1b
+   jmp i wrname
+2:0
+3:0
+   "
+nlsearch:0
+   dac match
+   lac brack
+   dac best
+   dzm minp
+1:
+   lac nlbufp
+   tad dm6
+   dac cnlp
+nloop:
+   lac cnlp
+   tad d6
+   dac cnlp
+   lmq
+   cma
+   tad nlsize
+   spa
+   jmp nlend
+   lac nsearch
+   sza
+   jmp testn
+   lacq
+   tad d3
+   dac np
+   lac i np
+   sna
+   jmp nloop
+   isz np
+   lac i np
+   dac treloc
+   sad relocflg
+   skp
+   jmp nloop
+   isz np
+   lac i np
+   dac tvalue
+   sad match
+   jmp nlok
+   lac relocflg
+   sna
+   jmp nloop
+   lac relflg
+   sna
+   jmp nloop
+   -1
+   tad tvalue
+   cma
+   tad match
+   spa
+   jmp nloop
+   dac 2f
+   tad mbrack
+   sma
+   jmp nloop
+   lac best
+   cma
+   tad d1
+   tad 2f
+   sma
+   jmp nloop
+   lac 2f
+   dac best
+   lac tvalue
+   dac value
+   lac treloc
+   dac reloc
+   lac cnlp
+   dac minp
+   jmp nloop
+   "
+2:0
+   "
+testn:
+   lacq
+   dac minp
+   -4
+   dac value
+   lac match
+   dac inbuf
+1:
+   lac i minp
+   sad i inbuf
+   skp
+   jmp nloop
+   isz minp
+   isz inbuf
+   isz value
+   jmp 1b
+   lac i minp
+   dac treloc
+   isz minp
+   lac i minp
+   dac tvalue
+   jmp nlok
+   "
+nlend:
+   lac relflg
+   sna
+   jmp i nlsearch
+   lac dotrel
+   sad relocflg
+   skp
+   jmp 1f
+   -1
+   tad curdot
+   cma
+   tad match
+   spa
+   jmp 2f
+   cma
+   tad d1
+2:
+   tad brack
+   spa
+   jmp 1f
+   tad mbrack
+   tad best
+   spa
+   jmp 1f
+   lac curdot
+   dac value
+   lac dotrel
+   dac reloc
+   law o56040
+   dac minp
+1:
+   lac minp
+   sza
+   isz nlsearch
+   jmp i nlsearch
+nlok:
+   lac tvalue
+   dac value
+   lac treloc
+   dac reloc
+   lac cnlp
+   isz nlsearch
+   jmp i nlsearch
+   "
+nlerr:
+   law
+   dac errf
+   jmp i nlsearch
+   "
+rch:0
+   lac nchar1
+   dzm nchar1
+   sza
+   jmp i rch
+1:
+   lac nchar
+   dzm nchar
+   sza
+   jmp i rch
+   cla
+   sys read; char; 1
+   lac char
+   and o177
+   dac nchar
+   lac char
+   lrss 9
+   sna
+   jmp 1b
+   jmp i rch
+   "
+wchar:0
+   dac char
+   lac d1
+   sys write; char; 1
+   jmp i wchar
+   "
+octw: 0
+   isz octw
+   lmq
+   cla cll
+   llss 3
+   alss 6
+   llss 3
+   tad o60060
+   dac obuf
+   cla
+   llss 3
+   alss 6
+   llss 3
+   tad o60060
+   dac obuf+1
+   cla
+   llss 3
+   alss 6
+   llss 3
+   tad o60060
+   dac obuf+2
+   lac d1
+   sys write; obuf; 3
+   jmp i octw
+m10: -10
+   "
+   "
+o54:054
+d6:6
+o52012:052012
+d5:5
+d9:9
+d12:12
+d8:8
+d3:3
+o177:0177
+o136: 0136
+o45: 045
+sysflag: 0
+char:0
+d2:2
+o162012:0162012
+mrelocv:-010000
+relocval:010000
+nwords:0
+errf:0
+rator:0
+d1:1
+errmes:077012
+o12:012
+curval:0
+curreloc:0
+curdot:0
+reldot:
+dotrel:0
+value:0
+reloc:0
+o77:077
+o57:057
+o72:072
+o50:050
+type:proct
+o162:0162
+nl:012
+om100:-0100
+" d2:2         " Duplicate
+symbuf: .=.+5
+inbuf:.=.+64
+o100:0100
+opfound:0
+wcore:0
+symindex:0
+rcore:0
+o56:056
+om60:-060
+om10:-010
+" o56:056      " Duplicate
+om141:-0141
+o141: 0141
+o44: 044
+o151: 0151
+o161: 0161
+om101: -0101
+om32:-032
+o40:040
+o55:055
+o53:053
+symbufp:0
+symcnt:0
+nopcom:nop
+dm6: -6
+d10: 10
+trafill: jmp fill
+nchar1:0
+nchar:0
+o177000:0177000
+o56040:056040
+nsearch:0
+word:0
+relflg:0
+relocflg:0
+o740000:0740000
+o640000:0640000
+o700000:0700000
+o17777:017777
+o20000:020000
+o10000: 010000
+o151040:0151040
+eaes:0145141;0145040
+laws: 0154141;0167040
+oprs:0157160;0162040
+iots:0151157;0164040
+syss:0163171;0163040
+corename:0143157;0162145;040040;040040
+nlname:0156056;0157165;0164040;040040
+dotdot: <..>; 040040; 040040; 040040
+addr:0
+o37777:037777
+dm1:-1
+match:0
+rwdflg:0
+nlbufp:nlbuff
+nlsize:0
+" dm6:-6       " Duplicate
+cnlp:0
+o377777:0377777
+minp:0
+d4:4
+np:0
+nlcnt:0
+obuf:.=.+3
+o60060:060060
+o75:075
+best: 0
+o60000:060000
+comflg:0
+" nlbufp:nlbuff        " Duplicate
+brack: 30
+mbrack: -30
+o777700:0777700
+o41:041
+o42:042
+o760000:0760000
+o40000:040000
+tvalue: 0
+treloc: 0
+" o151:0151    " Duplicate
+o47: 047
+o52:052
+indflg: 0
+o74:074
+o76:076
+" nlbufp: nlbuff " Duplicate
+   nlbuff = .
diff --git a/dmabs.s b/dmabs.s
new file mode 100644 (file)
index 0000000..fce7825
--- /dev/null
+++ b/dmabs.s
@@ -0,0 +1,256 @@
+   " dmabs
+
+   lac o17
+   sys creat; punout
+   spa
+   sys save
+   dac fo
+   lac 017777
+   tad d1
+   dac name
+   jms space
+   100
+
+loop:
+   dzm oldsum
+   lac initcmd
+   dac comand
+   lac i 017777
+   sad d4
+   jmp stop
+   tad dm4
+   dac i 017777
+   lac name
+   tad d4
+   dac name
+
+dump1:
+   lac comand
+   xor dactra
+   dac tracmd
+
+dump2:
+   sys open; name: 0; 0
+   spa
+   jmp opnerr
+   dac fi
+   -bootsiz
+   dac c1
+   law boot-1
+   dac 8
+1:
+   lac i 8
+   jms put
+   isz c1
+   jmp 1b
+   lac bootcmd
+   lrs 12
+   jms put1
+   lac bootcmd
+   lrs 6
+   jms put1
+   lac bootcmd
+   and o77
+   xor o300
+   jms put2
+
+   jms space
+   3
+
+dump3:
+   -1
+   tad bufp
+   dac 8
+   -64
+   dac c1
+1:
+   dzm i 8
+   isz c1
+   jmp 1b
+   lac fi
+   sys read; bufp: buf; 64
+   sna
+   jmp done
+   dac count
+   -1
+   tad bufp
+   dac 8
+   -64
+   dac c1
+   cla
+1:
+   add i 8
+   isz c1
+   jmp 1b
+   sna
+   jmp dump4
+   dac newsum
+   lac comand
+   jms put
+   lac count
+   jms put
+   lac oldsum
+   add comand
+   add count
+   jms put
+   lac newsum
+   dac oldsum
+   jms space
+   3
+   -1
+   tad bufp
+   dac 8
+   -1
+   tad count
+   cma
+   dac c1
+1:
+   lac i 8
+   jms put
+   isz c1
+   jmp 1b
+   jms space
+   10
+
+dump4:
+   lac comand
+   tad count
+   dac comand
+   jmp dump3
+
+done:
+   lac tracmd
+   jms put
+   cla
+   jms put
+   lac oldsum
+   add tracmd
+   jms put
+   jms space
+   20
+   lac fi
+   sys close
+   jmp loop
+
+stop:
+   cla
+   jms put
+   jms space
+   100
+   sys exit
+
+space: 0
+   -1
+   tad i space
+   cma
+   dac c1
+   isz space
+1:
+   lac o400
+   jms put2
+   isz c1
+   jmp 1b
+   jmp i space
+
+put: 0
+   dac 1f
+   lrs 12
+   jms put1
+   lac 1f
+   lrs 6
+   jms put1
+   lac 1f
+   jms put1
+   jmp i put
+1:0
+
+put1:0
+   and o77
+   xor o200
+   jms put2
+   jmp i put1
+
+put2: 0
+   dac 1f
+   lac fo
+   sys write; 1f; 1
+   jmp i put2
+1: 0
+
+boot:
+   org = 017740
+2:
+   jms get1-boot+org
+   dac cmd-boot+org
+   jms get1-boot+org
+   cma
+   dac cnt-boot+org
+   jms get2-boot+org
+   xor sum-boot+org
+   dzm sum-boot+org
+   cla cll sza
+   hlt
+   isz cnt-boot+org
+1:
+   jms get1-boot+org
+cmd: 0
+   isz cmd-boot+org
+   isz cnt-boot+org
+   jmp 1b-boot+org
+   jmp 2b-boot+org
+get1: 0
+   jms get2-boot+org
+   dac get2-boot+org
+   add sum-boot+org
+   dac sum-boot+org
+   lac get2-boot+org
+   jmp i get1-boot+org
+get2: 0
+   iot 0144
+1:
+   iot 0101
+   jmp 1b-boot+org
+   iot 0112
+   jmp i get2-boot+org
+sum: 0
+   cnt = sum+1
+   bootsiz = .-boot
+bootcmd: jmp org
+
+opnerr:
+   lac name
+   dac 1f
+   lac d1
+   sys write; 1: 0; 4
+   lac d1
+   sys write; mes; 2
+   jmp loop
+mes:
+   040;077012
+
+comand: 0
+tracmd: 0
+   d1: 1
+.17777: 017777
+o77: 077
+o200: 0200
+o300: 0300
+d4: 4
+d64: 64
+dm4: -4
+o400: 0400
+punout: <pp>;<to>;<ut>;040040
+o17: 017
+
+fi: 0
+fo: 0
+count: 0
+oldsum: 0
+newsum: 0
+daccmd: dac
+dactra: dac jmp
+initcmd: dac 0
+c1: 0
+buf:
+
+iot = 0700000
\ No newline at end of file
diff --git a/ds.s b/ds.s
new file mode 100644 (file)
index 0000000..2aa0f93
--- /dev/null
+++ b/ds.s
@@ -0,0 +1,501 @@
+" ds
+
+   lac 017777 i
+   sad d8
+   skp
+   sys exit
+   lac 017777
+   tad d5
+   dac .+3
+   law 017
+   sys creat; ..
+   dac fo
+   law 017
+   sys creat; scrname
+   spa; jms error
+   dac fso
+   sys open; scrname; 0
+   spa; jms error
+   dac fsi
+   sys chdir; dd
+   spa; jms error
+   lac d1
+   sys write; pass1; 1
+   law fsobuf
+   dac fsopt
+   dzm nfiles
+   law fbuf
+   dac filp
+   dzm ndirs
+   law dbuf
+   dac dirp
+   dzm fsloc
+   sys open; dotdot; 0
+   spa; jms error
+   dac fd
+   jms readdir; dotdot
+   law statbuf
+   sys status; dotdot; dotdot
+   spa; jms error
+   lac statbuf+12 " i index
+   dac dirp i
+   isz dirp
+   -1
+   tad nfiles
+   cma
+   dac ddfiles
+   law fbuf
+   dac ddfilp
+
+loop:
+   -1
+   tad ndirs
+   cma
+   dac c1
+   law dbuf
+   dac i1
+
+1:
+   isz i1
+   lac i1 i
+   sad ddfilp i
+   jmp 2f
+   isz i1
+   isz c1
+   jmp 1b
+
+   lac ddfilp
+   tad i1
+   dac i1
+   lac i1 i
+   dac .+3
+   lac fsi
+   sys seek; ..; 0
+   lac fsi
+   sys read; scrname; 4
+   law statbuf
+   sys status; dotdot; scrname
+   spa; jms error
+   lac statbuf+0 " flags
+   and o20
+   sna
+   jmp 2f
+   sys open; scrname; 0
+   spa; jms error
+   dac fd
+   jms readdir; scrname
+   lac ddfilp i
+   dac dirp i
+   isz dirp
+
+2:
+   isz ddfilp
+   isz ddfilp
+   isz ddfiles
+   jmp loop
+
+" output phase
+
+   lac fso
+   sys write; fsobuf; 64
+   lac d1
+   sys write; pass2; 2
+   -500
+   dac c1
+
+1:
+   law dbuf+2
+   dac i1
+   dzm fflg
+   law fbuf
+   dac i2
+   r1
+   tad nfiles
+   cma
+   dac c2
+
+2:
+   lac c1
+   tad d501
+   sad i2 i
+   skp
+   jmp 3f
+   -1
+   tad i1
+   dac i3
+   iac i3 i
+   dac c3
+   law fbuf
+   dac i3
+0:
+   lac i3 i
+   sad c3
+   jmp 0f
+   isz i3
+   isz i3
+   jmp 0b
+0:
+   lac i3
+   tad d1
+   dac c3
+   lac c3 i
+   dac .+3
+   lac fsi
+   sys seek; ..; 0
+   lac fsi
+   sys read; scrname; 4
+   lac i2
+   tad d1
+   dac c3
+   lac c3 i
+   dac .+3
+   lac fsi
+   sys seek; ..; 0
+   lac fsi
+   sys read; dd; 4
+   lac fflg
+   sza
+   jmp 0f
+
+   lac nlinkt
+   sad nlinka
+   skp
+   jms fishy
+   dzm nlinka
+   law 012
+   jms putc
+   law statbuf
+   sys status; scrname; dd
+   spa; jms error
+   -1
+   tad statbuf+9
+   cma
+   dac nlinkt
+   -1
+   dac fflg
+   jms longout
+   law 012
+   jms putc
+0:
+   isz nlinka
+   jms putname; scrname
+   jms putname; dd
+   law 012
+   jms putc
+
+3:
+   isz i2
+   isz i2
+   lac i2
+   sad i1 i
+   skp
+   jmp .+3
+   isz i1
+   isz i1
+   isz c2
+   jmp 2b
+
+   isz c1
+   jmp 1b
+   lac nlinkt
+   sad nlinka
+   skp
+   jms fishy
+
+   sys chdir; system
+   jmp done
+
+fishy: 0
+   jms asters
+   jms asters
+   law 012
+   jms putc
+   lac d1
+   sys write; 1f; 1
+   jmp fishy i
+1: 052012
+
+nlinka: 0
+nlinkt: 0
+
+asters: 0
+   -10
+   dac c
+1:
+   law 052
+   jms putc
+   isz c
+   jmp 1b
+   jmp asters i
+
+longout: 0
+   lac statbuf+12 " i
+   jms octal; -3
+   lac statbuf+0 " flags
+   jms octal; -2
+   lac statbuf+8 " uid
+   jms octal; -2
+   -1
+   tad statbuf+9 " nlinks
+   cma
+   jms octal; -2
+   lac statbuf+10
+   jms octal; -5
+   jmp longout i
+
+readdir: 0
+   law 012
+   jms putc
+   law 012
+   jms putc
+   jms asters
+   lac readdir i
+   dac 5f
+   dac .+2
+   jms putname; ..
+   jms asters
+   law 012
+   jms putc
+   law 012
+   jms putc
+   isz readdir
+   isz ndirs
+   lac filp
+   dac dirp i
+   isz dirp
+0:
+   jms copyz; buf; 64
+   lac fd
+   sys read; buf; 64
+   spa; jms error
+   sna
+   jmp 4f
+   -8
+   dac c1
+   law buf
+   dac i1
+1:
+   lac i1 i
+   sna
+   jmp 3f
+
+   isz nfiles
+   dac filp i
+   isz filp
+   lac fsloc
+   dac filp i
+   tad d4
+   dac fsloc
+   isz filp
+   lac i1
+   tad d1
+   dac .+4
+   law statbuf
+   sys status; 5:..; ..
+   spa; jms error
+   jms longout
+   lac i1
+   tad d1
+   dac .+2
+   jms putname; ..
+   law 012
+   jms putc
+   lac i1
+   dac 8
+   lac 8 i
+   dac fsopt i
+   isz fsopt
+   lac 8 i
+   dac fsopt i
+   isz fsopt
+   lac 8 i
+   dac fsopt i
+   isz fsopt
+   lac 8 i
+   dac fsopt i
+   isz fsopt
+   law fsobuf+64
+   sad fsopt
+   skp
+   jmp 3f
+   lac fso
+   sys write; fsobuf; 64
+   law fsobuf
+   dac fsopt
+
+3:
+   law 8
+   tad i1
+   dac i1
+   isz c1
+   jmp 1b
+   jmp 0b
+4:
+   lac fd
+   sys close
+   jmp readdir i
+
+putname: 0
+   -1
+   tad putname i
+   dac 8
+   -4
+   dac c
+1:
+   lac 8 i
+   lrss 9
+   jms putc
+   llss 9
+   jms putc
+   isz c
+   jmp 1b
+   isz putname
+   jmp putname i
+
+octal: 0
+   lmq
+   lac d5
+   tad octal i
+   cma
+   dac c
+1:
+   llss 3
+   isz c
+   jmp 1b
+   lac octal i
+   dac c
+1:
+   ecla llss 3
+   tad o60
+   jms putc
+   isz c
+   jmp 1b
+   law 040
+   jms putc
+   isz octal
+   jmp octal i
+
+error: 0
+   -1
+   tad error
+   hlt
+   sys save
+
+copyz: 0
+   -1
+   tad copyz i
+   dac 8
+   isz copyz
+   -1
+   tad copyz i
+   cma
+   dac 2f
+   isz copyz
+1:
+   dzm 8 i
+   isz 2f
+   jmp 1b
+   jmp copyz i
+2: 0
+
+done:
+   lac noc
+   sna
+   sys exit
+   and d1
+   sna cla
+   jmp 1f
+   jms putc
+   jmp done
+1:
+   lac noc
+   rcr
+   dac 1f
+   lac fo
+   sys write; obuf; 1;..
+   sys exit
+
+putc: 0
+   and o177
+   dac 2f+1
+   lac opt
+   dac 2f
+   add o400000
+   dac opt
+   spa
+   jmp 1f
+   lac 2f i
+   xor 2f+1
+   jmp 3f
+1:
+   lac 2f+1
+   alss 9
+3:
+   dac 2f i
+   isz noc
+   lac noc
+   sad d128
+   skp
+   jmp putc i
+   lac fo
+   sys write; obuf; 64
+   lac iopt
+   dac opt
+   dzm noc
+   jmp putc i
+2: 0;0
+opt: obuf
+iopt: obuf
+noc: 0
+fo: 1
+
+d1: 1
+o177: 0177
+o400000: 0400000
+d128: 128
+d4: 4
+d5: 5
+d8: 8
+o60: 060
+o20: 020
+d501: 501
+
+dd:
+   <dd>; 040040; 040040; 040040
+dotdot:
+   056056; 040040; 040040; 040040
+system:
+   <sy>;<st>;<em>; 040040
+scrname:
+   <*s>;<rc>;040040;040040
+pass2:
+   <i
+pass1:
+   <i 012
+
+fso: .=.+1
+fsi: .=.+1
+fsloc: .=.+1
+nfiles: .=.+1
+fflg: .=.+1
+buf: .=.+64
+obuf: .=.+64
+fd: .=.+1
+filp: .=.+1
+ddfilp: .=.+1
+ddfiles: .=.+1
+statbuf: .=.+13
+c: .=.+1
+i1: .=.+1
+i2: .=.+1
+i3: .=.+1
+c1: .=.+1
+c2: .=.+1
+c3: .=.+1
+ndirs: .=.+1
+dirp: .=.+1
+fsopt: .=.+1
+fsobuf: .=.+64
+dbuf: .=.+100
+fbuf:
+   
\ No newline at end of file
diff --git a/dskio.s b/dskio.s
new file mode 100644 (file)
index 0000000..30cf100
--- /dev/null
+++ b/dskio.s
@@ -0,0 +1,78 @@
+" dskio
+
+dskrd0: 0
+   dzm side
+   jms dskio; 02000
+   jmp i dskrd0
+
+dskwr0: 0
+   dzm side
+   jms dskio; 03000
+   jmp i dskwr0
+
+dskrd1: 0
+   lmq
+   lac o200000
+   dac side
+   lacq
+   jms dskio; 02000
+   jmp i dskrd1
+
+dskwr1: 0
+   lmq
+   lac o200000
+   dac side
+   lacq
+   jms dskio; 03000
+   jmp i dskwr1
+
+
+iskio: 0
+   cll; idiv; 80
+   dac 2f
+   lacq
+   idiv; 10
+   dac 3f
+   lls 22
+   xor 3f
+   als 8
+   dac 3f
+   lac 2f
+   idiv; 10
+   dac 2f
+   lls 22
+   xor 2f
+   xor 3f
+   xor side
+   dac 2f
+   -10
+   dac 3f
+1:
+   dscs
+   -640
+   dslw
+   lac dskbufp
+   dslm
+   lac 2f
+   dsld
+   lac dskio i
+   dsls
+   dssf
+   jmp .-1
+   dsrs
+   sma
+   jmp 1f
+   isz 3f
+   jmp 1b
+   hlt
+1:
+   isz dskio
+   jmp i dskio
+2: 0
+3: 0
+
+o200000: 0200000
+dskbufp: dskbuf
+
+side: .=.+1
+dskbuf: .=.+640
\ No newline at end of file
diff --git a/dskres.s b/dskres.s
new file mode 100644 (file)
index 0000000..ac432bb
--- /dev/null
+++ b/dskres.s
@@ -0,0 +1,26 @@
+" dskres
+
+   iof
+   hlt
+   dzm track
+   -640
+   dac c1
+1:
+   lac track
+   jms dskrd0
+
+   lac track
+   jms dskwr1
+
+   lac track
+   tad d10
+   dac track
+   isz c1
+   jmp 1b
+
+   hlt
+   sys exit
+
+track: 0
+c1: 0
+d10: 10
\ No newline at end of file
diff --git a/dsksav.s b/dsksav.s
new file mode 100644 (file)
index 0000000..2e79929
--- /dev/null
+++ b/dsksav.s
@@ -0,0 +1,26 @@
+" dsksav
+
+   iof
+   hlt
+   dzm track
+   -640
+   dac c1
+1:
+   lac track
+   jms dskrd1
+
+   lac track
+   jms dskwr0
+
+   lac track
+   tad d10
+   dac track
+   isz c1
+   jmp 1b
+
+   hlt
+   sys exit
+
+track: 0
+c1: 0
+d10: 10
diff --git a/dsw.s b/dsw.s
new file mode 100644 (file)
index 0000000..03f8ff2
--- /dev/null
+++ b/dsw.s
@@ -0,0 +1,37 @@
+" dsw
+
+   lac djmp
+   dac .-1
+   oas cla
+   oma
+   tad d1
+   dac t1
+   sys open; dd; 0
+1:
+   lac d2
+   sys read; dir; 8
+   sna
+   sys exit
+   lac dir
+   sna
+   jmp 1b
+   isz t1
+   jmp 1b
+
+wr:
+   lac d1
+   sys write; dir+1; 4
+   lac d1
+   sys write; o12; 1
+   sys save
+io:
+   sys unlink; dir+1
+   sys exit
+
+d1: 1
+d2: 2
+o12: 012
+t1: 0
+djmp: jmp do
+dd: 056056;040040;040040;040040
+dir: .=.+8
\ No newline at end of file
diff --git a/ed1.s b/ed1.s
new file mode 100644 (file)
index 0000000..4ae0701
--- /dev/null
+++ b/ed1.s
@@ -0,0 +1,758 @@
+"[handwritten page number top right of scan - 1]
+" ed1
+   lac d1
+   sys write; 1f; 3
+   lac o17
+   sys creat; tname
+   spa
+   sys save
+   dac sfo
+   sys open; tname; 0
+   spa
+   sys save
+   dac sfi
+   -1
+   tad lnodp
+   dac zermp
+   tad d1
+   dac zerop
+   dac dot
+   tad d1
+   dac eofp
+   dzm i eofp
+   dzm i zerop
+   dzm lastre
+   dzm fbuf
+   lac d1
+   dac dskadr
+   dac wrflg
+   dzm diskin
+ "o------------> [scan markup]
+   jmp advanc
+1:
+   <ed>; <it>; 012
+advanc:
+   jms rline
+   lac linep
+   dac tal
+   dzm adrflg
+   jms addres
+   jmp comand
+   -1
+   dac adrflg
+   lac addr
+   dac addr1
+   dac addr2
+1:
+   lac char
+   sad o54
+   jmp 2f
+   sad o73
+   skp
+   jmp chkwrp
+   lac addr
+   dac dot
+2:
+   jms addres
+   jmp error
+   lac addr2
+   dac addr1
+   lac addr
+   dac addr2
+   jmp 1b
+"[handwritten page number top right of scan - 2]
+chkwrp:
+   -1
+   tad addr1
+   jms betwen; d1; addr2
+   jmp error
+
+comand:
+   lac char
+   sad o141
+   jmp ca
+   sad o143
+   jmp cc
+   sad o144
+   jmp cd
+   sad o160
+   jmp cp
+   sad o161
+   jmp cq
+   sad o162
+   jmp cr
+   sad o163
+   jmp cs
+   sad o167
+   jmp cw
+   sad o12
+   jmp cnl
+   sad o75
+   jmp ceq
+   jmp error
+ca:
+   jms newline
+   jms setfl
+   lac addr2
+   dac dot
+ca1:
+   jms rline
+   lac line
+   sad o56012
+   jmp advanc
+   jms append
+   jmp ca1
+
+cc: cd:
+   jms newline
+   jms setdd
+   lac addr1
+   sad zerop
+   jmp error
+   dac dot
+   tad dm1
+   dac 9
+   lac addr2
+   dac 8
+2:
+   lac i 8
+   dac i 9
+   sza
+   jmp 2b
+   lac 9
+"[handwritten page number top right of scan - 3]
+   dac eofp
+   lac char
+   sad o144
+   jmp advanc
+   -1
+   tad dot
+   dac dot
+   jmp ca1
+
+cp:
+   jms newline
+cp1:
+   jms setdd
+   lac addr1
+   sad zerop
+   jmp error
+1:
+   lac addr1
+   dac dot
+   lac i addr1
+   jms gline
+   dac 2f
+   lac d1
+   sys write; line; 2: 0
+   lac addr1
+   sad addr1
+   jmp advanc
+   tad d1
+   dac addr1
+   jmp 1b
+
+cq:
+   jms newline
+   lac adrflg
+   sza
+   jmp error
+   sys exit
+
+cr:
+   jms setfl
+   lac addr2
+   dac dot
+   jms rname
+ "------------>  [scan markup]
+   sys open; fbuf; 0
+   spa
+   jmp error
+   dac tfi
+   lac linep
+   dac tal
+   dzm num
+1:
+   lac tfi
+   sys read; tbuf; 64
+   sza
+   jmp 2f
+   lac tfi
+   sys close
+   jms number
+   jmp advanc
+2:
+   cma
+"[handwritten page number top right of scan - 4]
+   tad d1
+   rcl
+   dac c1
+   lac tbufp
+   dac tal1
+2:
+   jms getsc; tal1
+   sna
+   jmp 3f
+   jms putsc; tal
+   isz num
+   sad o12
+   skp
+   jmp 3f
+   lac tal
+   add o400000
+   and o17777
+   cma
+   tad linep
+   cma
+   dac linsiz
+   jms append
+   lac linep
+   dac tal
+3:
+   isz c1
+   jmp 2b
+   jmp 1b
+cw:
+   jms setfl
+   lac i addr1
+   sna
+   jmp error
+   jms rname
+   lac o17
+   sys creat; fbuf
+   spa
+   jmp error
+   dac tfi
+   -128
+   dac c2
+   lac tbufp
+   dac tal1
+   dzm num
+1:
+   lac i addr1
+   jms gline
+   rcl
+   cma
+   tad d1
+   dac c1
+   lac linep
+   dac tal
+2:
+   jms getsc; tal
+   sna
+   jmp 3f
+   isz num
+   jmp putsc; tal1
+   isz c2
+"[handwritten page number top right of scan - 5]
+   jmp 3f
+   lac tfi
+   sys write; tbuf; 64
+   -128
+   dac c2
+   lac tbufp
+   dac tal1
+3:
+   isz c1
+   jmp 2b
+   lac addr1
+   sad addr2
+   jmp 1f
+   isz addr1
+   jmp 1b
+1:
+   lac tal1
+   sma cla
+   jmp 1f
+   jms putsc; tal1
+1:
+   -1
+   tad tbufp
+   cma
+   tad tal1
+   dac 1f
+   lac tfi
+   sys write; tbuf; 1: 0
+   lac tfi
+   sys close
+   jms number
+   jmp advanc
+
+cnl:
+   lac adrflg
+   sna
+   jmp 1f
+   lac addr2
+   dac addr1
+   jmp cp1
+1:
+   lac dot
+   tad d1
+   sad eofp
+   jmp error
+   dac dot
+   jmp cp1
+
+ceq:
+   jms newline
+   jms setfl
+   lac addr2
+   dac dot
+   cma
+   tad zerop
+   cma
+   dac num
+   jms number
+   jmp advanc
+
+setdd: 0
+"[handwritten page number top right of scan - 6]
+   lac adrflg
+   sza
+   jmp i setdd
+   lac dot
+   dac addr1
+   dac addr2
+   jmp i setdd
+
+setfl: 0
+   lac adrflg
+   sza
+   jmp i setfl
+   lac zerop
+   tad d1
+   dac addr1
+   -1
+   tad eofp
+   dac addr2
+   jmp i setfl
+
+newline: 0
+   jms getsc; tal
+   sad o12
+   jmp i newline
+   jmp error
+
+addres: 0
+   dzm minflg "..) [stray scan mark?]
+   -1
+   dac addr
+ad1:
+   jms getsc; tal
+ad2:
+   jms betwen; d47; d58
+   skp
+   jmp numb
+   sad o40 "[o40 circled in scan]
+   jmp ad1 "[hand drawn check mark follows operand in scan]
+   sad o11
+   jmp ad1 "[hand drawn check mark follows operand in scan]
+           "[check mark underlined in scan]
+   sad o55
+   jmp amin "[hand drawn check mark follows operand in scan]
+   sad o56
+   jmp adot "[hand drawn check mark follows operand in scan]
+   sad o53
+   jmp ad1 "[hand drawn check mark follows operand in scan]
+   sad o44
+   jmp adol "[hand drawn check mark follows operand in scan]
+   sad o57
+   jmp fsrch "[hand drawn check mark follows operand in scan]
+   sad o77
+   jmp bsrch "[hand drawn check mark follows operand in scan]
+   dac char
+   lac minflg
+   sza
+   jmp error
+   lac addr
+   sma
+   isz addres
+   jmp i addres
+"[handwritten page number top right of scan - 7]
+adot:
+   lac minflg
+   sza
+   jmp error
+   lac addr
+   sma
+   jmp error
+   lac dot
+   dac addr
+   jmp ad1
+
+adol:
+   lac minflg
+   sza
+   jmp error
+   lac addr
+   sma
+   jmp error
+   -1
+   tad eofp
+   dac addr
+   jmp ad1
+
+amin:
+   -1
+   dac minflg
+   jmp ad1
+
+numb:
+   dac char
+   sad o60
+   jmp 1f
+   lac d10
+   jmp 2f
+1:
+   lac d8
+2:
+   dac 2f
+   dzm num
+1:
+   lac num
+   cll; mul; 2: 0
+   lacq
+   tad char
+   tad dm48
+   dac num
+   jms getsc; tal
+   dac char
+   jms betwen; d47; d58
+   skp
+   jmp 1b
+   lac minflg
+   sna
+   jmp 1f
+   -1
+   tad num
+   cma
+   dac num
+   dzm minflg
+1:
+   lac addr
+"[handwritten page number top right of scan - 8]
+   spa
+   lac zerop
+   tad num
+   dac addr
+   jms betwen; zermp; eofp
+   jmp error
+   lac char
+   jmp ad2
+
+number: 0
+   lac d100000
+   dac n1
+   law tbuf-1
+   dac 8
+n0:
+   lac num
+   cll; idiv; n1: 0
+   dac num
+   lacq
+   tad d48
+   dac i 8
+   lac n1
+   cll; idiv; 10
+   lacq
+   dac n1
+   sza
+   jmp n0
+   lac o12
+   dac i 8
+   law tbuf-1
+   dac 8
+   dac 9
+   -5
+   dac n1
+n2:
+   lac i 8
+   sad d48
+   skp
+   jmp n3
+   dzm i 9
+   isz n1
+   jmp n2
+n3:
+   lac d1
+   sys write; tbuf; 7
+   jmp i number
+
+rname: 0
+   lac fbufp
+   dac tal1
+   -8
+   dac c1
+1:
+   jms getsc; tal
+   sad o40
+   jmp 1b
+   sad o12
+   jmp 1f
+   jms putsc; tal1
+   isz c1
+   jmp 1b
+"[handwritten page number top right of scan - 9]
+   jmp i rname
+1:
+   lac tal1
+   sad fbufp
+   skp
+   jmp 1f
+   lac fbuf
+   sna
+   jmp error
+   jmp i rname
+1:
+   lac o40
+   jms putsc; tal1
+   isz c1
+   jmp 1b
+   jmp i rname
+
+gline: 0
+   dac glint1
+   jms getdsk
+   lac glint1 " [these 6 lines were surrounded by a box
+   and o1777  " that was Xed out with an arrow pointing to it]:
+   tad dskbfp " --
+   dac ital   "|\/|
+   lac linep  "|/\|<---
+   dac otal   " --
+1:
+   lac ital
+   sad edskbfp
+   skp
+   jmp 2f
+   lac diskin
+   tad d1024
+   jms getdsk
+   lac dskbfp
+   dac ital
+2:
+   jms getsc; ital
+   jms putsc; otal
+   sad o12
+   skp
+   jmp 1b
+   lac otal
+   sma
+   jmp 1f
+   cla
+   jms putsc; otal
+1:
+   lac linpm1
+   cma
+   tad otal
+   jmp i gline
+
+rline: 0
+   lac linep
+   dac tal
+
+1:
+   cla
+   sys read; char; 1
+   lac char
+"[handwritten page number top right of scan - 10]
+   lrss 9
+   jms esc
+   lac char
+   and o777
+   jms esc
+   jmp 1b
+
+esc: 0
+   sna
+   jmp i esc
+   jms putsc; tal
+   sad o12
+   jmp 2f
+   sad o100
+   jmp 1f
+   sad o43
+   skp
+   jmp i esc
+   -1
+   tad tal
+   dac tal
+   and o17777
+   sad linpm1
+   jmp 1f
+   jmp i esc
+
+1:
+   lac linep
+   dac tal
+   jmp i esc
+
+2:
+   lac tal
+   sma cla
+   jmp 1f
+   jms putsc; tal
+1:
+   -1
+   tad linep
+   cma
+   tad tal
+   dac linsiz
+   jmp i rline
+
+getsc: 0
+   lac i getsc
+   dac sctalp
+   isz getsc
+   lac i sctalp
+   dac sctal
+   add o400000
+   dac i sctalp
+   ral
+   lac i sctal
+   szl
+   lrss 9
+   and o777
+   jmp i getsc
+
+putsc: 0
+   and o777
+"[handwritten page number top right of scan - 11]
+   lmq
+   lac i putsc
+   dac sctalp
+   isz putsc
+   lac i sctalp
+   dac sctal
+   add o400000
+   dac i sctalp
+   sma cla
+   jmp 1f
+   llss 27
+   dac i sctal
+   lrss 9
+   jmp i putsc
+
+1:
+   lac i sctal
+   and o777000
+   omq
+   dac i sctal
+   lacq
+   jmp i putsc
+
+append: 0
+   -1
+   tad eofp
+   dac 8
+   cma
+   tad dot
+   dac apt1
+1:
+   lac i 8
+   dac i 8
+   -3
+   tad 8
+   dac 8
+   isz apt1
+   jmp 1b
+   isz eofp
+   dzm i eofp
+   isz dot
+   jms addline
+   jmp i append
+
+addline: 0
+   lac dskadr
+   dac i dot
+   jms getdsk "[line crossed out - scan markup]
+   -1
+   tad linsiz
+   cma
+   dac apt1
+   law line-1
+   dac 8
+   lac dskadr "[line crossed out - scan markup]
+   and o1777  "[line crossed out - scan markup]
+   tad dskbfp "[line crossed out - scan markup]
+   dac otal   "[line crossed out - scan markup]
+   lac dskadr "[line crossed out - scan markup]
+   tad linsiz "[line crossed out - scan markup]
+   dac dskadr "[line crossed out - scan markup]
+"[handwritten page number top right of scan - 12]
+1:
+   lac otal    " [these 9 lines were surrounded by a box
+   sad edskbfp " that was Xed out]:
+   skp         " --
+   jmp 2f      "|\/|
+   lac diskin  "|/\|
+   tad d1024   " --
+   jms getdsk  "
+   lac dskbfp  "
+   dac otal    "
+2: "[line crossed out - scan markup]
+   lac i 8
+   dac i otal "[line crossed out and a note that looks like *jms prtwrd*]
+   isz otal
+   dzm wrflg "[line crossed out - scan markup]
+   isz apt1
+   jmp 1b
+   jmp i addline
+
+
+getdsk: 0                  "[the entire getdsk procedure was surrounded
+   and o776000             " by a box that was Xed out]:
+   sad diskin              " --
+   jmp i getdsk            "|\/|
+   dac 2f                  "|/\|
+   lac wrflg               " --
+   sza                     "
+   jmp 3f                  "
+   lac diskin              "
+   dac 1f                  "
+   lac sfo                 "
+   sys seek; 1: 0; 0       "
+   lac sfo                 "
+   sys write; dskbuf; 1024 "
+   lac d1                  "
+   dac wrflg               "
+3:                         "
+   lac 2f                  "
+   dac diskin              "
+   lac sfi                 "
+   sys seek; 2: 0; 0       "
+   spa                     "
+   jmp i getdsk            "
+   lac sfi                 "
+   sys read; dskbuf; 1024  "
+   jmp i getdsk            "
+
+betwen: 0
+   dac bett1
+   lac i betwen
+   dac bett2
+   isz betwen
+   lac i bett2
+   cma
+   tad bett1
+   spa
+   jmp 1f
+   lac i betwen
+   dac bett2
+   isz betwen
+   -1
+   tad i bett2
+"[handwritten page number top right of scan - 13]
+   cma
+   tad bett1
+   spa
+1:
+   isz betwen
+   lac bett1
+   jmp i betwen
+
+error:
+   lac d1
+   sys write; 1f; 1
+   jmp advanc
+1:
+   077012
diff --git a/ed2.s b/ed2.s
new file mode 100644 (file)
index 0000000..2a1a46a
--- /dev/null
+++ b/ed2.s
@@ -0,0 +1,510 @@
+"[handwritten page number top right of scan - 14]
+" ed2
+
+cs:
+   jms getsc; tal
+   sad o40
+   jmp cs
+   sad o12
+   jmp error
+   dac delim
+   jms compile
+   lac tbufp
+   dac tal1
+1:
+   jms getsc; tal
+   sad delim
+   jmp 1f
+   sad o12
+   jmp error
+   jms putsc; tal1
+   jmp 1b
+1:
+   lac o12
+   jms putsc; tal1
+   jms newline
+   jms setdd
+   lac addr1
+   sad zerop
+   jmp error
+1:
+   dac addr1
+   lac i addr1
+   jms execute
+   jmp 2f
+   lac addr1
+   dac dot
+   law line-1
+   dac 8
+   law nlist-1
+   dac 9
+   -64
+   dac c1
+3:
+   lac i 8
+   dac i 9
+   isz c1
+   jmp 3b
+   -1
+   tad fchrno
+   dac linsiz
+   rcr
+   szl
+   xor o400000
+   tad linep
+   dac tal1
+   lac tbufp
+   dac tal
+3:
+   jms getsc; tal
+   sad o12
+   jmp 3f
+   jms putsc; tal1
+   isz linsiz
+"[handwritten page number top right of scan - 15]
+   jmp 3b
+3:
+   -1
+   tad lchrno
+   rcr
+   szl
+   xor o400000
+   tad nlistp
+   dac tal
+3:
+   jms getsc; tal
+   jms putsc; tal1
+   isz linsiz
+   sad o12
+   skp
+   jmp 3b
+   jms addline
+2:
+   lac addr1
+   sad addr2
+   jmp advanc
+   tad d1
+   jmp 1b
+
+fsrch:
+   dac delim
+   jms compile
+   jms srcsav
+   lac dot
+floop:
+   tad d1
+   dac addr
+   lac i addr
+   sza
+   jmp 1f
+   lac zerop
+   dac addr
+   jmp 2f
+1:
+   jms execute
+   jmp 2f
+   jms srcres
+   jmp ad1
+2:
+   lac addr
+   sad dot
+   jmp error
+   jmp floop
+
+bsrch:
+   dac delim
+   jms compile
+   jms srcsav
+   lac dot
+   sad zerop
+   lac eofp
+bloop:
+   tad dm1
+   dac addr
+   lac i addr
+"[handwritten page number top right of scan - 16]
+   sza
+   jmp 1f
+   lac eofp
+   dac addr
+   jmp 2f
+1:
+   jms execute
+   jmp 2f
+   jms srcres
+   jmp ad1
+2:
+   lac addr
+   sad dot
+   jmp error
+   jmp bloop
+
+srcsav: 0
+   lac minflg
+   sza
+   jmp error
+   lac addr
+   sma
+   jmp error
+   law line-1
+   dac 8
+   law tbuf-1
+   dac 9
+   -64
+   dac c1
+1:
+   lac i 8
+   dac i 9
+   isz c1
+   jmp 1b
+   jmp i srcsav
+
+srcres: 0
+   law tbuf-1
+   dac 8
+   law line-1
+   dac 9
+   -64
+   dac c1
+1:
+   lac i 8
+   dac i 9
+   isz c1
+   jmp 1b
+   jmp i srcres
+
+compile: 0
+   law compbuf-1
+   dac 8
+   dzm prev
+   dzm compflg
+
+cadvanc:
+   jms getsc; tal
+   sad delim
+   jmp cdone
+   dac compflg
+"[handwritten page number top right of scan - 17]
+   dzm lastre
+   sad o12
+   jmp error
+   "sad o133
+   "jmp chrcls
+   sad o136
+   jmp beglin
+   sad o44
+   jmp endlin
+   "sad o52
+   "jmp clsure
+   dac 1f
+   jmp comp
+   1; jms matchar; 1: 0; 0
+   jmp cadvanc
+
+cdone:
+   lac compflg
+   sna
+   jmp 1f
+   dac lastre
+   jms comp
+   1; jms found; 0
+   jmp i compile
+1: "???
+   lac lastre
+   sna
+   jmp error
+   jmp i compile
+
+chrcls:
+  jmp error
+
+beglin: "???
+   jms comp
+   1; jms matbol; 0
+   dzm prev
+   jmp cadvanc
+
+endlin: "???
+   jms comp
+   1; jms mateol; 0
+   dzm prev
+   jmp cadvanc
+
+clsure:
+   lac prev
+   sna
+   jmp error
+   tad d1
+   dac 1f
+   jms comp
+   1; jms matclo; 1: 0; 0
+   dzm prev
+   jmp cadvanc
+
+comp: 0 "???
+   -1
+   tad comp
+   dac 9
+   lac 8
+"[handwritten page number top right of scan - 18]
+   dac prev
+1: "???
+   lac i 9
+   sna
+   jmp i 9
+   dac i 8
+   jmp 1b
+
+execute: 0
+   jms gline
+   lac linep
+   dac tal1
+   dzm charno
+   dzm fchrno
+   dzm lchrno
+   lac jmpclist
+   dac trvect
+   lac jmpnlist
+   dac trvect+1
+   lac jmpxchg
+   dac i trvect+1
+   jmp 1f
+
+xchg:
+   lacq
+   sad o12
+   jmp i execute
+   lac jmpxchg
+   dac i 8
+1: "???
+   lac trvect
+   lmq
+   lac trvect+1
+   dac trvect
+   lacq
+   dac trvect+1
+   tad dm1
+   dac 8
+   jms getsc; tal1
+   lmq
+   isz charno
+   jms compbuf
+charno:
+   0
+trvect:
+   0;0
+
+matchar: 0 "???
+   -2
+   tad matchar
+   dac exret
+   lac i exret
+   dac exret
+   lacq
+   sad i matchar
+   skp
+   jmp 1f
+   lac matchar
+   and o17777
+   tad jms1
+   dac i 8
+"[handwritten page number top right of scan - 19]
+   lac i exret
+   dac i 8
+1: "???
+   isz exret
+   jmp i exret
+
+found: 0
+   -2
+   tad found
+   dac exret
+   lac i exret
+   dac exret
+   lac fchrno
+   sza
+   jmp 1f
+   isz execute
+   jmp 2f
+1: "???
+   sad i exret
+   jmp 1f
+   cma
+   tad i exret
+   spa
+   jmp 2f
+   jmp 3f
+1: "???
+   lac charno
+   cma
+   tad charno
+   spa
+   jmp 3f
+2: "???
+   lac i exret
+   dac fchrno
+   lac charno
+   dac lchrno
+3: "???
+   isz exret
+   jmp i exret
+
+matbol: 0 "???
+   lac charno
+   sad d1
+   jmp 1f
+   lac matbol
+   jmp 2f
+1: "???
+   lac matbol
+   jmp 3f
+
+mateol: 0 "???
+   lacq
+   sad o12
+   jmp 1f
+   lac mateol
+2: "???
+   tad dm2
+   dac exret
+   lac i exret
+   dac 9
+   jmp i 9
+"[handwritten page number top right of scan - 20]
+1: "???
+   lac mateol
+3: "???
+   tad dm3
+   dac 9
+   lac i 9
+   isz 9
+   dac i 9
+   jmp i 9
+
+matclo: 0 "???
+   -2
+   tad matclo
+   dac exret
+   lac i exret
+   dac cloret
+   lac i cloret
+   dac 1f
+   dac 2f
+   lac i matclo
+   dac exret
+   jms i exret; 1: 0
+   isz matclo
+   jms i matclo; 2: 0
+   isz cloret
+   jmp i cloret
+
+"??? the remainder of this scan had an unreadable first character
+"??? I did the best I could to recreate the characters appropriately
+d1: 1
+o133: 0133
+dm3: -3
+o136: 0136
+dm2: -2
+o52: 052
+o57: 057
+o77: 077
+o40: 040
+o12: 012
+d47: 47
+d58: 58
+dm48: -48
+d10: 10
+d8: 8
+d48: o60: 060
+d100000: 100000
+o44: 044
+o53: 053
+o56: 056
+o55: 055
+o11: 011
+o400000: 0400000
+o17777: 017777
+o144: 0144
+dm1: -1
+o56012: 056012
+o777: 0777
+o100: 0100
+o43: 043
+o777000: 0777000
+o75: 075
+o167: 0167
+o161: 0161
+"[handwritten page number top right of scan - 21]
+o160: 0160
+o143: 0143
+o141: 0141
+o1777: 01777
+d1024: 1024
+o776000: 0776000
+o162: 0162
+o163: 0163
+o73: 073
+o54: 054
+o17: 017
+
+tname:
+   0145056;0164155;0160040;040040
+tbufp: tbuf
+linep: line
+nlistp: nlist
+fbufp: fbuf
+dskbfp: dskbuf "[line crossed out - scan markup]
+edskbfp: dskbuf+1024 "[line crossed out - scan markup]
+lnodp: lnodes
+linpm1: line-1
+jmpclist: jmp clist
+jmpnlist: jmp nlist
+jmpxchg: jmp xchg
+jms1: jms 1
+tal: .=.+1
+exret: .=.+1
+cloret: .=.+1
+delim: .=.+1
+prev: .=.+1
+compflg: .=.+1
+tal1: .=.+1
+c1: .=.+1
+ital: .=.+1
+otal: .=.+1
+diskin: .=.+1
+glint1: .=.+1
+c2: .=.+1
+num: .=.+1
+zermp: .=.+1
+minflg: .=.+1
+adrflg: .=.+1
+dot: .=.+1
+addr: .=.+1
+addr1: .=.+1
+addr2: .=.+1
+eofp: .=.+1
+zerop: .=.+1
+dskadr: .=.+1
+linsiz: .=.+1
+tfi: .=.+1
+fchrno: .=.+1
+lchrno: .=.+1
+lastre: .=.+1
+bett1: .=.+1
+bett2: .=.+1
+wrflg: .=.+1
+apt1: .=.+1
+sfi: .=.+1
+"[handwritten page number top right of scan - 22]
+sfo: .=.+1
+sctal: .=.+1
+sctalp: .=.+1
+char: .=.+1
+fbuf: .=.+4  "not sure if this is fbuf, but
+tbuf: .=.+64 "there is a write; tbuf; 64 call
+line: .=.+64
+nlist: .=.+50
+clist: .=.+50
+compbuf: .=.+100
+dskbuf: .=.+1 "[line crossed out - scan markup]
+lnodes: .=.+1000
diff --git a/ind.b b/ind.b
new file mode 100644 (file)
index 0000000..6b615de
--- /dev/null
+++ b/ind.b
@@ -0,0 +1,26 @@
+main $(
+   extrn read, write;
+   auto i, c, state, line 100;
+
+loop:
+   state = i = 0;
+loop1:
+   c = read();
+   if(c==4) return;
+   if(c==':' & state==0) state = 2;
+   if((c<'0' ^ c>'9'&c<'a' ^ c>'z') & state==0) state = 1;
+   line[i] = c;
+   i = i+1;
+   if(c!=012) goto loop1;
+   if(state==2 ^ i==1) goto noi;
+   write('  ');
+   write(' ');
+noi:
+   i = 0;
+loop3:
+   c = line[i];
+   write(c);
+   i = i+1;
+   if(c!=012) goto loop3;
+   goto loop;
+$)
diff --git a/init.s b/init.s
new file mode 100644 (file)
index 0000000..69284d4
--- /dev/null
+++ b/init.s
@@ -0,0 +1,291 @@
+" init
+
+   -1
+   sys intrp
+   jms init1
+   jms init2
+1:
+   sys rmes
+   sad pid1
+   jmp 1f
+   sad pid2
+   jms init2
+   jmp 1
+1:
+   jms init1
+   jmp 1
+
+init1: 0
+   sys fork
+   jmp 1f
+   sys open; ttyin; 0
+   sys open; ttyout; 1
+   jmp login
+1:
+   dac pid1
+   jmp init1 i
+
+init2: 0
+   sys fork
+   jmp 1f
+   sys open; keybd; 0
+   sys open; displ; 1
+   jmp login
+1:
+   dac pid2
+   jmp init2 i
+
+login:
+   -1
+   sys intrp
+   sys open; password; 0
+   lac d1
+   sys write; m1; m1s
+   jms rline
+   lac ebufp
+   dac tal
+1:
+   jms gline
+   law ibuf-1
+   dac 8
+   law obuf-1
+   dac 9
+2:
+   lac 8 i
+   sac o12
+   lac o72
+   sad 9 i
+   skp
+   jmp 1b
+   sad o72
+   skp
+   jmp 2b
+   lac 9 i
+   sad o72
+   jmp 1f
+   -1
+   tad 9
+   dac 9
+   lac d1
+   sys write; m3; m3s
+   jms rline
+   law ibuf-1
+   dac 8
+2:
+   lac 8 i
+   sad o12
+   lac o72
+   sad 9 i
+   skp
+   jmp error
+   sad o72
+   skp
+   jmp 2b
+1:
+   dzm nchar
+   law dir-1
+   dac 8
+1:
+   lac 9 i
+   sad o72
+   jmp 1f
+   dac char
+   lac nchar
+   sza
+   jmp 2f
+   lac char
+   alss 9
+   xor o40
+   dac 8 i
+   dac nchar
+   jmp 1b
+2:
+   lac 8
+   dac nchar
+   lac nchar i
+   and o777000
+   xor char
+   dac nchar i
+   dzm nchar
+   jmp 1b
+1:
+   dzm nchar
+1:
+   lac 9 i
+   sad o12
+   jmp 2f
+   tad om60
+   lmq
+   lac nchar
+   cll; als 3
+   omq
+   dac nchar
+   jmp 1b
+2:
+   lac nchar
+   sys setuid
+   sys chdir; dd
+   sys chdir; dir
+
+   lac d2
+   sys close
+   sys open; sh; 0
+   sma
+   jmp 1f
+   sys link; system; sh; sh
+   spa
+   jmp error
+   sys open; sh; 0
+   spa
+   jmp error
+   sys unlink; sh
+1:
+   law 017700
+   dac 9
+   law boot-1
+   dac 8
+1:
+   lac 8 i
+   dac 9 i
+   sza
+   jmp 1b
+   jmp 017701
+
+boot:
+   lac d2
+   lmq
+   sys read; 4096; 07700
+   lacq
+   sys close
+   jmp 4096
+   0
+
+rline: 0
+   law ibuf-1
+   dac 8
+1:
+   cla
+   sys read; char; 1
+   lac char
+   lrss 9
+   sad o100
+   jmp rline+1
+   sad o43
+   jmp 2f
+   dac 8 i
+   sad o12
+   jmp rline i
+   jmp 1b
+2:
+   law ibuf-1
+   sad 8
+   jmp 1b
+   -1
+   tad 8
+   dac 8
+   jmp 1b
+
+gline: 0
+   law obuf-1
+   dac 8
+1:
+   jms gchar
+   dac 8 i
+   sad o12
+   jmp gline i
+   jmp 1b
+
+gchar: 0
+   lac tal
+   sad ebufp
+   jmp 1f
+   ral
+   lac tal i
+   snl
+   lrss 9
+   and o777
+   lmq
+   lac tal
+   add o400000
+   dac tal
+   lacq
+   sna
+   jmp gchar+1
+   jmp gchar i
+1:
+   lac bufp
+   dac tal
+1:
+   dzm tal i
+   isz tal
+   lac tal
+   sad ebufp
+   skp
+   jmp 1b
+   lac bufp
+   dac tal
+   lac d2
+   sys tead; buf; 64
+   sna
+   jmp error
+   jmp gchar+1
+
+error:
+   lac d1
+   sys write; m2; m2s
+   lac d1
+   sys smes
+   sys exit
+
+m1:
+   012; <lo>;<gi>;<n;<:;<
+m1s = .-m1
+m2:
+   <?; 012
+m2s = .-m2
+m3:
+   <pa>;<ss>;<wo>;<rd>;<: 040
+m3s = .-m3
+dd:
+   <dd>;040040;040040;040040
+dir:
+   040040;040040;040040;040040
+
+ttyin:
+   <tt>;<yi>;<n 040;040040
+ttyout:
+   <tt>;<yo>;<ut>; 040040
+keybd:
+   <ke>;<yb>;<oa>;<rd>
+displ:
+   <di>;<sp>;<la>;<y 040
+sh: 
+   <sh>; 040040;040040;040040
+system:
+   <sy>;<st>;<em>; 040040
+password:
+   <pa>;<ss>;<wo>;<rd>
+
+d1: 1
+o43: 043
+o100: 0100
+o400000; 0400000
+d2: 2
+o12: 012
+om60: -060
+d3: 3
+ebufp: buf+64
+bufp: buf
+o777: 0777
+o777000: 0777000
+o40: 040
+o72: 072
+
+ibuf: .=.+100
+obuf: .=.+100
+tal: .=.+1
+buf: .=.+64
+char: .=.+1
+nchar: .=.+1
+pid1: .=.+1
+pid2: .=.+1
diff --git a/lcase.b b/lcase.b
new file mode 100644 (file)
index 0000000..df6c6df
--- /dev/null
+++ b/lcase.b
@@ -0,0 +1,20 @@
+main $(
+   auto ch;
+   extrn read, write;
+
+   goto loop;
+   while (ch != 04)
+      $( if (ch > 0100 & ch < 0133)
+            ch = ch + 040;
+      if (ch==015) goto loop;
+      if (ch==014) goto loop;
+      if (ch==011)
+       $( ch = 040040;
+          write(040040);
+          write(040040);
+          $)
+      write(ch);
+   loop:
+      ch = read()&0177;
+      $)
+  $)
\ No newline at end of file
diff --git a/maksys.s b/maksys.s
new file mode 100644 (file)
index 0000000..65337a3
--- /dev/null
+++ b/maksys.s
@@ -0,0 +1,51 @@
+" copy a.out to disk track 18x
+" where x is the argument
+
+   lac 017777 i; sad d8; skp; jmp error
+   lac 017777; tad d5; dac track
+   lac i track; lrss 9; tad om60
+   spa; jmp error; dac track
+   tad dm10; sma; jmp error
+
+   sysopen; a.out; 0
+   spa; jmp error
+   sys read; bufp; buf; 3072
+   sad .-1
+   jmp error
+
+   dscs
+   -3072; dslw
+   lac bufp; dslm
+   lac track; alss 8; xor o300000; dsld
+   lac o30000; dsls
+   dssf; jmp .-1
+   dsrs; spa; jmp error
+   -1024; dslw
+   lac d3072; dslm
+   lac track; alss 8; xor o300110; dsld
+   lac o3000; dsls
+   dssf; jmp .-1
+   dsrs; spa; jmp error
+   sys exit
+
+error:
+   lac d1; sys write; 1f; 2
+   sys exit
+1: 077077;012
+
+dm10: -10
+dm5: 5
+om60: -060
+o300000: 0300000
+o300100: 0300110
+d8: 8
+d3072: 3072
+o3000: 03000
+d1: 1
+a.out:
+   <a.>;<ou>;<t 040;040040
+
+track: .=.+1
+
+buf:
+
diff --git a/s1.s b/s1.s
new file mode 100644 (file)
index 0000000..69e47f9
--- /dev/null
+++ b/s1.s
@@ -0,0 +1,193 @@
+" S1
+
+.. = 0
+t = 0
+orig:
+   hlt
+   jmp pibreak
+
+. = orig+7
+   -1
+
+. = orig+020
+   1f
+   iof
+   dac u.ac
+   lac 020
+   dac 1f
+   lac 1f-1
+   dac 020
+   lac u.ac
+   jmp 1f+1
+   1f
+1: 0
+   iof
+   dac u.ac
+   lacq
+   dac u.mq
+   lac 8
+   dac u.rq
+   lac 9
+   dac u.rq+1
+   jms copy; 10; u.rq+2; 6
+   lac 1b
+   dac u.rq+8
+   -1
+   dac .savblk
+   dac .insys
+   lac uquant
+   jms betwen; d0; maxquant
+      jms swap
+   ion
+   -1
+   tad u.rq+8
+   jms laci
+   jms betwen; o20001; swn
+      jmp badcal
+   tad swp
+   dac .+1
+   jmp .. i
+
+. = orig+0100
+   jmp coldentry
+   jms halt
+
+okexit:
+   dzm u.ac
+sysexit:
+   ion
+   lac .savblk
+   sza
+   jmp 1f
+   jms copy; sysdata; dskbuf; 64
+   cla
+   jms dskio; 07000
+1:
+   dzm .insys
+   jms chkint
+      skp
+   jmp .save
+   jms copy; u.rq+2; 10; 6
+   lac u.rq+1
+   dac 9
+   lac u.rq
+   dac 8
+   lac u.mq
+   lmq
+   lac u.ac
+   jmp u.rq+8 i
+
+swap: 0
+   ion
+1:
+   jms lookfor; 3 " out/ready
+      jmp 1f
+   jms lookfor; 1 " in/ready
+      skp
+   jmp 1b
+   dzm maxquant
+   jmp 3f
+1:
+   dac 9f+t
+   jms lookfor; 2 " in/notready
+      jmp 1f
+   jms lookfor; 1 " in/ready
+      jmp 1f
+   jmp 2f
+1:
+   lac swap
+   dac u.swapret
+   iof
+   lac o200000
+   tad u.ulistp i
+   dac u.ulistp i
+   ion
+   jms 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
+   jms movdsp
+3:
+   dzm uquant
+   iof
+   jmp swap i
+t = t+1
+
+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; .smes; .rmes; .fork
+swn:
+   .-swp-1 i
+
+.intrp:
+   lac u.ac
+   dac u.intflg
+   jmp okexit
+
+.sysloc:
+   lac u.ac
+   and o17777
+   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
+
+chkint: 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 u.ofiles+2
+   skp
+   jmp chkint i
+   dzm .int2
+   jmp 1f
+2:
+   dzm .int1
+1:
+   lac u.intflg
+   sza
+   jmp chkint i
+   -1
+   dac .insys
+   ion
+   isz chkint
+   jmp chkint i
+
diff --git a/s2.s b/s2.s
new file mode 100644 (file)
index 0000000..4ee69ea
--- /dev/null
+++ b/s2.s
@@ -0,0 +1,328 @@
+" 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
+   lac d.i
+   dac 9 i
+   jmp okexit
+
+.capt:
+   lac u.ac
+   dac u.dspbuf
+   jms movdsp
+   jmp sysexit
+
+.rele:
+   dzm u.dspbuf
+   law dspbuf
+   jms 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
+   spa
+   jms error
+   lmq
+   lac f.flags
+   and d1
+   sna
+   jmp 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
+   dzm d.i
+   jms copy; name; d.name; 4
+   lac i.uniq
+   dac d.uniq
+   -1
+   tad i.nlks
+   dac i.nlks
+   jms iput
+   jms dput
+   jmp okexit
+
+.unlink:
+   jms argname
+   dac u.base
+   lac d1
+   dac mode
+   jms access
+   dac d.i
+   jms dput
+   lac 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
+   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
+
+.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 exitrw
+
+.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
+   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
diff --git a/s3.s b/s3.s
new file mode 100644 (file)
index 0000000..ce11dee
--- /dev/null
+++ b/s3.s
@@ -0,0 +1,347 @@
+" 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
+t = t+2
+
+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-used
+      skp
+      jms error
+   dac 9f+t
+   isz uniqpid
+   lac uniqpid
+   dac u.ac
+   law sysexit
+   dac u.swapret
+   lac o200000
+   tad u.ulistp i
+   dac u.ulistp i
+   jms dskswap; 07000
+   lac 9f+t
+   dac u.ulistp
+   lac o100000
+   xor u.ulistp i
+   dac u.ulistp i
+   lac u.pid
+   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:
+   clon
+   -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
+   lac 9f+t i
+   dac u.mq
+   dzm 9f+t i
+   jmp sysexit
+t = t+1
+
+.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 lu+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 9f+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
+   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; wdspo; wppto
+
+.halt: jms halt
+
+rttyi:
+   jms chkint1
+   lac d1
+   jms getchar
+      jmp 1f
+   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 fallr
+   lmq
+   lac sfiles+1
+   spa
+   jmp 1f
+   xor o400000
+   dac sfiles+1
+   lacq
+   tls
+   sad o12
+   jms putcr
+   jmp fallr
+1:
+   lacq
+   dac char
+   jms putchar
+      skp
+   jmp fallr
+   jms sleep; sfiles+1
+   jms swap
+   jmp wttyo
+
+rkbdi:
+   jms chkint1
+   lac d3
+   jms getchar
+      jmp 3f
+   lmq
+   and o155
+   sad o55
+   jmp 1f
+   lacq
+   and o137
+   sad o134
+   skp
+   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 rkbdi
+
+wdspo:
+   jms chkint1
+   jms forall
+   jms dspput
+      jmp fallr
+   jms sleep; sfiles+6
+   jms swap
+   jmp wdspo
+
+
+rppti:
+   lac d4
+   jms getchar
+      jmp .+3
+   alss 9
+   jmp passone
+   lac sfiles+3
+   sma
+   rsa
+1:
+   jms sleep; sfiles+3
+   jms swap
+   jmp rppti
+
+wppto:
+   jms forall
+   sna
+   jmp fallr
+   lmq
+   lac sfiles+4
+   spa
+   jmp 1f
+   xor o400000
+   dac sfiles+4
+   lacq
+   psa
+   jmp fallr
+1:
+   lacq
+   dac char
+   lac d5
+   jms putchar
+      skp
+   jmp fallr
+   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
+   dac u.ac
+   jmp sysexit
+
+chkint1: 0
+   dzm .insys
+   jms chkint
+      skp
+   jmp .save
+   -1
+   dac .insys
+   jmp chkint1 i
diff --git a/s4.s b/s4.s
new file mode 100644 (file)
index 0000000..2fea802
--- /dev/null
+++ b/s4.s
@@ -0,0 +1,334 @@
+" 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 s.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 s.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 o17777
+   tad o200000
+   dac .+1
+   lac ..
+   jmp laci i
+
+
+betwen: 0
+   lmq cmq
+   lac betwen i
+   dac 9f+t
+   isz betwen
+   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 copy 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
+   dac 9f+t
+   cla
+   jms takeq
+      jmp putchar i
+   tad o40001
+   dac .+4
+   lac 9f+t
+   jms putq
+   lac char
+   dac q2+1 ..
+   isz putchar
+   jmp putchar i
+t = t+1
+
+getchar: 0
+   jms takeq
+      jmp i getchar
+   tad o200001
+   dac .+3
+   cla
+   jms putq
+   lac q2+1 ..
+   isz getchar
+   jmp i getchar
+
+takeq: 0
+   rcl
+   tad lacq1
+   dac .+7
+   tad o640000
+   dac .+17
+   tad d1
+   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 ..
+   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
+   dac 9f+t+2   "* lmq
+   -ndskbs
+   dac 9f+t
+   law dskbs   "* -1 dac 8 written
+   dac 9f+t+1  "* lacq
+1:
+   jmp srcdbs i
+   isz 9f+t+1
+   isz 9f+t
+   jmp 1b
+   isz srcdbs
+   jmp srcdbs i
+
+collapse: 0
+   cla
+   jms srcdbs
+      jmp 1f
+   law dskbs
+1:
+   dac 0f+1
+   dac 0f
+   cma
+   tad d1
+   tad edskbsp
+   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 collapse i
+
+dskrd: 0
+   jms betwen; d2; d7999
+
+      jms halt
+   sad dskaddr
+   jmp dskrd i
+   dac dskaddr
+   jms srcdbs
+      jmp 1f
+   lac dskaddr
+   jms dskio; 06000
+   jmp 2f
+1:
+   dzm 9f+t+1 i
+   law 1
+   tad 9f+t+1
+   dac .+2
+   jms copy; ..; dskbuf; 64
+2:
+   jms collapse
+   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
+   lls 22
+   xor 9f+t
+   xor 9f+t+1
+   xor o200000
+   dac 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
+   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/s5.s b/s5.s
new file mode 100644 (file)
index 0000000..446ce7e
--- /dev/null
+++ b/s5.s
@@ -0,0 +1,273 @@
+" s5
+
+dskswap: 0
+   cll; als 3
+   dac 9f+t
+   jms dsktrans; -64; userdata; 9f+t; dskswap
+   lac 9f+t
+   tad o20
+   dac 9f+t
+   jms dsktrans; -4096; 4096; 9f+t; dskswap
+   isz dskswap
+   jmp dskswap i
+t = t+1
+
+access: 0
+   lac i.flags
+   lmq
+   lac u.uid
+   spa
+   jmp access i
+   sad i.uid
+   lrs 2
+   lacq
+   and mode
+   sza
+   jmp access i
+   jms error
+
+fassign: 0
+   -10
+   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
+   cll; mul; 3
+   lacq
+
+   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
+   ral
+   lac u.base i
+   snl
+   lrs 9
+   and o777
+   jmp forall i
+fallr:
+   lac u.base
+   add o400000
+   dac u.base
+   jmp forall+1
+1:
+   lac u.count
+   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
+   omq
+   dac 9f+t i
+   isz sleep
+   jmp sleep i
+t = t+1
+
+
+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 i.uid
+   -1
+   dac i.nlks
+   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
+   lmq
+   sad o12
+   jms dspnl
+   lac dsploc i
+   sad o400000
+   jmp dspleft
+   omq
+   dac dsploc i
+   isz dsploc
+   jmp i dspput
+
+
+1:
+   jms dspinit
+   jmp dspput i
+
+dspleft:
+   lac dsploc
+   sad edspbuf
+   jmp 1f
+   dac 8
+   lac o400000
+   dac 8 i
+   cla; llss 18+7
+   dac dsploc i
+   jmp dspput i
+
+dspnl: 0
+   lac dsplno
+   sad d33
+   jmp 1f
+   isz dsplno
+   jmp dspnl i
+1:
+   lac o2000
+   wbl
+   isz dspput
+   jmp dspput i
+
+dspinit: 0
+   lac dspbufp3
+   dac dsploc
+   lac o400000
+   dac dspbuf+3
+   dzm dsplno
+   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.cdir
+   jms namei; name
+      jms error
+   jmp argname i
+
+seektell: 0
+   jms arg
+   dac u.base
+
+   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/s6.s b/s6.s
new file mode 100644 (file)
index 0000000..63a5d07
--- /dev/null
+++ b/s6.s
@@ -0,0 +1,344 @@
+" 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+2
+   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.flags
+   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
+   lrss 3
+   dac 9f+t
+   sna
+   jmp namei i
+   dzm di
+1:
+   lac di
+
+
+   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.name+3
+   sad 8 i
+   skp
+   jmp 2f
+   lac d.i
+   isz namei
+   jmp namei i
+2:
+   isz di
+   isz 9f+t
+   jmp 1b
+   jmp namei i
+t = t+2
+
+iget: 0
+   dac ii
+   cll; idiv; 5
+   dac 9f+t
+   lacq
+   tad d2
+   dac 9f+t+1
+   jms dskrd
+   lac 9f+t
+   cll; 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
+
+
+   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
+   dac 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
+
+pget: 0
+   lrss 6
+   dac 9f+t
+   lac i.flags
+
+
+   and o200000
+   sza
+   jmp 2f
+   lac 9f+t
+   jms betwen; d0; d6
+      jmp 1f
+   tad 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; i.dskps; dskbuf; 7
+   jms copyz; dskbuf+7; 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 6
+   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
+   dac 9f+t+1 i
+   lac 9f+t+2
+   jms dskwr
+   lac 9f+t
+   jmp pget i
+t = t+3
+
+iwrite: 0
+   dac 9f+t
+   lac iwrite
+
+
+   dac iread
+   lac cskp
+   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
+   dac 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
+      jms dskwr
+   4:
+      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 iget
+   jmp finac i
+
+dacisize: 0
+   dac i.size
+   jms iput
+   lac i.size
+   jmp dacisize i
diff --git a/s7.s b/s7.s
new file mode 100644 (file)
index 0000000..e12caac
--- /dev/null
+++ b/s7.s
@@ -0,0 +1,350 @@
+" s7
+
+pibreak:
+
+   dpsf
+   jmp 1f
+
+   dpcf
+   dprs
+   dac dpstat
+   sma ral
+   jmp 2f
+   dprc
+   dac dpchar
+   -1
+   dac dpread
+   lac dpstat
+   ral
+2:
+   sma
+   jmp piret
+   -1
+   dac dpwrite
+
+1: clsf
+   jmp 1f
+
+   lpb
+   dac pbsflgs
+   isz s.tim+1
+   skp
+   isz s.tim
+   isz uquant
+cnop:
+   nop
+   -1
+   dac 7
+   clon
+   lac ttydelay
+   spa
+   isz ttydelay
+   skp
+   jms ttyrestart
+   sna
+   jmp piret
+   isz .dsptm
+   skp
+   jmp dsprestart
+   sad d3
+   jmp piret
+   isz .dspb
+   jmp piret
+
+1: dssf
+   jmp 1f
+
+   -1
+   dac .dskb
+
+
+   dsrs
+   dac .dske
+   dscs
+   jmp piret
+
+   sma ral
+   jmp 1f
+   cdf
+   lac .dspb
+   sna
+   jmp piret
+   tad dm3
+   sna
+   jmp dsprestart
+   dac .dspb
+   jmp piret
+dsprestart:
+   lac d1
+   dac .dspb
+   lac dspbufp
+   beg
+   -10
+   dac .dsptm
+   jmp piret
+
+1: sna ral
+   jmp .+3
+   dpcf
+   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
+
+
+   jms putcr
+   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 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
+
+
+
+   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
+
+   jmp 1f
+
+   cpb
+   lpb
+   dac pbsflgs+1
+
+
+   and o2000
+   sna
+   jmp piret
+   jms dspinit
+   lac sfiles+6
+   jms wakeup
+   dac sfiles+6
+   cla
+   wbl
+
+1: crsf
+   jmp 1f
+
+   crrb
+   dac crchar
+   -1
+   dac crread
+   jmp piret
+
+1: crrb
+
+piret:
+   lac 0
+   ral
+   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
+   ral
+   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
+
+
+   cla
+   jmp putcr i
+
+intrp1:
+   lac d6
+   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/s8.s b/s8.s
new file mode 100644 (file)
index 0000000..a301af3
--- /dev/null
+++ b/s8.s
@@ -0,0 +1,208 @@
+
+" s8
+
+" manifests
+mnproc = 10
+dspbsz = 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+dspbsz
+dspbufp3: dspbuf+3
+fblksp: s.fblks
+dacq1: dac q1
+lacq1: lac q1
+q2p: q2
+
+" strings
+initf:
+   <i>n;<i>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
+o212: 0212
+o375: 0375
+o777: 0777
+o2000: 02000
+o4000: 04000
+d7999: 7999
+o10000: 010000
+o17762: 017762
+o17777: 017777
+o20001: 020001
+o40000: 040000
+o40001: 040001
+o70000: 070000
+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
+   .=.+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;0;0
+dsploc: .=.+1
+dsplno: .=.+1
+dspbuf:
+   0065057;0147740;0160000
+   .=.+30
+coldentry:
+   dzm 0100 " not re-entrant
+   caf
+   ion
+   clon
+   law 3072
+   wcga
+   jms dspinit
+   law dspbuf
+   jms movdsp
+   cla
+   jms dskio; 06000
+   jms copy; dskbuf; sysdata; ulist-sysdata
+   lac d3
+   jms namei; initf
+      jms halt
+   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
+dskaddr: .=.+1
+uniqpid: 1
+lu: .=.+4
+sfiles: .=.+10
+dpdata:
+   dpstat: .=.+1
+   dpread: .=.+1
+   dpwrite: .=.+1
+   dpchar: .=.+1
+dspdata:
+   .dspb: .=.+1
+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: ulist
+   u.swapret: 0
+   u.base: 0
+   u.count: 0
+   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.nlks: .=.+1
+   i.size: .=.+1
+   i.uniq: .=.+1
+      .= inode+12
+di: .=.+1
+dnode:
+   d.i: .=.+1
+   d.name: .=.+4
+   d.uniq: .=.+1
+      . = dnode+8
+fnode:
+   f.flags: .=.+1
+   f.badd: .=.+1
+   f.i: 0
+
diff --git a/s9.s b/s9.s
new file mode 100644 (file)
index 0000000..a126ec0
--- /dev/null
+++ b/s9.s
@@ -0,0 +1,112 @@
+" s9 -- cold boot
+
+. = coldentry+4
+
+" zero i-list
+
+   dzm ii
+   jms copyz; dskbuf; 64
+1:
+   lac ii
+   jms dskio; 07000
+   isz ii
+   -710
+   tad ii
+   sza
+   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
+   lac ii
+   jms iget
+   jms copyz; inode; 12
+   jms getw " flags
+   dac i.flags
+   -1
+   dac i.uid
+   jms getw " number links
+   dac i.nlks
+   -2
+   tad xx
+   dac i.size
+   lac ii
+   dac i.uniq
+   law 4096-1
+   dac 8
+   -1
+   tad i.size
+   cma
+   sna
+   jmp 3f
+   dac xx
+
+2:
+   jms getw
+   dac 8 i
+   isz 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
+   jmp 1b
+
+getw: 0
+   jms getc
+   alss 12
+   lmq
+   jms getc
+   alss 6
+   omq
+   lmq
+   jms getc
+   omq
+   lmq
+   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
diff --git a/scope.v b/scope.v
new file mode 100644 (file)
index 0000000..a128ddb
--- /dev/null
+++ b/scope.v
@@ -0,0 +1,861 @@
+r
+
+:la
+x
+fb
+v
+de
+dh
+fk
+nk
+x
+ik
+v
+gh
+ge
+ib
+kb
+me
+mh
+kk
+x
+mn
+r
+
+:lb
+x
+ba
+v
+nb
+x
+gb
+v
+ee
+eh
+gk
+kk
+mh
+me
+kb
+x
+mn
+r
+
+:lc
+x
+kk
+v
+mh
+me
+kb
+gb
+ee
+eh
+hl
+x
+mn
+r
+
+:ld
+x
+ak
+v
+nk
+x
+gk
+v
+eh
+ee
+gb
+kb
+me
+mh
+kk
+x
+mn
+r
+
+:le
+x
+me
+v
+ce
+ag
+ak
+x
+mn
+r
+
+:lf
+x
+me
+v
+ce
+ag
+ak
+x
+fc
+v
+fi
+x
+mn
+r
+
+:lg
+x
+nb
+v
+pe
+ph
+mk
+gk
+eh
+ee
+gb
+jb
+le
+lh
+jk
+x
+mn
+r
+
+:lh
+x
+ab
+v
+nb
+x
+hb
+v
+fe
+fh
+hk
+nk
+x
+mn
+r
+
+:li
+x
+ce
+v
+cg
+eg
+ee
+ce
+x
+gc
+v
+gf
+mf
+x
+mc
+v
+mi
+x
+mn
+r
+
+:lj
+x
+mb
+v
+od
+of
+mh
+fh
+fd
+x
+ce
+v
+cg
+eg
+ee
+ce
+x
+mn
+r
+
+:lk
+x
+cb
+v
+nb
+x
+jb
+v
+ek
+x
+hd
+v
+nl
+x
+mn
+r
+
+:ll
+x
+md
+v
+mj
+x
+mg
+v
+bg
+be
+x
+mn
+r
+
+:lm
+v
+ea
+x
+ha
+v
+fb
+fd
+hf
+fg
+fj
+hk
+nk
+x
+hf
+v
+nf
+x
+mn
+r
+
+:ln
+x
+fb
+v
+nb
+x
+hb
+v
+ff
+fh
+hk
+nk
+x
+mn
+r
+
+:lo
+x
+kb
+v
+hb
+fe
+fh
+hk
+kk
+mh
+me
+kb
+x
+mn
+r
+
+:lp
+x
+pb
+v
+eb
+x
+hb
+v
+fe
+fg
+hk
+kk
+mg
+me
+kb
+x
+mn
+r
+
+:lq
+x
+fk
+v
+pk
+pm
+x
+hk
+v
+fh
+fe
+hb
+kb
+me
+mh
+kk
+x
+mn
+r
+
+:lr
+x
+md
+v
+gd
+x
+fb
+v
+gd
+ff
+fh
+gj
+x
+mn
+r
+
+:ls
+x
+kb
+v
+md
+mh
+lj
+ij
+hh
+gd
+ed
+de
+di
+fj
+x
+mn
+r
+
+:lt
+x
+db
+v
+dj
+x
+ae
+v
+ke
+mf
+mh
+lj
+x
+mn
+r
+
+:lu
+x
+db
+v
+kb
+md
+mg
+ki
+ci
+x
+mk
+v
+ki
+x
+mn
+r
+
+:lv
+x
+db
+v
+mf
+dj
+x
+mn
+r
+
+:lw
+x
+da
+v
+md
+gg
+mj
+dm
+x
+mn
+r
+
+:lx
+x
+db
+v
+nl
+x
+dj
+v
+na
+x
+mn
+r
+
+:ly
+x
+db
+v
+mf
+x
+dj
+v
+oe
+ob
+x
+mn
+r
+
+:lz
+x
+dc
+v
+di
+mb
+mj
+x
+mn
+r
+
+:space
+x
+mn
+r
+
+:excla
+x
+af
+v
+if
+x
+lf
+v
+mg
+nf
+me
+lf
+x
+mn
+r
+
+:quote
+x
+ad
+v
+dd
+x
+ah
+v
+dh
+x
+mn
+r
+
+:number
+x
+ka
+v
+cf
+x
+kf
+v
+ck
+x
+eb
+v
+ej
+x
+ib
+v
+ij
+x
+mn
+r
+
+:dollar
+x
+bj
+v
+bd
+db
+eb
+gd
+gh
+ij
+jj
+lh
+la
+x
+af
+v
+nf
+x
+mn
+r
+
+:accr
+x
+ah
+v
+cd
+x
+mn
+r
+
+:accl
+x
+ad
+v
+ch
+x
+mn
+r
+
+:lparn
+x
+ag
+v
+ce
+ke
+nh
+x
+mn
+r
+
+:rparn
+x
+ae
+v
+cg
+kg
+nd
+x
+mn
+r
+
+:aster
+x
+gb
+v
+gk
+x
+dd
+v
+ki
+x
+dh
+v
+kc
+x
+mn
+r
+
+:plus
+x
+gb
+v
+gk
+x
+cf
+v
+lf
+x
+mn
+r
+
+:comma
+x
+mf
+v
+mg
+oe
+mf
+x
+mn
+r
+
+:minus
+x
+gb
+v
+gk
+x
+mn
+r
+
+:period
+x
+le
+v
+lf
+mf
+me
+le
+x
+mn
+r
+
+:sla
+v
+ak
+x
+v
+bj
+x
+mn
+r
+
+:bsla
+x
+aa
+v
+nl
+x
+mn
+r
+
+:colon
+x
+le
+lf
+mf
+me
+le
+x
+fe
+v
+ff
+gf
+ge
+fe
+x
+mn
+r
+
+:semcln
+x
+mf
+v
+mo
+oe
+mf
+x
+ff
+v
+fg
+gg
+fe
+x
+mn
+r
+
+:less
+x
+cj
+v
+gb
+kj
+x
+mn
+r
+
+:great
+x
+cb
+v
+gj
+kb
+x
+mn
+r
+
+:equal
+x
+eb
+v
+ek
+x
+ib
+v
+ik
+x
+mn
+r
+
+:quest
+x
+eb
+v
+bc
+af
+bi
+ek
+if
+mf
+x
+mn
+r
+
+:lbk
+x
+ai
+v
+af
+mf
+mj
+x
+mn
+r
+
+:rbk
+x
+ac
+v
+af
+mf
+mb
+x
+mn
+r
+
+:cmflx
+x
+bc
+v
+af
+bj
+x
+mn
+r
+
+:under
+x
+na
+v
+nn
+x
+mn
+r
+
+:at
+v
+aa
+ak
+mk
+ma
+x
+ck
+v
+cd
+kd
+kl
+x
+mn
+r
+
+Llbr
+x
+ai
+v
+bf
+ff
+gd
+hf
+lf
+nj
+x
+mn
+r
+
+:rbr
+x
+ac
+v
+bf
+ff
+gh
+hf
+lf
+nb
+x
+mn
+r
+
+:or
+x
+af
+v
+nf
+x
+mn
+r
+
+:tild
+x
+ai
+v
+dh
+ad
+db
+x
+mn
+r
+
+:null
+r
+
+:percent
+v
+ak
+ab
+eb
+ef
+af
+x
+hg
+v
+hk
+lk
+lg
+hg
+x
+mn
+r
+
+:amper
+x
+mk
+v
+ki
+gf
+ee
+dd
+cd
+ae
+af
+bg
+cg
+ef
+fe
+gc
+ib
+kc
+ld
+mf
+lh
+ik
+x
+mn
+r
+
+
diff --git a/sop.s b/sop.s
new file mode 100644 (file)
index 0000000..0ae3b6a
--- /dev/null
+++ b/sop.s
@@ -0,0 +1,95 @@
+" sop
+
+dac = 0040000
+jms = 0100000
+dzm = 0140000
+lac = 0200000
+xor = 0240000
+add = 0300000
+tad = 0340000
+xct = 0400000
+isz = 0440000
+and = 0500000
+sad = 0540000
+jmp = 0600000
+nop = 0740000
+i = 020000
+law = 0760000
+cma = 0740001
+las = 0750004
+ral = 0740010
+rar = 0740020
+hlt = 0740040
+sma = 0740100
+sza = 0740200
+snl = 0740400
+skp = 0741000
+sna = 0741200
+szl = 0741400
+rtl = 0742010
+rtr = 0742020
+cil = 0744000
+rcl = 0744010
+rcr = 0744020
+cia = 0750000
+lrs = 0640500
+lrss = 0660500
+lls = 0640600
+llss = 0660600
+als = 0640700
+alss = 0660700
+mul = 0653323
+idiv = 0653323
+lacq = 0641002
+clq = 0650000
+omq = 0650002
+cmq = 0650004
+lmq = 0652000
+
+dscs = 0707141
+dslw = 0707124
+dslm = 0707142
+dsld = 0707104
+dsls = 0707144
+dssf = 0707121
+dsrs = 0707132
+
+iof = 0700002
+ion = 0700042
+caf = 0703302
+clon = 0700044
+clsf = 0700001
+
+clof = 0700004
+ksf = 0700301
+krb = 0700312
+tsf = 0700401
+tcf = 0700402
+tls = 0700406
+sck = 0704301
+cck = 0704304
+lck = 0704312
+rsf = 0700101
+rsa = 0700104
+rrb = 0700112
+psf = 0700201
+pcf = 0700202
+psa = 0700204
+cdf = 0700501
+lds = 0701052
+lda = 0701012
+wcga = 0704206
+raef = 0700742
+rlpd = 0700723
+beg = 0700547
+spb = 0704401
+cpb = 0704404
+lpb = 0704412
+wbl = 0704424
+dprs = 0704752
+dpsf = 0704741
+dpcf = 0704761
+dprc = 0704712
+crsf = 0706701
+crrb = 0706712
+
diff --git a/sysmap b/sysmap
new file mode 100644 (file)
index 0000000..c20f1fe
--- /dev/null
+++ b/sysmap
@@ -0,0 +1,259 @@
+.        004671 r
+.ac      004012 r
+.chown  000426 r
+.capt   000404 r
+.creat   000665 r
+.chdir  000622 r
+.chmod   000414 r
+.dskb   004105 r
+.dspb   005547 r
+.dsptm  004104 r
+.dske   004106 r
+.exit   001170 r
+.fork   001116 r
+.getuid  000433 r
+.halt   001343 r
+.int1   004100 r
+.insys  004077 r
+.int2   004101 r
+.intrp  000257 r
+.link    000474 r
+.lpba   005550 r
+.open   000633 r
+.rmes   001204 r
+.rele   000410 r
+.rename         000547 r
+.read   000731 r
+.smes   001232 r
+.savblk         004103 r
+.sysloc         000262 r
+.setuid         000566 r
+.status         000352 r
+.save   001156 r
+.seek   000436 r
+.tell   000466 r
+.time   000615 r
+.unlink         000547 r
+.write  001000 r
+access  002323 r
+alloc   001556 r
+argname         002642 r
+arg     002636 r
+awake   001311 r
+badcal  001153 r
+betwen  001654 r
+c1      004270 r
+chkint  000320 r
+chkink1         001546 r
+char    005522 r
+cnop    003453 r
+coldentr 004520 r
+copyz   001723 r
+collapse 002066 r
+copy    001700 r
+crdata  005551 r
+crchar  005552 r
+crread  005551 r
+cskp    003346 r
+d.name  005761 r
+d.uniq  005765 r
+d.i     005760 r
+d0       004127 r
+d10     004141 r
+d1      004130 r
+d2      004131 r
+d33     004153 r
+d3      004132 r
+d4      004133 r
+d5      004134 r
+d6      004135 r
+d65     004155 r
+d7999   004166 r
+d7      004136 r
+d8      004137 r
+d9      004140 r
+dacq1   004120 r
+dacu    004110 r
+dacisize 003413 r
+dget    003115 r
+di      005757 r
+dm1     004215 r
+dm3     004214 r
+dnode   005760 r
+dpdata  005543 r
+dput    003147 r
+dpchar  005546 r
+dpwrite         005545 r
+dpstat  005543 r
+dpread  005544 r
+dskbufp         004114 r
+dskio   002173 r
+dspdata         005547 r
+dskrd   002127 r
+dsktrans 002231 r
+dsploc  004455 r
+dslot   002474 r
+dspino  004456 r
+dspbufp3 004116 r
+dspbufp         005506 r
+dspresta 003523        r
+dskaddr         005523 r
+dskbs   005100 r
+dskwr   002157 r
+dspput  002551 r
+dspleft         002573 r
+dspbuf  004457 r
+error   001542 r
+exitrw  001041 r
+f.badd  005771 r
+f.flags         005770 r
+fassign         002340 r
+fallr   002436 r
+fblksp  004117 r
+fget    002371 r
+finac   003401 r
+fnode   005770 r
+forall  002434 r
+fput    003413 r
+free    001615 r
+getchar         001756 r
+getw    004635 r
+getc    004654 r
+halt    002265 r
+i.flags         005743 r
+i.dskps         005744 r
+i.uniq  005756 r
+i.size  005755 r
+i.nlks  005754 r
+i.uid   005753 r
+icreat  002506 r
+idskpp  004113 r
+iget    003030 r
+ii      005742 r
+inode   005743 r
+intrp1  004032 r
+intrp2  004055 r
+initf   004123 r
+iput    003057 r
+iread   003277 r
+isown   002675 r
+itrunc  002706 r
+iwrite  003270 r
+laci    001646 r
+lacq1   004121 r
+lnkaddr         005521 r
+lookfor         001073 r
+locsw   000275 r
+locn    000317 r
+lu      005525 r
+maxquant 004111 r
+mode    005511 r
+movdsp  002626 r
+name    005515 r
+namei   002750 r
+npptchar 005513 r
+nttychar 005512 r
+o10000  004167 r
+o17     004144 r
+o177    004160 r
+o101    004152 r
+o17762  004170 r
+o17777  004171 r
+o12     004141 r
+o132    004154 r
+o134    004155 r
+o137    004156 r
+o100000         004177 r
+o140000         004200 r
+o14     004142 r
+o15     004143 r
+0155    004157 r
+o2000   004164 r
+o200001         004262 r
+o20001  004172 r
+020     004145 r
+o212    004161 r
+o200000         004201 r
+o375    004162 r
+o33     004146 r
+o300000         004203 r
+o4000   004165 r
+o40000  004173 r
+o40     004147 r
+o400000         004204 r
+o500000         004205 r
+o55     004150 r
+o577777         004206 r
+o600000         004207 r
+o640000         004210 r
+o777    004163 r
+o77     004157 r
+o70000  004175 r
+o77777  004176 r
+o777760         004213 r
+o7      004136 r
+o700000         004211 r
+o777700         004212 r
+ofilesp         004112 r
+okexit  000102 r
+open1   000722 r
+orig    000000 r
+passone         001534 r
+pbsflgs         005507 r
+pget    003163 r
+piret   003766 r
+pibreak         003420 r
+putchar         001741 r
+putq    002022 r
+putcr   004025 r
+q1      004271 r
+q2p     004122 r
+q2      004311 r
+rkbdi   001415 r
+rppti   001472 r
+rttyi   001344 r
+s.tim   005570 r
+s.nxfblk 005553 r
+s.uniq  005567 r
+s.nfblks 005554 r
+s.fblks         005555 r
+seektell 002656 r
+searchu         001047 r
+sfiles  005551 r
+sleep   002445 r
+srcdbs  002046 r
+sum     004670 r
+swr     001331 r
+swp     000220 r
+swn     000256 r
+sww     001331 r
+swap    000136 r
+sysdata         005553 r
+sysexit         000103 r
+takeq   001770 r
+tadu    004107 r
+ttydelay 005514 r
+ttyresta 003603 r
+u.dspbuf 005723 r
+u.intflg 005724 r
+u.ulistp 005660 r
+u.pid   005656 r
+u.ofiles 005665 r
+u.swapre 005661 r
+u.mq    005643 r
+u.uid   005655 r
+u.ac    005642 r
+u.limit         005664 r
+u.cdir  005657 r
+u.count         005663 r
+u.base  005662 r
+u.rq    005644 r
+ulsit   005562 r
+uniqpid         005524 r
+uquant  005505 r
+userdata 005642 r
+wakeup  003773 r
+wdspo   001462 r
+wppto   001506 r
+wttyo   001364 r
+xx      004667 r
diff --git a/trysys.s b/trysys.s
new file mode 100644 (file)
index 0000000..2988b2f
--- /dev/null
+++ b/trysys.s
@@ -0,0 +1,39 @@
+" trysys
+
+   sys open; a.out; 0
+   spa
+   jmp error
+   sys read; buf; 3072
+   sad .-1
+   jmp error
+   iof
+   caf
+   cdf
+   clof
+   law buf
+   dac t1
+   dzm t2
+   -3072
+   dac c1
+1:
+   lac t1 i
+   dac t2 i
+   isz t1
+   isz t2
+   isz c1
+   jmp 1b
+   jmp 0100
+
+error:
+   lac d1
+   sys write; 1f; 1
+   sys exit
+1: 077012
+
+a.out:
+   <a.>;<ou>;<t 040; 040040
+t1: 0
+t2: 0
+c1: 0
+d1: 1
+buf: