Check if the disk is inserted before opening a file
This commit is contained in:
parent
bec78c9a10
commit
7a1b724707
20
ryfs.asm
20
ryfs.asm
|
@ -19,6 +19,20 @@ ryfs_open:
|
||||||
push r10
|
push r10
|
||||||
push r31
|
push r31
|
||||||
|
|
||||||
|
; check if the requested disk id is inserted
|
||||||
|
cmp r1, 4
|
||||||
|
ifnz jmp ryfs_open_check_disk
|
||||||
|
ifz call is_romdisk_available
|
||||||
|
ifnz jmp ryfs_open_fail
|
||||||
|
cmp r1, 4
|
||||||
|
ifz jmp ryfs_open_continue
|
||||||
|
ryfs_open_check_disk:
|
||||||
|
mov r10, r1
|
||||||
|
or r10, 0x80001000
|
||||||
|
in r10, r10
|
||||||
|
cmp r10, 0
|
||||||
|
ifz jmp ryfs_open_fail
|
||||||
|
ryfs_open_continue:
|
||||||
; r10: pointer to file struct entry
|
; r10: pointer to file struct entry
|
||||||
mov r10, r2
|
mov r10, r2
|
||||||
mov.8 [r10], r1 ; write file_disk
|
mov.8 [r10], r1 ; write file_disk
|
||||||
|
@ -41,8 +55,7 @@ ryfs_open_find_dir_entry_loop:
|
||||||
add r1, 16 ; point to the file name in the next directory entry
|
add r1, 16 ; point to the file name in the next directory entry
|
||||||
loop ryfs_open_find_dir_entry_loop
|
loop ryfs_open_find_dir_entry_loop
|
||||||
; if we reach this point, the file wasn't found
|
; if we reach this point, the file wasn't found
|
||||||
mov r0, 0
|
jmp ryfs_open_fail
|
||||||
jmp ryfs_open_end
|
|
||||||
ryfs_open_found_dir_entry:
|
ryfs_open_found_dir_entry:
|
||||||
sub r1, 4 ; point to first sector of this file
|
sub r1, 4 ; point to first sector of this file
|
||||||
mov.16 [r10], [r1] ; write file_first_sector
|
mov.16 [r10], [r1] ; write file_first_sector
|
||||||
|
@ -57,6 +70,9 @@ ryfs_open_end:
|
||||||
pop r2
|
pop r2
|
||||||
pop r1
|
pop r1
|
||||||
ret
|
ret
|
||||||
|
ryfs_open_fail:
|
||||||
|
mov r0, 0
|
||||||
|
jmp ryfs_open_end
|
||||||
|
|
||||||
; seek specified file to the specified offset
|
; seek specified file to the specified offset
|
||||||
; inputs:
|
; inputs:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user