; Advance cursor position
iny ; contains CURS_X
cpy #charsperline
- beq L3
+ beq @L3
sty CURS_X
tya
inc CRAM_PTR+1
@L5:
rts
-L3:
+@L3:
inc CURS_Y ; new line
ldy #0 ; + cr
sty CURS_X
clc
adc #40
sta CRAM_PTR
- bcc L5
+ bcc @L5
inc CRAM_PTR+1
-L5:
+@L5:
inc CURS_Y
rts
;
; in: x must be $34
; y must be $00
-; out: y = $00
+; out: x = $34
+; y = $00
remcolor:
;ldy #$00 ; is still $00
and #$0f
cmp soft80_internal_bgcolor
beq @sk2 ; yes, colram==bgcolor
+ sta tmp3 ; A contains colram
; two characters in the current cell, of which one will get removed
- ; vram = colram
- ;inc $01
- ;lda (CRAM_PTR),y ; colram
- ;stx $01 ;$34
- ;and #$0f
- sta tmp3 ; A contains colram
-
lda soft80_internal_cursorxlsb
bne @sk3
; vram = colram
lda (CRAM_PTR),y ; vram
and #$f0
- ora tmp3
+ ora tmp3 ; colram value
sta (CRAM_PTR),y ; vram
@sk3:
; colram = bgcolor
sty CURS_X
; calc pointer to bitmap
- lda _bitmaplo,x
+ lda soft80_bitmapylo,x
clc
- adc _bitmapxlo,y
+ adc soft80_bitmapxlo,y
sta SCREEN_PTR
- lda _bitmaphi,x
- adc _bitmapxhi,y
+ lda soft80_bitmapyhi,x
+ adc soft80_bitmapxhi,y
sta SCREEN_PTR+1
tya
; 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)
+ lsr a
+
clc
- adc _vramlo,x
+ adc soft80_vramlo,x
sta CRAM_PTR
lda #0
- adc _vramhi,x
+ adc soft80_vramhi,x
sta CRAM_PTR+1
@getpos:
; to 0xdc00... area in ram under i/o
.rodata
-_bitmapxlo:
+soft80_bitmapxlo:
.repeat 80,col
.byte <((col/2)*8)
.endrepeat
-
-_bitmapxhi:
+soft80_bitmapxhi:
.repeat 80,col
.byte >((col/2)*8)
.endrepeat
-_vramlo:
+soft80_vramlo:
.repeat 25,row
.byte <(soft80_vram+(row*40))
.endrepeat
-_vramhi:
+soft80_vramhi:
.repeat 25,row
.byte >(soft80_vram+(row*40))
.endrepeat
-_bitmaplo:
+soft80_bitmapylo:
.repeat 25,row
.byte <(soft80_bitmap+(row*40*8))
.endrepeat
-_bitmaphi:
+soft80_bitmapyhi:
.repeat 25,row
.byte >(soft80_bitmap+(row*40*8))
.endrepeat