cleanup in multiprotocol IEC support
This commit is contained in:
1 parent
274a3c070a
commit
379eb746fe
10 files changed
+33
-18
No files matched your search
@@ -103,11 +103,7 @@
|
|||||||
.label PTR1 = $9E // for tape support, counter of errorneous bytes
|
.label PTR1 = $9E // for tape support, counter of errorneous bytes
|
||||||
.label PTR2 = $9F // for tape support, counter for errorneous bytes correction
|
.label PTR2 = $9F // for tape support, counter for errorneous bytes correction
|
||||||
.label TIME = $A0 // $A0-$A2 jiffy clock
|
.label TIME = $A0 // $A0-$A2 jiffy clock
|
||||||
#if !CONFIG_IEC_JIFFYDOS && !CONFIG_IEC_DOLPHINDOS && !CONFIG_IEC_BURST_CIA1 && !CONFIG_IEC_BURST_CIA2 && !CONFIG_IEC_BURST_MEGA_65
|
.label IECPROTO = $A3 // [!] IEC or pseudo-IEC protocol, >= $80 for unknown; originally named TSFCNT
|
||||||
.label TSFCNT = $A3 // temporary variable for tape and IEC, [!] our usage differs
|
|
||||||
#else
|
|
||||||
.label IECPROTO = $A3 // -- WIP -- [!] 0 = normal, 1 = JiffyDOS, >= $80 for unknown
|
|
||||||
#endif
|
|
||||||
.label TBTCNT = $A4 // temporary variable for tape and IEC, [!] our usage probably differs in details
|
.label TBTCNT = $A4 // temporary variable for tape and IEC, [!] our usage probably differs in details
|
||||||
.label CNTDN = $A5 // -- NOT IMPLEMENTED --
|
.label CNTDN = $A5 // -- NOT IMPLEMENTED --
|
||||||
.label BUFPNT = $A6 // -- NOT IMPLEMENTED --
|
.label BUFPNT = $A6 // -- NOT IMPLEMENTED --
|
||||||
@@ -290,6 +286,25 @@
|
|||||||
// $3FC $3FC-$3FF -- UNUSED -- free for user software
|
// $3FC $3FC-$3FF -- UNUSED -- free for user software
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Definitions for extended IEC functionality
|
||||||
|
//
|
||||||
|
|
||||||
|
.const IEC_NORMAL = 0 // has to be 0, always!
|
||||||
|
#if CONFIG_IEC_JIFFYDOS
|
||||||
|
.const IEC_JIFFY = 1 // has to be 1, always!
|
||||||
|
#endif
|
||||||
|
#if CONFIG_IEC_DOLPHINDOS
|
||||||
|
.const IEC_DOLPHIN = 2
|
||||||
|
#endif
|
||||||
|
#if CONFIG_IEC_BURST_CIA1 || CONFIG_IEC_BURST_CIA2 || ROM_LAYOUT_M65
|
||||||
|
.const IEC_BURST = 3
|
||||||
|
#endif
|
||||||
|
#if ROM_LAYOUT_M65
|
||||||
|
.const IEC_ROMDOS = 4
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Definitions for tape functionality
|
// Definitions for tape functionality
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
iec_rx_dispatch:
|
iec_rx_dispatch:
|
||||||
|
|
||||||
lda IECPROTO
|
lda IECPROTO
|
||||||
cmp #$01
|
cmp #IEC_JIFFY
|
||||||
beq_16 jiffydos_rx_byte
|
beq_16 jiffydos_rx_byte
|
||||||
|
|
||||||
// FALLTROUGH
|
// FALLTROUGH
|
||||||
@@ -54,7 +54,7 @@ iec_rx_byte:
|
|||||||
|
|
||||||
// Check if DolphinDOS was detected
|
// Check if DolphinDOS was detected
|
||||||
lda IECPROTO
|
lda IECPROTO
|
||||||
cmp #$02
|
cmp #IEC_DOLPHIN
|
||||||
bne iec_rx_no_dolphindos
|
bne iec_rx_no_dolphindos
|
||||||
|
|
||||||
// For DolphinDOS just fetch the byte from parallel port
|
// For DolphinDOS just fetch the byte from parallel port
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ iec_tx_dispatch:
|
|||||||
|
|
||||||
php // preserve C flag for EOI indication
|
php // preserve C flag for EOI indication
|
||||||
lda IECPROTO
|
lda IECPROTO
|
||||||
cmp #$01
|
cmp #IEC_JIFFY
|
||||||
bne !+
|
bne !+
|
||||||
|
|
||||||
plp
|
plp
|
||||||
@@ -71,7 +71,7 @@ iec_tx_common:
|
|||||||
|
|
||||||
// Check if DolphinDOS was detected
|
// Check if DolphinDOS was detected
|
||||||
lda IECPROTO
|
lda IECPROTO
|
||||||
cmp #$02
|
cmp #IEC_DOLPHIN
|
||||||
bne iec_tx_no_dolphindos
|
bne iec_tx_no_dolphindos
|
||||||
|
|
||||||
// For DolphinDOS just push the byte to parallel port (set it to output first)
|
// For DolphinDOS just push the byte to parallel port (set it to output first)
|
||||||
|
|||||||
@@ -107,12 +107,12 @@ load_iec:
|
|||||||
lda IECPROTO
|
lda IECPROTO
|
||||||
|
|
||||||
#if CONFIG_IEC_JIFFYDOS
|
#if CONFIG_IEC_JIFFYDOS
|
||||||
cmp #$01
|
cmp #IEC_JIFFY
|
||||||
beq_16 jiffydos_load // branch if JiffyDOS
|
beq_16 jiffydos_load // branch if JiffyDOS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CONFIG_IEC_DOLPHINDOS
|
#if CONFIG_IEC_DOLPHINDOS
|
||||||
cmp #$02
|
cmp #IEC_DOLPHIN
|
||||||
beq_16 dolphindos_load // branch if DolphinDOS
|
beq_16 dolphindos_load // branch if DolphinDOS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ dolphindos_detect_success:
|
|||||||
|
|
||||||
// Protocol detected
|
// Protocol detected
|
||||||
|
|
||||||
lda #$02
|
lda #IEC_DOLPHIN
|
||||||
sta IECPROTO
|
sta IECPROTO
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ dolphindos_load_loop:
|
|||||||
jsr iec_update_EAL_by_Y
|
jsr iec_update_EAL_by_Y
|
||||||
|
|
||||||
// Restore proper IECPROTO value
|
// Restore proper IECPROTO value
|
||||||
lda #$02
|
lda #IEC_DOLPHIN
|
||||||
sta IECPROTO
|
sta IECPROTO
|
||||||
|
|
||||||
// End of load loop
|
// End of load loop
|
||||||
|
|||||||
@@ -33,12 +33,12 @@ jiffydos_detect_loop:
|
|||||||
lda IECPROTO
|
lda IECPROTO
|
||||||
bpl jiffydos_detect_end // no detection requested, preserve existing protocol
|
bpl jiffydos_detect_end // no detection requested, preserve existing protocol
|
||||||
|
|
||||||
lda #$00 // normal protocol
|
lda #IEC_NORMAL // normal protocol
|
||||||
beq jiffydos_store_proto // branch always
|
beq jiffydos_store_proto // branch always
|
||||||
|
|
||||||
jiffydos_detected:
|
jiffydos_detected:
|
||||||
jsr iec_wait_for_data_release // guessed from VICE logs
|
jsr iec_wait_for_data_release // guessed from VICE logs
|
||||||
lda #$01 // JiffyDOS protocol
|
lda #IEC_JIFFY // JiffyDOS protocol
|
||||||
|
|
||||||
// FALLTROUGH
|
// FALLTROUGH
|
||||||
|
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ jiffydos_load_end:
|
|||||||
sta C3PO
|
sta C3PO
|
||||||
|
|
||||||
// Restore proper IECPROTO value
|
// Restore proper IECPROTO value
|
||||||
lda #$01
|
lda #IEC_JIFFY
|
||||||
sta IECPROTO
|
sta IECPROTO
|
||||||
|
|
||||||
#if CONFIG_IEC_JIFFYDOS_BLANK
|
#if CONFIG_IEC_JIFFYDOS_BLANK
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ jiffydos_rx_byte_end:
|
|||||||
sta C3PO
|
sta C3PO
|
||||||
|
|
||||||
// Restore proper IECPROTO value
|
// Restore proper IECPROTO value
|
||||||
lda #$01
|
lda #IEC_JIFFY
|
||||||
sta IECPROTO
|
sta IECPROTO
|
||||||
|
|
||||||
// Re-enable sprites
|
// Re-enable sprites
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ jiffydos_tx_byte_finalize:
|
|||||||
sta CIA2_PRA
|
sta CIA2_PRA
|
||||||
|
|
||||||
// Restore proper IECPROTO value
|
// Restore proper IECPROTO value
|
||||||
lda #$01
|
lda #IEC_JIFFY
|
||||||
sta IECPROTO
|
sta IECPROTO
|
||||||
|
|
||||||
// Re-enable sprites and interrupts
|
// Re-enable sprites and interrupts
|
||||||
|
|||||||
Reference in new issue
Block a user