Les circuits d'entrée/sortie de l'émulateur Teo
1. Le 6846 système
Description fonctionnelle
Le port 8 bits du 6846, appelé port C, a par initialisation trois
lignes P2, P4, P5 configurées en sorties et trois autres
P1, P6, P7 en entrées. Le bit P0, bien que configuré en sortie, est en réalité émulé par le gate array mode page et le bit P3 est déconnecté (mais la routine de lecture clavier en fait un flag majuscules/minuscules).
Le timer sert en fonctionnement normal, par des
demandes d'interruptions successives toutes les 100 ms, à
commander le clignotement du curseur. Sa fonction de codage des informations numériques pour le LEP via la sortie CT0 n'est pas émulée, mais remplacée par une routine haut-niveau.
Adresses et fonctions des registres internes
| Adresse | Registre | Fonction |
| E7C0 | CSR | Registre d'état composite |
| E7C1 | CRC | Registre de commande |
| E7C2 | DDRC | Registre de direction de données |
| E7C3 | PRC | Registre de données (port C) |
| E7C4 | CSR | Registre d'état composite |
| E7C5 | TCR | Registre de commande du temporisateur |
| E7C6 | TMSB | Registre d'octet de poids fort du temporisateur |
| E7C7 | TLSB | Registre d'octet de poids faible du temporisateur |
CSR (lecture seule)
- bit 0: irq temporisateur
- bit 1: irq CP1
- bit 7: irq composite du 6846
CRC
- bit 0 (S): validation irq CP1 (0 masquée/ 1 non masquée)
- bit 1 (S): mode de déclenchement CP1 (0 descente/ 1 montée)
- bit 3 (S): CP2 - MUTE son
- bit 4 (S): état CP2
- bit 5 (S): direction CP2 (0 entrée/ 1 sortie)
- bit 7 (E): CP1 - DATAS clavier (transmission série)
PRC
- bit 0 (S - émulé): sélection page VRAM (Point/Couleur)
- bit 1 (E): INTERLP (enfoncement crayon optique)
- bit 2 (S): sélection ROM résidente/ROM cartouche
- bit 3 (S - déconnecté): flag logiciel majuscules/minuscules
- bit 4 (S): sélection banque ROM moniteur
- bit 5 (S): ACK (acknowledge) clavier
- bit 6 (E): BUSY imprimante
- bit 7 (E): lecture LEP (magnétophone)
TCR (écriture seule)
- bit 0: état temporisateur (0 désactivé/ 1 activé)
- bit 2: pré-compteur de diviseur par 8 (0 désactivé/ 1 activé)
- bit 3-5: mode de fonctionnement
- bit 6: validation irq temporisateur (0 masquée/ 1 non masquée)
2. Le PIA 6821 système
Description fonctionnelle
Le 6821 système assure à la fois la communication avec des modules internes de l'unité centrale (carte mémoire et clavier) et avec le port externe imprimante (Centronics).
Adresses et fonctions des registres internes
| Adresse | Registre | Fonction |
| E7C8 | DDRA PDRA | Registre de direction de données du port A
Registre de données du port A |
| E7C9 | DDRB PDRB | Registre de direction de données du port B
Registre de données du port B |
| E7CA | CRA | Registre de commande du port A |
| E7CB | CRB | Registre de commande du port B |
PDRA
- bit 0 (E): KTEST clavier (signal de touche enfoncée)
- bit 1-7 (S): D1 à D7 de l'imprimante
PDRB
- bit 0 (S): D0 de l'imprimante
- bit 1 (S): STROBE de l'imprimante
- bit 2 (S): commande d'incrustation (active à 0)
- bit 3-7 (S - émulé): sélection de la banque RAM (mode PIA compatible TO7-70/TO9)
CRA
- bit 2 (S): sélection du registre (0 DDRA/ 1 PDRA)
- bit 3 (S): CA2 - commande du moteur LEP (active à 0)
- bit 4 (S): état CA2
- bit 5 (S): direction CA2 (0 entrée/ 1 sortie)
- bit 7 (E): CA1 - CLRG (signal de remise à l'heure du boitier d'incrustation)
CRB
- bit 2 (S): sélection du registre (0 DDRB/ 1 PDRB)
- bit 7 (E): CB1 - signal code barre
3. Le PIA 6821 musique et jeux
Description fonctionnelle
Le 6821 musique et jeux assure la communication avec les ports manettes et la sortie sonore 6-bit (convertisseur numérique/analogique).
Pour Teo, les signaux de commandes du PIA ne sont pas reliés à l'IRQ du MC6809; la gestion de la souris est assurée par une routine d'émulation haut-niveau.
Adresses et fonctions des registres internes
| Adresse | Registre | Fonction |
| E7CC | DDRA PDRA | Registre de direction de données du port A
Registre de données du port A |
| E7CD | DDRB PDRB | Registre de direction de données du port B
Registre de données du port B |
| E7CE | CRA | Registre de commande du port A |
| E7CF | CRB | Registre de commande du port B |
PDRA
- bit 0-3 (E): direction de la manette 0 (B,H,G,D - 1 au repos)
- bit 4-7 (E): direction de la manette 1 (B,H,G,D - 1 au repos)
PDRB
- bit 0-5 (S): convertisseur sonore numérique -> analogique 6-bit
- bit 0 (E): commun bufferisé pour la manette 0 (1 au repos)
- bit 1 (E): commun bufferisé pour la manette 1 (1 au repos)
- bit 2 (E): bouton B de la manette 0 (1 au repos)
- bit 3 (E): bouton B de la manette 1 (1 au repos)
- bit 6 (E): bouton A de la manette 0 (1 au repos)
- bit 7 (E): bouton A de la manette 1 (1 au repos)
CRA
- bit 2 (S): sélection du registre (0 DDRA/ 1 PDRA)
- bit 5 (S): direction CA2 (0 entrée/ 1 sortie)
- bit 6 (E): CA2 - bouton A de la manette 0
- bit 7 (E): CA1 - bouton B de la manette 0
CRB
- bit 2 (S): sélection du registre (0 DDRB/ 1 PDRB)
- bit 5 (S): direction CB2 (0 entrée/ 1 sortie)
- bit 6 (E): CB2 - bouton A de la manette 1
- bit 7 (E): CB1 - bouton B de la manette 1
4. Le circuit Gate Array du lecteur de disquettes
Description fonctionnelle
Il assure la communication avec le contrôleur de disquettes intégré qui peut gérer jusqu'à deux lecteurs.
Il n'est pas émulé sous Teo (un embryon d'émulation des protections disquettes existe néanmoins) et toute la gestion des disquettes est assurée par des routines haut-niveau utilisant le format SAP.
Adresses et fonctions des registres internes
| Adresse | Registre | Fonction |
| E7D0 | CMD0 STAT0 | Commande (écriture seule) Etat (lecture seule) |
| E7D1 | CMD1 STAT1 | Commande (écriture seule) Etat (lecture seule) |
| E7D2 | CMD2 | Commande (écriture seule) |
| E7D3 | WDATA RDATA | Données en écriture
Données en lecture |
| E7D4 | WCLK | Horloge en écriture |
| E7D5 | WSECT | Secteur en écriture |
| E7D6 | WTRCK | Piste en écriture |
| E7D7 | WCELL | Taille de la cellule en écriture |
5. Le circuit Gate Array mode page
Description fonctionnelle
Il est le deuxième composant le plus important de la machine après le microprocesseur. Il assure la gestion et le rafraîchissement de la mémoire vive (en "mode page"), génère l'affichage vidéo vers le moniteur, dont il définit le mode graphique et les couleurs de palette et enfin traite les signaux de fonctionnement du crayon optique (fonction non émulée par Teo, remplacée par une routine haut-niveau de gestion du crayon optique).
Adresses et fonctions des registres internes
| Adresse | Registre | Fonction |
| E7DA | P_DATA | Données de la palette |
| E7DB | P_ADDR | Adresse de la palette |
| E7DC | LGAMOD | Mode d'affichage |
| E7DD | Système 2 | Commutation espace VRAM Couleur du pourtour de l'écran |
| E7E4 | Commutation (écr.) | Sélection registres en lecture |
| E7E5 | RAM données (écr.) | Commutation espace données
|
| E7E6 | Espace cartouche (écr.) | Commutation espace cartouche |
| E7E7 | Système 1 (écr.) Crayon opt. 4 (lect.) | Gestion RAM Localisation du spot écran |
LGAMOD
- 00 - Mode 40 colonnes 16 couleurs
- 21 - Mode bitmap 4 couleurs
- 24 - Mode commutation page 1
- 25 - Mode commutation page 2
- 26 - Mode superposition 2 pages
- 2A - Mode 80 colonnes 2 couleurs
- 3F - Mode superposition 4 pages
- 41 - Mode bitmap 4 couleurs non documenté
- 7B - Mode bitmap 16 couleurs
Système 1
- bit 4: gestion RAM espace données A000-DFFF (0 mode émulation PIA/ 1 mode registre "RAM données")
Système 2
- bit 0-3: couleur du pourtour de l'écran
- bit 6-7: sélection de la banque RAM (0-3) à afficher sur l'écran
RAM données (accessible en écriture si le bit 4 de Système 1 est à 1)
- bit 0-4: sélection de la banque RAM (0-31) de l'espace données A000-DFFF
- bit 5-7: 0
Cartouche
- bit 0-4: sélection de la banque RAM (0-31) de l'espace cartouche 0000-3FFF (si bit 5 à 1)
- bit 5: recouvrement de l'espace cartouche 0000-3FFF par de la RAM (0 non/ 1 oui)
- bit 6: autorisation d'écriture dans la RAM de l'espace cartouche 0000-3FFF (0 non/ 1 oui) (si bit 5 à 1)
- bit 7: 0
Commutation
- bit 0: sélection des registres en lecture (0 traitement/ 1 crayon optique)
Crayon optique 4
- bit 0: sélection des registres en lecture (0 traitement/ 1 crayon optique)
- bit 2-4: 0
- bit 5: situation fenêtre-cadre en ligne INILN (0 spot dans le cadre/ 1 spot dans la fenêtre horiz.)
- bit 7: situation fenêtre-cadre en trame INITN (0 spot dans le cadre/ 1 spot dans la fenêtre vert.)
Copyright 1999 Eric Botcazou
Last modified: Thursday, February 13, 2001