.import         soft80_kclrscr, soft80_charset
         .export         soft80_internal_textcolor, soft80_internal_bgcolor
+        .export         soft80_internal_cursorxlsb
 
         .importzp       ptr1, ptr2, ptr3
 
         .res 1
 soft80_internal_bgcolor:
         .res 1
+soft80_internal_cursorxlsb:
+        .res 1
 
 
         .import         xsize
         .import         soft80_kplot
         .import         soft80_internal_bgcolor, soft80_internal_textcolor
+        .import         soft80_internal_cursorxlsb
 
         .importzp       tmp4,tmp3
 
         sty     CURS_X
         tya
         and     #$01
+        sta     soft80_internal_cursorxlsb
         bne     @L5
 
         lda     SCREEN_PTR
 .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
         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
         lda     RVS
         jne     _invers
 
-        lda     CURS_X
-        and     #$01
+        ;lda     CURS_X
+        ;and     #$01
+        lda     soft80_internal_cursorxlsb
         bne     @l1
 
         .repeat 8,line
 ; output inverted character
 _invers:
 
-        lda     CURS_X
-        and     #$01
+        ;lda     CURS_X
+        ;and     #$01
+        lda     soft80_internal_cursorxlsb
         bne     @l1
 
         .repeat 8,line
         ;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
 
         ; 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
         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
 
         ;ldy     #$00            ; is still $00
 
-        lda     CURS_X
-        and     #$01
+        ;lda     CURS_X
+        ;and     #$01
+        lda     soft80_internal_cursorxlsb
         jne     @l1a
 
         .repeat 8,line
 
 ;
 
         .export         soft80_kplot
+        .import         soft80_internal_cursorxlsb
 
         .include        "c64.inc"
         .include        "soft80.inc"
         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
 
         ldy     #screenrows
         ldx     #charsperline
         rts
-
-;-------------------------------------------------------------------------------
-; force the init constructor to be imported
-
-        .import soft80_init
-conio_init      = soft80_init