example of parsing pdp7 with antlr4
This commit is contained in:
@@ -0,0 +1,501 @@
|
||||
" 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:
|
||||
|
||||
Reference in New Issue
Block a user