From 08daa79e6a83eb54a550c9b70bf1c872104e8448 Mon Sep 17 00:00:00 2001 From: hugova Date: Sat, 29 Mar 2025 18:09:58 +0100 Subject: [PATCH] Improve line_down from 839904 to 837970 cykles in line_test_time --- wip-hugo/macros/16aritmatic.s | 17 +++++++++++++++-- wip-hugo/routines/line/line_down.s | 14 +++++++++----- wip-hugo/source.s | 4 ++-- 3 files changed, 26 insertions(+), 9 deletions(-) diff --git a/wip-hugo/macros/16aritmatic.s b/wip-hugo/macros/16aritmatic.s index 00b3ef5..3f65591 100755 --- a/wip-hugo/macros/16aritmatic.s +++ b/wip-hugo/macros/16aritmatic.s @@ -37,12 +37,13 @@ STA hi .endmacro -.macro Add_16_A a_low, a_hi, b_hi, fast_unsafe +.macro Add_16_A a_low, a_hi, b_low, b_hi, fast_unsafe ;; IF to run it fast .ifblank fast_unsafe CLC .endif - ADC a_low + LDA a_low + ADC b_low STA a_low LDA b_hi ADC a_hi @@ -64,6 +65,18 @@ STA a_hi .endmacro +.macro Sub_16_A a_low, a_hi, b_low, b_hi, fast_unsafe +;; IF to run it fast +.ifblank fast_unsafe + SEC +.endif + SBC b_low + STA a_low + LDA a_hi + SBC b_hi + STA a_hi +.endmacro + ;; Untested ;; Subtraction uses the A register ;; a = a - b. b_low = A, b_hi = X diff --git a/wip-hugo/routines/line/line_down.s b/wip-hugo/routines/line/line_down.s index 7daeb10..abff7fb 100644 --- a/wip-hugo/routines/line/line_down.s +++ b/wip-hugo/routines/line/line_down.s @@ -61,10 +61,10 @@ selfmod: ;; V ;;Modidies SBC >V LDA >V - STA case_1 +3 + STA case_1 +1 ;; Modifies SBC D, D, V, #D + Sub_16_A >D, V, # C=1 Add_16 >btp_mem_pos, D, dy_2, #