mirror of
https://github.com/DoctorWkt/pdp7-unix.git
synced 2026-01-30 13:37:06 +00:00
501 lines
5.5 KiB
ArmAsm
501 lines
5.5 KiB
ArmAsm
" ds
|
|
|
|
lac 017777 i
|
|
sad d8
|
|
skp
|
|
sys exit
|
|
lac 017777
|
|
tad d5
|
|
dac .+3
|
|
law 017
|
|
sys creat; ..
|
|
dac fo
|
|
law 017
|
|
sys creat; scrname
|
|
spa; jms error
|
|
dac fso
|
|
sys open; scrname; 0
|
|
spa; jms error
|
|
dac fsi
|
|
sys chdir; dd
|
|
spa; jms error
|
|
lac d1
|
|
sys write; pass1; 1
|
|
law fsobuf
|
|
dac fsopt
|
|
dzm nfiles
|
|
law fbuf
|
|
dac filp
|
|
dzm ndirs
|
|
law dbuf
|
|
dac dirp
|
|
dzm fsloc
|
|
sys open; dotdot; 0
|
|
spa; jms error
|
|
dac fd
|
|
jms readdir; dotdot
|
|
law statbuf
|
|
sys status; dotdot; dotdot
|
|
spa; jms error
|
|
lac statbuf+12 " i index
|
|
dac dirp i
|
|
isz dirp
|
|
-1
|
|
tad nfiles
|
|
cma
|
|
dac ddfiles
|
|
law fbuf
|
|
dac ddfilp
|
|
|
|
loop:
|
|
-1
|
|
tad ndirs
|
|
cma
|
|
dac c1
|
|
law dbuf
|
|
dac i1
|
|
|
|
1:
|
|
isz i1
|
|
lac i1 i
|
|
sad ddfilp i
|
|
jmp 2f
|
|
isz i1
|
|
isz c1
|
|
jmp 1b
|
|
|
|
lac ddfilp
|
|
tad i1
|
|
dac i1
|
|
lac i1 i
|
|
dac .+3
|
|
lac fsi
|
|
sys seek; ..; 0
|
|
lac fsi
|
|
sys read; scrname; 4
|
|
law statbuf
|
|
sys status; dotdot; scrname
|
|
spa; jms error
|
|
lac statbuf+0 " flags
|
|
and o20
|
|
sna
|
|
jmp 2f
|
|
sys open; scrname; 0
|
|
spa; jms error
|
|
dac fd
|
|
jms readdir; scrname
|
|
lac ddfilp i
|
|
dac dirp i
|
|
isz dirp
|
|
|
|
2:
|
|
isz ddfilp
|
|
isz ddfilp
|
|
isz ddfiles
|
|
jmp loop
|
|
|
|
" output phase
|
|
|
|
lac fso
|
|
sys write; fsobuf; 64
|
|
lac d1
|
|
sys write; pass2; 2
|
|
-500
|
|
dac c1
|
|
|
|
1:
|
|
law dbuf+2
|
|
dac i1
|
|
dzm fflg
|
|
law fbuf
|
|
dac i2
|
|
r1
|
|
tad nfiles
|
|
cma
|
|
dac c2
|
|
|
|
2:
|
|
lac c1
|
|
tad d501
|
|
sad i2 i
|
|
skp
|
|
jmp 3f
|
|
-1
|
|
tad i1
|
|
dac i3
|
|
iac i3 i
|
|
dac c3
|
|
law fbuf
|
|
dac i3
|
|
0:
|
|
lac i3 i
|
|
sad c3
|
|
jmp 0f
|
|
isz i3
|
|
isz i3
|
|
jmp 0b
|
|
0:
|
|
lac i3
|
|
tad d1
|
|
dac c3
|
|
lac c3 i
|
|
dac .+3
|
|
lac fsi
|
|
sys seek; ..; 0
|
|
lac fsi
|
|
sys read; scrname; 4
|
|
lac i2
|
|
tad d1
|
|
dac c3
|
|
lac c3 i
|
|
dac .+3
|
|
lac fsi
|
|
sys seek; ..; 0
|
|
lac fsi
|
|
sys read; dd; 4
|
|
lac fflg
|
|
sza
|
|
jmp 0f
|
|
|
|
lac nlinkt
|
|
sad nlinka
|
|
skp
|
|
jms fishy
|
|
dzm nlinka
|
|
law 012
|
|
jms putc
|
|
law statbuf
|
|
sys status; scrname; dd
|
|
spa; jms error
|
|
-1
|
|
tad statbuf+9
|
|
cma
|
|
dac nlinkt
|
|
-1
|
|
dac fflg
|
|
jms longout
|
|
law 012
|
|
jms putc
|
|
0:
|
|
isz nlinka
|
|
jms putname; scrname
|
|
jms putname; dd
|
|
law 012
|
|
jms putc
|
|
|
|
3:
|
|
isz i2
|
|
isz i2
|
|
lac i2
|
|
sad i1 i
|
|
skp
|
|
jmp .+3
|
|
isz i1
|
|
isz i1
|
|
isz c2
|
|
jmp 2b
|
|
|
|
isz c1
|
|
jmp 1b
|
|
lac nlinkt
|
|
sad nlinka
|
|
skp
|
|
jms fishy
|
|
|
|
sys chdir; system
|
|
jmp done
|
|
|
|
fishy: 0
|
|
jms asters
|
|
jms asters
|
|
law 012
|
|
jms putc
|
|
lac d1
|
|
sys write; 1f; 1
|
|
jmp fishy i
|
|
1: 052012
|
|
|
|
nlinka: 0
|
|
nlinkt: 0
|
|
|
|
asters: 0
|
|
-10
|
|
dac c
|
|
1:
|
|
law 052
|
|
jms putc
|
|
isz c
|
|
jmp 1b
|
|
jmp asters i
|
|
|
|
longout: 0
|
|
lac statbuf+12 " i
|
|
jms octal; -3
|
|
lac statbuf+0 " flags
|
|
jms octal; -2
|
|
lac statbuf+8 " uid
|
|
jms octal; -2
|
|
-1
|
|
tad statbuf+9 " nlinks
|
|
cma
|
|
jms octal; -2
|
|
lac statbuf+10
|
|
jms octal; -5
|
|
jmp longout i
|
|
|
|
readdir: 0
|
|
law 012
|
|
jms putc
|
|
law 012
|
|
jms putc
|
|
jms asters
|
|
lac readdir i
|
|
dac 5f
|
|
dac .+2
|
|
jms putname; ..
|
|
jms asters
|
|
law 012
|
|
jms putc
|
|
law 012
|
|
jms putc
|
|
isz readdir
|
|
isz ndirs
|
|
lac filp
|
|
dac dirp i
|
|
isz dirp
|
|
0:
|
|
jms copyz; buf; 64
|
|
lac fd
|
|
sys read; buf; 64
|
|
spa; jms error
|
|
sna
|
|
jmp 4f
|
|
-8
|
|
dac c1
|
|
law buf
|
|
dac i1
|
|
1:
|
|
lac i1 i
|
|
sna
|
|
jmp 3f
|
|
|
|
isz nfiles
|
|
dac filp i
|
|
isz filp
|
|
lac fsloc
|
|
dac filp i
|
|
tad d4
|
|
dac fsloc
|
|
isz filp
|
|
lac i1
|
|
tad d1
|
|
dac .+4
|
|
law statbuf
|
|
sys status; 5:..; ..
|
|
spa; jms error
|
|
jms longout
|
|
lac i1
|
|
tad d1
|
|
dac .+2
|
|
jms putname; ..
|
|
law 012
|
|
jms putc
|
|
lac i1
|
|
dac 8
|
|
lac 8 i
|
|
dac fsopt i
|
|
isz fsopt
|
|
lac 8 i
|
|
dac fsopt i
|
|
isz fsopt
|
|
lac 8 i
|
|
dac fsopt i
|
|
isz fsopt
|
|
lac 8 i
|
|
dac fsopt i
|
|
isz fsopt
|
|
law fsobuf+64
|
|
sad fsopt
|
|
skp
|
|
jmp 3f
|
|
lac fso
|
|
sys write; fsobuf; 64
|
|
law fsobuf
|
|
dac fsopt
|
|
|
|
3:
|
|
law 8
|
|
tad i1
|
|
dac i1
|
|
isz c1
|
|
jmp 1b
|
|
jmp 0b
|
|
4:
|
|
lac fd
|
|
sys close
|
|
jmp readdir i
|
|
|
|
putname: 0
|
|
-1
|
|
tad putname i
|
|
dac 8
|
|
-4
|
|
dac c
|
|
1:
|
|
lac 8 i
|
|
lrss 9
|
|
jms putc
|
|
llss 9
|
|
jms putc
|
|
isz c
|
|
jmp 1b
|
|
isz putname
|
|
jmp putname i
|
|
|
|
octal: 0
|
|
lmq
|
|
lac d5
|
|
tad octal i
|
|
cma
|
|
dac c
|
|
1:
|
|
llss 3
|
|
isz c
|
|
jmp 1b
|
|
lac octal i
|
|
dac c
|
|
1:
|
|
ecla llss 3
|
|
tad o60
|
|
jms putc
|
|
isz c
|
|
jmp 1b
|
|
law 040
|
|
jms putc
|
|
isz octal
|
|
jmp octal i
|
|
|
|
error: 0
|
|
-1
|
|
tad error
|
|
hlt
|
|
sys save
|
|
|
|
copyz: 0
|
|
-1
|
|
tad copyz i
|
|
dac 8
|
|
isz copyz
|
|
-1
|
|
tad copyz i
|
|
cma
|
|
dac 2f
|
|
isz copyz
|
|
1:
|
|
dzm 8 i
|
|
isz 2f
|
|
jmp 1b
|
|
jmp copyz i
|
|
2: 0
|
|
|
|
done:
|
|
lac noc
|
|
sna
|
|
sys exit
|
|
and d1
|
|
sna cla
|
|
jmp 1f
|
|
jms putc
|
|
jmp done
|
|
1:
|
|
lac noc
|
|
rcr
|
|
dac 1f
|
|
lac fo
|
|
sys write; obuf; 1;..
|
|
sys exit
|
|
|
|
putc: 0
|
|
and o177
|
|
dac 2f+1
|
|
lac opt
|
|
dac 2f
|
|
add o400000
|
|
dac opt
|
|
spa
|
|
jmp 1f
|
|
lac 2f i
|
|
xor 2f+1
|
|
jmp 3f
|
|
1:
|
|
lac 2f+1
|
|
alss 9
|
|
3:
|
|
dac 2f i
|
|
isz noc
|
|
lac noc
|
|
sad d128
|
|
skp
|
|
jmp putc i
|
|
lac fo
|
|
sys write; obuf; 64
|
|
lac iopt
|
|
dac opt
|
|
dzm noc
|
|
jmp putc i
|
|
2: 0;0
|
|
opt: obuf
|
|
iopt: obuf
|
|
noc: 0
|
|
fo: 1
|
|
|
|
d1: 1
|
|
o177: 0177
|
|
o400000: 0400000
|
|
d128: 128
|
|
d4: 4
|
|
d5: 5
|
|
d8: 8
|
|
o60: 060
|
|
o20: 020
|
|
d501: 501
|
|
|
|
dd:
|
|
<dd>; 040040; 040040; 040040
|
|
dotdot:
|
|
056056; 040040; 040040; 040040
|
|
system:
|
|
<sy>;<st>;<em>; 040040
|
|
scrname:
|
|
<*s>;<rc>;040040;040040
|
|
pass2:
|
|
<i
|
|
pass1:
|
|
<i 012
|
|
|
|
fso: .=.+1
|
|
fsi: .=.+1
|
|
fsloc: .=.+1
|
|
nfiles: .=.+1
|
|
fflg: .=.+1
|
|
buf: .=.+64
|
|
obuf: .=.+64
|
|
fd: .=.+1
|
|
filp: .=.+1
|
|
ddfilp: .=.+1
|
|
ddfiles: .=.+1
|
|
statbuf: .=.+13
|
|
c: .=.+1
|
|
i1: .=.+1
|
|
i2: .=.+1
|
|
i3: .=.+1
|
|
c1: .=.+1
|
|
c2: .=.+1
|
|
c3: .=.+1
|
|
ndirs: .=.+1
|
|
dirp: .=.+1
|
|
fsopt: .=.+1
|
|
fsobuf: .=.+64
|
|
dbuf: .=.+100
|
|
fbuf:
|
|
|