My version of Atari 1088XEL has STM32F103C8T6 on board. Source for this chip can be very cheap “STM32blue pill” (STM32duino) module from China. The chip in this module can be fake- the firmware is small and can fit to smaller devices. If there will be plans for more complex firmware (SD card read and write, LCD/OLED info screen), then use the original device.
The firmware is based on STM32CubeMX USB CDC example project, firmware library 1.8.0. Due to some unknown changes in STM32 libraries, firmware is not working with newer versions of libraries.
All libraries used in this project are included in the archive. The generic gcc for ARM devices are used to compile source code. To those who do not want compile files- compiled binaries and hex files are in the archive.
Current version of the Atari 1088XEL USB SIO device:
USB CDC Atari 1088XEL firmware source code and hex file.
Supported hardware handshaking (RI, DSR) (not CTS – it is in the host driver level), also “no handshaking” mode.
If making firmware from source code and it was rebuild with cube, take note that cube breaks one file:
\Middlewares\ST\STM32_USB_Device_Library\Class\CDC\Inc\usbd_cdc.h
It makes:
#define CDC_HS_BINTERVAL 0x10U
#define CDC_FS_BINTERVAL 0x10U
#define CDC_CMD_PACKET_SIZE 8U
It must be:
#define CDC_HS_BINTERVAL 0x1U
#define CDC_FS_BINTERVAL 0x1U
#define CDC_CMD_PACKET_SIZE 10U
It is USB settings for “realtime” hardware hanshaking.