.if .not .def _OS_ _OS_ = 1 .if .not .def _SYSTEM_ .include #system .endif .if .not .def _MACROS_ .include #macros .endif ;; ------------------------------------------------------------- ;; Use this macro to install a handler into the ;; device table. ;; Call it with: ;; IHATABS deviceID,table,overwriteflag[,select] ;; Afterwards CARRY SET will signal failure! ;; ------------------------------------------------------------- .macro IHATABS @3 .= @p1+@p2 .if %0=4 @3 .= %4 .endif @moad %1,[@3 & @p1] / @p1 ;; load dev ID jsr fhatabs ;; find hatabs .if %3 bne error .else bcs error .endif sta hatabs,y @dmoke_y %2,hatabs+1,[ @3 & @p1] / @p1 .if %3 .byte $A9 ; make it a lda #.. error sec .else clc error .endif .endm .macro SELECT_DRIVE @3 .= @p1 .if %0 = 2 @3 .= %2 .endif @moke %1,dunit,[@3 & @p1] .endm .macro READSECTOR @3 .= @p1 ! @p2 ! @p3 .if %0 = 4 @3 .= %4 .endif .if .not [@3 & @special] poke dcomnd,'R .endif @dmoke %1,daux1,[@3 & @p1] @dmoke %2,dbytlo,[@3 & @p2] / @p2 @dmoke %3,dbuflo,[@3 & @p3] / @p3 jsr dskinv .endm .macro WRITESECTOR @3 .= @p1 ! @p2 ! @p3 .if %0 = 4 @3 .= %4 .endif .if .not [@3 & @special] poke dcomnd,'P .endif @dmoke %1,daux1,[@3 & @p1] @dmoke %2,dbytlo,[@3 & @p2] / @p2 @dmoke %3,dbuflo,[@3 & @p3] / @p3 jsr dskinv .endm SIOREAD = 'R SIOWRITE = 'P .macro SETUP_SIO @3 .= @p1 ! @p2 ! @p3 ! @p4 .if %0 = 5 @3 .= %5 .endif @moke %1,dunit, [@3 & @p1] @moke %2,dcomnd,[@3 & @p2] / @p2 @dmoke %3,daux1, [@3 & @p3] / @p3 @dmoke %4,dbuflo,[@3 & @p4] / @p4 .endm .endif