From ef1b1015385cb9df6e894ffc64b8d84150d371b4 Mon Sep 17 00:00:00 2001 From: mrdudz Date: Wed, 25 Jun 2025 20:38:58 +0200 Subject: [PATCH] fix cursor() --- asminc/cbm_kernal.inc | 16 ++++++++++++---- libsrc/c65/cursor.s | 26 ++++++++++++++++++++++++++ libsrc/mega65/cursor.s | 26 ++++++++++++++++++++++++++ 3 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 libsrc/c65/cursor.s create mode 100644 libsrc/mega65/cursor.s diff --git a/asminc/cbm_kernal.inc b/asminc/cbm_kernal.inc index a2fb05cb0..963ab1985 100644 --- a/asminc/cbm_kernal.inc +++ b/asminc/cbm_kernal.inc @@ -63,16 +63,24 @@ MOUSE_GET := $FF6B .endif -.if .def(__C65__) || .def (__MEGA65__) +.if .def (__MEGA65__) ; extended C65 jump table - VERSIONQ := $FF2F - RESET_RUN := $FF32 - CURSOR := $FF35 + +; memory before $ff3b is all $ff in mega65 ROM? +; VERSIONQ := $FF2F +; RESET_RUN := $FF32 +; CURSOR := $FF35 + SAVEFL := $FF3B GETIO := $FF41 GETLFS := $FF44 KEYLOCKS := $FF47 ADDKEY := $FF4A +.endif + +.if .def(__C65__) || .def (__MEGA65__) + CURSOR := $E030 ; in editor ROM + SPIN_SPOUT := $FF4D CLSALL := $FF50 C64MODE := $FF53 diff --git a/libsrc/c65/cursor.s b/libsrc/c65/cursor.s new file mode 100644 index 000000000..8c36a7a32 --- /dev/null +++ b/libsrc/c65/cursor.s @@ -0,0 +1,26 @@ +; +; unsigned char cursor (unsigned char onoff); +; + + .include "cbm_kernal.inc" + + .export _cursor + .import cursor + +.proc _cursor + pha + ; A != 0 to enable, 0 to disable + cmp #0 + beq disable ; C = 1 + clc +disable: + ; C = 0 to enable, 1 to disable + jsr CURSOR + + ply ; onoff into Y + ldx #0 ; High byte of result + lda cursor ; Get old value + sty cursor ; Set new value + rts +.endproc + diff --git a/libsrc/mega65/cursor.s b/libsrc/mega65/cursor.s new file mode 100644 index 000000000..8c36a7a32 --- /dev/null +++ b/libsrc/mega65/cursor.s @@ -0,0 +1,26 @@ +; +; unsigned char cursor (unsigned char onoff); +; + + .include "cbm_kernal.inc" + + .export _cursor + .import cursor + +.proc _cursor + pha + ; A != 0 to enable, 0 to disable + cmp #0 + beq disable ; C = 1 + clc +disable: + ; C = 0 to enable, 1 to disable + jsr CURSOR + + ply ; onoff into Y + ldx #0 ; High byte of result + lda cursor ; Get old value + sty cursor ; Set new value + rts +.endproc +