
        .export         soft80_kplot

        .include        "c64.inc"
        .include        "soft80.inc"

soft80_kplot:
        bcs     @getpos

        stx     CURS_Y
        sty     CURS_X

        ; calc pointer to bitmap
        lda     _bitmaplo,x
        clc
        adc     _bitmapxlo,y
        sta     SCREEN_PTR
        lda     _bitmaphi,x
        adc     _bitmapxhi,y
        sta     SCREEN_PTR+1

        ; calc pointer to vram
        tya
        lsr     a               ; NOTE: we can save 2 cycles here at the expense of
                                ;       making the tables twice as big (+50 bytes)
        clc
        adc     _vramlo,x
        sta     CRAM_PTR
        lda     #0
        adc     _vramhi,x
        sta     CRAM_PTR+1

@getpos:
        ldx     CURS_Y
        ldy     CURS_X
        rts

        .rodata
_bitmapxlo:
        .repeat 80,col
        .byte <((col/2)*8)
        .endrepeat

_bitmapxhi:
        .repeat 80,col
        .byte >((col/2)*8)
        .endrepeat
_vramlo:
        .repeat 25,row
        .byte <(soft80_vram+(row*40))
        .endrepeat
_vramhi:
        .repeat 25,row
        .byte >(soft80_vram+(row*40))
        .endrepeat
_bitmaplo:
        .repeat 25,row
        .byte <(soft80_bitmap+(row*40*8))
        .endrepeat
_bitmaphi:
        .repeat 25,row
        .byte >(soft80_bitmap+(row*40*8))
        .endrepeat

;-------------------------------------------------------------------------------
; force the init constructor to be imported

        .import soft80_init
conio_init      = soft80_init
