|
- ; *** SHELL COMMANDS ***
- fsOnCmd:
- .db "fson", 0, 0, 0
- jp fsOn
-
- ; Lists filenames in currently active FS
- flsCmd:
- .db "fls", 0, 0, 0, 0
- call fsIsOn
- jr nz, .error
- 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
- or a ; cp 0
- jr z, .noInc ; DE already point to correct handle
- ld b, a
- .loop:
- ld a, FS_HANDLE_SIZE
- call addDE
- djnz .loop
- .noInc:
- ; 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
- push de \ pop ix ; IX now points to the file handle.
- call fsOpen
- jr .end
- .notfound:
- ld a, FS_ERR_NOT_FOUND
- .end:
- pop de
- pop hl
- ret
|