From: Stephan Mühlstrasser Date: Sun, 23 Nov 2014 14:32:48 +0000 (+0100) Subject: Enhancements for cursor calculation X-Git-Tag: V2.15~22^2~46 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=0c62ddf123179f49bddff29e87b161278e76afb3;p=cc65 Enhancements for cursor calculation Fix handling of newlines. Wrap around to top of screen when newline occurs in last line. Initialize screen width in crt0.s. --- diff --git a/libsrc/c1p/cputc.s b/libsrc/c1p/cputc.s index 35326d04b..ca9152aa7 100644 --- a/libsrc/c1p/cputc.s +++ b/libsrc/c1p/cputc.s @@ -44,14 +44,12 @@ L3: iny rts newline: - lda SCR_LINELEN ; xsize-1 - sec ; Account for -1 above - adc SCREEN_PTR - sta SCREEN_PTR - bcc L4 - inc SCREEN_PTR+1 -L4: inc CURS_Y - rts + inc CURS_Y + lda CURS_Y + cmp #24 ; screen height 25 lines hardcoded + bne plot + lda #0 ; wrap around to line 0 + sta CURS_Y plot: ldy CURS_Y lda ScrLo,y diff --git a/libsrc/c1p/crt0.s b/libsrc/c1p/crt0.s index 97d572608..8f25c2a8d 100644 --- a/libsrc/c1p/crt0.s +++ b/libsrc/c1p/crt0.s @@ -13,6 +13,7 @@ .import zerobss, initlib, donelib .include "zeropage.inc" +.include "extzp.inc" ; --------------------------------------------------------------------------- ; Place the startup code in a special segment @@ -26,6 +27,13 @@ _init: LDX #$FF ; Initialize stack pointer to $01FF TXS CLD ; Clear decimal mode +; --------------------------------------------------------------------------- +; Initialize screen width +; TODO: Can initialization be done in a more idiomatic way? +; TODO: Create function for changing screen width + LDA #$18 + STA SCR_LINELEN + ; --------------------------------------------------------------------------- ; Set cc65 argument stack pointer