mirror of
https://github.com/ksherlock/minix.fst.git
synced 2026-04-23 18:18:24 +00:00
wip check-in
This commit is contained in:
+11
@@ -125,6 +125,17 @@
|
||||
jsl $E10000
|
||||
mend
|
||||
|
||||
macro
|
||||
&l _Multiply
|
||||
&l ldx #$090B
|
||||
jsl $E10000
|
||||
mend
|
||||
|
||||
macro
|
||||
&l _UDivide
|
||||
&l ldx #$0B0B
|
||||
jsl $E10000
|
||||
mend
|
||||
|
||||
macro
|
||||
&l _DebugHexDump
|
||||
|
||||
+88
-35
@@ -79,7 +79,14 @@
|
||||
data record
|
||||
|
||||
|
||||
; size of the directory, divided by dirent_size.
|
||||
;
|
||||
; dirent_entry - current entry # (ignoring sparse entries, ., ..)
|
||||
; - equivalent to GS/OS displacement.
|
||||
; dirent_size - self explanatory (16 or 32)
|
||||
; dirents_per_block - self explanatory (32 or 64)
|
||||
; dirent_zone - current zone number for GetDirEntry
|
||||
; dirent_offset - current offset in current zone
|
||||
|
||||
size ds.l 1
|
||||
|
||||
displacement ds.w 1
|
||||
@@ -136,7 +143,9 @@ get_dir_entry procname export
|
||||
with dp
|
||||
with data
|
||||
|
||||
;~DebugSetTrace #1
|
||||
; pha
|
||||
; ~DebugSetTrace #1
|
||||
; pla
|
||||
|
||||
jsr init_vcr
|
||||
jsr init_fcr
|
||||
@@ -434,10 +443,9 @@ count_entries procname
|
||||
|
||||
lda #0
|
||||
jsr find_zone
|
||||
bcs exit
|
||||
|
||||
zone_loop
|
||||
|
||||
bcs exit
|
||||
cmp #0
|
||||
bne @ok
|
||||
jsr sparse_dirent_block
|
||||
@@ -458,7 +466,6 @@ next
|
||||
beq done
|
||||
|
||||
jsr next_zone
|
||||
bcs exit
|
||||
bra zone_loop
|
||||
|
||||
done
|
||||
@@ -709,6 +716,56 @@ no
|
||||
find_next_dirent proc
|
||||
with data, dp
|
||||
|
||||
|
||||
; adjust size based on the current dirent zone
|
||||
; and offset.
|
||||
; size -= dirent_zone * dirents_per_block
|
||||
; size -= dirent_offset / dirent_size
|
||||
|
||||
lda dirent_zone
|
||||
beq @fudge1
|
||||
pea #0
|
||||
pea #0
|
||||
pha ; dirent_zone
|
||||
lda dirents_per_block
|
||||
pha
|
||||
_Multiply
|
||||
sec
|
||||
lda size
|
||||
sbc 1,s
|
||||
sta size
|
||||
lda size+2
|
||||
sbc 3,s
|
||||
sta size+2
|
||||
pla
|
||||
pla
|
||||
@fudge1
|
||||
lda dirent_offset
|
||||
beq @fudge2
|
||||
pea 0
|
||||
pea 0
|
||||
pha
|
||||
lda dirent_size
|
||||
pha
|
||||
_UDivide
|
||||
lda size
|
||||
sec
|
||||
sbc 1,s
|
||||
sta size
|
||||
lda size+2
|
||||
sbc #0
|
||||
sta size+2
|
||||
pla
|
||||
pla
|
||||
@fudge2
|
||||
lda size+2
|
||||
bmi eod
|
||||
ora size
|
||||
beq eod
|
||||
|
||||
; if size is negative, eod.
|
||||
|
||||
|
||||
lda dirent_entry
|
||||
beq @first
|
||||
dec dirent_entry
|
||||
@@ -723,28 +780,19 @@ find_next_dirent proc
|
||||
@ok
|
||||
|
||||
; make sure dir not empty (should never happen...)
|
||||
lda size
|
||||
beq eod
|
||||
; lda size
|
||||
; ora size+2
|
||||
; beq eod
|
||||
|
||||
ldx dirent_zone
|
||||
|
||||
loop
|
||||
lda disk_inode.zone,x
|
||||
beq sparse ; should never happen...
|
||||
phx ; save
|
||||
jsr read_data_block
|
||||
plx
|
||||
lda dirent_zone
|
||||
jsr find_zone
|
||||
zone_loop
|
||||
bcs exit
|
||||
cmp #0
|
||||
beq sparse
|
||||
|
||||
; phx
|
||||
; phy
|
||||
; pha
|
||||
; ~DebugHexDump <io_buffer, #1024
|
||||
; pla
|
||||
; ply
|
||||
; plx
|
||||
|
||||
|
||||
jsr read_data_block
|
||||
bcs exit
|
||||
|
||||
jsr find_dirent_block
|
||||
bcc next
|
||||
@@ -752,19 +800,19 @@ loop
|
||||
cmp #1
|
||||
rts
|
||||
|
||||
next
|
||||
inx
|
||||
inx
|
||||
stz dirent_offset
|
||||
|
||||
cpx #v1.NR_DZONES*2
|
||||
bcs exit
|
||||
bra loop
|
||||
|
||||
sparse
|
||||
jsr sparse_dirent_block
|
||||
bcs eod
|
||||
bra next
|
||||
|
||||
next
|
||||
stz dirent_offset
|
||||
lda size
|
||||
ora size+2
|
||||
beq eod
|
||||
|
||||
jsr next_zone
|
||||
bra zone_loop
|
||||
|
||||
|
||||
|
||||
found_it
|
||||
@@ -789,6 +837,8 @@ eod
|
||||
find_dirent_block procname
|
||||
with dp, data
|
||||
|
||||
set_partial
|
||||
|
||||
ldy dirent_offset
|
||||
loop
|
||||
lda [io_buffer],y
|
||||
@@ -799,7 +849,7 @@ loop
|
||||
bmi found_it
|
||||
|
||||
next
|
||||
dec size
|
||||
dec partial
|
||||
beq eod
|
||||
|
||||
tya
|
||||
@@ -810,6 +860,8 @@ next
|
||||
bcc loop
|
||||
; not found ...
|
||||
|
||||
fix_size
|
||||
|
||||
lda #0
|
||||
clc
|
||||
rts
|
||||
@@ -982,6 +1034,7 @@ find_entry_by_name procname export
|
||||
|
||||
zone_loop
|
||||
bcs exit
|
||||
cmp #0
|
||||
beq sparse
|
||||
jsr read_data_block
|
||||
bcs exit
|
||||
|
||||
Reference in New Issue
Block a user