diff --git a/c64/,,config_custom.s b/c64/,,config_custom.s index 226ad47a..3ab327ae 100644 --- a/c64/,,config_custom.s +++ b/c64/,,config_custom.s @@ -46,7 +46,7 @@ #define CONFIG_IEC #define CONFIG_IEC_BLANK_SCREEN -// #define CONFIG_IEC_DOLPHINDOS // please keep disabled for now +#define CONFIG_IEC_DOLPHINDOS // not finished yet #define CONFIG_IEC_JIFFYDOS #define CONFIG_TAPE_NORMAL diff --git a/c64/aliases/,aliases_config.s b/c64/aliases/,aliases_config.s index 04313aef..e9b6744e 100644 --- a/c64/aliases/,aliases_config.s +++ b/c64/aliases/,aliases_config.s @@ -315,7 +315,7 @@ #if CONFIG_IEC .var iec_features_str = "IEC" #if CONFIG_IEC_DOLPHINDOS - .eval iec_features_str = iec_features_str + " DOLPHIN-DEV" + .eval iec_features_str = iec_features_str + " DOLPHIN" #endif #if CONFIG_IEC_JIFFYDOS .eval iec_features_str = iec_features_str + " JIFFY" diff --git a/c64/kernal/iec/acptr.s b/c64/kernal/iec/acptr.s index d379da49..213488e3 100644 --- a/c64/kernal/iec/acptr.s +++ b/c64/kernal/iec/acptr.s @@ -20,9 +20,9 @@ ACPTR: !: #if CONFIG_IEC -#if CONFIG_IEC_JIFFYDOS || CONFIG_IEC_DOLPHINDOS +#if CONFIG_IEC_JIFFYDOS jmp iec_rx_dispatch -#else // no turbo supported +#else jmp iec_rx_byte #endif #else diff --git a/c64/kernal/iec/iec_rx_byte.s b/c64/kernal/iec/iec_rx_byte.s index fe5e7068..4ae314bc 100644 --- a/c64/kernal/iec/iec_rx_byte.s +++ b/c64/kernal/iec/iec_rx_byte.s @@ -55,6 +55,22 @@ iec_rx_not_empty: iec_rx_not_eoi: +#if CONFIG_IEC_DOLPHINDOS + + // Check if DolphinDOS was detected + lda IECPROTO + cmp #$02 + bne iec_rx_no_dolphindos + + // For DolphinDOS just fetch the byte from parallel port + lda CIA2_PRB + pha + jmp iec_rx_acknowledge + +iec_rx_no_dolphindos: + +#endif // CONFIG_IEC_DOLPHINDOS + // Latch input bits in on rising edge of CLK, eight times for eight bits. ldx #7 @@ -118,6 +134,10 @@ iec_rx_clk_wait2: dex bpl iec_rx_bit_loop + // FALLTROUGH + +iec_rx_acknowledge: + // Then we must within 1000 usec acknowledge the frame by // pulling DATA. At this point, CLK is pulled by the // talker and DATA by us, i.e., we are ready to receive diff --git a/c64/kernal/iec/load_iec.s b/c64/kernal/iec/load_iec.s index 790e643c..c0d564aa 100644 --- a/c64/kernal/iec/load_iec.s +++ b/c64/kernal/iec/load_iec.s @@ -111,9 +111,9 @@ load_iec: load_iec_loop: // We are now ready to receive bytes -#if CONFIG_IEC_JIFFYDOS || CONFIG_IEC_DOLPHINDOS +#if CONFIG_IEC_JIFFYDOS jsr iec_rx_dispatch -#else // no turbo supported +#else jsr iec_rx_byte #endif bcs load_iec_error @@ -167,7 +167,7 @@ load_iec_loop_end: load_iec_get_addr_byte: -#if CONFIG_IEC_JIFFYDOS || CONFIG_IEC_DOLPHINDOS +#if CONFIG_IEC_JIFFYDOS jsr iec_rx_dispatch #else // no turbo supported jsr iec_rx_byte diff --git a/c64/kernal/iec_fast/iec_rx_dispatch.s b/c64/kernal/iec_fast/iec_rx_dispatch.s index ba4c1ef1..5ec3ba49 100644 --- a/c64/kernal/iec_fast/iec_rx_dispatch.s +++ b/c64/kernal/iec_fast/iec_rx_dispatch.s @@ -1,10 +1,10 @@ // -// Arbitration code for normal/turbo transfer +// Arbitration code for normal/JiffyDOS transfer // -#if CONFIG_IEC_JIFFYDOS || CONFIG_IEC_DOLPHINDOS +#if CONFIG_IEC_JIFFYDOS iec_rx_dispatch: @@ -16,12 +16,7 @@ iec_rx_dispatch: beq_far iec_rx_byte_jiffydos #endif // CONFIG_IEC_JIFFYDOS -#if CONFIG_IEC_DOLPHINDOS - cmp #$02 - beq_far iec_rx_byte_dolphindos -#endif // CONFIG_IEC_DOLPHINDOS - jmp iec_rx_byte -#endif // any turbo supported +#endif