Merge pull request #62 from philbudne/master
disk buffer comments (and comments about a mystery)
This commit is contained in:
+34
-22
@@ -229,28 +229,36 @@ putq: 0
|
|||||||
dac q1+1 ..
|
dac q1+1 ..
|
||||||
jmp putq i
|
jmp putq i
|
||||||
|
|
||||||
|
" NOTE!! srcdbs, collaps, dskrd, dskwr share the same "temp" vars!!
|
||||||
|
|
||||||
|
" check if disk block number in AC in memory
|
||||||
|
" give skip return if block not found
|
||||||
srcdbs: 0
|
srcdbs: 0
|
||||||
dac 9f+t+2 "* lmq
|
dac 9f+t+2 "* lmq " save block number in t2
|
||||||
-ndskbs
|
-ndskbs " loop for number of buffers
|
||||||
dac 9f+t
|
dac 9f+t " in t0
|
||||||
law dskbs "* -1 dac 8 written
|
law dskbs "* -1 dac 8 written " get address of first buffer
|
||||||
dac 9f+t+1 "* lacq
|
dac 9f+t+1 "* lacq " in t1
|
||||||
1:
|
1:
|
||||||
lac 9f+t+2 "** crossed out
|
lac 9f+t+2 "** crossed out " get desired block number
|
||||||
sad 9f+t+1 "** isz 8 written
|
" Phil: it looks to me like the next line
|
||||||
jmp srcdbs i
|
" is missing an indirect (t1 contains an address),
|
||||||
law 65 "** ??? crossed out
|
" but setting "i" breaks the kernel, so there must
|
||||||
|
" be something else missing/wrong as well!
|
||||||
|
sad 9f+t+1 "** isz 8 written " match buffer block?
|
||||||
|
jmp srcdbs i " yes: return without skip
|
||||||
|
law 65 "** ??? crossed out " no: advance to next buffer
|
||||||
tad 9f+t+1 "** crossed out isz 8 written
|
tad 9f+t+1 "** crossed out isz 8 written
|
||||||
isz 9f+t+1
|
isz 9f+t+1
|
||||||
isz 9f+t
|
isz 9f+t
|
||||||
jmp 1b
|
jmp 1b
|
||||||
isz srcdbs
|
isz srcdbs " block not found: give skip return
|
||||||
jmp srcdbs i
|
jmp srcdbs i
|
||||||
|
|
||||||
collapse: 0
|
collapse: 0
|
||||||
cla
|
cla " look for block zero
|
||||||
jms srcdbs
|
jms srcdbs " in memory?
|
||||||
jmp 1f
|
jmp 1f " yes
|
||||||
law dskbs
|
law dskbs
|
||||||
dac 9f+t+1 "** 9f+t+1 crossed out: 8 written in
|
dac 9f+t+1 "** 9f+t+1 crossed out: 8 written in
|
||||||
1:
|
1:
|
||||||
@@ -276,17 +284,18 @@ collapse: 0
|
|||||||
jms copy; dskbuf; 0:..; 64
|
jms copy; dskbuf; 0:..; 64
|
||||||
jmp collapse i
|
jmp collapse i
|
||||||
|
|
||||||
|
" read logical disk block number (2..7999) in AC
|
||||||
dskrd: 0
|
dskrd: 0
|
||||||
jms betwen; d2; d7999
|
jms betwen; d2; d7999
|
||||||
|
|
||||||
"** 01-s1.pdf page 25
|
"** 01-s1.pdf page 25
|
||||||
jms halt
|
jms halt " bad block number
|
||||||
sad dskaddr
|
sad dskaddr " block currently in dskbuf
|
||||||
jmp dskrd i
|
jmp dskrd i " yes: return
|
||||||
dac dskaddr
|
dac dskaddr " save block address
|
||||||
jms srcdbs
|
jms srcdbs " in memory?
|
||||||
jmp 1f
|
jmp 1f " yes
|
||||||
lac dskaddr
|
lac dskaddr " no: read from disk
|
||||||
jms dskio; 06000
|
jms dskio; 06000
|
||||||
jmp 2f
|
jmp 2f
|
||||||
1:
|
1:
|
||||||
@@ -312,6 +321,7 @@ dskwr: 0
|
|||||||
jmp dskwr i
|
jmp dskwr i
|
||||||
t = t+3
|
t = t+3
|
||||||
|
|
||||||
|
" called to read/write logical block into "dskbuf"
|
||||||
" AC/ block
|
" AC/ block
|
||||||
" jms dskio; dsld_bits
|
" jms dskio; dsld_bits
|
||||||
dskio: 0
|
dskio: 0
|
||||||
@@ -338,8 +348,10 @@ dskio: 0
|
|||||||
jmp dskio i
|
jmp dskio i
|
||||||
t = t+1
|
t = t+1
|
||||||
|
|
||||||
" called with:
|
" perform disk I/O (both filesystem buffer and swapping)
|
||||||
" jms dsktrans; -WC; MAC; addr_ptr?; dsld_ptr
|
" passed physical (BCD) disk address
|
||||||
|
" called:
|
||||||
|
" jms dsktrans; -WC; MAC; addr_ptr; dsld_ptr
|
||||||
dsktrans: 0
|
dsktrans: 0
|
||||||
-10
|
-10
|
||||||
dac 9f+t
|
dac 9f+t
|
||||||
|
|||||||
+4
-4
@@ -3,9 +3,9 @@
|
|||||||
" s8
|
" s8
|
||||||
|
|
||||||
" manifests
|
" manifests
|
||||||
mnproc = 10
|
mnproc = 10 " number of processes
|
||||||
dspbsz = 270
|
dspbsz = 270 " display buffer size
|
||||||
ndskbs = 4
|
ndskbs = 4 " number of buffers at dskbs
|
||||||
|
|
||||||
" flags
|
" flags
|
||||||
.insys: 0 " "in system"
|
.insys: 0 " "in system"
|
||||||
@@ -140,7 +140,7 @@ coldentry:
|
|||||||
jmp 4096 " start process 1
|
jmp 4096 " start process 1
|
||||||
. = dspbuf+dspbsz+3
|
. = dspbuf+dspbsz+3
|
||||||
dskbuf = 07700
|
dskbuf = 07700
|
||||||
dskbs: .=.+65+65+65+65
|
dskbs: .=.+65+65+65+65 " ndskbs buffers (block number + block)
|
||||||
edskbsp: .
|
edskbsp: .
|
||||||
uquant: .=.+1 " number of ticks user has been running
|
uquant: .=.+1 " number of ticks user has been running
|
||||||
dspbufp: .=.+1 " pointer to display buffer
|
dspbufp: .=.+1 " pointer to display buffer
|
||||||
|
|||||||
Reference in New Issue
Block a user