From ab9cde80f16934be6ea4f7e3ba8308553061f28b Mon Sep 17 00:00:00 2001
From: Nao Pross <naopross@thearcway.org>
Date: Tue, 7 Mar 2017 10:18:31 +0100
Subject: updated todolist; doc: keyboard stuff

---
 doc/report/notes.tex | 62 +++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 59 insertions(+), 3 deletions(-)

(limited to 'doc/report/notes.tex')

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}
-- 
cgit v1.2.1

