65C816 ECB SBC
I have had this idea rattling around in my head for a 65816 ECB SBC for some time now – and I had some free time on a family trip, so I put form to that thought. With a tremendous amount of assistance from John Coffman, I am pleased to say the the 65C816 SBC is a reality.
I will be adding more documentation to this page, as the project progresses – I hope to get firmware running on the board with support for the RBC disk controllers and Video adapters.
For now, we have a ROM monitor (based on Supermon 816– big thank you to BCS technology for making this software free to use/modify) working that supports the following commands:
A — Assemble code C — Compare memory regions D — Disassemble code F — Fill memory region (cannot span banks) G — Execute code (stops at BRK) H — Search (hunt) memory region J — Execute code as a subroutine (stops at BRK or RTS) L -- Load a Motorola format S28 file into memory M — Dump & display memory range R — Dump & display 65C816 registers T — Copy (transfer) memory region > — Modify up to 32 bytes of memory ; — Modify 65C816 registers
I am working on building out hardware support in the BIOS. At the moment only Serial Read/Write, DISKIO V3 Floppy and On board RTC is supported.
Long Term I intend to have support in the BIOS for:
- DISKIO V3 (HDD/FDD)
- Dual SD
- DualDMA Disk (HDD/FDD)
- Color VDU
The memory map is:
000000 - 007FFF On Board RAM 008000 - 00FDFF On Board RAM or ROM - ROM can be software selectable to 32K or a choice of a 8 or 16K bank - bank size selectable in GAL equations 00FE00 - 00FE06 16550 UART 00FE07 - FE07 RTC & ROM SIZE SELECTION FLAG 00FE08 - 00FEFF Mapped to Z80 ports for ECB bus boards (IO) 00FF00 - 00FFFF BIOS and Hardware Vectors 00FF00 - 00FF70 Native mode jump table 00FF71 - 00FFEF Emulation Mode jump table 00FFF0 - 00FFFF Hardware Vectors 010000 - 07FFFF On Board RAM 080000 - FFFFFF Open to ECB Bus Current BIOS functions are: Long Call: FF00 LOUTCH - output char in A to serial port FF03 LINCH - get char from serial port into A FF08 LINCHW - get char from serial port into A (Blocking) FF0C LINITDISK - initialize storage device (supports DISKIO V3 Floppy only at the moment) FF10 LREADDISK - Read Disk Sector into BIOS buffer (supports DISKIO V3 Floppy only at the moment) FF14 LWRITEDISK - write Disk Sector from BIOS buffer (supports DISKIO V3 Floppy only at the moment) FF18 LWRITERTC - Write value to RTC register FF1C LREADRTC - Read value from RTC register Short Call: FF71 OUTCH - output char in A to serial port FF74 INCH - get char from serial port into A FF77 INCHW - get char from serial port into A (Blocking) FF7A INITDISK - initialize storage device (supports DISKIO V3 Floppy only at the moment) FF7D READDISK - Read Disk Sector into BIOS buffer (supports DISKIO V3 Floppy only at the moment) FF80 WRITEDISK - write Disk Sector from BIOS buffer (supports DISKIO V3 Floppy only at the moment) FF83 WRITERTC - Write value to RTC register FF86 READRTC - Read value from RTC register
The ROM file can be built with the Western Design Centers tool set that is available for free from the WDC web site. http://wdc65xx.com/wdctools-download-2/
Note that while these tools do have a couple of bugs that require careful attention to syntax, they appear to be generally usable. Both an assembler and C compiler are available.
All of the souce files as well as an assembled binary are in the ZIP file.
|KiCad Schematic||Schematic V1|
|PDF Schematic||Schematic V1|
|PDF Board||Board V1|
|U13 GAL source||GAL (U13) V1|
|U16 GAL Source||GAL (U16) V1|
|U17 GAL Source||GAL (U17) V1|
|BOM||BOM (excel format) – ensure U6 is 74HCT!!|
|SBC816ROM||Native Mode ROM monitor source code (Based on Supermon 816)|