1
0
mirror of https://github.com/DoctorWkt/pdp7-unix.git synced 2026-01-25 03:37:23 +00:00

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

View File

@ -139,7 +139,7 @@ swp: " system call dispatch table
swn:
.-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
.intrp:
lac u.ac

View File

@ -205,24 +205,24 @@
lac u.cdir " get current working directory
jms namei; 0:0 " search for file
jms error " error: return -1
jms iget
jms iget " load inode
jms access " check access (may return w/ error to user)
lac i.flags " get file flags
and o20 " get directory bit
sna " is directory?
jmp open1 " no
jmp open1 " no, join common code
lac mode " get access mode
and d1 " get write bit
sna " write access?
jmp open1 " no, continue
lac u.uid " yes: get uid?
sma " negative (-1 is superuser)
sma " negative? (-1 is superuser)
jms error " no: return error
jmp open1
jmp open1 " yes: join common code
.creat:
lac d1 " mode bit 1 (write?)
dac mode " save for access call
lac d1 " mode bit 1 (write)
dac mode " save for access call
jms arg
dac .+2
jms copy; ..; name; 4
@ -244,12 +244,12 @@
jmp open1
1:
jms access
lac u.ac
and o17
lac u.ac " get access bits from user AC (zero for lock!)
and o17 " mask to permissions
jms icreat
open1:
jms fassign
jms error
open1: " common exit for open/creat
jms fassign " assign fd slot
jms error " none free, return -1
jmp sysexit
"** 01-s1.pdf page 11
@ -312,7 +312,7 @@ open1:
jms error " no: error
dac u.limit " yes: save as limit
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?
sna " yes, skip
jms error " no: error

View File

@ -1,7 +1,7 @@
"** 01-s1.pdf page 21
" s4
" allocate a free disk block
" allocate a free disk block for a file (data or indirect)
alloc: 0
-1
tad s.nfblks
@ -287,6 +287,8 @@ dskrd: 0
jms collapse
jmp dskrd i
" write a file block (data, inode or indirect)
" AC/ block
dskwr: 0
jms betwen; d2; d7999
jms halt
@ -298,7 +300,6 @@ dskwr: 0
jmp dskwr i
t = t+3
" called with:
" AC/ block
" jms dskio; dsld_bits
dskio: 0

View File

@ -31,35 +31,35 @@ access: 0
jms error " no: return error from system call
fassign: 0
-10
dac 9f+t
-10 " loop count
dac 9f+t " in t0
1:
lac 9f+t
tad d10
jms fget
lac 9f+t " get count
tad d10 " turn into fd
jms fget " fetch open file into "fnode"
jms halt " will not happen
lac f.flags
sma
jmp 1f
isz 9f+t
lac f.flags " get fnode flags
sma " sign bit set (active)?
jmp 1f " no: free
isz 9f+t " increment loop count & loop until zero
jmp 1b
jmp fassign i
1:
lac mode
xor o400000
dac f.flags
lac ii
dac f.i
lac mode " get mode from system call
xor o400000 " set sign bit
dac f.flags " save in fnode
lac ii " get i-number
dac f.i " save in fnode
lac 9f+t
tad d10
dac u.ac
dzm f.badd
jms fput
isz fassign
tad d10 " get fd
dac u.ac " return in user AC
dzm f.badd " clear file offset in fnode
jms fput " copy fnode back into u.ofiles
isz fassign " give skip return
jmp fassign i
t = t+1
" get inode fpr an open file
" load fnode (open file entry) from u.ofiles
" AC/ user fd
" jms fget
" bad fd

View File

@ -106,16 +106,16 @@ dsprestart:
rlpd
jmp piret
1: ksf
jmp 1f
1: ksf " (TTY) keyboard flag set?
jmp 1f " no
lac ttydelay
sma
isz ttydelay
krb
dac char
sad o375
jmp intrp1
krb " read keyboard buffer
dac char " save in char
sad o375 " interrupt char ('}'?)
jmp intrp1 " yes
lac d1
jms putchar
dzm char
@ -330,9 +330,9 @@ putcr: 0
cla
jmp putcr i
intrp1:
lac d6
dac .int1
intrp1: " here with keyboard interrupt
lac d6 " get keyboard special device number
dac .int1 " save as interrupt source
lac d1
jms getchar
skp

View File

@ -229,7 +229,10 @@ dnode: " directory entry:
d.uniq: .=.+1 " unique number from directory inode
. = dnode+8
fnode: " open file entry
f.flags: .=.+1
f.badd: .=.+1
f.i: 0
f.flags: .=.+1 " see below
f.badd: .=.+1 " offset
f.i: 0 " file i-number
" f.flags:
" 400000 in use
" 000002 read
" 000001 write