From 0618d38cdd3925f0d682ba0a76cd91e330cc1627 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Fri, 26 Mar 2021 16:45:06 +0100 Subject: [PATCH] 65C02 code size optimization (22 bytes saved) in IEC code --- src/kernal/iec/iec_pull_release.s | 87 +++++++++++++++++++++++++++++-- 1 file changed, 83 insertions(+), 4 deletions(-) diff --git a/src/kernal/iec/iec_pull_release.s b/src/kernal/iec/iec_pull_release.s index 67b67ce2..8deb834f 100644 --- a/src/kernal/iec/iec_pull_release.s +++ b/src/kernal/iec/iec_pull_release.s @@ -14,6 +14,8 @@ !ifdef CONFIG_IEC { +!ifndef HAS_OPCODES_65C02 { + iec_pull_atn_clk_release_data: @@ -34,7 +36,7 @@ iec_pull_clk_release_data: iec_pull_clk_release_data_1: and #$FF - BIT_CIA2_PRA_DAT_OUT ; release - bne iec_pull_release_end ; branch always + bne iec__pull_release_end ; branch always iec_pull_clk_release_data_oneshot: @@ -56,7 +58,7 @@ iec_release_clk_data: and #$FF - BIT_CIA2_PRA_DAT_OUT ; release sta CIA2_PRA and #$FF - BIT_CIA2_PRA_CLK_OUT ; release - jmp iec_pull_release_end + +bra iec__pull_release_end iec_release_clk_pull_data: @@ -64,7 +66,7 @@ iec_release_clk_pull_data: ora #BIT_CIA2_PRA_DAT_OUT ; pull sta CIA2_PRA and #$FF - BIT_CIA2_PRA_CLK_OUT ; release - bne iec_pull_release_end ; branch always + bne iec__pull_release_end ; branch always iec_pull_data_release_atn_clk: @@ -83,8 +85,85 @@ iec_release_atn: ; FALLTROUGH -iec_pull_release_end: +iec__pull_release_end: sta CIA2_PRA rts + + +} else { + + + ; 65C02 version + +iec_pull_atn_clk_release_data: + + lda #BIT_CIA2_PRA_ATN_OUT + tsb CIA2_PRA + + ; FALLTROUGH + +iec_pull_clk_release_data: + + lda #BIT_CIA2_PRA_CLK_OUT + tsb CIA2_PRA + lda #BIT_CIA2_PRA_DAT_OUT + bra iec__pull_release_trb + +iec_pull_clk_release_data_oneshot: + + lda CIA2_PRA + ora #BIT_CIA2_PRA_CLK_OUT ; pull + and #$FF - BIT_CIA2_PRA_DAT_OUT ; release + sta CIA2_PRA + rts + +iec_release_atn_clk_data: + + lda #BIT_CIA2_PRA_ATN_OUT + trb CIA2_PRA + + ; FALLTROUGH + +iec_release_clk_data: + + lda #BIT_CIA2_PRA_DAT_OUT + trb CIA2_PRA + bra iec__release_clk + +iec_release_clk_pull_data: + + lda #BIT_CIA2_PRA_DAT_OUT + tsb CIA2_PRA + + ; FALLTROUGH + +iec__release_clk: + + lda #BIT_CIA2_PRA_CLK_OUT + bra iec__pull_release_trb + +iec_pull_data_release_atn_clk: + + lda #BIT_CIA2_PRA_DAT_OUT + tsb CIA2_PRA + lda #(BIT_CIA2_PRA_CLK_OUT + BIT_CIA2_PRA_ATN_OUT) + +skip_2_bytes_trash_nvz + + ; FALLTROUGH + +iec_release_atn: + + lda #BIT_CIA2_PRA_ATN_OUT + + ; FALLTROUGH + +iec__pull_release_trb: + + trb CIA2_PRA + rts + + +} + }