65C816 ECB SBC

newboard.jpg


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)
  • VGA3
  • Dual SD
  • DualDMA Disk (HDD/FDD)
  • Color VDU
  • VDU
  • SCG

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.

FileDescription
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)

system.jpg

boards/sbc/65c816_ecb_sbc/65c816_ecb_sbc.txt · Last modified: 2017/10/28 22:22 by danwerner
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0