cc65/libsrc/cbm510/clrscr.s

63 lines
1.4 KiB
ArmAsm

;
; Ullrich von Bassewitz, 14.09.2001
;
.export _clrscr
.import plot
.include "cbm510.inc"
.include "extzp.inc"
; ------------------------------------------------------------------------
; void clrscr (void);
.proc _clrscr
lda #0
sta CURS_X
sta CURS_Y
jsr plot ; Set cursor to top left corner
ldx #$00 ; Count
jsr clearpage
jsr clearpage
jsr clearpage
ldx #<(40*25) ; Count
jsr clearpage ; Clear remainder of last page
jmp plot ; Set screen pointer again
.endproc
.proc clearpage
txa
pha ; Save count
lda #$20 ; Screencode for blank
ldy #$00
@L1: sta (SCREEN_PTR),y
iny
dex
bne @L1
inc SCREEN_PTR+1
pla
tax ; Reload count
lda IndReg
pha
lda #$0F
sta IndReg ; Switch to the system bank
lda CHARCOLOR ; Load color
ldy #$00
@L2: sta (CRAM_PTR),y
iny
dex
bne @L2
inc CRAM_PTR+1
pla
sta IndReg ; Restore the old indirect bank
rts
.endproc