1
0
mirror of https://github.com/DoctorWkt/pdp7-unix.git synced 2026-04-26 12:17:07 +00:00
Files
DoctorWkt.pdp7-unix/scans/joshd-s4.s
2016-02-26 14:15:31 -08:00

342 lines
4.1 KiB
ArmAsm

" s4
alloc: 0
-1
tad s.nfblks
spa
jmp 1f
dac s.nflblks
tad fblksp
jms laci
dac 9f+t
jms copyz; dskbuf; 64
lac 9f+t
jms dskwr
dzm .savblk
lac 9f+t
jmp alloc i
1:
lac s.nxfblk
sna
jms halt " OUT OF DISK
dac s.fblks
jms dskrd
lac dskbuf
dac s.nxfblk
jms copy; dskbuf+1; s.fblks+1; 9
lac d10
dac s.nflblks
jmp alloc+1
free: 0
lmq
lac s.nflblks
sad d10
jmp 1f
tad fblksp
dac 9f+t
lacq
dac 9f+t i
dzm .savblk
isz s.nfblks
jmp free i
1:
lac s.nxfblk
dac dskbuf
jms copy; s.fblks+1; dskbuf+1; 9
lacq
dac s.nxfblk
jms dskwr
dzm .savblk
lac d1
dac s.nfblks
jmp free i
t = t+1
laci: 0
and o17777
tad o200000
dac .+1
lac ..
jmp laci i
betwen: 0
lmq cmq
lac betwen i
dac 9f+t
isz betwen
lacq
tad 9f+t i
sma
jmp 1f
lac betwen i
dac 9f+t
isz betwen
lacq
tad 9f+t i
cma
spa sna
1:
isz betwen
lacq
cma
jmp betwen i
copy: 0
-1
tad copy i
dac 8
isz copy
-1
tad copy i
dac 9
isz copy
-1
tad copy i
cma
dac 9f+t
isz copy
1:
lac 8 i
dac 9 i
isz 9f+t
jmp 1b
jmp copy i
copyz: 0
-1
tad copyz i " -> xct
dac 8
isz copyz
-1 " -> xct
tad copyz i
cma
dac 9f+t
isz copyz
1:
dzm 8 i
isz 9f+t
jmp 1b
jmp copyz i
t = t+1
putchar: 0
dac 9f+t
cla
jms takeq
jmp putchar i
tad o40001
dac .+4
lac 9f+t
jms putq
lac char
dac q2+1 ..
isz putchar
jmp putchar i
t = t+1
getchar: 0
jms takeq
jmp i getchar
tad o200001
dac .+3
cla
jms putq
lac q2+1 ..
isz getchar
jmp i getchar
takeq: 0
rcl
tad lacq1
dac .+7
tad o640000
dac .+17
tad d1
dac .+14
tad o500000
dac .+5
lac q1 ..
sna
jmp takeq i
dac lnkaddr
sad q1+1 ..
jmp .+5
tad o200000
dac .+1
lac q2 ..
jmp .+3
cla
dac q1+1 ..
dac q1 ..
isz takeq
lac lnkaddr
jmp i takeq
putq: 0
rcl
tad dacq1
dac .+14
tad d1
dac .+13
tad o140000
dac .+1
lac q1+1 ..
sna
jmp .+6
tad o40000
dac .+2
lac lnkaddr
dac q2 ..
jmp .+3
lac lnkaddr
dac q1 ..
dac q1+1 ..
jmp putq i
srcdbs: 0
dac 9f+t+2 " lmq
-ndskbs
dac 9f+t
law dskbs " -1 dac 8
dac 9f+t+1 " lacq
1:
lac 9f+t+2
sad 9f+t+1 i " 8i
jmp srcdbs i
law ?? " ???
tad 9f+t+1
dac 9f+t+1 " isz 8
isz 9f+t
jmp 1b
isz srcdbs
jmp srcdbs i
collapse:
cla
jms srcdbs
jmp 1f
law dskbs
dac 9f+t+1 " 8
1:
lac 9f+t+1 " 8
dac 0f+1
tad d05 " ???
dac 0f
cma
tad d1
tad edskbsp
and 017777
sna
jmp 0f+3
dac 0f+2
jms copy; 0;..;..;..
-65
tad edskbsp
dac 9f+t
tad d1
dac 0f
lac dskaddr
dac 9f+t i
jms copy; dskbuf; 0;..; 64
jmp collapse i
diskrd: 0
jms betwen; d2; d7999
jms halt
sad dskaddr
jmp dskrd i
dac dskaddr
jms srcdbs
jmp 1f
lac dskaddr
jms dskio; 06000
jmp 2f
1:
dzm 9f+t=1 i
law 1
tad 9f+t+1
dac .+2
jms copy; ..; dskbuf; 64
2:
jms collapse
jmp diskrd i
diskwr: 0
jms betwen; d2; d7999
jms halt
jms dskio; 07000
lac dskadr
jms srcdbs
dzm 9f+t+1 i
jms collapse
jmp dskwr i
t = t+3
dskio: 0
dac dskaddr
cll; idiv; 80
dac 9f+t
lacq
ldiv; 10
dac 9f+t+1
lls 22
xor 9f+t+1
als 8
dac 9f+t+1
lac 9f+t
ldiv; 10
dac 9f+t
lls 22
xor 9f+t
xor 9f+t+1
xor o200000
dac 9f+t
jms dsktrans; -64; dskbuf; 9f+t; dskio
isz dskio
jmp dskio i
t = t+1
dsktrans: 0
-10
dac 9f+t
1:
-1
tad dsktrans
dac 12
dscs
lac 12 i
dslw
lac 12 i
dslm
lac 12 i
jms laci
dsld
dzm .dskb
lac 12 i
jms laci
jms laci
dsls
lac .dskb
sna
jmp .-2
lac .dske
sma
jmp 12 i
isz 9f+t
jmp 1b
jms halt " 10 disk errors
t = t+1
halt: 0
isz 9f+t
jmp .-1
iof
hlt
jms copy; lw; 4096; 4096
hlt; jmp .-1
t = t+1