1
0
mirror of https://github.com/DoctorWkt/pdp7-unix.git synced 2026-02-26 08:53:49 +00:00
Files
DoctorWkt.pdp7-unix/scans/t2.s
2019-10-18 07:43:17 -04:00

412 lines
4.5 KiB
ArmAsm

"** 13-120-147.pdf page 7
" recognition stack frame advance
advance:0
lac frame
dac 8
lac advance i
dac 8 i
lac ii
dac 8 i
lac ignore
dac 8 i
lac j
dac 8 i
lac k
dac 8 i
lac frame
dac nframe i
lac nframe
dac frame
add dffrmsz
dac nframe
dac nframe
jms between; add rbot; add rtop
jms halt
isz advance
jmp advance i
retreat:
dmz junk
lac gflag
sza
jmp 1f
jms bundlep
dac junk
1:lac frame
dac nframe
lac frame i
dac frame
dac 8
lac 8 i
dac 3f "retrun address
lac 8 i
dac ii
lac 8 i
dac ignore
lac fflag
sna
jmp 2f
lac 8 i "restore j and k on failure
dac j
lac 8 i
dac k
2:lac junk
sna
jmp 3f
dac nframe i "stass reslts
isz nframe
3:jmp
" bundle up results and return single pointer to them in ac
" return 0 if no results
"** 13-120-147.pdf page 8
bundlep:0
lac fflag
sza
jmp 2f "no results on failure
jms nframe0
dac 9f+t
cma
tad nframe
cma
dac 9f+t+1
sma
jmp 2f
sad m1
jmp 3f "only one result, no bundling necessary
lac 9f+t
tad m1
dac 8
1:lac 8 i
jms kput
isz 9f+t+1
jmp 1b
lac k "make up result pointer
add l.gk
jmp bundlep i
2:cla
jmp bundlep i
3:lac 9f+t i
jmp bundlep i
t=t+1 "where to find results
t=t+1 "negative of result count
" the main interpreter loop
" locate original value of nframe for present stack level.
nframe0:0
jms s1get; add d.ii
dac junk
lac junk i
dac junk
lac junk i
and opmask
sad l.rw
jmp 1f
lac refrsz
jmp 2f
1:lac junk i
and o17777
2:add frame
jmp nframe0 i
halt:0
lac 1f
jms obuild
lac halt
jms putoct
lac onenl
jms obuild
xct rstack+1
1:.+1;012077;end
"** 13-120-147.pdf page 9
rinterp:
las "trace check
and d5
sna
jmp .+3
lac bugr
jms bug
lac fflag
ral
lac ii i
and opmask
sad l.ra
jmp rera
sad l.rb
jmp rerb
szl
jmp retreat
lrs 14
and o17
add rbranch
dac .+1
jmp
rbranch:
jmp .+1 i
reno
rerx
rerc
regc
rerf
rerw
rera
reuu
rero
rerm
rers
rerv
reuu
reuu
reuu
reuu
reuu:
jms halt
rerb:
cml
rera:
dmz fflag
snl
jmp goon
jms aget
dac ii
jmp rinterp
backup:
lac jsav
dac j
nuts:
law
"** 13-120-147.pdf page 10
dac fflag
reno:
goon:
lac ii i
isz ii
and exitmask
sza
jmp retreat
jmp rinterp
rerw:
jms aget
add frame
dac nframe
jmp goon
rerc:
jms advance; jmp goon
jms aget
dac ii
jmp rinterp
gegf:
rerf:
jms aget
add ljmp
dac .+1
jmp
rerx:
lac j
dac jsav
jms aget
1:dac 9f+t
jms lchar
sad o777
jmp goon
dac 9f+t+1
jms getj
sad 9f+t+1
jmp 2f
jmp backup
2:lac 9f+t
add o400000
jmp 1b
t=t+1 "address of next comparison char
t=t+1 "character itself
aget:0
lac ii i
and o17777
jmp aget i
regc:
lac ii i
and o757777
xor exitmask
dac nframe i
"** 13-120-147.pdf page 11
isz nframe
jmp goon
kput:0
isz k
dac junk1
lac k
jms between; add d0; add kmax
jms halt
add kbot
dac junk
lac junk1
dac junk i
jmp kput i
s0get:0
lac frame
xct s0get i
dac junk
lac junk i
isz s0get
jmp s0get i
s1get:0
lac frame i
xct s1get i
dac junk
lac junk i
isz s1get
jmp s1get i
s0put:0
lmq
lac frame
xct s0put i
dac junk
lacq
dac junk i
isz s0put
jmp s0put i
" here is the generaion interpreter
" the k table cant move while its active
geno:
ggoon:
lac ii i
isz ii
and exitmask
sza
jmp retreat
ginterp:
las "trace check
and d6
sna
jmp .+3
lac bugg
jms bug
lac ii i
lrss 14
and o7
"** 13-120-147.pdf page 12
add gbranch
dac .+1
jmp
gbranch:
jmp .+1 i
geno
gegx
geuu
gegc
gegf
gegk
gegp
gegq
geuu:
jms halt
gegx:
lac ii i
and o417777
jms obuild
jmp ggoon
gegq:
jms advance; jmp ggoon
lac env
add d.ii
dac jumk
jms aget
add junk i
dac junk
lac junk i
dac ii
lac env
add d.env
dac junk
lac junk i
dac env
jmp ginterp
gegp:
jms advance; jmp ggoon
lac env
add d.ii
dac junk
lac frame i
dac env
jms aget
cma
add junk i
dac ii
jmp ginterp
gegk:
lac ii i
jms aget
add kbot
dac ii
jms s0put; add d.ii
lac frame
"** 13-120-147.pdf page 13
dac env
jmp ginterp
gegc:
jms advance; jmp ggoon
jms aget
dac ii
jmp ginterp
bug:0
dac 1f+2
lac onenl
jms obuild
lac ii
jms putoct
lac ii i
lrs 14
and o17
add 1f+2
dac 1f+2
lac 1f+2 i
dac 1f+2
lac 1f
jms obuild
lac ii i
jms putoct
las
and d4
sza
jms halt
jmp bug i
1:0400000 .+1; 040; 0; 040777