From 0c62ddf123179f49bddff29e87b161278e76afb3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Stephan=20M=C3=BChlstrasser?= Date: Sun, 23 Nov 2014 15:32:48 +0100 Subject: [PATCH] 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. --- libsrc/c1p/cputc.s | 14 ++++++-------- libsrc/c1p/crt0.s | 8 ++++++++ 2 files changed, 14 insertions(+), 8 deletions(-) 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 -- 2.39.5