summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNao Pross <naopross@thearcway.org>2017-03-07 10:18:31 +0100
committerNao Pross <naopross@thearcway.org>2017-03-07 10:18:31 +0100
commitab9cde80f16934be6ea4f7e3ba8308553061f28b (patch)
treec88d11f5d64156cd3dad3f1a2f0c8d0bacb18bab
parenthw: moved everything to one sheet (diff)
downloadz80uPC-ab9cde80f16934be6ea4f7e3ba8308553061f28b.tar.gz
z80uPC-ab9cde80f16934be6ea4f7e3ba8308553061f28b.zip
updated todolist; doc: keyboard stuff
-rw-r--r--TODO20
-rw-r--r--doc/report/notes.tex62
-rw-r--r--doc/report/res/pc104conn.csv35
3 files changed, 110 insertions, 7 deletions
diff --git a/TODO b/TODO
index 9f78325..215fd3b 100644
--- a/TODO
+++ b/TODO
@@ -1,8 +1,17 @@
STRUCTURE
---------
-[*] address space
+[-] address space
+ [*] ROM location
+ [*] RAM location
+ [ ] I/O space
+ [ ] serial
+ [ ] port interface
+ [ ] timer
+ [ ] keyboard
[ ] pcb size (eurocard?)
[ ] ram pages
+ [ ] system page
+ [ ] user space
HARDWARE
--------
@@ -13,12 +22,13 @@ HARDWARE
[*] secondary clock (200Hz)
[*] stepper button
[*] reset circuit
-[ ] digital port interface
[ ] serial terminal
-[ ] address and data visualizer (7SEG display)
+[ ] digital port interface
+[ ] timer(s)
[ ] extension connector
+[ ] address and data visualizer (7SEG display)
[ ] keyboard driver
-[ ] display driver
+[ ] display adapter
[ ] PCB layout
SOFTWARE
@@ -29,3 +39,5 @@ SOFTWARE
[ ] address editor
[ ] NVRAM eraser
[ ] data dump/copy
+[ ] basic kernel
+[ ] C compiler
diff --git a/doc/report/notes.tex b/doc/report/notes.tex
index e3082d0..79aaa68 100644
--- a/doc/report/notes.tex
+++ b/doc/report/notes.tex
@@ -2,6 +2,7 @@
\usepackage[a4paper, inner=3cm, outer=3cm, marginpar=0pt]{geometry}
\usepackage[explicit]{titlesec}
+\usepackage{csvsimple}
\usepackage{wrapfig}
\usepackage{graphicx}
\usepackage{xcolor} %
@@ -81,8 +82,8 @@ interfacce esterne per poter collegare dispositivi di memoria come per esempio
le uSD. Dunque questa EEPROM vicina al processore sar\`a utilizzata unicamente
per il bootloader e per un sistema operativo molto basilare.
-\renewcommand\ddate{23.02.2017}
-\section{Banchi di memoria}
+% \renewcommand\ddate{23.02.2017}
+% \section{Banchi di memoria e paging della RAM}
\renewcommand\ddate{06.03.2017}
\section{Schede normate e clock secondari}
@@ -92,8 +93,63 @@ poter montare tutte le schede su un rack. Cos\`i facendo si avrebbe dei
connettori standard sul retro che si potrebbero utilizzare per le periferiche
esterne. Alternativamente si potrebbe utilizzare una struttura simile al PC/104
permettendo di interfacciare delle periferiche specifiche per computer ancora
-diponibili sul mercato.
+diponibili sul mercato. Il connettore standard per PC/104 \`e un header 32x2,
+quindi con 64 pin mappato come indicato sotto, con un opzionale estensione che
+pu\`o aumentare il connettore a 146
+pins\footnote{http://pinouts.ru/Slots/Pc104_pinout.shtml}.
+\begin{tabular}
+\csvautotabular{res/pc104conn.csv}
+\end{tabular}
+
+\renewcommand\ddate{07.03.2017}
+\section{Tastiera Misteriosa}
+Nello stesso luogo in cui avevo trovato lo Z80 stesso ho trovato anche una
+tastiera con un connettore mai visto. Il connettore era composto da 19 pin, di
+cui 16 erano collegati all'interno della tastiera. Inizialmente pensavo che la
+tastiera contenesse gi\`a un driver che generava degli interrupt, come una
+qualsiasi tastiera moderna, con l'unica differenza che il bus di comunicazione
+era parallelo. Ma dopo una ricerca rapida senza risultati ho deciso di aprire la
+tastiera per analizzare il layout. Inaspettatamente ho scoperto che l'intero PCB
+non \`e altro che una griglia 9x9 con i 18 fili che portano al connettore.
+Questo hardware probabilmente era per un C64 Commodore 64 che aveva il resto
+della logica programmata nella ROM o sulla scheda madre.
+
+Per utilizzare l'hardware in questo stato \`e dunque necessario attivare i
+primi 9 bit del connettore e successivamente leggere i seguenti 9 mascherando il
+tasto interessato. Qui sotto ho preso un esempio che ho trovato online per
+dimostrare il concetto in assembly.
+
+\begin{centering}\begin{verbatim}
+; This program waits until the key "S" was pushed.
+; Start with SYS 49152
+
+*=$c000 ; startaddress
+
+PRA = $dc00 ; CIA#1 (Port Register A)
+DDRA = $dc02 ; CIA#1 (Data Direction Register A)
+
+PRB = $dc01 ; CIA#1 (Port Register B)
+DDRB = $dc03 ; CIA#1 (Data Direction Register B)
+
+
+start sei ; interrupts deactivated
+
+ lda #%11111111 ; CIA#1 port A = outputs
+ sta DDRA
+
+ lda #%00000000 ; CIA#1 port B = inputs
+ sta DDRB
+
+ lda #%11111101 ; testing column 1 (COL1) of the matrix
+ sta PRA
+
+loop lda PRB
+ and #%00100000 ; masking row 5 (ROW5)
+ bne loop ; wait until key "S"
+ cli ; interrupts activated
+ende rts ; back to BASIC
+\end{verbatim}\end{centering}
\end{document}
diff --git a/doc/report/res/pc104conn.csv b/doc/report/res/pc104conn.csv
new file mode 100644
index 0000000..1149835
--- /dev/null
+++ b/doc/report/res/pc104conn.csv
@@ -0,0 +1,35 @@
+Pin;J1/P1;J1/P1;J2/P2 (16-bit modules only);J2/P2 (16-bit modules only)
+Number;Row A;Row B;Row C1;Row D1
+0;--;--;0V;0V
+1;IOCHCHK*;0V;SBHE*;MEMCS16*
+2;SD7;RESETDRV;LA23;IOCS16*
+3;SD6;+5V;LA22;IRQ10
+4;SD5;IRQ9;LA21;IRQ11
+5;SD4;-5V;LA20;IRQ12
+6;SD3;DRQ2;LA19;IRQ15
+7;SD2;-12V;LA18;IRQ14
+8;SD1;ENDXFR*;LA17;DACK0*
+9;SD0;+12V;MEMR*;DRQ0
+10;IOCHRDY;(KEY)2;MEMW*;DACK5*
+11;AEN;SMEMW*;SD8;DRQ5
+12;SA19;SMEMR*;SD9;DACK6*
+13;SA18;IOW*;SD10;DRQ6
+14;SA17;IOR*;SD11;DACK7*
+15;SA16;DACK3*;SD12;DRQ7
+16;SA15;DRQ3;SD13;+5V
+17;SA14;DACK1*;SD14;MASTER*
+18;SA13;DRQ1;SD15;0V
+19;SA12;REFRESH*;;(KEY)2 0V
+20;SA11;SYSCLK;;
+21;SA10;IRQ7;;
+22;SA9;IRQ6;;
+23;SA8;IRQ5;;
+24;SA7;IRQ4;;
+25;SA6;IRQ3;;
+26;SA5;DACK2*;;
+27;SA4;TC;;
+28;SA3;BALE;;
+29;SA2;+5V;;
+30;SA1;OSC;;
+31;SA0;0V;;
+32;0V;0V;;