From 3ccfe725cfd1672e04dcf5caa555ceaaf3f27159 Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Thu, 4 Feb 2016 17:33:17 -0500 Subject: rewrite cspace() in asm, save a few more bytes --- clrtobot.s | 66 -------------------------------------------------------------- 1 file changed, 66 deletions(-) delete mode 100644 clrtobot.s (limited to 'clrtobot.s') diff --git a/clrtobot.s b/clrtobot.s deleted file mode 100644 index 72f97e5..0000000 --- a/clrtobot.s +++ /dev/null @@ -1,66 +0,0 @@ - - - .include "atari.inc" - .export _clrtobot, _clrtoeol, _clrtoline - - .import mul40 ; from cc65's runtime - .importzp tmp3 ; ditto - .import bump_destptr ; these two are - .importzp destptr ; from draw_lorcha.s - -; void clrtobot(void); -; void clrtoeol(void); -; void clrtoline(unsigned char line); - -; this stuff doesn't disturb conio's (and the OS's) idea of the -; current cursor position. It's *way* faster than writing them in -; C in terms of cclear() (which uses one cputc() call per blank). - -_clrtobot: ; same as clrtoline(24); - lda #24 - bne _clrtoline - -_clrtoeol: - lda ROWCRS - ; fall through to _clrtoline - -_clrtoline: - sta tmp3 ; stash our arg - lda #0 - sta OLDCHR ; stop conio from redrawing stuff after we clear it - - ; setup destptr to start of current line, NOT - ; current cursor position. - lda ROWCRS - jsr mul40 ; AX = A*40 (addr of start-of-row) - clc - adc SAVMSC ; add to screen pointer - sta destptr - txa - adc SAVMSC+1 - sta destptr+1 - - ; X = current row, Y = current column. Stop clearing a line when Y == 40, - ; we're done when X == 24. Apologies, the names X and Y are backwards - ; compared to proper Cartesian coordinates. - ldx ROWCRS - ldy COLCRS - lda #0 - -clrloop: - sta (destptr),y ; blank a character (A == 0, screen code for a space) - iny - cpy #40 - bne clrloop - ldy #0 - inx - cpx tmp3 - bcs done - - jsr bump_destptr - lda #0 - tay - beq clrloop - -done: - rts -- cgit v1.2.3