CodeWalrus

Development => Hardware => Topic started by: Keoni29 on December 20, 2014, 05:27:59 PM

Title: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 20, 2014, 05:27:59 PM
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:
http://8times8.eeems.me/project/computers/65xx/cbs/

Current state:
http://codewalr.us/index.php?topic=116.msg17284#msg17284

Old news:
[spoiler]
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.
Specs:
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.
[/spoiler]
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on December 20, 2014, 05:44:14 PM
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?
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 20, 2014, 06:33:44 PM
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.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on December 20, 2014, 09:19:21 PM
Cool.I wonderif this could run ET if you hooked up a screen on this?
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 20, 2014, 11:10:18 PM
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.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on December 21, 2014, 12:20:52 AM
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
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 21, 2014, 09:35:40 AM
So therefore this device does not have a screen :P
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on December 21, 2014, 05:43:38 PM
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:
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 21, 2014, 10:50:45 PM
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.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on December 22, 2014, 12:34:09 AM
Cool to hear :D
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 22, 2014, 09:50:12 PM
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
iny
sty CIA + 1 // Blink LED
rti
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on December 23, 2014, 11:20:52 AM
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
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: novenary on December 23, 2014, 08:05:45 PM
Welp, this looks pretty cool, I like the board color. Can we see the backside tho ? :P
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 23, 2014, 08:18:13 PM
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.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: novenary on December 23, 2014, 08:21:18 PM
Wow that's quite some wiring and solder routing work. O.O

At least it doesn't look like this :
(http://upload.wikimedia.org/wikipedia/commons/d/d1/Computerplatine_Wire-wrap_backplane_detail_Z80_Doppel-Europa-Format_1977.jpg)
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on December 23, 2014, 10:08:28 PM
ROFL at that pic Streetwalrus. :D Even in Keoni's pic I would have an hard time remembering what wire goes where and not accidentally desoldering the wrong one, even if I looked in front of the board.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Duke "Tape" Eiyeron on December 23, 2014, 10:43:30 PM
You say that but when it comes to gigantic uncommented source code, you directly know what to do! :p
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: novenary on December 23, 2014, 10:45:03 PM
I guess source code is easier to mess with than hardware. :P
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 24, 2014, 12:06:51 AM
Back in the days engineers did not have access to FPGA technology, so if they needed a custom chip and it was not made yet they built their own simulator board with loose chips and lots of wire. That's probably what that board is, Streetwalrus. I am not using colored wires, so yeah, there is a fair bit of probing and guessing involved in changing the wires around :P

Quote from: Eiyeron on December 23, 2014, 10:43:30 PM
You say that but when it comes to gigantic uncommented source code, you directly know what to do! :p
What I usually do is wire up all pins with long wire and bundle them up with labels on each bundle, so it was somewhat commented. Then I start soldering those wires to where they need to go.

Quote from: Streetwalrus on December 23, 2014, 10:45:03 PM
I guess source code is easier to mess with than hardware. :P
Sourcecode is definitely easier to mess with than hardware, but it can be a pain in the ass to discover software bugs. The hardware on this device was pretty straightforward (in my experience.)

I hooked up a little serial digital to analog converter to the serial port. I can play 256 byte long audio samples now (which is just long enough to generate clicks :P). I will try to make the max length 65536 bytes tomorrow.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on December 24, 2014, 03:03:31 AM
Quote from: keoni29 on December 24, 2014, 12:06:51 AM
Back in the days engineers did not have access to FPGA technology, so if they needed a custom chip and it was not made yet they built their own simulator board with loose chips and lots of wire. That's probably what that board is, Streetwalrus. I am not using colored wires, so yeah, there is a fair bit of probing and guessing involved in changing the wires around :P

I wonder if that wasn't what they did with Space Invaders arcade machines at first? :P
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 24, 2014, 09:17:46 AM
I believe early arcade boards such as pong used discrete state-machines. Things like space-invaders probably used a cpu and some off-the-shelf video chip.

Computers like the C128 used many custom chips. Those were first build on large wirewrapped boards.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 24, 2014, 12:12:22 PM
Original post:
http://8times8.eeems.me:81/blog/?thread=12

Muhahahahahaha
The cbs6000 is making some noise! I hooked up a digital to analog converter to the serial port and wrote some software that plays back sound data in ram. Almost the entire first 64k bank is filled up for about 5 seconds worth of 8000 bytes/sec 8 bit audio.
https://www.youtube.com/watch?v=lt1eCsibU2E
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: pimathbrainiac on December 24, 2014, 12:16:42 PM
And here I was expecting Rickroll...

That was really awesome. I look forward to progress in the future.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 24, 2014, 12:24:05 PM
I don't have quite enough memory for that right now :P
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: pimathbrainiac on December 24, 2014, 12:25:33 PM
All you needed was the drum fill at the beginning and our minds would do the rest.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on December 24, 2014, 05:16:24 PM
This almost sounds like the laugh from Lunar Silver Star Story Complete on the PS1. :P Awesome by the way :)
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 25, 2014, 01:24:05 AM
It's the only 8000Hz 8 bit mono sample I could find on the web. It's a public domain audio fragment iirc.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on December 25, 2014, 01:34:40 AM
Oh ok lol. Would you mind if I gave you a sample of one of my songs instead? :P

Audacity can generate such audio, but I don't know if you need a WAV format in particular.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 25, 2014, 08:33:21 AM
Cant get audacity to work oj my pc. Probably a pulseaudio issue.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on December 25, 2014, 01:18:25 PM
Oh I was planning to convert the file myself. Hence why I asked what Wav format your device handled.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 25, 2014, 04:27:33 PM
I need raw uncompressed 8 bit mono PCM @8000Hz samplerate. Max filesize is 55k
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on December 26, 2014, 12:10:30 AM
Would this unsigned 8 bit PCM do? :P
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 26, 2014, 12:16:06 AM
This still has the WAV header in it. Could you provide me with a headerless file?
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on December 26, 2014, 03:58:07 AM
How would I do that?
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 26, 2014, 08:39:53 AM
There is an option to export headerless files in audacity. Save a file as uncompressed and go to options. Then select RAW(header-less)
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on December 26, 2014, 09:11:08 AM
What about this?
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 26, 2014, 02:50:07 PM
Quote from: DJ Omnimaga on December 26, 2014, 09:11:08 AM
What about this?
Thanks! I will test it on hardware in a bit.

I made a debug routine. It's an interrupt service routine that prints human readable info about the CPU state.
Sample output:
A=03,X=08,Y=00,P=34,S=FB,PC=0240
It can be called using a brk instruction or by pulling the IRQ pin low. I want to change this to the NMI because I still want to be able to use interrupts.
I want to make it elaborate on the status flags. It will explain what every flag does like so:
Negative number, BRK, INT disabled, Decimal mode enabled

https://raw.githubusercontent.com/keoni29/cbs6000/master/src/main/debug.asm

Edit: I finally fixed a bug in the debugger that prevented it from outputting characters occasionally. I was simply sending characters too fast.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on December 26, 2014, 05:53:50 PM
Ooh nifty :D. By the way lda is kinda like ld in Z80, right? I also can't wait to hear how my sound sample sounds like on your hardware device. Do you think longer samples could be done?
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 26, 2014, 07:08:31 PM
It can be done, but it would require bankswitching and/or streaming from a storage device such as a flash chip or sd card.

Edit: Just tried a new kind of digital to analog converter: a bunch of resistors tied to the I/O port. The audio quality is about the same and it takes much less cycles compared to the serial DAC method.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on December 26, 2014, 10:26:01 PM
Aaah ok, I sometimes don't realize how limited memory is XD. Still, good job :)
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 29, 2014, 11:14:29 AM
I wrote a faster bootloader that uses the serial port of the CIA instead of a software-defined serial port. With the old bootloader it took about a minute to send 55kb to the computer. With the new one this takes less than 5 seconds.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on December 29, 2014, 02:28:39 PM
Wow that's fast! By the way is it the time it takes to startup the computer as well or does it startup instantly like non-TI calculators?
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on December 29, 2014, 08:27:39 PM
It does not have an operating system, so loading depends on the size of the file you send to it. The bootloader is ready to receive data a few miliseconds after turning it on.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: novenary on December 29, 2014, 09:49:36 PM
Wow that's some crazy awesome stuff right there Keoni. o.o
ALL HAIL THE KEONI !
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on January 28, 2015, 12:40:25 PM
I am now populating the I/O board. The board connects via a system bus connector to the cpu. The first chip I put on there is a UART. This allows for bi-directional serial communication with a terminal/PC.

Edit: I just tested it and the transmitter seems to work fine. I just sent: Hello World :D
Edit2: Both sending and receiving characters works. The input is buffered in a 64 byte long buffer. It stops accepting bytes when the buffer is full.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on January 29, 2015, 07:34:01 AM
Nice to see you back in action. :D This is looking nicer and nicer. Are you using those chips you got in an huge bag and showed to us on Telegram earlier?
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on January 29, 2015, 12:15:36 PM
Yes, I found a lot of UART chips. I used one for the serial communication in the CBS. I might add more things such as an Analog to Digital converter and an FSK modem.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on January 29, 2015, 03:19:10 PM
Internet capabilities would be great. :D I wonder what kind of use you could make of this computer online? :)
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on January 29, 2015, 05:29:01 PM
I just managed to port a modified version of the famous WOZ monitor. The original was written by Steve "the woz" Wozniak in the 70's for the Apple I. I found  a version with some enhancements and I modified it to work on my system. It allows me to read and change bytes in memory as well as loading Intel Hex files from the PC.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on January 29, 2015, 08:23:00 PM
Do you need to use that for pretty much everything including changing the screen content?
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on January 30, 2015, 12:16:47 AM
The woz monitor is used for entering programs in the machine as well as troubleshooting I/O devices. This monitor will be very useful for when I hook up more peripherals such as analog to digital converters, video and audio chips and maybe a disk controller or casette interface.

To read from memory:
Type 0200(return)
Get 0200:FF
To write to memory:
Type 0200:AB(return)
Get 0200:FF (previous value)
You can also do block reads and writes, execute programs and more fancy stuff.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on January 30, 2015, 06:47:58 AM
Ah ok thanks for the info. :) Keep us updated with your finds and progress :)


and Herocore <.<
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 06, 2015, 11:55:02 PM
I have worked for 10 hours today on a project to show off at school this saturday. It's a wfrng with the cbs as the brain, phone dial as input and seven segment displays as output. I will show the result as soon as it's done! (I hope it's done in time)
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on February 07, 2015, 12:15:07 AM
Interesting, I hope you can manage to finish this in time. :)
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: aetios on February 09, 2015, 08:13:37 AM
oh, that's cool Keoni :D You gotta show that to me when we meet up next time :)
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 09, 2015, 09:40:43 PM
I kinda made it in time. The school was open to public from 10 AM till 2 PM. I finished programming, debugging and soldering at 12PM and rushed to school. I arrived around 12:45 so the day was almost over, but there were still some people around who got to try my computer. 3 people guessed the number :)

Last sunday I added a new feature: The phone rings when you guess the number! I could not add this feature in time because it required some (relatively) high voltage to be switched on and off.

Today I added 16 additional I/O pins, more handshake lines and an Analog to Digital converter I got from the lab at school.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on February 09, 2015, 10:37:21 PM
That is awesome. :D You should put the video you showed me on Youtube :)
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 09, 2015, 11:03:24 PM
Will do in a bit. I want to add some more features to the I/O board until I cant stuff any more on it and then I will make a new demo for it.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 11, 2015, 08:19:45 AM
Stacked an I/O board on top. Total I/O including the main board:
32 I/O pins
serial RS232
2x SPI-like port
4 16 bit timer/counters
4 handshaking lines
8 bit Analog to Digital converter
6 digit seven segment display

(https://www.omnimaga.org/index.php?action=dlattach;topic=21511.0;attach=18509;image)

(https://www.omnimaga.org/index.php?action=dlattach;topic=21511.0;attach=18510;image)
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on February 11, 2015, 05:24:05 PM
Ooh this is looking cooler and cooler. You should design a case for it :D
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 12, 2015, 04:27:35 PM
I designed it so it does not require a case. I accidentally dropped it from my desk and it was still running without problems.

I tested the FSK modem chip and I can confirm that sending data works! There are a couple of glitches, but those are probably because of the low bitrate I used for recording the audio to my pc.

Listen to audio sample here. (http://codewalr.us/index.php?action=dlattach;topic=116.0;attach=168)

minimodem -f file.wav --rx 1200
### CARRIER 1200 @ 1200.0 Hz ###

### NOCARRIER ndata=1 confidence=2.883 ampl=0.166 bps=1194.03 (0.5% slow) ###
### CARRIER 1200 @ 1200.0 Hz ###

### NOCARRIER ndata=1 confidence=3.147 ampl=0.165 bps=1194.03 (0.5% slow) ###
### CARRIER 1200 @ 1200.0 Hz ###

### NOCARRIER ndata=1 confidence=3.282 ampl=0.168 bps=1194.03 (0.5% slow) ###
### CARRIER 1200 @ 1200.0 Hz ###
CBS Computer
CBS Computer
CBS COmputer
CBS Computer
CBS Computer
BS Computer
CBS Computer
BS Compu|er
CBS om`uter
CBS COmputer
CBS Computer
CBS CoMpu|er
CBS Computer
CBS Computer
BS Computer
CBs COm`uter
CS Computer
CBS Computer
CBS Computer
CBS Computer
CBSCompu|er
CBS Com`uter
CBSCNmputer
�BS Computer
CBS CoMputer
CBS Computer
CBS Compute
CBS Computer
CBS Computer
CBSComputer
CBS Compu|er
CBSComputer
CBS Com�uter

### NOCARRIER ndata=476 confidence=2.697 ampl=0.162 bps=1173.71 (2.2% slow) ###
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on February 12, 2015, 07:45:11 PM
Haha I haven't heard this dial-up sound in a while. The last time I did was at the Subway restaurant when paying with my debit card a few years ago. I believe it did it when faxing stuff too, right?
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Duke "Tape" Eiyeron on February 12, 2015, 07:55:05 PM
Th noise part sounds a lot like Harder Better Faster Stronger intro! :3
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 12, 2015, 10:11:12 PM
New video showcasing the modem.
http://youtu.be/1Kcp99_qsGQ
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on February 13, 2015, 07:06:36 AM
Dat oscilloscope! O.O

I wonder if you could make a game on it like Tennis for Two but more advanced like Moon Patrol? ;D
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 13, 2015, 08:57:13 AM
I can make scope graphics using a digital two analog converters. (One for x and one for y axis)
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on February 13, 2015, 05:29:58 PM
Cool. :D If you can you should try and demonstrate it :)
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 14, 2015, 02:25:35 PM
I did once, but that was a test with 3 bit DAC's so only 8x8 pixels. With two 8 bit dacs it should look better, but it would be more cpu intensive also. It takes about 15-25 clock cycles per dot I estimate, so to draw 362 dots (diagonal line across the screen) I need 7200-9000 cycles.  This gives me a refresh rate of this line of 100Hz which would be perfect, but as soon as I draw another diagonal line this would reduce the framerate to 50Hz and two more reduces it to 25Hz, so as long as there are not too many lines on the screen I can get pretty good results.

Today I tried sending data from my pc audio card to the modem on the cbs computer and it works great. I should make a more permanent setup for data transfers though, cause it's a mess of wire right now.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on February 14, 2015, 04:08:38 PM
I am curious how pixel looks like on an oscilloscope, though :P Also this talk reminds me of Atari 2600 for some reasons :P
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 14, 2015, 11:07:23 PM
Because you have to spoon-feed the dot data to the display. The main difference is that it is not timing-critical. You can send dots whenever you want wherever you want as long as you have a steady rate of displaying pixels. Otherwise you get dim spots and flicker.

With the atari2600 you have to change the graphics in the video chip twice per scanline because there is no video ram. To make matters worse: there are no interrupts so you have to count cycles in order to make these writes occur at the right moment.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on February 15, 2015, 05:01:26 AM
Darn I wouldn't want to try programming the Atari 2600 in ASM. >.< (There's Batari Basic which probably takes care of that, although it probably cannot do much more than Princess Rescue and Zippy the Porcupine)
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 15, 2015, 11:53:41 AM
Well you could use a kernel written by someone else and just take care of the game logic during the vblank. (A kernel is the thing that handles all video and possibly sound output of an atari2600 game. It is included in the game's code.)
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 15, 2015, 07:27:05 PM
Just pushed new commits for the woz monitor. I added a save/load feature which allows you to save chunks of memory to a casette tape and load them back into memory. Right now there are no start and end of file markers. It just loads until you hit the esc key and it saves raw data to the casette.

I also tried programming the atari2600 today and I got some simple graphics on the screen, but doing anything with sprites requires crazy tricks :P

Edit: Just saved a program to the casette tape, loaded it back and ran it. Works perfectly! It seems like this method of data storage is more reliable than I thought. If I use parity checks if would be even more reliable!
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on February 16, 2015, 03:15:29 AM
I am curious if you could port Legand of Zelda: Sord of Atari to an actual 2600 without the text. :P (it would kinda defeat the point since the game goal was a bit to poke fun at Zero Wing for Sega Mega Drive, but you could still intentionally make the game bad such as "emulating" Pacman's Ghost Flicker of Death and keep the title mispelled and bad graphics:

http://codewalr.us/index.php?topic=6.45

Also for the cassette tape program do you mean for your CBS6000 computer or the Atari?
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 16, 2015, 10:49:43 AM
Positioning sprites alone is a hack in its own right so I dunno how I could make a game on this console.

The casette interface is on the cbs.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on February 17, 2015, 12:17:11 AM
O.O

Wow, I would definitively use Batari Basic if I was to make an Atari game. >.<

And thanks for the clarification :)
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 19, 2015, 04:48:49 PM
Changelog for firmware version 1.2

+ Added Seven segment driver
+ Added Casette save/load functionality (120 bytes/sec)
+ Added Serial load functionality (~5200 bytes/sec)
+ Added user interrupt vector
- Removed Intel HEX Loader

I am looking for a better name for the computer. CBS6000 is a project name and a temporary name for the computer.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on February 19, 2015, 04:57:31 PM
Is 120 bytes/seconds the standard loading speed for cassette saving/loading?

As for a name, Walriicomp, Koeniga (in reference to Amiga :P) are names I am thinking of, but I don't have any other idea right now. >.<
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 19, 2015, 05:03:38 PM
It is the maximum data rate of the modem chip I am using to encode the data. I bet you could go higher than this on casette tape as long as your sample rate is a few factors higher than the period of the signal. I'd need a different chip for a higher data rate.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on February 19, 2015, 05:08:05 PM
Ah ok. I assume cassette load/save and serial load use different chips then?
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 20, 2015, 12:31:43 PM
There are two chips for serial communication on the I/O board. One is hooked up to a terminal and the other is connected to the modem chip.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on February 20, 2015, 05:19:19 PM
Aah ok. Would one chip be able to handle both at once?
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 20, 2015, 10:11:56 PM
The logic required to make that work would take up more space than a second chip. I have plenty of these chips, so I don't mind using 2 of them.

I wrote a piece of code that allows me to print text to my laser printer. https://github.com/keoni29/cbs6000/blob/master/src/printertest/print.asm
It has a standard parallel printer port interface which makes if really easy to write data to. Printing text to it is as easy as printing it over serial. You can just send a string of text followed by 0x0C and it prints the page.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on February 21, 2015, 12:23:57 AM
Aah ok. That said if you ever decided to publish the hardware schematic for this so people can build one or if you even tried to sell such device in multiple copies, wouldn't using more chips increase the cost a bit? Also nice to see new updates :D
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 21, 2015, 08:07:17 AM
I do not intend to release schematics or to sell these. I don't have any full schematics myself you see. If one attempts to build such a computer I think it's best if they designed it themselves. The base system is fairly simple to design and there are lots of schematics for building a simple 6502/6510 computer out there. Mine is fairly standard apart from the bankswitching mechanism. The I/O board was not really designed as a whole. I added parts I could get my hands on as I went on. I have not bought any new parts for this project. It's all old stock from the 80's and some 90's.

That said: the source code is still publicly available and it is quite easy to port it to different 6502 machines.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on February 21, 2015, 08:14:03 AM
Aah I wasn't sure, since many people tend to make projects that are available for use by other people as opposed to personal use. It's still cool nonetheless, though.  I personally would probably not attempt designing such old school computer, since I am horrible at understanding lower-level languages. I would end up with just a pile of hardware I cannot program. <_<

But yeah it's good you managed to get many old parts recently so you can build whatever you want :)
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 27, 2015, 09:01:56 AM
A lot of these parts are pretty hard to come by, so even if I did publish schematics people would still not be able to build one of their own. Building these 8 bit computers is an art. You take whatever components you have lying around and you make them work together to perform tasks.

I hooked up a vga board to it recently. It is driven via a serial port so it is a bit slow. It works tho
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on February 27, 2015, 03:14:01 PM
What if every part you used were so rare that your computer is worth $18,000? O.O
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on February 27, 2015, 08:00:07 PM
I don't think so, but the parts are from c64's and stuff, so you'd need to disassemble a c64 to get these parts. I got mine from broken c64's. These chips were not damaged of course.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on February 28, 2015, 12:45:34 AM
Ooh I see lol. And at first I was worried when I started reading your post because I thought you decided to dismantle a C64, then I breathed a sigh of relief when I saw you did it with only broken ones. :P
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: aetios on March 03, 2015, 07:06:07 AM
Quote from: Keoni29 on February 27, 2015, 08:00:07 PM
I don't think so, but the parts are from c64's and stuff, so you'd need to disassemble a c64 to get these parts. I got mine from broken c64's. These chips were not damaged of course.
bottom line is: Your chips are as expensive as these broken c64's are. Which can be quite expensive.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on March 03, 2015, 09:02:56 AM
Not really. Broken c64's are worth €7-10
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on March 03, 2015, 04:23:45 PM
I was sure they were more because I always had the impression that a working c64 was about $200-400 due to rarity, but I just checked Ebay and while they seem scarce, it seems we can easily get a working one for $100-150.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on March 03, 2015, 04:50:08 PM
Over here they are dirt cheap. Europe ftw.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on March 03, 2015, 05:04:45 PM
That is probably because in North America, personal computers were never popular to begin with in the 80's. Video game consoles were the thing early on, and even when the video game crash of America occured, personal computers never really took off. Then Nintendo came with their NES and you know the rest of the story.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on March 03, 2015, 08:02:19 PM
Yeah I figured. In europe used (and new) consoles are more expensive compared to america.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on March 07, 2015, 10:30:38 PM
I wrote up some documentation today. For those who are interested in lots of tech talk:
http://8times8.eeems.me:81/project/computers/65xx/cbs/

Also some new pics:
(http://8times8.eeems.me:81/project/computers/65xx/cbs/media/stack.jpg)
(http://8times8.eeems.me:81/project/computers/65xx/cbs/media/parts.jpg)
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Snektron on March 07, 2015, 10:33:50 PM
Looks awesome! :D
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Duke "Tape" Eiyeron on March 08, 2015, 07:48:01 AM
It's pretty awesome to see you can do a such small computer with these chips!
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: novenary on March 08, 2015, 08:03:14 AM
Yup. Old school PCs are tiny. Most of the size was due to the keyboard back then. And the power supply.

Also, neat machine Keoni. I already saw it working and I must say you did a great job.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on March 08, 2015, 01:31:47 PM
I wanted this computer to be on par with modern microcontrollers, so I stuffed as many peripherals in it as possible. I still have the address space to add 4 more peripherals on the I/O board. I don't have enough physical space though :P I can maybe fit stuff like a realtime clock on it.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on March 09, 2015, 06:18:28 AM
This looks even better than before now :D But so much stuff O.O
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Keoni29 on July 01, 2015, 02:05:57 PM
I 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.
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: utz on July 01, 2015, 11:21:02 PM
Good to see you're still going strong with this project! I'll hope to see the machine in real life action one day ;)
Title: Re: CBS6000 - an 8-bit 6510 computer
Post by: Dream of Omnimaga on July 06, 2015, 03:24:37 AM
Awesome to see you back into action Keoni29!  :walrii: