CBS6000 Computer

Homebrew 8-bit computer system

Similar projects worth following

System Specifications

CPUMOS technology 6510 @ 0.96MHz
ROM8KB (contains bootloader)
PIO2x Complex interface adapter (CIA) : Has 16 I/O pins, a serial port and two timers
IO (other)ADC, UART, FSK modem, Line Printer, Seven segment display, Casette tape
PowerSingle 5V supply

What is the cbs6000?

The CBS6000 is an 6510-based system with lots of interface options including: ADC, UART, FSK modem, Line Printer, Seven segment display.
The system contains 128KB of ram as well as an 8kb eeprom which holds the firmware

Software overview

The operating system is a customized version of the woz monitor.This was the operating system for the Apple 1 computer made by Steve Wozniak.

It consists of a commandline and a hex editor.

Added features are:

ACIA input/output, casette load/save, serial load, printing to a line printer, bankswitching and a seven segment display driver. The operating system provides several useful system routines. These are available to user programs trough a jumptable at the start of the ROM.

Hardware overview

There are 4 parts that make up the computer. The first one being the main board. This board contains the cpu, ram, rom and address decoder. It also has the first CIA (Complex interface adapter) and a system clock generator which feeds a 1MHz clock signal to CIA#1 and CPU.

The second part is the I/O board which contains the rest of the peripherals:
2x ACIA, ADC, CIA#2, LED display, FSK modem and additional decoders for selecing the various devices.

The main board connects to the I/O board via a backboard connector. The I/O board and the main board have an I/O connector on the left side which connects to another backboard. This backboard contains additional level shifting and input protection.
Both the I/O and the main board receive power from the backboard.

CIA#1 has its two parallel ports, serial port and handshaking lines broken out to a connector on the left side of the computer.

I/O board

CIA#2 is used to drive the display and the unused pins are broken out fo a connector on the left side of the computer.

ACIA#1 is used for communication between the computer and the operator. The data transfer rate can go up to 57600 baud.

ACIA#2 is wired up to the FSK modem. This ACIA's clock line is driven by the clock output of the modem. The modem can generate baudrates up to 1200 baud. Because the fsk frequency is well within the audible range the signal can be recorded on casette tape and later played back to the input of the modem to recover the original data. The computer can load 120 characters from the casette tape per second. Therefore it is recommended to use ACIA#1 and a serial loader program for large programs, since ACIA#1 can transfer up to 5760 characters per second.

  • 1 × MOS6510 CPU
  • 2 × MOS6526 Timers, I/O, two wire interface
  • 2 × M6850 ACIA (better known as UART)
  • 1 × TCM3105N Modem
  • 1 × AT28C64B Eeprom for firmware storage

View all 10 components

  • Emulator debug features

    Koen van Vliet11/20/2015 at 23:28 0 comments

    There's a ton of new debug features in the emulator! I was porting [Ken Wessen]'s Assembler to the CBS6000 and I added debug features to help me figure out why my modifications to the program kept crashing it. After a day of porting and debugging I finally managed to assemble programs on the emulator.

    Here's a picture of the result of my hard work:

    As you can see there's a zero page monitor, register monitor, live disassembler, debug console, speed control and single-stepping. This weekend I will probably be prettifying the interface. The modified source for the assembler can be found here:

  • More about the emulator

    Koen van Vliet11/19/2015 at 13:51 2 comments

    The emulator is really starting to take shape. It has a terminal emulator, variable execution speed, single stepping (but no monitor yet), tcp socket for loading and saving files as well as connecting to the internet (soon.) The next items on the agenda are emulating the CIA , Bankswitching, Printer port, Seven segment display and Interrupts.

    I open-sourced the project, so you can have a look at it on my github page:

    Here's a screenshot of the emulator in action!

  • Emulating the CBS6000

    Koen van Vliet11/16/2015 at 23:40 0 comments

    Emulators are great for automated testing and debugging. Therefore I decided to write a CBS6000 computer emulator. I based mine off the 6502 emulator written by [Gianluca Ghettini] It is really quite simple to interface with the CPU emulator. It uses two callback functions for reading and writing in memory. In those functions I put my address decoder code.

    My emulator is still in early stages of development, but I already managed to boot the operating system. It boots the same binary as the one found in the CBS6000's EEPROM. Right now I am working on the terminal emulator. Right after that I will add a debugger which allows me to step trough programs one instruction at a time.

  • Ram unlocked. Achievement get.

    Koen van Vliet07/01/2015 at 14:56 0 comments

    I finally got around to implement stable bankswitching routines. I have a routine on the ROM that copies data from one ram bank to the other, so there can be executable code there before a switch occurs. If this were not the case any bank switching action in a user program would cause the system to crash.

    I also made new back-boards for the computer. These do the same, but instead of stacking the boards I layed them side by side for a flatter form-factor. This allows me to build these into a case with perhaps a keyboard on top. The biggest problem I faced with the old back-boards was the lack of space. The board on the left will have the (relatively) slow peripherals on it such as serial flash roms, realtime clocks, character display drivers and so on.

View all 4 project logs

Enjoy this project?



wilfredtak1970 wrote 02/22/2015 at 17:02 point

me too!

  Are you sure? yes | no

vongolachoksama wrote 02/22/2015 at 16:04 point

wanna see how this ends up!

  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