Alternatively, join us on Discord.
You can help CodeWalrus stay online by donating here.

CBS6000 - an 8-bit 6510 computer

Started by Keoni29, December 20, 2014, 05:27:59 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.


December 20, 2014, 05:27:59 PM Last Edit: July 01, 2015, 02:36:45 PM by Keoni29
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

The operating system is a customized version of the woz monitor. Added features are:
ACIA input/output, casette load/save, serial load and a seven segment display driver.

Project page:

Current state:

Old news:
Spoiler: ShowHide

CBS6000 stands for Cartridge Based System 6000 (KB)
The original idea was to make the computer run code from cartridges, but that changed. Now the computer has a built in rom with a bootloader on it.

  • Cpu: MOS6510 @1MHz (base 2MHz divided /2)
  • Ram: 128KB (at the moment only 50k accessible)
  • Rom: 8KB
  • I/O: 6 pins built in cpu, 16 pins in CIA

Today I finished building and debugging the base-system on a piece of prototyping perfboard.

What's working?
The base-system consists of CPU, ROM, RAM and the bootloader software. Everything you need to make an LED blink! This was the first demo program I loaded on the computer.
What is not working yet?
I/O: I still have to wire up the CIA. After that I can make the I/O board with various devices such as a Digital-Analog converter and a Serial RS232 port.
If you like my work, why not give me an internet?

DJ Omnimaga

I thought CBS meant Columbia Broadcasting System? :P

Kidding aside this is coming along pretty nicely. Is the 6510 close to Atari and SNES architecture, by the way, or is it vastly different? Also do you have plans for external storage?


It uses the exact same CPU core as the atari2600. The 6510 can address more memory because it has more address pins. The NES uses a custom 6502 with a soundchip, I/O port and timers built in.
If you like my work, why not give me an internet?

DJ Omnimaga

Cool.I wonderif this could run ET if you hooked up a screen on this?


I'd have to wire up 2 additional IC's from an atari2600 as well as re-wire some of the address decoder for that. It could be done, but I don't intend to make this into a video game machine.
If you like my work, why not give me an internet?

DJ Omnimaga

Aah ok. Having to hook up that Atari hardware would defeat the point of making 100% custom computer running Atari games anyway x.x

However, the world's laws require that every device that has a screen runs DOOM or a clone of it. :P


So therefore this device does not have a screen :P
If you like my work, why not give me an internet?

DJ Omnimaga

Quote from: keoni29 on December 21, 2014, 09:35:40 AM
So therefore this device does not have a screen :P
You are scrapping the screen feature so you don't have to get DOOM to run on it? :trollface:


Exactly :)

I just installed the chip that handles all I/O operations. It has 16 programmable I/O pins as well as some handshaking lines and a serial port.
If you like my work, why not give me an internet?

DJ Omnimaga


I wired up the interrupt line from the CIA to the cpu. I have been experimenting with the CIA timers. You can make them trigger an interrupt. I made another blinky LED program that uses timers.

For those interested:
.const DISROM = 16
.const BANKSEL = 32
.const CIA = $D000
.const ledpin = 1
.const delay = 6553//5

.const TAL = CIA + $4
.const TAH = CIA + $5
.const ICR = CIA + $D
.const CRA = CIA + $E
.const CRB = CIA + $F

.pc = $0200

init: lda #$FF
sta CIA + 3 // Set port to all Outputs

lda #DISROM // Disable the ROM
sta $00
ora $01
sta $01

lda #<isr // Set interrupt vector
sta $FFFE
lda #>isr
sta $FFFF

lda #<delay // Set timer delay
sta TAL
lda #>delay
sta TAH
lda #%10000001 // Enable timer A underflow interrupts
sta ICR
lda #%00010001 // Start timer in continuous mode
sta CRA
ldy #0
cli // Enable interrupts
loop: jmp loop

isr: ldx ICR // Acknowledge interrupt
sty CIA + 1 // Blink LED
If you like my work, why not give me an internet?

DJ Omnimaga

Darn this ASM looks different from Z80 ASM for sure. Again I don't really understand Z80 ASM but I recognizes certain instructions so it doesn't give me as much of a brain aneuvrism as other ASM forms. >.<

Good thing on those old CPUs you don't have to write your ASM using only binary. O.O


Welp, this looks pretty cool, I like the board color. Can we see the backside tho ? :P


The address and data bus are tidy, but the control lines go all over the place because I built my own address decoder. I could have used programmable logic for the decoder, but I don't have those.
If you like my work, why not give me an internet?


Wow that's quite some wiring and solder routing work. O.O

At least it doesn't look like this :

Powered by EzPortal