Close
0%
0%

CBS6000 Computer

Homebrew 8-bit computer system

Similar projects worth following

The CBS6000 is a 6502-based computer I built back in 2014. Back then I took great interest in retro computing especially Commodore 64 computers. Some of these computers did not work, so they would be repaired or scrapped for parts. I had a spare 6510 CPU (6502 with some extra features), two 6526 CIA's (IO with timers) and assorted logic IC's. Combined with parts I could salvage from the dumpster at the college electronics lab I could make this microcomputer. The computer consists of a CPU board and an I/O board. The CPU board is a self-contained microcomputer and can work without the I/O board attached.

System Specifications

A quick overview of the computer specifications.

  • CPU: MOS Technology 6510 @ 0.96MHz
  • RAM: 128KB
  • ROM: 8KB (contains operating system)
  • Timers: 4x Timer with interrupt
  • IO: 16x GPIO, ADC, UART, USART, FSK modem, Line Printer, Seven segment display
  • Power: Single 5V supply

Software

The "operating system" is a customized version of "The Woz" Monitor created by Steve Wozniak for the original Apple 1 computer, which used the 6502 processor. This monitor program allows the user to view and alter the computer's memory and I/O registers. I have added drivers for the CBS6000 built-in peripherals

  • Serial input/output
  • Loading/saving memory to casette
  • Loading memory from serial port
  • Seven segment display output
  • Line printer

I placed operating system in quotes, because it lacks essential operating system functionality, such as a task scheduler.

Hardware

There are 4 parts that make up the computer.

  • Main CPU Board
  • I/O Board
  • Backplane
  • Interface Board

The CPU board is a self-contained microcomputer containing a processor, memory and some I/O. The IO is provided by a CIA (Complex interface adapter). The system clock is also generated on this board.

The I/O Board adds various interfacing options to the computer.

  • Two UARTs one for the command line interface and the other for the FSK modem. The command line interface runs at 57600 baud and can also be used for binary data transfer.
  • FSK modem works with an audio signal, which can be sent over telephone lines or can be used to access data on audio casette. It runs at 1200 baud.
  • Additional GPIO and Timers provided by a second CIA
  • LED Seven Segment Display controlled by the second CIA
  • 8-bit resolution Analog to Digital Converter

The main board connects to the I/O board via the Backplane. It distributes power and data trough the system.

The Interface Board contains level shifting and input protection for the I/O on the CPU Board and I/O board signals.

  • 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

  • She's back!

    Koen van Vliet10/20/2019 at 15:10 0 comments

    Today I fixed the damaged I/O board and I am happy to announce the CBS6000 is alive and rEAdY!

    First a bit of background. I built this computer back in 2014 while I was in college. Back then I took great interest in retro computing especially Commodore 64 computers. Some of these computers did not work, so they would be repaired or scrapped for parts. I had a spare 6510 CPU, two 6526 CIA's and assorted logic IC's. Combined with parts I could salvage from the dumpster at the college electronics lab I could make this microcomputer.


    The computer consists of a CPU board and an I/O board. The CPU board is a self contained microcomputer and can work without the I/O board attached. At some point the I/O board stopped working, preventing the CPU board to work whenever it was attached. For a few years this computer has been sitting on a shelf collecting dust due to an unknown fault in the wiring somewhere. Today I finally managed to pinpoint the fault to a single ground wire that had melted and become open circuit. I replaced it along with some of the other ground wiring for good measure. This solved the issue!

    I intend to tidy up the backplane, revise the power routing and perhaps develop peripherals for this computer. It is a miracle this thing works in the first place with the ratsnest wiring. I am glad I was able to restore it!

  • 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: https://github.com/keoni29/cbs6000/blob/master/user/krusader1.3CBS.asm

  • 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: https://github.com/keoni29/mos6502

    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] https://github.com/gianlucag/mos6502. 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 5 project logs

Enjoy this project?

Share

Discussions

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