Hi Frank,
Congratulations for this fantastic MCU project. A nice example of collaboration between enthusiastic people!
I would like to contribute as well if you don't have any objection.
I have done few adaptations to the code to support new features:
- A TFT On Screen Keyboard (touch screen interaction) with limited keys supported but also a PRG loader menu!
- VGA output and TFT display simultaneously, using the TFT display as keyboard (the same image can boot in TFT mode only or in dual screen by pressing one of the custom keys)
For the second feature I had to reshuffle the pins of the TFT display so, at same time, I added support for an analog joystick (replacing your JOY2), JOY1 remaining as is (VGA pinout) and I also added 5 custom keys.
I have not tested but IEC, PS2 and USB should be working.
I shared a small video:
https://youtu.be/-psXHOKJ6W0
About the code modifications, the dual screen mode is built as a diversity of the VGA variant.
In settings :
#define VGA 1
#define VGATFT 1
As indicated, this needs the pinout adaptation (see teensy64.h and the small txt file I added in the code)
The on screen keyboard feature also work with your original TFT variant pinout.
(VGA and VGATFT undefined in settings.h)
It is a variant of the PS2 option (I reuse the key matrix of USB in keyboard.cpp, sorry for the confusion)
#define PS2KEYBOARD 1
#define OSDKEYBOARD 1
Please tell me how to share the code!
The biggest changes are in vic.cpp now split into vic8.cpp and vic16.cpp (VGA and TFT variants both present in same build) and of course teensy64.cpp. I also adapted the ILI9341 driver to support the touch screen and add some non DMA functions to draw.
The rest is a new file for the OSD keyboard.
I also added few functions to pause and resume the CPU core else non DMA functions for the TFT were too slow (non DMA access is required to handle the keyboard display, as the touch screen shares the same SPI bus.
J-M