From 21732e3c5bf540126278848fa1f4d4a60f32013b Mon Sep 17 00:00:00 2001 From: mrdudz Date: Mon, 12 Oct 2015 15:44:41 +0200 Subject: [PATCH] maintain lsb of cursor x position internally, saves some bytes and some cycles too :) --- libsrc/c64/soft80_cgetc.s | 8 ++++--- libsrc/c64/soft80_conio.s | 3 +++ libsrc/c64/soft80_cputc.s | 42 +++++++++++++++++++++++-------------- libsrc/c64/soft80_kplot.s | 5 +++++ libsrc/c64/soft80_scrsize.s | 6 ------ 5 files changed, 39 insertions(+), 25 deletions(-) diff --git a/libsrc/c64/soft80_cgetc.s b/libsrc/c64/soft80_cgetc.s index 7d8a1d88f..7bb67f0ae 100644 --- a/libsrc/c64/soft80_cgetc.s +++ b/libsrc/c64/soft80_cgetc.s @@ -5,6 +5,7 @@ ; .export soft80_cgetc + .import soft80_internal_cursorxlsb .import cursor .importzp tmp1 @@ -45,9 +46,10 @@ invertcursor: ldy #$00 jsr setcolor - lda CURS_X - and #$01 - tax + ;lda CURS_X + ;and #$01 + ;tax + ldx soft80_internal_cursorxlsb @lp1: lda (SCREEN_PTR),y eor nibble,x diff --git a/libsrc/c64/soft80_conio.s b/libsrc/c64/soft80_conio.s index d63f01045..344831447 100644 --- a/libsrc/c64/soft80_conio.s +++ b/libsrc/c64/soft80_conio.s @@ -9,6 +9,7 @@ .import soft80_kclrscr, soft80_charset .export soft80_internal_textcolor, soft80_internal_bgcolor + .export soft80_internal_cursorxlsb .importzp ptr1, ptr2, ptr3 @@ -104,4 +105,6 @@ soft80_internal_textcolor: .res 1 soft80_internal_bgcolor: .res 1 +soft80_internal_cursorxlsb: + .res 1 diff --git a/libsrc/c64/soft80_cputc.s b/libsrc/c64/soft80_cputc.s index 466b25057..4f2eb7ada 100644 --- a/libsrc/c64/soft80_cputc.s +++ b/libsrc/c64/soft80_cputc.s @@ -13,6 +13,7 @@ .import xsize .import soft80_kplot .import soft80_internal_bgcolor, soft80_internal_textcolor + .import soft80_internal_cursorxlsb .importzp tmp4,tmp3 @@ -86,6 +87,7 @@ advance: sty CURS_X tya and #$01 + sta soft80_internal_cursorxlsb bne @L5 lda SCREEN_PTR @@ -146,8 +148,9 @@ _space: .endif ;ldy #$00 ; is still $00 - lda CURS_X - and #$01 + ;lda CURS_X + ;and #$01 + lda soft80_internal_cursorxlsb bne @l1 .repeat 8,line @@ -182,8 +185,9 @@ _spaceinvers: sta (CRAM_PTR),y ; vram .endif - lda CURS_X - and #$01 + ;lda CURS_X + ;and #$01 + lda soft80_internal_cursorxlsb bne @l1 .repeat 8,line @@ -240,8 +244,9 @@ soft80_putchar: lda RVS jne _invers - lda CURS_X - and #$01 + ;lda CURS_X + ;and #$01 + lda soft80_internal_cursorxlsb bne @l1 .repeat 8,line @@ -279,8 +284,9 @@ _back: ; output inverted character _invers: - lda CURS_X - and #$01 + ;lda CURS_X + ;and #$01 + lda soft80_internal_cursorxlsb bne @l1 .repeat 8,line @@ -366,8 +372,9 @@ remcolor: ;and #$0f sta tmp3 ; A contains colram - lda CURS_X - and #$01 + ;lda CURS_X + ;and #$01 + lda soft80_internal_cursorxlsb bne @sk3 ; vram = colram @@ -436,8 +443,9 @@ soft80_putcolor: ; botch characters in the cell are used - lda CURS_X - and #$01 + ;lda CURS_X + ;and #$01 + lda soft80_internal_cursorxlsb bne @sk2 ; jump if odd xpos ; vram = textcol @@ -450,8 +458,9 @@ soft80_putcolor: jsr soft80_checkchar bcs @sk1 ; char at current position => overwrite 1st - lda CURS_X - and #$01 + ;lda CURS_X + ;and #$01 + lda soft80_internal_cursorxlsb beq @sk3 ; jump if even xpos @sk2: ; colram = textcol @@ -481,8 +490,9 @@ soft80_checkchar: ;ldy #$00 ; is still $00 - lda CURS_X - and #$01 + ;lda CURS_X + ;and #$01 + lda soft80_internal_cursorxlsb jne @l1a .repeat 8,line diff --git a/libsrc/c64/soft80_kplot.s b/libsrc/c64/soft80_kplot.s index e359e9f58..8d8c77c5c 100644 --- a/libsrc/c64/soft80_kplot.s +++ b/libsrc/c64/soft80_kplot.s @@ -6,6 +6,7 @@ ; .export soft80_kplot + .import soft80_internal_cursorxlsb .include "c64.inc" .include "soft80.inc" @@ -25,6 +26,10 @@ soft80_kplot: adc _bitmapxhi,y sta SCREEN_PTR+1 + tya + and #1 + sta soft80_internal_cursorxlsb + ; calc pointer to vram tya lsr a ; NOTE: we can save 2 cycles here at the expense of diff --git a/libsrc/c64/soft80_scrsize.s b/libsrc/c64/soft80_scrsize.s index b0f4f71e7..9f1701a9a 100644 --- a/libsrc/c64/soft80_scrsize.s +++ b/libsrc/c64/soft80_scrsize.s @@ -12,9 +12,3 @@ soft80_screensize: ldy #screenrows ldx #charsperline rts - -;------------------------------------------------------------------------------- -; force the init constructor to be imported - - .import soft80_init -conio_init = soft80_init -- 2.39.5