aboutsummaryrefslogtreecommitdiffstats
path: root/src/term.asm
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/term.asm14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/term.asm b/src/term.asm
index deb6748..10cdccc 100644
--- a/src/term.asm
+++ b/src/term.asm
@@ -493,7 +493,21 @@ cursor_down:
; -----------------------------------------------------------------------------
; term_putc - A = character. Print at the cursor, advance, handle \n \r \b.
; -----------------------------------------------------------------------------
+; term_putc guarantees SVBK=1 so the buffer/state at $D5xx/$D6xx are the ones
+; we built, no matter which process context KPutc calls us from. The stack is
+; in non-banked WRAM ($Cxxx/$Axxx), so saving SVBK across the switch is safe.
term_putc::
+ ld d, a
+ ld a, [rSVBK]
+ push af
+ ld a, 1
+ ld [rSVBK], a
+ ld a, d
+ call term_putc_body
+ pop af
+ ld [rSVBK], a
+ ret
+term_putc_body:
cp 10
jr z, .newline
cp 13