diff --git a/Machines/Electron/Electron.cpp b/Machines/Electron/Electron.cpp index 8caeaf437..7bf5d5505 100644 --- a/Machines/Electron/Electron.cpp +++ b/Machines/Electron/Electron.cpp @@ -405,11 +405,11 @@ class ConcreteMachine: } HalfCycles get_typer_delay() final { - return m6502_.get_is_resetting() ? Cycles(625*25*128) : Cycles(0); // wait one second if resetting + return m6502_.get_is_resetting() ? Cycles(750'000) : Cycles(0); } HalfCycles get_typer_frequency() final { - return Cycles(625*128*2); // accept a new character every two frames + return Cycles(60'000); } void type_string(const std::string &string) final { diff --git a/Machines/Electron/Keyboard.cpp b/Machines/Electron/Keyboard.cpp index e54454171..1ecd358f4 100644 --- a/Machines/Electron/Keyboard.cpp +++ b/Machines/Electron/Keyboard.cpp @@ -66,7 +66,7 @@ uint16_t *CharacterMapper::sequence_for_character(char character) { /* ACK */ X, /* BEL */ X, /* BS */ KEYS(KeyDelete), /* HT */ X, /* LF */ KEYS(KeyReturn), /* VT */ X, - /* FF */ X, /* CR */ X, + /* FF */ X, /* CR */ KEYS(KeyReturn), /* SO */ X, /* SI */ X, /* DLE */ X, /* DC1 */ X, /* DC2 */ X, /* DC3 */ X, @@ -123,7 +123,7 @@ uint16_t *CharacterMapper::sequence_for_character(char character) { /* x */ SHIFT(KeyX), /* y */ SHIFT(KeyY), /* z */ SHIFT(KeyZ), /* { */ CTRL(KeyUp), /* | */ SHIFT(KeyRight), /* } */ CTRL(KeyDown), - /* ~ */ CTRL(KeyLeft) + /* ~ */ CTRL(KeyLeft), /* DEL */ KEYS(KeyDelete), }; #undef KEYS #undef SHIFT @@ -131,3 +131,7 @@ uint16_t *CharacterMapper::sequence_for_character(char character) { return table_lookup_sequence_for_character(key_sequences, sizeof(key_sequences), character); } + +bool CharacterMapper::needs_pause_after_key(uint16_t key) { + return key != KeyControl && key != KeyShift && key != KeyFunc; +} diff --git a/Machines/Electron/Keyboard.hpp b/Machines/Electron/Keyboard.hpp index 04a3b76cd..39c36d3ac 100644 --- a/Machines/Electron/Keyboard.hpp +++ b/Machines/Electron/Keyboard.hpp @@ -38,7 +38,10 @@ struct KeyboardMapper: public KeyboardMachine::MappedMachine::KeyboardMapper { }; struct CharacterMapper: public ::Utility::CharacterMapper { - uint16_t *sequence_for_character(char character); + uint16_t *sequence_for_character(char character) override; + + bool needs_pause_after_reset_all_keys() override { return false; } + bool needs_pause_after_key(uint16_t key) override; }; };