Research PDP7 release Research-PDP7
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)
Snapshot of the completed development branch

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: