prodos-path/prodos.inc

172 lines
5.5 KiB
PHP
Raw Permalink Normal View History

2019-01-07 01:23:56 +00:00
;;; ============================================================
;;; ProDOS MLI / Global Page
2019-01-07 06:56:45 +00:00
MLI := $BF00
DEVNUM := $BF30
2021-03-07 23:29:51 +00:00
DATE := $BF90
2021-04-14 02:12:07 +00:00
DATELO := $BF90
DATEHI := $BF91
TIME := $BF92
TIMELO := $BF92
TIMEHI := $BF93
2019-01-07 06:56:45 +00:00
2021-04-14 02:12:07 +00:00
GET_TIME = $82
2021-04-13 03:43:49 +00:00
CREATE = $C0
2021-03-07 23:29:51 +00:00
SET_FILE_INFO = $C3
2019-01-07 01:23:56 +00:00
GET_FILE_INFO = $C4
2020-06-07 02:03:15 +00:00
ON_LINE = $C5
2021-04-17 16:58:22 +00:00
SET_PREFIX = $C6
GET_PREFIX = $C7
2019-01-07 06:56:45 +00:00
OPEN = $C8
READ = $CA
2021-04-13 03:43:49 +00:00
WRITE = $CB
2019-01-07 06:56:45 +00:00
CLOSE = $CC
2019-01-07 01:23:56 +00:00
2019-01-08 15:48:13 +00:00
.macro MLI_CALL cmd, params
jsr MLI
.byte cmd
.addr params
.endmacro
2021-04-16 02:47:41 +00:00
FT_TXT = $04
FT_DIR = $0F
FT_CMD = $F0
FT_BAS = $FC
ACCESS_D = %10000000 ; Access: Destroy-Enable
ACCESS_RN = %01000000 ; Access: Rename-Enable
ACCESS_B = %00100000 ; Access: Backup
ACCESS_I = %00000100 ; Access: Invisible
ACCESS_W = %00000010 ; Access: Write-Enable
ACCESS_R = %00000001 ; Access: Read-Enable
2019-01-07 01:23:56 +00:00
;;; ============================================================
;;; BASIC.SYSTEM Global Page
EXTRNCMD := $BE06 ; External command jmp vector
ERROUT := $BE09 ; Error routine jmp vector
DEFSLT := $BE3C ; Default slot, set by 'S' parm
DEFDRV := $BE3D ; Default drive, set by 'D' parm
XTRNADDR := $BE50 ; Ext cmd implementation addr
2019-01-07 01:23:56 +00:00
XLEN := $BE52 ; Length of command string minus 1
XCNUM := $BE53 ; Command number (ext cmd = 0).
PBITS := $BE54 ; Command parameter bits
FBITS := $BE56 ; Found parameter bits
.enum PBitsFlags
;; PBITS
PFIX = $80 ; Prefix needs fetching
SLOT = $40 ; No parameters to be processed
RRUN = $20 ; Command only valid during program
FNOPT = $10 ; Filename is optional
CRFLG = $08 ; CREATE allowed
T = $04 ; File type
FN2 = $02 ; Filename '2' for RENAME
FN1 = $01 ; Filename expected
;; PBITS+1
AD = $80 ; Address
B = $40 ; Byte
E = $20 ; End address
L = $10 ; Length
LINE = $08 ; '@' line number
SD = $04 ; Slot and drive numbers
F = $02 ; Field
R = $01 ; Record
;; Setting SD in PBITS+1 enables desired automatic behavior: if
;; a relative path is given, an appropriate prefix is computed,
;; using S# and D# options if supplied. Without this, absolute
;; paths must be used if no prefix is set.
.endenum
2021-03-07 23:29:51 +00:00
VADDR := $BE58 ; Address parameter
VBYTE := $BE5A ; Byte parameter
VSLOT := $BE61 ; Slot parameter
VTYPE := $BE6A ; Type parameter
2021-04-13 03:43:49 +00:00
VPATH1 := $BE6C ; Pathname 1 buffer
VPATH2 := $BE6E ; Pathname 2 buffer (RENAME)
2019-01-07 01:23:56 +00:00
GOSYSTEM := $BE70 ; Use instead of MLI
2021-04-15 05:27:39 +00:00
BADCALL := $BE8B ; convert MLI errors into BI equivalents
2021-04-13 03:43:49 +00:00
2019-01-07 06:56:45 +00:00
XRETURN := $BE9E ; Handy RTS
2021-04-13 03:43:49 +00:00
SCREATE := $BEA0 ; CREATE Parameter block
CRACESS := $BEA3 ; $C1 if directory create
CRFILID := $BEA4
CRAUXID := $BEA5
CRFKIND := $BEA7
SSGPREFX := $BEAC
SDSTROY := $BEAC
SRECNAME := $BEAF
SSGINFO := $BEB4 ; GET_FILE_INFO Parameter block
2021-04-13 03:43:49 +00:00
FIACESS := $BEB7 ; Access used by lock/unlock
FIFILID := $BEB8 ; FILE ID is type specifier
FIAUXID := $BEB9 ; Aux_id is used for load addr and record length
FIFKIND := $BEBB ; Identifies trees vs. directories
FIBLOKS := $BEBC ; Used by CAT commands for root
2021-03-07 23:29:51 +00:00
FIMDATE := $BEBE
2019-01-07 01:23:56 +00:00
2021-04-13 03:43:49 +00:00
SONLINE := $BEC6
SSETMKR := $BEC6
SGETMRK := $BEC6
SSETEOF := $BEC6
SGETEOF := $BEC6
SSETBUF := $BEC6
SGETBUF := $BEC6
SBUFREF := $BEC7
SREFNUM := $BEC7
SUNITNUM := $BEC7
SDATPTR := $BEC8
SMARK := $BEC8
SEOF := $BEC8
SBUFADR := $BEC8
SOPEN := $BECB ; OPEN
OSYSBUF := $BECE
OREFNUM := $BED0
SREAD := $BED5 ; READ
2021-04-13 03:43:49 +00:00
SWRITE := $BED5 ; WRITE
RWREFNUM := $BED6
RWDATA := $BED7
RWCOUNT := $BED9
2021-04-13 03:43:49 +00:00
RWTRANS := $BEDB
SCLOSE := $BEDD ; CLOSE
2021-04-13 03:43:49 +00:00
SFLUSH := $BEDD ; FLUSH
CFREFNUM := $BEDE
2021-04-13 03:43:49 +00:00
CCCSPARE := $BEDF
2019-01-07 01:23:56 +00:00
GETBUFR := $BEF5
2019-01-08 07:06:57 +00:00
FREEBUFR := $BEF8
RSHIMEM := $BEFB
2021-04-16 02:47:41 +00:00
;;; Error Codes
2021-04-17 16:58:22 +00:00
BI_ERR_RANGE_ERROR = 2
BI_ERR_NO_DEVICE_CONNECTED = 3
BI_ERR_WRITE_PROTECTED = 4
2021-04-16 02:47:41 +00:00
BI_ERR_END_OF_DATA = 5
BI_ERR_PATH_NOT_FOUND = 6
BI_ERR_VOLUME_DIR_NOT_FOUND = 7 ; Also shows as PATH NOT FOUND
2021-04-17 16:58:22 +00:00
BI_ERR_IO_ERROR = 8
BI_ERR_DISK_FULL = 9
BI_ERR_FILE_LOCKED = 10
BI_ERR_INVALID_PARAMETER = 11
2021-04-16 02:47:41 +00:00
BI_ERR_NO_BUFFERS_AVAILABLE = 12
BI_ERR_FILE_TYPE_MISMATCH = 13
2021-04-17 16:58:22 +00:00
BI_ERR_PROGRAM_TOO_LARGE = 14
BI_ERR_NOT_DIRECT_COMMAND = 15
BI_ERR_SYNTAX_ERROR = 16
BI_ERR_DIRECTORY_FULL = 17
BI_ERR_FILE_NOT_OPEN = 18
2021-04-16 02:47:41 +00:00
BI_ERR_DUPLICATE_FILE_NAME = 19
2021-04-17 16:58:22 +00:00
BI_ERR_FILE_BUSY = 20
BI_ERR_FILES_STILL_OPEN = 21
BI_ERR_DIRECT_COMMAND = 22