;
; Oliver Schmidt, 30.12.2004
;
; Apple ProDOS 8 MLI
;

READ_BLOCK_CALL = $80
WRITE_BLOCK_CALL= $81
RW_BLOCK_COUNT  = 3

GET_TIME_CALL   = $82
GET_TIME_COUNT  = 0

CREATE_CALL     = $C0
CREATE_COUNT    = 7

DESTROY_CALL    = $C1
DESTROY_COUNT   = 1

RENAME_CALL     = $C2
RENAME_COUNT    = 2

GET_INFO_CALL   = $C4
GET_INFO_COUNT  = $A

ON_LINE_CALL    = $C5
ON_LINE_COUNT   = 2

SET_PREFIX_CALL = $C6
GET_PREFIX_CALL = $C7
PREFIX_COUNT    = 1

OPEN_CALL       = $C8
OPEN_COUNT      = 3

READ_CALL       = $CA
WRITE_CALL      = $CB
RW_COUNT        = 4

CLOSE_CALL      = $CC
CLOSE_COUNT     = 1

SET_MARK_CALL   = $CE
GET_MARK_CALL   = $CF
MARK_COUNT      = 2

SET_EOF_CALL    = $D0
GET_EOF_CALL    = $D1
EOF_COUNT       = 2

        .struct MLI
                .union
                        .struct RW_BLOCK
                                PARAM_COUNT     .byte
                                UNIT_NUM        .byte
                                DATA_BUFFER     .addr
                                BLOCK_NUM       .word
                        .endstruct
                        .struct CREATE
                                PARAM_COUNT     .byte
                                PATHNAME        .addr
                                ACCESS          .byte
                                FILE_TYPE       .byte
                                AUX_TYPE        .word
                                STORAGE_TYPE    .byte
                                CREATE_DATE     .word
                                CREATE_TIME     .word
                        .endstruct
                        .struct DESTROY
                                PARAM_COUNT     .byte
                                PATHNAME        .addr
                        .endstruct
                        .struct RENAME
                                PARAM_COUNT     .byte
                                PATHNAME        .addr
                                NEW_PATHNAME    .addr
                        .endstruct
                        .struct INFO
                                PARAM_COUNT     .byte
                                PATHNAME        .addr
                                ACCESS          .byte
                                FILE_TYPE       .byte
                                AUX_TYPE        .word
                                STORAGE_TYPE    .byte
                                BLOCKS          .word
                                MODE_DATE       .word
                                MODE_TIME       .word
                                CREATE_DATE     .word
                                CREATE_TIME     .word
                        .endstruct
                        .struct ON_LINE
                                PARAM_COUNT     .byte
                                UNIT_NUM        .byte
                                DATA_BUFFER     .addr
                        .endstruct
                        .struct PREFIX
                                PARAM_COUNT     .byte
                                PATHNAME        .addr
                        .endstruct
                        .struct OPEN
                                PARAM_COUNT     .byte
                                PATHNAME        .addr
                                IO_BUFFER       .addr
                                REF_NUM         .byte
                        .endstruct
                        .struct RW
                                PARAM_COUNT     .byte
                                REF_NUM         .byte
                                DATA_BUFFER     .addr
                                REQUEST_COUNT   .word
                                TRANS_COUNT     .word
                        .endstruct
                        .struct CLOSE
                                PARAM_COUNT     .byte
                                REF_NUM         .byte
                        .endstruct
                        .struct MARK
                                PARAM_COUNT     .byte
                                REF_NUM         .byte
                                POSITION        .byte 3
                        .endstruct
                        .struct EOF
                                PARAM_COUNT     .byte
                                REF_NUM         .byte
                                EOF             .byte 3
                        .endstruct
                .endunion
        .endstruct

        .global         mliparam
        .global         callmli

DEVNUM  :=      $BF30           ; Most recent accessed device
DEVCNT  :=      $BF31           ; Number of on-line devices (minus 1)
DEVLST  :=      $BF32           ; Up to 14 units may be active
DATELO  :=      $BF90           ; Bits 15-9 = year, 8-5 = month, 4-0 = day
TIMELO  :=      $BF92           ; Bits 12-8 = hour, 5-0 = minute
LEVEL   :=      $BF94           ; File level: used in open, flush, close
MACHID  :=      $BF98           ; Machine identification
PFIXPTR :=      $BF9A           ; If = 0, no prefix active
KVERSION:=      $BFFF           ; Kernel version number
