From 62b27e0a3dcbde68ce84362f71e9919d2644a9e8 Mon Sep 17 00:00:00 2001 From: Dave Date: Mon, 2 Jan 2023 03:06:10 -0600 Subject: [PATCH] fix videx keymappings fix applesoft keytest prog - fixed the videx-like keymappings for the upper/lower keyboard - moved @ to SHIFT-0 from CTRL-0, and put ID on CTRL-0 - bind the applesoft key test program to CTRL-3 - cram the keyboard test program into one line, to avoid adding a delay for BASIC parsing after the CR. - in main(), output only printable codes less than INVALID_CODE, - instead of checking for code != INVALID_CODE. --- firmware/asdf/CMakeLists.txt | 2 +- firmware/asdf/src/Keymaps/asdf_keymap_apple2.h | 2 +- .../src/Keymaps/asdf_keymap_apple2_add_map.c | 16 +++++----------- firmware/asdf/src/main.c | 9 +++++---- 4 files changed, 12 insertions(+), 17 deletions(-) diff --git a/firmware/asdf/CMakeLists.txt b/firmware/asdf/CMakeLists.txt index 625d115..4d094a0 100644 --- a/firmware/asdf/CMakeLists.txt +++ b/firmware/asdf/CMakeLists.txt @@ -62,7 +62,7 @@ elseif(ARCH MATCHES atmega640 OR ARCH MATCHES atmega1280 OR ARCH MATCHES atmega2 endif() project("asdf" - VERSION 1.6.4 + VERSION 1.6.5 DESCRIPTION "A customizable keyboard matrix controller for retrocomputers" LANGUAGES C) diff --git a/firmware/asdf/src/Keymaps/asdf_keymap_apple2.h b/firmware/asdf/src/Keymaps/asdf_keymap_apple2.h index dd81a06..2277517 100644 --- a/firmware/asdf/src/Keymaps/asdf_keymap_apple2.h +++ b/firmware/asdf/src/Keymaps/asdf_keymap_apple2.h @@ -42,7 +42,7 @@ #include "asdf_hook.h" #define APPLESOFT_KEYBOARD_TEST ASDF_HOOK_USER_3 -#define APPLE2_ID_MESSAGE ASDF_HOOK_USER_4 +#define APPLE2_ID_MESSAGE ASDF_HOOK_USER_10 #define APPLE2_ASCII_TEST ASDF_HOOK_USER_11 #define APPLE2_PRINT_DELAY 40 // msec diff --git a/firmware/asdf/src/Keymaps/asdf_keymap_apple2_add_map.c b/firmware/asdf/src/Keymaps/asdf_keymap_apple2_add_map.c index d05e32b..a239a32 100644 --- a/firmware/asdf/src/Keymaps/asdf_keymap_apple2_add_map.c +++ b/firmware/asdf/src/Keymaps/asdf_keymap_apple2_add_map.c @@ -88,7 +88,7 @@ const FLASH apple_keycode_matrix_t apple_shift_matrix = { [4] = { ACTION_NOTHING, 'I', 'U', 'Y', 'T', 'R', 'E', 'W' }, [5] = { ACTION_NOTHING, ACTION_NOTHING, ACTION_NOTHING, ASCII_CR, ASCII_AT, 'O', 'L', '>' }, [6] = { ACTION_NOTHING, ACTION_NOTHING, APPLE_ACTION_CLEAR, '=', - '*', ASCII_ZERO, ASCII_RT_PAREN, ASCII_LT_PAREN }, + '*', ASCII_AT, ASCII_RT_PAREN, ASCII_LT_PAREN }, [7] = { APPLE_LEFT_ARROW, ASCII_SINGLE_QUOTE, '&', '%', '$', '#', ASCII_DOUBLE_QUOTE, '!' }, ASDF_APPLE2_DIP_SWITCHES }; @@ -102,7 +102,7 @@ const FLASH apple_keycode_matrix_t apple_caps_shift_matrix = { [4] = { ACTION_NOTHING, 'I', 'U', 'Y', 'T', 'R', 'E', 'W' }, [5] = { ACTION_NOTHING, ACTION_NOTHING, ACTION_NOTHING, ASCII_CR, ACTION_REPEAT, 'O', 'L', '>' }, [6] = { ACTION_NOTHING, ACTION_NOTHING, APPLE_ACTION_CLEAR, '=', - '*', ASCII_ZERO, ASCII_RT_PAREN, ASCII_LT_PAREN }, + '*', ACTION_NOTHING, ASCII_RT_PAREN, ASCII_LT_PAREN }, [7] = { APPLE_LEFT_ARROW, ASCII_SINGLE_QUOTE, '&', '%', '$', '#', ASCII_DOUBLE_QUOTE, '!' }, ASDF_APPLE2_DIP_SWITCHES }; @@ -134,8 +134,8 @@ const FLASH apple_keycode_matrix_t apple_ctrl_matrix = { [5] = { ACTION_NOTHING, ACTION_NOTHING, ACTION_NOTHING, ASCII_CR, ACTION_REPEAT, ASCII_CTRL_O, ASCII_CTRL_L, ASCII_RT_SQUARE_BRACE }, [6] = { ACTION_NOTHING, ACTION_NOTHING, APPLE_ACTION_RESET, ASCII_UNDERSCORE, - ACTION_NOTHING, ASCII_AT, ASCII_RT_CURLY_BRACE, ASCII_LT_CURLY_BRACE }, - [7] = { APPLE_LEFT_ARROW, ASCII_GRAVE_ACCENT, ASCII_CARET, ACTION_FN_5, + ACTION_NOTHING, ACTION_FN_10, ASCII_RT_CURLY_BRACE, ASCII_LT_CURLY_BRACE }, + [7] = { ASCII_DEL, ASCII_GRAVE_ACCENT, ASCII_CARET, ACTION_FN_5, ACTION_FN_4, ACTION_FN_3, ASCII_TILDE, ASCII_VERT_BAR }, ASDF_APPLE2_DIP_SWITCHES }; @@ -151,13 +151,7 @@ static const apple_keycode_matrix_t *apple_maps[] = { void applesoft_keyboard_test(void) { - asdf_print("10 GET A$\r"); - asdf_print("20 A = ASC(A$)\r"); - asdf_print("30 IF A < 32 THEN A$=\"CTL+\"+CHR$(A + 64)\r"); - asdf_print("40 ?\"'\";A$;\"' = \";A:\r"); - asdf_print("50 IF A <> 3 GOTO 10\r"); - asdf_print("60 END\rRUN\r"); - + asdf_print("10GETA$(0):A=ASC(A$(0)):A$(1)=\"CTL+\"+CHR$(A + 64):?\"'\";A$(A<32);\"' = \";A:IFA<>3GOTO10\r"); } void apple_add_map(const apple_map_index_t map_index, diff --git a/firmware/asdf/src/main.c b/firmware/asdf/src/main.c index fbfc263..61ec560 100644 --- a/firmware/asdf/src/main.c +++ b/firmware/asdf/src/main.c @@ -68,10 +68,11 @@ int main(void) if (asdf_arch_tick()) { asdf_keycode_t code = asdf_next_code(); - if (code != ASDF_INVALID_CODE) { - void (*output_function)(asdf_keycode_t) = - (void (*)(asdf_keycode_t)) asdf_hook_get(ASDF_HOOK_OUTPUT); - (*output_function)(code); + if (code < ASDF_INVALID_CODE) { + // This is inside the loop because the output function may change + void (*output_function)(asdf_keycode_t) = + (void (*)(asdf_keycode_t)) asdf_hook_get(ASDF_HOOK_OUTPUT); + (*output_function)(code); } asdf_keyscan(); }