Closed jcnventura closed 4 years ago
The keyboard port on the ULA implements the keyboard matrix as an 8 x 5 matrix, which matches the 48K machine directly. This is emulated by the physical keyboard membrane on a Toastrack and grey +2, and by the ASIC on a +2A/+3. Due to this emulation, it's not possible to determine whether an emulated key is being pressed or a combination of keys on the original matrix.
For example, pressing the Caps Lock key on a 128 machine is equivalent to pressing Caps Shift and the 2 key. There is no way for the diagnostics to differentiate between the two.
The built-in keyboard test on +2A/+3 machines works slightly differently in that it insists on all of the keys on the keyboard being pressed in sequence, which can be tedious if you're just looking for a quick sanity check.
True, but you already know if you are running on a 48K or in an enhanced version. It should be possible to state somewhere in the screen that pressing a combination of keys will mask a test for the extended keys.
If you assume that no one is pressing a combination of keys, you can then add a simple test for these keys. The good thing is that the keyboard layout is the same whether it is a Plus/128/+2/+3.
I will consider this, but as of the current build there are 638 free bytes available for enhancements, so this may end up being a very low priority.
Understood completely.
Currently the system only tests the older '48K' keyboard. It would be good to be able to also test the extended keys on the later models of the ZX Spectrum.