TED register $FF14 is missing the unused bits, based on reference from plus4world:
--- a/src/plus4/ted-mem.c
+++ b/src/plus4/ted-mem.c
@@ -62,7 +62,7 @@ static int unused_bits_in_registers[64] =
0x00 /* $FF08 */, 0x00 /* $FF09 */, 0xa0 /* $FF0A */, 0x00 /* $FF0B */,
0xfc /* $FF0C */, 0x00 /* $FF0D */, 0x00 /* $FF0E */, 0x00 /* $FF0F */,
0x00 /* $FF10 */, 0x00 /* $FF11 */, 0x00 /* $FF12 */, 0x00 /* $FF13 */,
- 0x00 /* $FF14 */, 0x80 /* $FF15 */, 0x80 /* $FF16 */, 0x80 /* $FF17 */,
+ 0x07 /* $FF14 */, 0x80 /* $FF15 */, 0x80 /* $FF16 */, 0x80 /* $FF17 */,
0x80 /* $FF18 */, 0x80 /* $FF19 */, 0x00 /* $FF1A */, 0x00 /* $FF1B */,
0x00 /* $FF1C */, 0x00 /* $FF1D */, 0x00 /* $FF1E */, 0x00 /* $FF1F */,
0x00 /* $FF20 */, 0x00 /* $FF21 */, 0x00 /* $FF22 */, 0x00 /* $FF23 */,
Attached a trivial test which works on yape (no real hardware to test)
A more comprehensive test, checks (almost) all registers.
For registers $10 and $1e yape behaves differently from what's expected so I left the tests commented out.
based on FPGATED $FF10 MSB and $FF1E LSB act differently from other unused bits and always return 0.
This is the last iteration of the test , now checking for all registers. If someone could run this on a real machine and confirm it's green it would be possible to fix VICE code accordingly.