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_F9 "REM F9"
|
||||
;; #CONFIG# KEYCMD_F9 "@20$"
|
||||
;; #CONFIG# KEYCMD_F10 "\5FL"
|
||||
;; #CONFIG# KEYCMD_F11 "COLORSET 128"
|
||||
;; #CONFIG# KEYCMD_F12 "\5FHF"
|
||||
|
||||
@@ -21,14 +21,23 @@
|
||||
|
||||
; General DOS status
|
||||
|
||||
!addr IDX_LISTENER = $8008 ; listener idx * 2, >=$80 = none - for calling routines via vector table
|
||||
!addr IDX_TALKER = $8009 ; talker idx * 2, >=$80 = none - for calling routines via vector table
|
||||
!addr IDX1_LISTENER = $8008 ; listener idx, >=$80 = none
|
||||
!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_IDX = $809F ; index byte for reading status
|
||||
!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_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
|
||||
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:
|
||||
@@ -20,3 +96,14 @@ dos_CIOUT:
|
||||
|
||||
sec
|
||||
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
|
||||
|
||||
lda #$FF
|
||||
sta IDX_LISTENER
|
||||
sta IDX_TALKER
|
||||
sta IDX1_LISTENER
|
||||
sta IDX2_LISTENER
|
||||
sta IDX1_TALKER
|
||||
sta IDX2_TALKER
|
||||
|
||||
; Initialize device handlers
|
||||
|
||||
|
||||
@@ -22,19 +22,22 @@ dos_LISTEN:
|
||||
cmp UNIT_FLOPPY
|
||||
bne @2
|
||||
|
||||
lda #$02
|
||||
lda #$01
|
||||
bra dos_LISTEN_success
|
||||
@2:
|
||||
cmp UNIT_RAMDISK
|
||||
bne dos_fail_TALK_LISTEN
|
||||
|
||||
lda #$04
|
||||
lda #$02
|
||||
|
||||
; FALLTROUGH
|
||||
|
||||
dos_LISTEN_success:
|
||||
|
||||
sta IDX_LISTENER
|
||||
sta IDX1_LISTENER
|
||||
asl
|
||||
sta IDX2_LISTENER
|
||||
|
||||
bra dos_common_LSN_TALK_UN
|
||||
|
||||
; TALK
|
||||
@@ -54,19 +57,22 @@ dos_TALK:
|
||||
cmp UNIT_FLOPPY
|
||||
bne @2
|
||||
|
||||
lda #$02
|
||||
lda #$01
|
||||
bra dos_TALK_success
|
||||
@2:
|
||||
cmp UNIT_RAMDISK
|
||||
bne dos_fail_TALK_LISTEN
|
||||
|
||||
lda #$04
|
||||
lda #$02
|
||||
|
||||
; FALLTROUGH
|
||||
|
||||
dos_TALK_success:
|
||||
|
||||
sta IDX_TALKER
|
||||
sta IDX1_TALKER
|
||||
asl
|
||||
sta IDX2_TALKER
|
||||
|
||||
bra dos_common_LSN_TALK_UN
|
||||
|
||||
dos_fail_TALK_LISTEN:
|
||||
@@ -82,14 +88,16 @@ dos_UNLSN:
|
||||
|
||||
pha
|
||||
lda #$FF
|
||||
sta IDX_LISTENER
|
||||
sta IDX1_LISTENER
|
||||
sta IDX2_LISTENER
|
||||
bra dos_common_LSN_TALK_UN
|
||||
|
||||
dos_UNTLK:
|
||||
|
||||
pha
|
||||
lda #$FF
|
||||
sta IDX_TALKER
|
||||
sta IDX1_TALKER
|
||||
sta IDX2_TALKER
|
||||
|
||||
; FALLTROUGH
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ dos_SECOND:
|
||||
|
||||
dos_TKSA:
|
||||
|
||||
phx
|
||||
pha
|
||||
and #$60
|
||||
bne dos_TKSA_OPEN
|
||||
@@ -22,6 +23,7 @@ dos_TKSA:
|
||||
|
||||
; XXX provide implementation
|
||||
|
||||
plx
|
||||
sec
|
||||
rts
|
||||
|
||||
@@ -30,11 +32,16 @@ dos_TKSA_OPEN:
|
||||
|
||||
pla
|
||||
and #$1F
|
||||
|
||||
ldx IDX1_TALKER ; store channel
|
||||
sta XX_CHANNEL, X
|
||||
|
||||
cmp #$0F
|
||||
beq dos_TKSA_OPEN_cmd
|
||||
|
||||
; XXX provide implementation
|
||||
|
||||
plx
|
||||
sec
|
||||
rts
|
||||
|
||||
@@ -43,5 +50,6 @@ dos_TKSA_OPEN_cmd:
|
||||
|
||||
; XXX provide implementation
|
||||
|
||||
sec
|
||||
plx
|
||||
clc
|
||||
rts
|
||||
@@ -1224,7 +1224,7 @@ void DataSet::generateConfigDepStrings()
|
||||
|
||||
// CBDOS features
|
||||
|
||||
featureStrM65 += "CBDOS : CARD ";
|
||||
featureStrM65 += "CBDOS : SDCARD ";
|
||||
|
||||
// Keyboard support features
|
||||
|
||||
|
||||
Reference in new issue
Block a user