mirror of
https://github.com/DoctorWkt/pdp7-unix.git
synced 2026-01-23 19:08:17 +00:00
Merge pull request #2 from philbudne/master
finished s1; add s5-s9; add Makefile; let as7 continue after errors
This commit is contained in:
commit
12c581248f
4
scans/Makefile
Normal file
4
scans/Makefile
Normal file
@ -0,0 +1,4 @@
|
||||
AS7=../tools/as7 -d
|
||||
|
||||
system:
|
||||
$(AS7) s?.s > output
|
||||
@ -6,5 +6,12 @@ For modified versions of these files, look in src/cmds and src/sys.
|
||||
|
||||
Details of the files:
|
||||
|
||||
s1.s: pages 2-3 of 01-s1.pdf, incomplete and with some cruft at the end
|
||||
s1.s: pages 2-5 of 01-s1.pdf, incomplete
|
||||
s2.s: pages 7-
|
||||
s3.s: pages 14-
|
||||
s4.s: pages 21-
|
||||
s5.s: pages 28-
|
||||
s6.s: pages 34-
|
||||
sx.s: temp symbol defns (from end of s1.s)
|
||||
|
||||
cat.c: pages 21-23 of 06-5-12.pdf
|
||||
|
||||
111
scans/s1.s
111
scans/s1.s
@ -102,31 +102,94 @@ swap: 0
|
||||
dac u.ulistp i
|
||||
ion
|
||||
jmp dskswap; 07000
|
||||
lac u.dspbuf
|
||||
sna
|
||||
jmp 2f
|
||||
law dspbuf
|
||||
jms movdsp
|
||||
2:
|
||||
iof
|
||||
lac o600000
|
||||
tad 9f+t i
|
||||
dac 9f+t i
|
||||
ion
|
||||
jms dskswap; 06000
|
||||
lac u.swapret
|
||||
dac swap
|
||||
lac o20
|
||||
dac maxquant
|
||||
lac u.dspbuf
|
||||
sza
|
||||
"** 01-s1.pdf page 4
|
||||
jms movdsp
|
||||
3:
|
||||
dzm uquant
|
||||
iof
|
||||
jmp swap i
|
||||
t = t+1
|
||||
|
||||
" For now, this stuff is defined so that
|
||||
" the assembler doesn't complain about it
|
||||
swp:
|
||||
jmp .
|
||||
.save; .getuid; .open; .read; .write; .creat; .seek; .tell
|
||||
.close; .link; .unlink; .setuid; .rename; .exit; .time; .intrp
|
||||
.chdir; .chmod; .chown; badcal; .sysloc; badcal; .capt; .rele
|
||||
.status; badcal; .smes; .rmes; .fork
|
||||
swn:
|
||||
.-swp-1 i
|
||||
|
||||
.intrp:
|
||||
lac u.ac
|
||||
dac u.intflg
|
||||
jmp okexit
|
||||
|
||||
.sysloc:
|
||||
lac u.ac
|
||||
and o17777
|
||||
jms betwen; d1; locn
|
||||
jms error
|
||||
tad locsw
|
||||
dac .+1
|
||||
lac ..
|
||||
dac u.ac
|
||||
jmp sysexit
|
||||
|
||||
locsw:
|
||||
lac .
|
||||
iget; inode; userdata; sysdata; copy; copyz; betwen; dskrd
|
||||
dskwr; dskbuf; dpdata; namei; pbsflgs; alloc; free; dspdata
|
||||
crdata
|
||||
locn:
|
||||
.-locsw-1
|
||||
|
||||
pibreak: 23
|
||||
u.ac: 100
|
||||
u.mq: 3
|
||||
u.rq: 3
|
||||
copy: 7
|
||||
.savblk: 0
|
||||
.insys: 0
|
||||
uquant: 0
|
||||
betwen: 0
|
||||
maxquant: 0
|
||||
laci: 0
|
||||
swp: 0
|
||||
badcal: 0
|
||||
coldentry: 0
|
||||
halt: 0
|
||||
dskio: 0
|
||||
sysdata: 0
|
||||
dskbuf: 0
|
||||
o7000: 07000
|
||||
o20001: 020001
|
||||
chkint: 0
|
||||
.save: 0
|
||||
lookfor: 0
|
||||
lac .insys
|
||||
sza
|
||||
jmp chkint i
|
||||
lac .int1
|
||||
sna
|
||||
jmp 1f
|
||||
sad u.ofiles+2
|
||||
jmp 2f
|
||||
1:
|
||||
lac .int2
|
||||
sna
|
||||
jmp chkint i
|
||||
sad chkint i
|
||||
sad u.ofiles+2
|
||||
skp
|
||||
jmp chkint i
|
||||
dzm .int2
|
||||
jmp 1f
|
||||
2:
|
||||
dzm .int1
|
||||
1:
|
||||
"** 01-s1.pdf page 5
|
||||
lac u.intflg
|
||||
sza
|
||||
jmp chkint i
|
||||
-1
|
||||
dac .insys
|
||||
ion
|
||||
isz chkint
|
||||
jmp chkint i
|
||||
|
||||
|
||||
334
scans/s2.s
Normal file
334
scans/s2.s
Normal file
@ -0,0 +1,334 @@
|
||||
"** 01-s1.pdf page 7
|
||||
" s2
|
||||
|
||||
.status:
|
||||
jms arg
|
||||
dac .+5
|
||||
jms arg
|
||||
dac .+6
|
||||
lac u.cdir
|
||||
jms namei; ..
|
||||
jms error
|
||||
jms namei; ..
|
||||
jms error
|
||||
jms iget
|
||||
lac u.ac
|
||||
and o17777
|
||||
jms betwen; o10000; o17762
|
||||
jms error
|
||||
dac .+3
|
||||
jms copy; inode; ..; 12
|
||||
dac 9 i
|
||||
jmp okexit
|
||||
|
||||
.capt:
|
||||
lac u.ac
|
||||
dac u.dspbuf
|
||||
jms movdsp
|
||||
jmp sysexit
|
||||
|
||||
.rele:
|
||||
dzm u.dspbuf
|
||||
law dspbuf
|
||||
jms movdsp
|
||||
jmp sysexit
|
||||
|
||||
.chmod:
|
||||
jms isown
|
||||
lac u.ac
|
||||
and o17
|
||||
lmq
|
||||
lac i.flags
|
||||
and o777760
|
||||
omq
|
||||
dac i.flags
|
||||
jms iput
|
||||
jmp okexit
|
||||
|
||||
.chown:
|
||||
jms isown
|
||||
lac u.ac
|
||||
dac i.uid
|
||||
jms iput
|
||||
jmp okexit
|
||||
|
||||
.getuid:
|
||||
lac u.uid
|
||||
dac u.ac
|
||||
jmp sysexit
|
||||
|
||||
.seek:
|
||||
jms seektell
|
||||
tad u.base
|
||||
"** 01-s1.pdf page 8
|
||||
spa
|
||||
jms error
|
||||
lmq
|
||||
lac f.flags
|
||||
and d1
|
||||
sna
|
||||
jms 1f
|
||||
lacq
|
||||
jms betwen; d0; i.size
|
||||
jms dacisize
|
||||
jmp 2f
|
||||
1:
|
||||
lacq
|
||||
jms betwen; d0; i.size
|
||||
lac i.size
|
||||
2:
|
||||
dac f.badd
|
||||
dac u.ac
|
||||
jms fput
|
||||
jmp sysexit
|
||||
|
||||
.tell:
|
||||
jms seektell
|
||||
cma
|
||||
tad d1
|
||||
tad u.base
|
||||
dac u.ac
|
||||
jmp sysexit
|
||||
|
||||
.link:
|
||||
jms arg
|
||||
dac 0f
|
||||
jms arg
|
||||
dac 1f
|
||||
jms arg
|
||||
dac 2f
|
||||
lac d4
|
||||
jms namei; 0; 0
|
||||
jms error
|
||||
jms namei; 1; 0
|
||||
jms error
|
||||
dac u.base
|
||||
jms copy; 2; 0; name; 4
|
||||
lac u.cdir
|
||||
jms namei; name
|
||||
skp
|
||||
jms error
|
||||
lac d1
|
||||
dac mode
|
||||
jms access
|
||||
jms dslot
|
||||
lac u.base
|
||||
jms iget
|
||||
lac ii
|
||||
dac d.i "** ??
|
||||
jms copy; name; d.name; 4
|
||||
lac i.uniq
|
||||
dac d.uniq
|
||||
-1
|
||||
tad i.nlks
|
||||
dac i.nlks
|
||||
"** 01-s1.pdf page 9
|
||||
jms iput
|
||||
jms dput
|
||||
jms okexit
|
||||
|
||||
.unlink:
|
||||
jms argname
|
||||
dac u.base
|
||||
lac d1
|
||||
dac mode
|
||||
jms access
|
||||
dac d.i
|
||||
jms dput
|
||||
lac u.base
|
||||
jms u.base
|
||||
jms iget
|
||||
isz i.nlks
|
||||
jmp 1f
|
||||
jms itrunc
|
||||
dzm i.flags
|
||||
1:
|
||||
jms iput
|
||||
jmp sysexit
|
||||
|
||||
.setuid:
|
||||
lac u.uid
|
||||
sma
|
||||
jms error
|
||||
lac u.ac
|
||||
dac u.uid
|
||||
jmp sysexit
|
||||
|
||||
.rename:
|
||||
jms arg
|
||||
dac 0f
|
||||
jms arg
|
||||
dac 1f
|
||||
lac u.cdir
|
||||
jms namei; 0;0
|
||||
jms error
|
||||
lac d1
|
||||
dac mode
|
||||
jms access
|
||||
jms copy; 1; 0; d.name; 4
|
||||
jmp okexit
|
||||
|
||||
.time:
|
||||
lac s.tim
|
||||
dac u.ac
|
||||
lac s.tim+1
|
||||
dac u.mq
|
||||
jmp sysexit
|
||||
|
||||
.chdir:
|
||||
jms argname
|
||||
jms iget
|
||||
lac i.flags
|
||||
and o20
|
||||
sna
|
||||
jms error
|
||||
lac ii
|
||||
dac u.cdir
|
||||
"** 01-s1.pdf page 10
|
||||
jmp okexit
|
||||
|
||||
.open:
|
||||
jms arg
|
||||
dac 0f
|
||||
jms arg
|
||||
sza
|
||||
lac d1
|
||||
sna
|
||||
lac d2
|
||||
dac mode
|
||||
lac u.cdir
|
||||
jms namei; 0; 0
|
||||
jms error
|
||||
jms iget
|
||||
jms access
|
||||
lac i.flags
|
||||
and o20
|
||||
sna
|
||||
jmp open1
|
||||
lac mode
|
||||
and d1
|
||||
sna
|
||||
jmp open1
|
||||
lac u.uid
|
||||
sma
|
||||
jms error
|
||||
jmp open1
|
||||
|
||||
.creat:
|
||||
lac d1
|
||||
dac mode
|
||||
jms arg
|
||||
dac .+2
|
||||
jms copy; ..; name; 4
|
||||
lac u.cdir
|
||||
jms namei; name
|
||||
jmp 1f
|
||||
jms iget
|
||||
jms access
|
||||
lac i.flags
|
||||
and o20
|
||||
sna
|
||||
jmp .+4
|
||||
lac u.uid
|
||||
sma
|
||||
jms error
|
||||
jms itrunc
|
||||
cla
|
||||
jms dacisize
|
||||
jmp open1
|
||||
1:
|
||||
jms access
|
||||
lac u.ac
|
||||
and o17
|
||||
jms icreat
|
||||
open1:
|
||||
jms fassign
|
||||
jms error
|
||||
jmp sysexit
|
||||
|
||||
"** 01-s1.pdf page 11
|
||||
.close:
|
||||
jms finac
|
||||
dzm f.flags
|
||||
jms fput
|
||||
jmp sysexit
|
||||
|
||||
.read:
|
||||
jms arg
|
||||
and o17777
|
||||
dac u.base
|
||||
jms arg
|
||||
dac u.count
|
||||
lac u.base
|
||||
jms betwen; o10000; o17777
|
||||
jms error
|
||||
tad u.count
|
||||
jms betwen; u.base; o17777
|
||||
jms error
|
||||
dac u.limit
|
||||
1:
|
||||
jms finac
|
||||
lac f.flags
|
||||
and d1
|
||||
sza
|
||||
jms error
|
||||
lac i.flags
|
||||
and o40
|
||||
sna
|
||||
jmp 1f
|
||||
iof
|
||||
lac ii
|
||||
tad swr
|
||||
dac .+1
|
||||
jmp .. i
|
||||
1:
|
||||
lac u.base
|
||||
dac 1f+1
|
||||
lac u.count
|
||||
dac 1f+2
|
||||
lac f.badd
|
||||
1:
|
||||
jms iread; ..; ..
|
||||
jmp exitrw
|
||||
|
||||
.write:
|
||||
jms arg
|
||||
and o17777
|
||||
dac u.base
|
||||
jms arg
|
||||
dac u.count
|
||||
tad u.base
|
||||
jms betwen; u.base; o17777
|
||||
jms error
|
||||
dac u.limit
|
||||
jms finac
|
||||
lac f.flags
|
||||
and d1
|
||||
sna
|
||||
jms error
|
||||
lac i.flags
|
||||
and o40
|
||||
"** 01-s1.pdf page 12
|
||||
sna
|
||||
jmp 1f
|
||||
iof
|
||||
lac ii
|
||||
tad sww
|
||||
dac .+1
|
||||
jmp .. i
|
||||
1:
|
||||
lac u.base
|
||||
dac 1f+1
|
||||
lac u.count
|
||||
dac 1f+2
|
||||
lac f.badd
|
||||
1:
|
||||
jms iwrite; ..; ..
|
||||
|
||||
exitrw:
|
||||
dac u.ac
|
||||
tad f.badd
|
||||
dac f.badd
|
||||
jms iput
|
||||
jms fput
|
||||
jmp sysexit
|
||||
355
scans/s3.s
Normal file
355
scans/s3.s
Normal file
@ -0,0 +1,355 @@
|
||||
"** 01-s1.pdf page 14
|
||||
" s3
|
||||
|
||||
searchu: 0
|
||||
lac searchu i
|
||||
dac 9f+t+1
|
||||
-mnproc
|
||||
dac 9f+t
|
||||
law ulist-1
|
||||
dac 8
|
||||
1:
|
||||
lac 8 i
|
||||
dac lu
|
||||
lac 8 i
|
||||
dac lu+1
|
||||
lac 8 i
|
||||
dac lu+2
|
||||
lac 8 i
|
||||
dac lu+3
|
||||
jms 9f+t+1 i
|
||||
isz 9f+t
|
||||
jmp 1b
|
||||
isz searchu
|
||||
jmp searchu i
|
||||
|
||||
lookfor: 0
|
||||
jms searchu; 1f
|
||||
isz lookfor
|
||||
isz lookfor
|
||||
jmp lookfor i
|
||||
1: 0
|
||||
lac lu
|
||||
rtl; rtl; and o7
|
||||
sad lookfor i
|
||||
skp
|
||||
jmp 1b i
|
||||
-3
|
||||
tad 8
|
||||
and o17777
|
||||
isz lookfor
|
||||
jmp lookfor i
|
||||
|
||||
.fork:
|
||||
jms lookfor; 0 " not-user
|
||||
skp
|
||||
jms error
|
||||
dac 9f+t
|
||||
isz uniqpid
|
||||
lac uniqpid
|
||||
dac u.ac
|
||||
law sysexit
|
||||
dac u.swapret
|
||||
lac o200000
|
||||
tad u.listp i
|
||||
dac u.listp i
|
||||
jms dskswap; 07000
|
||||
lac 9f+t
|
||||
dac u.ulistp
|
||||
lac o100000
|
||||
xor u.ulistp i
|
||||
dac u.ulistp i
|
||||
lac u.pid
|
||||
"** 01-s1.pdf page 15
|
||||
dac u.ac
|
||||
lac uniqpid
|
||||
dac u.pid
|
||||
isz 9f+t
|
||||
dac 9f+t i
|
||||
isz u.rq+8
|
||||
dzm u.intflg
|
||||
jmp sysexit
|
||||
t= t+1
|
||||
|
||||
badcal:
|
||||
clon
|
||||
-1
|
||||
dac 7
|
||||
.save:
|
||||
lac d1
|
||||
jms iget
|
||||
cla
|
||||
jms iwrite; 4096; 4096
|
||||
jms iwrite; userdata; 64
|
||||
jms iput
|
||||
|
||||
.exit:
|
||||
lac u.dspbuf
|
||||
sna
|
||||
jmp .+3
|
||||
law dspbuf
|
||||
jms movdsp
|
||||
jms awake
|
||||
lac u.ulistp i
|
||||
and o77777
|
||||
dac u.ulistp i
|
||||
isz u.ulistp
|
||||
dzm u.ulistp i
|
||||
jms swap
|
||||
|
||||
.rmes:
|
||||
jms awake
|
||||
lac o100000
|
||||
tad u.ulistp i
|
||||
dac u.ulistp i
|
||||
law 2
|
||||
tad u.ulistp
|
||||
dac 9f+t
|
||||
-1
|
||||
dac 9f+t i
|
||||
jms swap
|
||||
law 2
|
||||
tad u.ulistp
|
||||
dac 9f+t
|
||||
lac 9f+t i
|
||||
cma
|
||||
dac u.ac
|
||||
dzm 9f+t i
|
||||
isz 9f+t i
|
||||
lac 9f+t i
|
||||
dac u.mq
|
||||
dzm 9f+t i
|
||||
jmp sysexit
|
||||
t = t+1
|
||||
|
||||
"** 01-s1.pdf page 16
|
||||
.smes:
|
||||
lac u.ac
|
||||
sna spa
|
||||
jms error
|
||||
jms searchu; 1f
|
||||
law 2
|
||||
tad u.ulistp
|
||||
dac 9f+t
|
||||
dzm 9f+t i
|
||||
jms error
|
||||
1: 0
|
||||
lac lu+1
|
||||
sad u.ac
|
||||
skp
|
||||
jmp 1b i
|
||||
lac 1u+2
|
||||
sad dm1
|
||||
jmp 1f
|
||||
lac o100000
|
||||
tad u.ulistp i
|
||||
dac u.ulistp i
|
||||
law 2
|
||||
tad u.ulistp
|
||||
dac 9f+t
|
||||
lac u.ac
|
||||
dac 9f+t i
|
||||
jms swap
|
||||
law 2
|
||||
tad u.ulistp
|
||||
dac 9f+t
|
||||
dzm 9f+t i
|
||||
jmp .smes
|
||||
1:
|
||||
-3
|
||||
tad 8
|
||||
dac 0f+t
|
||||
lac o700000
|
||||
tad 9f+t i
|
||||
dac 9f+t i
|
||||
isz 9f+t
|
||||
isz 9f+t
|
||||
lac u.pid
|
||||
cma
|
||||
dac 9f+t i
|
||||
isz 9f+t
|
||||
lac u.mq
|
||||
dac 9f+t i
|
||||
jmp okexit
|
||||
t = t+1
|
||||
|
||||
awake: 0
|
||||
jms searchu; 1f
|
||||
jmp awake i
|
||||
1: 0
|
||||
lac u.pid
|
||||
sad lu+2
|
||||
skp
|
||||
jmp 1b i
|
||||
-3
|
||||
tad 8
|
||||
dac 9f+t
|
||||
"** 01-s1.pdf page 17
|
||||
lac o700000
|
||||
tad 9f+t i
|
||||
dac 9f+t i
|
||||
jmp 1b i
|
||||
t = t+1
|
||||
|
||||
swr:
|
||||
sww:
|
||||
jmp .-4 i
|
||||
.halt; rttyi; rkbdi; rppti; .halt
|
||||
.halt; wttyo; wdspo; wppto
|
||||
|
||||
.halt: jms halt
|
||||
|
||||
rttyi:
|
||||
jms chkint1
|
||||
lac d1
|
||||
jms getchar
|
||||
jmp 1f
|
||||
and o177
|
||||
jms betwen o101; o132
|
||||
skp
|
||||
tad o40
|
||||
alss 9
|
||||
jmp passone
|
||||
1:
|
||||
jms sleep; sfiles+0
|
||||
jms swap
|
||||
jmp rttyi
|
||||
|
||||
wttyo:
|
||||
jms chkint1
|
||||
jms forall
|
||||
sna
|
||||
jmp failr
|
||||
lmq
|
||||
lac sfiles+1
|
||||
spa
|
||||
jmp 1f
|
||||
xor 0400000
|
||||
dac sfiles+1
|
||||
lacq
|
||||
tls
|
||||
sad o12
|
||||
jms putcr
|
||||
jmp failr
|
||||
1:
|
||||
lacq
|
||||
dac char
|
||||
lac d2 "** written: d6 ttyout
|
||||
jms putchar
|
||||
skp
|
||||
jmp failr
|
||||
jms sleep; sfiles+1
|
||||
jms swap
|
||||
jmp wttyo
|
||||
|
||||
rkbdi:
|
||||
jms chkint1
|
||||
lac d2
|
||||
jms getchar
|
||||
"** 01-s1.pdf page 18
|
||||
jmp 3f
|
||||
lmq
|
||||
and o155
|
||||
sad o55
|
||||
jmp 1f
|
||||
lacq
|
||||
and o137
|
||||
sad o134
|
||||
lacq
|
||||
xor o40
|
||||
lmq
|
||||
jmp 2f
|
||||
1:
|
||||
lacq
|
||||
xor o20
|
||||
lmq
|
||||
2:
|
||||
lacq
|
||||
dac u.limit
|
||||
1:
|
||||
jms chkint1
|
||||
lac u.limit
|
||||
jms dspput
|
||||
jmp 1f
|
||||
jms sleep; sfiles+6
|
||||
jms swap
|
||||
jmp 1b
|
||||
1:
|
||||
lac u.limit
|
||||
alss 9
|
||||
jmp passone
|
||||
3:
|
||||
jms sleep; sfiles+2
|
||||
jms swap
|
||||
jmp rkdbi
|
||||
|
||||
wdspo:
|
||||
jms chkint1
|
||||
jms forall
|
||||
jms dspput
|
||||
jmp failr
|
||||
jms sleep; sfiles+6
|
||||
jms swap
|
||||
jmp wdspo
|
||||
|
||||
|
||||
rppti:
|
||||
lac d4
|
||||
jms getchar
|
||||
jmp .+3
|
||||
alss 9
|
||||
jmp passone
|
||||
lac sfiles+3
|
||||
sma
|
||||
rsa
|
||||
1:
|
||||
jms sleep; sfiles+3
|
||||
jms swap
|
||||
jmp rppti
|
||||
"** 01-s1.pdf page 19
|
||||
|
||||
wppto:
|
||||
jms forall
|
||||
sna
|
||||
jmp failr
|
||||
lmq
|
||||
lac sfiles+4
|
||||
spa
|
||||
jmp 1f
|
||||
xor o400000
|
||||
dac sfiles+4
|
||||
lacq
|
||||
psa
|
||||
jmp failr
|
||||
1:
|
||||
lacq
|
||||
dac char
|
||||
lac d5
|
||||
jms putchar
|
||||
skp
|
||||
jmp failr
|
||||
jms sleep; sfiles+4
|
||||
jms swap
|
||||
jmp wppto
|
||||
|
||||
passone:
|
||||
sad o4000
|
||||
jmp okexit
|
||||
dac u.base i
|
||||
lac d1
|
||||
dac u.ac
|
||||
jmp sysexit
|
||||
|
||||
error: 0
|
||||
-1
|
||||
dac u.ac
|
||||
jmp sysexit
|
||||
|
||||
chkint1: 0
|
||||
dzm .insys
|
||||
jmp chkint
|
||||
skp
|
||||
jmp .save
|
||||
-1
|
||||
dac .insys
|
||||
jmp chkint1 i
|
||||
343
scans/s4.s
Normal file
343
scans/s4.s
Normal file
@ -0,0 +1,343 @@
|
||||
"** 01-s1.pdf page 21
|
||||
" s4
|
||||
|
||||
alloc: 0
|
||||
-1
|
||||
tad s.nfblks
|
||||
spa
|
||||
jmp 1f
|
||||
dac s.nfblks
|
||||
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.nfblks
|
||||
jmp alloc-1
|
||||
|
||||
free: 0
|
||||
lmq
|
||||
lac s.nfblks
|
||||
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 o1777
|
||||
tad o200000
|
||||
dac .+1
|
||||
lac ..
|
||||
jmp laci i
|
||||
|
||||
"** 01-s1.pdf page 22
|
||||
|
||||
betwen: 0
|
||||
lmq cmq
|
||||
lac betwen i
|
||||
dac 9f+t
|
||||
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
|
||||
dac 8
|
||||
isz copyz
|
||||
-1
|
||||
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
|
||||
"** 01-s1.pdf page 23
|
||||
dac 9f+t
|
||||
cla
|
||||
jms takeq
|
||||
jmp putchar i
|
||||
tad o40001
|
||||
dac .+4
|
||||
lac 9f+t
|
||||
jms putq
|
||||
lac char
|
||||
lac q2+1 ..
|
||||
isz putchar
|
||||
jmp putchar i
|
||||
t = t+1
|
||||
|
||||
getchar: 0
|
||||
jms takeq
|
||||
jmp i getchar
|
||||
tad o200001
|
||||
dac .+3
|
||||
cla
|
||||
jms putc
|
||||
lac q2+1 ..
|
||||
isz getchar
|
||||
jmp i getchar
|
||||
|
||||
takeq: 0
|
||||
rcl
|
||||
tad lacq1
|
||||
dac .+7
|
||||
tad o640000
|
||||
dac .+17
|
||||
dad s1
|
||||
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 ..
|
||||
"** 01-s1.pdf page 24
|
||||
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
|
||||
lmq "** written (printed chars obscured)
|
||||
-ndskbs
|
||||
dac 9f+t
|
||||
law dskbs "* -1 dac 8 written
|
||||
dac 9f+t+1
|
||||
1:
|
||||
lac 9f+t+2 "** crossed out
|
||||
sad 9f+t+1 "** isz 8 written
|
||||
jmp srcdbs i
|
||||
law 65 "** crossed out
|
||||
tad 9f+t+1 "** crossed out isz 8 written
|
||||
isz 9f+t+1
|
||||
isz 9f+t
|
||||
jmp 1b
|
||||
isz srcdbs
|
||||
jmp srcdbs i
|
||||
|
||||
collapse: 0
|
||||
cla
|
||||
jms srcdbs
|
||||
jmp 1f
|
||||
law dskbs
|
||||
dac 9f+t+1 "** 9f+t+1 crossed out: 8 written in
|
||||
1:
|
||||
lac 9f+t+1 "** 9f+t+1 crossed out: 8 written in
|
||||
dac 0f+1
|
||||
tad d2 "** crossed out: original obscured
|
||||
dac 0f
|
||||
cma
|
||||
tad d1
|
||||
tad edskbsp
|
||||
and o17777
|
||||
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
|
||||
|
||||
dskrd: 0
|
||||
jms betwen; d2; d7999
|
||||
|
||||
"** 01-s1.pdf page 25
|
||||
jms halt
|
||||
sad dskaddr
|
||||
jmp dskrd i
|
||||
dac dskaddr
|
||||
jms srcdbs
|
||||
jmp 1f
|
||||
lac dskaddr
|
||||
jms dskio; 06000
|
||||
jmp 1f
|
||||
1:
|
||||
dzm 9f+t+1 i
|
||||
law 1
|
||||
tad 9f+t+1
|
||||
dac .+2
|
||||
jms copy; ..; dskbuf; 64
|
||||
2:
|
||||
jms collaps
|
||||
jmp dskrd i
|
||||
|
||||
dskwr: 0
|
||||
jms betwen; d2; d7999
|
||||
jms halt
|
||||
jms dskio; 07000
|
||||
lac dskaddr
|
||||
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
|
||||
idiv; 10
|
||||
dac 9f+t+1
|
||||
lls 22
|
||||
xor 9f+t+1
|
||||
als 8
|
||||
dac 9f+t+1
|
||||
lac 9f+t
|
||||
idiv; 10
|
||||
dac 9f+t
|
||||
lls 22
|
||||
xor 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
|
||||
"** 01-s1.pdf page 26
|
||||
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; law; 4096; 4096
|
||||
hlt; jmp .-1
|
||||
t = t+1
|
||||
|
||||
272
scans/s5.s
Normal file
272
scans/s5.s
Normal file
@ -0,0 +1,272 @@
|
||||
"** 01-s1.pdf page 28
|
||||
" s5
|
||||
|
||||
dskswap: 0
|
||||
cll; als 3
|
||||
dac 9f+t
|
||||
jms dsktrans; -64; userdata; 9f+t; dskswap
|
||||
lac 9f+t
|
||||
tad o20
|
||||
dac 9f+t
|
||||
jms dsktrans; -4096; 4096; 9f+t; dskswap
|
||||
isz dskswap
|
||||
jmp dskswap i
|
||||
|
||||
t = t+1
|
||||
|
||||
access: 0
|
||||
lac i.flags
|
||||
idunno "** ???
|
||||
lac u.uid
|
||||
spa
|
||||
jmp access i
|
||||
sad i.uid
|
||||
lrs 2
|
||||
lacq
|
||||
and mode
|
||||
sza
|
||||
jmp access i
|
||||
jms error
|
||||
|
||||
fassign: 0
|
||||
-1
|
||||
dac 9f+t
|
||||
1:
|
||||
lac 9f+t
|
||||
tad d10
|
||||
jms fget
|
||||
jms halt " will not happen
|
||||
lac f.flags
|
||||
sma
|
||||
jmp 1f
|
||||
isz 9f+t
|
||||
jmp 1b
|
||||
jmp fassign i
|
||||
1:
|
||||
lac mode
|
||||
xor o400000
|
||||
dac f.flags
|
||||
lac ii
|
||||
dac f.i
|
||||
lac 9f+t
|
||||
tad d10
|
||||
dac u.ac
|
||||
dzm f.badd
|
||||
jms fput
|
||||
isz fassign
|
||||
jmp fassign i
|
||||
t = t+1
|
||||
|
||||
fget: 0
|
||||
jms betwen; d0; d9
|
||||
jmp fget i
|
||||
cll; mul; 3
|
||||
lacq
|
||||
"** 01-s1.pdf page 29
|
||||
|
||||
tad ofilesp
|
||||
dac 9f+t
|
||||
dac .+2
|
||||
jms copy; ..; fnode; 3
|
||||
isz fget
|
||||
jmp fget i
|
||||
|
||||
fput: 0
|
||||
lac 9f+t
|
||||
dac .+3
|
||||
jms copy; ; fnode; ..; 3
|
||||
jmp fput i
|
||||
t = t+1
|
||||
|
||||
forall: 0
|
||||
lac u.base
|
||||
sad u.limit
|
||||
jmp 1f
|
||||
lac u.base
|
||||
ral
|
||||
lac u.base i
|
||||
snl
|
||||
lrs 9
|
||||
and o777
|
||||
jmp forall i
|
||||
1:
|
||||
lac u.count
|
||||
dac u.ac
|
||||
jmp sysexit
|
||||
|
||||
sleep: 0
|
||||
law ulist-1
|
||||
dac 8
|
||||
lac o200000
|
||||
lmq "** ???
|
||||
1:
|
||||
lac u.ulistp i
|
||||
sad 8 i
|
||||
jmp 1f
|
||||
isz 8
|
||||
isz 8
|
||||
isz 8
|
||||
cla; lrs 1
|
||||
jmp 1b
|
||||
1:
|
||||
tad o100000
|
||||
dac u.ulistp i
|
||||
lac sleep i
|
||||
dac 9f+t
|
||||
lac 9f+t i
|
||||
isz sleep
|
||||
jmp sleep i
|
||||
t = t+1
|
||||
|
||||
"** 01-s1.pdf page 30
|
||||
|
||||
dslot: 0
|
||||
dzm di
|
||||
skp
|
||||
1:
|
||||
isz di
|
||||
lac di
|
||||
jms dget
|
||||
lac d.i
|
||||
sza
|
||||
jmp 1b
|
||||
jmp dslot i
|
||||
|
||||
icreat: 0
|
||||
dac 9f+t
|
||||
jms dslot
|
||||
lac o20
|
||||
dac ii
|
||||
1:
|
||||
isz ii
|
||||
lac ii
|
||||
jms iget
|
||||
lac i.flags
|
||||
spa
|
||||
jmp 1b
|
||||
lac ii
|
||||
dac d.i
|
||||
jms copy; name; d.name; 4
|
||||
isz s.uniq
|
||||
lac s.uniq
|
||||
dac d.uniq
|
||||
dac i.uniq
|
||||
lac 9f+t
|
||||
xor o400000
|
||||
dac i.flags
|
||||
lac u.uid
|
||||
dac u.uid
|
||||
-1
|
||||
dac i.nlks
|
||||
dzm i.size
|
||||
jms copyz; i.dskps; 7
|
||||
jms iput
|
||||
jms dput
|
||||
jmp icreat i
|
||||
t = t+1
|
||||
|
||||
dspput: 0
|
||||
and o177
|
||||
sna
|
||||
jmp i dspput
|
||||
sad o14
|
||||
jmp 1f
|
||||
lmq
|
||||
sad o12
|
||||
jmp dspnl
|
||||
lac dsploc i
|
||||
sad o400000
|
||||
jmp dspleft
|
||||
omq
|
||||
dac dsploc i
|
||||
isz dsploc
|
||||
jmp i dspput
|
||||
|
||||
"** 01-s1.pdf page 31
|
||||
|
||||
1:
|
||||
jms dspinit
|
||||
jmp dspput i
|
||||
|
||||
dspleft:
|
||||
lac dsploc
|
||||
sad edspbuf
|
||||
jmp 1f
|
||||
dac 8
|
||||
lac o400000
|
||||
dac 8 i
|
||||
cla; llss 18+7
|
||||
dac dsploc i
|
||||
jmp dspput i
|
||||
|
||||
dspnl: 0
|
||||
lac dsplno
|
||||
sad d33
|
||||
jmp 1f
|
||||
isz dsplno
|
||||
jmp dspnl i
|
||||
1:
|
||||
lac o2000
|
||||
wbi "** ??
|
||||
isz dspput
|
||||
jmp dspput i
|
||||
|
||||
dspinit: 0
|
||||
lac dspbuf+3
|
||||
dac dsploc
|
||||
lac o300000
|
||||
dac dspbuf+3
|
||||
dzm dsplno
|
||||
jmp dspinit i
|
||||
|
||||
movdsp: 0
|
||||
iof
|
||||
caf
|
||||
dac dspbufp
|
||||
-1
|
||||
dac .dspb
|
||||
ion
|
||||
jmp movdsp i
|
||||
|
||||
arg: 0
|
||||
lac u.rq+8 i
|
||||
isz u.rq+8
|
||||
jmp arg i
|
||||
|
||||
argname: 0
|
||||
jms arg
|
||||
dac .+2
|
||||
jms copy; ..; name; 4
|
||||
lac u.cdir
|
||||
jms namei; name
|
||||
jms error
|
||||
jmp argname i
|
||||
|
||||
seektell: 0
|
||||
jms arg
|
||||
dac u.base
|
||||
|
||||
"** 01-s1.pdf page 32
|
||||
jms arg
|
||||
dac u.limit
|
||||
jms finac
|
||||
lac u.limit
|
||||
sna
|
||||
jmp seektell i
|
||||
sad d1
|
||||
jmp .+3
|
||||
lac i.size
|
||||
jmp seektell i
|
||||
lac f.badd
|
||||
jmp seektell i
|
||||
|
||||
isown: 0
|
||||
jms argname
|
||||
jms iget
|
||||
lac u.uid
|
||||
sma
|
||||
sad i.uid
|
||||
skp
|
||||
jms error
|
||||
jmp isown i
|
||||
|
||||
341
scans/s6.s
Normal file
341
scans/s6.s
Normal file
@ -0,0 +1,341 @@
|
||||
"** 01-s1.pdf page 34
|
||||
" S6
|
||||
|
||||
itrunc: 0
|
||||
-7
|
||||
dac 9f+t
|
||||
lac idskpp
|
||||
dac 9f+t+1
|
||||
1:
|
||||
lac 9f+t+1 i
|
||||
sna
|
||||
jmp 4f
|
||||
lac i.flags
|
||||
and o200000
|
||||
sna
|
||||
jmp 3f
|
||||
-64
|
||||
dac 9f+t+2
|
||||
lac dskbufp
|
||||
dac 9f+t+3
|
||||
2:
|
||||
lac 9f+t+1 i
|
||||
jms dskrd
|
||||
lac 9f+t+3 i
|
||||
sza
|
||||
jms free
|
||||
isz 9f+t+3
|
||||
isz 9f+t+3
|
||||
jmp 2b
|
||||
3:
|
||||
lac 9f+t+1 i
|
||||
jms free
|
||||
dzm 9f+t+1 i
|
||||
4:
|
||||
isz 9f+t+1
|
||||
isz 9f+t
|
||||
jmp 1b
|
||||
lac i.flags
|
||||
and o577777
|
||||
dac i.flags
|
||||
jmp itrunc i
|
||||
t = t+4
|
||||
|
||||
namei: 0
|
||||
jms iget
|
||||
-1
|
||||
tad namei i
|
||||
dac 9f+t+1
|
||||
isz namei
|
||||
lac i.flags
|
||||
and o20
|
||||
sna
|
||||
jmp namei i
|
||||
-8
|
||||
tad i.size
|
||||
cma
|
||||
lrss 3
|
||||
dac 9f+t
|
||||
sna
|
||||
jmp namei i
|
||||
dzm di
|
||||
1:
|
||||
lac di
|
||||
|
||||
"** 01-s1.pdf page 35
|
||||
|
||||
jms dget
|
||||
lac d.i
|
||||
sna
|
||||
jmp 2f
|
||||
lac 9f+t+1
|
||||
dac 8
|
||||
lac d.name
|
||||
sad 8 i
|
||||
skp
|
||||
jmp 2f
|
||||
lac d.name+1
|
||||
sad 8 i
|
||||
skp
|
||||
jmp 2f
|
||||
lac d.name+2
|
||||
sad 8 i
|
||||
skp
|
||||
jmp 2f
|
||||
lac d.i
|
||||
isz namei
|
||||
jmp namei 1
|
||||
2:
|
||||
isz di
|
||||
isz 9f+t
|
||||
jmp 1b
|
||||
jmp namei i
|
||||
t = t+2
|
||||
|
||||
iget: 0
|
||||
dac ii
|
||||
cll; idiv; 5
|
||||
dac 9f+t
|
||||
tad d2
|
||||
dac 9f+i+1
|
||||
jms dskrd
|
||||
lac 9f+t
|
||||
cll; mul; 12
|
||||
lacq
|
||||
tad dskbufp
|
||||
dac 9f+t
|
||||
dac .+2
|
||||
jms copy; ..; inode; 12
|
||||
jmp iget i
|
||||
|
||||
iput: 0
|
||||
lac 9f+t+1
|
||||
jms dskrd
|
||||
law inode-1
|
||||
dac 8
|
||||
-1
|
||||
tad 9f+t
|
||||
dac 9
|
||||
-12
|
||||
dac 9f+t+2
|
||||
1:
|
||||
lac 8 i
|
||||
|
||||
"** 01-s1.pdf page 36
|
||||
|
||||
sad 9 i
|
||||
skp
|
||||
jmp 2f
|
||||
isz 9f+t+2
|
||||
jmp 1b
|
||||
jmp iput i
|
||||
2:
|
||||
-1
|
||||
tad 8
|
||||
dac 8
|
||||
-1
|
||||
tad 9
|
||||
dac 9
|
||||
1:
|
||||
lac 8 i
|
||||
dac 9 i
|
||||
isz 9f+t+2
|
||||
jmp 1b
|
||||
lac 9f+t+1
|
||||
jms dskwr
|
||||
jmp iput i
|
||||
t = t+3
|
||||
|
||||
dget: 0
|
||||
dac di
|
||||
alss 3
|
||||
dac 9f+t
|
||||
jms pget
|
||||
dac 9f+t+1
|
||||
jms dskrd
|
||||
lac 9f+t
|
||||
and o77
|
||||
tad dskbufp
|
||||
dac 9f+t+2
|
||||
dac .+2
|
||||
jms copy; ..; inode; 8
|
||||
lac 9f+t
|
||||
tad d8
|
||||
jms betwen; d0; i.size
|
||||
skp
|
||||
jmp dget i
|
||||
jms dacisize
|
||||
dzm d.i
|
||||
jmp dget i
|
||||
|
||||
dput: 0
|
||||
lac 9f+t+1
|
||||
jms dskrd
|
||||
lac 9f+t+2
|
||||
dac .+3
|
||||
jms copy; inode; ..; 8
|
||||
lac 9f+t+1
|
||||
jms dskwr
|
||||
jmp dput i
|
||||
|
||||
t = t+3 "** first t not there (hole from hole punch?)
|
||||
|
||||
pget: 0
|
||||
lrss 6
|
||||
dac 9f+t
|
||||
lac i.flags
|
||||
|
||||
"** 01-s1.pdf page 37
|
||||
|
||||
and o200000
|
||||
sza
|
||||
jmp 2f
|
||||
lac 9f+t
|
||||
jms betwen; d0; d6
|
||||
jmp 1f
|
||||
tad idskpp
|
||||
dac 9f+t
|
||||
lac 9f+t i
|
||||
sna
|
||||
jms alloc
|
||||
dac 9f+t i
|
||||
jmp pget i
|
||||
1:
|
||||
jms alloc
|
||||
dac 9f+t+1
|
||||
jms copy; i.dskps; dskbuf; 7
|
||||
jms copyz; dskbuf+7; 64-7 "** NUMBER UNCLEAR
|
||||
lac 9f+t+1
|
||||
jms dskwr
|
||||
lac 9f+t+1
|
||||
dac i.dskps
|
||||
jms copyz; i.dskps+1; 6
|
||||
lac i.flags
|
||||
xor o200000
|
||||
dac i.flags
|
||||
2:
|
||||
lac 9f+t
|
||||
lrss 7
|
||||
jms betwen; d0; d6
|
||||
jms halt " file too big
|
||||
tad idskpp
|
||||
dac 9f+t+1
|
||||
lac 9f+t+1 i
|
||||
sna
|
||||
jms alloc
|
||||
dac 9f+t+1 i
|
||||
dac 9f+t+2
|
||||
jms dskrd
|
||||
lac 9f+t
|
||||
and o77
|
||||
tad dskbufp
|
||||
dac 9f+t+1
|
||||
lac 9f+t+1 i
|
||||
sza
|
||||
jmp pget i
|
||||
jms alloc
|
||||
dac 9f+t
|
||||
lac 9f+t+2
|
||||
jms dskrd
|
||||
lac 9f+t
|
||||
jmp pget i
|
||||
t = t+3
|
||||
|
||||
iwrite: 0
|
||||
dac 9f+t
|
||||
lac iwrite
|
||||
|
||||
"** 01-s1.pdf page 38
|
||||
|
||||
dac iread
|
||||
lac cskp
|
||||
dac iwrite
|
||||
jmp 1f
|
||||
|
||||
iread: 0
|
||||
dac 9f+t
|
||||
lac cnop
|
||||
dac iwrite
|
||||
1:
|
||||
-1
|
||||
tad iread i
|
||||
dac 10
|
||||
dac 11
|
||||
isz iread
|
||||
lac iread i
|
||||
dac 9f+t+1
|
||||
isz iread
|
||||
lac o70000
|
||||
xct iwrite
|
||||
lac i.size
|
||||
cma
|
||||
tad 9f+t
|
||||
cma
|
||||
jms betwen; d0; 9f+t+1
|
||||
lac 9f+t+1
|
||||
dac 9f+t+2
|
||||
cma
|
||||
tad d1
|
||||
sna
|
||||
jmp iread i
|
||||
dac 9f+t+1
|
||||
1:
|
||||
lac 9f+t
|
||||
jms pget
|
||||
dac 9f+t+3
|
||||
jms dskrd
|
||||
lac 9f+t
|
||||
and o77
|
||||
tad dskbufp
|
||||
tad dm1
|
||||
xct iwrite
|
||||
jmp .+3
|
||||
dac 10
|
||||
cskp:
|
||||
skp
|
||||
dac 11
|
||||
2:
|
||||
lac 11 i
|
||||
dac 10 i
|
||||
isz 9f+t
|
||||
isz 9f+t+1
|
||||
jmp 3f
|
||||
xct iwrite
|
||||
jmp 4f
|
||||
lac 9f+t
|
||||
jms betwen; d0; i.size
|
||||
dac i.size
|
||||
lac 9f+t+3
|
||||
4:
|
||||
"** 01-s1.pdf page 38
|
||||
lac 9f+t+2
|
||||
jmp iread i
|
||||
|
||||
3:
|
||||
lac 9f+t
|
||||
and o77
|
||||
sza
|
||||
jmp 2b
|
||||
xct iwrite
|
||||
jmp 1b
|
||||
lac 9f+t+3
|
||||
jms dskwr
|
||||
jmp 1b
|
||||
t = t+4
|
||||
|
||||
finac: 0
|
||||
lac u.ac
|
||||
jms fget
|
||||
jms error
|
||||
lac f.flags
|
||||
sma
|
||||
jms error
|
||||
lac f.i
|
||||
jms iget
|
||||
jms finac i
|
||||
|
||||
dacisize: 0
|
||||
dac i.size
|
||||
jms iput
|
||||
lac i.size
|
||||
jmp dacisize i
|
||||
363
scans/s7.s
Normal file
363
scans/s7.s
Normal file
@ -0,0 +1,363 @@
|
||||
"** 01-s1.pdf page 41
|
||||
" s7
|
||||
|
||||
pibreak:
|
||||
dac .ac "** CROSSED OUT....
|
||||
lpsf
|
||||
jmp 1f
|
||||
|
||||
lpcf
|
||||
dprs "** ??
|
||||
dac dpstat
|
||||
sma ral
|
||||
jmp 2f
|
||||
dprc "** ??
|
||||
dac dpchar
|
||||
-1
|
||||
dac dpread
|
||||
lac dpstat
|
||||
ral
|
||||
2:
|
||||
sma
|
||||
jmp piret
|
||||
-1
|
||||
dac dpwrite
|
||||
jmp piret "** END OF CROSSOUT
|
||||
|
||||
1: clsf
|
||||
jmp 1f
|
||||
|
||||
lpb
|
||||
dac pbsflgs
|
||||
isz s.tim+1
|
||||
skp
|
||||
isz s.tim
|
||||
isz uquant
|
||||
"** written: ttydelay -> ttyd1
|
||||
"** written: ttyrestart -> ttyres1
|
||||
cnop:
|
||||
nop
|
||||
-1
|
||||
dac 7
|
||||
clon
|
||||
lac ttydelay
|
||||
spa
|
||||
isz ttydelay
|
||||
skp
|
||||
jms ttyrestart
|
||||
lac .dspb "** START CROSSED OUT: written: lac tty
|
||||
sna
|
||||
jmp piret
|
||||
isz .dsptm
|
||||
skp
|
||||
jmp dsprestart
|
||||
sad d3
|
||||
jmp piret
|
||||
isz .dspb
|
||||
jmp piret
|
||||
jmp dsprestart "** END CROSSED OUT
|
||||
|
||||
1: dssf
|
||||
jmp 1f
|
||||
|
||||
-1
|
||||
dac .dskb
|
||||
|
||||
"** 01-s1.pdf page 42
|
||||
|
||||
dsrs
|
||||
dac .dske
|
||||
dscs
|
||||
jmp piret
|
||||
|
||||
1: lds "** BEGIN CROSSED OUT
|
||||
sma ra1
|
||||
jmp 1f
|
||||
cdf
|
||||
lac .dspb
|
||||
sna
|
||||
jmp 1f
|
||||
cdf
|
||||
lac .dspb
|
||||
sna
|
||||
jmp piret
|
||||
tad dm3
|
||||
sna
|
||||
jmp dsprestart
|
||||
dac .dspb
|
||||
jmp piret
|
||||
|
||||
1: sna ra1
|
||||
jmp .+3
|
||||
racf
|
||||
jmp piret
|
||||
sma
|
||||
jmp 1f
|
||||
lda
|
||||
dac .lpba
|
||||
rlpd
|
||||
jmp piret
|
||||
|
||||
1: ksf
|
||||
jmp 1f
|
||||
|
||||
lac ttydelay
|
||||
sma
|
||||
isz ttydelay
|
||||
krb
|
||||
dac char
|
||||
sad o375
|
||||
jmp intrp1
|
||||
lac d1
|
||||
jms putchar
|
||||
dzm char
|
||||
lac sfiles+0
|
||||
jms wakeup
|
||||
dac sfiles+0
|
||||
lac char
|
||||
sad o212
|
||||
skp
|
||||
jmp piret
|
||||
lac sfiles+1
|
||||
sma
|
||||
xor o400000
|
||||
dac sfiles+1
|
||||
|
||||
"** 01-s1.pdf page 43
|
||||
|
||||
jms ptcr
|
||||
jms ttyrestart
|
||||
jmp piret
|
||||
|
||||
1: tsf
|
||||
jmp 1f
|
||||
|
||||
tcf
|
||||
jms ttyrestart
|
||||
jmp piret
|
||||
|
||||
ttyrestart: 0
|
||||
lac ttydelay
|
||||
spa
|
||||
jmp ttyrestart i
|
||||
lac nttychar
|
||||
dzm nttychar
|
||||
sza
|
||||
jmp 3f
|
||||
isz ttydelay
|
||||
lac d2
|
||||
jms getchar
|
||||
jmp 2f
|
||||
3:
|
||||
tls
|
||||
sad o12
|
||||
jms putcr
|
||||
sad o15
|
||||
skp
|
||||
jmp ttyrestart i
|
||||
lac ttydelay
|
||||
tad o20
|
||||
rcr
|
||||
cma
|
||||
dac ttydelay
|
||||
jmp ttyrestart i
|
||||
2:
|
||||
lac sfiles+1
|
||||
jms wakeup
|
||||
dac sfiles+1
|
||||
jmp ttyrestart i "** written arrow up 2 copies
|
||||
|
||||
1: sck "** BEGIN CROSSED OUT
|
||||
jmp 1f
|
||||
|
||||
cck
|
||||
lck
|
||||
dac char
|
||||
sad o33
|
||||
jmp intrp2
|
||||
lac d3
|
||||
jms putchar
|
||||
nop
|
||||
lac sfiles+2
|
||||
jms wakeup
|
||||
dac sfiles+2
|
||||
jmp piret
|
||||
|
||||
1: rsf
|
||||
jmp 1f
|
||||
|
||||
|
||||
"** 01-s1.pdf page 44
|
||||
|
||||
lac npptchar
|
||||
sna
|
||||
jmp .+5
|
||||
dac char
|
||||
rrb
|
||||
dac npptchar
|
||||
jmp .+3
|
||||
rrb
|
||||
dac char
|
||||
3:
|
||||
lac char
|
||||
sna
|
||||
jmp 2f
|
||||
lac d4
|
||||
jms putchar
|
||||
jmp 3f
|
||||
lac char
|
||||
sad d4
|
||||
jmp 4f
|
||||
2:
|
||||
lac npptchar
|
||||
sna
|
||||
jmp .+4
|
||||
dac char
|
||||
dzm npptchar
|
||||
jmp 3b
|
||||
rsa
|
||||
lac sfiles+3
|
||||
jms wakeup
|
||||
xor o400000
|
||||
dac sfiles+3
|
||||
jmp piret
|
||||
3:
|
||||
lac char
|
||||
dac npptchar
|
||||
4:
|
||||
lac sfiles+3
|
||||
jms wakeup
|
||||
dac sfiles+3
|
||||
jmp piret
|
||||
|
||||
1: psf
|
||||
jmp 1f
|
||||
|
||||
pcf
|
||||
lac d5
|
||||
jms getchar
|
||||
jmp .+3
|
||||
psa
|
||||
jmp piret
|
||||
lac sfiles+4
|
||||
jms wakeup
|
||||
dac sfiles+4
|
||||
jmp piret
|
||||
|
||||
1: spb "** BEGIN CROSSED OUT
|
||||
jmp 1f
|
||||
|
||||
cpb
|
||||
lpb
|
||||
dac pbsflgs+1
|
||||
|
||||
"** 01-s1.pdf page 45
|
||||
|
||||
and o2000
|
||||
sna
|
||||
jmp piret
|
||||
jms dspinit
|
||||
lac sfiles+6
|
||||
jms wakeup
|
||||
dac sfiles+6
|
||||
cla
|
||||
wbi
|
||||
jmp piret "** END CROSSED OUT
|
||||
|
||||
1: crsf
|
||||
jmp 1f
|
||||
|
||||
crrb
|
||||
dac crchar
|
||||
-1
|
||||
dac crread
|
||||
jmp piret
|
||||
|
||||
1: crrb
|
||||
|
||||
piret:
|
||||
lac 0
|
||||
rai
|
||||
lac .ac
|
||||
ion
|
||||
jmp 0 i
|
||||
|
||||
wakeup: 0
|
||||
dac 9f+t
|
||||
-mnproc
|
||||
dac 9f+t+1
|
||||
lac tadu
|
||||
dac 2f
|
||||
lac dacu
|
||||
dac 2f+1
|
||||
1:
|
||||
lac 9f+t
|
||||
rao
|
||||
dac 9f+t
|
||||
sma
|
||||
jmp 2f+2
|
||||
lac o700000
|
||||
2: tad ..
|
||||
dac ..
|
||||
lac 2b
|
||||
tad d4
|
||||
dac 2b
|
||||
lac 2b+1
|
||||
tad d4
|
||||
dac 2b+1
|
||||
isz 9f+t+1
|
||||
jmp 1b
|
||||
cla
|
||||
jmp wakeup i
|
||||
|
||||
t = t+2
|
||||
|
||||
putcr: 0
|
||||
lac o15
|
||||
dac nttychar
|
||||
|
||||
"** 01-s1.pdf page 46
|
||||
|
||||
cla
|
||||
jmp putcr i
|
||||
|
||||
intrp1:
|
||||
lac d5
|
||||
dac .int1
|
||||
lac d1
|
||||
jms getchar
|
||||
skp
|
||||
jmp .-3
|
||||
lac d2
|
||||
jms getchar
|
||||
skp
|
||||
jmp .-3
|
||||
lac sfiles+0
|
||||
jms wakeup
|
||||
dac sfiles+0
|
||||
lac sfiles+1
|
||||
jms wakeup
|
||||
dac sfiles+1
|
||||
jms chkint
|
||||
jmp piret
|
||||
jmp 1f
|
||||
intrp2:
|
||||
lac d7
|
||||
dac .int2
|
||||
lac d3
|
||||
jms getchar
|
||||
skp
|
||||
jmp .-3
|
||||
lac sfiles+2
|
||||
jms wakeup
|
||||
dac sfiles+2
|
||||
lac sfiles+6
|
||||
jms wakeup
|
||||
dac sfiles+6
|
||||
jms chkint
|
||||
jmp piret
|
||||
1:
|
||||
lac 0
|
||||
dac 020
|
||||
lac .ac
|
||||
jmp 021
|
||||
211
scans/s8.s
Normal file
211
scans/s8.s
Normal file
@ -0,0 +1,211 @@
|
||||
"** 01-s1.pdf page 48
|
||||
|
||||
" s8
|
||||
|
||||
" manifests
|
||||
mnproc = 10
|
||||
dspbss = 270
|
||||
ndskbs = 4
|
||||
|
||||
" flags
|
||||
.insys: 0
|
||||
.int1: 0
|
||||
.int2: 0
|
||||
.ac: 0
|
||||
.savblk: 0
|
||||
.dsptm: 0
|
||||
.dskb: 0
|
||||
.dske: 0
|
||||
|
||||
" pointers
|
||||
tadu: tad ulist
|
||||
dacu: dac ulist
|
||||
maxquant: 30
|
||||
ofilesp: u.ofiles
|
||||
idskpp: i.dskps
|
||||
dskbufp: dskbuf
|
||||
edspbuf: dspbuf+dspbzs
|
||||
fblksp: s.fblks
|
||||
dacq1: dac q1
|
||||
lacq1: lac q1
|
||||
q2p: q2
|
||||
|
||||
" strings
|
||||
initf:
|
||||
<i>n;<i>t;< > ;< > "
|
||||
|
||||
" constants
|
||||
d0: 0
|
||||
d1: 1
|
||||
d2: 2
|
||||
d3: 3
|
||||
d4: 4
|
||||
d5: 5
|
||||
d6: 6
|
||||
d7: o7: 07
|
||||
d8: 8
|
||||
d9: 9
|
||||
o12: d10: 10
|
||||
o14: 014
|
||||
o15: 015
|
||||
o17: 017
|
||||
o20: 020
|
||||
o33: 033
|
||||
o40: 040
|
||||
o55: 055
|
||||
o77: 077
|
||||
d65:o101: 0101
|
||||
d33: 33
|
||||
o132: 0132
|
||||
o134: 0134
|
||||
o137: 0137
|
||||
o155: 0155
|
||||
o177: 0177
|
||||
"** 01-s1.pdf page 49
|
||||
o212: 0212
|
||||
o375: 0375
|
||||
o777: 0777
|
||||
o2000: 02000
|
||||
o4000: 04000
|
||||
d7999: 7999
|
||||
o10000: 010000
|
||||
o17762: 017762
|
||||
o17777: 017777
|
||||
o20001: 020001
|
||||
o40000: 040000
|
||||
o40001: 040001
|
||||
o70000: 070000
|
||||
o77777: 077777
|
||||
o100000: 0100000
|
||||
o140000: 0140000
|
||||
o200000: 0200000
|
||||
o200001: 0200001
|
||||
o300000: 0300000
|
||||
o400000: 0400000
|
||||
o500000: 0500000
|
||||
o577777: 0577777
|
||||
o600000: 0600000
|
||||
o640000: 0640000
|
||||
o700000: 0700000
|
||||
o777700: 0777700
|
||||
o777760: 0777760
|
||||
dm3: -3
|
||||
dm1: -1
|
||||
|
||||
9: .=.+t
|
||||
c1: .=.+1
|
||||
q1: q2;q2+90
|
||||
.=.+14
|
||||
q2:
|
||||
.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0
|
||||
.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0
|
||||
.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0
|
||||
.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0
|
||||
.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0
|
||||
dsploc: .=.+1
|
||||
dsplno: .=.+1
|
||||
dspbuf:
|
||||
0065057;0147740;0160000
|
||||
.=.+30
|
||||
coldentry:
|
||||
dzm 0100 " not re-entrant
|
||||
caf
|
||||
ion
|
||||
clon
|
||||
law 3072
|
||||
vcga
|
||||
jms dspinit
|
||||
law dspbuf
|
||||
jms movdsp
|
||||
cla
|
||||
jms dskio; 06000
|
||||
jms copy; dskbuf; sysdata; ulist-sysdata
|
||||
lac d3
|
||||
jms namei; initf
|
||||
jms halt
|
||||
"** 01-s1.pdf page 50
|
||||
jms iget
|
||||
cla
|
||||
jms iread; 4096; 4096
|
||||
jmp 4096
|
||||
. = dspbuf+dspbsz+3
|
||||
dskbuf = 07700
|
||||
dskbs: .=.+65+65+65+65
|
||||
edskbsp: .
|
||||
uquant: .=.+1
|
||||
dspbufp: .=.+1
|
||||
pbsflgs: .=.+2
|
||||
mode: .=.+1
|
||||
nttychar: .=.+1
|
||||
npptchar: .=.+1
|
||||
ttydelay: .=.+1
|
||||
name: .=.+4
|
||||
lnkaddr: .=.+1
|
||||
char: .=.+1
|
||||
uniqpid: 1
|
||||
lu: .=.+4
|
||||
sfiles: .=.+10
|
||||
dpdata:
|
||||
dpstat: .=.+1
|
||||
dpread: .=.+1
|
||||
dpwrite: .=.+1
|
||||
dpchar: .=.+1
|
||||
dspdata:
|
||||
.dspb: .=.+1
|
||||
.lpba: .=.+1 "** 4 written on listing
|
||||
crdata:
|
||||
crread: .=.+1
|
||||
crchar: .=.+1
|
||||
sysdata:
|
||||
s.nxfblk: .=.+1
|
||||
s.nfblks: .=.+1
|
||||
s.fblks: .=.+10
|
||||
s.uniq: .=.+1
|
||||
s.tim: .=.+2
|
||||
ulist:
|
||||
0131000;1;0;0
|
||||
0031040;0;0;0
|
||||
0031100;0;0;0
|
||||
0031140;0;0;0
|
||||
0031200;0;0;0
|
||||
0031240;0;0;0
|
||||
0031300;0;0;0
|
||||
0031340;0;0;0
|
||||
0031400;0;0;0
|
||||
0031440;0;0;0
|
||||
userdata:
|
||||
u.ac: 0
|
||||
u.mq: 0
|
||||
u.rq: .=.+9
|
||||
u.uid: -1
|
||||
u.pid: 1
|
||||
u.cdir: 3
|
||||
u.ulistp: clist
|
||||
u.swapret: 0
|
||||
u.base: 0
|
||||
u.count: 0
|
||||
"** 01-s1.pdf page 51
|
||||
u.limit: 0
|
||||
u.ofiles: .=.+30
|
||||
u.dspbuf: 0
|
||||
u.intflg: 1
|
||||
.=userdata+64
|
||||
ii: .=.+1
|
||||
inode:
|
||||
i.flags: .=.+1
|
||||
i.dskps: .=.+7
|
||||
i.uid: .=.+1
|
||||
i.nlks: .=.+1
|
||||
i.size: .=.+1
|
||||
i.uniq: .=.+1
|
||||
.= inode+12
|
||||
di: .=.+1
|
||||
d.i: .=.+1
|
||||
d.name: .=.+4
|
||||
d.uniq: .=.+1
|
||||
. = dnode+8
|
||||
fnode:
|
||||
f.flags: .=.+1
|
||||
f.badd: .=.+1
|
||||
f.i: 0
|
||||
|
||||
117
scans/s9.s
Normal file
117
scans/s9.s
Normal file
@ -0,0 +1,117 @@
|
||||
"** 01-s1.pdf page 54
|
||||
" s9 -- cold boot
|
||||
|
||||
. = coldentry+4
|
||||
|
||||
" zero i-list
|
||||
|
||||
dzm ii
|
||||
jms copyz; dskbuf; 64
|
||||
1:
|
||||
iac ii
|
||||
jms dskio; 0700
|
||||
isz ii
|
||||
-710
|
||||
tad ii
|
||||
jmp 1b
|
||||
|
||||
" free rest of disk
|
||||
|
||||
1:
|
||||
lac ii
|
||||
jms free
|
||||
isz ii
|
||||
-6400
|
||||
tad ii
|
||||
sza
|
||||
jmp 1b
|
||||
|
||||
" read in tapes
|
||||
|
||||
dzm ii
|
||||
1:
|
||||
dzm sum
|
||||
jms getw " count
|
||||
sza
|
||||
jmp .+3
|
||||
hlt
|
||||
jmp 1b " 0 count means pause
|
||||
dac xx
|
||||
isz ii
|
||||
iac ii
|
||||
jms iget
|
||||
jms copyz; inode; 12
|
||||
jms getw " flags
|
||||
dac i.dlags
|
||||
-1
|
||||
dac i.uid
|
||||
jms getw " number links
|
||||
dac i.nlks
|
||||
-2
|
||||
tad xx
|
||||
dac i.size
|
||||
lac ii
|
||||
dac u.uniq
|
||||
law 4096-1
|
||||
dac 8
|
||||
-1
|
||||
tad i.size
|
||||
cma
|
||||
sna
|
||||
jmp 3f
|
||||
dac xx
|
||||
|
||||
"** 01-s1.pdf page 54
|
||||
2:
|
||||
jms getw
|
||||
dac 8 i
|
||||
iss xx
|
||||
jmp 2b
|
||||
3:
|
||||
lac sum
|
||||
dac xx
|
||||
jms getw " checksum
|
||||
sad xx
|
||||
skp
|
||||
jms halt
|
||||
lac i.size
|
||||
dac .+4
|
||||
cla
|
||||
jms iwrite; 4096; ..
|
||||
jms iput
|
||||
cla
|
||||
jms dksio
|
||||
|
||||
|
||||
|
||||
; 07000 "** writing on listing
|
||||
jmp 1b
|
||||
|
||||
getw: 0
|
||||
jms getc
|
||||
alss 12
|
||||
imq
|
||||
jms getc
|
||||
omg
|
||||
lmg
|
||||
jms getc
|
||||
omg
|
||||
lmg
|
||||
add sum
|
||||
dac sum
|
||||
lacq
|
||||
jmp getw i
|
||||
|
||||
getc: 0
|
||||
iof
|
||||
rsa
|
||||
rsf
|
||||
jmp .-1
|
||||
rrb
|
||||
sna
|
||||
jmp getc+1
|
||||
and o77
|
||||
ion
|
||||
jmp getc i
|
||||
xx: 0
|
||||
sum: 0
|
||||
5
scans/sx.s
Normal file
5
scans/sx.s
Normal file
@ -0,0 +1,5 @@
|
||||
|
||||
" For now, this stuff is defined so that
|
||||
" the assembler doesn't complain about it
|
||||
|
||||
o7000: 07000
|
||||
42
tools/as7
42
tools/as7
@ -21,6 +21,8 @@ my $origline; # The current input line of code
|
||||
|
||||
my $stage = 1; # Pass one or pass two
|
||||
my $debug = 0; # Run in debug mode
|
||||
my $errors = 0; # set to non-zero on error
|
||||
my %Undef; # undefined symbols: only complain once
|
||||
|
||||
### Main program ###
|
||||
|
||||
@ -87,13 +89,25 @@ for my $i ( 0 .. $#Mem ) {
|
||||
}
|
||||
}
|
||||
|
||||
exit(0);
|
||||
exit($errors);
|
||||
|
||||
my $file; # global for error messages
|
||||
my $lineno;
|
||||
|
||||
sub err {
|
||||
my $msg = shift;
|
||||
$errors = 1; # exit status
|
||||
print STDERR "$file:$lineno: $msg\n";
|
||||
return 0;
|
||||
}
|
||||
|
||||
# Open and parse the given file
|
||||
sub parse_file {
|
||||
my $file = shift;
|
||||
$file = shift;
|
||||
open( my $IN, "<", $file ) || die("Cannot read $file: $!\n");
|
||||
$lineno = 0;
|
||||
while ( my $line = <$IN> ) {
|
||||
$lineno++;
|
||||
|
||||
# Lose the end of line and any leading/trailing whitespace
|
||||
# Discard any comments and preceding comment whitespace
|
||||
@ -116,7 +130,7 @@ sub parse_file {
|
||||
my $labelsect = $1;
|
||||
my $statement = $2;
|
||||
|
||||
#print(">$labelsect< >$statement<\n");
|
||||
#print(">$labelsect< >$statement<\n");
|
||||
|
||||
# Split $labelsect into labels using the : character
|
||||
my @labellist = split( /:\s*/, $labelsect );
|
||||
@ -147,9 +161,9 @@ sub parse_label {
|
||||
}
|
||||
|
||||
# It's a textual label, check if it's been defined before
|
||||
die("Label $label defined multiple times\n")
|
||||
if ( defined( $Label{$label} ) );
|
||||
|
||||
if ( defined( $Label{$label} ) ) {
|
||||
err("Label $label defined multiple times\n") if ( $stage == 1 );
|
||||
}
|
||||
# Otherwise, save its value
|
||||
$Label{$label} = $Var{'.'};
|
||||
#printf( "Set absolute label %s to 0%o\n", $label, $Label{$label} );
|
||||
@ -426,7 +440,11 @@ sub parse_expression {
|
||||
#print("Did a subtraction and got $diff\n");
|
||||
return ($diff);
|
||||
}
|
||||
die("I have no idea what $expression is in pass two\n") if ( $stage == 2 );
|
||||
if ( $stage == 2 ) {
|
||||
err("undefined: $expression") unless (defined $Undef{$expression});
|
||||
$Undef{$expression} = 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
# Add two expression together
|
||||
@ -463,18 +481,20 @@ sub find_relative_label {
|
||||
my $curlocation = $Var{'.'};
|
||||
|
||||
# Error check: no labels at all
|
||||
die("No relative labels\n") if ( !defined( $Rlabel{$label} ) );
|
||||
if ( !defined( $Rlabel{$label} ) ) {
|
||||
return err("relative label $label not defined\n");
|
||||
}
|
||||
|
||||
# Get the list of possible locations for this label
|
||||
my $locarray = $Rlabel{$label};
|
||||
|
||||
# Error check: no locations
|
||||
die("No relative labels\n") if ( @{$locarray} == 0 );
|
||||
return err("No relative labels") if ( @{$locarray} == 0 );
|
||||
|
||||
# Error check: forward but no next location, or backward but no previous
|
||||
die("No forward label\n")
|
||||
return err("No forward label $label")
|
||||
if ( ( $direction eq 'f' ) && ( $curlocation > $locarray->[-1] ) );
|
||||
die("No backward label\n")
|
||||
return err("No backward label $label")
|
||||
if ( ( $direction eq 'b' ) && ( $curlocation < $locarray->[0] ) );
|
||||
|
||||
# Search forward for a location larger then the current one
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user