CBDOS can now return status
This commit is contained in:
1 parent
49b9a13d14
commit
d1b19c8739
7 files changed
+135
-21
No files matched your search
@@ -66,7 +66,7 @@
|
|||||||
|
|
||||||
;; #CONFIG# KEYCMD_HELP "LIST"
|
;; #CONFIG# KEYCMD_HELP "LIST"
|
||||||
|
|
||||||
;; #CONFIG# KEYCMD_F9 "REM F9"
|
;; #CONFIG# KEYCMD_F9 "@20$"
|
||||||
;; #CONFIG# KEYCMD_F10 "\5FL"
|
;; #CONFIG# KEYCMD_F10 "\5FL"
|
||||||
;; #CONFIG# KEYCMD_F11 "COLORSET 128"
|
;; #CONFIG# KEYCMD_F11 "COLORSET 128"
|
||||||
;; #CONFIG# KEYCMD_F12 "\5FHF"
|
;; #CONFIG# KEYCMD_F12 "\5FHF"
|
||||||
|
|||||||
@@ -21,14 +21,23 @@
|
|||||||
|
|
||||||
; General DOS status
|
; General DOS status
|
||||||
|
|
||||||
!addr IDX_LISTENER = $8008 ; listener idx * 2, >=$80 = none - for calling routines via vector table
|
!addr IDX1_LISTENER = $8008 ; listener idx, >=$80 = none
|
||||||
!addr IDX_TALKER = $8009 ; talker idx * 2, >=$80 = none - for calling routines via vector table
|
!addr IDX2_LISTENER = $8009 ; listener idx * 2, >=$80 = none - for calling routines via vector table
|
||||||
|
!addr IDX1_TALKER = $800A ; talker idx, >=$80 = none
|
||||||
|
!addr IDX2_TALKER = $800B ; talker idx * 2, >=$80 = none - for calling routines via vector table
|
||||||
|
|
||||||
; Free space: $800A-$806F
|
; Free space: $800C-$8069
|
||||||
|
|
||||||
|
!addr XX_CHANNEL = $806A ; current channel
|
||||||
|
!addr SD_CHANNEL = $806A ; - SD card
|
||||||
|
!addr FD_CHANNEL = $806B ; - floppy
|
||||||
|
!addr RD_CHANNEL = $806C ; - ram disk
|
||||||
|
|
||||||
|
!addr XX_STATUS_IDX = $806D ; index byte for reading status
|
||||||
|
!addr SD_STATUS_IDX = $806D ; - SD card
|
||||||
|
!addr FD_STATUS_IDX = $806E ; - floppy
|
||||||
|
!addr RD_STATUS_IDX = $806F ; - ram disk
|
||||||
|
|
||||||
!addr SD_STATUS_STR = $8070 ; status string for SD card, terminated by 0
|
!addr SD_STATUS_STR = $8070 ; status string for SD card, terminated by 0
|
||||||
!addr SD_STATUS_IDX = $809F ; index byte for reading status
|
|
||||||
!addr FD_STATUS_STR = $80A0 ; status string for floppy drive, terminated by 0
|
!addr FD_STATUS_STR = $80A0 ; status string for floppy drive, terminated by 0
|
||||||
!addr FD_STATUS_IDX = $80CF ; index byte for reading status
|
|
||||||
!addr RD_STATUS_STR = $80D0 ; status string for ram disk, terminated by 0
|
!addr RD_STATUS_STR = $80D0 ; status string for ram disk, terminated by 0
|
||||||
!addr RD_STATUS_IDX = $80FF ; index byte for reading status
|
|
||||||
@@ -5,13 +5,89 @@
|
|||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
dos_ACPTR:
|
dos_ACPTR: ; does not have to preserve .X
|
||||||
|
|
||||||
; XXX provide implementation
|
ldx IDX1_TALKER
|
||||||
|
bmi dos_ACPTR_fail
|
||||||
|
|
||||||
|
lda XX_CHANNEL, X
|
||||||
|
cmp #$0F
|
||||||
|
beq dos_ACPTR_status
|
||||||
|
|
||||||
|
; XXX providde implementation for non-status streams
|
||||||
|
|
||||||
|
jmp dos_ACPTR_fail
|
||||||
|
|
||||||
|
dos_ACPTR_status:
|
||||||
|
|
||||||
|
ldx IDX2_TALKER
|
||||||
|
jsr (dos_ACPTR_getsts_table, X)
|
||||||
|
sta TBTCNT ; byte return
|
||||||
|
beq dos_ACPTR_reset_status
|
||||||
|
|
||||||
|
; XXX
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
dos_ACPTR_fail:
|
||||||
|
|
||||||
|
; XXX set error code
|
||||||
|
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
dos_ACPTR_reset_status:
|
||||||
|
|
||||||
|
; XXX replace status with OK instead
|
||||||
|
|
||||||
|
ldx IDX1_TALKER
|
||||||
|
lda #$00
|
||||||
|
sta XX_STATUS_IDX,x
|
||||||
|
|
||||||
|
; FALLTROUGH
|
||||||
|
|
||||||
|
dos_ACPTR_eoi:
|
||||||
|
|
||||||
|
jsr kernalstatus_EOI
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
dos_ACPTR_getsts_SD: ; get next byte of status - SD card
|
||||||
|
|
||||||
|
ldx SD_STATUS_IDX
|
||||||
|
inc SD_STATUS_IDX
|
||||||
|
lda SD_STATUS_STR,x
|
||||||
|
rts
|
||||||
|
|
||||||
|
dos_ACPTR_getsts_FD: ; get next byte of status - floppy
|
||||||
|
|
||||||
|
ldx FD_STATUS_IDX
|
||||||
|
inc FD_STATUS_IDX
|
||||||
|
lda FD_STATUS_STR,x
|
||||||
|
rts
|
||||||
|
|
||||||
|
dos_ACPTR_getsts_RD: ; get next byte of status - ram disk
|
||||||
|
|
||||||
|
ldx RD_STATUS_IDX
|
||||||
|
inc RD_STATUS_IDX
|
||||||
|
lda RD_STATUS_STR,x
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
dos_ACPTR_getsts_table:
|
||||||
|
|
||||||
|
!word dos_ACPTR_getsts_SD
|
||||||
|
!word dos_ACPTR_getsts_FD
|
||||||
|
!word dos_ACPTR_getsts_RD
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
dos_CIOUT:
|
dos_CIOUT:
|
||||||
@@ -20,3 +96,14 @@ dos_CIOUT:
|
|||||||
|
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
kernalstatus_EOI:
|
||||||
|
|
||||||
|
; XXX reuse original code instead
|
||||||
|
|
||||||
|
lda IOSTATUS
|
||||||
|
ora #K_STS_EOI
|
||||||
|
sta IOSTATUS
|
||||||
|
rts
|
||||||
@@ -34,8 +34,10 @@ dos_INIT:
|
|||||||
; Clear listener / talker
|
; Clear listener / talker
|
||||||
|
|
||||||
lda #$FF
|
lda #$FF
|
||||||
sta IDX_LISTENER
|
sta IDX1_LISTENER
|
||||||
sta IDX_TALKER
|
sta IDX2_LISTENER
|
||||||
|
sta IDX1_TALKER
|
||||||
|
sta IDX2_TALKER
|
||||||
|
|
||||||
; Initialize device handlers
|
; Initialize device handlers
|
||||||
|
|
||||||
|
|||||||
@@ -22,19 +22,22 @@ dos_LISTEN:
|
|||||||
cmp UNIT_FLOPPY
|
cmp UNIT_FLOPPY
|
||||||
bne @2
|
bne @2
|
||||||
|
|
||||||
lda #$02
|
lda #$01
|
||||||
bra dos_LISTEN_success
|
bra dos_LISTEN_success
|
||||||
@2:
|
@2:
|
||||||
cmp UNIT_RAMDISK
|
cmp UNIT_RAMDISK
|
||||||
bne dos_fail_TALK_LISTEN
|
bne dos_fail_TALK_LISTEN
|
||||||
|
|
||||||
lda #$04
|
lda #$02
|
||||||
|
|
||||||
; FALLTROUGH
|
; FALLTROUGH
|
||||||
|
|
||||||
dos_LISTEN_success:
|
dos_LISTEN_success:
|
||||||
|
|
||||||
sta IDX_LISTENER
|
sta IDX1_LISTENER
|
||||||
|
asl
|
||||||
|
sta IDX2_LISTENER
|
||||||
|
|
||||||
bra dos_common_LSN_TALK_UN
|
bra dos_common_LSN_TALK_UN
|
||||||
|
|
||||||
; TALK
|
; TALK
|
||||||
@@ -54,19 +57,22 @@ dos_TALK:
|
|||||||
cmp UNIT_FLOPPY
|
cmp UNIT_FLOPPY
|
||||||
bne @2
|
bne @2
|
||||||
|
|
||||||
lda #$02
|
lda #$01
|
||||||
bra dos_TALK_success
|
bra dos_TALK_success
|
||||||
@2:
|
@2:
|
||||||
cmp UNIT_RAMDISK
|
cmp UNIT_RAMDISK
|
||||||
bne dos_fail_TALK_LISTEN
|
bne dos_fail_TALK_LISTEN
|
||||||
|
|
||||||
lda #$04
|
lda #$02
|
||||||
|
|
||||||
; FALLTROUGH
|
; FALLTROUGH
|
||||||
|
|
||||||
dos_TALK_success:
|
dos_TALK_success:
|
||||||
|
|
||||||
sta IDX_TALKER
|
sta IDX1_TALKER
|
||||||
|
asl
|
||||||
|
sta IDX2_TALKER
|
||||||
|
|
||||||
bra dos_common_LSN_TALK_UN
|
bra dos_common_LSN_TALK_UN
|
||||||
|
|
||||||
dos_fail_TALK_LISTEN:
|
dos_fail_TALK_LISTEN:
|
||||||
@@ -82,14 +88,16 @@ dos_UNLSN:
|
|||||||
|
|
||||||
pha
|
pha
|
||||||
lda #$FF
|
lda #$FF
|
||||||
sta IDX_LISTENER
|
sta IDX1_LISTENER
|
||||||
|
sta IDX2_LISTENER
|
||||||
bra dos_common_LSN_TALK_UN
|
bra dos_common_LSN_TALK_UN
|
||||||
|
|
||||||
dos_UNTLK:
|
dos_UNTLK:
|
||||||
|
|
||||||
pha
|
pha
|
||||||
lda #$FF
|
lda #$FF
|
||||||
sta IDX_TALKER
|
sta IDX1_TALKER
|
||||||
|
sta IDX2_TALKER
|
||||||
|
|
||||||
; FALLTROUGH
|
; FALLTROUGH
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ dos_SECOND:
|
|||||||
|
|
||||||
dos_TKSA:
|
dos_TKSA:
|
||||||
|
|
||||||
|
phx
|
||||||
pha
|
pha
|
||||||
and #$60
|
and #$60
|
||||||
bne dos_TKSA_OPEN
|
bne dos_TKSA_OPEN
|
||||||
@@ -22,6 +23,7 @@ dos_TKSA:
|
|||||||
|
|
||||||
; XXX provide implementation
|
; XXX provide implementation
|
||||||
|
|
||||||
|
plx
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@@ -30,11 +32,16 @@ dos_TKSA_OPEN:
|
|||||||
|
|
||||||
pla
|
pla
|
||||||
and #$1F
|
and #$1F
|
||||||
|
|
||||||
|
ldx IDX1_TALKER ; store channel
|
||||||
|
sta XX_CHANNEL, X
|
||||||
|
|
||||||
cmp #$0F
|
cmp #$0F
|
||||||
beq dos_TKSA_OPEN_cmd
|
beq dos_TKSA_OPEN_cmd
|
||||||
|
|
||||||
; XXX provide implementation
|
; XXX provide implementation
|
||||||
|
|
||||||
|
plx
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@@ -43,5 +50,6 @@ dos_TKSA_OPEN_cmd:
|
|||||||
|
|
||||||
; XXX provide implementation
|
; XXX provide implementation
|
||||||
|
|
||||||
sec
|
plx
|
||||||
|
clc
|
||||||
rts
|
rts
|
||||||
@@ -1224,7 +1224,7 @@ void DataSet::generateConfigDepStrings()
|
|||||||
|
|
||||||
// CBDOS features
|
// CBDOS features
|
||||||
|
|
||||||
featureStrM65 += "CBDOS : CARD ";
|
featureStrM65 += "CBDOS : SDCARD ";
|
||||||
|
|
||||||
// Keyboard support features
|
// Keyboard support features
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user