sys: comments for seek & tell

This commit is contained in:
Phil Budne
2016-03-28 01:02:54 -04:00
parent fed6525853
commit fa74947215
2 changed files with 35 additions and 34 deletions
+23 -23
View File
@@ -65,36 +65,36 @@
jmp sysexit jmp sysexit
.seek: .seek:
jms seektell jms seektell " fetch offset & whence (return seek base)
tad u.base tad u.base " add offset
"** 01-s1.pdf page 8 "** 01-s1.pdf page 8
spa spa " positive?
jms error jms error " no: error
lmq lmq " save position in MQ
lac f.flags lac f.flags " get file flags
and d1 and d1 " get write bit
sna sna " open for write?
jms 1f jmp 1f " no
lacq lacq " yes: get position
jms betwen; d0; i.size jms betwen; d0; i.size " between zero and size?
jms dacisize jms dacisize " no: store new size
jmp 2f jmp 2f
1: 1:
lacq lacq " reading: get position
jms betwen; d0; i.size jms betwen; d0; i.size " between zero and size?
lac i.size lac i.size " no: get current size
2: 2:
dac f.badd dac f.badd " save as offset
dac u.ac dac u.ac " return in AC
jms fput jms fput " copy fnode back to user area
jmp sysexit jmp sysexit " return to user
.tell: .tell:
jms seektell jms seektell " fetch offset & whence (return seek base)
cma cma
tad d1 tad d1 " negate base
tad u.base tad u.base " add to user offset
dac u.ac dac u.ac " return in user AC
jmp sysexit jmp sysexit
.link: .link:
+12 -11
View File
@@ -278,20 +278,21 @@ argname: 0
jms error " failed: return error directly to user jms error " failed: return error directly to user
jmp argname i jmp argname i
" common code for seek/tell system calls
seektell: 0 seektell: 0
jms arg jms arg " fetch 1st arg after sys
dac u.base dac u.base " save in u.base
"** 01-s1.pdf page 32 "** 01-s1.pdf page 32
jms arg jms arg " fetch 2nd arg (whence??)
dac u.limit dac u.limit " save in u.limit
jms finac jms finac " fetch fnode & inode for fd in AC
lac u.limit lac u.limit " get whence arg back
sna sna " zero?
jmp seektell i jmp seektell i " yes, return zero (relative to start)
sad d1 sad d1 " one?
jmp .+3 jmp .+3 " yes: return pos (relative to current)
lac i.size lac i.size " no: return file size (relative to end)
jmp seektell i jmp seektell i
lac f.badd lac f.badd
jmp seektell i jmp seektell i