mirror of
https://github.com/hsoft/collapseos.git
synced 2024-12-25 17:58:07 +11:00
Extract fs_cmds.asm from fs.asm
This commit is contained in:
parent
23f0dc18ca
commit
df67a38f81
@ -468,12 +468,9 @@ fsTell:
|
|||||||
ld h, (ix+1)
|
ld h, (ix+1)
|
||||||
ret
|
ret
|
||||||
|
|
||||||
; *** SHELL COMMANDS ***
|
|
||||||
; Mount the fs subsystem upon the currently selected blockdev at current offset.
|
; Mount the fs subsystem upon the currently selected blockdev at current offset.
|
||||||
; Verify is block is valid and error out if its not, mounting nothing.
|
; Verify is block is valid and error out if its not, mounting nothing.
|
||||||
; Upon mounting, copy currently selected device in FS_GETC/PUTC/SEEK/TELL.
|
; Upon mounting, copy currently selected device in FS_GETC/PUTC/SEEK/TELL.
|
||||||
fsOnCmd:
|
|
||||||
.db "fson", 0, 0, 0
|
|
||||||
fsOn:
|
fsOn:
|
||||||
push hl
|
push hl
|
||||||
push de
|
push de
|
||||||
@ -508,86 +505,3 @@ fsOn:
|
|||||||
pop de
|
pop de
|
||||||
pop hl
|
pop hl
|
||||||
ret
|
ret
|
||||||
|
|
||||||
; Lists filenames in currently active FS
|
|
||||||
flsCmd:
|
|
||||||
.db "fls", 0, 0, 0, 0
|
|
||||||
call fsBegin
|
|
||||||
jr nz, .error
|
|
||||||
.loop:
|
|
||||||
call fsIsDeleted
|
|
||||||
jr z, .skip
|
|
||||||
ld hl, FS_META+FS_META_FNAME_OFFSET
|
|
||||||
call printstr
|
|
||||||
call printcrlf
|
|
||||||
.skip:
|
|
||||||
call fsNext
|
|
||||||
jr z, .loop ; Z set? fsNext was successful
|
|
||||||
xor a
|
|
||||||
jr .end
|
|
||||||
.error:
|
|
||||||
ld a, FS_ERR_NO_FS
|
|
||||||
.end:
|
|
||||||
ret
|
|
||||||
|
|
||||||
; Takes one byte block number to allocate as well we one string arg filename
|
|
||||||
; and allocates a new file in the current fs.
|
|
||||||
fnewCmd:
|
|
||||||
.db "fnew", 0b001, 0b1001, 0b001
|
|
||||||
push hl
|
|
||||||
ld a, (hl)
|
|
||||||
inc hl
|
|
||||||
call intoHL
|
|
||||||
call fsAlloc
|
|
||||||
pop hl
|
|
||||||
xor a
|
|
||||||
ret
|
|
||||||
|
|
||||||
; Deletes filename with specified name
|
|
||||||
fdelCmd:
|
|
||||||
.db "fdel", 0b1001, 0b001, 0
|
|
||||||
push hl
|
|
||||||
push de
|
|
||||||
call intoHL ; HL now holds the string we look for
|
|
||||||
call fsFindFN
|
|
||||||
jr nz, .notfound
|
|
||||||
; Found! delete
|
|
||||||
xor a
|
|
||||||
; Set filename to zero to flag it as deleted
|
|
||||||
ld (FS_META+FS_META_FNAME_OFFSET), a
|
|
||||||
call fsWriteMeta
|
|
||||||
; a already to 0, our result.
|
|
||||||
jr .end
|
|
||||||
.notfound:
|
|
||||||
ld a, FS_ERR_NOT_FOUND
|
|
||||||
.end:
|
|
||||||
pop de
|
|
||||||
pop hl
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
; Opens specified filename in specified file handle.
|
|
||||||
; First argument is file handle, second one is file name.
|
|
||||||
; Example: fopn 0 foo.txt
|
|
||||||
fopnCmd:
|
|
||||||
.db "fopn", 0b001, 0b1001, 0b001
|
|
||||||
push hl
|
|
||||||
push de
|
|
||||||
ld a, (hl) ; file handle index
|
|
||||||
ld de, FS_HANDLES
|
|
||||||
call addDE ; DE now stores pointer to file handle
|
|
||||||
inc hl
|
|
||||||
call intoHL ; HL now holds the string we look for
|
|
||||||
call fsFindFN
|
|
||||||
jr nz, .notfound
|
|
||||||
; Found!
|
|
||||||
; FS_PTR points to the file we want to open
|
|
||||||
ex hl, de ; HL now points to the file handle.
|
|
||||||
call fsOpen
|
|
||||||
jr .end
|
|
||||||
.notfound:
|
|
||||||
ld a, FS_ERR_NOT_FOUND
|
|
||||||
.end:
|
|
||||||
pop de
|
|
||||||
pop hl
|
|
||||||
ret
|
|
||||||
|
87
parts/z80/fs_cmds.asm
Normal file
87
parts/z80/fs_cmds.asm
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
; *** SHELL COMMANDS ***
|
||||||
|
fsOnCmd:
|
||||||
|
.db "fson", 0, 0, 0
|
||||||
|
jp fsOn
|
||||||
|
|
||||||
|
; Lists filenames in currently active FS
|
||||||
|
flsCmd:
|
||||||
|
.db "fls", 0, 0, 0, 0
|
||||||
|
call fsBegin
|
||||||
|
jr nz, .error
|
||||||
|
.loop:
|
||||||
|
call fsIsDeleted
|
||||||
|
jr z, .skip
|
||||||
|
ld hl, FS_META+FS_META_FNAME_OFFSET
|
||||||
|
call printstr
|
||||||
|
call printcrlf
|
||||||
|
.skip:
|
||||||
|
call fsNext
|
||||||
|
jr z, .loop ; Z set? fsNext was successful
|
||||||
|
xor a
|
||||||
|
jr .end
|
||||||
|
.error:
|
||||||
|
ld a, FS_ERR_NO_FS
|
||||||
|
.end:
|
||||||
|
ret
|
||||||
|
|
||||||
|
; Takes one byte block number to allocate as well we one string arg filename
|
||||||
|
; and allocates a new file in the current fs.
|
||||||
|
fnewCmd:
|
||||||
|
.db "fnew", 0b001, 0b1001, 0b001
|
||||||
|
push hl
|
||||||
|
ld a, (hl)
|
||||||
|
inc hl
|
||||||
|
call intoHL
|
||||||
|
call fsAlloc
|
||||||
|
pop hl
|
||||||
|
xor a
|
||||||
|
ret
|
||||||
|
|
||||||
|
; Deletes filename with specified name
|
||||||
|
fdelCmd:
|
||||||
|
.db "fdel", 0b1001, 0b001, 0
|
||||||
|
push hl
|
||||||
|
push de
|
||||||
|
call intoHL ; HL now holds the string we look for
|
||||||
|
call fsFindFN
|
||||||
|
jr nz, .notfound
|
||||||
|
; Found! delete
|
||||||
|
xor a
|
||||||
|
; Set filename to zero to flag it as deleted
|
||||||
|
ld (FS_META+FS_META_FNAME_OFFSET), a
|
||||||
|
call fsWriteMeta
|
||||||
|
; a already to 0, our result.
|
||||||
|
jr .end
|
||||||
|
.notfound:
|
||||||
|
ld a, FS_ERR_NOT_FOUND
|
||||||
|
.end:
|
||||||
|
pop de
|
||||||
|
pop hl
|
||||||
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
; Opens specified filename in specified file handle.
|
||||||
|
; First argument is file handle, second one is file name.
|
||||||
|
; Example: fopn 0 foo.txt
|
||||||
|
fopnCmd:
|
||||||
|
.db "fopn", 0b001, 0b1001, 0b001
|
||||||
|
push hl
|
||||||
|
push de
|
||||||
|
ld a, (hl) ; file handle index
|
||||||
|
ld de, FS_HANDLES
|
||||||
|
call addDE ; DE now stores pointer to file handle
|
||||||
|
inc hl
|
||||||
|
call intoHL ; HL now holds the string we look for
|
||||||
|
call fsFindFN
|
||||||
|
jr nz, .notfound
|
||||||
|
; Found!
|
||||||
|
; FS_PTR points to the file we want to open
|
||||||
|
ex hl, de ; HL now points to the file handle.
|
||||||
|
call fsOpen
|
||||||
|
jr .end
|
||||||
|
.notfound:
|
||||||
|
ld a, FS_ERR_NOT_FOUND
|
||||||
|
.end:
|
||||||
|
pop de
|
||||||
|
pop hl
|
||||||
|
ret
|
@ -28,6 +28,7 @@ BLOCKDEV_COUNT .equ 4
|
|||||||
.equ FS_RAMSTART BLOCKDEV_RAMEND
|
.equ FS_RAMSTART BLOCKDEV_RAMEND
|
||||||
.equ FS_HANDLE_COUNT 2
|
.equ FS_HANDLE_COUNT 2
|
||||||
#include "fs.asm"
|
#include "fs.asm"
|
||||||
|
#include "fs_cmds.asm"
|
||||||
|
|
||||||
SHELL_RAMSTART .equ FS_RAMEND
|
SHELL_RAMSTART .equ FS_RAMEND
|
||||||
.define SHELL_IO_GETC call blkGetC
|
.define SHELL_IO_GETC call blkGetC
|
||||||
|
Loading…
Reference in New Issue
Block a user