1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-26 05:29:30 +00:00

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.
This commit is contained in:
Stephan Mühlstrasser 2014-11-23 15:32:48 +01:00
parent 12ca22c265
commit 0c62ddf123
2 changed files with 14 additions and 8 deletions

View File

@ -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

View File

@ -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