The system boots from the 8 KB ROM, into which I burned a firmware which barely weights above 3Kb. It initializes the SD card using one of the two integrated 65C22 VIA, on which I implemented a bit-banged SPI protocol management.
Once the card is initialized, the system proceeds to initialize and read the file system, which is in FAT32 format.
From here, the system searches for a file called SYS.BIN, located in the root directory, and if it finds it, it loads it from address $0300 and executes it.
Currently, the firmware loaded from the card runs GS-DOS, a microkernel I wrote myself, which implements pseudo-DOS commands to manipulate memory, load a binary file into a specific location, and execute it. Typing the command 'MON' it exits and accesses the most classic and iconic system monitor: Wozmon, adapted for my system.
Once booted, GS-DOS disables the ROM, initializes the TMS9918A, prepares the keyboard scan (using the second VIA on the board), activates the bank register, and sets it to 1, freeing up 32 KB of contiguous space, located at the top of the address space, in the range $8000–$FFFF.
The bank register uses 15 different slots to move a 32 KB window across the 512 KB of available RAM. The bottom half of the memory address space is deliberately fixed so it can be accessed at any time.
In addition to zeropage and stack, it also contains the peripheral address space (I/O), located between $7F00 and $7FFF.
Software development is progressing more slowly than I'd like, but I managed to port MSBASIC and run some demos to take advantage of the TMS9918A and play a very popular song through the Commodore SID.
The latter represents the classic bottleneck, as it has a speed limit that prevents it from operating at frequencies above 1 MHz. A 65C22 can solve this problem, but it comes with a performance penalty and additional software complexity.
GS-X65 System Specifications:
- WDC 65C02 (1 - 10MHz).
- 512Kb 10ns RAM.
- 8 - 16 - 32KB ROM.
- WDC 65C51 115200 bps Serial Terminal Interface (over USB through an FTDI Chip adapter).
- WDC 65C22 #1 - FAT32 FS on SPI operated SD-Card; - Memory Banking.
- WDC 65C22 #2 - 8x10 matrix custom keyboard (External project); - 2 x Atari Joysticks.
- PICO9918 - An RPI2040 drop in replacement for the TI TMS9918A (External project).
- SIDKick Pico - A modern drop in replacement for the Commodore SID (External project).
- 5x Full BUS expansion ports.
Gabriele