Fortunately I had it saved off, so before I (and everyone else) loses it, I thought I'd put it up here. I'll do a little ASM lib with all this later.
I'll also extend this if/when I discover more commands, as there appears to be very little info about the esxDOS API
; ; NOTE: File paths use the slash character (‘/’) as directory separator (UNIX style) ; M_GETSETDRV equ $89 F_OPEN equ $9a F_CLOSE equ $9b F_READ equ $9d F_WRITE equ $9e F_SEEK equ $9f F_GET_DIR equ $a8 F_SET_DIR equ $a9 FA_READ equ $01 FA_APPEND equ $06 FA_OVERWRITE equ $0C ; Function: Detect if unit is ready ; Out: A = default drive (required for all file access) ; Carry flag will be set if error. GetSetDrive: xor a ; A=0, get the default drive rst $08 db M_GETSETDRV ld (DefaultDrive),a ret DefaultDrive db 0 ; Function: Open file ; In: IX = filename ; B = open mode ; A = Drive ; Out: A = file handle ; On error: Carry set ; A = 5 File not found ; A = 7 Name error - not 8.3? ; A = 11 Drive not found ; fOpen: ld a, (DefaultDrive) ; get drive we're on ld b, FA_READ ; b = open mode ld ix,FileName ; ix = Pointer to file name (ASCIIZ) rst $08 db F_OPEN ; open read mode ret ; Returns a file handler in 'A' register. ; Function: Read bytes from a file ; In: A = file handle ; ix = address to load into ; bc = number of bytes to read ; Out: Carry flag is set if read fails. fRead: ld ix, 16384 ; ix = address where to store what is read ld bc, 6912 ; bc = bytes to read ld a, filehandle ; a = the file handler rst $08 db F_READ ; read file ret ; Function: Write bytes to a file ; In: A = file handle ; ix = address to save from ; bc = number of bytes to write ; Out: Carry flag is set if write fails. fWrite: ld ix, 16384 ; ix = memory address to save from ld bc, 6912 ; bc = bytes to write ld a, handle ; a = file handler rst $08 db F_WRITE ; write file ret ; Function: Write bytes to a file ; In: A = file handle ; Out: Carry flag active if error when closing fClose: ld a, handle ; a = file handler rst $08 db F_CLOSE ret ; Function: Seek into file ; In: A = file handle ; L = mode: 0 - from start of file ; 1 - forward from current position ; 2 - back from current position ; BCDE = bytes to seek ; Out: BCDE = Current file pointer. (*does not return this yet) ; fSeek: ld a,handle ; file handle or a ; is it zero? ret z ; if so return ld l,0 ld bc,0 ld de,0 rst $08 db F_SEEK ret ; Function: SetDirectory ; In: A = Drive ; HL = pointer to zero terminated path string ("path",0) ; Out: carry set if error ; SetDir: ld a,(DefaultDrive) ; drive to change directory on ld hl,Path ; point to "path",0 to set rst $08 db F_SET_DIR ret ; Function: Get Directory ; In: A = Drive ; HL = pointer to where to STORE zero terminated path string ; Out: carry set if error ; GetDir: ld a,(DefaultDrive) ; drive to get current directory from ld hl,Path ; location to store path string in rst $08 db F_GET_DIR ret