hoglet67 / PiTubeDirect

Bare-metal Raspberry Pi project that attaches to the Acorn TUBE interface and emulates many BBC Micro Co Processors
GNU General Public License v3.0
188 stars 23 forks source link

Framebuffer: Mode change resets character font #171

Closed hoglet67 closed 1 year ago

hoglet67 commented 1 year ago

With the Acorn VDU driver, redefined chararcters persist across mode changes, whereas the Pi VDU resets the current font on mode change. This bug breaks Acornsoft Chess running on Co Pro with the Pi VDU driver.

This happens because the font is currently part of the screen_mode, where as it looks like it should really be part of the framebuffer. If we move it to screen_mode then MODE 7 (and derivatives) will need seperate definitions.

Note: In MOS 3, and in MOS 1.2 when the tube is detected, the host side font is fully exploded, The PiVDU driver also treats the font as fully exploded, in that any character can be redefined. But, we don't currently implement OSBYTE &14, a side effect of which is to reset the definitions of characters &20-&7F.

See: https://beebwiki.mdfs.net/VDU_23 https://beebwiki.mdfs.net/OSBYTE_%2614

Dave