Преглед на файлове

Extract fs_cmds.asm from fs.asm

pull/10/head
Virgil Dupras преди 5 години
родител
ревизия
df67a38f81
променени са 3 файла, в които са добавени 88 реда и са изтрити 86 реда
  1. +0
    -86
      parts/z80/fs.asm
  2. +87
    -0
      parts/z80/fs_cmds.asm
  3. +1
    -0
      tools/emul/shell_.asm

+ 0
- 86
parts/z80/fs.asm Целия файл

@@ -468,12 +468,9 @@ fsTell:
ld h, (ix+1)
ret

; *** SHELL COMMANDS ***
; 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.
; Upon mounting, copy currently selected device in FS_GETC/PUTC/SEEK/TELL.
fsOnCmd:
.db "fson", 0, 0, 0
fsOn:
push hl
push de
@@ -508,86 +505,3 @@ fsOn:
pop de
pop hl
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
- 0
parts/z80/fs_cmds.asm Целия файл

@@ -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

+ 1
- 0
tools/emul/shell_.asm Целия файл

@@ -28,6 +28,7 @@ BLOCKDEV_COUNT .equ 4
.equ FS_RAMSTART BLOCKDEV_RAMEND
.equ FS_HANDLE_COUNT 2
#include "fs.asm"
#include "fs_cmds.asm"

SHELL_RAMSTART .equ FS_RAMEND
.define SHELL_IO_GETC call blkGetC


Loading…
Отказ
Запис