Pat80 Home Computer is an attempt to develop the simplest possible Zilog Z80 based computer in 2021
Go to file
2021-03-06 14:09:38 +01:00
.vscode WIP Writing terminal deployer 2020-12-09 22:23:12 +01:00
assets WIP PS/2 Keyboard 2021-02-09 18:54:30 +01:00
pat80-computer Working on memtest 2021-03-01 19:50:50 +01:00
pat80-io-devices UART: Thinking how to delay sampling to mid clock 2021-03-06 14:09:38 +01:00
prototiping-with-arduino ps/2 debugger 2021-02-12 12:20:41 +01:00
.gitignore hd44780 display debugger 2020-10-18 14:47:46 +02:00
README.md Code refactoring, working char read and print, working line print, not working line read 2020-11-24 21:34:51 +01:00

Software utilizzato

Compilatore assembly: z80asm (da repo debian) Compilatore c: sdcc (da repo debian) Eeprom flash: minipro (da https://gitlab.com/DavidGriffith/minipro/) Disegnatore schemi logici: logisim (jar da sourceforge) Per usarlo su hdpi: java -Dsun.java2d.uiScale=2 -jar logisim-generic-2.7.1.jar Disegnatore circuiti: fritzing (da repo debian)

Assembly

Deploy

Compilare assembly:

z80asm -i hd44780_lcd_test_procedure.asm -o rom.bin

Portare binario alla dimensione dell eeprom:

dd if=/dev/zero of=rom.bin bs=1 count=0 seek=8192

Scrivere su EEPROM:

minipro -w rom.bin -p "AT28C64B"

Leggere EEPROM:

minipro -r rom_read.bin -p "AT28C64B"

Istruzioni

Dichiarare una variabile:

Usare EQU per assegnare una posizione di memoria nota (nella RAM) al nome variabile.

myVar: EQU 0x800F   ; init variable
ld hl, "A"          ; load value into register
ld (myVar), hl      ; copy value into variable

NB: Se il programma si blocca, verificare che la variabile non sia stata dichiarata in una parte non scrivibile della memoria (ROM)

Accedere ad una variabile

Modificarne il valore (nell'esempio: incrementarla di 1)

ld a, (myVar)
inc a
ld (myVar), a

Passarne il puntatore ad una funzione:

ld bc, myVar
call lcd_print

Segmentation fault

Controllare che non si stia puntando ad un registro con le parentesi: ld (ix), a

C

Deploy

Compilare c:

sdcc -mz80 test.c