Close
0%
0%

HBC-56: 65C02 + TMS9918A on a backplane

HBC-56
A homebrew 8-bit computer with a backplane. Initially with a 65C02 CPU card, a TMS9918A VDP and dual AY-3-8910 audio.

Public Chat
Similar projects worth following
A custom 8-bit backplane build initially running a 65C02 CPU and includes a TMS9918A VDP.

Introduction

After building a breadboard CPU and getting it to run Snake, I decided to do something different. 

I'd done some coding for the Commander X16, so was interested in starting out with a 6502-based homebrew computer. My childhood machine was a TI-99/4A, so wanted to try out a TMS9918A for video output.

All source code, schematics and tools I've built for the project are available on GitHub: github.com/visrealm/hbc-56


Hardware

I've always wanted to do a backplane build and also wanted to try my have at PCBs, so started by designing a custom backplane and custom proto cards for it. The backplane consists of a 56-pin bus, hence the name: HBC-56 (HomeBrew Computer 56)

So far, I've built up 7 cards on the proto boards:

  • Three-way clock module
  • 65C02 CPU card
  • RAM/ROM card with 32KB of each
  • LCD card (with support for graphics LCD)
  • TMS9918A display card
  • Dual AY-3-8910 sound card
  • PS/2 keyboard and dual NES controller card

With help from @PCBWay Official , the cards are now being gradually replaced with custom PCB's such as this new 65C02 CPU card.


Software

I have written an initial Kernel to bootstrap the machine and help with interfacing with the various hardware modules. It is also possible to run the machine raw (without the kernel)

The project includes a number of example programs and games (Invaders, Breakout) to test out the various hardware modules. It also includes a port of EhBASIC and an Invaders clone (WIP).

All of the software is available on GitHub: github.com/visrealm/hbc-56


Emulator

To aid in software development, I have also build an Emulator for this machine. 

The emulator includes support for all of the hardware modules, including the TMS9918A, the LCD card (in character LCD or graphics LCD mode), input and audio. It also includes an integrated debugger which allows you to step through disassembled code with labels.

You can try the emulator in your browser here: https://visrealm.github.io/hbc-56/emulator/wasm

Full details on the emulator here: github.com/visrealm/hbc-56/emulator


Videos

tms9918a_vdp_v0_1_sch.pdf

TMS9918 card schematic

Adobe Portable Document Format - 174.45 kB - 12/08/2021 at 00:31

Preview
Download

ramrom_v0_1_sch.pdf

RAM/ROM card schematic

Adobe Portable Document Format - 149.01 kB - 12/08/2021 at 00:31

Preview
Download

lcd_v0_1_sch.pdf

LCD card schematic

Adobe Portable Document Format - 100.02 kB - 12/08/2021 at 00:31

Preview
Download

clock_v0_1_sch.pdf

Clock card schematic

Adobe Portable Document Format - 111.30 kB - 12/08/2021 at 00:31

Preview
Download

6502_v0_1_sch.pdf

6502 CPU card schematic

Adobe Portable Document Format - 116.27 kB - 12/08/2021 at 00:30

Preview
Download

View all 10 files

  • New TMS9918A card​

    Troy Schrapel4 days ago 0 comments

    New video covering the design, assembly and testing of my new TMS9918A card just landed.

    Thanks to @PCBWay Official 

  • New 65C02 card

    Troy Schrapel05/17/2022 at 01:43 0 comments

    My new 65C02 CPU card. Thanks to  @PCBWay Official who has provided me with a handful of custom PCBs to replace my old hand-wired cards.

    I have captured the trials and tribulations of converting the old hand-wired card to a custom PCB in the following video: 

    As always, schematics and code are in my GitHub repository.

  • Five new custom PCBs

    Troy Schrapel05/02/2022 at 06:44 0 comments

    A new batch of five different PCBs just arrived for my HBC-56 homebrew computer courtesy of PCBWay. They look fantastic. Time to start assembling. 

    The five new designs (front and back from left to right)

    • RAM/ROM with shadow RAM
    • 65C02 / VIA / SPI / Interrupt controller
    • TMS9918A VDP
    • Dual AY-3-8910 audio
    • PS/2 keyboard + dual NES controller

    TMS9918A VDP card new versus old

    Close-up view of the dual AY-3-8910 sound card.

    #hbc56 #homebrew #pcbway

  • 65C02 / TMS9918A debugger improvements

    Troy Schrapel03/30/2022 at 04:39 0 comments

    More tinkering on the emulator for my 65C02 / TMS9918A homebrew build has resulting in many improvements to the debugger, including being able to step through the source assembly code, set and clear breakpoints,  break on interrupts, examine variables and constants, RAM and VRAM, click to labels, etc.

    You can try it online here: https://visrealm.github.io/hbc-56/emulator/wasm/?rom=breakout

  • Web-based emulator available

    Troy Schrapel03/02/2022 at 02:47 0 comments

    You can now run BASIC, Invaders or my Breakout clone in your browser. All 6502 / TMS9918A code is available too. A couple of limitations:

    1. Requires a keyboard
    2. No audio in the browser emulator

    Try it here: Breakout on the HBC-56

  • Breakout clone for my 6502 / TMS9918A

    Troy Schrapel02/28/2022 at 07:34 0 comments

    I've been working on some TMS9918A content for YT and in the process, threw together a Breakout clone for my HBC-56.

    As always, all source code is available: https://github.com/visrealm/hbc-56

  • Memory monitor can load games

    Troy Schrapel02/02/2022 at 23:43 0 comments

    I've added a MC68B50 UART to my HBC-56 and have started developing a memory monitor to run on it. Since the memory monitor can write to memory using hex strings, I've modified ACME Assembler to output in Intel HEX format and transform the output to memory monitor commands.

    The result? Can now load programs (games) over serial. 

    I've also added UART support to my emulator and can connect to both the emulator and the real machine using PuTTY.

  • PS/2 Keyboard and dual NES controller card

    Troy Schrapel01/15/2022 at 10:56 0 comments

    I've finally gotten around to building out a card to hold my PS/2 keyboard controller and dual NES controller ports. This circuit has been hanging off the front of my build on breadboards for months!

  • BASIC for my 6502

    Troy Schrapel12/12/2021 at 00:24 0 comments

    So, now I have a keyboard, I decided to do something to make use of it. BASIC seems appropriate, so I "ported" EhBASIC to my system, including TMS9918, character LCD and 128x64 graphics LCD drivers.

    In doing so, I discovered a bug in my emulator. The BIT opcode in the 6502 library I was using didn't set the processor flags correctly. So, I tracked that down and fixed it.

    All the code is available and you can follow along using my HBC-56 emulator (also in the GitHub repo).

    If you've been thinking about BASIC for your 6502 build, it's not too hard to do.

  • A spin 'round my 6502 backplane and various cards.

    Troy Schrapel12/05/2021 at 04:29 0 comments

    I've had a number of people asking for a better look at the backplane and cards. Here's a quick spin around Troy's HBC-56. A quick tour...

View all 13 project logs

Enjoy this project?

Share

Discussions

bradley.bell wrote 09/30/2021 at 09:25 point

Looks nice, I'm starting something similar, and i may borrow some of these concepts

  Are you sure? yes | no

Troy Schrapel wrote 10/05/2021 at 03:55 point

Thanks, Bradley. All the best with your build.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates