mirror of
https://github.com/mi57730/a2d.git
synced 2024-11-26 02:49:18 +00:00
109 lines
3.0 KiB
PHP
109 lines
3.0 KiB
PHP
;;; ------------------------------------------------------------
|
|
;;; ProDOS MLI
|
|
;;; ------------------------------------------------------------
|
|
|
|
;;; Entry point / Global Page
|
|
MLI := $BF00 ; Entry point
|
|
DEVNUM := $BF30 ; Most recent accessed device
|
|
DEVCNT := $BF31 ; Number of on-line devices minus 1
|
|
DEVLST := $BF32 ; Up to 14 units
|
|
BITMAP := $BF58 ; System memory bitmap
|
|
BITMAP_SIZE := $18 ; Bits for pages $00 to $BF
|
|
DATELO := $BF90 ; Date lo
|
|
DATEHI := $BF91 ; Date hi
|
|
TIMELO := $BF92 ; Time lo
|
|
TIMEHI := $BF93 ; Time hi
|
|
MACHID := $BF98 ; Machine ID
|
|
|
|
;;; Patch Locations
|
|
SELECTOR := $D100
|
|
|
|
;;; ------------------------------------------------------------
|
|
;;; MLI Calls
|
|
|
|
;;; Housekeeping Calls
|
|
CREATE := $C0
|
|
DESTROY := $C1
|
|
RENAME := $C2
|
|
SET_FILE_INFO := $C3
|
|
GET_FILE_INFO := $C4
|
|
ON_LINE := $C5
|
|
SET_PREFIX := $C6
|
|
GET_PREFIX := $C7
|
|
|
|
;;; Filing Calls
|
|
OPEN := $C8
|
|
NEWLINE := $C9
|
|
READ := $CA
|
|
WRITE := $CB
|
|
CLOSE := $CC
|
|
FLUSH := $CD
|
|
SET_MARK := $CE
|
|
GET_MARK := $CF
|
|
SET_EOF := $D0
|
|
GET_EOF := $D1
|
|
SET_BUF := $D2
|
|
GET_BUF := $D3
|
|
|
|
;;; System Calls
|
|
GET_TIME := $82
|
|
ALLOC_INTERRUPT := $40
|
|
DEALLOC_INTERRUPT := $41
|
|
QUIT := $65
|
|
|
|
;;; Direct Disk Access Commands
|
|
READ_BLOCK := $80
|
|
WRITE_BLOCK := $81
|
|
|
|
;;; ------------------------------------------------------------
|
|
;;; Device Types (low nibble of unit number in DEVLST)
|
|
|
|
DT_DISKII := $0
|
|
DT_PROFILE := $4
|
|
DT_RAM := $F
|
|
|
|
;;; See ProDOS Tech Note #21 - other than the above types, there
|
|
;;; is not an "ID nibble". The nibble is a copy of $CnFE's high
|
|
;;; nibble, with this meaning:
|
|
;;; bit 3 = removable
|
|
;;; bit 2 = interruptable
|
|
;;; bit 1-0 = number of volumes (0-1)
|
|
;;; "You should ignore the low nibble in the unit number..."
|
|
|
|
;;; ------------------------------------------------------------
|
|
;;; File Types
|
|
|
|
FT_TYPELESS := $00
|
|
FT_BAD := $01
|
|
FT_TEXT := $04
|
|
FT_BINARY := $06
|
|
FT_DIRECTORY := $0F
|
|
FT_SRC := $B0 ; IIgs system type; re-used?
|
|
FT_S16 := $B3 ; IIgs Application Program
|
|
FT_BASIC := $FC
|
|
FT_SYSTEM := $FF
|
|
|
|
;;; ------------------------------------------------------------
|
|
;;; Storage Types
|
|
|
|
ST_STANDARD_FILE := $01
|
|
ST_LINKED_DIRECTORY := $0D
|
|
ST_VOLUME_DIRECTORY := $0F
|
|
|
|
;;; ------------------------------------------------------------
|
|
;;; Macros
|
|
|
|
.macro MLI_CALL op, addr
|
|
jsr MLI
|
|
.byte op
|
|
.addr addr
|
|
.endmacro
|
|
|
|
.macro PASCAL_STRING str ; Length-prefixed string
|
|
.local data ; Can include control chars by using:
|
|
.local end ; PASCAL_STRING {"abc",$0D,"def"}
|
|
.byte end - data
|
|
data: .byte str
|
|
end:
|
|
.endmacro
|