Merge pull request #19 from philbudne/master

fix as7 relative subtraction; system & as comments
This commit is contained in:
philbudne
2016-03-02 15:43:06 -05:00
5 changed files with 42 additions and 21 deletions
+2 -2
View File
@@ -193,8 +193,8 @@ process: 0
lac dot+1 " get "." value lac dot+1 " get "." value
dac lvrand dac lvrand
lac dot " get "." type?? lac dot " get "." type??
sad d3 " three? sad d3 " three (user defined symbol?)?
jmp proc4 " no, give "." error jmp proc4 " yes, give "." error
sza " zero? sza " zero?
jmp proc1 " no jmp proc1 " no
-1 " yes (".." type) -1 " yes (".." type)
+9 -9
View File
@@ -110,7 +110,7 @@
skp skp
jms error jms error
lac d1 lac d1
dac mode dac mode " save mode bits for access
jms access jms access
jms dslot jms dslot
lac u.base lac u.base
@@ -131,8 +131,8 @@
.unlink: .unlink:
jms argname jms argname
dac u.base dac u.base
lac d1 lac d1 " mode bit 1 (write?)
dac mode dac mode " save for access call
jms access jms access
dac d.i dac d.i
jms dput jms dput
@@ -162,8 +162,8 @@
lac u.cdir lac u.cdir
jms namei; 0:0 jms namei; 0:0
jms error jms error
lac d1 lac d1 " mode bit 1 (write?)
dac mode dac mode " save for access call
jms access jms access
jms copy; 1:0; d.name; 4 jms copy; 1:0; d.name; 4
jmp okexit jmp okexit
@@ -197,8 +197,8 @@
sza sza
lac d1 lac d1
sna sna
lac d2 lac d2 " mode bit 2 (read?)
dac mode dac mode " save for access call
lac u.cdir lac u.cdir
jms namei; 0:0 jms namei; 0:0
jms error jms error
@@ -218,8 +218,8 @@
jmp open1 jmp open1
.creat: .creat:
lac d1 lac d1 " mode bit 1 (write?)
dac mode dac mode " save for access call
jms arg jms arg
dac .+2 dac .+2
jms copy; ..; name; 4 jms copy; ..; name; 4
+13 -8
View File
@@ -280,6 +280,9 @@ dskwr: 0
jmp dskwr i jmp dskwr i
t = t+3 t = t+3
" called with:
" AC/ block
" jms dskio; dsld_bits
dskio: 0 dskio: 0
dac dskaddr dac dskaddr
cll; idiv; 80 cll; idiv; 80
@@ -304,6 +307,8 @@ dskio: 0
jmp dskio i jmp dskio i
t = t+1 t = t+1
" called with:
" jms dsktrans; -WC; MAC; addr_ptr?; dsld_ptr
dsktrans: 0 dsktrans: 0
-10 -10
dac 9f+t dac 9f+t
@@ -312,25 +317,25 @@ dsktrans: 0
tad dsktrans tad dsktrans
dac 12 dac 12
"** 01-s1.pdf page 26 "** 01-s1.pdf page 26
dscs dscs " clear status register
lac 12 i lac 12 i
dslw dslw " load WC
lac 12 i lac 12 i
dslm dslm " load MAC
lac 12 i lac 12 i
jms laci jms laci
dsld dsld " load TA & SA
dzm .dskb dzm .dskb
lac 12 i lac 12 i
jms laci jms laci
jms laci jms laci
dsls dsls " load status
lac .dskb lac .dskb " check for interrupt
sna sna
jmp .-2 jmp .-2
lac .dske lac .dske " get status from interrupt
sma sma
jmp 12 i jmp 12 i " return
isz 9f+t isz 9f+t
jmp 1b jmp 1b
jms halt " 10 disk errors jms halt " 10 disk errors
+3 -1
View File
@@ -22,7 +22,7 @@ access: 0
sad i.uid sad i.uid
lrs 2 lrs 2
lacq lacq
and mode and mode " mode from system call
sza sza
jmp access i jmp access i
jms error jms error
@@ -138,6 +138,8 @@ dslot: 0
jmp 1b jmp 1b
jmp dslot i jmp dslot i
" called with:
" AC/ mode
icreat: 0 icreat: 0
dac 9f+t dac 9f+t
jms dslot jms dslot
+15 -1
View File
@@ -465,15 +465,29 @@ sub parse_expression {
if ($op eq '+') { if ($op eq '+') {
$word += $syllable; $word += $syllable;
$flags |= $sylflags;
} }
elsif ($op eq '-') { elsif ($op eq '-') {
$word -= $syllable; $word -= $syllable;
if ($flags & $RELATIVE) {
# relative-relative => absolute!
if ($sylflags & $RELATIVE) {
$flags &= ~$RELATIVE;
}
# else: relative-abs => relative (no change)
}
else { # word is absolute
if ($sylflags & $RELATIVE) {
err('A', 'absolute value minus relative??');
}
# else: absolute-absolute => absolute (no change)
}
} }
else { else {
$word |= $syllable; $word |= $syllable;
$flags |= $sylflags;
} }
$word &= 0777777; $word &= 0777777;
$flags |= $sylflags;
printf("\tsyllable: %#o word: %#o\n", $syllable, $word) if ($debug); printf("\tsyllable: %#o word: %#o\n", $syllable, $word) if ($debug);
} }
} }