Significant Improvements
This release finally removes the portability crutch which was previously used when reading console input, and updates our binaries to include a .exe
file for the Microsoft Windows platform.
A working CP/M implementation needs to provide facilities for reading input from the console, both reading a complete line of text and individual keystrokes. These input functions need to handle several different types of input:
- Blocking, waiting for input to become available.
- Non-blocking, returning any pending input if it is available otherwise nothing.
- With echo, so the user can see what they typed.
- Without echo, so the keys are returned by not displayed ot the user.
In the past we used a Unix-specific approach to handle the enabling and disabling of keyboard echoing (specifically we executed the stty
binary to enable/disable echos), but this release now has a more portable, solution based around termbox-go, which is the new default, and should also allow our emulator to work on Microsoft Windows systems.
We always had the ability to select between a number of different output drivers, and as of this release we can now select between multiple input drivers too - with the new portable option being the default. This has been tested on MacOS X systems, as well as GNU/Linux, but sadly I don't have access to Windows to test that.
Internal Changes
Internally several parts of the code relating to output have been renamed, changing things like "ConsoleDriver" to "ConsoleOutput" now that we have different versions of "ConsoleInput" present it makes sense to be consistent. Similarly the configuration function WithConsoleDriver became "WithOutputDriver" to match the newly added "WithInputDriver" fuinction.
Test coverage has been improved compared to the previous release too.
Visible Changes
- The CLI-flag "-list-console-drivers" is now "-list-input-drivers".
- This matches the newly-added "-list-output-drivers" flag.
- The CLI-flag "-console" still works, but will be removed in the future.
- Prefer to use "-output", to match the new "-input" flag.
- The scrollback is gone, as updates are made "in-place".