system comments

This commit is contained in:
Phil Budne
2016-03-03 21:14:35 -05:00
parent 51ad7db306
commit efb0553d7f
6 changed files with 52 additions and 48 deletions
+1 -1
View File
@@ -139,7 +139,7 @@ swp: " system call dispatch table
swn: swn:
.-swp-1 i " count of system calls, plus indirect! .-swp-1 i " count of system calls, plus indirect!
" AC/ new value for intflg " AC/ new value for intflg (non-zero to ignore interrupt char)
" sys intrp " sys intrp
.intrp: .intrp:
lac u.ac lac u.ac
+12 -12
View File
@@ -205,24 +205,24 @@
lac u.cdir " get current working directory lac u.cdir " get current working directory
jms namei; 0:0 " search for file jms namei; 0:0 " search for file
jms error " error: return -1 jms error " error: return -1
jms iget jms iget " load inode
jms access " check access (may return w/ error to user) jms access " check access (may return w/ error to user)
lac i.flags " get file flags lac i.flags " get file flags
and o20 " get directory bit and o20 " get directory bit
sna " is directory? sna " is directory?
jmp open1 " no jmp open1 " no, join common code
lac mode " get access mode lac mode " get access mode
and d1 " get write bit and d1 " get write bit
sna " write access? sna " write access?
jmp open1 " no, continue jmp open1 " no, continue
lac u.uid " yes: get uid? lac u.uid " yes: get uid?
sma " negative (-1 is superuser) sma " negative? (-1 is superuser)
jms error " no: return error jms error " no: return error
jmp open1 jmp open1 " yes: join common code
.creat: .creat:
lac d1 " mode bit 1 (write?) lac d1 " mode bit 1 (write)
dac mode " save for access call dac mode " save for access call
jms arg jms arg
dac .+2 dac .+2
jms copy; ..; name; 4 jms copy; ..; name; 4
@@ -244,12 +244,12 @@
jmp open1 jmp open1
1: 1:
jms access jms access
lac u.ac lac u.ac " get access bits from user AC (zero for lock!)
and o17 and o17 " mask to permissions
jms icreat jms icreat
open1: open1: " common exit for open/creat
jms fassign jms fassign " assign fd slot
jms error jms error " none free, return -1
jmp sysexit jmp sysexit
"** 01-s1.pdf page 11 "** 01-s1.pdf page 11
@@ -312,7 +312,7 @@ open1:
jms error " no: error jms error " no: error
dac u.limit " yes: save as limit dac u.limit " yes: save as limit
jms finac " get fnode with fd from user AC jms finac " get fnode with fd from user AC
lac f.flags " get file table flags lac f.flags " get open file table flags
and d1 " open for write? and d1 " open for write?
sna " yes, skip sna " yes, skip
jms error " no: error jms error " no: error
+3 -2
View File
@@ -1,7 +1,7 @@
"** 01-s1.pdf page 21 "** 01-s1.pdf page 21
" s4 " s4
" allocate a free disk block " allocate a free disk block for a file (data or indirect)
alloc: 0 alloc: 0
-1 -1
tad s.nfblks tad s.nfblks
@@ -287,6 +287,8 @@ dskrd: 0
jms collapse jms collapse
jmp dskrd i jmp dskrd i
" write a file block (data, inode or indirect)
" AC/ block
dskwr: 0 dskwr: 0
jms betwen; d2; d7999 jms betwen; d2; d7999
jms halt jms halt
@@ -298,7 +300,6 @@ dskwr: 0
jmp dskwr i jmp dskwr i
t = t+3 t = t+3
" called with:
" AC/ block " AC/ block
" jms dskio; dsld_bits " jms dskio; dsld_bits
dskio: 0 dskio: 0
+20 -20
View File
@@ -31,35 +31,35 @@ access: 0
jms error " no: return error from system call jms error " no: return error from system call
fassign: 0 fassign: 0
-10 -10 " loop count
dac 9f+t dac 9f+t " in t0
1: 1:
lac 9f+t lac 9f+t " get count
tad d10 tad d10 " turn into fd
jms fget jms fget " fetch open file into "fnode"
jms halt " will not happen jms halt " will not happen
lac f.flags lac f.flags " get fnode flags
sma sma " sign bit set (active)?
jmp 1f jmp 1f " no: free
isz 9f+t isz 9f+t " increment loop count & loop until zero
jmp 1b jmp 1b
jmp fassign i jmp fassign i
1: 1:
lac mode lac mode " get mode from system call
xor o400000 xor o400000 " set sign bit
dac f.flags dac f.flags " save in fnode
lac ii lac ii " get i-number
dac f.i dac f.i " save in fnode
lac 9f+t lac 9f+t
tad d10 tad d10 " get fd
dac u.ac dac u.ac " return in user AC
dzm f.badd dzm f.badd " clear file offset in fnode
jms fput jms fput " copy fnode back into u.ofiles
isz fassign isz fassign " give skip return
jmp fassign i jmp fassign i
t = t+1 t = t+1
" get inode fpr an open file " load fnode (open file entry) from u.ofiles
" AC/ user fd " AC/ user fd
" jms fget " jms fget
" bad fd " bad fd
+9 -9
View File
@@ -106,16 +106,16 @@ dsprestart:
rlpd rlpd
jmp piret jmp piret
1: ksf 1: ksf " (TTY) keyboard flag set?
jmp 1f jmp 1f " no
lac ttydelay lac ttydelay
sma sma
isz ttydelay isz ttydelay
krb krb " read keyboard buffer
dac char dac char " save in char
sad o375 sad o375 " interrupt char ('}'?)
jmp intrp1 jmp intrp1 " yes
lac d1 lac d1
jms putchar jms putchar
dzm char dzm char
@@ -330,9 +330,9 @@ putcr: 0
cla cla
jmp putcr i jmp putcr i
intrp1: intrp1: " here with keyboard interrupt
lac d6 lac d6 " get keyboard special device number
dac .int1 dac .int1 " save as interrupt source
lac d1 lac d1
jms getchar jms getchar
skp skp
+7 -4
View File
@@ -229,7 +229,10 @@ dnode: " directory entry:
d.uniq: .=.+1 " unique number from directory inode d.uniq: .=.+1 " unique number from directory inode
. = dnode+8 . = dnode+8
fnode: " open file entry fnode: " open file entry
f.flags: .=.+1 f.flags: .=.+1 " see below
f.badd: .=.+1 f.badd: .=.+1 " offset
f.i: 0 f.i: 0 " file i-number
" f.flags:
" 400000 in use
" 000002 read
" 000001 write