Pat80 Home Computer is an attempt to develop the simplest possible Zilog Z80 based computer in 2021
Go to file
Daniele Verducci su MatissePenguin 7c07014b75 Using official mc device definition
2021-01-13 19:22:07 +01:00
.vscode WIP Writing terminal deployer 2020-12-09 22:23:12 +01:00
assets First os version with ABI number and working system calls 2020-12-30 19:58:32 +01:00
pat80-computer Interrupt brings up Monitor: working, but calling "run" leaves garbage in the SP 2021-01-03 09:37:22 +01:00
pat80-io-devices Using official mc device definition 2021-01-13 19:22:07 +01:00
prototiping-with-arduino Merge branch 'master' of ichibi:/home/git/Repositories/pato-z80-home-computer 2021-01-03 08:21:29 +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