Pat80 Home Computer is an attempt to develop the simplest possible Zilog Z80 based computer in 2021
Go to file
Daniele Verducci su MatissePenguin 8b2063c6bc Working on timings
2021-01-17 10:58:04 +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 Working on timings 2021-01-17 10:58:04 +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