1
0
mirror of https://github.com/livingcomputermuseum/pdp7-unix.git synced 2026-04-18 17:07:59 +00:00
Files
2019-10-20 23:54:50 +02:00

264 lines
3.0 KiB
ArmAsm

"** 13-120-147.pdf page 14
move: 0
dac 9f+t
lac move i
1:dac 2f
lac 9f+t
jms lchar
dac 9f+t+1
jms dchar
2: 0
lac 9f+t+1
sad o777
jmp 3f
lac o400000
add 9f+t
dac 9f+t
lac o400000
add 2b
jmp 1b
3:isz move
lac 2b
jmp move i
t=t+1 "source address
t=t+1 "source character
lchar:0
dac junk
ral
lac junk i
snl
lrs 9
and o777
jmp lchar i
dchar:0
lmq
lac dchar i
dac junk
spa
jmp 1f
llss 9
lac o777
jmp .+2
1:0777000
and junk i
omq
dac junk i
isz dchar
jmp dchar i
" gets designated character from input
jget:0
1:lac j
jms cbetween; add jmin; add jmax
jmp jmore
cma
add jmin
cma
add jbot
jms lchar
jms class; add ignore
"** 13-120-147.pdf page 15
jmp jget i
lac j
add o400000
dac j
jmp 1b
" read more input - filthy code, enough to make disk &
" terminal input work. Theae only deliver full count
" except at eof or 1 word
jmore:
and o377700
dac jmin
add ljsiz
dac 9f+t
lac jmax
jms cbetween; add jmin; add 9f+t
lac jmin
dac jmax
dac 1f
cma
add jmin
cma
add jbot
dac 2f
lac input
sys seek
1:0;0
-1
dac 2f i
lac input
sys read
2:0;jsiz
sna
lac d1
add jmax
dac jmax
jmp jget+1
t=t+1
" gets next character from input
getj:0
lac j
jms jget
dac junk
lac j
add o400000
dac j
lac junk
jmp getj i
" compare two strings - assume both left justified
comp:0
dac 9f+t
lac comp i
dac 9f+t+1
isz comp
1:lac 9f+t i
sad 9f+t+1 i
"** 13-120-147.pdf page 16
jmp 3f
and 9f+t+1 i "do both start with eof?
spa
2:isz comp
jmp comp i
3:and o600600 "is there an eof?
sza
jmp 2b
isz 9f+t
isz 9f+t+1
jmp 1b
t=t+1 "address of string 1
t=t+1 "address of string 2
obuild:0
lmq
lac owrite
add obot
dac 2f
lacq
1:jms move
2:0
cma
add obot
cma
dac owrite
jms cbetween; add d0; add omax
skp
jmp obuild i
lac lochunk
jms oflush
lac obot
dac 2b
add lochunk
jmp 1b
oflush:0
dac 2f
lac obot
dac 1f
lac output
sys write
1:0
2:0
jmp oflush i
" outputs octal string from sesignated value
octal:
isz ii
lac ii i
dac 2f
lac 1f
jms twoktab
lac 2f i
1:gf geoctal x
2:0
"** 13-120-147.pdf page 17
geoctal:
lac ii
dac 8
lac 8 i
jms putoct
jmp ggoon
" converts word in ac into ocatl on output stream
putoct:0
dac 9f+t
lac 7f
jms obuild
dzm 9f+t+2
-6
dac 9f+t+1
1:lac 9f+t
cll
lrs 15
add o60
dac 8f+1
lls 18
dac 9f+t
lac 9f+t+2 "have nonzero digits been seen?
sza
jmp 2f
lac 8f+1 "no,is this nonzero?
sad o60
jmp 3f "no
2:lac 8f
jms obuild
law
dac 9f+t+2
3:isz 9f+t+1
jmp 1b
jmp putoct i
t=t+1 "value to convert
t=t+1 "digit count
t=t+1 "nonzero digit flag
7: .+1; 060777
8:0400000 .+1;0;end
eof:
lac j
dac jsav
jms jget
sad o777
jmp goon
jmp backup
class:0
dac junk1
lrss 7
sza
jmp 2f
lls 3
xct class i
isz class
dac junk
"** 13-120-147.pdf page 18
cla
llss 4
add l.llss
dac 1f
lac junk i
1:llss
spa
2:isz class
lac junk1
jmp class i