diff options
Diffstat (limited to '')
| -rw-r--r-- | src/term.asm | 14 |
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 |
