diff --git a/CONFIG.md b/CONFIG.md index 7b75bcd1..3df98c2d 100644 --- a/CONFIG.md +++ b/CONFIG.md @@ -103,6 +103,10 @@ Adds support for the IEEC bus - for serial printers, disk drives, etc. Needs over 1000 bytes in KERNAL segment. If unsure - enable. +### `CONFIG_IEC_BLANK_SCREEN` + +Causes screen blanking during some IEC operations (currently only JiffyDOS file loading) to increase the data transfer performance. + ### `CONFIG_IEC_JIFFYDOS` Adds support for JiffyDOS fast protocol to the IEC bus. diff --git a/bin/basic_generic.rom b/bin/basic_generic.rom index ebdb04d8..b05583c6 100644 Binary files a/bin/basic_generic.rom and b/bin/basic_generic.rom differ diff --git a/bin/basic_mega65.rom b/bin/basic_mega65.rom index fdf8a5e2..402d2cb2 100644 Binary files a/bin/basic_mega65.rom and b/bin/basic_mega65.rom differ diff --git a/bin/basic_testing.rom b/bin/basic_testing.rom index fee95438..9159e416 100644 Binary files a/bin/basic_testing.rom and b/bin/basic_testing.rom differ diff --git a/bin/basic_ultimate64.rom b/bin/basic_ultimate64.rom index 6f12ef0a..dfcaafab 100644 Binary files a/bin/basic_ultimate64.rom and b/bin/basic_ultimate64.rom differ diff --git a/bin/kernal_generic.rom b/bin/kernal_generic.rom index c5e7be09..16b3cd5e 100644 Binary files a/bin/kernal_generic.rom and b/bin/kernal_generic.rom differ diff --git a/bin/kernal_mega65.rom b/bin/kernal_mega65.rom index 429d1c1c..73884db8 100644 Binary files a/bin/kernal_mega65.rom and b/bin/kernal_mega65.rom differ diff --git a/bin/kernal_testing.rom b/bin/kernal_testing.rom index 316e8159..a83f643a 100644 Binary files a/bin/kernal_testing.rom and b/bin/kernal_testing.rom differ diff --git a/bin/kernal_ultimate64.rom b/bin/kernal_ultimate64.rom index 97670f04..5792dd5e 100644 Binary files a/bin/kernal_ultimate64.rom and b/bin/kernal_ultimate64.rom differ diff --git a/c64/,,config_generic.s b/c64/,,config_generic.s index 25bca317..cba2e0d3 100644 --- a/c64/,,config_generic.s +++ b/c64/,,config_generic.s @@ -41,6 +41,7 @@ // I/O devices #define CONFIG_IEC +#define CONFIG_IEC_BLANK_SCREEN #define CONFIG_IEC_JIFFYDOS // #define CONFIG_TAPE_NORMAL // please keep disabled for now #define CONFIG_TAPE_TURBO diff --git a/c64/,,config_mega65.s b/c64/,,config_mega65.s index 80f96095..2af64048 100644 --- a/c64/,,config_mega65.s +++ b/c64/,,config_mega65.s @@ -43,6 +43,7 @@ // I/O devices #define CONFIG_IEC +#define CONFIG_IEC_BLANK_SCREEN #define CONFIG_IEC_JIFFYDOS // #define CONFIG_TAPE_NORMAL // please keep disabled for now // #define CONFIG_TAPE_TURBO diff --git a/c64/,,config_testing.s b/c64/,,config_testing.s index 652a3e5d..19376b5a 100644 --- a/c64/,,config_testing.s +++ b/c64/,,config_testing.s @@ -42,6 +42,7 @@ // I/O devices #define CONFIG_IEC +// #define CONFIG_IEC_BLANK_SCREEN #define CONFIG_IEC_JIFFYDOS // #define CONFIG_TAPE_NORMAL // please keep disabled for now #define CONFIG_TAPE_TURBO diff --git a/c64/,,config_ultimate64.s b/c64/,,config_ultimate64.s index 7af94966..ea56cd38 100644 --- a/c64/,,config_ultimate64.s +++ b/c64/,,config_ultimate64.s @@ -41,6 +41,7 @@ // I/O devices #define CONFIG_IEC +#define CONFIG_IEC_BLANK_SCREEN #define CONFIG_IEC_JIFFYDOS // #define CONFIG_TAPE_NORMAL // please keep disabled for now #define CONFIG_TAPE_TURBO diff --git a/c64/kernal/iec/iec_wait1ms.s b/c64/kernal/iec/iec_wait1ms.s index 464619c4..9e550f35 100644 --- a/c64/kernal/iec/iec_wait1ms.s +++ b/c64/kernal/iec/iec_wait1ms.s @@ -29,6 +29,8 @@ wait_x_bars: // additional entry point for tape support dex bne !- +iec_wait_rts: // dummy RTS, for very short waits + rts diff --git a/c64/kernal/iec_fast/load_jiffydos.s b/c64/kernal/iec_fast/load_jiffydos.s index 51bf3bf3..126187c4 100644 --- a/c64/kernal/iec_fast/load_jiffydos.s +++ b/c64/kernal/iec_fast/load_jiffydos.s @@ -3,8 +3,6 @@ // JiffyDOS protocol support for IEC - optimized load loop // -// XXX option does not work yet -// #define CONFIG_IEC_BLANK_SCREEN #if CONFIG_IEC_JIFFYDOS && !CONFIG_MEMORY_MODEL_60K @@ -61,6 +59,10 @@ load_jiffydos_loop: #if CONFIG_IEC_BLANK_SCREEN + // It JiffyDOS needs some time here; waste few cycles + nop + jsr iec_wait_rts + // Ask device to start sending bits sta CIA2_PRA @@ -87,8 +89,8 @@ load_jiffydos_loop: lsr lsr - // Wait for the drive - we have time to increment offset, cycles: 2 - iny + // Delay, JiffyDOS needs some time, 2 cycles + nop // Get bits, cycles: 4 + 2 + 2 = 8 ora CIA2_PRA // bits 2 and 3 on CLK/DATA @@ -105,7 +107,8 @@ load_jiffydos_loop: eor C3PO eor CIA2_PRA // bits 6 and 7 on CLK/DATA - // Store retrieved byte, cycles: 6 + // Store retrieved byte, cycles: 2 + 6 = 8 + iny // NTSC needs this delay sta (EAL),y // not compatible with CONFIG_MEMORY_MODEL_60K // Retrieve status bits, cycles: 4