mirror of
https://github.com/livingcomputermuseum/pdp7-unix.git
synced 2026-04-27 20:48:23 +00:00
Merge pull request #19 from philbudne/master
fix as7 relative subtraction; system & as comments
This commit is contained in:
@@ -193,8 +193,8 @@ process: 0
|
||||
lac dot+1 " get "." value
|
||||
dac lvrand
|
||||
lac dot " get "." type??
|
||||
sad d3 " three?
|
||||
jmp proc4 " no, give "." error
|
||||
sad d3 " three (user defined symbol?)?
|
||||
jmp proc4 " yes, give "." error
|
||||
sza " zero?
|
||||
jmp proc1 " no
|
||||
-1 " yes (".." type)
|
||||
|
||||
18
src/sys/s2.s
18
src/sys/s2.s
@@ -110,7 +110,7 @@
|
||||
skp
|
||||
jms error
|
||||
lac d1
|
||||
dac mode
|
||||
dac mode " save mode bits for access
|
||||
jms access
|
||||
jms dslot
|
||||
lac u.base
|
||||
@@ -131,8 +131,8 @@
|
||||
.unlink:
|
||||
jms argname
|
||||
dac u.base
|
||||
lac d1
|
||||
dac mode
|
||||
lac d1 " mode bit 1 (write?)
|
||||
dac mode " save for access call
|
||||
jms access
|
||||
dac d.i
|
||||
jms dput
|
||||
@@ -162,8 +162,8 @@
|
||||
lac u.cdir
|
||||
jms namei; 0:0
|
||||
jms error
|
||||
lac d1
|
||||
dac mode
|
||||
lac d1 " mode bit 1 (write?)
|
||||
dac mode " save for access call
|
||||
jms access
|
||||
jms copy; 1:0; d.name; 4
|
||||
jmp okexit
|
||||
@@ -197,8 +197,8 @@
|
||||
sza
|
||||
lac d1
|
||||
sna
|
||||
lac d2
|
||||
dac mode
|
||||
lac d2 " mode bit 2 (read?)
|
||||
dac mode " save for access call
|
||||
lac u.cdir
|
||||
jms namei; 0:0
|
||||
jms error
|
||||
@@ -218,8 +218,8 @@
|
||||
jmp open1
|
||||
|
||||
.creat:
|
||||
lac d1
|
||||
dac mode
|
||||
lac d1 " mode bit 1 (write?)
|
||||
dac mode " save for access call
|
||||
jms arg
|
||||
dac .+2
|
||||
jms copy; ..; name; 4
|
||||
|
||||
21
src/sys/s4.s
21
src/sys/s4.s
@@ -280,6 +280,9 @@ dskwr: 0
|
||||
jmp dskwr i
|
||||
t = t+3
|
||||
|
||||
" called with:
|
||||
" AC/ block
|
||||
" jms dskio; dsld_bits
|
||||
dskio: 0
|
||||
dac dskaddr
|
||||
cll; idiv; 80
|
||||
@@ -304,6 +307,8 @@ dskio: 0
|
||||
jmp dskio i
|
||||
t = t+1
|
||||
|
||||
" called with:
|
||||
" jms dsktrans; -WC; MAC; addr_ptr?; dsld_ptr
|
||||
dsktrans: 0
|
||||
-10
|
||||
dac 9f+t
|
||||
@@ -312,25 +317,25 @@ dsktrans: 0
|
||||
tad dsktrans
|
||||
dac 12
|
||||
"** 01-s1.pdf page 26
|
||||
dscs
|
||||
dscs " clear status register
|
||||
lac 12 i
|
||||
dslw
|
||||
dslw " load WC
|
||||
lac 12 i
|
||||
dslm
|
||||
dslm " load MAC
|
||||
lac 12 i
|
||||
jms laci
|
||||
dsld
|
||||
dsld " load TA & SA
|
||||
dzm .dskb
|
||||
lac 12 i
|
||||
jms laci
|
||||
jms laci
|
||||
dsls
|
||||
lac .dskb
|
||||
dsls " load status
|
||||
lac .dskb " check for interrupt
|
||||
sna
|
||||
jmp .-2
|
||||
lac .dske
|
||||
lac .dske " get status from interrupt
|
||||
sma
|
||||
jmp 12 i
|
||||
jmp 12 i " return
|
||||
isz 9f+t
|
||||
jmp 1b
|
||||
jms halt " 10 disk errors
|
||||
|
||||
@@ -22,7 +22,7 @@ access: 0
|
||||
sad i.uid
|
||||
lrs 2
|
||||
lacq
|
||||
and mode
|
||||
and mode " mode from system call
|
||||
sza
|
||||
jmp access i
|
||||
jms error
|
||||
@@ -138,6 +138,8 @@ dslot: 0
|
||||
jmp 1b
|
||||
jmp dslot i
|
||||
|
||||
" called with:
|
||||
" AC/ mode
|
||||
icreat: 0
|
||||
dac 9f+t
|
||||
jms dslot
|
||||
|
||||
16
tools/as7
16
tools/as7
@@ -465,15 +465,29 @@ sub parse_expression {
|
||||
|
||||
if ($op eq '+') {
|
||||
$word += $syllable;
|
||||
$flags |= $sylflags;
|
||||
}
|
||||
elsif ($op eq '-') {
|
||||
$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 {
|
||||
$word |= $syllable;
|
||||
$flags |= $sylflags;
|
||||
}
|
||||
$word &= 0777777;
|
||||
$flags |= $sylflags;
|
||||
printf("\tsyllable: %#o word: %#o\n", $syllable, $word) if ($debug);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user