From 8ab47d3321ca10b26be98bfa4a3a1aaa8e5de426 Mon Sep 17 00:00:00 2001 From: Irmen de Jong Date: Wed, 14 Dec 2022 00:57:54 +0100 Subject: [PATCH] fix_autostart_square() now preserves X register correctly --- compiler/res/prog8lib/cx16/textio.p8 | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/compiler/res/prog8lib/cx16/textio.p8 b/compiler/res/prog8lib/cx16/textio.p8 index 7b741af40..6906ccc57 100644 --- a/compiler/res/prog8lib/cx16/textio.p8 +++ b/compiler/res/prog8lib/cx16/textio.p8 @@ -21,12 +21,13 @@ sub home() { txt.chrout(19) } -sub fix_autostart_square() { +asmsub fix_autostart_square() { ; Here's a possible work around for weird issue that prints a black character after first call to c64.PLOT() ; if you're also using c64.CINT() yourself. The default prog8 program initialization (which calls CINT) already performs this workaround. ; The problem occurs when a program is autostarded in the emulator with -run -prg test.prg, ; or when the program is saved as AUTOBOOT.X16 and loaded on boot like that. %asm {{ + phx sec jsr c64.PLOT clc @@ -34,7 +35,9 @@ sub fix_autostart_square() { lda #' ' jsr c64.CHROUT ; overwrite the black square clc - jmp c64.PLOT ; cursor back to original position + jsr c64.PLOT ; cursor back to original position + plx + rts }} }