mirror of
https://github.com/cc65/cc65.git
synced 2024-08-20 09:29:12 +00:00
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.
58 lines
1.4 KiB
ArmAsm
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
|