mirror of
https://github.com/DoctorWkt/pdp7-unix.git
synced 2026-01-26 04:02:27 +00:00
586 lines
7.2 KiB
ArmAsm
586 lines
7.2 KiB
ArmAsm
" 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 |