Join us on Discord!
You can help CodeWalrus stay online by donating here.

z80 computer with arduino coprocessor.

Started by c4ooo, December 22, 2017, 11:18:00 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

c4ooo

I built a prototype for a z80 computer that uses an arduino for communication and bootstrapping. I can assemble a z80 source program with brass, and send it to the arduino with a small python program. The arduino is running a firmware program that waits for a program to be sent over serial, which it loads into the ram chip for the z80 to execute. The z80 communicates with the arduino via IO requests. The arduino<-->z80 API only contains 3 commands, but these can be used for the z80 to send messages to the PC via serial.

This is a small test program to send "test1" and "12345" to the PC via serial:

#define output(x, y) ld a,y \ out (x),a
#define command(x) output(PORT_COMMAND, x)
output(PORT_ADD_LOW, writeTo & FFh)
output(PORT_ADD_HIGH, writeTo >> 8) ;set data act-on address to writeTo
ld hl,string1
ld de,writeTo
ld bc,6
ldir ;copy string1 to writeTo
command(COMMAND_WRITE_SERIEL) ;tell arduino to send data from act-on address to PC
;stuff
ld hl,string2
ld de,writeTo
ld bc,6
ldir ;copy string2 to writeTo
command(COMMAND_WRITE_SERIEL) ;tell arduino to send data from act-on address to PC
jr $ ;do nothing
string1:
.db "test1",0
string2:
.db "12345",0
writeTo:


Picture:


Todo:

    Use external clock. (Currently arduino is generating a clock signal)
    Upgrade to 128kb ram chip. (Currently i am using a 32kb one)
    Make arduino use pin registers for control signal IO. (minor)
    Make a paging circuit for said ram chip.
    Add an LCD
    Write an OS(?)
    Add an SD card(?)
    Make PCB (?)

Yuki

Ooooh, sounds fun. Any idea what you want to do with this?
  • Calculators owned: TI-83+ (dead?), Casio Prizm (also dead???)
  • Consoles, mobile devices and vintage computers owned: A lot
Read Zarmina!
YUKI-CHAAAANNNN
In the beginning there was walrii. In the end there will be walrii. All hail our supreme leader :walrii: --Snektron

if you wanna throw money at me and/or CodeWalrus monthly it's here

c4ooo

Quote from: Juju on December 23, 2017, 12:53:20 AM
Ooooh, sounds fun. Any idea what you want to do with this?
I dont know, i wanted to build something in the spirit of the Ninjabyte ZPX-128 ( https://codewalr.us/index.php?topic=1001.0 ) And had the part laying around. My main changes from the ninjabyte will be the use of an arduino 'stead of a Parallel Propeller (This can be an arduino mega shield), and the use of an LCD not VGA output.

DarkestEx

What happened to your project? Did it go further?
  • Calculators owned: TI-84+, Casio 101-S, RPN-Calc, Hewlett-Packard 100LX, Hewlett-Packard 95LX
  • Consoles, mobile devices and vintage computers owned: Original Commodore 64C, C64 DTV, Nintendo GameBoy Color, Nintendo GameCube, Xbox 360, PlayStation 2

c4ooo

Quote from: DarkestEx on April 10, 2020, 10:11:27 PMWhat happened to your project? Did it go further?
Not really. At some point I made a VGA generator (which you saw). Later I bought a FPGA and did some VGA/CPU stuff on it. I'm mostly focused on school and software stuff at the moment. I find hardware stuff very daunting. @DarkestEx

Zeda

Wow, I missed this project :0
I have a Z80 and my spouse has an Arduino, this might be a cool project to work on :0

Powered by EzPortal