Research PDP7 development
[unix-history] / cas.s
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