1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-01 13:41:34 +00:00
cc65/libsrc/geos-common/conio/cclear.s
Oliver Schmidt 13482984ca Introduced internal gotoxy that pops both parameters.
About all CONIO functions offering a <...>xy variant call
  popa
  _gotoxy

By providing an internal gotoxy variant that starts with a popa all those CONIO function can be shortened by 3 bytes. As soon as program calls more than one CONIO function this means an overall code size reduction.
2016-06-05 14:58:38 +02:00

58 lines
1.4 KiB
ArmAsm

;
; Maciej 'YTM/Elysium' Witkowiak
;
; 06.03.2002
; void cclearxy (unsigned char x, unsigned char y, unsigned char length);
; void cclear (unsigned char length);
.export _cclearxy, _cclear
.import gotoxy, fixcursor
.importzp cursor_x, cursor_y, cursor_c
.include "jumptab.inc"
.include "geossym.inc"
_cclearxy:
pha ; Save the length
jsr gotoxy ; Call this one, will pop params
pla ; Restore the length
_cclear:
cmp #0 ; Is the length zero?
beq L9 ; Jump if done
tax
lda cursor_x ; left start
sta r3L
lda cursor_x+1
sta r3L+1
lda cursor_y ; level
sta r2L
clc
adc #7
sta r2H
txa ; right end
clc
adc cursor_c
sta cursor_c
sta r4L
ldx #r4
ldy #3
jsr DShiftLeft
clc ; one pixel less
lda r4L
sbc #0
sta r4L
lda r4L+1
sbc #0
sta r4L+1
lda curPattern ; store current pattern
pha
lda #0 ; set pattern to clear
jsr SetPattern
jsr Rectangle
pla
jsr SetPattern ; restore pattern
jsr fixcursor
L9: rts