]> git.sur5r.net Git - cc65/commitdiff
maintain lsb of cursor x position internally, saves some bytes and some cycles too :)
authormrdudz <mrdudz@users.noreply.github.com>
Mon, 12 Oct 2015 13:44:41 +0000 (15:44 +0200)
committermrdudz <mrdudz@users.noreply.github.com>
Mon, 12 Oct 2015 13:44:41 +0000 (15:44 +0200)
libsrc/c64/soft80_cgetc.s
libsrc/c64/soft80_conio.s
libsrc/c64/soft80_cputc.s
libsrc/c64/soft80_kplot.s
libsrc/c64/soft80_scrsize.s

index 7d8a1d88f4f4164763e66ad2d40d6eaa2a8e873f..7bb67f0ae0038d637b9cc3e8867a638e1aff0120 100644 (file)
@@ -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
index d63f010459ad8616728ddf40e00287a95b6ea63b..344831447e2fed0f6b59e1a690fc7545274d1277 100644 (file)
@@ -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
 
index 466b25057cf7d40faf0a4447d22ac0a05dd1520c..4f2eb7adaa6528cd18e39fa279bd38dee163c6d3 100644 (file)
@@ -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
index e359e9f582c756a4ac99ad6e559ec8b5cf5aa9f2..8d8c77c5cf95dfe9c2f635dc1502cf4e92395209 100644 (file)
@@ -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
index b0f4f71e79a2f8f8c4e85a2f542a6a7b3f51802d..9f1701a9a090b99c827eac70760185fb793fcda5 100644 (file)
@@ -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