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
