Merge branch 'master' of ssh://ichibi.eu:222/home/git/pato-z80-home-computer

This commit is contained in:
Daniele 2022-02-06 20:35:19 +01:00
commit bb5cb5461c
48 changed files with 703 additions and 71 deletions

47
NOTES.md Normal file
View File

@ -0,0 +1,47 @@
# 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`

109
README.md
View File

@ -1,47 +1,66 @@
# Software utilizzato # Pat80
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 ![Pat80 Home Computer Logo](/assets/media/pat80-banner-colour-raster.png)
## 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 Pat80 Home Computer is an attempt to develop the simplest possible Zilog Z80 based computer in 2021.
## Deploy
### Compilare c: ## Hardware
`sdcc -mz80 test.c` Instead of being another single board computer, Pat80 focuses on modularity:
- The Core board contains Z80 CPU, 32k ram, 32k rom, memory and I/O decoding logic
- The Backplane is a stupid I/O bus board with no active components, 1 socket for the Core board and 8 sockets for I/O boards
- Each I/O board must implement tri-state and go to high impedance according to its EN pin to avoid bus contention
- The Power Supply module contains a 7805-based linear power supply capable of delivering 1A @5v for the core and I/O boards
Here is a picture of the early stages of development:
![Pat80 Breadboard prototype](/assets/media/photos/breadboard.jpg)
### I/O Boards
#### Parallel terminal interface
A parallel terminal based on Arduino is used for development purposes and will be replaced by an UART card.
#### Keyboard controller
Pat80 features a blue-switches mechanical matrix keyboard, seen by the system as a memory area in I/O space. The keyboard doesn't use interrupts and is polled by the OS.
#### Video controller
The monochrome 368x248 pixels video output is software-generated by an ATMega 1284 MCU. The timings are generated by the MCU's 16 bit internal timer and the vertical sync time is used to update the framebuffer.
## Software
The OS is a simple Memory Monitor. It can show memory content in hex and ascii with the typical hex editor tabular view.
Programs can be loaded from the keyboard, writing Z80 opcodes and data in hex. The program can be executed from any ram position and the Memory Monitor can be brought to screen in any moment issuing an INT signal (the Z80 INT pin should be connected to a button with pull-up resistor).
There is an experimental and unfinished quick load function using a python terminal to load a binary file directly to memory and execute it.
![Pat80 Memory Monitor](/assets/media/photos/memory_monitor.jpg)
## Status
The project is heavily work in progress.
### Working
- Core board
- Sound board
- Arduino parallel terminal with its own Python companion script (or any UART terminal)
The only fully working configuration as now is the Core board with two devices hooked to its I/O bus: the Arduino Parallel Terminal (see `pat80-io-devices/parallel-terminal` and `pat80-computer/software/z80-assembly/os/drivers/arduino_terminal.asm`) and the SN76489 sound chip (see `pat80-computer/software/z80-assembly/os/drivers/hd44780.asm`)
### Partially working
The keyboard is only partially tested, as it's not completed.
![Pat80 keyboard pcb](/assets/media/photos/keyboard_before_etching.jpg)
![Pat80 keyboard layout](/assets/media/photos/keyboard_layout.jpg)
The composite video card is partially working, but has some nasty bugs on text cursor positioning and the graphics mode is not yet implemented (the only way to output graphics ATM is to place the bitmap in the MCU flash and load it to VRAM manually).
![Pat80 composite monitor text mode](/assets/media/photos/composite_text.jpg)
![Pat80 composite monitor graphics mode](/assets/media/photos/composite_graphics.jpg)
For the moment, better to stick with the Arduino Parallel Terminal.
### Not working
All the rest
## License
All the project is under GPL v3 license

View File

@ -1,2 +1,3 @@
# Assets # Assets
This folder contains all the media assets for presenting Pat80 to the web, print and other media This folder contains all the media and text assets for presenting Pat80 to the web, print and other media

18
assets/media/LICENSE.md Normal file
View File

@ -0,0 +1,18 @@
# Assets
This folder contains all the media assets for presenting Pat80 to the web, print and other media
## License
All files contained in this folder are part of Pat80 Assets.
Pat80 Assets is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Pat80 Assets is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTYwithout even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pat80 Assets. If not, see <http://www.gnu.org/licenses/>.

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

18
kicad-symbols/LICENSE.md Normal file
View File

@ -0,0 +1,18 @@
# Kicad symbols
This folder contains the custom symbols required by Pat80 schematics and PCB layouts.
## License
All files contained in this folder are part of Pat80 Blueprints.
Pat80 Blueprints is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Pat80 Blueprints is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTYwithout even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pat80 Blueprints. If not, see <http://www.gnu.org/licenses/>.

View File

@ -0,0 +1,18 @@
# Hardware
This folder contains the Pat80 logic definitions, schematics and PCB layouts.
## License
All files contained in this folder are part of Pat80 Blueprints.
Pat80 Blueprints is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Pat80 Blueprints is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTYwithout even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pat80 Blueprints. If not, see <http://www.gnu.org/licenses/>.

View File

@ -0,0 +1,21 @@
# Memory Decoding logic
This folder contains the memory decoding logic used by Pat80.
The memory map is a simple 32k ram / 32k rom obtained using the MSB as EN signal.
The I/O space is split in 8 devices (each with 32 registers).
Pat80 doesn't use the [high address lines I/O hack](https://retrocomputing.stackexchange.com/questions/7782/z80-16-bit-i-o-port-addresses) but adheres to the official Z80 I/O documentation.
## License
All files contained in this folder are part of Pat80 Blueprints.
Pat80 Blueprints is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Pat80 Blueprints is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTYwithout even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pat80 Blueprints. If not, see <http://www.gnu.org/licenses/>.

View File

@ -0,0 +1,18 @@
# Hardware
This folder contains the Pat80 schematics and PCB layouts.
## License
All files contained in this folder are part of Pat80 Blueprints.
Pat80 Blueprints is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Pat80 Blueprints is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTYwithout even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pat80 Blueprints. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,3 +1,5 @@
; @language: Z80 ASM
org 0xA000 org 0xA000
include '../../os/abi-generated.asm' include '../../os/abi-generated.asm'

View File

@ -1,3 +1,4 @@
; @language: Z80 ASM
;hd44780 lcd test procedure ;hd44780 lcd test procedure
LCD_INSTR_REG: EQU %00000000 LCD_INSTR_REG: EQU %00000000

View File

@ -1,2 +1,4 @@
; @language: Z80 ASM
org 0xA000 ; Set starting position to ram org 0xA000 ; Set starting position to ram
include '../os/main.asm' include '../os/main.asm'

View File

@ -1,5 +1,22 @@
; Arduino terminal driver ; Arduino terminal driver
; @author Daniele Verducci ; @author Daniele Verducci
; @language: Z80 ASM
;
;
; This file is part of Pat80 Memory Monitor.
;
; Pat80 Memory Monitor is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; Pat80 Memory Monitor is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with Pat80 Memory Monitor. If not, see <http://www.gnu.org/licenses/>.
; config (IO port 0) ; config (IO port 0)
TERM_DATA_REG: EQU IO_0 TERM_DATA_REG: EQU IO_0

View File

@ -1,5 +1,23 @@
; HD44780 20x4 characters LCD display driver ; HD44780 20x4 characters LCD display driver
; @author Daniele Verducci ; @author Daniele Verducci
; @language: Z80 ASM
;
;
; This file is part of Pat80 Memory Monitor.
;
; Pat80 Memory Monitor is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; Pat80 Memory Monitor is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with Pat80 Memory Monitor. If not, see <http://www.gnu.org/licenses/>.
;
; ;
; USAGE: ; USAGE:
; STR: DB "Hello world!",0 <-- null terminated string ; STR: DB "Hello world!",0 <-- null terminated string

View File

@ -1,6 +1,24 @@
; Keyboard driver ; Keyboard driver
; Direct keyboard grid control (direct keys addressing, without keyboard controller) ; Direct keyboard grid control (direct keys addressing, without keyboard controller)
; @author Daniele Verducci ; @author Daniele Verducci
; @language: Z80 ASM
;
;
; This file is part of Pat80 Memory Monitor.
;
; Pat80 Memory Monitor is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; Pat80 Memory Monitor is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with Pat80 Memory Monitor. If not, see <http://www.gnu.org/licenses/>.
;
; ;
; Requires declaration of following pointers, one for every column of the keys grid: ; Requires declaration of following pointers, one for every column of the keys grid:
; KEYB_A0_REG ; KEYB_A0_REG

View File

@ -1,4 +1,22 @@
; PS/2 Keyboard driver ; PS/2 Keyboard driver
; @language: Z80 ASM
;
;
; This file is part of Pat80 Memory Monitor.
;
; Pat80 Memory Monitor is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; Pat80 Memory Monitor is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with Pat80 Memory Monitor. If not, see <http://www.gnu.org/licenses/>.
;
; ;
; Based on PS/2 protocol as documented on http://www.lucadavidian.com/2017/11/15/interfacing-ps2-keyboard-to-a-microcontroller/ ; Based on PS/2 protocol as documented on http://www.lucadavidian.com/2017/11/15/interfacing-ps2-keyboard-to-a-microcontroller/
; ;

View File

@ -1,4 +1,5 @@
; PS/2 Keycode Mode 2 to ASCII mapping table ; PS/2 Keycode Mode 2 to ASCII mapping table
; @language: Z80 ASM
; ;
; Keycodes 0 to 83 ; Keycodes 0 to 83

View File

@ -1,5 +1,23 @@
; TI SN76489 sound chip display driver ; TI SN76489 sound chip driver
; @author Daniele Verducci ; @author Daniele Verducci
; @language: Z80 ASM
;
;
; This file is part of Pat80 Memory Monitor.
;
; Pat80 Memory Monitor is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; Pat80 Memory Monitor is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with Pat80 Memory Monitor. If not, see <http://www.gnu.org/licenses/>.
;
; ;
; USAGE: ; USAGE:
; call Snd_init <-- inits sound (and silences default tone) ; call Snd_init <-- inits sound (and silences default tone)

View File

@ -1,5 +1,23 @@
; Vgax display driver ; Vgax display driver
; @author Daniele Verducci ; @author Daniele Verducci
; @language: Z80 ASM
;
;
; This file is part of Pat80 Memory Monitor.
;
; Pat80 Memory Monitor is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; Pat80 Memory Monitor is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with Pat80 Memory Monitor. If not, see <http://www.gnu.org/licenses/>.
;
; ;
; Requires declaration of following pointers: ; Requires declaration of following pointers:
; VGAX_INSTR_REG ; VGAX_INSTR_REG

View File

@ -1,5 +1,22 @@
; Strings manipulation library ; Strings manipulation library
; @author Daniele Verducci ; @author Daniele Verducci
; @language: Z80 ASM
;
;
; This file is part of Pat80 Memory Monitor.
;
; Pat80 Memory Monitor is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; Pat80 Memory Monitor is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with Pat80 Memory Monitor. If not, see <http://www.gnu.org/licenses/>.
; Transforms case to upper ; Transforms case to upper

View File

@ -1,5 +1,22 @@
; Time library ; Time library
; @author Daniele Verducci ; @author Daniele Verducci
; @language: Z80 ASM
;
;
; This file is part of Pat80 Memory Monitor.
;
; Pat80 Memory Monitor is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; Pat80 Memory Monitor is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with Pat80 Memory Monitor. If not, see <http://www.gnu.org/licenses/>.
; Duration in cpu cycles / 55 (change these values based on CPU frequency) ; Duration in cpu cycles / 55 (change these values based on CPU frequency)

View File

@ -1,2 +1,4 @@
; @language: Z80 ASM
org 0xA000 ; Set starting position to ram org 0xA000 ; Set starting position to ram
include 'main.asm' include 'main.asm'

View File

@ -2,6 +2,24 @@ jp Sysinit ; Startup vector: DO NOT MOVE! Must be the first instruction
; Pat80 BIOS v0.01 ; Pat80 BIOS v0.01
; @author: Daniele Verducci ; @author: Daniele Verducci
; @language: Z80 ASM
;
;
; This file is part of Pat80 Memory Monitor.
;
; Pat80 Memory Monitor is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; Pat80 Memory Monitor is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with Pat80 Memory Monitor. If not, see <http://www.gnu.org/licenses/>.
;
; ;
; MEMORY MAP ; MEMORY MAP
; ROM is at 0x0000 ; ROM is at 0x0000

View File

@ -1,5 +1,23 @@
; Pat80 Memory Monitor ; Pat80 Memory Monitor
; @author Daniele Verducci ; @author Daniele Verducci
; @language: Z80 ASM
;
;
; This file is part of Pat80 Memory Monitor.
;
; Pat80 Memory Monitor is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; Pat80 Memory Monitor is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with Pat80 Memory Monitor. If not, see <http://www.gnu.org/licenses/>.
;
; ;
; Monitor commands (CMD $arg): ; Monitor commands (CMD $arg):
; H (HELP) Shows available commands ; H (HELP) Shows available commands
@ -558,17 +576,17 @@ monitor_copyTermToAppMem:
; Exits when the first value differs from the written value (this may be caused by a bad ram ; Exits when the first value differs from the written value (this may be caused by a bad ram
; block or the start of rom in memory map). Prints the last good address on exit. ; block or the start of rom in memory map). Prints the last good address on exit.
; monitor_memtest: ; monitor_memtest:
; ld bc, MON_COMMAND_MEMTEST + 1 ; autocomplete command ; ld bc, MON_COMMAND_MEMTEST + 1 ; autocomplete command
; call Sys_Print ; call Sys_Print
; ; Prints intro ; ; Prints intro
; ld bc, MON_RAMTEST_INTRO ; ld bc, MON_RAMTEST_INTRO
; call Sys_Print ; call Sys_Print
; ; Starts checking ; ; Starts checking
; ld hl, MEM_END ; ld hl, MEM_END
; monitor_memtest_loop: ; monitor_memtest_loop:
; ; Save current byte value for later restore ; ; Save current byte value for later restore
; ld c, (hl) ; ld c, (hl)
; ; Write 0xFF ; ; Write 0xFF
; ld a, 0xFF ; ld a, 0xFF
; ld (hl), a ; ld (hl), a
; ; Read and compare 0xFF ; ; Read and compare 0xFF
@ -583,8 +601,8 @@ monitor_copyTermToAppMem:
; cp 0x00 ; cp 0x00
; jp nz, monitor_memtest_badram ; jp nz, monitor_memtest_badram
; ; Memory byte is good, restore previous value ; ; Memory byte is good, restore previous value
; ld (hl), c ; ld (hl), c
; ; Next one ; ; Next one
; dec hl ; dec hl
; jp monitor_memtest_loop ; jp monitor_memtest_loop
; monitor_memtest_badram: ; monitor_memtest_badram:
@ -592,15 +610,15 @@ monitor_copyTermToAppMem:
; ld bc, MON_RAMTEST_RAMSTART ; ld bc, MON_RAMTEST_RAMSTART
; call Sys_Print ; call Sys_Print
; ; Print last valid memory addr ; ; Print last valid memory addr
; inc hl ; inc hl
; ld a, h ; ld a, h
; call monitor_printHexByte ; call monitor_printHexByte
; ld a, l ; ld a, l
; call monitor_printHexByte ; call monitor_printHexByte
; ; Newline ; ; Newline
; ld a, 10 ; ld a, 10
; call Sys_Printc ; call Sys_Printc
; ; Back to menu ; ; Back to menu
; jp monitor_main_loop ; jp monitor_main_loop

View File

@ -1,3 +1,5 @@
; @language: Z80 ASM
SndTest_test: SndTest_test:
; ch1 max volume ; ch1 max volume
ld a,%10010000 ld a,%10010000

View File

@ -2,7 +2,25 @@
; * PAT80 COMPOSITE PAL VIDEO ADAPTER * ; * PAT80 COMPOSITE PAL VIDEO ADAPTER *
; * Character generator module * ; * Character generator module *
; ******************************************* ; *******************************************
;
; @language: AVR ASM
;
; This file is part of Pat80 IO Devices.
;
; Pat80 IO Devices is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; Pat80 IO Devices is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with Pat80 IO Devices. If not, see <http://www.gnu.org/licenses/>.
;
;
; This module generates the character pixels using the font present in rom ; This module generates the character pixels using the font present in rom
; and adds it on the framebuffer in the position indicated by POS_COARSE (Y). ; and adds it on the framebuffer in the position indicated by POS_COARSE (Y).

View File

@ -2,7 +2,25 @@
; * PAT80 COMPOSITE PAL VIDEO ADAPTER * ; * PAT80 COMPOSITE PAL VIDEO ADAPTER *
; * Communication module * ; * Communication module *
; ******************************************* ; *******************************************
;
; @language: AVR ASM
;
; This file is part of Pat80 IO Devices.
;
; Pat80 IO Devices is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; Pat80 IO Devices is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with Pat80 IO Devices. If not, see <http://www.gnu.org/licenses/>.
;
;
; This module manages the communication between Pat80 and ; This module manages the communication between Pat80 and
; the video adapter. ; the video adapter.

View File

@ -1,5 +1,23 @@
; VIDEO COMPOSITE PAL IO DEVICE ; VIDEO COMPOSITE PAL IO DEVICE
; ;
; @language: AVR ASM
;
; This file is part of Pat80 IO Devices.
;
; Pat80 IO Devices is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; Pat80 IO Devices is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with Pat80 IO Devices. If not, see <http://www.gnu.org/licenses/>.
;
;
; INTERFACING WITH PAT80: ; INTERFACING WITH PAT80:
; Use PortB as data port. Before writing anything, issue a read (pin RW HIGH) and check the busy pin on the data port. ; Use PortB as data port. Before writing anything, issue a read (pin RW HIGH) and check the busy pin on the data port.
; If the busy pin is high, retry reading until goes low. When the busy pin goes low, we have... TODO ; If the busy pin is high, retry reading until goes low. When the busy pin goes low, we have... TODO

View File

@ -2,6 +2,24 @@
; * PAT80 COMPOSITE PAL VIDEO ADAPTER * ; * PAT80 COMPOSITE PAL VIDEO ADAPTER *
; * Video generator module * ; * Video generator module *
; ******************************************* ; *******************************************
;
; @language: AVR ASM
;
; This file is part of Pat80 IO Devices.
;
; Pat80 IO Devices is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; Pat80 IO Devices is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with Pat80 IO Devices. If not, see <http://www.gnu.org/licenses/>.
; Uses registers X(R27, R26), STATUS (R25), VG_HIGH_ACCUM (r24), LINE_COUNTER (r23) ; Uses registers X(R27, R26), STATUS (R25), VG_HIGH_ACCUM (r24), LINE_COUNTER (r23)

View File

@ -0,0 +1,18 @@
# Hardware
This folder contains the Pat80 keyboard schematics and PCB layout.
## License
All files contained in this folder are part of Pat80 Blueprints.
Pat80 Blueprints is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Pat80 Blueprints is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTYwithout even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pat80 Blueprints. If not, see <http://www.gnu.org/licenses/>.

View File

@ -0,0 +1,18 @@
# Hardware
This folder contains the Pat80 keyboard controller IO card schematics and PCB layout.
## License
All files contained in this folder are part of Pat80 Blueprints.
Pat80 Blueprints is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Pat80 Blueprints is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTYwithout even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pat80 Blueprints. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,10 +1,29 @@
/** /**
* Terminal interface. * Terminal interface.
*
* * @language: AVR ASM
*
* This file is part of Pat80 IO Devices.
*
* Pat80 IO Devices is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Pat80 IO Devices is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY * without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Pat80 IO Devices. If not, see <http://www.gnu.org/licenses/>.
*
*
* This sketch allow an Arduino to be used as a terminal to log into Pat80. * This sketch allow an Arduino to be used as a terminal to log into Pat80.
* The Arduino is connected to the Pat80 I/O bus and to the terminal computer via USB. * The Arduino is connected to the Pat80 I/O bus and to the terminal computer via USB.
* The Python Terminal Monitor or the Arduino IDE serial monitor is used to send * The Python Terminal Monitor or the Arduino IDE serial monitor is used to send
* and receive commands to/from the Z80. * and receive commands to/from the Z80.
* *
* Seen from the Pat80, the terminal interface has two registers: * Seen from the Pat80, the terminal interface has two registers:
* DATA Register at addr 0x00 (\RS) contains the last received byte from the pc * DATA Register at addr 0x00 (\RS) contains the last received byte from the pc
* DATA_AVAILABLE Register at addr 0x01 (RS) contains the number of bytes in the buffer, * DATA_AVAILABLE Register at addr 0x01 (RS) contains the number of bytes in the buffer,

View File

@ -4,6 +4,23 @@
""" @package docstring """ @package docstring
ARDUINO PARALLEL TERMINAL EMULATOR ARDUINO PARALLEL TERMINAL EMULATOR
* This file is part of Pat80 IO Devices.
*
* Pat80 IO Devices is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Pat80 IO Devices is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY * without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Pat80 IO Devices. If not, see <http://www.gnu.org/licenses/>.
USAGE: USAGE:
Connect the arduino to a Pat80 I/O port. Connect the arduino to a Pat80 I/O port.
Flash /arduino/arduino_terminal firmware into the Arduino. Flash /arduino/arduino_terminal firmware into the Arduino.

View File

@ -0,0 +1,18 @@
# UART
This folder contains the Pat80 UART decoding logic, schematics and PCB layout.
## License
All files contained in this folder are part of Pat80 Blueprints.
Pat80 Blueprints is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Pat80 Blueprints is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTYwithout even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Pat80 Blueprints. If not, see <http://www.gnu.org/licenses/>.

View File

@ -1,4 +1,21 @@
/** /**
*
* This file is part of Pat80 Utils.
*
* Pat80 Utils is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Pat80 Utils is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY * without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Pat80 Utils. If not, see <http://www.gnu.org/licenses/>.
*
*
* SN76489 sound chip test * SN76489 sound chip test
* *
* DATA BUS IS: 2, 3, 4, 5, 6, 7, 8, 9 (NOTE: 2 is D0, but D0 is the MSB) * DATA BUS IS: 2, 3, 4, 5, 6, 7, 8, 9 (NOTE: 2 is D0, but D0 is the MSB)

View File

@ -1,4 +1,20 @@
/** /**
* This file is part of Pat80 IO Devices.
*
* Pat80 IO Devices is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Pat80 IO Devices is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY * without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Pat80 IO Devices. If not, see <http://www.gnu.org/licenses/>.
*
*
* Composite pal adapter test. * Composite pal adapter test.
* This sketch makes an Arduino send test data to tha Pat80 composite video pal adapter. * This sketch makes an Arduino send test data to tha Pat80 composite video pal adapter.
* Connect the video adapter directly to Arduino * Connect the video adapter directly to Arduino

View File

@ -1,4 +1,23 @@
/* ************** EEPROM PROGRAMMER ****************** /* ************** EEPROM PROGRAMMER ******************
* This file is part of Pat80 Utils.
*
* Pat80 Utils is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Pat80 Utils is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY * without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Pat80 Utils. If not, see <http://www.gnu.org/licenses/>.
NOTE: This is not working and I'm not sure if it will be fixed or removed,
as I'm actually using an USB programmer.
HARDWARE: HARDWARE:

View File

@ -1,4 +1,23 @@
/* HD44780 Character display debugger */ /*
* This file is part of Pat80 Utils.
*
* Pat80 Utils is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Pat80 Utils is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY * without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Pat80 Utils. If not, see <http://www.gnu.org/licenses/>.
*
*
* HD44780 Character display debugger
* Used to intercept data sent from Pat80 to character display
*/
#define EN 2 #define EN 2
const byte DATA_BUS[] = {10, 9, 8, 7, 6, 5, 4, 3}; const byte DATA_BUS[] = {10, 9, 8, 7, 6, 5, 4, 3};

View File

@ -1,4 +1,23 @@
/* PS/2 Keyboard controller debugger */ /*
* This file is part of Pat80 Utils.
*
* Pat80 Utils is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Pat80 Utils is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY * without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Pat80 Utils. If not, see <http://www.gnu.org/licenses/>.
*
*
* PS/2 Keyboard controller debugger
* Used to intercept data decoded from Pat80 PS/2 keyboard adapter
*/
#define EN 2 #define EN 2
const byte DATA_BUS[] = {10, 9, 8, 7, 6, 5, 4, 3}; const byte DATA_BUS[] = {10, 9, 8, 7, 6, 5, 4, 3};

View File

@ -1,7 +1,24 @@
/** /**
*
* This file is part of Pat80 Utils.
*
* Pat80 Utils is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Pat80 Utils is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY * without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Pat80 Utils. If not, see <http://www.gnu.org/licenses/>.
*
*
* SPI SD-Card test sketch * SPI SD-Card test sketch
* Reads the first 128 bytes from sdcard and prints it out as ascii characters in serial monitor at 9200 baud * Reads the first 128 bytes from sdcard and prints it out as ascii characters in serial monitor at 9200 baud
* *
* Implementation of the specification at http://elm-chan.org/docs/mmc/mmc_e.html * Implementation of the specification at http://elm-chan.org/docs/mmc/mmc_e.html
*/ */

View File

@ -1,4 +1,20 @@
/* ************** DEBUGGER Zilog Z80 ****************** /* ************** DEBUGGER Zilog Z80 ******************
*
* This file is part of Pat80 Utils.
*
* Pat80 Utils is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Pat80 Utils is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY * without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Pat80 Utils. If not, see <http://www.gnu.org/licenses/>.
HARDWARE: HARDWARE: