The C64Nano is a port of some MiST and
MiSTer components of the
C64 FPGA core for the
Tang Nano 20k FPGA board with a new VHDL top level and HDMI Video and Audio Output.
It has also been ported to the Tang Primer 25K (Gowin GW5A-25) and Tang Mega 138k (Gowin GW5AST-138) too.
Be aware that the VIC20 FPGA core had been ported too in similar manner (link).
Original C64 core by Peter Wendrich
All HID components and BL616 MCU µC firmware by Till Harbaum
c1541 by https://github.com/darfpga
Features:
- PAL 800x576p@50Hz or NTSC 800x480p@60Hz HDMI Video and Audio Output
- USB Keyboard via Sipeed M0S Dock BL616 RISC-V µC
- USB Joystick via µC
- USB Mouse via µC c1351 Mouse emulation
- legacy D9 Joystick (Atari / Commodore digital type) MiSTeryNano shield
- Joystick emulation on Keyboard Numpad
- Dualshock 2 Controller Gamepad Keys & Stick as Joystick
- Dualshock 2 Controller Gamepad Sticks as Paddle Emulation (analog mode)
- emulated 1541 Diskdrive on FAT/extFAT microSD card with parallel bus Speedloader Dolphin DOS 2. GER manual
- c1541 DOS ROM selection
- Cartridge ROM (*.CRT) loader
- Direct BASIC program (*.PRG) injection loader
- Tape (*.TAP) image loader C1530 Datasette
- Loadable 8K Kernal ROM (*.BIN)
- VIC-II revision and 6526 / 8521 selection
- SID revision 6581 or 8580 selectable
- 2nd SID (Stereo) for Tang Primer 25K and Tang Mega 138K
- emulated RAM Expansion Unit (REU) or GeoRAM
- On Screen Display (OSD) for configuration and loadable image selection (D64/G64/CRT/PRG/BIN)
- Physical MIDI-IN and OUT MiSTeryNano shield
- RS232 Serial Interface VIC-1011 or UP9600 mode to Tang onboard USB-C serial port.
HID interfaces aligned in pinmap and control to match MiSTeryNano project's bl616 misterynano_fw.
Basically BL616 µC acts as USB host for USB devices and as an OSD controller using a SPI communication protocol.
Note PROJECT IS STILL WORK IN PROGRESS
The installation of C64 Nano on the Tang Nano 20k board can be done using a Linux PC or a Windows PC
(Instruction).
See Tang Primer 25K
See Tang Mega 138K
Emulated 1541 on a regular FAT/exFAT formatted microSD card including parallel bus Speedloader Dolphin DOS.
Copy a D64 Disk image to your sdcard and rename it to disk8.d64 as default boot image.
Add further D64 or G64 images as you like and insert card in TN slot. Power Cycle TN. LED 0 acts as Drive activity indicator.
Disk directory listing: (or F7 keypress)
LOAD"$",8
LIST
Load first program from Disk: (or just LOAD)
LOAD"*",8
RUN
c1541 DOS ROM to be selected from OSD (default Dolphin DOS, CBM DOS or other)
In case a program don't load correctly select via OSD the factory default CBM DOS an give it a try.
Cartridge ROM can be loaded via OSD file selection.
Copy a *.CRT to your sdcard and rename it to c64crt.crt as default boot cartridge ROM.
Prevent cartridge load at boot or for Detach Cartrige OSD CRT selection No Disk , Save settings and System Cold Boot.
A BASIC Program *.PRG file can be loaded via OSD file selection.
Copy a *.PRG to your sdcard and rename it to c64prg.prg as default boot basic program.
Prevent PRG load at boot by OSD PRG selection No Disk , Save settings and Reset.
A Tape *.TAP file can be loaded via OSD file selection.
In order to start a tape download select CBM Kernal (mandatory) and type: LOAD
The file is loaded automatically as soon as file selected via OSD (no need to press PLAY TAPE button).
Screen will blank for several seconds and then display briefly the filename of the to be loaded file.
It will blank afterwards till load completed. I will take time...
Copy a *.TAP to your sdcard and rename it to c64tap.tap as default boot tape.
Prevent TAP load at boot or for Tape unload OSD TAP selection No Disk , Save settings and Reset.
The available Tape Sound can be disabled from OSD.
Dolphin DOS 2.0 is the power-up default Kernal.
Kernal ROM files *.BIN can be loaded via OSD selection.
Copy a 8K C64 Kernal ROM *.BIN to your sdcard and rename it to c64kernal.bin as default boot Kernal.
Prevent Kernal load by OSD Kernal BIN selection No Disk and Save settings and do a power-cyle of the board.
For those programs the require a RAM Expansion Unit (REU) it can be activated by OSD on demand.
Playing Sonic the Hedgehog V1.2
Enable REU, and load the PRG.
Playing around with GEOS
Enable REU, select c1541 CBM DOS ROM and load the PRG.
- S2 keep pressed during power-up for programming Flash
- S1 reserved
invoke by F12 keypress
- Reset
- Cold Reset + memory scrubbing
- Audio Volume + / -
- Scanlines effect %
- Widescreen activation
- HID device selection for Joystick Port 1 and Port 2
- REU activation
- c1541 Drive disk image selection
- c1541 Disk write protetcion
- c1541 Reset
- c1541 DOS ROM selection
- MIDI configuration
- Pause when OSD open
- PAL / NTSC Video mode
- VIC-II revision, 6526 / 8521 and SID 6561/8580 selection
- SID Filter selection
- GEOram activation
- Loader (CRT/PRG/BIN/TAP) file selection
legacy single D9 Digital Joystick. OSD: Retro D9
or
USB Joystick(s). OSD: USB #1 or USB #2
or
Gamepad. OSD: DualShock
stick digital for Move and Left L1 or Right R1 shoulder Button for Trigger or following Pad controls:
Buttons | - | - |
---|---|---|
Left L1/R1 Trigger |
triangle button Up |
. |
square button Left |
- | circle button Right |
- | cross button Down |
- |
or Keyboard Numpad. OSD: Numpad
0 Trigger |
8 Up |
- |
4 Left |
- | 6 Right |
- | 2 Down |
- |
or Mouse. OSD: Mouse
USB Mouse as c1351 Mouse emulation.
or Paddle. OSD: Paddle
Dualshock 2 Sticks in analog mode as VC-1312 Paddle emulation.
Left L1 / L2 and Right R1 / R2 shoulder Button as Trigger
You have first to set the DS2 Sticks into analog mode by pressing the DS2 ANALOG button. Mode indicated by red light indicator.
Configure DIGITAL mode (press ANALOG button again) when using the Joystick mode agin. OSD: DS2
LED | function | TN20K | TP25K | TM138K |
---|---|---|---|---|
0 | c1541 activity | x | x | x |
1 | D64 selected | x | - | x |
2 | CRT seleced | x | - | x |
3 | PRG selected | x | - | x |
4 | Kernal selected | x | - | x |
5 | TAP selected | x | - | x |
Solid 'red' of the c1541 led after power-up indicates a missing DOS in Flash
Multicolor RGB LED
- green all fine and ready to go
- red something wrong with SDcard / default boot image
- blue µC firmware detected valid FPGA core
- white -
Type of MIDI interface can be selected from OSD.
There is support for Sequential Inc., Passport/Sentech, DATEL/SIEL/JMS/C-LAB and Namesoft
You can use a MiSTeryNano MIDI shield to interface to a Keyboard.
The Tang onboard USB-C serial port can be used for communication with the C64 Userport Serial port in VIC-1011 or UP9600 mode.
Terminal programs need the Kernal serial routines therefore select via OSD the CBM Kernal rather than default DolphinDOS.
For a first start use UP9600 mode and a Terminal program like ccgms and on the PC side Putty with 2400 Baud.
Prototype circuit with Keyboard can be powered by Tang USB-C connector from PC or a Power Supply Adapter.
Source code can be synthesized, fitted and programmed with GOWIN IDE Windows or Linux.
Alternatively use the command line build script gw_sh.exe build_tn20k.tcl, build_tp25k.tcl or build_tm138k.tcl
see pin configuration in .cst configuration file
Pinmap TN20k Interfaces
Sipeed M0S Dock, digital Joystick D9 and DualShock Gamepad connection.
Pinmap D-SUB 9 Joystick Interface
Joystick pin | Tang Nano pin | FPGA pin | Joystick Function |
---|---|---|---|
1 | J6 9 | 28 | Joy3 RIGHT |
2 | J6 11 | 25 | Joy2 LEFT |
3 | J6 10 | 26 | Joy1 DOWN |
4 | J5 12 | 29 | Joy0 UP |
5 | - | - | POT Y |
6 | J5 8 | 27 | FIRE B. |
7 | n.c | n.c | 5V |
8 | J5 20 | - | GND |
9 | - | - | POT X |
Pinmap Dualshock 2 Controller Interface
DS pin | Tang Nano pin | FPGA pin | DS Function |
---|---|---|---|
1 | J5 18 | 71 MISO | JOYDAT |
2 | J5 19 | 53 MOSI | JOYCMD |
3 | n.c. | - | 7V5 |
4 | J5 15 | - | GND |
5 | J5 16 | - | 3V3 |
6 | J5 17 | 72 CS | JOYATN |
7 | J5 20 | 52 MCLK | JOYCLK |
8 | n.c. | - | JOYIRQ |
9 | n.c. | - | JOYACK |
In order to use this Design the following things are needed:
Sipeed M0S Dock
Sipeed Tang Nano 20k
or Sipeed Tang Primer 25k
and PMOD DVI
and PMOD TF-CARD
and PMOD SDRAM
and M0S PMOD adapter
or ad hoc wiring + soldering.
or Sipeed Tang Mega 138k
and PMOD SDRAM
and PMOD DS2x2
and M0S PMOD adapter
microSD or microSDHC card FAT32 formatted
TFT Monitor with HDMI Input and Speaker
HID and Gamecontrol Hardware option | TN20k needs | alternative option | Primer 25K | Mega 138K |
---|---|---|---|---|
USB Keyboard | USB-C to USB-A adapter | 4 port mini USB hub | x | x |
USB Joystick(s) | 4 port mini USB hub | - | x | x |
USB Mouse | 4 port mini USB hub | - | x | x |
Commodore/Atari compatible retro D9 Joystick | MiSTeryNano shield | D-SUB 9 M connector, breadboard to wire everything up, some jumper wires | - | - |
Dualshock 2 Controller Gamepad | Gamepad Adapter Board (Sipeed Joystick to DIP) respectively PMOD DS2x2 |
breadboard to wire everything up and some jumper wires | - | x |