Wiki Home >> N:-SIO-Command-$FF---Query-for-Special-Command-DSTATS
N:-SIO-Command-$FF---Query-for-Special-Command-DSTATS
N: SIO Command DSTATS QUERY ($FF)
This is a command for Devices $71-$78 - The N: Device (see SIO-Commands-for-Device-IDs-$71-to-$78).
Description
This command is specifically for the implementation of CIO and other DOS level handlers (e.g. SpartaDOS X Kernel Drivers), to carry back specifics of a given SPECIAL SIO command. This is currently the DSTATS value (indicating read and write), since it is assumed any special commands utilize a 256 byte buffer, unless the DSTATS=0. If The value returned here is $FF, then the command is invalid, and the handler should react appropriately.
Parameters
DCB | Value |
---|---|
DDEVIC | $71 |
DUNIT | $01 - $04 |
DCOMND | $FF |
DSTATS | $40 |
DBUF | 1 byte buffer for holding DSTATS value, e.g. DSTATS |
DTIMLO | $0F |
DBYT | 1 |
DAUX1 | Special SIO Command to ask about |
DAUX2 | 0 |
Examples
Assembler (AMAC)
SPEC .proc
; HANDLE LOCAL COMMANDS.
LDA ZICCOM
CMP #$0F ; 15 = FLUSH
BNE L1 ; NO.
JSR PFLUSH ; DO FLUSH
LDY #$01 ; SUCCESS
RTS
; HANDLE SIO COMMANDS.
; GET DSTATS FOR COMMAND
L1 LDA #DEVIDN ; $71
STA DDEVIC
LDA ZICDNO ; UNIT #
STA DUNIT
LDA #$FF ; DS INQ
STA DCOMND
LDA #DSREAD
STA DSTATS
LDA #<INQDS
STA DBUFL
LDA #>INQDS
STA DBUFH
LDA #$01
STA DBYTL
LDA #$00
STA DBYTH
STA DAUXH
LDA #$0F
STA DTIMLO
LDA ZICCOM
STA DAUXL
JSR SIOV ; DO IT...
LDA DSTATS
BPL DSOK
DSERR TAY ; RET THE ERR
RTS
; WE GOT A DSTATS INQUIRY
; IF $FF, THE COMMAND IS
; INVALID
DSOK LDA INQDS
CMP #$FF ; INVALID?
BNE DSGO ; DO THE CMD
LDY #$92 ; UNIMP CMD
TYA
RTS
DSGO LDA #DEVIDN ; $71
STA DDEVIC
LDA ZICCOM
STA DCOMND
LDA INQDS
STA DSTATS
LDA #>TBUF
STA DBUFH
LDA #$00
STA DBUFL
STA DBYTH
LDA #$0F
STA DTIMLO
LDA ZICAX1
STA DAUXL
LDA ZICAX2
STA DAUXH
JSR SIOV
LDY DSTATS
TYA
RTS
.endp
See Also
Put other related command links here.
Wiki content is mirrored from the FujiNet Github Wiki