Author Topic: z80 computer with arduino coprocessor.  (Read 3635 times)

0 Members and 1 Guest are viewing this topic.

Offline c4ooo

  • LV5 Advanced (Next: 300)
  • *****
  • Posts: 252
  • Rating: +10/-1
  • The impossible chemical compound.
    • View Profile
z80 computer with arduino coprocessor.
« on: December 24, 2017, 03:41:09 pm »
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:
Code: [Select]
#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 (?)
-German Kuznetsov
The impossible chemical compound.