From b965e035f92f7cd1c705824b30a87ec2f6f2b948 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Wed, 7 Oct 2020 16:02:07 +0200 Subject: [PATCH] documentation update, small Ultimate 64 code tweaks --- CONFIG.md | 2 +- src/basic/basic_commands_01/cmd_fast_slow.s | 3 +-- src/kernal/iec_fast/jiffydos_load.s | 8 +++---- src/kernal/iec_fast/jiffydos_prepare.s | 11 +++++----- src/kernal/iec_fast/jiffydos_preserve_bits.s | 23 ++++++++++++++++++++ 5 files changed, 33 insertions(+), 14 deletions(-) create mode 100644 src/kernal/iec_fast/jiffydos_preserve_bits.s diff --git a/CONFIG.md b/CONFIG.md index 064877d1..68fa3e88 100644 --- a/CONFIG.md +++ b/CONFIG.md @@ -139,7 +139,7 @@ Needs about 430 bytes in KERNAL segment. If unsure - enable. ### `IEC_JIFFYDOS_BLANK` -Causes screen blanking during JiffyDOS file loading to increase performance. +Causes screen blanking during JiffyDOS file loading to increase performance. On Ultimate 64 motherboard, if possible, screen blanking is substituted by disabling badlines. ## Tape deck diff --git a/src/basic/basic_commands_01/cmd_fast_slow.s b/src/basic/basic_commands_01/cmd_fast_slow.s index 3faff194..7b7adb86 100644 --- a/src/basic/basic_commands_01/cmd_fast_slow.s +++ b/src/basic/basic_commands_01/cmd_fast_slow.s @@ -20,7 +20,6 @@ cmd_slow: cmd_slow_fast_common: - sta U64_TURBOBIT ; only bit 0 matters sta U64_TURBOCTL rts @@ -29,7 +28,7 @@ cmd_fast: lda #$0F ; for U64_TURBOCTL - badlines, 48MHz sta SCPU_SPEED_TURBO ; any value will do - bne cmd_slow_fast_common ; bramnch always + bne cmd_slow_fast_common ; branch always } else ifdef CONFIG_PLATFORM_COMMODORE_64 { diff --git a/src/kernal/iec_fast/jiffydos_load.s b/src/kernal/iec_fast/jiffydos_load.s index 7ff2392d..04251a54 100644 --- a/src/kernal/iec_fast/jiffydos_load.s +++ b/src/kernal/iec_fast/jiffydos_load.s @@ -29,6 +29,8 @@ jiffydos_load: !ifdef CONFIG_MB_U64 { + ; XXX implement for non-blank mode, use jiffydos_prepare_no_preserve_bits + ; Check if turbo register is available lda U64_TURBOCTL cmp #$FF @@ -52,10 +54,7 @@ jiffydos_load: jsr screen_off @2: ; Preserve 3 lowest bits of CIA2_PRA XXX deduplicate this - - lda CIA2_PRA - and #%00000111 - sta C3PO + jsr jiffydos_preserve_bits } else { @@ -66,7 +65,6 @@ jiffydos_load: @2: } - ; A trick to shorten EAL update time ldy #$FF diff --git a/src/kernal/iec_fast/jiffydos_prepare.s b/src/kernal/iec_fast/jiffydos_prepare.s index 244fb5f0..cf939906 100644 --- a/src/kernal/iec_fast/jiffydos_prepare.s +++ b/src/kernal/iec_fast/jiffydos_prepare.s @@ -12,12 +12,11 @@ jiffydos_prepare: - ; We need to preserve 3 lowest bits of CIA2_PRA, they contain important - ; data - fortunately, the bits are never changed by external devices - ; Use C3PO for this, as afterwards we have to set there 0 nevertheless - lda CIA2_PRA - and #%00000111 - sta C3PO + jsr jiffydos_preserve_bits + + ; FALLTROUGH + +jiffydos_prepare_no_preserve_bits: ; Hide sprites; JiffyDOS timing regime is very strict, before transmitting ; anything we need to make sure nothing will steal the cycles diff --git a/src/kernal/iec_fast/jiffydos_preserve_bits.s b/src/kernal/iec_fast/jiffydos_preserve_bits.s new file mode 100644 index 00000000..8a18019d --- /dev/null +++ b/src/kernal/iec_fast/jiffydos_preserve_bits.s @@ -0,0 +1,23 @@ +;; #LAYOUT# STD * #TAKE +;; #LAYOUT# * KERNAL_0 #TAKE +;; #LAYOUT# * * #IGNORE + +; +; JiffyDOS transfer preparation routine +; + + +!ifdef CONFIG_IEC_JIFFYDOS { + + +jiffydos_preserve_bits: + + ; We need to preserve 3 lowest bits of CIA2_PRA, they contain important + ; data - fortunately, the bits are never changed by external devices + ; Use C3PO for this, as afterwards we have to set there 0 nevertheless + lda CIA2_PRA + and #%00000111 + sta C3PO + + rts +}