Compare commits
1 Commits
master
...
shifting-v
Author | SHA1 | Date | |
---|---|---|---|
|
6cce5209cc |
3
.gitmodules
vendored
@ -1,3 +0,0 @@
|
||||
[submodule "pat80-emulator/z80-python-emulator"]
|
||||
path = pat80-emulator/z80-python-emulator
|
||||
url = https://git.ichibi.eu/penguin86/z80-python-emulator.git
|
47
NOTES.md
@ -1,47 +0,0 @@
|
||||
# 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`
|
115
README.md
@ -1,72 +1,47 @@
|
||||
# Pat80
|
||||
# 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`
|
||||
|
||||
Pat80 Home Computer is an attempt to develop the simplest possible Zilog Z80 based computer in 2021.
|
||||
|
||||
## Hardware
|
||||
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:
|
||||
|
||||

|
||||
|
||||
### 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.
|
||||
|
||||

|
||||
|
||||
## Emulator
|
||||
The pat80 memory monitor (the os) can be run in a z80 emulator. You can find a very simple one I wrote ad hoc in `pat80-emulator`. It's based (and depends on) the excellent [Z80 emulator library by redcode](https://github.com/redcode/Z80). Follow the instructions on `pat80-emulator/README.md` to build and run it.
|
||||
The emulator requires a rom file to run. To obtain a pat80 rom, head to `pat80-computer/software/z80-assembly/os/` and run `make run` to build the rom from assembly and start the emulator. You will see some windows showing the emulated computer's memory and register status and the pat80 memory monitor prompt.
|
||||
|
||||

|
||||
|
||||
## 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.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
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).
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
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
|
||||
# C
|
||||
## Deploy
|
||||
### Compilare c:
|
||||
`sdcc -mz80 test.c`
|
||||
|
@ -1,3 +1,2 @@
|
||||
# Assets
|
||||
This folder contains all the media and text assets for presenting Pat80 to the web, print and other media
|
||||
|
||||
This folder contains all the media assets for presenting Pat80 to the web, print and other media
|
||||
|
@ -1,18 +0,0 @@
|
||||
# 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/>.
|
Before Width: | Height: | Size: 107 KiB |
Before Width: | Height: | Size: 110 KiB |
Before Width: | Height: | Size: 143 KiB |
Before Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 107 KiB |
Before Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 114 KiB |
@ -1,18 +0,0 @@
|
||||
# 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/>.
|
@ -1,18 +0,0 @@
|
||||
(module SW_TH_DPDT_Pushbutton_Latched (layer F.Cu) (tedit 6066BDE4)
|
||||
(fp_text reference SW54 (at 0 0.5) (layer F.SilkS)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value CAPSLK (at 0 -0.5) (layer F.Fab)
|
||||
(effects (font (size 1 1) (thickness 0.15)))
|
||||
)
|
||||
(fp_line (start -4 2) (end 4 2) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start 4 2) (end 4 10) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start 4 10) (end -4 10) (layer F.SilkS) (width 0.12))
|
||||
(fp_line (start -4 10) (end -4 2) (layer F.SilkS) (width 0.12))
|
||||
(pad 5 thru_hole circle (at 2.54 3.429) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
|
||||
(pad 6 thru_hole circle (at 2.54 5.969) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
|
||||
(pad 4 thru_hole circle (at 2.54 8.509) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
|
||||
(pad 2 thru_hole circle (at -2.54 8.509) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
|
||||
(pad 3 thru_hole circle (at -2.54 5.969) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
|
||||
(pad 1 thru_hole circle (at -2.54 3.429) (size 1.524 1.524) (drill 0.762) (layers *.Cu *.Mask))
|
||||
)
|
@ -1,3 +0,0 @@
|
||||
EESchema-DOCLIB Version 2.0
|
||||
#
|
||||
#End Doc Library
|
@ -1,4 +0,0 @@
|
||||
EESchema-LIBRARY Version 2.4
|
||||
#encoding utf-8
|
||||
#
|
||||
#End Library
|
@ -1,18 +0,0 @@
|
||||
# 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/>.
|
@ -1,21 +0,0 @@
|
||||
# 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/>.
|
@ -1,18 +0,0 @@
|
||||
# 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/>.
|
@ -1,566 +0,0 @@
|
||||
EESchema-LIBRARY Version 2.4
|
||||
#encoding utf-8
|
||||
#
|
||||
# 74xx_74HC04
|
||||
#
|
||||
DEF 74xx_74HC04 U 0 40 Y Y 7 L N
|
||||
F0 "U" 0 50 50 H V C CNN
|
||||
F1 "74xx_74HC04" 0 -50 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
ALIAS 74HC14 74HC04 74LS14
|
||||
$FPLIST
|
||||
DIP?14*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -200 300 200 -300 7 1 10 f
|
||||
P 4 1 0 10 -150 150 -150 -150 150 0 -150 150 f
|
||||
P 4 2 0 10 -150 150 -150 -150 150 0 -150 150 f
|
||||
P 4 3 0 10 -150 150 -150 -150 150 0 -150 150 f
|
||||
P 4 4 0 10 -150 150 -150 -150 150 0 -150 150 f
|
||||
P 4 5 0 10 -150 150 -150 -150 150 0 -150 150 f
|
||||
P 4 6 0 10 -150 150 -150 -150 150 0 -150 150 f
|
||||
X ~ 1 -300 0 150 R 50 50 1 0 I
|
||||
X ~ 2 300 0 150 L 50 50 1 0 O I
|
||||
X ~ 3 -300 0 150 R 50 50 2 0 I
|
||||
X ~ 4 300 0 150 L 50 50 2 0 O I
|
||||
X ~ 5 -300 0 150 R 50 50 3 0 I
|
||||
X ~ 6 300 0 150 L 50 50 3 0 O I
|
||||
X ~ 8 300 0 150 L 50 50 4 0 O I
|
||||
X ~ 9 -300 0 150 R 50 50 4 0 I
|
||||
X ~ 10 300 0 150 L 50 50 5 0 O I
|
||||
X ~ 11 -300 0 150 R 50 50 5 0 I
|
||||
X ~ 12 300 0 150 L 50 50 6 0 O I
|
||||
X ~ 13 -300 0 150 R 50 50 6 0 I
|
||||
X VCC 14 0 500 200 D 50 50 7 0 W
|
||||
X GND 7 0 -500 200 U 50 50 7 0 W
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# 74xx_74HC244
|
||||
#
|
||||
DEF 74xx_74HC244 U 0 40 Y Y 1 L N
|
||||
F0 "U" -300 650 50 H V C CNN
|
||||
F1 "74xx_74HC244" -300 -650 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
ALIAS 74HCT244
|
||||
$FPLIST
|
||||
TSSOP*4.4x6.5mm*P0.65mm*
|
||||
SSOP*4.4x6.5mm*P0.65mm*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -300 600 300 -600 1 1 10 f
|
||||
P 4 1 0 6 50 0 -50 50 -50 -50 50 0 N
|
||||
X 1OE 1 -500 -400 200 R 50 50 1 0 I I
|
||||
X GND 10 0 -800 200 U 50 50 1 0 W
|
||||
X 2A3 11 -500 -200 200 R 50 50 1 0 I
|
||||
X 1Y3 12 500 200 200 L 50 50 1 0 O
|
||||
X 2A2 13 -500 -100 200 R 50 50 1 0 I
|
||||
X 1Y2 14 500 300 200 L 50 50 1 0 O
|
||||
X 2A1 15 -500 0 200 R 50 50 1 0 I
|
||||
X 1Y1 16 500 400 200 L 50 50 1 0 O
|
||||
X 2A0 17 -500 100 200 R 50 50 1 0 I
|
||||
X 1Y0 18 500 500 200 L 50 50 1 0 O
|
||||
X 2OE 19 -500 -500 200 R 50 50 1 0 I I
|
||||
X 1A0 2 -500 500 200 R 50 50 1 0 I
|
||||
X VCC 20 0 800 200 D 50 50 1 0 W
|
||||
X 2Y0 3 500 100 200 L 50 50 1 0 O
|
||||
X 1A1 4 -500 400 200 R 50 50 1 0 I
|
||||
X 2Y1 5 500 0 200 L 50 50 1 0 O
|
||||
X 1A2 6 -500 300 200 R 50 50 1 0 I
|
||||
X 2Y2 7 500 -100 200 L 50 50 1 0 O
|
||||
X 1A3 8 -500 200 200 R 50 50 1 0 I
|
||||
X 2Y3 9 500 -200 200 L 50 50 1 0 O
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# 74xx_74HC245
|
||||
#
|
||||
DEF 74xx_74HC245 U 0 40 Y Y 1 L N
|
||||
F0 "U" -300 650 50 H V C CNN
|
||||
F1 "74xx_74HC245" -300 -650 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
ALIAS 74HC245
|
||||
$FPLIST
|
||||
DIP?20*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -300 600 300 -600 1 1 10 f
|
||||
P 3 1 0 0 -25 -50 -25 50 25 50 N
|
||||
P 4 1 0 0 -50 -50 25 -50 25 50 50 50 N
|
||||
X A->B 1 -500 -400 200 R 50 50 1 0 I
|
||||
X GND 10 0 -800 200 U 50 50 1 0 W
|
||||
X B7 11 500 -200 200 L 50 50 1 0 T
|
||||
X B6 12 500 -100 200 L 50 50 1 0 T
|
||||
X B5 13 500 0 200 L 50 50 1 0 T
|
||||
X B4 14 500 100 200 L 50 50 1 0 T
|
||||
X B3 15 500 200 200 L 50 50 1 0 T
|
||||
X B2 16 500 300 200 L 50 50 1 0 T
|
||||
X B1 17 500 400 200 L 50 50 1 0 T
|
||||
X B0 18 500 500 200 L 50 50 1 0 T
|
||||
X CE 19 -500 -500 200 R 50 50 1 0 I I
|
||||
X A0 2 -500 500 200 R 50 50 1 0 T
|
||||
X VCC 20 0 800 200 D 50 50 1 0 W
|
||||
X A1 3 -500 400 200 R 50 50 1 0 T
|
||||
X A2 4 -500 300 200 R 50 50 1 0 T
|
||||
X A3 5 -500 200 200 R 50 50 1 0 T
|
||||
X A4 6 -500 100 200 R 50 50 1 0 T
|
||||
X A5 7 -500 0 200 R 50 50 1 0 T
|
||||
X A6 8 -500 -100 200 R 50 50 1 0 T
|
||||
X A7 9 -500 -200 200 R 50 50 1 0 T
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# 74xx_74LS138
|
||||
#
|
||||
DEF 74xx_74LS138 U 0 40 Y Y 1 L N
|
||||
F0 "U" -300 450 50 H V C CNN
|
||||
F1 "74xx_74LS138" -300 -550 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
DIP?16*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -300 400 300 -500 1 1 10 f
|
||||
X A0 1 -500 300 200 R 50 50 1 0 I
|
||||
X O5 10 500 -200 200 L 50 50 1 0 O V
|
||||
X O4 11 500 -100 200 L 50 50 1 0 O V
|
||||
X O3 12 500 0 200 L 50 50 1 0 O V
|
||||
X O2 13 500 100 200 L 50 50 1 0 O V
|
||||
X O1 14 500 200 200 L 50 50 1 0 O V
|
||||
X O0 15 500 300 200 L 50 50 1 0 O V
|
||||
X VCC 16 0 600 200 D 50 50 1 0 W
|
||||
X A1 2 -500 200 200 R 50 50 1 0 I
|
||||
X A2 3 -500 100 200 R 50 50 1 0 I
|
||||
X E1 4 -500 -400 200 R 50 50 1 0 I L
|
||||
X E2 5 -500 -300 200 R 50 50 1 0 I L
|
||||
X E3 6 -500 -200 200 R 50 50 1 0 I
|
||||
X O7 7 500 -400 200 L 50 50 1 0 O V
|
||||
X GND 8 0 -700 200 U 50 50 1 0 W
|
||||
X O6 9 500 -300 200 L 50 50 1 0 O V
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# 74xx_74LS32
|
||||
#
|
||||
DEF 74xx_74LS32 U 0 40 Y Y 5 L N
|
||||
F0 "U" 0 50 50 H V C CNN
|
||||
F1 "74xx_74LS32" 0 -50 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
DIP?14*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
A -360 0 258 354 -354 1 1 10 N -150 150 -150 -150
|
||||
A -47 -52 204 150 837 1 1 10 f 150 0 -24 150
|
||||
A -47 52 204 -150 -837 1 1 10 f 150 0 -24 -150
|
||||
A -360 0 258 354 -354 2 1 10 N -150 150 -150 -150
|
||||
A -47 -52 204 150 837 2 1 10 f 150 0 -24 150
|
||||
A -47 52 204 -150 -837 2 1 10 f 150 0 -24 -150
|
||||
A -360 0 258 354 -354 3 1 10 N -150 150 -150 -150
|
||||
A -47 -52 204 150 837 3 1 10 f 150 0 -24 150
|
||||
A -47 52 204 -150 -837 3 1 10 f 150 0 -24 -150
|
||||
A -360 0 258 354 -354 4 1 10 N -150 150 -150 -150
|
||||
A -47 -52 204 150 837 4 1 10 f 150 0 -24 150
|
||||
A -47 52 204 -150 -837 4 1 10 f 150 0 -24 -150
|
||||
A 0 0 150 -899 899 1 2 10 f 0 -150 0 150
|
||||
A 0 0 150 -899 899 2 2 10 f 0 -150 0 150
|
||||
A 0 0 150 -899 899 3 2 10 f 0 -150 0 150
|
||||
A 0 0 150 -899 899 4 2 10 f 0 -150 0 150
|
||||
S -200 300 200 -300 5 1 10 f
|
||||
P 2 1 1 10 -150 -150 -25 -150 f
|
||||
P 2 1 1 10 -150 150 -25 150 f
|
||||
P 12 1 1 -1000 -25 150 -150 150 -150 150 -140 134 -119 89 -106 41 -103 -10 -109 -59 -125 -107 -150 -150 -150 -150 -25 -150 f
|
||||
P 2 2 1 10 -150 -150 -25 -150 f
|
||||
P 2 2 1 10 -150 150 -25 150 f
|
||||
P 12 2 1 -1000 -25 150 -150 150 -150 150 -140 134 -119 89 -106 41 -103 -10 -109 -59 -125 -107 -150 -150 -150 -150 -25 -150 f
|
||||
P 2 3 1 10 -150 -150 -25 -150 f
|
||||
P 2 3 1 10 -150 150 -25 150 f
|
||||
P 12 3 1 -1000 -25 150 -150 150 -150 150 -140 134 -119 89 -106 41 -103 -10 -109 -59 -125 -107 -150 -150 -150 -150 -25 -150 f
|
||||
P 2 4 1 10 -150 -150 -25 -150 f
|
||||
P 2 4 1 10 -150 150 -25 150 f
|
||||
P 12 4 1 -1000 -25 150 -150 150 -150 150 -140 134 -119 89 -106 41 -103 -10 -109 -59 -125 -107 -150 -150 -150 -150 -25 -150 f
|
||||
P 4 1 2 10 0 150 -150 150 -150 -150 0 -150 f
|
||||
P 4 2 2 10 0 150 -150 150 -150 -150 0 -150 f
|
||||
P 4 3 2 10 0 150 -150 150 -150 -150 0 -150 f
|
||||
P 4 4 2 10 0 150 -150 150 -150 -150 0 -150 f
|
||||
X VCC 14 0 500 200 D 50 50 5 0 W
|
||||
X GND 7 0 -500 200 U 50 50 5 0 W
|
||||
X ~ 1 -300 100 170 R 50 50 1 1 I
|
||||
X ~ 2 -300 -100 170 R 50 50 1 1 I
|
||||
X ~ 3 300 0 150 L 50 50 1 1 O
|
||||
X ~ 4 -300 100 170 R 50 50 2 1 I
|
||||
X ~ 5 -300 -100 170 R 50 50 2 1 I
|
||||
X ~ 6 300 0 150 L 50 50 2 1 O
|
||||
X ~ 10 -300 -100 170 R 50 50 3 1 I
|
||||
X ~ 8 300 0 150 L 50 50 3 1 O
|
||||
X ~ 9 -300 100 170 R 50 50 3 1 I
|
||||
X ~ 11 300 0 150 L 50 50 4 1 O
|
||||
X ~ 12 -300 100 170 R 50 50 4 1 I
|
||||
X ~ 13 -300 -100 170 R 50 50 4 1 I
|
||||
X ~ 1 -300 100 150 R 50 50 1 2 I I
|
||||
X ~ 2 -300 -100 150 R 50 50 1 2 I I
|
||||
X ~ 3 300 0 150 L 50 50 1 2 O I
|
||||
X ~ 4 -300 100 150 R 50 50 2 2 I I
|
||||
X ~ 5 -300 -100 150 R 50 50 2 2 I I
|
||||
X ~ 6 300 0 150 L 50 50 2 2 O I
|
||||
X ~ 10 -300 -100 150 R 50 50 3 2 I I
|
||||
X ~ 8 300 0 150 L 50 50 3 2 O I
|
||||
X ~ 9 -300 100 150 R 50 50 3 2 I I
|
||||
X ~ 11 300 0 150 L 50 50 4 2 O I
|
||||
X ~ 12 -300 100 150 R 50 50 4 2 I I
|
||||
X ~ 13 -300 -100 150 R 50 50 4 2 I I
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# CPU_Z80CPU
|
||||
#
|
||||
DEF CPU_Z80CPU U 0 40 Y Y 1 F N
|
||||
F0 "U" -550 1400 50 H V L CNN
|
||||
F1 "CPU_Z80CPU" 250 1400 50 H V L CNN
|
||||
F2 "" 0 400 50 H I C CNN
|
||||
F3 "" 0 400 50 H I C CNN
|
||||
$FPLIST
|
||||
DIP*
|
||||
PDIP*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -550 1350 550 -1350 0 1 10 f
|
||||
X A11 1 700 100 150 L 50 50 1 1 O
|
||||
X D6 10 700 -1100 150 L 50 50 1 1 B
|
||||
X VCC 11 0 1500 150 D 50 50 1 1 W
|
||||
X D2 12 700 -700 150 L 50 50 1 1 B
|
||||
X D7 13 700 -1200 150 L 50 50 1 1 B
|
||||
X D0 14 700 -500 150 L 50 50 1 1 B
|
||||
X D1 15 700 -600 150 L 50 50 1 1 B
|
||||
X ~INT~ 16 -700 500 150 R 50 50 1 1 I
|
||||
X ~NMI~ 17 -700 600 150 R 50 50 1 1 I
|
||||
X ~HALT~ 18 -700 -100 150 R 50 50 1 1 O
|
||||
X ~MREQ~ 19 -700 -700 150 R 50 50 1 1 O
|
||||
X A12 2 700 0 150 L 50 50 1 1 O
|
||||
X ~IORQ~ 20 -700 -800 150 R 50 50 1 1 O
|
||||
X ~RD~ 21 -700 -500 150 R 50 50 1 1 O
|
||||
X ~WR~ 22 -700 -600 150 R 50 50 1 1 O
|
||||
X ~BUSACK~ 23 -700 -1200 150 R 50 50 1 1 O
|
||||
X ~WAIT~ 24 -700 0 150 R 50 50 1 1 I
|
||||
X ~BUSRQ~ 25 -700 -1100 150 R 50 50 1 1 I
|
||||
X ~RESET~ 26 -700 1200 150 R 50 50 1 1 I
|
||||
X ~M1~ 27 -700 200 150 R 50 50 1 1 O
|
||||
X ~RFSH~ 28 -700 100 150 R 50 50 1 1 O
|
||||
X GND 29 0 -1500 150 U 50 50 1 1 W
|
||||
X A13 3 700 -100 150 L 50 50 1 1 O
|
||||
X A0 30 700 1200 150 L 50 50 1 1 O
|
||||
X A1 31 700 1100 150 L 50 50 1 1 O
|
||||
X A2 32 700 1000 150 L 50 50 1 1 O
|
||||
X A3 33 700 900 150 L 50 50 1 1 O
|
||||
X A4 34 700 800 150 L 50 50 1 1 O
|
||||
X A5 35 700 700 150 L 50 50 1 1 O
|
||||
X A6 36 700 600 150 L 50 50 1 1 O
|
||||
X A7 37 700 500 150 L 50 50 1 1 O
|
||||
X A8 38 700 400 150 L 50 50 1 1 O
|
||||
X A9 39 700 300 150 L 50 50 1 1 O
|
||||
X A14 4 700 -200 150 L 50 50 1 1 O
|
||||
X A10 40 700 200 150 L 50 50 1 1 O
|
||||
X A15 5 700 -300 150 L 50 50 1 1 O
|
||||
X ~CLK~ 6 -700 900 150 R 50 50 1 1 I C
|
||||
X D4 7 700 -900 150 L 50 50 1 1 B
|
||||
X D3 8 700 -800 150 L 50 50 1 1 B
|
||||
X D5 9 700 -1000 150 L 50 50 1 1 B
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Connector_Conn_01x01_Male
|
||||
#
|
||||
DEF Connector_Conn_01x01_Male J 0 40 Y N 1 F N
|
||||
F0 "J" 0 100 50 H V C CNN
|
||||
F1 "Connector_Conn_01x01_Male" 0 -100 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
Connector*:*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S 34 5 0 -5 1 1 6 F
|
||||
P 2 1 1 6 50 0 34 0 N
|
||||
X Pin_1 1 200 0 150 L 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Connector_Conn_01x02_Male
|
||||
#
|
||||
DEF Connector_Conn_01x02_Male J 0 40 Y N 1 F N
|
||||
F0 "J" 0 100 50 H V C CNN
|
||||
F1 "Connector_Conn_01x02_Male" 0 -200 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
Connector*:*_1x??_*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S 34 -95 0 -105 1 1 6 F
|
||||
S 34 5 0 -5 1 1 6 F
|
||||
P 2 1 1 6 50 -100 34 -100 N
|
||||
P 2 1 1 6 50 0 34 0 N
|
||||
X Pin_1 1 200 0 150 L 50 50 1 1 P
|
||||
X Pin_2 2 200 -100 150 L 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Connector_Generic_Conn_01x26
|
||||
#
|
||||
DEF Connector_Generic_Conn_01x26 J 0 40 Y N 1 F N
|
||||
F0 "J" 0 1300 50 H V C CNN
|
||||
F1 "Connector_Generic_Conn_01x26" 0 -1400 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
Connector*:*_1x??_*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -50 -1295 0 -1305 1 1 6 N
|
||||
S -50 -1195 0 -1205 1 1 6 N
|
||||
S -50 -1095 0 -1105 1 1 6 N
|
||||
S -50 -995 0 -1005 1 1 6 N
|
||||
S -50 -895 0 -905 1 1 6 N
|
||||
S -50 -795 0 -805 1 1 6 N
|
||||
S -50 -695 0 -705 1 1 6 N
|
||||
S -50 -595 0 -605 1 1 6 N
|
||||
S -50 -495 0 -505 1 1 6 N
|
||||
S -50 -395 0 -405 1 1 6 N
|
||||
S -50 -295 0 -305 1 1 6 N
|
||||
S -50 -195 0 -205 1 1 6 N
|
||||
S -50 -95 0 -105 1 1 6 N
|
||||
S -50 5 0 -5 1 1 6 N
|
||||
S -50 105 0 95 1 1 6 N
|
||||
S -50 205 0 195 1 1 6 N
|
||||
S -50 305 0 295 1 1 6 N
|
||||
S -50 405 0 395 1 1 6 N
|
||||
S -50 505 0 495 1 1 6 N
|
||||
S -50 605 0 595 1 1 6 N
|
||||
S -50 705 0 695 1 1 6 N
|
||||
S -50 805 0 795 1 1 6 N
|
||||
S -50 905 0 895 1 1 6 N
|
||||
S -50 1005 0 995 1 1 6 N
|
||||
S -50 1105 0 1095 1 1 6 N
|
||||
S -50 1205 0 1195 1 1 6 N
|
||||
S -50 1250 50 -1350 1 1 10 f
|
||||
X Pin_1 1 -200 1200 150 R 50 50 1 1 P
|
||||
X Pin_10 10 -200 300 150 R 50 50 1 1 P
|
||||
X Pin_11 11 -200 200 150 R 50 50 1 1 P
|
||||
X Pin_12 12 -200 100 150 R 50 50 1 1 P
|
||||
X Pin_13 13 -200 0 150 R 50 50 1 1 P
|
||||
X Pin_14 14 -200 -100 150 R 50 50 1 1 P
|
||||
X Pin_15 15 -200 -200 150 R 50 50 1 1 P
|
||||
X Pin_16 16 -200 -300 150 R 50 50 1 1 P
|
||||
X Pin_17 17 -200 -400 150 R 50 50 1 1 P
|
||||
X Pin_18 18 -200 -500 150 R 50 50 1 1 P
|
||||
X Pin_19 19 -200 -600 150 R 50 50 1 1 P
|
||||
X Pin_2 2 -200 1100 150 R 50 50 1 1 P
|
||||
X Pin_20 20 -200 -700 150 R 50 50 1 1 P
|
||||
X Pin_21 21 -200 -800 150 R 50 50 1 1 P
|
||||
X Pin_22 22 -200 -900 150 R 50 50 1 1 P
|
||||
X Pin_23 23 -200 -1000 150 R 50 50 1 1 P
|
||||
X Pin_24 24 -200 -1100 150 R 50 50 1 1 P
|
||||
X Pin_25 25 -200 -1200 150 R 50 50 1 1 P
|
||||
X Pin_26 26 -200 -1300 150 R 50 50 1 1 P
|
||||
X Pin_3 3 -200 1000 150 R 50 50 1 1 P
|
||||
X Pin_4 4 -200 900 150 R 50 50 1 1 P
|
||||
X Pin_5 5 -200 800 150 R 50 50 1 1 P
|
||||
X Pin_6 6 -200 700 150 R 50 50 1 1 P
|
||||
X Pin_7 7 -200 600 150 R 50 50 1 1 P
|
||||
X Pin_8 8 -200 500 150 R 50 50 1 1 P
|
||||
X Pin_9 9 -200 400 150 R 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Device_C
|
||||
#
|
||||
DEF Device_C C 0 10 N Y 1 F N
|
||||
F0 "C" 25 100 50 H V L CNN
|
||||
F1 "Device_C" 25 -100 50 H V L CNN
|
||||
F2 "" 38 -150 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
C_*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
P 2 0 1 20 -80 -30 80 -30 N
|
||||
P 2 0 1 20 -80 30 80 30 N
|
||||
X ~ 1 0 150 110 D 50 50 1 1 P
|
||||
X ~ 2 0 -150 110 U 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Device_Crystal
|
||||
#
|
||||
DEF Device_Crystal Y 0 40 N N 1 F N
|
||||
F0 "Y" 0 150 50 H V C CNN
|
||||
F1 "Device_Crystal" 0 -150 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
Crystal*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -45 100 45 -100 0 1 12 N
|
||||
P 2 0 1 0 -100 0 -75 0 N
|
||||
P 2 0 1 20 -75 -50 -75 50 N
|
||||
P 2 0 1 20 75 -50 75 50 N
|
||||
P 2 0 1 0 100 0 75 0 N
|
||||
X 1 1 -150 0 50 R 50 50 1 1 P
|
||||
X 2 2 150 0 50 L 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Device_LED
|
||||
#
|
||||
DEF Device_LED D 0 40 N N 1 F N
|
||||
F0 "D" 0 100 50 H V C CNN
|
||||
F1 "Device_LED" 0 -100 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
LED*
|
||||
LED_SMD:*
|
||||
LED_THT:*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
P 2 0 1 8 -50 -50 -50 50 N
|
||||
P 2 0 1 0 -50 0 50 0 N
|
||||
P 4 0 1 8 50 -50 50 50 -50 0 50 -50 N
|
||||
P 5 0 1 0 -120 -30 -180 -90 -150 -90 -180 -90 -180 -60 N
|
||||
P 5 0 1 0 -70 -30 -130 -90 -100 -90 -130 -90 -130 -60 N
|
||||
X K 1 -150 0 100 R 50 50 1 1 P
|
||||
X A 2 150 0 100 L 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Device_R
|
||||
#
|
||||
DEF Device_R R 0 0 N Y 1 F N
|
||||
F0 "R" 80 0 50 V V C CNN
|
||||
F1 "Device_R" 0 0 50 V V C CNN
|
||||
F2 "" -70 0 50 V I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
R_*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -40 -100 40 100 0 1 10 N
|
||||
X ~ 1 0 150 50 D 50 50 1 1 P
|
||||
X ~ 2 0 -150 50 U 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Memory_EEPROM_28C256
|
||||
#
|
||||
DEF Memory_EEPROM_28C256 U 0 20 Y Y 1 F N
|
||||
F0 "U" -300 1050 50 H V C CNN
|
||||
F1 "Memory_EEPROM_28C256" 100 -1050 50 H V L CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
DIP*W15.24mm*
|
||||
SOIC*7.5x17.9mm*P1.27mm*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -300 1000 300 -1000 1 1 10 f
|
||||
X A14 1 -400 -500 100 R 50 50 1 1 I
|
||||
X A0 10 -400 900 100 R 50 50 1 1 I
|
||||
X D0 11 400 900 100 L 50 50 1 1 T
|
||||
X D1 12 400 800 100 L 50 50 1 1 T
|
||||
X D2 13 400 700 100 L 50 50 1 1 T
|
||||
X GND 14 0 -1100 100 U 50 50 1 1 W
|
||||
X D3 15 400 600 100 L 50 50 1 1 T
|
||||
X D4 16 400 500 100 L 50 50 1 1 T
|
||||
X D5 17 400 400 100 L 50 50 1 1 T
|
||||
X D6 18 400 300 100 L 50 50 1 1 T
|
||||
X D7 19 400 200 100 L 50 50 1 1 T
|
||||
X A12 2 -400 -300 100 R 50 50 1 1 I
|
||||
X ~CS 20 -400 -900 100 R 50 50 1 1 I
|
||||
X A10 21 -400 -100 100 R 50 50 1 1 I
|
||||
X ~OE 22 -400 -800 100 R 50 50 1 1 I
|
||||
X A11 23 -400 -200 100 R 50 50 1 1 I
|
||||
X A9 24 -400 0 100 R 50 50 1 1 I
|
||||
X A8 25 -400 100 100 R 50 50 1 1 I
|
||||
X A13 26 -400 -400 100 R 50 50 1 1 I
|
||||
X ~WE 27 -400 -700 100 R 50 50 1 1 I
|
||||
X VCC 28 0 1100 100 D 50 50 1 1 W
|
||||
X A7 3 -400 200 100 R 50 50 1 1 I
|
||||
X A6 4 -400 300 100 R 50 50 1 1 I
|
||||
X A5 5 -400 400 100 R 50 50 1 1 I
|
||||
X A4 6 -400 500 100 R 50 50 1 1 I
|
||||
X A3 7 -400 600 100 R 50 50 1 1 I
|
||||
X A2 8 -400 700 100 R 50 50 1 1 I
|
||||
X A1 9 -400 800 100 R 50 50 1 1 I
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Regulator_Linear_LM7805_TO220
|
||||
#
|
||||
DEF Regulator_Linear_LM7805_TO220 U 0 10 Y Y 1 F N
|
||||
F0 "U" -150 125 50 H V C CNN
|
||||
F1 "Regulator_Linear_LM7805_TO220" 0 125 50 H V L CNN
|
||||
F2 "Package_TO_SOT_THT:TO-220-3_Vertical" 0 225 50 H I C CIN
|
||||
F3 "" 0 -50 50 H I C CNN
|
||||
ALIAS LM7806_TO220 LM7808_TO220 LM7809_TO220 LM7810_TO220 LM7812_TO220 LM7815_TO220 LM7818_TO220 LM7824_TO220 LM78M05_TO220 SPX2920U-3.3_TO220 SPX2920U-5.0_TO220 LF15_TO220 LF18_TO220 LF25_TO220 LF33_TO220 LF50_TO220 LF60_TO220 LF80_TO220 LF85_TO220 LF120_TO220 LF47_TO220 LF90_TO220 LM341T-05_TO220 LM341T-12_TO220 LM341T-15_TO220 LM2937xT
|
||||
$FPLIST
|
||||
TO?220*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -200 75 200 -200 0 1 10 f
|
||||
X VI 1 -300 0 100 R 50 50 1 1 W
|
||||
X GND 2 0 -300 100 U 50 50 1 1 W
|
||||
X VO 3 300 0 100 L 50 50 1 1 w
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Switch_SW_Push
|
||||
#
|
||||
DEF Switch_SW_Push SW 0 40 N N 1 F N
|
||||
F0 "SW" 50 100 50 H V L CNN
|
||||
F1 "Switch_SW_Push" 0 -60 50 H V C CNN
|
||||
F2 "" 0 200 50 H I C CNN
|
||||
F3 "" 0 200 50 H I C CNN
|
||||
DRAW
|
||||
C -80 0 20 0 1 0 N
|
||||
C 80 0 20 0 1 0 N
|
||||
P 2 0 1 0 0 50 0 120 N
|
||||
P 2 0 1 0 100 50 -100 50 N
|
||||
X 1 1 -200 0 100 R 50 50 0 1 P
|
||||
X 2 2 200 0 100 L 50 50 0 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# power_GND
|
||||
#
|
||||
DEF power_GND #PWR 0 0 Y Y 1 F P
|
||||
F0 "#PWR" 0 -250 50 H I C CNN
|
||||
F1 "power_GND" 0 -150 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
DRAW
|
||||
P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N
|
||||
X GND 1 0 0 0 D 50 50 1 1 W N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# power_VCC
|
||||
#
|
||||
DEF power_VCC #PWR 0 0 Y Y 1 F P
|
||||
F0 "#PWR" 0 -150 50 H I C CNN
|
||||
F1 "power_VCC" 0 150 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
DRAW
|
||||
C 0 75 25 0 1 0 N
|
||||
P 2 0 1 0 0 0 0 50 N
|
||||
X VCC 1 0 0 0 U 50 50 1 1 W N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
@ -1,252 +0,0 @@
|
||||
update=mer 24 mar 2021 21:27:02 CET
|
||||
version=1
|
||||
last_client=kicad
|
||||
[general]
|
||||
version=1
|
||||
RootSch=
|
||||
BoardNm=
|
||||
[cvpcb]
|
||||
version=1
|
||||
NetIExt=net
|
||||
[eeschema]
|
||||
version=1
|
||||
LibDir=
|
||||
[eeschema/libraries]
|
||||
[schematic_editor]
|
||||
version=1
|
||||
PageLayoutDescrFile=
|
||||
PlotDirectoryName=
|
||||
SubpartIdSeparator=0
|
||||
SubpartFirstId=65
|
||||
NetFmtName=Pcbnew
|
||||
SpiceAjustPassiveValues=0
|
||||
LabSize=50
|
||||
ERC_TestSimilarLabels=1
|
||||
[pcbnew]
|
||||
version=1
|
||||
PageLayoutDescrFile=
|
||||
LastNetListRead=pat80.net
|
||||
CopperLayerCount=2
|
||||
BoardThickness=1.6
|
||||
AllowMicroVias=0
|
||||
AllowBlindVias=0
|
||||
RequireCourtyardDefinitions=0
|
||||
ProhibitOverlappingCourtyards=1
|
||||
MinTrackWidth=0.2
|
||||
MinViaDiameter=0.4
|
||||
MinViaDrill=0.3
|
||||
MinMicroViaDiameter=0.2
|
||||
MinMicroViaDrill=0.09999999999999999
|
||||
MinHoleToHole=0.25
|
||||
TrackWidth1=0.25
|
||||
TrackWidth2=0.25
|
||||
TrackWidth3=0.5
|
||||
ViaDiameter1=0.8
|
||||
ViaDrill1=0.4
|
||||
ViaDiameter2=1.5
|
||||
ViaDrill2=0.5
|
||||
dPairWidth1=0.2
|
||||
dPairGap1=0.25
|
||||
dPairViaGap1=0.25
|
||||
SilkLineWidth=0.12
|
||||
SilkTextSizeV=1
|
||||
SilkTextSizeH=1
|
||||
SilkTextSizeThickness=0.15
|
||||
SilkTextItalic=0
|
||||
SilkTextUpright=1
|
||||
CopperLineWidth=0.2
|
||||
CopperTextSizeV=1.5
|
||||
CopperTextSizeH=1.5
|
||||
CopperTextThickness=0.3
|
||||
CopperTextItalic=0
|
||||
CopperTextUpright=1
|
||||
EdgeCutLineWidth=0.05
|
||||
CourtyardLineWidth=0.05
|
||||
OthersLineWidth=0.15
|
||||
OthersTextSizeV=1
|
||||
OthersTextSizeH=1
|
||||
OthersTextSizeThickness=0.15
|
||||
OthersTextItalic=0
|
||||
OthersTextUpright=1
|
||||
SolderMaskClearance=0
|
||||
SolderMaskMinWidth=0
|
||||
SolderPasteClearance=0
|
||||
SolderPasteRatio=-0
|
||||
[pcbnew/Layer.F.Cu]
|
||||
Name=F.Cu
|
||||
Type=0
|
||||
Enabled=1
|
||||
[pcbnew/Layer.In1.Cu]
|
||||
Name=In1.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In2.Cu]
|
||||
Name=In2.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In3.Cu]
|
||||
Name=In3.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In4.Cu]
|
||||
Name=In4.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In5.Cu]
|
||||
Name=In5.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In6.Cu]
|
||||
Name=In6.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In7.Cu]
|
||||
Name=In7.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In8.Cu]
|
||||
Name=In8.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In9.Cu]
|
||||
Name=In9.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In10.Cu]
|
||||
Name=In10.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In11.Cu]
|
||||
Name=In11.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In12.Cu]
|
||||
Name=In12.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In13.Cu]
|
||||
Name=In13.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In14.Cu]
|
||||
Name=In14.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In15.Cu]
|
||||
Name=In15.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In16.Cu]
|
||||
Name=In16.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In17.Cu]
|
||||
Name=In17.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In18.Cu]
|
||||
Name=In18.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In19.Cu]
|
||||
Name=In19.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In20.Cu]
|
||||
Name=In20.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In21.Cu]
|
||||
Name=In21.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In22.Cu]
|
||||
Name=In22.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In23.Cu]
|
||||
Name=In23.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In24.Cu]
|
||||
Name=In24.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In25.Cu]
|
||||
Name=In25.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In26.Cu]
|
||||
Name=In26.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In27.Cu]
|
||||
Name=In27.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In28.Cu]
|
||||
Name=In28.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In29.Cu]
|
||||
Name=In29.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In30.Cu]
|
||||
Name=In30.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.B.Cu]
|
||||
Name=B.Cu
|
||||
Type=0
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.Adhes]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.Adhes]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.Paste]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.Paste]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.SilkS]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.SilkS]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.Mask]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.Mask]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Dwgs.User]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Cmts.User]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Eco1.User]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Eco2.User]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Edge.Cuts]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Margin]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.CrtYd]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.CrtYd]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.Fab]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.Fab]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Rescue]
|
||||
Enabled=0
|
||||
[pcbnew/Netclasses]
|
||||
[pcbnew/Netclasses/Default]
|
||||
Name=Default
|
||||
Clearance=0.2
|
||||
TrackWidth=0.25
|
||||
ViaDiameter=0.8
|
||||
ViaDrill=0.4
|
||||
uViaDiameter=0.3
|
||||
uViaDrill=0.1
|
||||
dPairWidth=0.2
|
||||
dPairGap=0.25
|
||||
dPairViaGap=0.25
|
@ -1,2 +0,0 @@
|
||||
(sym_lib_table
|
||||
)
|
@ -1,5 +1,3 @@
|
||||
; @language: Z80 ASM
|
||||
|
||||
org 0xA000
|
||||
include '../../os/abi-generated.asm'
|
||||
|
||||
|
@ -1,4 +1,3 @@
|
||||
; @language: Z80 ASM
|
||||
;hd44780 lcd test procedure
|
||||
|
||||
LCD_INSTR_REG: EQU %00000000
|
||||
|
@ -1,4 +1,2 @@
|
||||
; @language: Z80 ASM
|
||||
|
||||
org 0xA000 ; Set starting position to ram
|
||||
include '../os/main.asm'
|
@ -1,23 +1,11 @@
|
||||
PAT80_EMU_PATH := "../../../../pat80-emulator/build/pat80-emulator"
|
||||
|
||||
build:
|
||||
os:
|
||||
@echo "Building PAT80 rom..."
|
||||
@z80asm -i main.asm -o rom.bin || (exit 1)
|
||||
@echo "Generating label lookup table..."
|
||||
@z80asm -i main.asm -o rom.bin -L 2>&1 | grep "Sys_" > abi-generated.asm
|
||||
@echo "PAT80 Rom size:"
|
||||
@du -h rom.bin
|
||||
|
||||
write: build
|
||||
@echo "Stretching rom to EEPROM size..."
|
||||
@dd if=/dev/zero of=rom.bin bs=1 count=0 seek=8192
|
||||
@echo "Writing to EEPROM..."
|
||||
@minipro -w rom.bin -p "AT28C64B"
|
||||
|
||||
run: build
|
||||
@echo "Starting emulator" $(PAT80_EMU_PATH)
|
||||
@if [ -f "$(PAT80_EMU_PATH)" ]; then\
|
||||
"$(PAT80_EMU_PATH)" "rom.bin";\
|
||||
else\
|
||||
echo -e "\e[31mYou must build the emulator first. Check pat80-emulator/README.md\e[0m";\
|
||||
fi
|
||||
|
@ -1,24 +1,15 @@
|
||||
# Pat80 Operating System and Memory Monitor
|
||||
|
||||
## Intro
|
||||
|
||||
This folder contains the Pat80 Operating System.
|
||||
It is a System Monitor that makes available also some system API to access hardware (monitor, sound, keyboard, parallel terminal...).
|
||||
|
||||
## Build
|
||||
|
||||
### Requirements
|
||||
|
||||
z80asm
|
||||
minipro (if you want to write to an EEPROM)
|
||||
|
||||
z80asm, minipro
|
||||
### Make
|
||||
|
||||
The os can be **built** issuing command `make build`.
|
||||
The os can be build issuing command `make`.
|
||||
Two files will be generated:
|
||||
- `rom.bin` is the rom file to be flashed on the eeprom
|
||||
- `abi-generated.asm` is the file to be included in any Pat80 application to access system APIs (see README.md in ../applications/)
|
||||
|
||||
The os can be **written to an EEPROM** with a minipro-compatible programmer issuing command `make write`. This runs the build and then tries to write the rom to a MiniPRO.
|
||||
|
||||
The os can otherwise be **runned in the emulator** issuing command `make run`. This requires to have the emulator executable already built (follow the instructions on `pat80-emulator/README.md` to build it).
|
||||
The build routine will then try to write the rom to a MiniPRO.
|
||||
|
@ -1,102 +0,0 @@
|
||||
; TM404A 40x4 characters LCD display (based on SN76489 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/>.
|
||||
;
|
||||
|
||||
; --------------------------------------------------------------------------
|
||||
;
|
||||
; This is meant to be used with a 40x4 character display (containing a dual hd44780-compatible controller) like the TM404A.
|
||||
; This kind of display uses two controllers to overcome the hd44780 controllers limitation of 80 addressable characters.
|
||||
; It is seen as two separate displays, and thus have two EN pins. A finer implementation would apply some deconding logic to
|
||||
; an address bit to use a single port, but here we will use two different IO ports to save an IC.
|
||||
;
|
||||
; LCD config (IO port 0)
|
||||
LCD4004_TOP2LINES_PORT: EQU IO_2
|
||||
LCD4004_BOTTOM2LINES_PORT: EQU IO_3
|
||||
|
||||
|
||||
; PIN CONNECTIONS
|
||||
;
|
||||
; PIN DESCRIPTION TO PAT80 BUS PIN INFO
|
||||
; ---------------------------------------------------------------------------------------------------
|
||||
; 1‐8 DB7‐DB0 DATA BUS
|
||||
; 9 E1 (chip en 1) IOEN on LCD_TOP2LINES_PORT Chip enable for top 2 lines
|
||||
; 10 R/W IOWR
|
||||
; 11 RS A4 0: Command, 1: Data
|
||||
; 12 V0 - Power supply for contrast (approx. +0.5V)
|
||||
; 13 Vss - Ground
|
||||
; 14 VDD - Power Supply Supply voltage for logic (+5.0V)
|
||||
; 15 E2 (chip en 2) IOEN on LCD_BOTTOM2LINES_PORT Chip enable for bottom 2 lines
|
||||
; 16 NC ‐ No Connect
|
||||
;
|
||||
|
||||
|
||||
; The 40x4 LCD memory map is the following:
|
||||
;
|
||||
; LINE CHIP EN PIN START ADDR END ADDR
|
||||
; ----------------------------------------------------
|
||||
; 1 9 0x00 (0) 0x27 (39)
|
||||
; 2 9 0x40 (64) 0x67 (103)
|
||||
; 3 15 0x00 (0) 0x27 (39)
|
||||
; 4 15 0x40 (64) 0x67 (103)
|
||||
;
|
||||
; When we reach 0x40 on the first controller, we switch to the second.
|
||||
; When we reach 0x40 on the second controller, we must shift
|
||||
; all the lines up by one and position the cursor at 0x40.
|
||||
|
||||
; variables
|
||||
LCD4004_VAR_SPACE: EQU DRV_IO_2_VAR_SPACE
|
||||
LCD4004_CURSOR_POSITION_CONTROLLER: EQU DRV_IO_2_VAR_SPACE ; In which LCD controller is the cursor (0 or 1)
|
||||
LCD4004_CURSOR_POSITION_CONTROLLER_MEMORY: EQU DRV_IO_2_VAR_SPACE + 1 ; Memory position of the cursor inside the controller's memory
|
||||
|
||||
; functions
|
||||
|
||||
; Initializes the driver and the LCD screen
|
||||
LCD4004_Initialize:
|
||||
; The following are documented as in the datasheet: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
|
||||
; Function set: 0 0 0 0 1 DL N F 0 0 (DL: 8-bit/4-bit, N: number of display lines 2/1, F: Font type 11dots/8dots)
|
||||
; 0000111000 (8 bit, 2 lines)
|
||||
|
||||
; Display ON/OFF Control: 0 0 0 0 0 0 1 D C B (D: display on/off, C: cursor on/off, B: blinking cursor on/off)
|
||||
; 0000001111 (display on, blinking cursor)
|
||||
; Clear display
|
||||
; 0000000001
|
||||
|
||||
|
||||
; Move cursor (set DDRAM address in address counter)
|
||||
LCD4004_MoveCursor:
|
||||
; 0 0 1 AC6 AC5 AC4 AC3 AC2 AC1 AC0 (ACx: Address)
|
||||
|
||||
|
||||
; Sends string
|
||||
; @param BC Pointer to a null-terminated string first character
|
||||
LCD4004_print:
|
||||
ld a, (bc) ; bc is the pointer to passed string's first char
|
||||
cp 0 ; compare A content with 0 (subtract 0 from value and set zero flag Z if result is 0)
|
||||
ret z ; if prev compare is true (Z flag set), string is finished, return
|
||||
out (TERM_DATA_REG),a ; output char
|
||||
inc bc ; increment bc to move to next char
|
||||
jp LCD4004_print
|
||||
|
||||
; Writes a single character
|
||||
; @param A Value of character to print
|
||||
LCD4004_printc:
|
||||
out (TERM_DATA_REG),a
|
||||
ret
|
||||
|
@ -1,29 +1,12 @@
|
||||
; 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
|
||||
TERM_DATA_AVAIL_REG: EQU IO_0 + 1
|
||||
|
||||
; variables
|
||||
TERM_VAR_SPACE: EQU DRV_IO_0_VAR_SPACE
|
||||
TERM_VAR_SPACE: EQU DRV_VAR_SPACE + 128
|
||||
incoming_string: EQU TERM_VAR_SPACE
|
||||
|
||||
; functions
|
||||
|
@ -1,23 +1,5 @@
|
||||
; 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
|
||||
|
@ -1,24 +1,6 @@
|
||||
; 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
|
||||
|
@ -1,22 +1,4 @@
|
||||
; 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/
|
||||
;
|
||||
|
@ -1,5 +1,4 @@
|
||||
; PS/2 Keycode Mode 2 to ASCII mapping table
|
||||
; @language: Z80 ASM
|
||||
;
|
||||
; Keycodes 0 to 83
|
||||
|
||||
|
@ -1,23 +1,5 @@
|
||||
; TI SN76489 sound chip driver
|
||||
; TI SN76489 sound chip 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:
|
||||
; call Snd_init <-- inits sound (and silences default tone)
|
||||
|
@ -1,23 +1,5 @@
|
||||
; 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
|
||||
|
@ -1,22 +1,5 @@
|
||||
; 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
|
||||
|
||||
|
@ -1,22 +1,5 @@
|
||||
; 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)
|
||||
|
@ -1,4 +1,2 @@
|
||||
; @language: Z80 ASM
|
||||
|
||||
org 0xA000 ; Set starting position to ram
|
||||
include 'main.asm'
|
@ -2,24 +2,6 @@ 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
|
||||
@ -30,8 +12,8 @@ jp Sysinit ; Startup vector: DO NOT MOVE! Must be the first instruction
|
||||
; I/O MAP
|
||||
; I/O 0 (0x00 - 0x1F) Parallel terminal (uses addr 0x00 and 0x01)
|
||||
; I/O 1 (0x20 - 0x3F) Sound card (uses addr 0x20 only)
|
||||
; I/O 2 (0x40 - 0x5F) 40x4 LCD, first controller (lines 1 and 2)
|
||||
; I/O 3 (0x60 - 0x7F) 40x4 LCD, second controller (lines 3 and 4)
|
||||
; I/O 2 (0x40 - 0x5F) PS2 Keyboard (uses 0x40 and 0x41)
|
||||
; I/O 3 (0x60 - 0x7F)
|
||||
; I/O 4 (0x80 - 0x9F)
|
||||
; I/O 5 (0xA0 - 0xBF)
|
||||
; I/O 6 (0xC0 - 0xDF)
|
||||
@ -74,8 +56,8 @@ Sys_Printc:
|
||||
; Reads a single character
|
||||
; @return A The read character
|
||||
Sys_Readc:
|
||||
jp Term_readc
|
||||
;jp PS2Keyb_readc
|
||||
;jp Term_readc
|
||||
jp PS2Keyb_readc
|
||||
|
||||
; Reads a line
|
||||
; @return BC The pointer to a null-terminated read string
|
||||
@ -89,20 +71,11 @@ Sys_Beep:
|
||||
|
||||
|
||||
; MEMORY CONFIGURATION
|
||||
SYS_VAR_SPACE: EQU 0x8000 ; OS may allocate here memory for its own use
|
||||
DRV_VAR_SPACE: EQU 0x9000 ; IO devices drivers may allocate here memory, each has a chunk of 512 bytes
|
||||
DRV_IO_0_VAR_SPACE: EQU DRV_VAR_SPACE
|
||||
DRV_IO_1_VAR_SPACE: EQU DRV_IO_0_VAR_SPACE + 512
|
||||
DRV_IO_2_VAR_SPACE: EQU DRV_IO_1_VAR_SPACE + 512
|
||||
DRV_IO_3_VAR_SPACE: EQU DRV_IO_2_VAR_SPACE + 512
|
||||
DRV_IO_4_VAR_SPACE: EQU DRV_IO_3_VAR_SPACE + 512
|
||||
DRV_IO_5_VAR_SPACE: EQU DRV_IO_4_VAR_SPACE + 512
|
||||
DRV_IO_6_VAR_SPACE: EQU DRV_IO_5_VAR_SPACE + 512
|
||||
DRV_IO_7_VAR_SPACE: EQU DRV_IO_6_VAR_SPACE + 512
|
||||
APP_SPACE: EQU 0xA000 ; App may only allocate between there and MEM_END
|
||||
MEM_END: EQU 0xFFFF
|
||||
SYS_VAR_SPACE: EQU 0x8000
|
||||
DRV_VAR_SPACE: EQU 0x9000
|
||||
APP_SPACE: EQU 0xA000
|
||||
|
||||
; DEVICES ("cards" on the IO bus) I/O space
|
||||
; SYSTEM CONFIGURATION
|
||||
IO_0: EQU 0x00
|
||||
IO_1: EQU 0x20
|
||||
IO_2: EQU 0x40
|
||||
@ -119,7 +92,7 @@ IO_7: EQU 0xE0
|
||||
|
||||
;include 'drivers/hd44780.asm'
|
||||
;include 'drivers/keyboard.asm'
|
||||
;include 'drivers/ps2_keyboard.asm'
|
||||
include 'drivers/ps2_keyboard.asm'
|
||||
include 'drivers/arduino_terminal.asm'
|
||||
include 'drivers/sn76489.asm'
|
||||
include 'monitor.asm'
|
||||
@ -143,19 +116,19 @@ Sysinit:
|
||||
call Sys_Beep
|
||||
|
||||
; Run memory monitor
|
||||
ei ; enable maskabpe interrupts
|
||||
im 1 ; set interrupt mode 1 (on interrupt jumps to 0x38)
|
||||
rst 0x38 ; throw fake interrupt: jump to interrupt routine to start monitor
|
||||
; ei ; enable maskabpe interrupts
|
||||
; im 1 ; set interrupt mode 1 (on interrupt jumps to 0x38)
|
||||
; rst 0x38 ; throw fake interrupt: jump to interrupt routine to start monitor
|
||||
|
||||
; Keyboard test
|
||||
; ld a, 0x3E
|
||||
; call Sys_Printc
|
||||
; ktestloop:
|
||||
; call Sys_Readc
|
||||
; call Sys_Printc
|
||||
; ld a, 46
|
||||
; call Sys_Printc
|
||||
; jp ktestloop
|
||||
ld a, 0x3E
|
||||
call Sys_Printc
|
||||
ktestloop:
|
||||
call Sys_Readc
|
||||
call Sys_Printc
|
||||
ld a, 46
|
||||
call Sys_Printc
|
||||
jp ktestloop
|
||||
|
||||
; User exited from memory monitor without loading a program. Do nothing.
|
||||
mloop:
|
||||
|
@ -1,23 +1,5 @@
|
||||
; 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
|
||||
@ -25,6 +7,7 @@
|
||||
; S (SET) $pos $val Replaces byte at $pos with $val
|
||||
; L (LOAD) $pos $val
|
||||
; R (RUN) $pos Starts executing code from $pos
|
||||
; A (ADB) Enters in Assembly Depoy Bridge mode: loads all the incoming bytes in application memory and starts executing.
|
||||
; The commands are entered with a single letter and the program completes the command
|
||||
|
||||
include 'libs/strings.asm'
|
||||
@ -37,15 +20,13 @@ MON_COMMAND_SET: DB "SET",0
|
||||
MON_COMMAND_ZERO: DB "ZERO",0
|
||||
MON_COMMAND_LOAD: DB "LOAD",0
|
||||
MON_COMMAND_RUN: DB "RUN",0
|
||||
MON_COMMAND_MEMTEST: DB "MEMTEST",0
|
||||
MON_COMMAND_ADB: DB "ADB",0
|
||||
MON_COMMAND_QUIT: DB "QUIT",0
|
||||
MON_ARG_HEX: DB " 0x",0
|
||||
MON_HELP: DB 10,"Available commands:\nHELP prints this message\nDUMP [ADDR] shows memory content\nSET [ADDR] sets memory content\nZERO [ADDR] [ADDR] sets all bytes to 0 in the specified range\nLOAD [ADDR] loads a program or data from tape at ADDR\nRUN [ADDR] executes code starting from ADDR\nADB starts Assembly Deploy Bridge\nMEMTEST checks ram boundaries\nQUIT exits",0
|
||||
MON_HELP: DB 10,"Available commands:\nHELP prints this message\nDUMP [ADDR] shows memory content\nSET [ADDR] sets memory content\nZERO [ADDR] [ADDR] sets all bytes to 0 in the specified range\nLOAD\nRUN [ADDR] executes code starting from ADDR\nADB starts Assembly Deploy Bridge\nQUIT exits",0
|
||||
MON_MSG_ADB: DB 10,"Waiting for data.",0
|
||||
MON_ERR_SYNTAX: DB " Syntax error",0
|
||||
MON_COMMAND_LOAD_PRESSPLAY: DB "Press play on tape",0
|
||||
; MON_RAMTEST_INTRO: DB " Checking memory... ",0
|
||||
; MON_RAMTEST_RAMSTART: DB " Ram starts at 0x",0
|
||||
;MON_ADB_TIMEOUT: EQU 0xFF // Number of cycles after an ADB binary transfer is considered completed
|
||||
MON_DUMP_BYTES_LINES: EQU 8
|
||||
MON_DUMP_BYTES_PER_LINE: EQU 8
|
||||
|
||||
@ -83,9 +64,9 @@ Monitor_main:
|
||||
ld hl, MON_COMMAND_RUN
|
||||
cp (hl)
|
||||
jp z, monitor_run
|
||||
; ld hl, MON_COMMAND_MEMTEST
|
||||
; cp (hl)
|
||||
; jp z, monitor_memtest
|
||||
ld hl, MON_COMMAND_ADB
|
||||
cp (hl)
|
||||
jp z, monitor_adb
|
||||
ld hl, MON_COMMAND_QUIT
|
||||
cp (hl)
|
||||
jp z, monitor_quit
|
||||
@ -294,18 +275,10 @@ monitor_zero: ; TODO: bugged, doesn't exit cycle
|
||||
ld (hl), 0 ; set byte to 0 in memory
|
||||
ret
|
||||
|
||||
|
||||
; Asks user for a memory position, then wait for data from tape and place it
|
||||
; from the specified position on until it receives 4 consecutive 0x00 (EOF)
|
||||
; @uses b, c, h, l
|
||||
monitor_load:
|
||||
ld bc, MON_COMMAND_LOAD + 1 ; autocomplete command
|
||||
call Sys_Print
|
||||
; Now read the memory address from the user
|
||||
call monitor_arg_2byte ; returns the read bytes in hl
|
||||
; Ask user to press play
|
||||
ld bc, MON_COMMAND_LOAD_PRESSPLAY
|
||||
; TODO: wait for data
|
||||
; TODO: When implemented, re-enable interrupts before run application
|
||||
jp monitor_main_loop
|
||||
|
||||
monitor_run:
|
||||
@ -324,6 +297,19 @@ monitor_run:
|
||||
; execute code
|
||||
jp (hl)
|
||||
|
||||
monitor_adb:
|
||||
ld bc, MON_COMMAND_ADB + 1 ; autocomplete command
|
||||
call Sys_Print
|
||||
; start copying incoming data to application space
|
||||
call monitor_copyTermToAppMem
|
||||
; call monitor_enable_int ; re-enable interrupts
|
||||
;jp APP_SPACE ; Start executing code
|
||||
|
||||
|
||||
; ld bc, APP_SPACE
|
||||
; call Sys_Print
|
||||
jp monitor_main_loop
|
||||
|
||||
; Prints "0x" and read 1 hex byte (2 hex digits, e.g. 0x8C)
|
||||
; Can be cancelled with Q/ENTER
|
||||
; @return a the read byte, b the exit code (0=valid byte in a, 1=Q, 2=ENTER)
|
||||
@ -515,55 +501,53 @@ monitor_printAsciiByte:
|
||||
call Sys_Printc
|
||||
ret
|
||||
|
||||
; Runs a memory test to identify ram memory boundaries and check the ram is working.
|
||||
; Starting from last memory position, writes 0xFF, reads it back, writes 0x00, reads it back.
|
||||
; 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
|
||||
; ; Prints intro
|
||||
; 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 a, 0xFF
|
||||
; ld (hl), a
|
||||
; ; Read and compare 0xFF
|
||||
; ld a, (hl)
|
||||
; cp 0xFF
|
||||
; jp nz, monitor_memtest_badram
|
||||
; ; Write 0x00
|
||||
; ld a, 0x00
|
||||
; ld (hl), a
|
||||
; ; Read and compare 0xFF
|
||||
; ld a, (hl)
|
||||
; cp 0x00
|
||||
; jp nz, monitor_memtest_badram
|
||||
; ; Memory byte is good, restore previous value
|
||||
; ld (hl), c
|
||||
; ; Next one
|
||||
; dec hl
|
||||
; jp monitor_memtest_loop
|
||||
; monitor_memtest_badram:
|
||||
; ; Found a bad memory byte (or entered rom block).
|
||||
; 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
|
||||
; jp monitor_main_loop
|
||||
; Copy data from parallel terminal to application memory. This is tought to be used with the ADB function of the Pat80 Python Terminal.
|
||||
; Uses TERM_DATA_AVAIL_REG to check if a byte is available before reading it.
|
||||
; The first two received bytes (heading bytes) defines the stream length (MSB first), the rest of the bytes are copied to memory.
|
||||
; The copy is completed when the number of bytes defined in the heading bytes are received.
|
||||
; @uses a, b, c, d, h, l
|
||||
monitor_copyTermToAppMem:
|
||||
; d contains the current status.
|
||||
; 2 = waiting for first heading byte
|
||||
; 1 = waiting for second heading byte
|
||||
; 0 = heading bytes received, now receiving binary stream
|
||||
ld d, 2
|
||||
ld hl, APP_SPACE ; we will write in APP_SPACE
|
||||
monitor_copyTermToAppMem_loop:
|
||||
ld a, d
|
||||
cp 2 ; check if we are receiving first header byte
|
||||
jp z, monitor_copyTermToAppMem_loop_rec_head_byte_1
|
||||
ld a, d
|
||||
cp 1 ; check if we are receiving second header byte
|
||||
jp z, monitor_copyTermToAppMem_loop_rec_head_byte_2
|
||||
; we are receiving binary stream: read byte and save to memory
|
||||
call Term_readb ; reads a byte from terminal
|
||||
ld (hl), a ; copy byte to memory
|
||||
inc hl ; move to next memory position
|
||||
dec bc ; decrement remaining bytes counter
|
||||
; check if we reached the number of bytes to be transferred
|
||||
ld a, b
|
||||
cp 0
|
||||
jp nz, monitor_copyTermToAppMem_loop ; continue loop
|
||||
ld a, c
|
||||
cp 0
|
||||
jp nz, monitor_copyTermToAppMem_loop ; continue loop
|
||||
; all bytes received, return
|
||||
ret
|
||||
|
||||
monitor_copyTermToAppMem_loop_rec_head_byte_1:
|
||||
; we are receiving first header byte: read byte and save to b
|
||||
call Term_readb ; reads a byte from terminal
|
||||
ld b, a
|
||||
dec d
|
||||
jp monitor_copyTermToAppMem_loop ; continue loop
|
||||
monitor_copyTermToAppMem_loop_rec_head_byte_2:
|
||||
; we are receiving second header byte: read byte and save to c
|
||||
call Term_readb ; reads a byte from terminal
|
||||
ld c, a
|
||||
dec d
|
||||
jp monitor_copyTermToAppMem_loop ; continue loop
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -1,116 +0,0 @@
|
||||
jp main ; Startup vector: DO NOT MOVE! Must be the first instruction
|
||||
|
||||
; Tests TM404A, on ports 2 and 3
|
||||
|
||||
IO_2: EQU 0x40
|
||||
IO_3: EQU 0x60
|
||||
|
||||
LCD_TOP_INSTR_REG: EQU IO_2
|
||||
LCD_TOP_DATA_REG: EQU IO_2 + 1
|
||||
LCD_BOTTOM_INSTR_REG: EQU IO_3
|
||||
LCD_BOTTOM_DATA_REG: EQU IO_3 + 1
|
||||
|
||||
|
||||
; Inits the lcd display
|
||||
LCD4004_init:
|
||||
; --- Init first controller ---
|
||||
|
||||
; The following are documented as in the datasheet: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
|
||||
; Function set: 0 0 0 0 1 DL N F 0 0 (DL: 8-bit/4-bit, N: number of display lines 2/1, F: Font type 11dots/8dots)
|
||||
; 0000111000 (8 bit, 2 lines)
|
||||
ld a,0x38
|
||||
out (LCD_TOP_INSTR_REG),a
|
||||
|
||||
call LCD4004_wait_busy_clear
|
||||
|
||||
; Display ON/OFF Control: 0 0 0 0 0 0 1 D C B (D: display on/off, C: cursor on/off, B: blinking cursor on/off)
|
||||
; 0000001111 (display on, blinking cursor)
|
||||
ld a,0x0F
|
||||
out (LCD_TOP_INSTR_REG),a
|
||||
|
||||
call LCD4004_wait_busy_clear
|
||||
|
||||
; Clear display
|
||||
; 0000000001
|
||||
ld a,0x01
|
||||
out (LCD_TOP_INSTR_REG),a
|
||||
|
||||
call LCD4004_wait_busy_clear
|
||||
|
||||
; --- Init second controller ---
|
||||
|
||||
; The following are documented as in the datasheet: RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
|
||||
; Function set: 0 0 0 0 1 DL N F 0 0 (DL: 8-bit/4-bit, N: number of display lines 2/1, F: Font type 11dots/8dots)
|
||||
; 0000111000 (8 bit, 2 lines)
|
||||
ld a,0x38
|
||||
out (LCD_BOTTOM_INSTR_REG),a
|
||||
|
||||
call LCD4004_wait_busy_clear
|
||||
|
||||
; Display ON/OFF Control: 0 0 0 0 0 0 1 D C B (D: display on/off, C: cursor on/off, B: blinking cursor on/off)
|
||||
; 0000001111 (display on, blinking cursor)
|
||||
ld a,0x0F
|
||||
out (LCD_BOTTOM_INSTR_REG),a
|
||||
|
||||
call LCD4004_wait_busy_clear
|
||||
|
||||
; Clear display
|
||||
; 0000000001
|
||||
ld a,0x01
|
||||
out (LCD_BOTTOM_INSTR_REG),a
|
||||
|
||||
call LCD4004_wait_busy_clear
|
||||
|
||||
ret
|
||||
|
||||
|
||||
; Prints string
|
||||
; @param BC Pointer to a null-terminated string first character
|
||||
LCD4004_TOP_print:
|
||||
ld a, (bc) ; bc is the pointer to passed string's first char
|
||||
cp 0 ; compare A content with 0 (subtract 0 from value and set zero flag Z if result is 0)
|
||||
ret z ; if prev compare is true (Z flag set), string is finished, return
|
||||
out (LCD_TOP_DATA_REG),a ; output char
|
||||
call LCD4004_wait_busy_clear ; wait for the lcd to execute (busy signal check)
|
||||
inc bc ; increment bc to move to next char
|
||||
jp LCD4004_TOP_print
|
||||
|
||||
; Prints string
|
||||
; @param BC Pointer to a null-terminated string first character
|
||||
LCD4004_BOTTOM_print:
|
||||
ld a, (bc) ; bc is the pointer to passed string's first char
|
||||
cp 0 ; compare A content with 0 (subtract 0 from value and set zero flag Z if result is 0)
|
||||
ret z ; if prev compare is true (Z flag set), string is finished, return
|
||||
out (LCD_BOTTOM_DATA_REG),a ; output char
|
||||
call LCD4004_wait_busy_clear ; wait for the lcd to execute (busy signal check)
|
||||
inc bc ; increment bc to move to next char
|
||||
jp LCD4004_BOTTOM_print
|
||||
|
||||
; Waits for the busy flag to be clear, indicating the LCD controllers to have finished their work
|
||||
LCD4004_wait_busy_clear:
|
||||
ret
|
||||
in a, (LCD_TOP_INSTR_REG) ; reads the status
|
||||
rla ; busy flag is DB7, so we shift it into carry to check it
|
||||
jp c, LCD4004_wait_busy_clear ; if carry is set, lcd is busy
|
||||
in a, (LCD_BOTTOM_INSTR_REG) ; reads the status
|
||||
rla ; busy flag is DB7, so we shift it into carry to check it
|
||||
jp c, LCD4004_wait_busy_clear ; if carry is set, lcd is busy
|
||||
ret
|
||||
|
||||
; --- TEST CODE ---
|
||||
main:
|
||||
TEST_STR_80: DB "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam augue tortor sed.",0 ; null terminated string
|
||||
TEST_STR_85: DB "2Lorem ipsum dolor sit amet, consectetur adipiscing elit praesent pellentesque nisi.",0 ; null terminated string
|
||||
|
||||
; Init display
|
||||
call LCD4004_init
|
||||
|
||||
; Write string on first 2 lines
|
||||
ld bc, TEST_STR_80
|
||||
call LCD4004_TOP_print
|
||||
|
||||
; Write long string on last 2 lines (to see how it wraps)
|
||||
ld bc, TEST_STR_85
|
||||
call LCD4004_BOTTOM_print
|
||||
|
||||
halt
|
@ -1,7 +0,0 @@
|
||||
; @language: Z80 ASM
|
||||
; Simple possible code test:
|
||||
; outputs a single character "A" on IO port 0, then halts
|
||||
|
||||
ld a,'A'
|
||||
out (1),a
|
||||
halt
|
@ -1,5 +1,3 @@
|
||||
; @language: Z80 ASM
|
||||
|
||||
SndTest_test:
|
||||
; ch1 max volume
|
||||
ld a,%10010000
|
||||
|
2
pat80-emulator/.gitignore
vendored
@ -1,2 +0,0 @@
|
||||
build
|
||||
|
@ -1,11 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.10.0)
|
||||
project(pat80-emulator VERSION 0.1.0 LANGUAGES C)
|
||||
|
||||
add_executable(pat80-emulator main.c)
|
||||
|
||||
find_package(Z80 REQUIRED)
|
||||
target_link_libraries(pat80-emulator Z80)
|
||||
|
||||
find_package(Curses REQUIRED)
|
||||
include_directories(${CURSES_INCLUDE_DIR})
|
||||
target_link_libraries(pat80-emulator ${CURSES_LIBRARIES})
|
@ -1,17 +0,0 @@
|
||||
{
|
||||
"version": 8,
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "gcc",
|
||||
"displayName": "GCC 14.2.1 x86_64-pc-linux-gnu",
|
||||
"description": "Using compilers: C = /usr/bin/gcc, CXX = /usr/bin/g++",
|
||||
"binaryDir": "${sourceDir}/out/build/${presetName}",
|
||||
"cacheVariables": {
|
||||
"CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/${presetName}",
|
||||
"CMAKE_C_COMPILER": "/usr/bin/gcc",
|
||||
"CMAKE_CXX_COMPILER": "/usr/bin/g++",
|
||||
"CMAKE_BUILD_TYPE": "Debug"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -1,21 +0,0 @@
|
||||
# Pat80 emulator
|
||||
|
||||

|
||||
|
||||
## Setup
|
||||
|
||||
Install the required Z80 emulator by redcode following the instructions for your Linux distribution at https://github.com/redcode/Z80
|
||||
Make sure to install not only the `libz80` package, but also `libz80-dev`.
|
||||
|
||||
Create the build directory: `mkdir build`
|
||||
Create the makefile with cmake: `cd build && cmake ..`
|
||||
|
||||
## Build
|
||||
|
||||
Enter the `build` directory and run `make`.
|
||||
An executable file named `pat80-emulator` is created.
|
||||
|
||||
## Usage
|
||||
|
||||
Enter the `build` directory
|
||||
Run `./pat80-emulator`
|
@ -1,320 +0,0 @@
|
||||
/**
|
||||
* PAT80 Emulator
|
||||
*
|
||||
* Emulates a PAT80.
|
||||
* Based on https://github.com/redcode/Z80
|
||||
*/
|
||||
|
||||
#include <Z/constants/pointer.h> /* Z_NULL */
|
||||
#include <Z80.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <ncurses.h>
|
||||
|
||||
#define ROM_SIZE 0x8000 /* 32 KiB */
|
||||
#define MEMORY_SIZE 0xFFFF /* 64 KiB */
|
||||
#define TERMINAL_WIDTH 60
|
||||
#define TERMINAL_HEIGHT 25
|
||||
#define SPACING_BETWEEN_WINDOWS 3
|
||||
#define INSTRUCTION_WINDOW_HEIGHT 3
|
||||
|
||||
typedef struct {
|
||||
void* context;
|
||||
zuint8 (* read)(void *context);
|
||||
void (* write)(void *context, zuint8 value);
|
||||
} Device;
|
||||
|
||||
typedef struct {
|
||||
zusize cycles;
|
||||
zuint8 memory[65536];
|
||||
Z80 cpu;
|
||||
WINDOW *terminal_win;
|
||||
WINDOW *status_win;
|
||||
WINDOW *lcd_top_win; // 40x4 LCD, top two lines
|
||||
WINDOW *lcd_bottom_win; // 40x4 LCD, bottom two lines
|
||||
} Machine;
|
||||
|
||||
|
||||
static zuint8 machine_cpu_read(Machine *self, zuint16 address) {
|
||||
return address < MEMORY_SIZE ? self->memory[address] : 0xFF;
|
||||
}
|
||||
|
||||
|
||||
static void machine_cpu_write(Machine *self, zuint16 address, zuint8 value) {
|
||||
if (address >= ROM_SIZE && address < MEMORY_SIZE)
|
||||
self->memory[address] = value;
|
||||
}
|
||||
|
||||
|
||||
static zuint8 machine_cpu_in(Machine *self, zuint16 port) {
|
||||
// Pat80 has 8 devices, decoded based on the 3 most significant IO addr bits.
|
||||
// Note the Z80 has 16 bit address bus, but only the first 8 are used as IO addr,
|
||||
// so the 3 most significant IO addr bits in this case are A7, A6, A5. The bits
|
||||
// A4-A0 may be used by the single device, at its own discretion.
|
||||
zuint16 bitmask = 7; // 0000000000000111
|
||||
int ioDevice = port & bitmask;
|
||||
if (ioDevice <= 0x1F) {
|
||||
// Port 0 (0x00 to 0x1F): terminal
|
||||
// Read char from stin
|
||||
char c = getch();
|
||||
// Intercept emulator commands
|
||||
switch (c) {
|
||||
case 27:
|
||||
// ESC: shutdown emulator
|
||||
exit(0); // TODO: Shutdown ncurses and emulator cleanly
|
||||
return 0;
|
||||
default:
|
||||
// Deliver keypress to pat80
|
||||
return c;
|
||||
}
|
||||
}
|
||||
if (ioDevice <= 0x3F) {
|
||||
// Port 1 (0x20 to 0x3F): sound card (sn76489)
|
||||
wprintw(self->status_win, "sound_cmd[IN]: Not supported!\n");
|
||||
return 0x00;
|
||||
}
|
||||
if (ioDevice <= 0x5F) {
|
||||
// Port 2 (0x40 to 0x5F): LCD top 2 lines
|
||||
if (port == 0x40 || port == 0x60) {
|
||||
// TODO: Simulate busy flag and cursor position
|
||||
return 0x00; // Busy flag clear, for now
|
||||
}
|
||||
wprintw(self->status_win, "IO_ERROR_IN: No device at port 2\n");
|
||||
return 0x00;
|
||||
}
|
||||
if (ioDevice <= 0x7F) {
|
||||
// Port 3 (0x60 to 0x7F): LCD bottom 2 lines
|
||||
if (port == 0x0) {
|
||||
// TODO: Simulate busy flag and cursor position
|
||||
return 0x00;
|
||||
}
|
||||
wprintw(self->status_win, "IO_ERROR_IN: No device at port 3\n");
|
||||
return 0x00;
|
||||
}
|
||||
if (ioDevice <= 0x9F) {
|
||||
// Port 4 (0x80 to 0x9F)
|
||||
wprintw(self->status_win, "IO_ERROR_IN: No device at port 4\n");
|
||||
return 0x00;
|
||||
}
|
||||
if (ioDevice <= 0x5F) {
|
||||
// Port 5 (0xA0 to 0xBF)
|
||||
wprintw(self->status_win, "IO_ERROR_IN: No device at port 5\n");
|
||||
return 0x00;
|
||||
}
|
||||
if (ioDevice <= 0x5F) {
|
||||
// Port 6 (0xC0 to 0xDF)
|
||||
wprintw(self->status_win, "IO_ERROR_IN: No device at port 6\n");
|
||||
return 0x00;
|
||||
}
|
||||
if (ioDevice <= 0x5F) {
|
||||
// Port 7 (0xE0 to 0xFF)
|
||||
wprintw(self->status_win, "IO_ERROR_IN: No device at port 7\n");
|
||||
} else {
|
||||
wprintw(self->status_win, "IO_ERROR_IN: Invalid port address: %#04x\n", port);
|
||||
}
|
||||
|
||||
// TODO: place this in a refresh cycle between CPU instructions
|
||||
refresh();
|
||||
wrefresh(self->terminal_win);
|
||||
wrefresh(self->status_win);
|
||||
wrefresh(self->lcd_top_win);
|
||||
wrefresh(self->lcd_bottom_win);
|
||||
}
|
||||
|
||||
|
||||
static void machine_cpu_out(Machine *self, zuint16 port, zuint8 value) {
|
||||
// Pat80 has 8 devices, decoded based on the 3 most significant IO addr bits.
|
||||
// Note the Z80 has 16 bit address bus, but only the first 8 are used as IO addr,
|
||||
// so the 3 most significant IO addr bits in this case are A7, A6, A5. The bits
|
||||
// A4-A0 may be used by the single device, at its own discretion.
|
||||
zuint16 bitmask = 0xE0; // 0000000011100000
|
||||
int ioDevice = port & bitmask;
|
||||
bitmask = 0x1F; // 0000000000011111
|
||||
int ioAddrInsideDevice = port & bitmask;
|
||||
wprintw(self->status_win, "[%#06x]DECODED[%#04x] - ", port, ioDevice);
|
||||
if (ioDevice <= 0x1F) {
|
||||
// Port 0 (0x00 to 0x1F): terminal
|
||||
wprintw(self->terminal_win, "%c", value);
|
||||
} else if (ioDevice <= 0x3F) {
|
||||
// Port 1 (0x20 to 0x3F): sound card (sn76489)
|
||||
wprintw(self->status_win, "sound_cmd[%#04x]\n", value);
|
||||
} else if (ioDevice <= 0x5F) {
|
||||
// Port 2 (0x40 to 0x5F) and Port 3 (0x60 to 0x7F):
|
||||
// lcd display 40x4 (mod. TM404A, based on 2 KS0066 chips, each one controlling 2 rows,
|
||||
// top controller at port 2 and bottom at port 3).
|
||||
// Instruction register at each port first address, data register at second address
|
||||
if (ioAddrInsideDevice == 0) {
|
||||
// Port 2, A4 LOW = talking to LCD top 2 lines instruction register
|
||||
wprintw(self->status_win, "lcd_top_cmd[%#04x]\n", value);
|
||||
} else if (ioAddrInsideDevice == 1) {
|
||||
// Port 2, A4 HIGH = talking to LCD top 2 lines data register (writing text to screen)
|
||||
wprintw(self->status_win, "lcd_top_data[%#04x](%c)\n", value, value);
|
||||
wprintw(self->lcd_top_win, "%c", value);
|
||||
} else {
|
||||
wprintw(self->status_win, "IO_ERROR_OUT: lcd (top controller) does not listen at addr %#04x\n", ioAddrInsideDevice);
|
||||
}
|
||||
} else if (ioDevice <= 0x7F) {
|
||||
// Port 2 (0x40 to 0x5F) and Port 3 (0x60 to 0x7F):
|
||||
// lcd display 40x4 (mod. TM404A, based on 2 KS0066 chips, each one controlling 2 rows,
|
||||
// top controller at port 2 and bottom at port 3).
|
||||
// Instruction register at each port first address, data register at second address
|
||||
if (ioAddrInsideDevice == 0) {
|
||||
// Port 3, A4 LOW = talking to LCD bottom 2 lines instruction register
|
||||
wprintw(self->status_win, "lcd_bottom_cmd[%#04x]\n", value);
|
||||
} else if (ioAddrInsideDevice == 1) {
|
||||
// Port 3, A4 HIGH = talking to LCD bottom 2 lines data register (writing text to screen)
|
||||
wprintw(self->status_win, "lcd_bottom_data[%#04x](%c)\n", value, value);
|
||||
wprintw(self->lcd_bottom_win, "%c", value);
|
||||
} else {
|
||||
wprintw(self->status_win, "IO_ERROR_OUT: lcd (bottom controller) does not listen at addr %#04x\n", ioAddrInsideDevice);
|
||||
}
|
||||
} else if (ioDevice <= 0x9F) {
|
||||
// Port 4 (0x80 to 0x9F)
|
||||
wprintw(self->status_win, "IO_ERROR_OUT: No device at port 4\n");
|
||||
} else if (ioDevice <= 0xBF) {
|
||||
// Port 5 (0xA0 to 0xBF)
|
||||
wprintw(self->status_win, "IO_ERROR_OUT: No device at port 5\n");
|
||||
} else if (ioDevice <= 0xDF) {
|
||||
// Port 6 (0xC0 to 0xDF)
|
||||
wprintw(self->status_win, "IO_ERROR_OUT: No device at port 6\n");
|
||||
} else if (ioDevice <= 0xFF) {
|
||||
// Port 7 (0xE0 to 0xFF)
|
||||
wprintw(self->status_win, "IO_ERROR_OUT: No device at port 7\n");
|
||||
} else {
|
||||
wprintw(self->status_win, "IO_ERROR_OUT: Invalid port address: %#04x\n", port);
|
||||
}
|
||||
|
||||
// TODO: place this in a refresh cycle between CPU instructions
|
||||
refresh();
|
||||
wrefresh(self->terminal_win);
|
||||
wrefresh(self->status_win);
|
||||
wrefresh(self->lcd_top_win);
|
||||
wrefresh(self->lcd_bottom_win);
|
||||
}
|
||||
|
||||
static void machine_cpu_halt(Machine *self, unsigned char signal) {
|
||||
wprintw(self->status_win, "HALTED (%d)\n", signal);
|
||||
// Refresh all windows
|
||||
refresh();
|
||||
wrefresh(self->terminal_win);
|
||||
wrefresh(self->status_win);
|
||||
wrefresh(self->lcd_top_win);
|
||||
wrefresh(self->lcd_bottom_win);
|
||||
// Wait an ESC before exiting
|
||||
while (getch() != 27) {}
|
||||
exit(0);
|
||||
}
|
||||
|
||||
|
||||
void machine_initialize(Machine *self) {
|
||||
self->cpu.context = self;
|
||||
self->cpu.fetch_opcode =
|
||||
self->cpu.fetch =
|
||||
self->cpu.nop =
|
||||
self->cpu.read = (Z80Read )machine_cpu_read;
|
||||
self->cpu.write = (Z80Write)machine_cpu_write;
|
||||
self->cpu.in = (Z80Read )machine_cpu_in;
|
||||
self->cpu.out = (Z80Write)machine_cpu_out;
|
||||
self->cpu.halt = (Z80Halt)machine_cpu_halt;
|
||||
self->cpu.nmia = Z_NULL;
|
||||
self->cpu.inta = Z_NULL;
|
||||
self->cpu.int_fetch = Z_NULL;
|
||||
self->cpu.ld_i_a = Z_NULL;
|
||||
self->cpu.ld_r_a = Z_NULL;
|
||||
self->cpu.reti = Z_NULL;
|
||||
self->cpu.retn = Z_NULL;
|
||||
self->cpu.hook = Z_NULL;
|
||||
self->cpu.illegal = Z_NULL;
|
||||
self->cpu.options = Z80_MODEL_ZILOG_NMOS;
|
||||
}
|
||||
|
||||
|
||||
void machine_power(Machine *self, zbool state) {
|
||||
if (state)
|
||||
{
|
||||
self->cycles = 0;
|
||||
memset(self->memory, 0, MEMORY_SIZE);
|
||||
}
|
||||
|
||||
z80_power(&self->cpu, state);
|
||||
}
|
||||
|
||||
|
||||
void machine_reset(Machine *self) {
|
||||
z80_instant_reset(&self->cpu);
|
||||
}
|
||||
|
||||
void machine_run(Machine *self) {
|
||||
z80_run(&self->cpu, Z80_MAXIMUM_CYCLES);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
// Parse arguments
|
||||
if (argc < 2) {
|
||||
printf("Usage: %s [romFile]\n", argv[0]);
|
||||
exit(0);
|
||||
}
|
||||
char* romFilePath = argv[1];
|
||||
|
||||
|
||||
// Init ncurses
|
||||
initscr(); // Start curses mode
|
||||
raw(); // Line buffering disabled (get character without waiting for ENTER key)
|
||||
keypad(stdscr, TRUE); // We get F1, F2 etc..
|
||||
noecho(); // Don't echo() while we do getch
|
||||
start_color(); // Use colors
|
||||
init_pair(1, COLOR_WHITE, COLOR_BLUE); // Terminal window color
|
||||
init_pair(2, COLOR_YELLOW, COLOR_BLACK); // Status window color
|
||||
init_pair(3, COLOR_BLACK, COLOR_GREEN); // LCD window color
|
||||
int x,y;
|
||||
getmaxyx(stdscr, y,x);
|
||||
|
||||
// Setup virtual Pat80 computer
|
||||
Z80 pat80Cpu = {};
|
||||
Machine pat80 = {
|
||||
/*zusize*/ .cycles = 0,
|
||||
/*Z80*/ .cpu = pat80Cpu,
|
||||
.terminal_win = newwin(TERMINAL_HEIGHT, TERMINAL_WIDTH, INSTRUCTION_WINDOW_HEIGHT, 0),
|
||||
.status_win = newwin(y, x - TERMINAL_WIDTH - SPACING_BETWEEN_WINDOWS, INSTRUCTION_WINDOW_HEIGHT, TERMINAL_WIDTH + SPACING_BETWEEN_WINDOWS), // To right of terminal window
|
||||
.lcd_top_win = newwin(2, 40, INSTRUCTION_WINDOW_HEIGHT + TERMINAL_HEIGHT + SPACING_BETWEEN_WINDOWS, 0), // Below terminal window
|
||||
.lcd_bottom_win = newwin(2, 40, INSTRUCTION_WINDOW_HEIGHT + TERMINAL_HEIGHT + SPACING_BETWEEN_WINDOWS + 2, 0)
|
||||
};
|
||||
|
||||
wbkgd(pat80.terminal_win, COLOR_PAIR(1)); // Ncurses: set terminal window color
|
||||
wbkgd(pat80.status_win, COLOR_PAIR(2));
|
||||
wbkgd(pat80.lcd_top_win, COLOR_PAIR(3));
|
||||
wbkgd(pat80.lcd_bottom_win, COLOR_PAIR(3));
|
||||
scrollok(pat80.terminal_win, TRUE); // Ncurses: Allow scrolling when reached end of window
|
||||
scrollok(pat80.status_win, TRUE);
|
||||
scrollok(pat80.lcd_top_win, FALSE);
|
||||
scrollok(pat80.lcd_bottom_win, FALSE);
|
||||
attron(A_BOLD); // Print instructions
|
||||
printw("Emulator commands\n");
|
||||
attroff(A_BOLD);
|
||||
printw("ESC: Exit");
|
||||
|
||||
machine_initialize(&pat80);
|
||||
machine_power(&pat80, Z_TRUE);
|
||||
|
||||
// Load ROM into memory
|
||||
FILE *romFile;
|
||||
romFile = fopen(romFilePath,"rb");
|
||||
if (romFile == NULL) {
|
||||
printf("Unable to open rom file at %s", romFilePath);
|
||||
exit(1);
|
||||
}
|
||||
fread(&pat80.memory,ROM_SIZE,1,romFile); // load rom from file into memory, up >
|
||||
fclose(romFile);
|
||||
|
||||
// Start emulated computer
|
||||
machine_reset(&pat80);
|
||||
machine_run(&pat80);
|
||||
|
||||
// Stop ncurses
|
||||
delwin(pat80.terminal_win);
|
||||
delwin(pat80.status_win);
|
||||
delwin(pat80.lcd_top_win);
|
||||
delwin(pat80.lcd_bottom_win);
|
||||
endwin();
|
||||
return 0;
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
(kicad_pcb (version 20240108) (generator "pcbnew") (generator_version "8.0")
|
||||
)
|
@ -1,83 +0,0 @@
|
||||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer_preset": "",
|
||||
"auto_track_width": true,
|
||||
"hidden_netclasses": [],
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"selection_filter": {
|
||||
"dimensions": true,
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
"tracks": true,
|
||||
"vias": true,
|
||||
"zones": true
|
||||
},
|
||||
"visible_items": [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4,
|
||||
5,
|
||||
8,
|
||||
9,
|
||||
10,
|
||||
11,
|
||||
12,
|
||||
13,
|
||||
15,
|
||||
16,
|
||||
17,
|
||||
18,
|
||||
19,
|
||||
20,
|
||||
21,
|
||||
22,
|
||||
23,
|
||||
24,
|
||||
25,
|
||||
26,
|
||||
27,
|
||||
28,
|
||||
29,
|
||||
30,
|
||||
32,
|
||||
33,
|
||||
34,
|
||||
35,
|
||||
36,
|
||||
39,
|
||||
40
|
||||
],
|
||||
"visible_layers": "fffffff_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"repo_password": "",
|
||||
"repo_type": "",
|
||||
"repo_username": "",
|
||||
"ssh_key": ""
|
||||
},
|
||||
"meta": {
|
||||
"filename": "4004_lcd_display.kicad_prl",
|
||||
"version": 3
|
||||
},
|
||||
"project": {
|
||||
"files": []
|
||||
}
|
||||
}
|
@ -1,392 +0,0 @@
|
||||
{
|
||||
"board": {
|
||||
"3dviewports": [],
|
||||
"design_settings": {
|
||||
"defaults": {},
|
||||
"diff_pair_dimensions": [],
|
||||
"drc_exclusions": [],
|
||||
"rules": {},
|
||||
"track_widths": [],
|
||||
"via_dimensions": []
|
||||
},
|
||||
"ipc2581": {
|
||||
"dist": "",
|
||||
"distpn": "",
|
||||
"internal_id": "",
|
||||
"mfg": "",
|
||||
"mpn": ""
|
||||
},
|
||||
"layer_presets": [],
|
||||
"viewports": []
|
||||
},
|
||||
"boards": [],
|
||||
"cvpcb": {
|
||||
"equivalence_files": []
|
||||
},
|
||||
"erc": {
|
||||
"erc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"pin_map": [
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
]
|
||||
],
|
||||
"rule_severities": {
|
||||
"bus_definition_conflict": "error",
|
||||
"bus_entry_needed": "error",
|
||||
"bus_to_bus_conflict": "error",
|
||||
"bus_to_net_conflict": "error",
|
||||
"conflicting_netclasses": "error",
|
||||
"different_unit_footprint": "error",
|
||||
"different_unit_net": "error",
|
||||
"duplicate_reference": "error",
|
||||
"duplicate_sheet_names": "error",
|
||||
"endpoint_off_grid": "warning",
|
||||
"extra_units": "error",
|
||||
"global_label_dangling": "warning",
|
||||
"hier_label_mismatch": "error",
|
||||
"label_dangling": "error",
|
||||
"lib_symbol_issues": "warning",
|
||||
"missing_bidi_pin": "warning",
|
||||
"missing_input_pin": "warning",
|
||||
"missing_power_pin": "error",
|
||||
"missing_unit": "warning",
|
||||
"multiple_net_names": "warning",
|
||||
"net_not_bus_member": "warning",
|
||||
"no_connect_connected": "warning",
|
||||
"no_connect_dangling": "warning",
|
||||
"pin_not_connected": "error",
|
||||
"pin_not_driven": "error",
|
||||
"pin_to_pin": "warning",
|
||||
"power_pin_not_driven": "error",
|
||||
"similar_labels": "warning",
|
||||
"simulation_model_issue": "ignore",
|
||||
"unannotated": "error",
|
||||
"unit_value_mismatch": "error",
|
||||
"unresolved_variable": "error",
|
||||
"wire_dangling": "error"
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
},
|
||||
"meta": {
|
||||
"filename": "4004_lcd_display.kicad_pro",
|
||||
"version": 1
|
||||
},
|
||||
"net_settings": {
|
||||
"classes": [
|
||||
{
|
||||
"bus_width": 12,
|
||||
"clearance": 0.2,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Default",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.2,
|
||||
"via_diameter": 0.6,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 3
|
||||
},
|
||||
"net_colors": null,
|
||||
"netclass_assignments": null,
|
||||
"netclass_patterns": []
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"plot": "",
|
||||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"svg": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"annotate_start_num": 0,
|
||||
"bom_export_filename": "",
|
||||
"bom_fmt_presets": [],
|
||||
"bom_fmt_settings": {
|
||||
"field_delimiter": ",",
|
||||
"keep_line_breaks": false,
|
||||
"keep_tabs": false,
|
||||
"name": "CSV",
|
||||
"ref_delimiter": ",",
|
||||
"ref_range_delimiter": "",
|
||||
"string_delimiter": "\""
|
||||
},
|
||||
"bom_presets": [],
|
||||
"bom_settings": {
|
||||
"exclude_dnp": false,
|
||||
"fields_ordered": [
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Reference",
|
||||
"name": "Reference",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Value",
|
||||
"name": "Value",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Datasheet",
|
||||
"name": "Datasheet",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Footprint",
|
||||
"name": "Footprint",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Qty",
|
||||
"name": "${QUANTITY}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "DNP",
|
||||
"name": "${DNP}",
|
||||
"show": true
|
||||
}
|
||||
],
|
||||
"filter_string": "",
|
||||
"group_symbols": true,
|
||||
"name": "Grouped By Value",
|
||||
"sort_asc": true,
|
||||
"sort_field": "Riferimento"
|
||||
},
|
||||
"connection_grid_size": 50.0,
|
||||
"drawing": {
|
||||
"dashed_lines_dash_length_ratio": 12.0,
|
||||
"dashed_lines_gap_length_ratio": 3.0,
|
||||
"default_line_thickness": 6.0,
|
||||
"default_text_size": 50.0,
|
||||
"field_names": [],
|
||||
"intersheets_ref_own_page": false,
|
||||
"intersheets_ref_prefix": "",
|
||||
"intersheets_ref_short": false,
|
||||
"intersheets_ref_show": false,
|
||||
"intersheets_ref_suffix": "",
|
||||
"junction_size_choice": 3,
|
||||
"label_size_ratio": 0.375,
|
||||
"operating_point_overlay_i_precision": 3,
|
||||
"operating_point_overlay_i_range": "~A",
|
||||
"operating_point_overlay_v_precision": 3,
|
||||
"operating_point_overlay_v_range": "~V",
|
||||
"overbar_offset_ratio": 1.23,
|
||||
"pin_symbol_size": 25.0,
|
||||
"text_offset_ratio": 0.15
|
||||
},
|
||||
"legacy_lib_dir": "",
|
||||
"legacy_lib_list": [],
|
||||
"meta": {
|
||||
"version": 1
|
||||
},
|
||||
"net_format_name": "",
|
||||
"page_layout_descr_file": "",
|
||||
"plot_directory": "",
|
||||
"spice_current_sheet_as_root": false,
|
||||
"spice_external_command": "spice \"%I\"",
|
||||
"spice_model_current_sheet_as_root": true,
|
||||
"spice_save_all_currents": false,
|
||||
"spice_save_all_dissipations": false,
|
||||
"spice_save_all_voltages": false,
|
||||
"subpart_first_id": 65,
|
||||
"subpart_id_separator": 0
|
||||
},
|
||||
"sheets": [
|
||||
[
|
||||
"b60673c4-5448-4b81-8c25-50d47b52f4a5",
|
||||
"Root"
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
@ -2,4 +2,8 @@ pal-adapter:
|
||||
@echo "Building pal adapter rom..."
|
||||
@avra main.asm
|
||||
@echo "Writing to ATMEGA1284..."
|
||||
@minipro -w main.hex -p ATMEGA1284
|
||||
@minipro -w main.hex -p ATMEGA1284
|
||||
|
||||
fuses:
|
||||
@echo "Writing fuses.conf..."
|
||||
@minipro -w fuses.conf -c config -p ATMEGA1284
|
||||
|
@ -1,18 +1,21 @@
|
||||
# Atmega Microcontroller
|
||||
|
||||
## Auto build & flash
|
||||
Use make to build & flash automatically.
|
||||
The first time the microcontroller is flashed, is needed to flash fuses:
|
||||
`make fuses`
|
||||
Then, every time the asm code is changed, it can be built and flashed with:
|
||||
`make`
|
||||
|
||||
## Build ASM code
|
||||
`avra filename.asm` (generates *filename.hex*)
|
||||
|
||||
## Flash
|
||||
### Rom
|
||||
`minipro -w filename.hex -p ATMEGA1284`
|
||||
|
||||
### Fuses
|
||||
Read fuses: `minipro -r -c config -p ATMEGA1284` (`-r -c config` means read configuration (fuses))
|
||||
Fuses must be written all together, so read the current values, edit the generated file and write it.
|
||||
The meaning of every bis is in the conf file.
|
||||
Write fuses: `minipro -w fuses.conf -c config -p ATMEGA1284`
|
||||
|
||||
# Generate test images
|
||||
Using GIMP, Image -> Mode -> Indexed, select 2 colors and Posterize.
|
||||
Invert the image colors.
|
||||
Save as .xbm file. Oper with a *text editor*, you will find an array of byte-packed pixels (every byte represents 8 pixels).
|
||||
Copy and paste on an ASM file.
|
||||
Write fuses: `minipro -w fuses.conf -c config -p ATMEGA1284`
|
@ -2,45 +2,25 @@
|
||||
; * PAT80 COMPOSITE PAL VIDEO ADAPTER *
|
||||
; * 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
|
||||
; and adds it on the framebuffer in the position indicated by POS_COARSE (Y).
|
||||
|
||||
.equ LINE_COLUMNS = 46 ; number of columns (characters or chunks) per line
|
||||
.equ LINE_COLUMNS = 52 ; number of columns (characters or chunks) per line
|
||||
|
||||
; Draws character in register A to the screen at current coords (Y)
|
||||
; @param (HIGH_ACCUM) ascii code to display
|
||||
; @modifies r0 (A), r1, r2, r3, r17, HIGH_ACCUM, Y, Z
|
||||
; @param r16 (HIGH_ACCUM) ascii code to display
|
||||
; @modifies r0 (A), r1, r2, r3, r16 (HIGH_ACCUM), r17, Y, Z
|
||||
draw_char:
|
||||
; Check char is valid
|
||||
cpi HIGH_ACCUM, 0x7f
|
||||
brlo draw_char_valid
|
||||
ret
|
||||
|
||||
draw_char_valid:
|
||||
; Glyph's first byte is at:
|
||||
; glyph_pointer = font_starting_mem_pos + (ascii_code * number_of_bytes_per_font)
|
||||
; But all the fonts are 1 byte large, so a glyph is 1*height bytes:
|
||||
; glyph_pointer = FONT + (ascii_code * FONT_HEIGHT)
|
||||
|
||||
; Save current chunk cursor position (Y)
|
||||
mov r2, YL
|
||||
mov r3, YH
|
||||
|
||||
; Load first glyph position on Z
|
||||
ldi ZH, high(FONT<<1)
|
||||
ldi ZL, low(FONT<<1)
|
||||
@ -51,42 +31,41 @@ draw_char:
|
||||
add ZL, r0
|
||||
adc ZH, r1
|
||||
; Z contain our glyph's first byte position: draw it
|
||||
; Obtain drawing position in framebuffer memory (in Y)
|
||||
call update_mem_pointer
|
||||
; The drawing consist of FONT_HEIGHT cycles. Every glyph byte is placed on its own line
|
||||
; on screen. To do this, we place it LINE_COLUMNS bytes after the previous one.
|
||||
clr HIGH_ACCUM
|
||||
ldi HIGH_ACCUM, FONT_HEIGHT
|
||||
draw_char_loop:
|
||||
; Load glyph line byte from program memory (and point to the next)
|
||||
lpm A, Z+
|
||||
lpm r1, Z+
|
||||
; Write glyph line to framebuffer at chunk cursor position (Y)
|
||||
st Y, A
|
||||
st Y, r1
|
||||
; Increment chunk cursor position (Y) to next line of the same char column
|
||||
adiw YH:YL,LINE_COLUMNS
|
||||
; Decrement loop counter and exit if reached 0
|
||||
inc HIGH_ACCUM
|
||||
cpi HIGH_ACCUM, FONT_HEIGHT
|
||||
brlo draw_char_loop
|
||||
dec HIGH_ACCUM
|
||||
brne draw_char_loop
|
||||
|
||||
; Char drawing is complete. Increment cursor position
|
||||
inc POS_COLUMN
|
||||
; Check if end of line
|
||||
cpi POS_COLUMN, LINE_COLUMNS
|
||||
brsh draw_char_eol
|
||||
cpi POS_COLUMN, 52
|
||||
breq draw_char_eol
|
||||
; Reset chunk position to first glyph line of next column
|
||||
mov YL, r2 ; first restore Y
|
||||
mov YH, r3
|
||||
adiw YH:YL,1 ; just increment pre-char-drawing-saved chunk cursor position by 1
|
||||
ret
|
||||
draw_char_eol:
|
||||
; end of line
|
||||
clr POS_COLUMN ; reset column to 0
|
||||
; Move cursor to next line
|
||||
ldi HIGH_ACCUM, FONT_HEIGHT
|
||||
add POS_ROWP, HIGH_ACCUM
|
||||
; check if reached end of screen
|
||||
cpi POS_ROWP, SCREEN_HEIGHT
|
||||
brsh draw_char_eos
|
||||
ret
|
||||
draw_char_eos:
|
||||
; end of screen: scroll screen but leave line pointer to last line
|
||||
call scroll_screen
|
||||
adiw YH:YL,1 ; increment chunk cursor position by 1 (begin of next line on screen)
|
||||
; Check if end of screen
|
||||
cpi YH, high(FRAMEBUFFER_END + 1)
|
||||
brne draw_char_end
|
||||
cpi YL, low(FRAMEBUFFER_END + 1)
|
||||
brne draw_char_end
|
||||
; End of screen reached! Scroll framebuffer by 1 line (=52*FONT_HEIGHT bytes)
|
||||
; TODO
|
||||
draw_char_end:
|
||||
ret
|
||||
|
||||
; Sets the cursor to 0,0 and clears fine position
|
||||
@ -94,86 +73,38 @@ cursor_pos_home:
|
||||
; Set all positions to 0
|
||||
clr POS_COLUMN
|
||||
clr POS_ROWP
|
||||
clr POS_FINE
|
||||
; Load framebuffer start position to Y
|
||||
; ldi YH, high(FRAMEBUFFER)
|
||||
; ldi YL, low(FRAMEBUFFER)
|
||||
; TODO: First 3 lines are not visible! Outside of screen!
|
||||
ldi YH, high(0x780)
|
||||
ldi YL, low(0x780)
|
||||
ret
|
||||
|
||||
; Updates framebuffer pointer (Y) to point to current text cursor position (POS_COLUMN, POS_ROWP)
|
||||
; Usage:
|
||||
; ldi POS_COLUMN, 55
|
||||
; ldi POS_ROWP, 13
|
||||
; call set_framebuffer_pointer_to_text_cursor ; (sets cursor to 4th character of second row in 13th row-pair = column 4, row 27 on screen)
|
||||
; @modifies Y, R0, R1
|
||||
set_framebuffer_pointer_to_text_cursor:
|
||||
; Load framebuffer start position to Y
|
||||
ldi YH, high(FRAMEBUFFER)
|
||||
ldi YL, low(FRAMEBUFFER)
|
||||
; Obtain offset between 0,0 and current cursor position
|
||||
mul POS_COLUMN, POS_ROWP ; result is in r1,r0
|
||||
; Sum offset to Y
|
||||
add YL, r0
|
||||
adc YH, r1
|
||||
ret
|
||||
|
||||
|
||||
|
||||
; Draws a newline
|
||||
; Moves cursor to start of following screen line
|
||||
; Takes care of particular cases, i.e. end of screen (shifts all screen up by one line)
|
||||
draw_carriage_return:
|
||||
; Move cursor to line start
|
||||
ldi POS_COLUMN, 0
|
||||
; Move cursor to next line
|
||||
ldi HIGH_ACCUM, FONT_HEIGHT
|
||||
add POS_ROWP, HIGH_ACCUM
|
||||
; Check if end of screen
|
||||
cpi POS_ROWP, SCREEN_HEIGHT
|
||||
brsh draw_carriage_return_eos
|
||||
ret
|
||||
draw_carriage_return_eos:
|
||||
call scroll_screen
|
||||
ret
|
||||
|
||||
; Scrolls the screen by one line (=LINE_COLUMNS*FONT_HEIGHT bytes)
|
||||
; and clears the last line (FRAMEBUFFER_END - LINE_COLUMNS*FONT_HEIGHT bytes)
|
||||
; @uses A, Z
|
||||
scroll_screen:
|
||||
; "Read" Pointer to first char of second line
|
||||
ldi YH, high(FRAMEBUFFER+(LINE_COLUMNS*FONT_HEIGHT))
|
||||
ldi YL, low(FRAMEBUFFER+(LINE_COLUMNS*FONT_HEIGHT))
|
||||
; "Write" Pointer to first char of first line
|
||||
ldi ZH, high(FRAMEBUFFER)
|
||||
ldi ZL, low(FRAMEBUFFER)
|
||||
; Copy data
|
||||
scroll_screen_copy_loop:
|
||||
ld A, Y+
|
||||
st Z+, A
|
||||
cpi YH, high(FRAMEBUFFER_END)
|
||||
brne scroll_screen_copy_loop
|
||||
cpi YL, low(FRAMEBUFFER_END)
|
||||
brne scroll_screen_copy_loop
|
||||
; All the lines have been "shifted" up by one line.
|
||||
; The first line is lost and the last is duplicate. Clear the last.
|
||||
clr A
|
||||
scroll_screen_clear_loop:
|
||||
st Z+, A
|
||||
cpi r31, high(FRAMEBUFFER_END)
|
||||
brne scroll_screen_clear_loop
|
||||
cpi r30, low(FRAMEBUFFER_END)
|
||||
brne scroll_screen_clear_loop
|
||||
; Last line cleared. Set cursor position
|
||||
clr POS_COLUMN ; cursor to first column
|
||||
ldi POS_ROWP, SCREEN_HEIGHT-FONT_HEIGHT
|
||||
ret
|
||||
|
||||
; Sets the Y register to point to the cursor's first line memory position
|
||||
; The cursor's position is represented by registers POS_COLUMN and POS_ROWP
|
||||
update_mem_pointer:
|
||||
; Compute memory pointer offset: offset = (LINE_COLUMNS*POS_ROWP)+POS_COLUMN
|
||||
; LINE_COLUMNS*POS_ROWP
|
||||
ldi HIGH_ACCUM, LINE_COLUMNS
|
||||
mul HIGH_ACCUM, POS_ROWP ; result overwrites r0 and r1!
|
||||
; ...+POS_COLUMN
|
||||
add r0, POS_COLUMN
|
||||
clr HIGH_ACCUM
|
||||
adc r1, HIGH_ACCUM
|
||||
; Set pointer to start of framebuffer
|
||||
ldi YL, low(FRAMEBUFFER)
|
||||
ldi YH, high(FRAMEBUFFER)
|
||||
; Add offset to pointer
|
||||
add YL, r0
|
||||
adc YH, r1
|
||||
ret
|
||||
|
||||
clear_screen:
|
||||
ldi YH, high(FRAMEBUFFER)
|
||||
ldi YL, low(FRAMEBUFFER)
|
||||
load_mem_loop:
|
||||
clr HIGH_ACCUM
|
||||
;ser HIGH_ACCUM
|
||||
st Y+, HIGH_ACCUM
|
||||
; if reached the last framebuffer byte, exit cycle
|
||||
cpi YH, high(FRAMEBUFFER_END)
|
||||
brne load_mem_loop ; if not 0, repeat h_picture_loop
|
||||
cpi YL, low(FRAMEBUFFER_END)
|
||||
brne load_mem_loop ; if not 0, repeat h_picture_loop
|
||||
ret
|
@ -2,33 +2,17 @@
|
||||
; * PAT80 COMPOSITE PAL VIDEO ADAPTER *
|
||||
; * 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
|
||||
; the video adapter.
|
||||
|
||||
; INTERNAL POINTER:
|
||||
; Internally, the last screen position is represented by 24 bits in two registers:
|
||||
; POS_COARSE: Register Y (16-bit, r31 and r30): Coarse position. Points to one of the chunks
|
||||
; (character columns). 46 chunks per row, 304 rows. Used for character position, as
|
||||
; (character columns). 52 chunks per row, 304 rows. Used for character position, as
|
||||
; 1 chunk = 1 byte = 1 character.
|
||||
; POS_FINE: Register r24: Fine position. Represents the bit inside the chunk selected by POS_COARSE.
|
||||
; Ignored in character mode (the character is always aligned to column). Used in graphic mode.
|
||||
|
||||
; Initializes and waits for a byte on PORTB
|
||||
comm_init:
|
||||
|
@ -0,0 +1,649 @@
|
||||
CAT_IMAGE: .db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
|
||||
|
||||
|
||||
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
||||
.db 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
.db 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0
|
@ -1,4 +1,4 @@
|
||||
fuses_lo = 0xAF
|
||||
fuses_lo = 0xEF
|
||||
fuses_hi = 0x99
|
||||
fuses_ext = 0xff
|
||||
lock_byte = 0xff
|
||||
|
@ -1,25 +1,10 @@
|
||||
; 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/>.
|
||||
;
|
||||
; Implemented following timings in http://blog.retroleum.co.uk/electronics-articles/pal-tv-timing-and-voltages/
|
||||
; Every line, for 52 times, it loads a byte from memory into PORTA register and then shifts the byte to the left to show another bit (do it 7 times)
|
||||
; This also displays byte's MSB pixel "for free", as the video pin is PD7 (last bit of PORTA).
|
||||
;
|
||||
; 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
|
||||
;
|
||||
; ELECTRONICALLY:
|
||||
@ -43,31 +28,35 @@
|
||||
.include "m1284def.inc" ; Atmega 1280 device definition
|
||||
|
||||
; *** reserved registers ***
|
||||
; Video generator registers:
|
||||
; X(R27, R26)
|
||||
; Cursor Position
|
||||
; POS_COLUMN (0-103) represents the column on a pair of rows: 0 to 51 is the first row, 52 to 103 the second one
|
||||
; POS_ROWP (0-152) represent the pair of rows. POS_ROWP = 5 means the 10th and 11th rows
|
||||
; POS_FINE represents fine position (bit inside coarse-position-pointed chunk) in graphic mode.
|
||||
.def POS_COLUMN = r21
|
||||
.def POS_ROWP = r20
|
||||
.def POS_FINE = r24
|
||||
; Internal registers
|
||||
.def A = r0 ; accumulator
|
||||
.def STATUS = r25 ; signal status (see STATUS TABLE)
|
||||
.def VG_HIGH_ACCUM = r24 ; an accumulator in high registers to be used only by video_generator in interrupt
|
||||
;POS_COARSE = Y ; coarse position (aligned to character column)
|
||||
;DRAWING_BYTE = X ; current position in framebuffer
|
||||
.def LINE_COUNTER = r23
|
||||
.def VG_HIGH_ACCUM = r22 ; an accumulator in high registers to be used only by video_generator in interrupt
|
||||
.def HIGH_ACCUM = r16 ; an accumulator in high registers to be used outside of interrupts
|
||||
|
||||
; Character generator registers:
|
||||
.def POS_COLUMN = r22 ; POS_COLUMN (0-46) represents the character/chunk column
|
||||
.def POS_ROWP = r21 ; POS_ROWP (0-255) represent the chunk row. The caracter row is POS_ROWP/FONT_HEIGHT
|
||||
.def HIGH_ACCUM = r20 ; an accumulator in high registers to be used outside of interrupts
|
||||
.def A = r0 ; general purpose accumulator to be used outside of interrupts
|
||||
|
||||
; Hardware pins and ports
|
||||
.equ VIDEO_PORT_OUT = PORTA ; Used all PORTA, but connected only PA0
|
||||
; define constant
|
||||
.equ VIDEO_PORT_OUT = PORTA ; PORTA is connected to a parallel-in serial-out shift register
|
||||
.equ SYNC_PIN = PC0 ; Sync pin (pin 22)
|
||||
.equ DEBUG_PIN = PC1 ; DEBUG: Single vertical sync pulse to trigger oscilloscope (pin 23)
|
||||
.equ SR_LD_PIN = PC2 ; LD pin of shift register (active low)
|
||||
.equ DATA_PORT_IN = PIND
|
||||
.equ CLK_PIN = PC2
|
||||
.equ RS_PIN = PC3
|
||||
.equ BUSY_PIN = PC4
|
||||
.equ CLK_PIN = PC3
|
||||
.equ RS_PIN = PC4
|
||||
.equ BUSY_PIN = PC5
|
||||
|
||||
; Memory map
|
||||
.equ FRAMEBUFFER = 0x0F70
|
||||
.equ FRAMEBUFFER_END = 0x3C00
|
||||
.equ SCREEN_HEIGHT = 248
|
||||
; memory
|
||||
.equ FRAMEBUFFER = 0x0100
|
||||
.equ FRAMEBUFFER_END = 0x3D00 ; 15kb @ 512x240
|
||||
|
||||
; start vector
|
||||
.org 0x0000
|
||||
@ -78,8 +67,6 @@
|
||||
.org 0x40
|
||||
; main program
|
||||
main:
|
||||
; **** I/O SETUP ****
|
||||
|
||||
; pins setup
|
||||
sbi DDRC, SYNC_PIN ; set pin as output
|
||||
sbi DDRC, DEBUG_PIN ; set pin as output
|
||||
@ -90,18 +77,73 @@ main:
|
||||
ldi HIGH_ACCUM, 0x00
|
||||
out DDRB, HIGH_ACCUM ; set port as input (used as data bus)
|
||||
|
||||
; clear ram
|
||||
;*** Load data into ram ***
|
||||
; Set X to 0x0100
|
||||
ldi r27, high(FRAMEBUFFER)
|
||||
ldi r26, low(FRAMEBUFFER)
|
||||
load_mem_loop:
|
||||
clr r17
|
||||
st X+, r17
|
||||
; if reached the last framebuffer byte, exit cycle
|
||||
cpi r27, 0b00111110
|
||||
brne load_mem_loop ; if not 0, repeat h_picture_loop
|
||||
cpi r26, 0b11000000
|
||||
brne load_mem_loop ; if not 0, repeat h_picture_loop
|
||||
|
||||
; **** MEMORY SETUP ****
|
||||
; test draw character routine
|
||||
call cursor_pos_home
|
||||
ldi r18, 0x21
|
||||
draw_chars:
|
||||
mov HIGH_ACCUM, r18
|
||||
call draw_char
|
||||
inc r18
|
||||
cpi r18, 0x7E
|
||||
brne draw_chars
|
||||
|
||||
call clear_screen
|
||||
ldi r18, 0x21
|
||||
draw_chars2:
|
||||
mov HIGH_ACCUM, r18
|
||||
call draw_char
|
||||
inc r18
|
||||
cpi r18, 0x7E
|
||||
brne draw_chars2
|
||||
|
||||
|
||||
ldi r18, 0x21
|
||||
draw_chars3:
|
||||
mov HIGH_ACCUM, r18
|
||||
call draw_char
|
||||
inc r18
|
||||
cpi r18, 0x7E
|
||||
brne draw_chars3
|
||||
|
||||
ldi r18, 0x21
|
||||
draw_chars4:
|
||||
mov HIGH_ACCUM, r18
|
||||
call draw_char
|
||||
inc r18
|
||||
cpi r18, 0x7E
|
||||
brne draw_chars4
|
||||
|
||||
ldi r18, 0x21
|
||||
draw_chars5:
|
||||
mov HIGH_ACCUM, r18
|
||||
call draw_char
|
||||
inc r18
|
||||
cpi r18, 0x7E
|
||||
brne draw_chars5
|
||||
|
||||
ldi r18, 0x21
|
||||
draw_chars6:
|
||||
mov HIGH_ACCUM, r18
|
||||
call draw_char
|
||||
inc r18
|
||||
cpi r18, 0x7E
|
||||
brne draw_chars6
|
||||
|
||||
|
||||
|
||||
; **** TIMERS AND DRAWING IMAGE ROUTINES SETUP ****
|
||||
|
||||
; Timer setup (use 16-bit counter TC1)
|
||||
; *** timer setup (use 16-bit counter TC1) ***
|
||||
; The Power Reduction TC1 and TC3 bits in the Power Reduction Registers (PRR0.PRTIM1 and
|
||||
; PRR1.PRTIM3) must be written to zero to enable the TC1 and TC3 module.
|
||||
ldi HIGH_ACCUM, 0b00000000
|
||||
@ -116,80 +158,8 @@ main:
|
||||
SEI
|
||||
; Timer setup completed.
|
||||
|
||||
|
||||
|
||||
|
||||
; **** MAIN ROUTINE ****
|
||||
|
||||
; Wait for data (it never exits)
|
||||
;jmp comm_init
|
||||
|
||||
|
||||
; draw example image
|
||||
;call draw_cat
|
||||
|
||||
; test draw character routine
|
||||
call cursor_pos_home
|
||||
dctest:
|
||||
ldi r18, 0x41
|
||||
draw_chars:
|
||||
mov HIGH_ACCUM, r18
|
||||
call draw_char
|
||||
dc_continue:
|
||||
; wait
|
||||
ser r19
|
||||
dc_wait_loop_1:
|
||||
ser r16
|
||||
dc_wait_loop_2:
|
||||
dec r16
|
||||
brne dc_wait_loop_2
|
||||
dec r19
|
||||
brne dc_wait_loop_1
|
||||
; wait
|
||||
; ser r19
|
||||
; dc_wait_loop_a1:
|
||||
; ser r16
|
||||
; dc_wait_loop_a2:
|
||||
; dec r16
|
||||
; brne dc_wait_loop_a2
|
||||
; dec r19
|
||||
; brne dc_wait_loop_a1
|
||||
; ; wait
|
||||
; ser r19
|
||||
; dc_wait_loop_s1:
|
||||
; ser r16
|
||||
; dc_wait_loop_s2:
|
||||
; dec r16
|
||||
; brne dc_wait_loop_s2
|
||||
; dec r19
|
||||
; brne dc_wait_loop_s1
|
||||
; ; wait
|
||||
; ser r19
|
||||
; dc_wait_loop_d1:
|
||||
; ser r16
|
||||
; dc_wait_loop_d2:
|
||||
; dec r16
|
||||
; brne dc_wait_loop_d2
|
||||
; dec r19
|
||||
; brne dc_wait_loop_d1
|
||||
; ; wait
|
||||
; ser r19
|
||||
; dc_wait_loop_f1:
|
||||
; ser r16
|
||||
; dc_wait_loop_f2:
|
||||
; dec r16
|
||||
; brne dc_wait_loop_f2
|
||||
; dec r19
|
||||
; brne dc_wait_loop_f1
|
||||
|
||||
inc r18
|
||||
cpi r18, 0x5B
|
||||
brne draw_chars
|
||||
call draw_carriage_return
|
||||
jmp dctest
|
||||
|
||||
|
||||
|
||||
jmp comm_init
|
||||
|
||||
forever:
|
||||
jmp forever
|
||||
@ -199,6 +169,5 @@ main:
|
||||
|
||||
.include "video_generator.asm" ; Asyncronous timer-interrupt-based video generation
|
||||
.include "character_generator.asm" ; Character generator
|
||||
;.include "communication.asm" ; Communication with Pat80
|
||||
.include "communication.asm" ; Communication with Pat80
|
||||
.include "font.asm" ; Font face
|
||||
;.include "example_data/cat.asm" ; Cat image
|
||||
|
@ -1,18 +0,0 @@
|
||||
# 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/>.
|
@ -1,3 +0,0 @@
|
||||
(fp_lib_table
|
||||
(lib (name footprints)(type KiCad)(uri /home/danieleverducci/git/pato-z80-home-computer/kicad-symbols/footprints.pretty)(options "")(descr ""))
|
||||
)
|
@ -1,235 +0,0 @@
|
||||
EESchema-LIBRARY Version 2.4
|
||||
#encoding utf-8
|
||||
#
|
||||
# Connector_Generic_Conn_02x17_Odd_Even
|
||||
#
|
||||
DEF Connector_Generic_Conn_02x17_Odd_Even J 0 40 Y N 1 F N
|
||||
F0 "J" 50 900 50 H V C CNN
|
||||
F1 "Connector_Generic_Conn_02x17_Odd_Even" 50 -900 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
Connector*:*_2x??_*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -50 -795 0 -805 1 1 6 N
|
||||
S -50 -695 0 -705 1 1 6 N
|
||||
S -50 -595 0 -605 1 1 6 N
|
||||
S -50 -495 0 -505 1 1 6 N
|
||||
S -50 -395 0 -405 1 1 6 N
|
||||
S -50 -295 0 -305 1 1 6 N
|
||||
S -50 -195 0 -205 1 1 6 N
|
||||
S -50 -95 0 -105 1 1 6 N
|
||||
S -50 5 0 -5 1 1 6 N
|
||||
S -50 105 0 95 1 1 6 N
|
||||
S -50 205 0 195 1 1 6 N
|
||||
S -50 305 0 295 1 1 6 N
|
||||
S -50 405 0 395 1 1 6 N
|
||||
S -50 505 0 495 1 1 6 N
|
||||
S -50 605 0 595 1 1 6 N
|
||||
S -50 705 0 695 1 1 6 N
|
||||
S -50 805 0 795 1 1 6 N
|
||||
S -50 850 150 -850 1 1 10 f
|
||||
S 150 -795 100 -805 1 1 6 N
|
||||
S 150 -695 100 -705 1 1 6 N
|
||||
S 150 -595 100 -605 1 1 6 N
|
||||
S 150 -495 100 -505 1 1 6 N
|
||||
S 150 -395 100 -405 1 1 6 N
|
||||
S 150 -295 100 -305 1 1 6 N
|
||||
S 150 -195 100 -205 1 1 6 N
|
||||
S 150 -95 100 -105 1 1 6 N
|
||||
S 150 5 100 -5 1 1 6 N
|
||||
S 150 105 100 95 1 1 6 N
|
||||
S 150 205 100 195 1 1 6 N
|
||||
S 150 305 100 295 1 1 6 N
|
||||
S 150 405 100 395 1 1 6 N
|
||||
S 150 505 100 495 1 1 6 N
|
||||
S 150 605 100 595 1 1 6 N
|
||||
S 150 705 100 695 1 1 6 N
|
||||
S 150 805 100 795 1 1 6 N
|
||||
X Pin_1 1 -200 800 150 R 50 50 1 1 P
|
||||
X Pin_10 10 300 400 150 L 50 50 1 1 P
|
||||
X Pin_11 11 -200 300 150 R 50 50 1 1 P
|
||||
X Pin_12 12 300 300 150 L 50 50 1 1 P
|
||||
X Pin_13 13 -200 200 150 R 50 50 1 1 P
|
||||
X Pin_14 14 300 200 150 L 50 50 1 1 P
|
||||
X Pin_15 15 -200 100 150 R 50 50 1 1 P
|
||||
X Pin_16 16 300 100 150 L 50 50 1 1 P
|
||||
X Pin_17 17 -200 0 150 R 50 50 1 1 P
|
||||
X Pin_18 18 300 0 150 L 50 50 1 1 P
|
||||
X Pin_19 19 -200 -100 150 R 50 50 1 1 P
|
||||
X Pin_2 2 300 800 150 L 50 50 1 1 P
|
||||
X Pin_20 20 300 -100 150 L 50 50 1 1 P
|
||||
X Pin_21 21 -200 -200 150 R 50 50 1 1 P
|
||||
X Pin_22 22 300 -200 150 L 50 50 1 1 P
|
||||
X Pin_23 23 -200 -300 150 R 50 50 1 1 P
|
||||
X Pin_24 24 300 -300 150 L 50 50 1 1 P
|
||||
X Pin_25 25 -200 -400 150 R 50 50 1 1 P
|
||||
X Pin_26 26 300 -400 150 L 50 50 1 1 P
|
||||
X Pin_27 27 -200 -500 150 R 50 50 1 1 P
|
||||
X Pin_28 28 300 -500 150 L 50 50 1 1 P
|
||||
X Pin_29 29 -200 -600 150 R 50 50 1 1 P
|
||||
X Pin_3 3 -200 700 150 R 50 50 1 1 P
|
||||
X Pin_30 30 300 -600 150 L 50 50 1 1 P
|
||||
X Pin_31 31 -200 -700 150 R 50 50 1 1 P
|
||||
X Pin_32 32 300 -700 150 L 50 50 1 1 P
|
||||
X Pin_33 33 -200 -800 150 R 50 50 1 1 P
|
||||
X Pin_34 34 300 -800 150 L 50 50 1 1 P
|
||||
X Pin_4 4 300 700 150 L 50 50 1 1 P
|
||||
X Pin_5 5 -200 600 150 R 50 50 1 1 P
|
||||
X Pin_6 6 300 600 150 L 50 50 1 1 P
|
||||
X Pin_7 7 -200 500 150 R 50 50 1 1 P
|
||||
X Pin_8 8 300 500 150 L 50 50 1 1 P
|
||||
X Pin_9 9 -200 400 150 R 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Device_C
|
||||
#
|
||||
DEF Device_C C 0 10 N Y 1 F N
|
||||
F0 "C" 25 100 50 H V L CNN
|
||||
F1 "Device_C" 25 -100 50 H V L CNN
|
||||
F2 "" 38 -150 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
C_*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
P 2 0 1 20 -80 -30 80 -30 N
|
||||
P 2 0 1 20 -80 30 80 30 N
|
||||
X ~ 1 0 150 110 D 50 50 1 1 P
|
||||
X ~ 2 0 -150 110 U 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Device_D
|
||||
#
|
||||
DEF Device_D D 0 40 N N 1 F N
|
||||
F0 "D" 0 100 50 H V C CNN
|
||||
F1 "Device_D" 0 -100 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
TO-???*
|
||||
*_Diode_*
|
||||
*SingleDiode*
|
||||
D_*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
P 2 0 1 8 -50 50 -50 -50 N
|
||||
P 2 0 1 0 50 0 -50 0 N
|
||||
P 4 0 1 8 50 50 50 -50 -50 0 50 50 N
|
||||
X K 1 -150 0 100 R 50 50 1 1 P
|
||||
X A 2 150 0 100 L 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Device_LED
|
||||
#
|
||||
DEF Device_LED D 0 40 N N 1 F N
|
||||
F0 "D" 0 100 50 H V C CNN
|
||||
F1 "Device_LED" 0 -100 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
LED*
|
||||
LED_SMD:*
|
||||
LED_THT:*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
P 2 0 1 8 -50 -50 -50 50 N
|
||||
P 2 0 1 0 -50 0 50 0 N
|
||||
P 4 0 1 8 50 -50 50 50 -50 0 50 -50 N
|
||||
P 5 0 1 0 -120 -30 -180 -90 -150 -90 -180 -90 -180 -60 N
|
||||
P 5 0 1 0 -70 -30 -130 -90 -100 -90 -130 -90 -130 -60 N
|
||||
X K 1 -150 0 100 R 50 50 1 1 P
|
||||
X A 2 150 0 100 L 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Device_R
|
||||
#
|
||||
DEF Device_R R 0 0 N Y 1 F N
|
||||
F0 "R" 80 0 50 V V C CNN
|
||||
F1 "Device_R" 0 0 50 V V C CNN
|
||||
F2 "" -70 0 50 V I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
R_*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -40 -100 40 100 0 1 10 N
|
||||
X ~ 1 0 150 50 D 50 50 1 1 P
|
||||
X ~ 2 0 -150 50 U 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Switch_SW_DPDT_x2
|
||||
#
|
||||
DEF Switch_SW_DPDT_x2 SW 0 0 Y N 2 F N
|
||||
F0 "SW" 0 170 50 H V C CNN
|
||||
F1 "Switch_SW_DPDT_x2" 0 -200 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
SW*DPDT*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
C -80 0 20 0 0 0 N
|
||||
C 80 -100 20 0 0 0 N
|
||||
C 80 100 20 0 1 0 N
|
||||
P 2 0 1 0 -60 10 65 90 N
|
||||
X A 1 200 100 100 L 50 50 1 1 P
|
||||
X B 2 -200 0 100 R 50 50 1 1 P
|
||||
X C 3 200 -100 100 L 50 50 1 1 P
|
||||
X A 4 200 100 100 L 50 50 2 1 P
|
||||
X B 5 -200 0 100 R 50 50 2 1 P
|
||||
X C 6 200 -100 100 L 50 50 2 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Switch_SW_Push
|
||||
#
|
||||
DEF Switch_SW_Push SW 0 40 N N 1 F N
|
||||
F0 "SW" 50 100 50 H V L CNN
|
||||
F1 "Switch_SW_Push" 0 -60 50 H V C CNN
|
||||
F2 "" 0 200 50 H I C CNN
|
||||
F3 "" 0 200 50 H I C CNN
|
||||
DRAW
|
||||
C -80 0 20 0 1 0 N
|
||||
C 80 0 20 0 1 0 N
|
||||
P 2 0 1 0 0 50 0 120 N
|
||||
P 2 0 1 0 100 50 -100 50 N
|
||||
X 1 1 -200 0 100 R 50 50 0 1 P
|
||||
X 2 2 200 0 100 L 50 50 0 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# power_GND
|
||||
#
|
||||
DEF power_GND #PWR 0 0 Y Y 1 F P
|
||||
F0 "#PWR" 0 -250 50 H I C CNN
|
||||
F1 "power_GND" 0 -150 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
DRAW
|
||||
P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N
|
||||
X GND 1 0 0 0 D 50 50 1 1 W N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# power_VCC
|
||||
#
|
||||
DEF power_VCC #PWR 0 0 Y Y 1 F P
|
||||
F0 "#PWR" 0 -150 50 H I C CNN
|
||||
F1 "power_VCC" 0 150 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
DRAW
|
||||
C 0 75 25 0 1 0 N
|
||||
P 2 0 1 0 0 0 0 50 N
|
||||
X VCC 1 0 0 0 U 50 50 1 1 W N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
@ -1,252 +0,0 @@
|
||||
update=mar 30 mar 2021 07:28:33 CEST
|
||||
version=1
|
||||
last_client=kicad
|
||||
[general]
|
||||
version=1
|
||||
RootSch=
|
||||
BoardNm=
|
||||
[cvpcb]
|
||||
version=1
|
||||
NetIExt=net
|
||||
[eeschema]
|
||||
version=1
|
||||
LibDir=
|
||||
[eeschema/libraries]
|
||||
[schematic_editor]
|
||||
version=1
|
||||
PageLayoutDescrFile=
|
||||
PlotDirectoryName=
|
||||
SubpartIdSeparator=0
|
||||
SubpartFirstId=65
|
||||
NetFmtName=Pcbnew
|
||||
SpiceAjustPassiveValues=0
|
||||
LabSize=50
|
||||
ERC_TestSimilarLabels=1
|
||||
[pcbnew]
|
||||
version=1
|
||||
PageLayoutDescrFile=
|
||||
LastNetListRead=keyboard.net
|
||||
CopperLayerCount=2
|
||||
BoardThickness=1.6
|
||||
AllowMicroVias=0
|
||||
AllowBlindVias=0
|
||||
RequireCourtyardDefinitions=0
|
||||
ProhibitOverlappingCourtyards=1
|
||||
MinTrackWidth=0.2
|
||||
MinViaDiameter=0.4
|
||||
MinViaDrill=0.3
|
||||
MinMicroViaDiameter=0.2
|
||||
MinMicroViaDrill=0.09999999999999999
|
||||
MinHoleToHole=0.25
|
||||
TrackWidth1=0.25
|
||||
TrackWidth2=0.5
|
||||
TrackWidth3=1
|
||||
ViaDiameter1=0.8
|
||||
ViaDrill1=0.4
|
||||
ViaDiameter2=2
|
||||
ViaDrill2=0.5
|
||||
dPairWidth1=0.2
|
||||
dPairGap1=0.25
|
||||
dPairViaGap1=0.25
|
||||
SilkLineWidth=0.12
|
||||
SilkTextSizeV=1
|
||||
SilkTextSizeH=1
|
||||
SilkTextSizeThickness=0.15
|
||||
SilkTextItalic=0
|
||||
SilkTextUpright=1
|
||||
CopperLineWidth=0.2
|
||||
CopperTextSizeV=1.5
|
||||
CopperTextSizeH=1.5
|
||||
CopperTextThickness=0.3
|
||||
CopperTextItalic=0
|
||||
CopperTextUpright=1
|
||||
EdgeCutLineWidth=0.05
|
||||
CourtyardLineWidth=0.05
|
||||
OthersLineWidth=0.15
|
||||
OthersTextSizeV=1
|
||||
OthersTextSizeH=1
|
||||
OthersTextSizeThickness=0.15
|
||||
OthersTextItalic=0
|
||||
OthersTextUpright=1
|
||||
SolderMaskClearance=0
|
||||
SolderMaskMinWidth=0
|
||||
SolderPasteClearance=0
|
||||
SolderPasteRatio=-0
|
||||
[pcbnew/Layer.F.Cu]
|
||||
Name=F.Cu
|
||||
Type=0
|
||||
Enabled=1
|
||||
[pcbnew/Layer.In1.Cu]
|
||||
Name=In1.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In2.Cu]
|
||||
Name=In2.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In3.Cu]
|
||||
Name=In3.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In4.Cu]
|
||||
Name=In4.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In5.Cu]
|
||||
Name=In5.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In6.Cu]
|
||||
Name=In6.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In7.Cu]
|
||||
Name=In7.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In8.Cu]
|
||||
Name=In8.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In9.Cu]
|
||||
Name=In9.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In10.Cu]
|
||||
Name=In10.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In11.Cu]
|
||||
Name=In11.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In12.Cu]
|
||||
Name=In12.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In13.Cu]
|
||||
Name=In13.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In14.Cu]
|
||||
Name=In14.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In15.Cu]
|
||||
Name=In15.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In16.Cu]
|
||||
Name=In16.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In17.Cu]
|
||||
Name=In17.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In18.Cu]
|
||||
Name=In18.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In19.Cu]
|
||||
Name=In19.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In20.Cu]
|
||||
Name=In20.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In21.Cu]
|
||||
Name=In21.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In22.Cu]
|
||||
Name=In22.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In23.Cu]
|
||||
Name=In23.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In24.Cu]
|
||||
Name=In24.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In25.Cu]
|
||||
Name=In25.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In26.Cu]
|
||||
Name=In26.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In27.Cu]
|
||||
Name=In27.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In28.Cu]
|
||||
Name=In28.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In29.Cu]
|
||||
Name=In29.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In30.Cu]
|
||||
Name=In30.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.B.Cu]
|
||||
Name=B.Cu
|
||||
Type=0
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.Adhes]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.Adhes]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.Paste]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.Paste]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.SilkS]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.SilkS]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.Mask]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.Mask]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Dwgs.User]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Cmts.User]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Eco1.User]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Eco2.User]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Edge.Cuts]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Margin]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.CrtYd]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.CrtYd]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.Fab]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.Fab]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Rescue]
|
||||
Enabled=0
|
||||
[pcbnew/Netclasses]
|
||||
[pcbnew/Netclasses/Default]
|
||||
Name=Default
|
||||
Clearance=0.2
|
||||
TrackWidth=0.25
|
||||
ViaDiameter=0.8
|
||||
ViaDrill=0.4
|
||||
uViaDiameter=0.3
|
||||
uViaDrill=0.1
|
||||
dPairWidth=0.2
|
||||
dPairGap=0.25
|
||||
dPairViaGap=0.25
|
@ -1,3 +0,0 @@
|
||||
(sym_lib_table
|
||||
(lib (name pat80)(type Legacy)(uri /home/danieleverducci/git/pato-z80-home-computer/kicad-symbols/pat80.lib)(options "")(descr ""))
|
||||
)
|
@ -1,18 +0,0 @@
|
||||
# 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/>.
|
@ -1,3 +0,0 @@
|
||||
(fp_lib_table
|
||||
(lib (name footprints)(type KiCad)(uri /home/danieleverducci/git/pato-z80-home-computer/kicad-symbols/footprints.pretty)(options "")(descr ""))
|
||||
)
|
@ -1,297 +0,0 @@
|
||||
EESchema-LIBRARY Version 2.4
|
||||
#encoding utf-8
|
||||
#
|
||||
# 74xx_74HC244
|
||||
#
|
||||
DEF 74xx_74HC244 U 0 40 Y Y 1 L N
|
||||
F0 "U" -300 650 50 H V C CNN
|
||||
F1 "74xx_74HC244" -300 -650 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
ALIAS 74HCT244
|
||||
$FPLIST
|
||||
TSSOP*4.4x6.5mm*P0.65mm*
|
||||
SSOP*4.4x6.5mm*P0.65mm*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -300 600 300 -600 1 1 10 f
|
||||
P 4 1 0 6 50 0 -50 50 -50 -50 50 0 N
|
||||
X 1OE 1 -500 -400 200 R 50 50 1 0 I I
|
||||
X GND 10 0 -800 200 U 50 50 1 0 W
|
||||
X 2A3 11 -500 -200 200 R 50 50 1 0 I
|
||||
X 1Y3 12 500 200 200 L 50 50 1 0 O
|
||||
X 2A2 13 -500 -100 200 R 50 50 1 0 I
|
||||
X 1Y2 14 500 300 200 L 50 50 1 0 O
|
||||
X 2A1 15 -500 0 200 R 50 50 1 0 I
|
||||
X 1Y1 16 500 400 200 L 50 50 1 0 O
|
||||
X 2A0 17 -500 100 200 R 50 50 1 0 I
|
||||
X 1Y0 18 500 500 200 L 50 50 1 0 O
|
||||
X 2OE 19 -500 -500 200 R 50 50 1 0 I I
|
||||
X 1A0 2 -500 500 200 R 50 50 1 0 I
|
||||
X VCC 20 0 800 200 D 50 50 1 0 W
|
||||
X 2Y0 3 500 100 200 L 50 50 1 0 O
|
||||
X 1A1 4 -500 400 200 R 50 50 1 0 I
|
||||
X 2Y1 5 500 0 200 L 50 50 1 0 O
|
||||
X 1A2 6 -500 300 200 R 50 50 1 0 I
|
||||
X 2Y2 7 500 -100 200 L 50 50 1 0 O
|
||||
X 1A3 8 -500 200 200 R 50 50 1 0 I
|
||||
X 2Y3 9 500 -200 200 L 50 50 1 0 O
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# 74xx_74LS138
|
||||
#
|
||||
DEF 74xx_74LS138 U 0 40 Y Y 1 L N
|
||||
F0 "U" -300 450 50 H V C CNN
|
||||
F1 "74xx_74LS138" -300 -550 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
DIP?16*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -300 400 300 -500 1 1 10 f
|
||||
X A0 1 -500 300 200 R 50 50 1 0 I
|
||||
X O5 10 500 -200 200 L 50 50 1 0 O V
|
||||
X O4 11 500 -100 200 L 50 50 1 0 O V
|
||||
X O3 12 500 0 200 L 50 50 1 0 O V
|
||||
X O2 13 500 100 200 L 50 50 1 0 O V
|
||||
X O1 14 500 200 200 L 50 50 1 0 O V
|
||||
X O0 15 500 300 200 L 50 50 1 0 O V
|
||||
X VCC 16 0 600 200 D 50 50 1 0 W
|
||||
X A1 2 -500 200 200 R 50 50 1 0 I
|
||||
X A2 3 -500 100 200 R 50 50 1 0 I
|
||||
X E1 4 -500 -400 200 R 50 50 1 0 I L
|
||||
X E2 5 -500 -300 200 R 50 50 1 0 I L
|
||||
X E3 6 -500 -200 200 R 50 50 1 0 I
|
||||
X O7 7 500 -400 200 L 50 50 1 0 O V
|
||||
X GND 8 0 -700 200 U 50 50 1 0 W
|
||||
X O6 9 500 -300 200 L 50 50 1 0 O V
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Connector_DB9_Female_MountingHoles
|
||||
#
|
||||
DEF Connector_DB9_Female_MountingHoles J 0 40 Y N 1 F N
|
||||
F0 "J" 0 650 50 H V C CNN
|
||||
F1 "Connector_DB9_Female_MountingHoles" 0 575 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
DSUB*Female*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
C -70 -400 30 0 1 0 N
|
||||
C -70 -200 30 0 1 0 N
|
||||
C -70 0 30 0 1 0 N
|
||||
C -70 200 30 0 1 0 N
|
||||
C -70 400 30 0 1 0 N
|
||||
C 50 -300 30 0 1 0 N
|
||||
C 50 -100 30 0 1 0 N
|
||||
C 50 100 30 0 1 0 N
|
||||
C 50 300 30 0 1 0 N
|
||||
P 2 0 1 0 -150 -400 -100 -400 N
|
||||
P 2 0 1 0 -150 -300 20 -300 N
|
||||
P 2 0 1 0 -150 -200 -100 -200 N
|
||||
P 2 0 1 0 -150 -100 20 -100 N
|
||||
P 2 0 1 0 -150 0 -100 0 N
|
||||
P 2 0 1 0 -150 100 20 100 N
|
||||
P 2 0 1 0 -150 200 -100 200 N
|
||||
P 2 0 1 0 -150 300 20 300 N
|
||||
P 2 0 1 0 -150 400 -100 400 N
|
||||
P 5 0 1 10 -150 525 -150 -525 150 -375 150 375 -150 525 f
|
||||
X PAD 0 0 -600 150 U 50 50 1 1 P
|
||||
X 1 1 -300 400 150 R 50 50 1 1 P
|
||||
X 2 2 -300 200 150 R 50 50 1 1 P
|
||||
X 3 3 -300 0 150 R 50 50 1 1 P
|
||||
X 4 4 -300 -200 150 R 50 50 1 1 P
|
||||
X 5 5 -300 -400 150 R 50 50 1 1 P
|
||||
X 6 6 -300 300 150 R 50 50 1 1 P
|
||||
X 7 7 -300 100 150 R 50 50 1 1 P
|
||||
X 8 8 -300 -100 150 R 50 50 1 1 P
|
||||
X 9 9 -300 -300 150 R 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Connector_Generic_Conn_01x19
|
||||
#
|
||||
DEF Connector_Generic_Conn_01x19 J 0 40 Y N 1 F N
|
||||
F0 "J" 0 1000 50 H V C CNN
|
||||
F1 "Connector_Generic_Conn_01x19" 0 -1000 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
Connector*:*_1x??_*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -50 -895 0 -905 1 1 6 N
|
||||
S -50 -795 0 -805 1 1 6 N
|
||||
S -50 -695 0 -705 1 1 6 N
|
||||
S -50 -595 0 -605 1 1 6 N
|
||||
S -50 -495 0 -505 1 1 6 N
|
||||
S -50 -395 0 -405 1 1 6 N
|
||||
S -50 -295 0 -305 1 1 6 N
|
||||
S -50 -195 0 -205 1 1 6 N
|
||||
S -50 -95 0 -105 1 1 6 N
|
||||
S -50 5 0 -5 1 1 6 N
|
||||
S -50 105 0 95 1 1 6 N
|
||||
S -50 205 0 195 1 1 6 N
|
||||
S -50 305 0 295 1 1 6 N
|
||||
S -50 405 0 395 1 1 6 N
|
||||
S -50 505 0 495 1 1 6 N
|
||||
S -50 605 0 595 1 1 6 N
|
||||
S -50 705 0 695 1 1 6 N
|
||||
S -50 805 0 795 1 1 6 N
|
||||
S -50 905 0 895 1 1 6 N
|
||||
S -50 950 50 -950 1 1 10 f
|
||||
X Pin_1 1 -200 900 150 R 50 50 1 1 P
|
||||
X Pin_10 10 -200 0 150 R 50 50 1 1 P
|
||||
X Pin_11 11 -200 -100 150 R 50 50 1 1 P
|
||||
X Pin_12 12 -200 -200 150 R 50 50 1 1 P
|
||||
X Pin_13 13 -200 -300 150 R 50 50 1 1 P
|
||||
X Pin_14 14 -200 -400 150 R 50 50 1 1 P
|
||||
X Pin_15 15 -200 -500 150 R 50 50 1 1 P
|
||||
X Pin_16 16 -200 -600 150 R 50 50 1 1 P
|
||||
X Pin_17 17 -200 -700 150 R 50 50 1 1 P
|
||||
X Pin_18 18 -200 -800 150 R 50 50 1 1 P
|
||||
X Pin_19 19 -200 -900 150 R 50 50 1 1 P
|
||||
X Pin_2 2 -200 800 150 R 50 50 1 1 P
|
||||
X Pin_3 3 -200 700 150 R 50 50 1 1 P
|
||||
X Pin_4 4 -200 600 150 R 50 50 1 1 P
|
||||
X Pin_5 5 -200 500 150 R 50 50 1 1 P
|
||||
X Pin_6 6 -200 400 150 R 50 50 1 1 P
|
||||
X Pin_7 7 -200 300 150 R 50 50 1 1 P
|
||||
X Pin_8 8 -200 200 150 R 50 50 1 1 P
|
||||
X Pin_9 9 -200 100 150 R 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Connector_Generic_Conn_02x17_Odd_Even
|
||||
#
|
||||
DEF Connector_Generic_Conn_02x17_Odd_Even J 0 40 Y N 1 F N
|
||||
F0 "J" 50 900 50 H V C CNN
|
||||
F1 "Connector_Generic_Conn_02x17_Odd_Even" 50 -900 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
Connector*:*_2x??_*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
S -50 -795 0 -805 1 1 6 N
|
||||
S -50 -695 0 -705 1 1 6 N
|
||||
S -50 -595 0 -605 1 1 6 N
|
||||
S -50 -495 0 -505 1 1 6 N
|
||||
S -50 -395 0 -405 1 1 6 N
|
||||
S -50 -295 0 -305 1 1 6 N
|
||||
S -50 -195 0 -205 1 1 6 N
|
||||
S -50 -95 0 -105 1 1 6 N
|
||||
S -50 5 0 -5 1 1 6 N
|
||||
S -50 105 0 95 1 1 6 N
|
||||
S -50 205 0 195 1 1 6 N
|
||||
S -50 305 0 295 1 1 6 N
|
||||
S -50 405 0 395 1 1 6 N
|
||||
S -50 505 0 495 1 1 6 N
|
||||
S -50 605 0 595 1 1 6 N
|
||||
S -50 705 0 695 1 1 6 N
|
||||
S -50 805 0 795 1 1 6 N
|
||||
S -50 850 150 -850 1 1 10 f
|
||||
S 150 -795 100 -805 1 1 6 N
|
||||
S 150 -695 100 -705 1 1 6 N
|
||||
S 150 -595 100 -605 1 1 6 N
|
||||
S 150 -495 100 -505 1 1 6 N
|
||||
S 150 -395 100 -405 1 1 6 N
|
||||
S 150 -295 100 -305 1 1 6 N
|
||||
S 150 -195 100 -205 1 1 6 N
|
||||
S 150 -95 100 -105 1 1 6 N
|
||||
S 150 5 100 -5 1 1 6 N
|
||||
S 150 105 100 95 1 1 6 N
|
||||
S 150 205 100 195 1 1 6 N
|
||||
S 150 305 100 295 1 1 6 N
|
||||
S 150 405 100 395 1 1 6 N
|
||||
S 150 505 100 495 1 1 6 N
|
||||
S 150 605 100 595 1 1 6 N
|
||||
S 150 705 100 695 1 1 6 N
|
||||
S 150 805 100 795 1 1 6 N
|
||||
X Pin_1 1 -200 800 150 R 50 50 1 1 P
|
||||
X Pin_10 10 300 400 150 L 50 50 1 1 P
|
||||
X Pin_11 11 -200 300 150 R 50 50 1 1 P
|
||||
X Pin_12 12 300 300 150 L 50 50 1 1 P
|
||||
X Pin_13 13 -200 200 150 R 50 50 1 1 P
|
||||
X Pin_14 14 300 200 150 L 50 50 1 1 P
|
||||
X Pin_15 15 -200 100 150 R 50 50 1 1 P
|
||||
X Pin_16 16 300 100 150 L 50 50 1 1 P
|
||||
X Pin_17 17 -200 0 150 R 50 50 1 1 P
|
||||
X Pin_18 18 300 0 150 L 50 50 1 1 P
|
||||
X Pin_19 19 -200 -100 150 R 50 50 1 1 P
|
||||
X Pin_2 2 300 800 150 L 50 50 1 1 P
|
||||
X Pin_20 20 300 -100 150 L 50 50 1 1 P
|
||||
X Pin_21 21 -200 -200 150 R 50 50 1 1 P
|
||||
X Pin_22 22 300 -200 150 L 50 50 1 1 P
|
||||
X Pin_23 23 -200 -300 150 R 50 50 1 1 P
|
||||
X Pin_24 24 300 -300 150 L 50 50 1 1 P
|
||||
X Pin_25 25 -200 -400 150 R 50 50 1 1 P
|
||||
X Pin_26 26 300 -400 150 L 50 50 1 1 P
|
||||
X Pin_27 27 -200 -500 150 R 50 50 1 1 P
|
||||
X Pin_28 28 300 -500 150 L 50 50 1 1 P
|
||||
X Pin_29 29 -200 -600 150 R 50 50 1 1 P
|
||||
X Pin_3 3 -200 700 150 R 50 50 1 1 P
|
||||
X Pin_30 30 300 -600 150 L 50 50 1 1 P
|
||||
X Pin_31 31 -200 -700 150 R 50 50 1 1 P
|
||||
X Pin_32 32 300 -700 150 L 50 50 1 1 P
|
||||
X Pin_33 33 -200 -800 150 R 50 50 1 1 P
|
||||
X Pin_34 34 300 -800 150 L 50 50 1 1 P
|
||||
X Pin_4 4 300 700 150 L 50 50 1 1 P
|
||||
X Pin_5 5 -200 600 150 R 50 50 1 1 P
|
||||
X Pin_6 6 300 600 150 L 50 50 1 1 P
|
||||
X Pin_7 7 -200 500 150 R 50 50 1 1 P
|
||||
X Pin_8 8 300 500 150 L 50 50 1 1 P
|
||||
X Pin_9 9 -200 400 150 R 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# Device_C
|
||||
#
|
||||
DEF Device_C C 0 10 N Y 1 F N
|
||||
F0 "C" 25 100 50 H V L CNN
|
||||
F1 "Device_C" 25 -100 50 H V L CNN
|
||||
F2 "" 38 -150 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
$FPLIST
|
||||
C_*
|
||||
$ENDFPLIST
|
||||
DRAW
|
||||
P 2 0 1 20 -80 -30 80 -30 N
|
||||
P 2 0 1 20 -80 30 80 30 N
|
||||
X ~ 1 0 150 110 D 50 50 1 1 P
|
||||
X ~ 2 0 -150 110 U 50 50 1 1 P
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# power_GND
|
||||
#
|
||||
DEF power_GND #PWR 0 0 Y Y 1 F P
|
||||
F0 "#PWR" 0 -250 50 H I C CNN
|
||||
F1 "power_GND" 0 -150 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
DRAW
|
||||
P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N
|
||||
X GND 1 0 0 0 D 50 50 1 1 W N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
# power_VCC
|
||||
#
|
||||
DEF power_VCC #PWR 0 0 Y Y 1 F P
|
||||
F0 "#PWR" 0 -150 50 H I C CNN
|
||||
F1 "power_VCC" 0 150 50 H V C CNN
|
||||
F2 "" 0 0 50 H I C CNN
|
||||
F3 "" 0 0 50 H I C CNN
|
||||
DRAW
|
||||
C 0 75 25 0 1 0 N
|
||||
P 2 0 1 0 0 0 0 50 N
|
||||
X VCC 1 0 0 0 U 50 50 1 1 W N
|
||||
ENDDRAW
|
||||
ENDDEF
|
||||
#
|
||||
#End Library
|
@ -1 +0,0 @@
|
||||
(kicad_pcb (version 4) (host kicad "dummy file") )
|
@ -1,248 +0,0 @@
|
||||
update=sab 27 mar 2021 17:56:11 CET
|
||||
version=1
|
||||
last_client=kicad
|
||||
[general]
|
||||
version=1
|
||||
RootSch=
|
||||
BoardNm=
|
||||
[cvpcb]
|
||||
version=1
|
||||
NetIExt=net
|
||||
[eeschema]
|
||||
version=1
|
||||
LibDir=
|
||||
[eeschema/libraries]
|
||||
[schematic_editor]
|
||||
version=1
|
||||
PageLayoutDescrFile=
|
||||
PlotDirectoryName=
|
||||
SubpartIdSeparator=0
|
||||
SubpartFirstId=65
|
||||
NetFmtName=Pcbnew
|
||||
SpiceAjustPassiveValues=0
|
||||
LabSize=50
|
||||
ERC_TestSimilarLabels=1
|
||||
[pcbnew]
|
||||
version=1
|
||||
PageLayoutDescrFile=
|
||||
LastNetListRead=keyboard.net
|
||||
CopperLayerCount=2
|
||||
BoardThickness=1.6
|
||||
AllowMicroVias=0
|
||||
AllowBlindVias=0
|
||||
RequireCourtyardDefinitions=0
|
||||
ProhibitOverlappingCourtyards=1
|
||||
MinTrackWidth=0.2
|
||||
MinViaDiameter=0.4
|
||||
MinViaDrill=0.3
|
||||
MinMicroViaDiameter=0.2
|
||||
MinMicroViaDrill=0.09999999999999999
|
||||
MinHoleToHole=0.25
|
||||
TrackWidth1=0.25
|
||||
ViaDiameter1=0.8
|
||||
ViaDrill1=0.4
|
||||
dPairWidth1=0.2
|
||||
dPairGap1=0.25
|
||||
dPairViaGap1=0.25
|
||||
SilkLineWidth=0.12
|
||||
SilkTextSizeV=1
|
||||
SilkTextSizeH=1
|
||||
SilkTextSizeThickness=0.15
|
||||
SilkTextItalic=0
|
||||
SilkTextUpright=1
|
||||
CopperLineWidth=0.2
|
||||
CopperTextSizeV=1.5
|
||||
CopperTextSizeH=1.5
|
||||
CopperTextThickness=0.3
|
||||
CopperTextItalic=0
|
||||
CopperTextUpright=1
|
||||
EdgeCutLineWidth=0.05
|
||||
CourtyardLineWidth=0.05
|
||||
OthersLineWidth=0.15
|
||||
OthersTextSizeV=1
|
||||
OthersTextSizeH=1
|
||||
OthersTextSizeThickness=0.15
|
||||
OthersTextItalic=0
|
||||
OthersTextUpright=1
|
||||
SolderMaskClearance=0
|
||||
SolderMaskMinWidth=0
|
||||
SolderPasteClearance=0
|
||||
SolderPasteRatio=0
|
||||
[pcbnew/Layer.F.Cu]
|
||||
Name=F.Cu
|
||||
Type=0
|
||||
Enabled=1
|
||||
[pcbnew/Layer.In1.Cu]
|
||||
Name=In1.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In2.Cu]
|
||||
Name=In2.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In3.Cu]
|
||||
Name=In3.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In4.Cu]
|
||||
Name=In4.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In5.Cu]
|
||||
Name=In5.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In6.Cu]
|
||||
Name=In6.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In7.Cu]
|
||||
Name=In7.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In8.Cu]
|
||||
Name=In8.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In9.Cu]
|
||||
Name=In9.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In10.Cu]
|
||||
Name=In10.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In11.Cu]
|
||||
Name=In11.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In12.Cu]
|
||||
Name=In12.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In13.Cu]
|
||||
Name=In13.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In14.Cu]
|
||||
Name=In14.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In15.Cu]
|
||||
Name=In15.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In16.Cu]
|
||||
Name=In16.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In17.Cu]
|
||||
Name=In17.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In18.Cu]
|
||||
Name=In18.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In19.Cu]
|
||||
Name=In19.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In20.Cu]
|
||||
Name=In20.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In21.Cu]
|
||||
Name=In21.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In22.Cu]
|
||||
Name=In22.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In23.Cu]
|
||||
Name=In23.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In24.Cu]
|
||||
Name=In24.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In25.Cu]
|
||||
Name=In25.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In26.Cu]
|
||||
Name=In26.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In27.Cu]
|
||||
Name=In27.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In28.Cu]
|
||||
Name=In28.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In29.Cu]
|
||||
Name=In29.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.In30.Cu]
|
||||
Name=In30.Cu
|
||||
Type=0
|
||||
Enabled=0
|
||||
[pcbnew/Layer.B.Cu]
|
||||
Name=B.Cu
|
||||
Type=0
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.Adhes]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.Adhes]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.Paste]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.Paste]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.SilkS]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.SilkS]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.Mask]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.Mask]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Dwgs.User]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Cmts.User]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Eco1.User]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Eco2.User]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Edge.Cuts]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Margin]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.CrtYd]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.CrtYd]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.B.Fab]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.F.Fab]
|
||||
Enabled=1
|
||||
[pcbnew/Layer.Rescue]
|
||||
Enabled=1
|
||||
[pcbnew/Netclasses]
|
||||
[pcbnew/Netclasses/Default]
|
||||
Name=Default
|
||||
Clearance=0.2
|
||||
TrackWidth=0.25
|
||||
ViaDiameter=0.8
|
||||
ViaDrill=0.4
|
||||
uViaDiameter=0.3
|
||||
uViaDrill=0.1
|
||||
dPairWidth=0.2
|
||||
dPairGap=0.25
|
||||
dPairViaGap=0.25
|
@ -1,755 +0,0 @@
|
||||
EESchema Schematic File Version 4
|
||||
EELAYER 30 0
|
||||
EELAYER END
|
||||
$Descr A4 11693 8268
|
||||
encoding utf-8
|
||||
Sheet 1 1
|
||||
Title ""
|
||||
Date ""
|
||||
Rev ""
|
||||
Comp ""
|
||||
Comment1 ""
|
||||
Comment2 ""
|
||||
Comment3 ""
|
||||
Comment4 ""
|
||||
$EndDescr
|
||||
Wire Wire Line
|
||||
4350 3800 5800 3800
|
||||
Connection ~ 4350 3800
|
||||
Text Label 4900 4800 0 50 ~ 0
|
||||
ROW7
|
||||
Text Label 4900 4700 0 50 ~ 0
|
||||
ROW6
|
||||
Text Label 4900 4600 0 50 ~ 0
|
||||
ROW5
|
||||
Text Label 4900 4500 0 50 ~ 0
|
||||
ROW4
|
||||
Text Label 4900 4400 0 50 ~ 0
|
||||
ROW3
|
||||
Text Label 4900 4300 0 50 ~ 0
|
||||
ROW2
|
||||
Text Label 4900 4200 0 50 ~ 0
|
||||
ROW1
|
||||
Text Label 4900 4100 0 50 ~ 0
|
||||
ROW0
|
||||
Text Label 6850 4300 0 50 ~ 0
|
||||
COL7
|
||||
Text Label 6850 4200 0 50 ~ 0
|
||||
COL6
|
||||
Text Label 6850 4100 0 50 ~ 0
|
||||
COL5
|
||||
Text Label 6850 4000 0 50 ~ 0
|
||||
COL4
|
||||
Text Label 6850 3900 0 50 ~ 0
|
||||
COL3
|
||||
Text Label 6850 3800 0 50 ~ 0
|
||||
COL2
|
||||
Text Label 6850 3700 0 50 ~ 0
|
||||
COL1
|
||||
Text Label 6850 3600 0 50 ~ 0
|
||||
COL0
|
||||
Wire Wire Line
|
||||
4850 4800 5100 4800
|
||||
Wire Wire Line
|
||||
4850 4700 5100 4700
|
||||
Wire Wire Line
|
||||
4850 4600 5100 4600
|
||||
Wire Wire Line
|
||||
4850 4500 5100 4500
|
||||
Wire Wire Line
|
||||
4850 4400 5100 4400
|
||||
Wire Wire Line
|
||||
4850 4300 5100 4300
|
||||
Wire Wire Line
|
||||
4850 4200 5100 4200
|
||||
Wire Wire Line
|
||||
4850 4100 5100 4100
|
||||
Entry Wire Line
|
||||
5100 4800 5200 4900
|
||||
Entry Wire Line
|
||||
5100 4700 5200 4800
|
||||
Entry Wire Line
|
||||
5100 4600 5200 4700
|
||||
Entry Wire Line
|
||||
5100 4500 5200 4600
|
||||
Entry Wire Line
|
||||
5100 4400 5200 4500
|
||||
Entry Wire Line
|
||||
5100 4300 5200 4400
|
||||
Entry Wire Line
|
||||
5100 4200 5200 4300
|
||||
Entry Wire Line
|
||||
5100 4100 5200 4200
|
||||
Wire Wire Line
|
||||
6800 3600 7150 3600
|
||||
Wire Wire Line
|
||||
6800 3700 7150 3700
|
||||
Wire Wire Line
|
||||
6800 3800 7150 3800
|
||||
Wire Wire Line
|
||||
6800 3900 7150 3900
|
||||
Wire Wire Line
|
||||
6800 4000 7150 4000
|
||||
Wire Wire Line
|
||||
7150 4100 6800 4100
|
||||
Wire Wire Line
|
||||
6800 4200 7150 4200
|
||||
Wire Wire Line
|
||||
7150 4300 6800 4300
|
||||
Entry Wire Line
|
||||
7150 4300 7250 4400
|
||||
Entry Wire Line
|
||||
7150 4200 7250 4300
|
||||
Entry Wire Line
|
||||
7150 4100 7250 4200
|
||||
Entry Wire Line
|
||||
7150 4000 7250 4100
|
||||
Entry Wire Line
|
||||
7150 3900 7250 4000
|
||||
Entry Wire Line
|
||||
7150 3800 7250 3900
|
||||
Entry Wire Line
|
||||
7150 3700 7250 3800
|
||||
Entry Wire Line
|
||||
7150 3600 7250 3700
|
||||
Connection ~ 5400 4250
|
||||
Wire Wire Line
|
||||
5400 3500 5400 4250
|
||||
Wire Wire Line
|
||||
2150 3500 5400 3500
|
||||
Wire Wire Line
|
||||
4850 5050 4850 5100
|
||||
Connection ~ 4850 5050
|
||||
Wire Wire Line
|
||||
5800 4250 5800 4300
|
||||
Connection ~ 5800 4250
|
||||
Wire Wire Line
|
||||
5400 5050 4850 5050
|
||||
Wire Wire Line
|
||||
5400 4250 5400 5050
|
||||
Wire Wire Line
|
||||
5800 4250 5400 4250
|
||||
Wire Wire Line
|
||||
4850 5000 4850 5050
|
||||
Wire Wire Line
|
||||
5800 4200 5800 4250
|
||||
$Comp
|
||||
L power:VCC #PWR010
|
||||
U 1 1 605B5E0F
|
||||
P 5800 4100
|
||||
F 0 "#PWR010" H 5800 3950 50 0001 C CNN
|
||||
F 1 "VCC" H 5817 4273 50 0000 C CNN
|
||||
F 2 "" H 5800 4100 50 0001 C CNN
|
||||
F 3 "" H 5800 4100 50 0001 C CNN
|
||||
1 5800 4100
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
2150 3800 4350 3800
|
||||
Wire Wire Line
|
||||
2150 3700 5800 3700
|
||||
Wire Wire Line
|
||||
2150 3600 5800 3600
|
||||
Wire Wire Line
|
||||
4350 3150 4350 3800
|
||||
NoConn ~ 2650 4000
|
||||
NoConn ~ 2650 3900
|
||||
NoConn ~ 2650 4900
|
||||
Wire Wire Line
|
||||
2150 4800 3850 4800
|
||||
Wire Wire Line
|
||||
2150 4700 3850 4700
|
||||
Wire Wire Line
|
||||
2150 4600 3850 4600
|
||||
Wire Wire Line
|
||||
2150 4500 3850 4500
|
||||
Wire Wire Line
|
||||
2150 4300 3850 4300
|
||||
Wire Wire Line
|
||||
2150 4200 3850 4200
|
||||
Wire Wire Line
|
||||
2150 4100 3850 4100
|
||||
$Comp
|
||||
L Device:C C2
|
||||
U 1 1 6058BC4A
|
||||
P 4700 3300
|
||||
F 0 "C2" V 4448 3300 50 0000 C CNN
|
||||
F 1 "56Pf" V 4539 3300 50 0000 C CNN
|
||||
F 2 "Capacitor_THT:CP_Radial_Tantal_D6.0mm_P5.00mm" H 4738 3150 50 0001 C CNN
|
||||
F 3 "~" H 4700 3300 50 0001 C CNN
|
||||
1 4700 3300
|
||||
0 1 1 0
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
4850 3150 4850 3050
|
||||
Connection ~ 4850 3150
|
||||
Wire Wire Line
|
||||
4950 3150 4850 3150
|
||||
$Comp
|
||||
L power:GND #PWR09
|
||||
U 1 1 6058E1A9
|
||||
P 4950 3150
|
||||
F 0 "#PWR09" H 4950 2900 50 0001 C CNN
|
||||
F 1 "GND" H 4955 2977 50 0000 C CNN
|
||||
F 2 "" H 4950 3150 50 0001 C CNN
|
||||
F 3 "" H 4950 3150 50 0001 C CNN
|
||||
1 4950 3150
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
4350 3150 4350 3000
|
||||
Connection ~ 4350 3150
|
||||
Wire Wire Line
|
||||
4550 3150 4550 3050
|
||||
Connection ~ 4550 3150
|
||||
Wire Wire Line
|
||||
4550 3150 4350 3150
|
||||
Wire Wire Line
|
||||
4550 3300 4550 3150
|
||||
Wire Wire Line
|
||||
4850 3300 4850 3150
|
||||
$Comp
|
||||
L Device:C C1
|
||||
U 1 1 6058B545
|
||||
P 4700 3050
|
||||
F 0 "C1" V 4448 3050 50 0000 C CNN
|
||||
F 1 "100Nf" V 4539 3050 50 0000 C CNN
|
||||
F 2 "Capacitor_THT:CP_Radial_Tantal_D6.0mm_P5.00mm" H 4738 2900 50 0001 C CNN
|
||||
F 3 "~" H 4700 3050 50 0001 C CNN
|
||||
1 4700 3050
|
||||
0 1 1 0
|
||||
$EndComp
|
||||
$Comp
|
||||
L power:GND #PWR08
|
||||
U 1 1 6058B250
|
||||
P 4350 5400
|
||||
F 0 "#PWR08" H 4350 5150 50 0001 C CNN
|
||||
F 1 "GND" H 4355 5227 50 0000 C CNN
|
||||
F 2 "" H 4350 5400 50 0001 C CNN
|
||||
F 3 "" H 4350 5400 50 0001 C CNN
|
||||
1 4350 5400
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L power:VCC #PWR07
|
||||
U 1 1 6058AE17
|
||||
P 4350 3000
|
||||
F 0 "#PWR07" H 4350 2850 50 0001 C CNN
|
||||
F 1 "VCC" H 4367 3173 50 0000 C CNN
|
||||
F 2 "" H 4350 3000 50 0001 C CNN
|
||||
F 3 "" H 4350 3000 50 0001 C CNN
|
||||
1 4350 3000
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
2650 5450 2900 5450
|
||||
$Comp
|
||||
L power:VCC #PWR05
|
||||
U 1 1 60585FB5
|
||||
P 2900 5450
|
||||
F 0 "#PWR05" H 2900 5300 50 0001 C CNN
|
||||
F 1 "VCC" H 2917 5623 50 0000 C CNN
|
||||
F 2 "" H 2900 5450 50 0001 C CNN
|
||||
F 3 "" H 2900 5450 50 0001 C CNN
|
||||
1 2900 5450
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L power:GND #PWR03
|
||||
U 1 1 60585B88
|
||||
P 2750 5200
|
||||
F 0 "#PWR03" H 2750 4950 50 0001 C CNN
|
||||
F 1 "GND" H 2755 5027 50 0000 C CNN
|
||||
F 2 "" H 2750 5200 50 0001 C CNN
|
||||
F 3 "" H 2750 5200 50 0001 C CNN
|
||||
1 2750 5200
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
2150 5000 2750 5000
|
||||
Wire Wire Line
|
||||
2750 5000 2750 5200
|
||||
Wire Wire Line
|
||||
2650 5100 2650 5450
|
||||
$Comp
|
||||
L power:GND #PWR04
|
||||
U 1 1 60584796
|
||||
P 2850 3000
|
||||
F 0 "#PWR04" H 2850 2750 50 0001 C CNN
|
||||
F 1 "GND" H 2855 2827 50 0000 C CNN
|
||||
F 2 "" H 2850 3000 50 0001 C CNN
|
||||
F 3 "" H 2850 3000 50 0001 C CNN
|
||||
1 2850 3000
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L power:VCC #PWR02
|
||||
U 1 1 60584370
|
||||
P 2650 3000
|
||||
F 0 "#PWR02" H 2650 2850 50 0001 C CNN
|
||||
F 1 "VCC" H 2667 3173 50 0000 C CNN
|
||||
F 2 "" H 2650 3000 50 0001 C CNN
|
||||
F 3 "" H 2650 3000 50 0001 C CNN
|
||||
1 2650 3000
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
2150 3400 2750 3400
|
||||
Wire Wire Line
|
||||
2750 3000 2850 3000
|
||||
Wire Wire Line
|
||||
2750 3400 2750 3000
|
||||
Wire Wire Line
|
||||
2650 3300 2650 3000
|
||||
Text Label 2250 5100 0 50 ~ 0
|
||||
IOVCC
|
||||
Text Label 2250 5000 0 50 ~ 0
|
||||
IOGND
|
||||
Text Label 2250 4900 0 50 ~ 0
|
||||
IOWR
|
||||
Text Label 2250 4800 0 50 ~ 0
|
||||
IOD7
|
||||
Text Label 2250 4700 0 50 ~ 0
|
||||
IOD6
|
||||
Text Label 2250 4600 0 50 ~ 0
|
||||
IOD5
|
||||
Text Label 2250 4500 0 50 ~ 0
|
||||
IOD4
|
||||
Text Label 2250 4400 0 50 ~ 0
|
||||
IOD3
|
||||
Text Label 2250 4300 0 50 ~ 0
|
||||
IOD2
|
||||
Text Label 2250 4200 0 50 ~ 0
|
||||
IOD1
|
||||
Text Label 2250 4100 0 50 ~ 0
|
||||
IOD0
|
||||
Text Label 2250 4000 0 50 ~ 0
|
||||
IOADDR4
|
||||
Text Label 2250 3900 0 50 ~ 0
|
||||
IOADDR3
|
||||
Text Label 2250 3800 0 50 ~ 0
|
||||
IOADDR2
|
||||
Text Label 2250 3700 0 50 ~ 0
|
||||
IOADDR1
|
||||
Text Label 2250 3600 0 50 ~ 0
|
||||
IOADDR0
|
||||
Text Label 2250 3500 0 50 ~ 0
|
||||
IOEN
|
||||
Text Label 2250 3400 0 50 ~ 0
|
||||
IOGND
|
||||
Text Label 2250 3300 0 50 ~ 0
|
||||
IOVCC
|
||||
Wire Wire Line
|
||||
2150 5100 2650 5100
|
||||
Wire Wire Line
|
||||
2150 4900 2650 4900
|
||||
Wire Wire Line
|
||||
2150 4000 2650 4000
|
||||
Wire Wire Line
|
||||
2150 3900 2650 3900
|
||||
Wire Wire Line
|
||||
2150 3300 2650 3300
|
||||
$Comp
|
||||
L Connector_Generic:Conn_01x19 IOBUS1
|
||||
U 1 1 6057928D
|
||||
P 1950 4200
|
||||
F 0 "IOBUS1" H 1868 5317 50 0000 C CNN
|
||||
F 1 "IO_Bus_conn" H 1868 5226 50 0000 C CNN
|
||||
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x19_P2.54mm_Horizontal" H 1950 4200 50 0001 C CNN
|
||||
F 3 "~" H 1950 4200 50 0001 C CNN
|
||||
1 1950 4200
|
||||
-1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L 74xx:74HC244 U1
|
||||
U 1 1 605787CB
|
||||
P 4350 4600
|
||||
F 0 "U1" H 4350 5581 50 0000 C CNN
|
||||
F 1 "74HC244" H 4350 5490 50 0000 C CNN
|
||||
F 2 "Package_DIP:DIP-20_W7.62mm_LongPads" H 4350 4600 50 0001 C CNN
|
||||
F 3 "http://www.nxp.com/documents/data_sheet/74HC_HCT244.pdf" H 4350 4600 50 0001 C CNN
|
||||
1 4350 4600
|
||||
-1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L 74xx:74LS138 U2
|
||||
U 1 1 60577A7C
|
||||
P 6300 3900
|
||||
F 0 "U2" H 6300 4681 50 0000 C CNN
|
||||
F 1 "74HC138" H 6300 4590 50 0000 C CNN
|
||||
F 2 "Package_DIP:DIP-16_W7.62mm_LongPads" H 6300 3900 50 0001 C CNN
|
||||
F 3 "http://www.ti.com/lit/gpn/sn74LS138" H 6300 3900 50 0001 C CNN
|
||||
1 6300 3900
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
2150 4400 3850 4400
|
||||
Text Notes 4000 1300 0 197 ~ 0
|
||||
PAT80 Keyboard Controller
|
||||
Text Notes 4000 2000 0 47 ~ 0
|
||||
The PAT80 keyboard is seen from the computer as a readonly block of 64 bytes of memory\nin the I/O space mapped to the first 3 of the 5 I/O address available for every single I/O device.\n\nThe keyboard controller is a board plugged on the I/O backplane and connected to the matrix board with a\n34-pin female-to-female flat ribbon cable (e.g. the ones used by IBM PC floppy disk drives)\n\nThe joystick port is Atari-style: partially C64 and MSX compatible (supports a single button and no analog paddle)
|
||||
Text Notes 4750 6100 0 47 ~ 0
|
||||
Keyboard controller
|
||||
$Comp
|
||||
L Connector_Generic:Conn_02x17_Odd_Even J1
|
||||
U 1 1 60ECCE47
|
||||
P 9100 3650
|
||||
F 0 "J1" H 9150 4667 50 0000 C CNN
|
||||
F 1 "Keyboard connector" H 9150 4576 50 0000 C CNN
|
||||
F 2 "Connector_PinHeader_2.54mm:PinHeader_2x17_P2.54mm_Vertical" H 9100 3650 50 0001 C CNN
|
||||
F 3 "~" H 9100 3650 50 0001 C CNN
|
||||
1 9100 3650
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
9400 2850 9400 2950
|
||||
Wire Wire Line
|
||||
9400 4600 9600 4600
|
||||
Connection ~ 9400 2950
|
||||
Wire Wire Line
|
||||
9400 2950 9400 3050
|
||||
Connection ~ 9400 3050
|
||||
Wire Wire Line
|
||||
9400 3050 9400 3150
|
||||
Connection ~ 9400 3150
|
||||
Wire Wire Line
|
||||
9400 3150 9400 3250
|
||||
Connection ~ 9400 3250
|
||||
Wire Wire Line
|
||||
9400 3250 9400 3350
|
||||
Connection ~ 9400 3350
|
||||
Wire Wire Line
|
||||
9400 3350 9400 3450
|
||||
Connection ~ 9400 3450
|
||||
Wire Wire Line
|
||||
9400 3450 9400 3550
|
||||
Connection ~ 9400 3550
|
||||
Wire Wire Line
|
||||
9400 3550 9400 3650
|
||||
Connection ~ 9400 3650
|
||||
Wire Wire Line
|
||||
9400 3650 9400 3750
|
||||
Connection ~ 9400 3750
|
||||
Wire Wire Line
|
||||
9400 3750 9400 3850
|
||||
Connection ~ 9400 3850
|
||||
Wire Wire Line
|
||||
9400 3850 9400 3950
|
||||
Connection ~ 9400 3950
|
||||
Wire Wire Line
|
||||
9400 3950 9400 4050
|
||||
Connection ~ 9400 4050
|
||||
Wire Wire Line
|
||||
9400 4050 9400 4150
|
||||
Connection ~ 9400 4150
|
||||
Wire Wire Line
|
||||
9400 4150 9400 4250
|
||||
Connection ~ 9400 4250
|
||||
Wire Wire Line
|
||||
9400 4250 9400 4350
|
||||
Connection ~ 9400 4350
|
||||
Wire Wire Line
|
||||
9400 4350 9400 4450
|
||||
Connection ~ 9400 4450
|
||||
Wire Wire Line
|
||||
9400 4450 9400 4600
|
||||
Entry Wire Line
|
||||
8500 2850 8400 2950
|
||||
Entry Wire Line
|
||||
8500 2950 8400 3050
|
||||
Entry Wire Line
|
||||
8500 3050 8400 3150
|
||||
Entry Wire Line
|
||||
8500 3150 8400 3250
|
||||
Entry Wire Line
|
||||
8500 3250 8400 3350
|
||||
Entry Wire Line
|
||||
8500 3350 8400 3450
|
||||
Entry Wire Line
|
||||
8500 3450 8400 3550
|
||||
Entry Wire Line
|
||||
8500 3550 8400 3650
|
||||
Entry Wire Line
|
||||
8500 3750 8400 3850
|
||||
Entry Wire Line
|
||||
8500 3850 8400 3950
|
||||
Entry Wire Line
|
||||
8500 3950 8400 4050
|
||||
Entry Wire Line
|
||||
8500 4050 8400 4150
|
||||
Entry Wire Line
|
||||
8500 4150 8400 4250
|
||||
Entry Wire Line
|
||||
8500 4250 8400 4350
|
||||
Entry Wire Line
|
||||
8500 4350 8400 4450
|
||||
Entry Wire Line
|
||||
8500 4450 8400 4550
|
||||
$Comp
|
||||
L power:GND #PWR017
|
||||
U 1 1 60ECCE7F
|
||||
P 9600 4600
|
||||
F 0 "#PWR017" H 9600 4350 50 0001 C CNN
|
||||
F 1 "GND" H 9605 4427 50 0000 C CNN
|
||||
F 2 "" H 9600 4600 50 0001 C CNN
|
||||
F 3 "" H 9600 4600 50 0001 C CNN
|
||||
1 9600 4600
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
8500 2850 8900 2850
|
||||
Wire Wire Line
|
||||
8500 2950 8900 2950
|
||||
Wire Wire Line
|
||||
8500 3050 8900 3050
|
||||
Wire Wire Line
|
||||
8500 3150 8900 3150
|
||||
Wire Wire Line
|
||||
8500 3250 8900 3250
|
||||
Wire Wire Line
|
||||
8500 3350 8900 3350
|
||||
Wire Wire Line
|
||||
8500 3450 8900 3450
|
||||
Wire Wire Line
|
||||
8500 3550 8900 3550
|
||||
Wire Wire Line
|
||||
8500 3750 8900 3750
|
||||
Wire Wire Line
|
||||
8500 3850 8900 3850
|
||||
Wire Wire Line
|
||||
8500 3950 8900 3950
|
||||
Wire Wire Line
|
||||
8500 4050 8900 4050
|
||||
Wire Wire Line
|
||||
8500 4150 8900 4150
|
||||
Wire Wire Line
|
||||
8500 4250 8900 4250
|
||||
Wire Wire Line
|
||||
8500 4350 8900 4350
|
||||
Wire Wire Line
|
||||
8500 4450 8900 4450
|
||||
Text Label 8600 2850 0 47 ~ 0
|
||||
COL0
|
||||
Text Label 8600 2950 0 47 ~ 0
|
||||
COL1
|
||||
Text Label 8600 3050 0 47 ~ 0
|
||||
COL2
|
||||
Text Label 8600 3150 0 47 ~ 0
|
||||
COL3
|
||||
Text Label 8600 3250 0 47 ~ 0
|
||||
COL4
|
||||
Text Label 8600 3350 0 47 ~ 0
|
||||
COL5
|
||||
Text Label 8600 3450 0 47 ~ 0
|
||||
COL6
|
||||
Text Label 8600 3550 0 47 ~ 0
|
||||
COL7
|
||||
Text Label 8600 3750 0 47 ~ 0
|
||||
ROW0
|
||||
Text Label 8600 3850 0 47 ~ 0
|
||||
ROW1
|
||||
Text Label 8600 3950 0 47 ~ 0
|
||||
ROW2
|
||||
Text Label 8600 4050 0 47 ~ 0
|
||||
ROW3
|
||||
Text Label 8600 4150 0 47 ~ 0
|
||||
ROW4
|
||||
Text Label 8600 4250 0 47 ~ 0
|
||||
ROW5
|
||||
Text Label 8600 4350 0 47 ~ 0
|
||||
ROW6
|
||||
Text Label 8600 4450 0 47 ~ 0
|
||||
ROW7
|
||||
$Comp
|
||||
L power:VCC #PWR014
|
||||
U 1 1 6138B5E2
|
||||
P 7950 3950
|
||||
F 0 "#PWR014" H 7950 3800 50 0001 C CNN
|
||||
F 1 "VCC" H 7967 4123 50 0000 C CNN
|
||||
F 2 "" H 7950 3950 50 0001 C CNN
|
||||
F 3 "" H 7950 3950 50 0001 C CNN
|
||||
1 7950 3950
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
8900 3650 8450 3650
|
||||
Wire Wire Line
|
||||
8450 3650 8450 3750
|
||||
Wire Wire Line
|
||||
8450 3750 8150 3750
|
||||
Wire Wire Line
|
||||
8150 3750 8150 3950
|
||||
Wire Wire Line
|
||||
8150 3950 7950 3950
|
||||
Text Label 8600 3650 0 47 ~ 0
|
||||
MTXVCC
|
||||
$Comp
|
||||
L Connector:DB9_Female_MountingHoles J2
|
||||
U 1 1 60C1B7D7
|
||||
P 9250 5250
|
||||
F 0 "J2" H 9430 5252 50 0000 L CNN
|
||||
F 1 "Joystick connector" H 9430 5161 50 0000 L CNN
|
||||
F 2 "Connector_Dsub:DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mm" H 9250 5250 50 0001 C CNN
|
||||
F 3 " ~" H 9250 5250 50 0001 C CNN
|
||||
1 9250 5250
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Bus Line
|
||||
7250 3650 8400 3650
|
||||
Wire Bus Line
|
||||
7250 5600 8100 5600
|
||||
Wire Bus Line
|
||||
5200 5750 8400 5750
|
||||
Entry Wire Line
|
||||
8100 5450 8200 5350
|
||||
Text Label 8600 5350 0 50 ~ 0
|
||||
COL7
|
||||
Wire Wire Line
|
||||
8950 4850 8500 4850
|
||||
Entry Wire Line
|
||||
8400 4950 8500 4850
|
||||
Wire Bus Line
|
||||
8100 5600 8100 5450
|
||||
Wire Wire Line
|
||||
8950 5050 8500 5050
|
||||
Entry Wire Line
|
||||
8400 5150 8500 5050
|
||||
Wire Wire Line
|
||||
8950 5250 8500 5250
|
||||
Entry Wire Line
|
||||
8400 5350 8500 5250
|
||||
Wire Wire Line
|
||||
8950 5450 8500 5450
|
||||
Entry Wire Line
|
||||
8400 5550 8500 5450
|
||||
Text Label 8600 4850 0 50 ~ 0
|
||||
ROW0
|
||||
Text Label 8600 5050 0 50 ~ 0
|
||||
ROW1
|
||||
Text Label 8600 5250 0 50 ~ 0
|
||||
ROW2
|
||||
Text Label 8600 5450 0 50 ~ 0
|
||||
ROW3
|
||||
Wire Wire Line
|
||||
8950 4950 8500 4950
|
||||
Entry Wire Line
|
||||
8400 5050 8500 4950
|
||||
Text Label 8600 4950 0 50 ~ 0
|
||||
ROW4
|
||||
Wire Wire Line
|
||||
8950 5150 8500 5150
|
||||
Wire Wire Line
|
||||
8500 5150 8500 5200
|
||||
Wire Wire Line
|
||||
8500 5200 7950 5200
|
||||
$Comp
|
||||
L power:VCC #PWR015
|
||||
U 1 1 60EC4111
|
||||
P 7950 5200
|
||||
F 0 "#PWR015" H 7950 5050 50 0001 C CNN
|
||||
F 1 "VCC" H 7967 5373 50 0000 C CNN
|
||||
F 2 "" H 7950 5200 50 0001 C CNN
|
||||
F 3 "" H 7950 5200 50 0001 C CNN
|
||||
1 7950 5200
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L power:GND #PWR016
|
||||
U 1 1 60EC5968
|
||||
P 9250 5850
|
||||
F 0 "#PWR016" H 9250 5600 50 0001 C CNN
|
||||
F 1 "GND" H 9255 5677 50 0000 C CNN
|
||||
F 2 "" H 9250 5850 50 0001 C CNN
|
||||
F 3 "" H 9250 5850 50 0001 C CNN
|
||||
1 9250 5850
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L power:GND #PWR012
|
||||
U 1 1 60F7D3B6
|
||||
P 6300 4950
|
||||
F 0 "#PWR012" H 6300 4700 50 0001 C CNN
|
||||
F 1 "GND" H 6305 4777 50 0000 C CNN
|
||||
F 2 "" H 6300 4950 50 0001 C CNN
|
||||
F 3 "" H 6300 4950 50 0001 C CNN
|
||||
1 6300 4950
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
6300 4950 6300 4600
|
||||
$Comp
|
||||
L Device:C C4
|
||||
U 1 1 60FB4E9D
|
||||
P 6650 3100
|
||||
F 0 "C4" V 6398 3100 50 0000 C CNN
|
||||
F 1 "56Pf" V 6489 3100 50 0000 C CNN
|
||||
F 2 "Capacitor_THT:CP_Radial_Tantal_D6.0mm_P5.00mm" H 6688 2950 50 0001 C CNN
|
||||
F 3 "~" H 6650 3100 50 0001 C CNN
|
||||
1 6650 3100
|
||||
0 1 1 0
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
6800 2950 6800 2850
|
||||
Connection ~ 6800 2950
|
||||
Wire Wire Line
|
||||
6900 2950 6800 2950
|
||||
$Comp
|
||||
L power:GND #PWR013
|
||||
U 1 1 60FB4EA6
|
||||
P 6900 2950
|
||||
F 0 "#PWR013" H 6900 2700 50 0001 C CNN
|
||||
F 1 "GND" H 6905 2777 50 0000 C CNN
|
||||
F 2 "" H 6900 2950 50 0001 C CNN
|
||||
F 3 "" H 6900 2950 50 0001 C CNN
|
||||
1 6900 2950
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
6300 2950 6300 2800
|
||||
Wire Wire Line
|
||||
6500 2950 6500 2850
|
||||
Connection ~ 6500 2950
|
||||
Wire Wire Line
|
||||
6500 2950 6300 2950
|
||||
Wire Wire Line
|
||||
6500 3100 6500 2950
|
||||
Wire Wire Line
|
||||
6800 3100 6800 2950
|
||||
$Comp
|
||||
L Device:C C3
|
||||
U 1 1 60FB4EB3
|
||||
P 6650 2850
|
||||
F 0 "C3" V 6398 2850 50 0000 C CNN
|
||||
F 1 "100Nf" V 6489 2850 50 0000 C CNN
|
||||
F 2 "Capacitor_THT:CP_Radial_Tantal_D6.0mm_P5.00mm" H 6688 2700 50 0001 C CNN
|
||||
F 3 "~" H 6650 2850 50 0001 C CNN
|
||||
1 6650 2850
|
||||
0 1 1 0
|
||||
$EndComp
|
||||
$Comp
|
||||
L power:VCC #PWR011
|
||||
U 1 1 60FB4EB9
|
||||
P 6300 2800
|
||||
F 0 "#PWR011" H 6300 2650 50 0001 C CNN
|
||||
F 1 "VCC" H 6317 2973 50 0000 C CNN
|
||||
F 2 "" H 6300 2800 50 0001 C CNN
|
||||
F 3 "" H 6300 2800 50 0001 C CNN
|
||||
1 6300 2800
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
6300 2950 6300 3300
|
||||
Connection ~ 6300 2950
|
||||
Wire Wire Line
|
||||
8200 5350 8950 5350
|
||||
Wire Bus Line
|
||||
8400 2950 8400 3650
|
||||
Wire Bus Line
|
||||
5200 4200 5200 5750
|
||||
Wire Bus Line
|
||||
7250 3650 7250 5600
|
||||
Wire Bus Line
|
||||
8400 3850 8400 5750
|
||||
Text Notes 7350 7550 0 118 ~ 0
|
||||
Pat80 Keyboard and Joystick Controller
|
||||
$EndSCHEMATC
|
@ -1,755 +0,0 @@
|
||||
EESchema Schematic File Version 4
|
||||
EELAYER 30 0
|
||||
EELAYER END
|
||||
$Descr A4 11693 8268
|
||||
encoding utf-8
|
||||
Sheet 1 1
|
||||
Title ""
|
||||
Date ""
|
||||
Rev ""
|
||||
Comp ""
|
||||
Comment1 ""
|
||||
Comment2 ""
|
||||
Comment3 ""
|
||||
Comment4 ""
|
||||
$EndDescr
|
||||
Wire Wire Line
|
||||
4350 3800 5800 3800
|
||||
Connection ~ 4350 3800
|
||||
Text Label 4900 4800 0 50 ~ 0
|
||||
ROW7
|
||||
Text Label 4900 4700 0 50 ~ 0
|
||||
ROW6
|
||||
Text Label 4900 4600 0 50 ~ 0
|
||||
ROW5
|
||||
Text Label 4900 4500 0 50 ~ 0
|
||||
ROW4
|
||||
Text Label 4900 4400 0 50 ~ 0
|
||||
ROW3
|
||||
Text Label 4900 4300 0 50 ~ 0
|
||||
ROW2
|
||||
Text Label 4900 4200 0 50 ~ 0
|
||||
ROW1
|
||||
Text Label 4900 4100 0 50 ~ 0
|
||||
ROW0
|
||||
Text Label 6850 4300 0 50 ~ 0
|
||||
COL7
|
||||
Text Label 6850 4200 0 50 ~ 0
|
||||
COL6
|
||||
Text Label 6850 4100 0 50 ~ 0
|
||||
COL5
|
||||
Text Label 6850 4000 0 50 ~ 0
|
||||
COL4
|
||||
Text Label 6850 3900 0 50 ~ 0
|
||||
COL3
|
||||
Text Label 6850 3800 0 50 ~ 0
|
||||
COL2
|
||||
Text Label 6850 3700 0 50 ~ 0
|
||||
COL1
|
||||
Text Label 6850 3600 0 50 ~ 0
|
||||
COL0
|
||||
Wire Wire Line
|
||||
4850 4800 5100 4800
|
||||
Wire Wire Line
|
||||
4850 4700 5100 4700
|
||||
Wire Wire Line
|
||||
4850 4600 5100 4600
|
||||
Wire Wire Line
|
||||
4850 4500 5100 4500
|
||||
Wire Wire Line
|
||||
4850 4400 5100 4400
|
||||
Wire Wire Line
|
||||
4850 4300 5100 4300
|
||||
Wire Wire Line
|
||||
4850 4200 5100 4200
|
||||
Wire Wire Line
|
||||
4850 4100 5100 4100
|
||||
Entry Wire Line
|
||||
5100 4800 5200 4900
|
||||
Entry Wire Line
|
||||
5100 4700 5200 4800
|
||||
Entry Wire Line
|
||||
5100 4600 5200 4700
|
||||
Entry Wire Line
|
||||
5100 4500 5200 4600
|
||||
Entry Wire Line
|
||||
5100 4400 5200 4500
|
||||
Entry Wire Line
|
||||
5100 4300 5200 4400
|
||||
Entry Wire Line
|
||||
5100 4200 5200 4300
|
||||
Entry Wire Line
|
||||
5100 4100 5200 4200
|
||||
Wire Wire Line
|
||||
6800 3600 7150 3600
|
||||
Wire Wire Line
|
||||
6800 3700 7150 3700
|
||||
Wire Wire Line
|
||||
6800 3800 7150 3800
|
||||
Wire Wire Line
|
||||
6800 3900 7150 3900
|
||||
Wire Wire Line
|
||||
6800 4000 7150 4000
|
||||
Wire Wire Line
|
||||
7150 4100 6800 4100
|
||||
Wire Wire Line
|
||||
6800 4200 7150 4200
|
||||
Wire Wire Line
|
||||
7150 4300 6800 4300
|
||||
Entry Wire Line
|
||||
7150 4300 7250 4400
|
||||
Entry Wire Line
|
||||
7150 4200 7250 4300
|
||||
Entry Wire Line
|
||||
7150 4100 7250 4200
|
||||
Entry Wire Line
|
||||
7150 4000 7250 4100
|
||||
Entry Wire Line
|
||||
7150 3900 7250 4000
|
||||
Entry Wire Line
|
||||
7150 3800 7250 3900
|
||||
Entry Wire Line
|
||||
7150 3700 7250 3800
|
||||
Entry Wire Line
|
||||
7150 3600 7250 3700
|
||||
Connection ~ 5400 4250
|
||||
Wire Wire Line
|
||||
5400 3500 5400 4250
|
||||
Wire Wire Line
|
||||
2150 3500 5400 3500
|
||||
Wire Wire Line
|
||||
4850 5050 4850 5100
|
||||
Connection ~ 4850 5050
|
||||
Wire Wire Line
|
||||
5800 4250 5800 4300
|
||||
Connection ~ 5800 4250
|
||||
Wire Wire Line
|
||||
5400 5050 4850 5050
|
||||
Wire Wire Line
|
||||
5400 4250 5400 5050
|
||||
Wire Wire Line
|
||||
5800 4250 5400 4250
|
||||
Wire Wire Line
|
||||
4850 5000 4850 5050
|
||||
Wire Wire Line
|
||||
5800 4200 5800 4250
|
||||
$Comp
|
||||
L power:VCC #PWR010
|
||||
U 1 1 605B5E0F
|
||||
P 5800 4100
|
||||
F 0 "#PWR010" H 5800 3950 50 0001 C CNN
|
||||
F 1 "VCC" H 5817 4273 50 0000 C CNN
|
||||
F 2 "" H 5800 4100 50 0001 C CNN
|
||||
F 3 "" H 5800 4100 50 0001 C CNN
|
||||
1 5800 4100
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
2150 3800 4350 3800
|
||||
Wire Wire Line
|
||||
2150 3700 5800 3700
|
||||
Wire Wire Line
|
||||
2150 3600 5800 3600
|
||||
Wire Wire Line
|
||||
4350 3150 4350 3800
|
||||
NoConn ~ 2650 4000
|
||||
NoConn ~ 2650 3900
|
||||
NoConn ~ 2650 4900
|
||||
Wire Wire Line
|
||||
2150 4800 3850 4800
|
||||
Wire Wire Line
|
||||
2150 4700 3850 4700
|
||||
Wire Wire Line
|
||||
2150 4600 3850 4600
|
||||
Wire Wire Line
|
||||
2150 4500 3850 4500
|
||||
Wire Wire Line
|
||||
2150 4300 3850 4300
|
||||
Wire Wire Line
|
||||
2150 4200 3850 4200
|
||||
Wire Wire Line
|
||||
2150 4100 3850 4100
|
||||
$Comp
|
||||
L Device:C C2
|
||||
U 1 1 6058BC4A
|
||||
P 4700 3300
|
||||
F 0 "C2" V 4448 3300 50 0000 C CNN
|
||||
F 1 "56Pf" V 4539 3300 50 0000 C CNN
|
||||
F 2 "Capacitor_THT:CP_Radial_Tantal_D6.0mm_P5.00mm" H 4738 3150 50 0001 C CNN
|
||||
F 3 "~" H 4700 3300 50 0001 C CNN
|
||||
1 4700 3300
|
||||
0 1 1 0
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
4850 3150 4850 3050
|
||||
Connection ~ 4850 3150
|
||||
Wire Wire Line
|
||||
4950 3150 4850 3150
|
||||
$Comp
|
||||
L power:GND #PWR09
|
||||
U 1 1 6058E1A9
|
||||
P 4950 3150
|
||||
F 0 "#PWR09" H 4950 2900 50 0001 C CNN
|
||||
F 1 "GND" H 4955 2977 50 0000 C CNN
|
||||
F 2 "" H 4950 3150 50 0001 C CNN
|
||||
F 3 "" H 4950 3150 50 0001 C CNN
|
||||
1 4950 3150
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
4350 3150 4350 3000
|
||||
Connection ~ 4350 3150
|
||||
Wire Wire Line
|
||||
4550 3150 4550 3050
|
||||
Connection ~ 4550 3150
|
||||
Wire Wire Line
|
||||
4550 3150 4350 3150
|
||||
Wire Wire Line
|
||||
4550 3300 4550 3150
|
||||
Wire Wire Line
|
||||
4850 3300 4850 3150
|
||||
$Comp
|
||||
L Device:C C1
|
||||
U 1 1 6058B545
|
||||
P 4700 3050
|
||||
F 0 "C1" V 4448 3050 50 0000 C CNN
|
||||
F 1 "100Nf" V 4539 3050 50 0000 C CNN
|
||||
F 2 "Capacitor_THT:CP_Radial_Tantal_D6.0mm_P5.00mm" H 4738 2900 50 0001 C CNN
|
||||
F 3 "~" H 4700 3050 50 0001 C CNN
|
||||
1 4700 3050
|
||||
0 1 1 0
|
||||
$EndComp
|
||||
$Comp
|
||||
L power:GND #PWR08
|
||||
U 1 1 6058B250
|
||||
P 4350 5400
|
||||
F 0 "#PWR08" H 4350 5150 50 0001 C CNN
|
||||
F 1 "GND" H 4355 5227 50 0000 C CNN
|
||||
F 2 "" H 4350 5400 50 0001 C CNN
|
||||
F 3 "" H 4350 5400 50 0001 C CNN
|
||||
1 4350 5400
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L power:VCC #PWR07
|
||||
U 1 1 6058AE17
|
||||
P 4350 3000
|
||||
F 0 "#PWR07" H 4350 2850 50 0001 C CNN
|
||||
F 1 "VCC" H 4367 3173 50 0000 C CNN
|
||||
F 2 "" H 4350 3000 50 0001 C CNN
|
||||
F 3 "" H 4350 3000 50 0001 C CNN
|
||||
1 4350 3000
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
2650 5450 2900 5450
|
||||
$Comp
|
||||
L power:VCC #PWR05
|
||||
U 1 1 60585FB5
|
||||
P 2900 5450
|
||||
F 0 "#PWR05" H 2900 5300 50 0001 C CNN
|
||||
F 1 "VCC" H 2917 5623 50 0000 C CNN
|
||||
F 2 "" H 2900 5450 50 0001 C CNN
|
||||
F 3 "" H 2900 5450 50 0001 C CNN
|
||||
1 2900 5450
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L power:GND #PWR03
|
||||
U 1 1 60585B88
|
||||
P 2750 5200
|
||||
F 0 "#PWR03" H 2750 4950 50 0001 C CNN
|
||||
F 1 "GND" H 2755 5027 50 0000 C CNN
|
||||
F 2 "" H 2750 5200 50 0001 C CNN
|
||||
F 3 "" H 2750 5200 50 0001 C CNN
|
||||
1 2750 5200
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
2150 5000 2750 5000
|
||||
Wire Wire Line
|
||||
2750 5000 2750 5200
|
||||
Wire Wire Line
|
||||
2650 5100 2650 5450
|
||||
$Comp
|
||||
L power:GND #PWR04
|
||||
U 1 1 60584796
|
||||
P 2850 3000
|
||||
F 0 "#PWR04" H 2850 2750 50 0001 C CNN
|
||||
F 1 "GND" H 2855 2827 50 0000 C CNN
|
||||
F 2 "" H 2850 3000 50 0001 C CNN
|
||||
F 3 "" H 2850 3000 50 0001 C CNN
|
||||
1 2850 3000
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L power:VCC #PWR02
|
||||
U 1 1 60584370
|
||||
P 2650 3000
|
||||
F 0 "#PWR02" H 2650 2850 50 0001 C CNN
|
||||
F 1 "VCC" H 2667 3173 50 0000 C CNN
|
||||
F 2 "" H 2650 3000 50 0001 C CNN
|
||||
F 3 "" H 2650 3000 50 0001 C CNN
|
||||
1 2650 3000
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
2150 3400 2750 3400
|
||||
Wire Wire Line
|
||||
2750 3000 2850 3000
|
||||
Wire Wire Line
|
||||
2750 3400 2750 3000
|
||||
Wire Wire Line
|
||||
2650 3300 2650 3000
|
||||
Text Label 2250 5100 0 50 ~ 0
|
||||
IOVCC
|
||||
Text Label 2250 5000 0 50 ~ 0
|
||||
IOGND
|
||||
Text Label 2250 4900 0 50 ~ 0
|
||||
IOWR
|
||||
Text Label 2250 4800 0 50 ~ 0
|
||||
IOD7
|
||||
Text Label 2250 4700 0 50 ~ 0
|
||||
IOD6
|
||||
Text Label 2250 4600 0 50 ~ 0
|
||||
IOD5
|
||||
Text Label 2250 4500 0 50 ~ 0
|
||||
IOD4
|
||||
Text Label 2250 4400 0 50 ~ 0
|
||||
IOD3
|
||||
Text Label 2250 4300 0 50 ~ 0
|
||||
IOD2
|
||||
Text Label 2250 4200 0 50 ~ 0
|
||||
IOD1
|
||||
Text Label 2250 4100 0 50 ~ 0
|
||||
IOD0
|
||||
Text Label 2250 4000 0 50 ~ 0
|
||||
IOADDR4
|
||||
Text Label 2250 3900 0 50 ~ 0
|
||||
IOADDR3
|
||||
Text Label 2250 3800 0 50 ~ 0
|
||||
IOADDR2
|
||||
Text Label 2250 3700 0 50 ~ 0
|
||||
IOADDR1
|
||||
Text Label 2250 3600 0 50 ~ 0
|
||||
IOADDR0
|
||||
Text Label 2250 3500 0 50 ~ 0
|
||||
IOEN
|
||||
Text Label 2250 3400 0 50 ~ 0
|
||||
IOGND
|
||||
Text Label 2250 3300 0 50 ~ 0
|
||||
IOVCC
|
||||
Wire Wire Line
|
||||
2150 5100 2650 5100
|
||||
Wire Wire Line
|
||||
2150 4900 2650 4900
|
||||
Wire Wire Line
|
||||
2150 4000 2650 4000
|
||||
Wire Wire Line
|
||||
2150 3900 2650 3900
|
||||
Wire Wire Line
|
||||
2150 3300 2650 3300
|
||||
$Comp
|
||||
L Connector_Generic:Conn_01x19 IOBUS1
|
||||
U 1 1 6057928D
|
||||
P 1950 4200
|
||||
F 0 "IOBUS1" H 1868 5317 50 0000 C CNN
|
||||
F 1 "IO_Bus_conn" H 1868 5226 50 0000 C CNN
|
||||
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x19_P2.54mm_Horizontal" H 1950 4200 50 0001 C CNN
|
||||
F 3 "~" H 1950 4200 50 0001 C CNN
|
||||
1 1950 4200
|
||||
-1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L 74xx:74HC244 U1
|
||||
U 1 1 605787CB
|
||||
P 4350 4600
|
||||
F 0 "U1" H 4350 5581 50 0000 C CNN
|
||||
F 1 "74HC244" H 4350 5490 50 0000 C CNN
|
||||
F 2 "Package_DIP:DIP-20_W7.62mm_LongPads" H 4350 4600 50 0001 C CNN
|
||||
F 3 "http://www.nxp.com/documents/data_sheet/74HC_HCT244.pdf" H 4350 4600 50 0001 C CNN
|
||||
1 4350 4600
|
||||
-1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L 74xx:74LS138 U2
|
||||
U 1 1 60577A7C
|
||||
P 6300 3900
|
||||
F 0 "U2" H 6300 4681 50 0000 C CNN
|
||||
F 1 "74HC138" H 6300 4590 50 0000 C CNN
|
||||
F 2 "Package_DIP:DIP-16_W7.62mm_LongPads" H 6300 3900 50 0001 C CNN
|
||||
F 3 "http://www.ti.com/lit/gpn/sn74LS138" H 6300 3900 50 0001 C CNN
|
||||
1 6300 3900
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
2150 4400 3850 4400
|
||||
Text Notes 4600 1300 0 197 ~ 0
|
||||
PAT80 Keyboard
|
||||
Text Notes 4000 2000 0 47 ~ 0
|
||||
The PAT80 keyboard is seen from the computer as a readonly block of 64 bytes of memory\nin the I/O space mapped to the first 3 of the 5 I/O address available for every single I/O device.\n\nThe keyboard controller is a board plugged on the I/O backplane and connected to the matrix board with a\n34-pin female-to-female flat ribbon cable (e.g. the ones used by IBM PC floppy disk drives)\n\nThe joystick port is Atari-style: partially C64 and MSX compatible (supports a single button and no analog paddle)
|
||||
Text Notes 4750 6100 0 47 ~ 0
|
||||
Keyboard controller
|
||||
$Comp
|
||||
L Connector_Generic:Conn_02x17_Odd_Even J1
|
||||
U 1 1 60ECCE47
|
||||
P 9100 3650
|
||||
F 0 "J1" H 9150 4667 50 0000 C CNN
|
||||
F 1 "Keyboard connector" H 9150 4576 50 0000 C CNN
|
||||
F 2 "Connector_PinHeader_2.54mm:PinHeader_2x17_P2.54mm_Vertical" H 9100 3650 50 0001 C CNN
|
||||
F 3 "~" H 9100 3650 50 0001 C CNN
|
||||
1 9100 3650
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
9400 2850 9400 2950
|
||||
Wire Wire Line
|
||||
9400 4600 9600 4600
|
||||
Connection ~ 9400 2950
|
||||
Wire Wire Line
|
||||
9400 2950 9400 3050
|
||||
Connection ~ 9400 3050
|
||||
Wire Wire Line
|
||||
9400 3050 9400 3150
|
||||
Connection ~ 9400 3150
|
||||
Wire Wire Line
|
||||
9400 3150 9400 3250
|
||||
Connection ~ 9400 3250
|
||||
Wire Wire Line
|
||||
9400 3250 9400 3350
|
||||
Connection ~ 9400 3350
|
||||
Wire Wire Line
|
||||
9400 3350 9400 3450
|
||||
Connection ~ 9400 3450
|
||||
Wire Wire Line
|
||||
9400 3450 9400 3550
|
||||
Connection ~ 9400 3550
|
||||
Wire Wire Line
|
||||
9400 3550 9400 3650
|
||||
Connection ~ 9400 3650
|
||||
Wire Wire Line
|
||||
9400 3650 9400 3750
|
||||
Connection ~ 9400 3750
|
||||
Wire Wire Line
|
||||
9400 3750 9400 3850
|
||||
Connection ~ 9400 3850
|
||||
Wire Wire Line
|
||||
9400 3850 9400 3950
|
||||
Connection ~ 9400 3950
|
||||
Wire Wire Line
|
||||
9400 3950 9400 4050
|
||||
Connection ~ 9400 4050
|
||||
Wire Wire Line
|
||||
9400 4050 9400 4150
|
||||
Connection ~ 9400 4150
|
||||
Wire Wire Line
|
||||
9400 4150 9400 4250
|
||||
Connection ~ 9400 4250
|
||||
Wire Wire Line
|
||||
9400 4250 9400 4350
|
||||
Connection ~ 9400 4350
|
||||
Wire Wire Line
|
||||
9400 4350 9400 4450
|
||||
Connection ~ 9400 4450
|
||||
Wire Wire Line
|
||||
9400 4450 9400 4600
|
||||
Entry Wire Line
|
||||
8500 2850 8400 2950
|
||||
Entry Wire Line
|
||||
8500 2950 8400 3050
|
||||
Entry Wire Line
|
||||
8500 3050 8400 3150
|
||||
Entry Wire Line
|
||||
8500 3150 8400 3250
|
||||
Entry Wire Line
|
||||
8500 3250 8400 3350
|
||||
Entry Wire Line
|
||||
8500 3350 8400 3450
|
||||
Entry Wire Line
|
||||
8500 3450 8400 3550
|
||||
Entry Wire Line
|
||||
8500 3550 8400 3650
|
||||
Entry Wire Line
|
||||
8500 3750 8400 3850
|
||||
Entry Wire Line
|
||||
8500 3850 8400 3950
|
||||
Entry Wire Line
|
||||
8500 3950 8400 4050
|
||||
Entry Wire Line
|
||||
8500 4050 8400 4150
|
||||
Entry Wire Line
|
||||
8500 4150 8400 4250
|
||||
Entry Wire Line
|
||||
8500 4250 8400 4350
|
||||
Entry Wire Line
|
||||
8500 4350 8400 4450
|
||||
Entry Wire Line
|
||||
8500 4450 8400 4550
|
||||
$Comp
|
||||
L power:GND #PWR017
|
||||
U 1 1 60ECCE7F
|
||||
P 9600 4600
|
||||
F 0 "#PWR017" H 9600 4350 50 0001 C CNN
|
||||
F 1 "GND" H 9605 4427 50 0000 C CNN
|
||||
F 2 "" H 9600 4600 50 0001 C CNN
|
||||
F 3 "" H 9600 4600 50 0001 C CNN
|
||||
1 9600 4600
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
8500 2850 8900 2850
|
||||
Wire Wire Line
|
||||
8500 2950 8900 2950
|
||||
Wire Wire Line
|
||||
8500 3050 8900 3050
|
||||
Wire Wire Line
|
||||
8500 3150 8900 3150
|
||||
Wire Wire Line
|
||||
8500 3250 8900 3250
|
||||
Wire Wire Line
|
||||
8500 3350 8900 3350
|
||||
Wire Wire Line
|
||||
8500 3450 8900 3450
|
||||
Wire Wire Line
|
||||
8500 3550 8900 3550
|
||||
Wire Wire Line
|
||||
8500 3750 8900 3750
|
||||
Wire Wire Line
|
||||
8500 3850 8900 3850
|
||||
Wire Wire Line
|
||||
8500 3950 8900 3950
|
||||
Wire Wire Line
|
||||
8500 4050 8900 4050
|
||||
Wire Wire Line
|
||||
8500 4150 8900 4150
|
||||
Wire Wire Line
|
||||
8500 4250 8900 4250
|
||||
Wire Wire Line
|
||||
8500 4350 8900 4350
|
||||
Wire Wire Line
|
||||
8500 4450 8900 4450
|
||||
Text Label 8600 2850 0 47 ~ 0
|
||||
COL0
|
||||
Text Label 8600 2950 0 47 ~ 0
|
||||
COL1
|
||||
Text Label 8600 3050 0 47 ~ 0
|
||||
COL2
|
||||
Text Label 8600 3150 0 47 ~ 0
|
||||
COL3
|
||||
Text Label 8600 3250 0 47 ~ 0
|
||||
COL4
|
||||
Text Label 8600 3350 0 47 ~ 0
|
||||
COL5
|
||||
Text Label 8600 3450 0 47 ~ 0
|
||||
COL6
|
||||
Text Label 8600 3550 0 47 ~ 0
|
||||
COL7
|
||||
Text Label 8600 3750 0 47 ~ 0
|
||||
ROW0
|
||||
Text Label 8600 3850 0 47 ~ 0
|
||||
ROW1
|
||||
Text Label 8600 3950 0 47 ~ 0
|
||||
ROW2
|
||||
Text Label 8600 4050 0 47 ~ 0
|
||||
ROW3
|
||||
Text Label 8600 4150 0 47 ~ 0
|
||||
ROW4
|
||||
Text Label 8600 4250 0 47 ~ 0
|
||||
ROW5
|
||||
Text Label 8600 4350 0 47 ~ 0
|
||||
ROW6
|
||||
Text Label 8600 4450 0 47 ~ 0
|
||||
ROW7
|
||||
$Comp
|
||||
L power:VCC #PWR014
|
||||
U 1 1 6138B5E2
|
||||
P 7950 3950
|
||||
F 0 "#PWR014" H 7950 3800 50 0001 C CNN
|
||||
F 1 "VCC" H 7967 4123 50 0000 C CNN
|
||||
F 2 "" H 7950 3950 50 0001 C CNN
|
||||
F 3 "" H 7950 3950 50 0001 C CNN
|
||||
1 7950 3950
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
8900 3650 8450 3650
|
||||
Wire Wire Line
|
||||
8450 3650 8450 3750
|
||||
Wire Wire Line
|
||||
8450 3750 8150 3750
|
||||
Wire Wire Line
|
||||
8150 3750 8150 3950
|
||||
Wire Wire Line
|
||||
8150 3950 7950 3950
|
||||
Text Label 8600 3650 0 47 ~ 0
|
||||
MTXVCC
|
||||
$Comp
|
||||
L Connector:DB9_Female_MountingHoles J2
|
||||
U 1 1 60C1B7D7
|
||||
P 9250 5250
|
||||
F 0 "J2" H 9430 5252 50 0000 L CNN
|
||||
F 1 "Joystick connector" H 9430 5161 50 0000 L CNN
|
||||
F 2 "Connector_Dsub:DSUB-9_Female_Horizontal_P2.77x2.84mm_EdgePinOffset4.94mm_Housed_MountingHolesOffset7.48mm" H 9250 5250 50 0001 C CNN
|
||||
F 3 " ~" H 9250 5250 50 0001 C CNN
|
||||
1 9250 5250
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Bus Line
|
||||
7250 3650 8400 3650
|
||||
Wire Bus Line
|
||||
7250 5600 8100 5600
|
||||
Wire Bus Line
|
||||
5200 5750 8400 5750
|
||||
Entry Wire Line
|
||||
8100 5450 8200 5350
|
||||
Text Label 8600 5350 0 50 ~ 0
|
||||
COL7
|
||||
Wire Wire Line
|
||||
8950 4850 8500 4850
|
||||
Entry Wire Line
|
||||
8400 4950 8500 4850
|
||||
Wire Bus Line
|
||||
8100 5600 8100 5450
|
||||
Wire Wire Line
|
||||
8950 5050 8500 5050
|
||||
Entry Wire Line
|
||||
8400 5150 8500 5050
|
||||
Wire Wire Line
|
||||
8950 5250 8500 5250
|
||||
Entry Wire Line
|
||||
8400 5350 8500 5250
|
||||
Wire Wire Line
|
||||
8950 5450 8500 5450
|
||||
Entry Wire Line
|
||||
8400 5550 8500 5450
|
||||
Text Label 8600 4850 0 50 ~ 0
|
||||
ROW0
|
||||
Text Label 8600 5050 0 50 ~ 0
|
||||
ROW1
|
||||
Text Label 8600 5250 0 50 ~ 0
|
||||
ROW2
|
||||
Text Label 8600 5450 0 50 ~ 0
|
||||
ROW3
|
||||
Wire Wire Line
|
||||
8950 4950 8500 4950
|
||||
Entry Wire Line
|
||||
8400 5050 8500 4950
|
||||
Text Label 8600 4950 0 50 ~ 0
|
||||
ROW4
|
||||
Wire Wire Line
|
||||
8950 5150 8500 5150
|
||||
Wire Wire Line
|
||||
8500 5150 8500 5200
|
||||
Wire Wire Line
|
||||
8500 5200 7950 5200
|
||||
$Comp
|
||||
L power:VCC #PWR015
|
||||
U 1 1 60EC4111
|
||||
P 7950 5200
|
||||
F 0 "#PWR015" H 7950 5050 50 0001 C CNN
|
||||
F 1 "VCC" H 7967 5373 50 0000 C CNN
|
||||
F 2 "" H 7950 5200 50 0001 C CNN
|
||||
F 3 "" H 7950 5200 50 0001 C CNN
|
||||
1 7950 5200
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L power:GND #PWR016
|
||||
U 1 1 60EC5968
|
||||
P 9250 5850
|
||||
F 0 "#PWR016" H 9250 5600 50 0001 C CNN
|
||||
F 1 "GND" H 9255 5677 50 0000 C CNN
|
||||
F 2 "" H 9250 5850 50 0001 C CNN
|
||||
F 3 "" H 9250 5850 50 0001 C CNN
|
||||
1 9250 5850
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L power:GND #PWR012
|
||||
U 1 1 60F7D3B6
|
||||
P 6300 4950
|
||||
F 0 "#PWR012" H 6300 4700 50 0001 C CNN
|
||||
F 1 "GND" H 6305 4777 50 0000 C CNN
|
||||
F 2 "" H 6300 4950 50 0001 C CNN
|
||||
F 3 "" H 6300 4950 50 0001 C CNN
|
||||
1 6300 4950
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
6300 4950 6300 4600
|
||||
$Comp
|
||||
L Device:C C4
|
||||
U 1 1 60FB4E9D
|
||||
P 6650 3100
|
||||
F 0 "C4" V 6398 3100 50 0000 C CNN
|
||||
F 1 "56Pf" V 6489 3100 50 0000 C CNN
|
||||
F 2 "Capacitor_THT:CP_Radial_Tantal_D6.0mm_P5.00mm" H 6688 2950 50 0001 C CNN
|
||||
F 3 "~" H 6650 3100 50 0001 C CNN
|
||||
1 6650 3100
|
||||
0 1 1 0
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
6800 2950 6800 2850
|
||||
Connection ~ 6800 2950
|
||||
Wire Wire Line
|
||||
6900 2950 6800 2950
|
||||
$Comp
|
||||
L power:GND #PWR013
|
||||
U 1 1 60FB4EA6
|
||||
P 6900 2950
|
||||
F 0 "#PWR013" H 6900 2700 50 0001 C CNN
|
||||
F 1 "GND" H 6905 2777 50 0000 C CNN
|
||||
F 2 "" H 6900 2950 50 0001 C CNN
|
||||
F 3 "" H 6900 2950 50 0001 C CNN
|
||||
1 6900 2950
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
6300 2950 6300 2800
|
||||
Wire Wire Line
|
||||
6500 2950 6500 2850
|
||||
Connection ~ 6500 2950
|
||||
Wire Wire Line
|
||||
6500 2950 6300 2950
|
||||
Wire Wire Line
|
||||
6500 3100 6500 2950
|
||||
Wire Wire Line
|
||||
6800 3100 6800 2950
|
||||
$Comp
|
||||
L Device:C C3
|
||||
U 1 1 60FB4EB3
|
||||
P 6650 2850
|
||||
F 0 "C3" V 6398 2850 50 0000 C CNN
|
||||
F 1 "100Nf" V 6489 2850 50 0000 C CNN
|
||||
F 2 "Capacitor_THT:CP_Radial_Tantal_D6.0mm_P5.00mm" H 6688 2700 50 0001 C CNN
|
||||
F 3 "~" H 6650 2850 50 0001 C CNN
|
||||
1 6650 2850
|
||||
0 1 1 0
|
||||
$EndComp
|
||||
$Comp
|
||||
L power:VCC #PWR011
|
||||
U 1 1 60FB4EB9
|
||||
P 6300 2800
|
||||
F 0 "#PWR011" H 6300 2650 50 0001 C CNN
|
||||
F 1 "VCC" H 6317 2973 50 0000 C CNN
|
||||
F 2 "" H 6300 2800 50 0001 C CNN
|
||||
F 3 "" H 6300 2800 50 0001 C CNN
|
||||
1 6300 2800
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
6300 2950 6300 3300
|
||||
Connection ~ 6300 2950
|
||||
Wire Wire Line
|
||||
8200 5350 8950 5350
|
||||
Wire Bus Line
|
||||
8400 2950 8400 3650
|
||||
Wire Bus Line
|
||||
5200 4200 5200 5750
|
||||
Wire Bus Line
|
||||
7250 3650 7250 5600
|
||||
Wire Bus Line
|
||||
8400 3850 8400 5750
|
||||
Text Notes 7350 7550 0 118 ~ 0
|
||||
Pat80 Keyboard and Joystick Controller
|
||||
$EndSCHEMATC
|
@ -1,3 +0,0 @@
|
||||
(sym_lib_table
|
||||
(lib (name pat80)(type Legacy)(uri /home/danieleverducci/git/pato-z80-home-computer/kicad-symbols/pat80.lib)(options "")(descr ""))
|
||||
)
|
@ -1,29 +1,10 @@
|
||||
/**
|
||||
* 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.
|
||||
* 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.
|
||||
*
|
||||
*
|
||||
* 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_AVAILABLE Register at addr 0x01 (RS) contains the number of bytes in the buffer,
|
||||
|
@ -4,23 +4,6 @@
|
||||
""" @package docstring
|
||||
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:
|
||||
Connect the arduino to a Pat80 I/O port.
|
||||
Flash /arduino/arduino_terminal firmware into the Arduino.
|
||||
|
@ -1,18 +0,0 @@
|
||||
# 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/>.
|
@ -1,336 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<project source="2.7.1" version="1.0">
|
||||
This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
|
||||
|
||||
<lib desc="#Wiring" name="0">
|
||||
<tool name="Splitter">
|
||||
<a name="fanout" val="4"/>
|
||||
<a name="incoming" val="4"/>
|
||||
</tool>
|
||||
</lib>
|
||||
<lib desc="#Gates" name="1">
|
||||
<tool name="AND Gate">
|
||||
<a name="facing" val="west"/>
|
||||
<a name="size" val="30"/>
|
||||
<a name="inputs" val="2"/>
|
||||
</tool>
|
||||
</lib>
|
||||
<lib desc="#Plexers" name="2"/>
|
||||
<lib desc="#Arithmetic" name="3"/>
|
||||
<lib desc="#Memory" name="4">
|
||||
<tool name="Counter">
|
||||
<a name="width" val="4"/>
|
||||
<a name="max" val="0xf"/>
|
||||
<a name="trigger" val="falling"/>
|
||||
<a name="label" val="Clock demultiplier"/>
|
||||
</tool>
|
||||
<tool name="Shift Register">
|
||||
<a name="parallel" val="false"/>
|
||||
</tool>
|
||||
</lib>
|
||||
<lib desc="#I/O" name="5"/>
|
||||
<lib desc="#Base" name="6">
|
||||
<tool name="Text Tool">
|
||||
<a name="text" val=""/>
|
||||
<a name="font" val="SansSerif plain 12"/>
|
||||
<a name="halign" val="center"/>
|
||||
<a name="valign" val="base"/>
|
||||
</tool>
|
||||
</lib>
|
||||
<main name="main"/>
|
||||
<options>
|
||||
<a name="gateUndefined" val="ignore"/>
|
||||
<a name="simlimit" val="1000"/>
|
||||
<a name="simrand" val="0"/>
|
||||
</options>
|
||||
<mappings>
|
||||
<tool lib="6" map="Button2" name="Menu Tool"/>
|
||||
<tool lib="6" map="Button3" name="Menu Tool"/>
|
||||
<tool lib="6" map="Ctrl Button1" name="Menu Tool"/>
|
||||
</mappings>
|
||||
<toolbar>
|
||||
<tool lib="6" name="Poke Tool"/>
|
||||
<tool lib="6" name="Edit Tool"/>
|
||||
<tool lib="6" name="Text Tool">
|
||||
<a name="text" val=""/>
|
||||
<a name="font" val="SansSerif plain 12"/>
|
||||
<a name="halign" val="center"/>
|
||||
<a name="valign" val="base"/>
|
||||
</tool>
|
||||
<sep/>
|
||||
<tool lib="0" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
</tool>
|
||||
<tool lib="0" name="Pin">
|
||||
<a name="facing" val="west"/>
|
||||
<a name="output" val="true"/>
|
||||
<a name="labelloc" val="east"/>
|
||||
</tool>
|
||||
<tool lib="1" name="NOT Gate"/>
|
||||
<tool lib="1" name="AND Gate"/>
|
||||
<tool lib="1" name="OR Gate"/>
|
||||
</toolbar>
|
||||
<circuit name="main">
|
||||
<a name="circuit" val="main"/>
|
||||
<a name="clabel" val=""/>
|
||||
<a name="clabelup" val="east"/>
|
||||
<a name="clabelfont" val="SansSerif plain 12"/>
|
||||
<wire from="(400,430)" to="(400,500)"/>
|
||||
<wire from="(610,290)" to="(660,290)"/>
|
||||
<wire from="(350,370)" to="(350,500)"/>
|
||||
<wire from="(210,490)" to="(210,500)"/>
|
||||
<wire from="(880,30)" to="(880,350)"/>
|
||||
<wire from="(290,370)" to="(290,380)"/>
|
||||
<wire from="(420,520)" to="(540,520)"/>
|
||||
<wire from="(330,370)" to="(330,380)"/>
|
||||
<wire from="(370,370)" to="(370,380)"/>
|
||||
<wire from="(870,430)" to="(870,460)"/>
|
||||
<wire from="(390,100)" to="(390,180)"/>
|
||||
<wire from="(420,180)" to="(420,210)"/>
|
||||
<wire from="(440,80)" to="(440,110)"/>
|
||||
<wire from="(410,370)" to="(410,400)"/>
|
||||
<wire from="(180,410)" to="(180,500)"/>
|
||||
<wire from="(250,380)" to="(290,380)"/>
|
||||
<wire from="(200,30)" to="(880,30)"/>
|
||||
<wire from="(280,90)" to="(320,90)"/>
|
||||
<wire from="(290,180)" to="(330,180)"/>
|
||||
<wire from="(400,170)" to="(440,170)"/>
|
||||
<wire from="(350,100)" to="(350,200)"/>
|
||||
<wire from="(490,300)" to="(580,300)"/>
|
||||
<wire from="(860,410)" to="(880,410)"/>
|
||||
<wire from="(410,110)" to="(440,110)"/>
|
||||
<wire from="(520,140)" to="(550,140)"/>
|
||||
<wire from="(380,400)" to="(410,400)"/>
|
||||
<wire from="(320,190)" to="(340,190)"/>
|
||||
<wire from="(300,530)" to="(320,530)"/>
|
||||
<wire from="(410,480)" to="(430,480)"/>
|
||||
<wire from="(800,420)" to="(830,420)"/>
|
||||
<wire from="(150,470)" to="(150,520)"/>
|
||||
<wire from="(490,90)" to="(500,90)"/>
|
||||
<wire from="(210,490)" to="(220,490)"/>
|
||||
<wire from="(870,430)" to="(880,430)"/>
|
||||
<wire from="(440,80)" to="(500,80)"/>
|
||||
<wire from="(200,490)" to="(200,500)"/>
|
||||
<wire from="(240,490)" to="(240,500)"/>
|
||||
<wire from="(270,520)" to="(320,520)"/>
|
||||
<wire from="(260,390)" to="(310,390)"/>
|
||||
<wire from="(790,390)" to="(790,460)"/>
|
||||
<wire from="(410,100)" to="(410,110)"/>
|
||||
<wire from="(290,260)" to="(290,270)"/>
|
||||
<wire from="(200,150)" to="(200,300)"/>
|
||||
<wire from="(220,470)" to="(220,490)"/>
|
||||
<wire from="(530,100)" to="(530,120)"/>
|
||||
<wire from="(390,410)" to="(430,410)"/>
|
||||
<wire from="(380,100)" to="(380,190)"/>
|
||||
<wire from="(340,100)" to="(340,190)"/>
|
||||
<wire from="(330,410)" to="(330,500)"/>
|
||||
<wire from="(810,370)" to="(830,370)"/>
|
||||
<wire from="(390,180)" to="(420,180)"/>
|
||||
<wire from="(660,180)" to="(660,290)"/>
|
||||
<wire from="(400,430)" to="(430,430)"/>
|
||||
<wire from="(510,100)" to="(510,260)"/>
|
||||
<wire from="(440,170)" to="(440,210)"/>
|
||||
<wire from="(330,380)" to="(340,380)"/>
|
||||
<wire from="(200,150)" to="(280,150)"/>
|
||||
<wire from="(200,490)" to="(210,490)"/>
|
||||
<wire from="(280,90)" to="(280,150)"/>
|
||||
<wire from="(530,120)" to="(610,120)"/>
|
||||
<wire from="(860,430)" to="(870,430)"/>
|
||||
<wire from="(790,460)" to="(870,460)"/>
|
||||
<wire from="(340,380)" to="(340,500)"/>
|
||||
<wire from="(190,490)" to="(190,500)"/>
|
||||
<wire from="(230,490)" to="(230,500)"/>
|
||||
<wire from="(200,80)" to="(320,80)"/>
|
||||
<wire from="(340,200)" to="(340,210)"/>
|
||||
<wire from="(380,200)" to="(380,210)"/>
|
||||
<wire from="(310,370)" to="(310,390)"/>
|
||||
<wire from="(390,370)" to="(390,390)"/>
|
||||
<wire from="(880,380)" to="(880,410)"/>
|
||||
<wire from="(290,180)" to="(290,260)"/>
|
||||
<wire from="(330,100)" to="(330,180)"/>
|
||||
<wire from="(200,300)" to="(490,300)"/>
|
||||
<wire from="(370,100)" to="(370,200)"/>
|
||||
<wire from="(830,330)" to="(830,370)"/>
|
||||
<wire from="(640,130)" to="(660,130)"/>
|
||||
<wire from="(150,570)" to="(300,570)"/>
|
||||
<wire from="(380,190)" to="(400,190)"/>
|
||||
<wire from="(580,140)" to="(610,140)"/>
|
||||
<wire from="(260,390)" to="(260,500)"/>
|
||||
<wire from="(150,530)" to="(150,570)"/>
|
||||
<wire from="(430,370)" to="(430,410)"/>
|
||||
<wire from="(150,520)" to="(170,520)"/>
|
||||
<wire from="(520,100)" to="(520,140)"/>
|
||||
<wire from="(610,310)" to="(810,310)"/>
|
||||
<wire from="(340,200)" to="(350,200)"/>
|
||||
<wire from="(360,380)" to="(370,380)"/>
|
||||
<wire from="(410,110)" to="(410,160)"/>
|
||||
<wire from="(460,160)" to="(460,210)"/>
|
||||
<wire from="(190,490)" to="(200,490)"/>
|
||||
<wire from="(230,490)" to="(240,490)"/>
|
||||
<wire from="(250,380)" to="(250,500)"/>
|
||||
<wire from="(400,100)" to="(400,170)"/>
|
||||
<wire from="(140,80)" to="(200,80)"/>
|
||||
<wire from="(410,160)" to="(460,160)"/>
|
||||
<wire from="(220,490)" to="(220,500)"/>
|
||||
<wire from="(320,190)" to="(320,210)"/>
|
||||
<wire from="(400,190)" to="(400,210)"/>
|
||||
<wire from="(410,480)" to="(410,500)"/>
|
||||
<wire from="(800,390)" to="(800,420)"/>
|
||||
<wire from="(490,90)" to="(490,300)"/>
|
||||
<wire from="(390,410)" to="(390,500)"/>
|
||||
<wire from="(660,130)" to="(660,150)"/>
|
||||
<wire from="(290,260)" to="(510,260)"/>
|
||||
<wire from="(380,400)" to="(380,500)"/>
|
||||
<wire from="(180,410)" to="(330,410)"/>
|
||||
<wire from="(300,570)" to="(640,570)"/>
|
||||
<wire from="(370,390)" to="(390,390)"/>
|
||||
<wire from="(180,370)" to="(180,410)"/>
|
||||
<wire from="(360,100)" to="(360,210)"/>
|
||||
<wire from="(370,390)" to="(370,500)"/>
|
||||
<wire from="(300,530)" to="(300,570)"/>
|
||||
<wire from="(150,530)" to="(170,530)"/>
|
||||
<wire from="(200,30)" to="(200,80)"/>
|
||||
<wire from="(370,200)" to="(380,200)"/>
|
||||
<wire from="(220,490)" to="(230,490)"/>
|
||||
<wire from="(360,380)" to="(360,500)"/>
|
||||
<comp lib="0" loc="(410,370)" name="Pin">
|
||||
<a name="facing" val="south"/>
|
||||
<a name="tristate" val="false"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(290,370)" name="Pin">
|
||||
<a name="facing" val="south"/>
|
||||
<a name="tristate" val="false"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(880,380)" name="NOT Gate">
|
||||
<a name="facing" val="south"/>
|
||||
</comp>
|
||||
<comp lib="4" loc="(320,80)" name="Shift Register"/>
|
||||
<comp lib="1" loc="(660,180)" name="NOT Gate">
|
||||
<a name="facing" val="south"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(880,430)" name="Clock">
|
||||
<a name="facing" val="west"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(180,370)" name="Pin">
|
||||
<a name="facing" val="south"/>
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="Wr"/>
|
||||
<a name="labelloc" val="north"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(150,470)" name="Power"/>
|
||||
<comp lib="0" loc="(350,370)" name="Pin">
|
||||
<a name="facing" val="south"/>
|
||||
<a name="tristate" val="false"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(400,210)" name="Pin">
|
||||
<a name="facing" val="north"/>
|
||||
<a name="output" val="true"/>
|
||||
<a name="tristate" val="false"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(430,430)" name="Ground"/>
|
||||
<comp lib="0" loc="(340,210)" name="Pin">
|
||||
<a name="facing" val="north"/>
|
||||
<a name="output" val="true"/>
|
||||
<a name="tristate" val="false"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(440,210)" name="Pin">
|
||||
<a name="facing" val="north"/>
|
||||
<a name="output" val="true"/>
|
||||
<a name="tristate" val="false"/>
|
||||
</comp>
|
||||
<comp lib="4" loc="(170,520)" name="Shift Register"/>
|
||||
<comp lib="0" loc="(360,210)" name="Pin">
|
||||
<a name="facing" val="north"/>
|
||||
<a name="output" val="true"/>
|
||||
<a name="tristate" val="false"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(420,210)" name="Pin">
|
||||
<a name="facing" val="north"/>
|
||||
<a name="output" val="true"/>
|
||||
<a name="tristate" val="false"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(310,370)" name="Pin">
|
||||
<a name="facing" val="south"/>
|
||||
<a name="tristate" val="false"/>
|
||||
</comp>
|
||||
<comp lib="4" loc="(320,520)" name="Shift Register"/>
|
||||
<comp lib="0" loc="(330,370)" name="Pin">
|
||||
<a name="facing" val="south"/>
|
||||
<a name="tristate" val="false"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(390,370)" name="Pin">
|
||||
<a name="facing" val="south"/>
|
||||
<a name="tristate" val="false"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(370,370)" name="Pin">
|
||||
<a name="facing" val="south"/>
|
||||
<a name="tristate" val="false"/>
|
||||
</comp>
|
||||
<comp lib="4" loc="(500,80)" name="Shift Register"/>
|
||||
<comp lib="0" loc="(430,370)" name="Pin">
|
||||
<a name="facing" val="south"/>
|
||||
<a name="tristate" val="false"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(140,80)" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="Rx"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(580,140)" name="NOT Gate"/>
|
||||
<comp lib="1" loc="(640,130)" name="AND Gate">
|
||||
<a name="size" val="30"/>
|
||||
<a name="inputs" val="2"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(540,520)" name="Pin">
|
||||
<a name="facing" val="west"/>
|
||||
<a name="output" val="true"/>
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="Tx"/>
|
||||
<a name="labelloc" val="east"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(830,420)" name="AND Gate">
|
||||
<a name="facing" val="west"/>
|
||||
<a name="size" val="30"/>
|
||||
<a name="inputs" val="2"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(320,210)" name="Pin">
|
||||
<a name="facing" val="north"/>
|
||||
<a name="output" val="true"/>
|
||||
<a name="tristate" val="false"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(580,300)" name="AND Gate">
|
||||
<a name="facing" val="west"/>
|
||||
<a name="size" val="30"/>
|
||||
<a name="inputs" val="2"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(220,470)" name="Power"/>
|
||||
<comp lib="4" loc="(810,370)" name="Counter">
|
||||
<a name="width" val="4"/>
|
||||
<a name="max" val="0xf"/>
|
||||
<a name="trigger" val="falling"/>
|
||||
<a name="label" val="Clock demultiplier"/>
|
||||
<a name="labelfont" val="SansSerif plain 10"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(380,210)" name="Pin">
|
||||
<a name="facing" val="north"/>
|
||||
<a name="output" val="true"/>
|
||||
<a name="tristate" val="false"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(460,210)" name="Pin">
|
||||
<a name="facing" val="north"/>
|
||||
<a name="output" val="true"/>
|
||||
<a name="tristate" val="false"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(290,270)" name="Pin">
|
||||
<a name="facing" val="north"/>
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="Clear"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(430,480)" name="Power"/>
|
||||
<comp lib="0" loc="(830,330)" name="Splitter">
|
||||
<a name="facing" val="west"/>
|
||||
<a name="fanout" val="4"/>
|
||||
<a name="incoming" val="4"/>
|
||||
<a name="appear" val="right"/>
|
||||
</comp>
|
||||
</circuit>
|
||||
</project>
|
@ -1,87 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<project source="2.7.1" version="1.0">
|
||||
This file is intended to be loaded by Logisim (http://www.cburch.com/logisim/).
|
||||
|
||||
<lib desc="#Wiring" name="0"/>
|
||||
<lib desc="#Gates" name="1">
|
||||
<tool name="NAND Gate">
|
||||
<a name="size" val="30"/>
|
||||
<a name="inputs" val="2"/>
|
||||
</tool>
|
||||
</lib>
|
||||
<lib desc="#Plexers" name="2"/>
|
||||
<lib desc="#Arithmetic" name="3"/>
|
||||
<lib desc="#Memory" name="4"/>
|
||||
<lib desc="#I/O" name="5"/>
|
||||
<lib desc="#Base" name="6">
|
||||
<tool name="Text Tool">
|
||||
<a name="text" val=""/>
|
||||
<a name="font" val="SansSerif plain 12"/>
|
||||
<a name="halign" val="center"/>
|
||||
<a name="valign" val="base"/>
|
||||
</tool>
|
||||
</lib>
|
||||
<main name="main"/>
|
||||
<options>
|
||||
<a name="gateUndefined" val="ignore"/>
|
||||
<a name="simlimit" val="1000"/>
|
||||
<a name="simrand" val="0"/>
|
||||
</options>
|
||||
<mappings>
|
||||
<tool lib="6" map="Button2" name="Menu Tool"/>
|
||||
<tool lib="6" map="Button3" name="Menu Tool"/>
|
||||
<tool lib="6" map="Ctrl Button1" name="Menu Tool"/>
|
||||
</mappings>
|
||||
<toolbar>
|
||||
<tool lib="6" name="Poke Tool"/>
|
||||
<tool lib="6" name="Edit Tool"/>
|
||||
<tool lib="6" name="Text Tool">
|
||||
<a name="text" val=""/>
|
||||
<a name="font" val="SansSerif plain 12"/>
|
||||
<a name="halign" val="center"/>
|
||||
<a name="valign" val="base"/>
|
||||
</tool>
|
||||
<sep/>
|
||||
<tool lib="0" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
</tool>
|
||||
<tool lib="0" name="Pin">
|
||||
<a name="facing" val="west"/>
|
||||
<a name="output" val="true"/>
|
||||
<a name="labelloc" val="east"/>
|
||||
</tool>
|
||||
<tool lib="1" name="NOT Gate"/>
|
||||
<tool lib="1" name="AND Gate"/>
|
||||
<tool lib="1" name="OR Gate"/>
|
||||
</toolbar>
|
||||
<circuit name="main">
|
||||
<a name="circuit" val="main"/>
|
||||
<a name="clabel" val=""/>
|
||||
<a name="clabelup" val="east"/>
|
||||
<a name="clabelfont" val="SansSerif plain 12"/>
|
||||
<wire from="(180,160)" to="(340,160)"/>
|
||||
<wire from="(160,210)" to="(170,210)"/>
|
||||
<wire from="(180,150)" to="(180,160)"/>
|
||||
<wire from="(190,130)" to="(230,130)"/>
|
||||
<wire from="(260,140)" to="(260,250)"/>
|
||||
<wire from="(340,130)" to="(340,160)"/>
|
||||
<wire from="(260,140)" to="(300,140)"/>
|
||||
<wire from="(250,120)" to="(300,120)"/>
|
||||
<wire from="(170,150)" to="(170,210)"/>
|
||||
<wire from="(160,250)" to="(260,250)"/>
|
||||
<comp lib="0" loc="(160,210)" name="Clock"/>
|
||||
<comp lib="0" loc="(160,250)" name="Pin">
|
||||
<a name="tristate" val="false"/>
|
||||
<a name="label" val="Rx"/>
|
||||
</comp>
|
||||
<comp lib="0" loc="(230,130)" name="Splitter">
|
||||
<a name="fanout" val="8"/>
|
||||
<a name="incoming" val="8"/>
|
||||
</comp>
|
||||
<comp lib="1" loc="(340,130)" name="NAND Gate">
|
||||
<a name="size" val="30"/>
|
||||
<a name="inputs" val="2"/>
|
||||
</comp>
|
||||
<comp lib="4" loc="(190,130)" name="Counter"/>
|
||||
</circuit>
|
||||
</project>
|
@ -1,21 +1,4 @@
|
||||
/**
|
||||
*
|
||||
* 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
|
||||
*
|
||||
* DATA BUS IS: 2, 3, 4, 5, 6, 7, 8, 9 (NOTE: 2 is D0, but D0 is the MSB)
|
||||
|
@ -1,57 +0,0 @@
|
||||
/**
|
||||
* 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.
|
||||
* This sketch makes an Arduino send test data to tha Pat80 composite video pal adapter.
|
||||
* Connect the video adapter directly to Arduino
|
||||
*/
|
||||
|
||||
const byte CLK = 11; // output active low
|
||||
const byte RS = 12; // output low = DATA register, high = COMMAND register
|
||||
const byte BUSY = 13; // Input, Active low
|
||||
// DATA BUS (Output, active high): 3, 4, 5, 6, 7, 8, 9, 10;
|
||||
|
||||
void setup() {
|
||||
DDRD = DDRD | B11111000; // Port D (arduino pins 3 to 7) is output. In or to preserve serial pins and interrupt pin
|
||||
DDRB = B00000111; // Port B (0,1,2) = pins 8,9,10 output
|
||||
pinMode(CLK, OUTPUT);
|
||||
pinMode(RS, OUTPUT);
|
||||
pinMode(BUSY, INPUT);
|
||||
|
||||
digitalWrite(CLK, HIGH); // Inactive clock
|
||||
}
|
||||
|
||||
void loop() {
|
||||
delay(1000);
|
||||
send();
|
||||
}
|
||||
|
||||
void send() {
|
||||
// Random char
|
||||
char c = random(32, 126);
|
||||
// Wait for BUSY to become inactive (HIGH)
|
||||
//while(digitalRead(BUSY) == LOW) {}
|
||||
|
||||
// Split byte to two parts and write to ports
|
||||
PORTD = c << 3;
|
||||
PORTB = c >> 5;
|
||||
|
||||
// Clock pulse
|
||||
digitalWrite(CLK, LOW);
|
||||
delay(100);
|
||||
digitalWrite(CLK, HIGH);
|
||||
}
|
@ -1,23 +1,4 @@
|
||||
/* ************** 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:
|
||||
|
||||
|
@ -1,23 +1,4 @@
|
||||
/*
|
||||
* 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
|
||||
*/
|
||||
/* HD44780 Character display debugger */
|
||||
|
||||
#define EN 2
|
||||
const byte DATA_BUS[] = {10, 9, 8, 7, 6, 5, 4, 3};
|
||||
|
@ -1,54 +0,0 @@
|
||||
/*
|
||||
* 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
|
||||
const byte DATA_BUS[] = {10, 9, 8, 7, 6, 5, 4, 3};
|
||||
|
||||
void setup() {
|
||||
pinMode(EN, INPUT);
|
||||
for(int pin=0; pin < 8; pin++) {
|
||||
pinMode(DATA_BUS[pin], INPUT);
|
||||
}
|
||||
|
||||
Serial.begin(57600);
|
||||
Serial.println("PS/2 keyboard controller debugger");
|
||||
Serial.println("DATA BUS HEX EN");
|
||||
|
||||
attachInterrupt(digitalPinToInterrupt(EN), onClk, FALLING);
|
||||
}
|
||||
|
||||
void loop() {}
|
||||
|
||||
void onClk() {
|
||||
unsigned int data = 0;
|
||||
for(int pin=0; pin < 8; pin++) {
|
||||
byte b = digitalRead(DATA_BUS[pin]) ? 1 : 0;
|
||||
Serial.print(b);
|
||||
data = (data << 1) + b; // Shifta di 1 e aggiunge il bit corrente. Serve per ricostruire il numero da binario
|
||||
}
|
||||
|
||||
char output[50] = {};
|
||||
sprintf(output, " 0x%02x %c",
|
||||
data,
|
||||
digitalRead(EN) ? 'D' : 'I'
|
||||
);
|
||||
Serial.println(output);
|
||||
}
|
@ -1,24 +1,7 @@
|
||||
/**
|
||||
*
|
||||
* 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
|
||||
* 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
|
||||
*/
|
||||
|
||||
|
@ -1,20 +1,4 @@
|
||||
/* ************** 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:
|
||||
|
||||
|