swh:1:snp:2ca5d6eff8f04a671c0d5b13646cede522c64b7d
Raw File
Tip revision: 69f28986ad97c1e3d55279d696d1884c963f530e authored by Ken Thompson on 30 June 1970, 10:00:00 UTC
Research PDP7 development
Tip revision: 69f2898
cas.s
" 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
back to top