diff --git a/Machines/ZX8081/Keyboard.cpp b/Machines/ZX8081/Keyboard.cpp index e3d177164..f8bc3f5a4 100644 --- a/Machines/ZX8081/Keyboard.cpp +++ b/Machines/ZX8081/Keyboard.cpp @@ -46,7 +46,7 @@ uint16_t *CharacterMapper::sequence_for_character(char character) { /* ACK */ X, /* BEL */ X, /* BS */ SHIFT(Key0), /* HT */ X, /* LF */ KEYS(KeyEnter), /* VT */ X, - /* FF */ X, /* CR */ X, + /* FF */ X, /* CR */ KEYS(KeyEnter), /* SO */ X, /* SI */ X, /* DLE */ X, /* DC1 */ X, /* DC2 */ X, /* DC3 */ X, @@ -112,7 +112,7 @@ uint16_t *CharacterMapper::sequence_for_character(char character) { /* ACK */ X, /* BEL */ X, /* BS */ SHIFT(Key0), /* HT */ X, /* LF */ KEYS(KeyEnter), /* VT */ X, - /* FF */ X, /* CR */ X, + /* FF */ X, /* CR */ KEYS(KeyEnter), /* SO */ X, /* SI */ X, /* DLE */ X, /* DC1 */ X, /* DC2 */ X, /* DC3 */ X, diff --git a/Machines/ZX8081/Keyboard.hpp b/Machines/ZX8081/Keyboard.hpp index 412281a81..da878d61e 100644 --- a/Machines/ZX8081/Keyboard.hpp +++ b/Machines/ZX8081/Keyboard.hpp @@ -32,7 +32,7 @@ struct KeyboardMapper: public KeyboardMachine::MappedMachine::KeyboardMapper { class CharacterMapper: public ::Utility::CharacterMapper { public: CharacterMapper(bool is_zx81); - uint16_t *sequence_for_character(char character); + uint16_t *sequence_for_character(char character) override; private: bool is_zx81_; diff --git a/Machines/ZX8081/ZX8081.cpp b/Machines/ZX8081/ZX8081.cpp index 16d1f1db5..bc2ec98c3 100644 --- a/Machines/ZX8081/ZX8081.cpp +++ b/Machines/ZX8081/ZX8081.cpp @@ -340,7 +340,11 @@ template class ConcreteMachine: } void type_string(const std::string &string) final { - Utility::TypeRecipient::add_typer(string, std::make_unique(is_zx81)); + if(typer_) { + typer_->append(string); + } else { + Utility::TypeRecipient::add_typer(string, std::make_unique(is_zx81)); + } } // MARK: - Keyboard @@ -373,8 +377,13 @@ template class ConcreteMachine: } // MARK: - Typer timing - HalfCycles get_typer_delay() final { return Cycles(7000000); } - HalfCycles get_typer_frequency() final { return Cycles(390000); } + HalfCycles get_typer_delay() final { + return z80_.get_is_resetting() ? Cycles(7'000'000) : Cycles(0); + } + + HalfCycles get_typer_frequency() final { + return Cycles(390'000); + } KeyboardMapper *get_keyboard_mapper() final { return &keyboard_mapper_;