open/read/write files in ProDOS filesystem
Go to file
2016-06-15 07:23:43 -07:00
.gitattributes 🍭 Added .gitattributes & .gitignore files 2016-05-12 16:29:01 -07:00
.gitignore 🍭 Added .gitattributes & .gitignore files 2016-05-12 16:29:01 -07:00
PRORWTS.S allow LC residency, direct aux loading, second drive, smaller code 2016-06-15 07:23:43 -07:00
readme.md initial commit 2016-05-12 16:29:29 -07:00

open/read/write any binary file in ProDOS filesystem. runs from any directory on floppy or hard disk. searches the file system for the requested file, can even look inside subdirectories. only 5 sectors long in memory (7 sectors if writing enabled).

usage:

jsr init ;one-time call to unhook ProDOS, detect drive type, and relocate code to top of memory

;open and read a file without address override or writing enabled lda #<file_to_read sta namlo lda #>file_to_read sta namhi jsr opendir ;open and read entire file into memory at its load address

;open and read a file with address override but without writing enabled lda #<file_to_read sta namlo lda #>file_to_read sta namhi lda #<place_to_read sta adrlo lda #>place_to_read sta adrhi jsr opendir ;open and read entire file into memory to the specified load address

;open and read a subdirectory without address override or writing enabled lda #<dir_to_read sta namlo lda #>dir_to_read sta namhi jsr opendir ;open and read subdirectory to top of memory for later ;issue another open request to find a file inside it lda #<file_to_read sta namlo lda #>file_to_read sta namhi jsr readdir ;read directory without opening it again

;open and read a file with writing enabled but without address override lda #<file_to_read sta namlo lda #>file_to_read sta namhi lda #1 sta reqcmd jsr opendir ;open and read entire file into memory at its load address

;open and write a file without address override lda #<file_to_write sta namlo lda #>file_to_write sta namhi lda #0 sta sizelo lda #>bytes_to_write sta sizehi lda #2 jsr opendir ;open and write bytes from memory to file load address

;open and write a file with address override lda #<file_to_write sta namlo lda #>file_to_write sta namhi lda #0 sta sizelo lda #>bytes_to_write sta sizehi lda #<place_to_write sta adrlo lda #>place_to_write sta adrhi lda #2 jsr opendir ;open and write bytes from memory to specified load address

format of request name is Pascal-style (length, text): e.g. !raw 5, "MYDIR" or !raw 6, "MYFILE" or !raw 14, "QKUMBAROXURSOX"