Ready for github publishing

This commit is contained in:
Daniele Verducci (ZenPenguin)
2021-07-11 09:49:42 +02:00
parent 1c77bc82ac
commit aa844687c8
47 changed files with 697 additions and 71 deletions

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
include '../../os/abi-generated.asm'

View File

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

View File

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

View File

@ -1,5 +1,22 @@
; Arduino terminal driver
; @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)
TERM_DATA_REG: EQU IO_0

View File

@ -1,5 +1,23 @@
; HD44780 20x4 characters LCD display driver
; @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:
; STR: DB "Hello world!",0 <-- null terminated string

View File

@ -1,6 +1,24 @@
; Keyboard driver
; Direct keyboard grid control (direct keys addressing, without keyboard controller)
; @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:
; KEYB_A0_REG

View File

@ -1,4 +1,22 @@
; 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/
;

View File

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

View File

@ -1,5 +1,23 @@
; TI SN76489 sound chip display driver
; TI SN76489 sound chip driver
; @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:
; call Snd_init <-- inits sound (and silences default tone)

View File

@ -1,5 +1,23 @@
; Vgax display driver
; @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:
; VGAX_INSTR_REG

View File

@ -1,5 +1,22 @@
; Strings manipulation library
; @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

View File

@ -1,5 +1,22 @@
; Time library
; @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)

View File

@ -1,2 +1,4 @@
; @language: Z80 ASM
org 0xA000 ; Set starting position to ram
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
; @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
; ROM is at 0x0000

View File

@ -1,5 +1,23 @@
; Pat80 Memory Monitor
; @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):
; 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
; block or the start of rom in memory map). Prints the last good address on exit.
; monitor_memtest:
; ld bc, MON_COMMAND_MEMTEST + 1 ; autocomplete command
; call Sys_Print
; ld bc, MON_COMMAND_MEMTEST + 1 ; autocomplete command
; call Sys_Print
; ; Prints intro
; ld bc, MON_RAMTEST_INTRO
; call Sys_Print
; ld bc, MON_RAMTEST_INTRO
; call Sys_Print
; ; Starts checking
; ld hl, MEM_END
; monitor_memtest_loop:
; ; Save current byte value for later restore
; ld c, (hl)
; ; Write 0xFF
; ld c, (hl)
; ; Write 0xFF
; ld a, 0xFF
; ld (hl), a
; ; Read and compare 0xFF
@ -583,8 +601,8 @@ monitor_copyTermToAppMem:
; cp 0x00
; jp nz, monitor_memtest_badram
; ; Memory byte is good, restore previous value
; ld (hl), c
; ; Next one
; ld (hl), c
; ; Next one
; dec hl
; jp monitor_memtest_loop
; monitor_memtest_badram:
@ -592,15 +610,15 @@ monitor_copyTermToAppMem:
; ld bc, MON_RAMTEST_RAMSTART
; call Sys_Print
; ; Print last valid memory addr
; inc hl
; ld a, h
; call monitor_printHexByte
; ld a, l
; call monitor_printHexByte
; ; Newline
; ld a, 10
; call Sys_Printc
; ; Back to menu
; inc hl
; ld a, h
; call monitor_printHexByte
; ld a, l
; call monitor_printHexByte
; ; Newline
; ld a, 10
; call Sys_Printc
; ; Back to menu
; jp monitor_main_loop

View File

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