The saga of this cartridge :
Initially, I developed a cartridge based on a single RISC-V microcontroller, downloadable via USB using disk transfer mode. It worked, but the constant interruptions generated by the USB bus from the PC eventually crashed the MSX computer.
I therefore split the management of the USB bus and the handling of data to the MSX into two separate processors. This worked very well on my machine, but very inconsistently on the machine of the person testing my cartridge.
I then suspected issues like ground loops, power supply, etc. So, I developed a new cartridge with galvanic isolation. The result was no better.
I redesigned the cartridge, this time incorporating isolation precautions from the start, switched to the YMODEM protocol over a serial connection, which allows me to properly manage the sequence of operations, and chose a new processor from STMicro, a fast STM32. Alas, even on my own MSX computer, the cartridge refused to boot.
Following all these tests, which spanned two years after all, I determined that, in fact, trying to serve data at a frequency above 2MHz is not a good solution.
I could have tried the RP2040, but I already attempted to set up the development environment without success. For me, it's a bloated system that uses Microsoft's VS editor. Being allergic to Microsoft tools, I decided to go with an FPGA.
The idea this time was to use an internal processor within the FPGA to manage file download and FLASH programming, and also, crucially, to use the FPGA's internal logic to redirect the different data/address/control buses to the three elements: the internal processor, the MSX bus, and the bus to the FLASH. I figured that at least this way, the flash memory would be directly connected to the MSX bus.
I therefore chose FPGAs from Efinix because their prices are very affordable. I created an expansion board for the Efinix development board, containing the serial port, the flash memory, and also some SRAM. I also created an adapter board for the MSX computer bus. I connected everything, programmed the VHDL part to manage the various physical buses. I programmed the FPGA's internal processor to handle file reception via the YMODEM protocol. I loaded everything onto the development board.
I then downloaded a Zanac ROM into the system and started the MSX.
And voila:
Right from the first startup of the MSX, I successfully got the cartridge to boot. I then connected a USB keyboard through the adapter I also made to allow for this kind of thing, and was able to play without any problems. No issues, no crashes. I haven't shut down the system for a few days now, and I can still launch the game.
Something that seemed completely out of my reach just a few months ago has been achieved without much difficulty in the end. Result achieved just a few days before my year-end holidays. So, I can really switch my brain to OFF mode and have some truly relaxing holidays.
Happy Holidays and a Happy New Year to everyone.

Aucun commentaire:
Enregistrer un commentaire