disk buffer comments (and comments about a mystery)

This commit is contained in:
Phil Budne
2016-03-22 21:29:46 -04:00
parent 7fcf1d230c
commit ac6e7470cf
2 changed files with 38 additions and 26 deletions
+34 -22
View File
@@ -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
View File
@@ -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