From 755b7bb1a4a65d8d43593edacc861d92aec13d92 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Thu, 3 Dec 2020 18:08:04 +0100 Subject: [PATCH] added MEGA65-specific JOYCRSR command --- doc/Extended-BASIC.md | 6 +++++ src/,,config_mega65.s | 4 ++-- src/basic/basic_commands_04/cmd_joycrsr.s | 24 +++++++++++++++++++ .../helper_ensure_legacy_mode_m65.s | 0 .../helper_ensure_native_mode_m65.s | 10 ++++++++ tools/generate_strings.cc | 2 ++ 6 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 src/basic/basic_commands_04/cmd_joycrsr.s rename src/basic/{basic_commands_01 => basic_commands_04}/helper_ensure_legacy_mode_m65.s (100%) create mode 100644 src/basic/basic_commands_04/helper_ensure_native_mode_m65.s diff --git a/doc/Extended-BASIC.md b/doc/Extended-BASIC.md index 1ea35116..a6294845 100644 --- a/doc/Extended-BASIC.md +++ b/doc/Extended-BASIC.md @@ -69,6 +69,12 @@ Verify operation for the binary data starting from a given addres. NOTE: for now Saves the binary data from the given memory area. NOTE: for now syntax differs from the BASIC V3.5+ - this will be changed once the necessary BASIC infrastructure is implemented. +## Additional BASIC commands - screen/keyboard + +### `JOYCRSR joy_number` (MEGA65) + +Sets the joystick (1 or 2) which moves the screen cursor. Native mode only. + ## Additional BASIC commands - misc ### `COLD` (cart, MEGA65) diff --git a/src/,,config_mega65.s b/src/,,config_mega65.s index 1acdcace..ca8e5649 100644 --- a/src/,,config_mega65.s +++ b/src/,,config_mega65.s @@ -71,8 +71,8 @@ ;; #CONFIG# KEYCMD_F10 "REM F10" ;; #CONFIG# KEYCMD_F11 "REM F11" ;; #CONFIG# KEYCMD_F12 "REM F12" -;; #CONFIG# KEYCMD_F13 "REM F13" -;; #CONFIG# KEYCMD_F14 "REM F14" +;; #CONFIG# KEYCMD_F13 "JOYCRSR 2" +;; #CONFIG# KEYCMD_F14 "JOYCRSR 0" ; --- Screen editor diff --git a/src/basic/basic_commands_04/cmd_joycrsr.s b/src/basic/basic_commands_04/cmd_joycrsr.s new file mode 100644 index 00000000..bb435f61 --- /dev/null +++ b/src/basic/basic_commands_04/cmd_joycrsr.s @@ -0,0 +1,24 @@ +;; #LAYOUT# M65 BASIC_0 #TAKE +;; #LAYOUT# * * #IGNORE + + +cmd_joycrsr: + + ; Make sure we are in MEGA65 native mode + + jsr helper_ensure_native_mode + + ; Fetch joystick ID + + jsr fetch_coma_uint8 + +bcs do_SYNTAX_error + + ; Check if joystick ID is valid + + cmp #$03 + +bcs do_ILLEGAL_QUANTITY_error + + ; Set the joystick responsible for moving cursor keys + + sta M65_JOYCRSR ; XXX consider introducing Kernal call for this + rts diff --git a/src/basic/basic_commands_01/helper_ensure_legacy_mode_m65.s b/src/basic/basic_commands_04/helper_ensure_legacy_mode_m65.s similarity index 100% rename from src/basic/basic_commands_01/helper_ensure_legacy_mode_m65.s rename to src/basic/basic_commands_04/helper_ensure_legacy_mode_m65.s diff --git a/src/basic/basic_commands_04/helper_ensure_native_mode_m65.s b/src/basic/basic_commands_04/helper_ensure_native_mode_m65.s new file mode 100644 index 00000000..f8f08c2b --- /dev/null +++ b/src/basic/basic_commands_04/helper_ensure_native_mode_m65.s @@ -0,0 +1,10 @@ +;; #LAYOUT# M65 BASIC_0 #TAKE +;; #LAYOUT# * * #IGNORE + + +helper_ensure_native_mode: + + jsr M65_MODEGET + +bcs do_NATIVE_MODE_ONLY_error + + rts diff --git a/tools/generate_strings.cc b/tools/generate_strings.cc index 5a9e040b..93924ad2 100644 --- a/tools/generate_strings.cc +++ b/tools/generate_strings.cc @@ -200,6 +200,8 @@ const StringEntryList GLOBAL_Keywords_04 = { ListType::KEYWORDS, "keywords_04", { // STD CRT M65 U64 X16 { false, false, true, false, false, "K04_01", "SYSINFO", }, // Not present in CBM BASIC dialects, Open ROMs specific + { false, false, true, false, false, "K04_02", "JOYCRSR", }, // Not present in CBM BASIC dialects, Open ROMs specific + } };