Index of /~devulder/priv/TOx

      Name                    Last modified       Size  Description

[DIR] Parent Directory 03-Mar-1999 19:32 - [IMG] TEO_sur_amiga.gif 21-Aug-1998 19:21 11k [   ] teo0_6.lha 28-Aug-1998 14:29 72k [IMG] teo_sous_uae_sous_kd..> 21-Aug-1998 19:25 65k

                MANUEL TECHNIQUE DES TO8, TO9 et TO9+
                Jean-Claude Mariaccia et Olivier Savin

                        Editions CEDIC/NATHAN

                               SOMMAIRE

Avant propos

Premiere partie: Presentation des produits

Caracterisitiques generales du TO9
Carte memoire du TO9
Repertoire des differents registres
Caracterisitque generales du TO8
Carte memoire du TO8
Caracterisitque generales du TO9+
Care memoire du TO9+
Repertoire des differnts registres concernant les unites centrales
TO9, TO9+

Deuxiemme partie: Analyse materielle du TO9

1 Analyse generale
Conception generale

2 Le 6809E dans le TO9
Principe fondamental
Interconnexion du 6809E et de ses bus

3 Systeme de memorisation
Les ROMS
        Commutation des slots
        Commutation des banques
        Fonctionnements de l'ensemble
        Routine de commutation
Les RAMS
        Fonctionnement d'une 4416
        Principe fondamental
        Forme de l'adressage
        Organisation memoire vive du TO9
        Selections
        Lecture-ecriture des RAMS
        Routine de commutation de banques

4 La gestion du systeme
Les decodages d'adresse
La generation des fonctions
        Le gate array systeme
        Description fonctionnelle

5 Le systeme de visualisation du TO9
Generalites
        Construction globale de l'ecran
        Construction de la fenetre active
        Configuration de base
Gate array d'affichage et modes d'affichage
        Role du circuit I-27
        Desciption du circuit
        Les differents modes d'affichage
Circuit de palette
        Description fonctionnelle de l'IGV
        Programmation de la palette
        Exemple de routine simple
Circuit d'incrustation

6 Les interfaces paralleles
Utilisation du 6846 dans le TO9
        Desciption fonctionnelle
        Adresse des registres internes
Utilisation du 6821 dans le TO9
        Desciption fonctionnelle
        Adresse des registres internes

7 La gestion du clavier et des peripheriques
Utilisation du 6850 dans le TO9
        Description
Le clavier
        Presentation
        Signaux echanges avec l'unite centrale

8 Gestion du crayon optique
Fonctionnement du crayon optique
        Fonctionnement de l'interrupteur
        Fonctionnement du phototransistor

9 L'exploitation du lecteur-enregistrer de disquette
Description
Fonctionnement general

Troisieme partie: Analyse materielle du TO8

1 Analyse generale
Conception generale - Description

2 Le 6809E dans le TO8

3 Gestion de la memoire morte
Descriptiondes logiciels
Commutation des logiciels
        Selection d'une page du moniteur
        Selection entre logiciels residents et cartouche
        Selection des quatre banques de logiciel internes
Synthese de fonctionnement

4 Les memoire vives
Fonctionnement d'une 41256
Organisation generale
Selection et correspondance
Ecriture et lecture des RAMS

5 Le gate array mode page
Definition du mode page
Gestion de la memoire vive
Structure du circuit
Traitement des signaux multiplexes
Les regsitres de traitement
        Descritption et programmation des registres accessibles en
ecriture
        Description des registres accessibles en lecture pour D0=0
        Description des registres accessibles en lecture pour D0=1

6 Le gate array mode page dans le TO8
Organisation du registre de traitement "systeme 1"
Diagramme des signaux multiplexes
Association entre adressage physique et adressage logique
        Espace "cartouche"
        Espace "ecran"
        Espace "systeme"
        Espace "donnees"
Gestion de l'affichage
Gestion des couleurs du cadre
Les decodages d'adresses
        Selection de l'espace moniteur
        Selection de l'espace cartouche
        Selection de la zone des peripheriques externes
        Selection du controleur de drive
        Tableau recapitulatif
Gestion du crayon optique

7 Chaine de visualisation

8 Les interfaces
Le 6846
        Partie ROM
        Partie PIA
        Partie TIMER
        Adresses des registres internes
Le 6821 systeme
Le 6821 Musique etjeux
        Description des broches
        Adresses des registres internes
Le 6804
        Interfacage du clavier
        Fonctionnement

9 Le controleur d'unites de disquette
Branchement du THMFC1
Description et programmation des registres
Specifiaction d'unsecteur

Quatrieme partie: Analyse materielle du TO9+

1 Conception generale - Description
2 Extension integree

Cinquieme partie: Le moniteur

1 Generalites

2 Gestion alphanumerique de l'ecran
Generateurs de caracteres alphanumeriques
        Alphabet standard G0
        Alphabet G2
        Caracteres utilisateurs
Affichage des caracteres alphanumeriques
Positionnement des caracteres
        Programmation du curseu
        Determination de la fenetre de travail
        Retour du curseur coin gauche
        Descente d'une ligne
        Remontee d'une ligne
        Retour au debut de ligne
Effacements divers
        Effacement de la fenetre
        Extincion et allumage du curseur
        Effacement d'une ligne
Affichage sparticuliers
        Caracteres accentues, alphabet G2
        Caratere TELETEL
Sequences d'echapement
        Programmation des couleurs
        Programmation des caratere
        Traitements divers
Affichage alphanumerique par la routine PLOT

3 Gestion graphique de l'ecran
Memorisation en RAM forme et couleur
        Commutation couleur
        Commutation forme
Allumage ou extinction d'un point graphique
Trace d'un segment de droite
        Dessiner avec les caracteres

4 Lecture de l'ecran
Lecture d'un point graphique
Lecture d'un caractere
        Caractere normal
        Minuscule accentuee ou c cedille
        Caractere de l'alphabet G2

5 Gestion du clavier
Lecture rapide du clavier
Decodage du clavier
Programmation du clavier
Peripherique du clavier
        Test des boutons du peripherique
        Lecture du peripherique

6 Gestion du light pen
Test du switch light pen
Lecture de la zone pointee

7 Gestion des manettes de jeux

8 Gestion de l'interface de communication

9 Gestion du lecteur-enregistreur de cassettes

10 Controleur de disquettes
Gestion physique
Format BASIC MICROSOFT
        Table d'allocation des fichiers
        Le catalogue

11 Programmation de la palette
Ecriture-Lecture d'un registre de couleurs
Programmation complete de la palette
Correspondance mode d'affichage-registre de couleurs
Fichier PALETTE.CFG

12 Generation de sons
Creation d'un bip
Creation musicale

13 Commutation des memoires ROM

14 Acces a l'extra moniteur

15 Gestion des interruption

16 Initialisation

17 Informations complementaires
Points d'entree standard du moniteur
Registre du moniteur (page 0)

Sixieme partie: L'extramoniteur

1 generalites
Principe de base
initialisation de l'extramon

2 Le graphique
Generalites
La fenetre de travail
Choix du type de trace
Trace d'un point
Trace de droite
Motif de remplissage
Trace de rectangles
Trace d'ellipse
Remplissage d'une zone
Le micro-interpreteur graphique MIG
Codage et decodage d'images

3 Les tortues
Generalites
Initialisations
La visibilite
Le deplacement
La direction
La rotation
La taille
La trace
La vitesse
Le positionnement
La compilation d'une forme
Exemple d'une tortue en mouvement

4 Les mathematiques
Generalites
Description des accumultateurs
Echanges memoire et accumultateurs
Liste des fonctions mathematiques

5 Le DOS
Initialisation du DOS
Cache disque
Ouverture d'un fichier
Lecture d'un caractere
Ecriture d'un caractere
L'ecces direct
Fermeture d'un fichier
Lecture ducatalogue
Lecture du nom d'une disquette
Backup d'une diskette
        Lecteur source different du lecteur destination
        Lecteur source egal lecteur destination
        Fiche de routine
Copie d'un fichier
Destruction d'un fichier
Changement de nom d'un fichier
Initialisation d'une diskette
Place libre sur une disquette
Taille d'un fichier
Numero d'enregistre courant
Exemple d'utilisation

6 L'editeur

7 L'interpreteur musical

8 Les messages d'erreurs en anglais

9 Le DOS ICONIQUE
Generalites
Selection d'un fichier
Saisie d'un nom de fichier
Selection du lecteur courant
Appel au DOS ICONIQUE

10 Informations complementaires
Extramon sous BASIC 512
Les numeros de fonctions ou routine d'extramon
Les equates d'extramon

-------------------------------------------------------------------------------

PREMIERE PARTIE - Presentation des produits


-------------------------------------------------------------------------------

DEUXIEME PARTIE - Analyse materielle du TO9

1. Analyse generale

Conception generale

Le micro ordinateur TO9 est concu autour d'un microprocesseur 6809E, 8
bits recevant deux signaux d'horloge en quadratures (E et Q) a 1Mhz.
Le bus d'adresses 16 bits bufferise par des 74LS224 permet l'acces aux
differentes memoire et registres. Le bus de donnees 8bits se repartit
en trois groupes:
        - Un bus de donnees principal 8bits bufferise et selecte par
          un 74LS245, permettant les principaux echanges.
        - Deux bus de donnees A et B de 8 bits, bufferises et selectes
          chacun par deux auters 74LS245 et permettant les transferts
          d'information avec les deux groupes de RAMS, partie A,
          partie B. 

Les lignes de controles sont constituees par les commandes de
lecture-ecriture (R/WN) des memoire svives et de divers registres,
ainsi que par les demandes d'interruptions concernant le clignotement
du curseur, le fonctionnement du clavier et du crayon optique 5IRQN,
FIRQN).

Un circuit de RESET en relation avec le 6809E et differents registres
permet al reinitialisation de la machine.

Les 6Ko de logiciel de base, ou moniteur systeme, sont loges dans une
EPROM 8Ko 2764. Une partie des 2Ko restant sert de moniteur au lecteur
de disquettes.

Les 128Ko de logiciels d'application residents sont loges dans quatres
EPROMS 32Ko 27256, repartis en tris slots (0 a 2) de deux ou quatre
banques.

La commutation des banques s'effectue en *programmation* par ecriture
d'adresses dans une LATCH 74 LS 173. Les slots sont eux-memes
selectionnes par deux bits de PIA en provenances du 6846.

La cartouche de logiciels d'application externe represente, en
relation avec les bus de donnees, d'adresses et les lignes de
controle, le slot numero 3.

LEs 128Ko de memoire vive repartis en huit groupes de deux 4416
(reconstitution des datas 8bits) definissent la memoire et ecran et
utilisateur partie A, la memoire ecran et utilisateur partie B, ainsi
que les six banques de RAM utilisateur. Chaque banque est commutee
d'une facon *logicelle*, a partir de trois bits de PIA en provenance
du 6821. L'extension memoire est composee de quatres autres banques
commutees par deux bits du PIA 6846 en association avec le 6821. Les
4416 etant des memoires dynamqiues, leur adressage ne provient pas en
directe du 6809E mais passe par un bus procurant un adressage
multiplexe. Ce bus  est bufferise par un HCT244.

En dehors du microprocesseur, l'unite centrale est commandee par un
gate arrau principal permettant, via le bus d'adresses multiplexees,
le rafraichissement des memoires et de l'ecran pendant le phase no
active du 6809E (technique de DMA). Attaque par une horloge mere de
16Mhz, le circuit delivre les differents signaux d'horloge et de
commande du televiseur. Il assure aussi la gestion du crayon optique
(LP).

Un deuxiemme gate array concoit les differents decodages d'adresses
inherents a la machine. Le troisieme gate array determine, en relation
avec le codage logiciel des RAMS ecran partie A et partie B, les huit
modes d'affichages. Ce circuit est programmable par le bus de donnees
principal. Il recoit les 16bits d'information des memoires vives ecran
par les bus de donnees A et B.

Le module palette, programmable par le 6809E en relation avec le bus
de donnees 6809, permet, sous la dependance du mode d'affichage
considere, un choix maximum de seize teintes parmi 4096, pour la
fenetre ecran et pour le tour ou cadre. Il delivre trois informations
B, V, R reprises et adaptees par les circuits d'interfacage video
comprenant, entre autres, le dispositif d'incrustation. Ces circuits,
recevant des signaux systeme, fournissent les tensions necessaires,
avec des impedances respectant les normes SCART, pour la prise
peritel. Une video composite est reconstituee en sortie.

LE 6846 assure par son timer le clignotement du curseur (demande IRQN)
ou l'envoi code des informations numeriques a enregistrer sur le LEP
(magnetophone). Inversement, son PIA recupere les informations de
lecture decodees a charger. Une ligne du PIA genere le son qui, via un
melangeur recevant le sont du LEP, attaque la prise peritel et une
fiche CINCH. Une autre ligne du PIA prend en compte l'information
"tactile" du crayon optique LP (switch). Le restant du PIA controle
certaines commutations de banques RAM, ainsi que des commutation de
slots.

Le 6821,en dehors des commutation de banques RAM, a pour mission de
prendre en compte les interruptions FIRQN sollicites par le
phototransistor du crayon optique et de commander, via un connecteur
specialise, un imprimante en mode parallele CENTRONICS. De meme, il
assure les demandes d'incrustation et la telecommande du moteur LEP.

A part le traitement du signal "BUSY" imprimante, le 6850 est
entierement consacre a la gestion du clavier. Travaillant en mode
serie asynchrone avec le monochip (type 6805) de ce dernier, il
effectue des liaisons au rythme de 9600 bauds.

Le lecteur de disquettes (drive) au standard 3.5 pouces simple face,
simple ou double densite, est commande par un module de controle (type
WD 2793 ou WD 1770) programmable par le 6809. Le choix de la densite
se fait par uen operation de "latch" en ecriture dans un circuit
annexe 74 LS 173.

Une alimentation a decoupage du type 'fly back" a regulation
opto-electronique fabrique les trois tensions de +5V; +12V, -5V,
necessaires a la configuration du micro-ordinateur.

-------------------------------------------------------------------------------

2. Le 6809E dans le TO9

Principe de fonctionnement

Depuis l'apparition du tout premier TO7, les unites centrales des
micro-ordinateurs THOMSON ont un fonctionnement typique base sur le
meme principe fondamental. Ce principe consiste a prendre en comtpe
cycliquement la phase active et non active du 6809. (sam: ca c'est le
meme truc que dans l'amiga 500 ou les dma sont synchronises suivant les
differentes phases du 68000 (1cycle sur 4)).

Ainsi lorsque le signal d'horloge machine E=1, le microprocesseur est
dans sa phase active de fonctionnement; ce dernier adresse normalement
la carte memoire du systeme et realise des echanges sur les bus de
donnees en relation avec l'execution de l'instruction en cours.

Lorsque E=0, le microprocesseur est dans sa phase inactive de
fonctionnement; un dispositif d'adressage annexe (automate) prend
alors le relai afin d'assurer, via l'interface video, le
rafraichissement de la memoire ecran et,simultanement par la meme
occasion, le rafraichissement necessaire a la technologie des memoires
vives utilisees (RAMS dynamiques). Le bus de donnees est deconnecte du
bus de donees RAM par l'intermedaiire d'un dispositif "3 etats".

La commutation des adresses 6809 et des adresses du dispositif annexe
s'effectue a partir d'un multiplexeur. Le signal E, alternativement a
1 et 0 toutes les microsecondes, commandes un adressage CPU et un
rafraissement d'une diree conjointe de 500 nanosecondes (cf. figure
2).

Interconnection du 6809E et de ses bus

La figure 3 montre quelles sont les entrees-sorties utilisees sur le
microprocesseur.

La frequence d'horloge E et Q en provenance du gate array principal et
de  1MHz. Le circuit de RESET utilise une constante de temps de
0.00001 x 100000 = 1 seconde. Afin d'adapter la sortance, le bus
d'adresses est bufferise par deux circuits 74 LS 244.

Le bus de donnees se repartit en trois bus dont chacun est bufferise
par un 74 LS 245 commande en bidirectionnel par le signal de lecture
ecriture R/WN.

Afin d'eviter tout conflit lorsque le 6809 est en lecture, un seul des
74LS245 est actif a la fois, les deux autres etant en etat "haute
impedance". Cette action est devolue aux commandes de validation Vp,
Vb, Va. Exception faire pour Vp, elles generent des signaux issus de
circuits combinants les decodages d'adresses correspondants avec E et
R/WN. Il en resulte pour Vb et Va des actions de validation
particulieres, pendant la phase non active du 6809, ou lorsque le
microprocesseur est en ecriture.

Ainsi lorsque E=0, le bus de donnees A et le bus de donnees B ne sont
plus en relation avec le bus de donnees du microprocesseur, les
informations en memoire vive eytant transferees automatiquement vers
le systeme d'interfacage video.

De meme, pour E=1 lorsque le 6809E est en ecriture, les bus A et B
sont connectes au bus microprocesseur, ce qui n'apporte pas de conflit
puisque les buffers sont en entree mais permet aux donnees d'etre
presentes en entree des RAMS 4416 bien avant que celles-ci soient
elles-memes validees (considerations de timing).

La commande R/WN du 6809E est envoyee a tous les registres
susceptibles de travailler en lecture-ecriture dans l'unite centrale.
Les circuits de RMA, quant a eux sont relies a la commande dombinee
RAMW telle que:
               ___   _
        RAMW = R/W + E
                       ___
Avec pour E=1   RAMW = R/W
          E=0   RAMW = 1.

Cela signifie que pour la phase active du 6809E, les 4416 sont
commandees directement en lecture-ecriture par le microprocesseur,
alors que pourla phase inactive, ces memoires sont en lecture
automatique (REFRESH).

Les deux entrees d'interruption utilisees sont IRQN et FIRQN. La
premiere ser a gerer le clignotement du curseur (sortiedu TIMER 6846)
et le fonctionnement du clavier (demande provenant du 6850).
L'aiguillage de l'interruption est realise par *logiciel*. La deuxieme
assure la gestion du crayon optique ou d'un eventuel "code barre"
(demande provenant du 6821).

Lorsqu'apres la mise sous tension ou apres une action manuelle sur la
commande RESET, le TO9 a deroule son menu principal, le 6809E ayant
recu par logiciel l'instruction SYNC, celui-ci cesse toute activite et
se place en attente de demande d'interruption clavier. (sam: c'est
marrant ca, pourquoi ne fait il pas simplement une attente active ?
les ingenieurs thomson ont sans doute voulus jouer un peu.. mais
comment emuler l'instruction SYNC correctement?). Tous ses bus
sont en haute impedance. Les buffers I21 et I22 sont par principe,
deconnectes; seuls travaillent les bus RAMA et RAMB et le bus
d'adresses multiplexees, en relation avec le gate array principal,
pour le rafraichissement dezs memoires 4416 et de l'ecran.

-------------------------------------------------------------------------------

3. Systeme de memorisation

Les ROMS

La figure 4 decrit l'organisation generale du fonctionnement:

Le TO9 comprend quatre EPROMS 27256 (32Ko de logiciel integre) et une
EPROM 2764 (8Ko de moniteur). Il peut, de plus, supporter une
cartouche MEMO 7. L'espace memoire implicitement reserve aux logiciels
etant de 16Ko, afin de pouvoir y loger les 4 x 32Ko + MEMO 7, le
systeme est organise en slots et banques commutable de 16Ko.

Chaque EPROM appartient a un slot defini par la commande de CHIP
SELECT: CSN. On peut voir aussi que I-56 et I-39 (BASIC 1 + DIVERS et
BASIC 128 + EXTREAMON) appartiennent au meme slot 0. I-40 presente le
slot 1; I-38 represente le slot 2. Le slot 1 ou le slot 2 contiennent
indifferement le progiciel PARAGRAPHE ou FICHES ET DOSSIERS. Enfin, la
cartouche exterieur appartient au slot 3.

/Commutation des slots/

Elle se definit par programmation, selon l'etat des bits P5 et P4 en
provenance du port 6846. De par le decodage d'adresses I-47, les
commandes de CHIP SELECT sont alors orientees en consequence vers les
EPROMS. Le tableau suivant met en evidence les differentes
combinaisons possibles:

        Adressage       P5              P4              Slot Actif
        0000-3FFF       0               0               0
          -   -         0               1               1
          -   -         1               0               2
          -   -         1               1               3
        4000-FFFF       X               X               aucun

(sam: ici ca va c'est facile a emuler)

/Commutation des banques 16Ko/

Deux commandes interviennent au niveau des EPROMS: le bit A14
definissant le partage de 16Ko partie basse ou 16Ko partie haute;
l'entree "OUTPUT ENABLE OEN" selectionnant le circuit en sortie.

De par le montage, ca commutation est alors definie en memorisant les
deux bits d'adresse A1 et A0 via le registre 74 LS 173 I-35. Les
differents cas de figure realisable sont presentes par le sableau
suivant:
        Adressage       A1 latche       A0 latche       banque active
        0000-3FFF       0               0               0
          -   -         0               1               1
          -   -         1               0               2
          -   -         1               1               3
        4000-FFFF       X               X               aucune
        
A1 et A0 sont latche par programmation. Ainsi il suffit de demander
une ecriture du 6809E dans la zone d'adressage 0000-1FFF. Cette
action implique:

        R/WN=0  CSN=0   A13=0

et conformement au cablage, a pour consequence de valider, en entree,
I-35 qui enregistre alors au coup d'horloge E, les valeurs de A1 et A0
presentes a cet instant  (sam: oula galere a emuler ca.. pourtant cela
me semble indispensable, en gros faut intercepter les ecritures dans
0000-1FFF sous certaines conditions). Conjointement, les sorties
latchees sont deconnectees par OEN, ce qui represente un etat haut
(resistances de PULL UP), evitant un conflit au niveau des EPROMS.

A la mise sous tension, les bascules de I-35 sont reinitialisees a 0
(RESET). On notera que la zone d'adressage 2000 a 3FFF est reservee a
un autre systeme utilisant un registre exterieur (sam: je pense qu'ils
parlent des cartouches externes la..).

/Fonctionnement d'ensemble: espace memoire 0000-1FFF/

        Bits de PIA     Adresses latchees   Desination
        P5      P4      A1      A0          slot banque logiciel
        --------------------------------------------------------
        0       0       0       0           0    0      BASIC 128
        0       0       0       1           0    1      extramon
        0       0       1       0           0    2      BASIC 1
        0       0       1       1           0    3      DOS Iconique
        0       1       0       X           1    X      Paragraphe ou
        1       0       0       X           2    X      fiches & dossiers
        1       1       0       0           3    X      cartouche

On peut voir que le systeme est prevu pour supporter quatres slots de
quatre banques chacune.

/Routine de commutation/

Le moniteur comporte au point d'entree standard EC03 une routine
COMSLOT permettant d'appeler une routine d'une banque quelconque d'un
slot quelconque (voir page 222). Les commutations effectuees s'operent
alors a partir d'un mode bianire designe par l'utilisateur selon la
forme:
                0 0 P5 P4 0 0 A1 A0
                    \___/     \___/
             bits du 6846       bits du bus d'adresses
        commutation des slots   commutation des banques

(sam: je comprends qu'il faille utiliser le moniteur pour la
commutation de banques, car autrement c'est le bordel; cependant je 
me demande si les routines de Paragraphe utilisent cette routine du
moniteur ou programment directement la commutation en accedant au
hardware..).

Les RAMS

Technologiquement, la memoire vive du TO9 est constituee par 16
bitiers integres du type 4416. Ces circuits ont une capacite de 16Ko x
4bits. Sachant que le systeme travaille en donnees de 8 bits, deux
4416 sont associes pour chaque plan memoire de 16Ko. On obtient ainsi
huit couples de RAM, avec, pour chaque couple, un boitier specialise
pour les quatres bits de poids faiblet un boitier specialise pour les
quatre bits de poids fort du bus de donnees.

/Fonctionnement d'une 4416/

Les 4416 sont des memoires qui permettent de stocker, sous forme de
matrices de 2^8 = 256 lignes et de 2^6 = 64 colonnes: 256 x 64 = 16384
groupes de 4 bits. L'adressage d'une telle matrice necessite donc 14
bits. En fait, seuls 8 bits d'adresses (A0 a A1) (sam: heu ? c'est pas
clair leur truc; j'aurais dis A7 a A0 si c'est 8 bits) permettent la
gestion de la memoire. Ils sont multiplexes et diriges,soit vers le
bloc d'adresses lignes, quand le signal de validation ligne RASN passe
a zero, soitvers le bloc d'adresse colonnes, quand le signal de
validation colonne CASN passe a zero.

Les 4416 sont des memoires du type MOS dynamique necessitant un
rafraichissement (REFRESH) de cycle <= 2ms. En groupe de 4 bits, ce
rafraichissement se fait par adressage successif des 256 lignes. A
chaque ligne adressee, si RASN est actif (etat 0), les 64 cellules a
transitors, placees aux intersections de cette ligne avec les 64
colonnes, sont simultanement rafraichies. Le tableau suivant precise
la forme de l'adressage:

                a0                      X
                a1                      a8
                a2                      a9
                a3                      a10
                a4                      a11
                a5                      a12
                a6                      a13
                a7                      X
        Adressage lignes        Adressage colonnes valide
        valide par RASN et      par CASN
        rafraichissement
        d'une ligne

Les 4416, enfin, ne sont pas selectees (bus de donnees deconnecte)
lorsque le signal de CASN n'est pas actif. Ce dernier remplace
avantageusement une commande CHIP SELECT (action conjointe de GN).

/Principe fondamental/

La figure 5 schematise l'organisation generale du systeme. On
ydistingue les huit plans memoire, partie A, partie B et banques de 0
a 5. L'adressage des RAMS ne provient pas en direct du 6809 mais passe
a travers le gate array (circuit I-25) par un double multiplexage.

Le premier jeux de multiplexeurs permet de commuter, au rythme du
signal d'horloge E, tantot le bus d'adresses du CPU (phase active du
6809E, E=1), tantot un ensemble de compteurs integres (phase non
active du 6809E, E=0). Ce processus est une technique de DMA
permettant a chaque cycle d'horloge le rafraichissement d'une ligne
RAM dynamique, a savoir le rafraichissement toutal des boitiers
lorsque les compteurs ont effectues un cycle de 256 pas. Il permet,
d'une tout autre maniere, "le rafraichissement d'ecran" par
l'intermediaire d'une partie des RAMA et RAMB (cf. gestion d'ecran).

Le deuxiemme jeux de multiplexeur assure la commutation poids faible
et poids fort de l'adressage ligne et colonnesconformement aux
specificationdes 4416; ce que confirme le tableau suivant:
        
        /Forme de l'adressage complet (double multiplexage)/
        A0      X       T0      X
        A1      A8      T1      T8
        A2      A9      T2      T9
        A3      A10     T3      T10
        A4      A11     T4      T11
        A5      A12     T5      T12
        A6      A13     T6      0
        A7      X       T7      X
        \_________/     \_________/
        adressage        adressage
        6809 E=1         compteur
        lecture          E=0 refresh 
        ecriture du      ecran
        CPU

On remarquera que le systeme de comptage est limite au bit de poids
12. Cela est justifie par le fait que les 2 x 8 Ko de RAM ecran sont
repartis dans la moitie inferieure des plans memoire A et B (cf.
organisation memoire).

/Organisation memore vive du TO9/

Les hui coupes memoire organises *physiquement* sont structures
*logiquement* en dix parties. Ainsi:

        La RAMA comprend:
        - de 4000 a 5FFF, 8Ko de memoire ecran appelee RAMA ou RAM
          point (denomination TO7, cf. modes d'affichage)
        - de 6000 a 7FFF; 8Ko de memoire datas ou utilisateur dont de
          6000 a 60FF les registres du moniteur et de 6100 a 62FF une
          partie reservee au systeme, a savoir: les diverses pages 0
          de BASIC ou autres qui representent des applications.

        La RAMB comprend:
        - de 4000 a 5FFF, 8Ko de memoire ecran appelee RAMB ou RAM
          couleur (denomination TO7),
        - de 8000 a 9FFF, 8Ko de memoire dats ou utilisateurs.

Les banques 0, 1, 2, 3, 4 et 5 constituent chacune 16Ko de memoire
datas ou utilisateurdans la zone d'adressage A000-DFFF.

/Selections/

Les selections se font a partir de l'entree dynamique CAS, en relation
avec les signaux CASAN, CASBN et CASEXTN depedant de decodage
d'adresses (cf. fonctionnement du gate array principal) et des bits de
PIA dont P0 (bit de forme) du 6846 et PB3, PB4, PB5, PB6, PB7 du 6821
(techique de bank switching). L'extension de 4 x 16Ko utilisee en
disque virtuel (commande uniquement apr le controleur du lecteur),
utilise les bits P2 et P6 du 6846 ainsi que les bits PB5, PB4, PB3 du
6821.

Les tableaux suivants mettent en evidence les commutations requises
pour lesdifferents types de fonctionnement selon la valeur de E (phase
active ou non active):

Commutation des parties RAM A et B pour E=1 phase active du 6809E:

Zone d'adressage        P0      CASAN   CASBN   CASEXTN   Selection
4000-5FFF               0       inactif actif   inactif   couleur
4000-5FFF               1       actif   inactif inactif   points
6000-7FFF               X       actif   inactif inactif   Adatas
8000-9FFF               X       inactif actif   inactif   Bdatas
A000-DFFF               X       inactif inactif actif     banques

Commutation des parties RAM A et B pour E=0 phase non active du 6809E:

Zone d'adressage        P0      CASAN   CASBN   CASEXTN   Selection
4000-5FFF               X       actif   actif   inactif   coul. & point

Pour ce type de fonctionnement, l'adressage est implicite. On notera
la double prise en compte sur 16bits des datas, via le bus de donnees
Aet le bus de donnees B, par le gate d'affichage I-27 (role de DATA
VALID).

Commutation des banques

CASEXTN P6      P2      PB7     PB6     PB5     PB4     PB3  Selection

inactif X       X       X       X       X       X       X    aucune
actif   X       X       1       1       1       1       0    banque 0
actif   X       X       1       1       1       0       1    banque 1
actif   X       X       0       0       0       1       1    banque 2
actif   X       X       1       0       0       1       1    banque 3
actif   X       X       0       1       0       1       1    banque 4
actif   X       X       1       1       0       1       1    banque 5
actif   0       0       1       1       1       1       1    RAM disk1
actif   1       0       1       1       1       1       1    RAM disk2
actif   0       1       1       1       1       1       1    RAM disk3
actif   1       1       1       1       1       1       1    RAM disk4

/Lecture-ecriture des RAMS/

Les 4416 sont en ecriture pour l'entree W a 0 et en lecture pour W a
1. Chaque entree W estreliee a la commande RAMW. Il en resulte une
lecture automatique des RAMS pendant la phase non active du CPU (cf.
le 6809E et ses bus). Ce procede est bien naturel puisqu'on sait, il
faut realiser a ce moment precis le rafraichissement d'ecran. Ainsi,
lorsque E=0 le gate array d'affichage I-27 va pouvoir lire
automatiquement et simultanement le contenu d'une adresse RAM point et
RAM couleur (role des bus A et B).

/Routine de commutation de banques/

L'extension memoire de 64Ko n'etant pas consideree, dans les
applications soft, comme de la memoire programme mais comme un disque
virtuel, le sous-programme suivant ne tient donc pas compte de cette
extension a laquelle on accede directement par le controleur de
disque.

Pour des raisons *imperatives* de protection de selectionsimultanee de
plusiquers banques RAM, le processus suivant a ete etabli:
        - Les 5 bits de donnees du PIA 6821 qui servent a la selection
          sont toujours a zero (dans le registre de sortie ORB).
        - Pour commuter une banque, on n'ecrira jammais dans ce
          registre, mais *on changera la direction des bits
          concernes*. Cela se produira par uen ecriture dans el
          registre de direction de donnees (DDRB), en sachant qu'un
          bit en entree genere, par technologie, un "1" et un bit en
          sortie genere un "0" en provenance de l'ORB (sam: donc si tu
          veux foutre la merde, il suffit d'ecrire dans l'ORB!).

Il est bon aussi de faire attention a certaines routines du moniteur
qui peuvent modifier temporairement le contenu du PIA et restaurer
tout a "0" a la fin.

        Sous-programme standard:
        Entree: registre A du 6809 = numero de banque 0 a 5.

        COMMUT  EQU     *
                PSHS    D,X,U
                LDU     #$E7C0  U pointe sur les PIA
                LDB     11,U    Lecture du registre CRB en E7CB
                ANDB    #$FB    Passage du PIA en mode direction
                STB     11,U    "       "       "       "
                LDX     #TAB    X pointe sur l'adresse de la table
                                des valeurs a mettre dans le PIA
                LDA     A,X     Lecture de la valeur de la table
                                enfonction du n° de banque
                STA     9,U     Modification des directions
                                ecriture dans le DDRB du PIA E7C9
                ORB     #4      Passage du PIA en mode donnees
                STB     11,U    (retour aux conditions de depart)
                PULS    D,X,U,PC        retour
        TAB     EQU     *
                FCB     $0F,$17,$E7,$67$A7,$27

Le tableau ci-apres precise l'action du contenu de TAB en relation avec
le contenu de A.

        (TAB)       resultante          configuration du PIA
(A)     pointe  valeur dans le DDRB     PB7 PB6 PB5 PB4 PB3    Sel.bank

0       0F      0 0 0 0 1 1 1 1         1   1   1   1   0      0
1       17      0 0 0 1 0 1 1 1         1   1   1   0   1      1
2       E7      1 1 1 0 0 1 1 1         0   0   0   1   1      2
3       67      0 1 1 0 0 1 1 1         1   0   0   1   1      3
4       A7      1 0 1 0 0 1 1 1         0   1   0   1   1      4
5       27      0 0 1 0 0 1 1 1         1   1   0   1   1      5

-------------------------------------------------------------------------------

4. La gestion du systeme

Les decodages d'adresses

Le decodage d'adresse du TO9 est effectue par un circuit integre
quarante broches specialise. C'est une gate array TAHC06 de chez TEXAS
regroupant un reseau cable de portes et de decodeurs TTL type 74LS156,
74LS138 et 74LS139.

Ce circuit a quinze entrees concernant le bus d'adresses de A1 a A15,
et les deux bits de PIA en provenance du 6846 pour la commutation des
EPROMS. Seize sorties sont distribuees pour effectuer les selections
suivantes:
        - de E7DE a E7DF, pour la validation du circuit ACIA 6850
          (gestion clavier),
        - de E7DC a E7DD, pour la validation du registre mode
          d'affichage du gate arrai I-27,
        - de E7DA a E7DB, pour valider les registres du circuit de
          palette I-28,
        - de E7D8, pour la validation du registre de commande double
          densite et choix des lecteurs I-50.
        - de E7D0 a E7D3, pour la validation des registres du controle
          de lecteur,
        - de E000 a E7AF et de E800 a FFFF, pour valider le moniteur,
        - de E7C0 a E7CF, pour la validation du 6846, du 6821 systeme
          et 6821 controleur de jeux externes,
        - de 4000 a 9FFF, pour deconnecter le buffer du bus de donnees
          principal, lorsque le 6809E travaille en RAMA ou en RAMB
          (commande VP du 74LS245),
        - de 4000 a DFFF, pour la validation des plans RAM, selon
          trois signaux:
                       ___
                CSAN = CSA      actif a "0" de 4000 a 7FFF
                       ___
                CSBN = CSB      actif a "0" de 8000 a 9FFF
                         _____
                CSEXTN = CSEXT  actif a "0" de A000 a DFFF
        - de 0000 a 3FFF, pour determiner l'espace alloue a la
          commutation des banques EPROMS (commande reliee au 74LS173
          I-35) et generer: 
                ___  ___  ___  ___
                CS0, CS1, CS2, CS3.
                                ___
Une sortie particuliere: CSEN = CSE active a "0" pour l'espace EXXX,
(soit de E000 a EFFF), est destine aux differentes extensions ou
controleurs de communication. Elle permet, entre autre, d'effectuer un
predecodage d'adresse dans le cas ou l'utilisateur desire se fabriquer
sa propre extension. Par un montage approprier, il devra alors
imperativement loger cette derniere dans l'espace memoire E7B0 a E7BF
ou E7E0 a E7E3.

La generation des fonctions

/Le gate array principal ou gate array systeme/

Le gate array principal, type EFGJ03 (circuit I-25) de chez EFCIS, est
un circuit a reseau prediffuse servant de generateur de fonctions. Il
a quatre roles fondamenteaux:
        - generer des signaux d'horloge et de comptage point,
        - generer des signaux d'interfacage video, en relation avec
          des compteurs lignes et trames,
        - gerer les memoires vives dynamiques 4416,
        - recuperer et stocker le contenu des compteurs points, lignes
          et trames pour le traitement du crayon optique.

/Description fonctionnelle/

* /signaux d'horloge et compteur point/
H16 est une entree d'horloge 16Mhz (horloge mere externe). Elle est
divisee, de proche en proche, par un compteur a quatre etages, creant
les frequences points: H4, H2 ainsi que E et Q, en quadrature, a la
frequence de 1Mhz pour le microprocesseur.

Un decodeur d'horloge fournit trois signaux tels que: RASN, CAS, a la
frequence de 2Mhz ainsi que DATA VALID a la frequence de 1Mhz.

L'entree SYCL1 permet de reinitialiser l'ensemble du systeme.

* /Compteur lignes et generation des signaux video/

Compteur de ligne: E, de frequence 1Mhz, pilote un compteur 6 bits
dont les sorties sont successivement, TL0, TL1, TL2, TL3, TL4, TL5. Le
cycle de comptage dure 64µs, duree normalisee d'une ligne de balayage
TV.

L'entree SYCL2 reinitialise le compteur.

Decodeur ligne: En relation avec les sorties du compteur, in genere
les signaux de synchro, de suppression et d'inhibition pour le
televiseur.

INIL est le signal d'inhibition de ligne permettant de definir la
fenetre de visualisation sur l'ecran pour une largeur correspondant a
un balayage dont la duree est 40µs.

SUPL est le signal de suppression ligne. Il est destine a mettre au
niveau du noir les signaux RVB, durant le retour du spto en ligne/

SYNL est le syngal de synchronisation ligne.

* /Compteur trame et generation des signaux video/

Compteur trame de 3 + 11 = 14 bits dont les trois premiers sont, en
realite, les trois premiers etages du compteur ligne. Les sorties sont
reperees TL0, TL1, TL2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
T13. L'horloge de commande est une combinaison logique E et INIL, dont
une inhibition de 24µs toutes les 64µs. Autrement dit, le compteur ne
fonctionne que pendant le balayage de la fenetre de visualisation. Ce
compteur est reinitialise par un signal interne a chaque trame TV. Il
peut etre reinitialise comme le compteur lignes par l'entree SYCL2.

Decodeur trame: En relation avec les sorties du compteur, il genere
les signaux de synchro, de suppression et inhibition de trame. En
standard SECAM, le signal de synchro est distribue toutes les 312
lignes,soit toutes les 612 x 64 =19968 µs (duree d'une trame environ
20ms).

INIT est le signal d'inhibition trame permettant de definir la fenetre
de visualisation sur l'ecran pour une hauteur dont la duree correspond
a un balayage de 200 lignes.

SUPT est le signal de suppression trame. Il est destine a mettre au
niveau du noir les sorties RVB pendant le retour trame.

SYNT est le signal de synchronisation trame.

* /Mixage des signaux lignes-trames/

Le gate array dispose de trois sorties de signaux lignes et trames
melanges tels que:
        - INILT signal d'inhibition ligne et trame:
                INILT = INIL + INIT
        - SYNLT signal de synchro ligne et trame:
                SYNLT = SYNL + SYNT
        - SUPLT signal de blanking:
                SUPLT = SUPL + SUPT

* /Gestion des memoires vives/

Le gate array comprend un double circuit de multiplexeurs recevant le
bus d'adresses CPU et le bus compteur ligne et trame. Le double
multiplexage est pilote par E et un signal interne C,derive du signal
CAS. Il permet de distribuer sur 9 bits une succession d'adresses
basses et hautes en provenance CPU ou compteur selon le
giagramme suivant:

        A0      A7              TL0     T7
        A1      A8              TL1     T8
        A2      A9              TL2     T9
        A3      A10             T3      T10
        A4      A11             T4      T11
        A5      A12             T5      T12
        A6      A13 + CSB       T6      0
        A7      A14             T7      0       
        A8      A15             0       0
        \_________/             \_______/
           E = 1                  E = 0

On notera la relation logique A13 + CSB dont le role est explique
ci-apres. Dans le TO9 le neuviemme bit n'est pas exploite.

Un circuit "aiguilleur de CAS" distribue, en relation avec la
combinaison logique de A13, CSAN, CSBN, CSEXTN, le bit FORME (P0) et la 
validation de E, les signaux CASAN, CASBN ainsi que CASEXTN selon le
tableau suivant:

E       A13     FORME   CSAN    CSBN    CSEXTN  CASAN   CASBN   CASEXTN
                (P0)
0       X       X       X       X       X       CASN    CASN    1
1       0       0       0       1       1       1       CASN    1
1       0       1       0       1       1       CASN    1       1
1       1       X       0       1       1       CASN    1       1
1       X       X       1       0       1       1       CASN    1
1       X       X       1       1       0       1       1       CASN

De par le decodage d'adresses, selon les trois champs d'adresses
suivants, nous savons par ailleurs que:

        De 4000-7FFF    CSAN = 0        CSBN = 1        CSEXTN = 1
        De 8000-9FFF    CSAN = 1        CSBN = 0        CSEXTN = 1
        De A000-DFFF    CSAN = 1        CSBN = 1        CSEXTN = 0

Ce qui permet de construiore le tableau general de la commutationdes
plans memoire pour E = 1 (cf. organisation memoire vive TO9, pages
42).
                                ____    ____    ______
Champ           A13     P0      CASA    CASB    CASEXT  A13+CSB Type
memoire                                                         ram

4000-5FFF       0       0       1       CASN    1       0       RAMB
                                                                partie basse
                                                                (ecran coul)
4000-5FFF       0       1       CASN    1       1       0       RAMA
                                                                partie basse
                                                                (ecran form)
6000-7FFF       1       X       CASN    1       1       1       RAMA
                                                                partie haute
                                                                (datas)
8000-9FFF       0       X       1       CASN    1       1       RAMB
                                                                partie haute
                                                                (datas)
A000-DFFF       X       X       1       1       CASN    X       banques

On met ainsi en evidence la selection des plans memoire A (ecran
forme) et B (ecran couleur) par le bit de forme P0; de meme, la
selection des plans memoires A (datas) et B (datas) par l'action de
A7+CSB envoye sur le busd'adresses multiplexe.

* /Traitement du crayon optique/

Une serie de /flip-flop/, denommee latch ou registre crayon optique,
situe aux adresses E7E4 E7E5 E7E6 E7E7, realise la prise en compte des
etats presents des compteurs, au moment d'une visee sur l'ecran par le
crayon optique. Des que l'utilisateur pointe le crayon sur la fenetre
de visualisation, une impulsion synchronisee sur le premier front
descendant de H16 est appliquee en commande d'horloge des
/flip-flops/. Ces derniers recoivent sur leur entree l'etat des
compteurs points, ligne et trame afin de les stocker.

Pour R/WN = 1, les informations memorisees dans les /flip-flops/ sont
multiplexees par les bits A0 et A1 du bus d'adresses et envoyees sur
le bus de datas D0 a D7. Quand le circuit n'est pas selectionne, ces
sorties sont normallement en tristate. Pour R/WN = 0, D0 peut passer
en entree.

Pour les les informations, le 6809 doitfaire appel a une routine
particuliere. Il doit envoyer, en ecriture, un front montant sur D0 a
l'adresse E7E4. Le gate array autorise alors le passage du signal issu
de CKLPN en rendant disponibles les donnees en sorties. Le 6809 peut
lire les donnees a travers l'etat A1 et A0 en envoyant les adresses
E7E4 a E7E7.

Les informations memorisees premettent la lecture de la position du
pointage sur l'ecran en donnant la precision du point, dans une
totalite de 8000 (comptage sur 16bits de H4 a T12). La prise en compte
de INILN et INITN permet de verifier si le crayon optique a ete
reelement pointe sur la fenetre de visualisation (cf. etude du
fonctionnement du crayon optique).

-------------------------------------------------------------------------------

5. Le système de visualisation

Généralités

La figure 7 donne un appercu general de la gestion d'ecran TV. Il est
bon de decomposer le fonctionnement en deux parties.

Construction globale de l'ecran

L'ecran doit etre divise en deux zones distinctes:
- La fenetre active d'affichage ou de visualisation, dont la dimension
en largeur correspond a un temps de balayage de 40µs et la dimension
en hauter a 200 lignes de 64µs. La fenetre est destinee a recevoir
caracteres et graphismes.
- Le tour ou cadre ne recevant ni caracteres ni graphisme mais
susceptible de changer de teinte.

La definition geometrique de la fenetre et du cadre est realisee a
partir du signal INILT, distribue par le gate array principal, et
venant agir sur un aiguilleur contenu dans le gate array d'affichage
I-27. Ce dernier determine, entre autre, les couleurs du tour.

La definition de l'ecran est faite a partir des signaux SYNLT et SUPLT
(synchronisation ligne, trame et blancking) pour assurer un balayage
non interligne de 312lignes de duree normalisee a 64µs.

Construction de la fenetre active

La fenetre de visualisation ou de travail est realisee en synchronisme
avec le  balayage du spot par l'association de segments en ligne et
en colonnes. Ces segments sont appeles GPL. Quarante GPL constituent
une ligne. La fenetre est donc construite a partir de 40x200 lignes =
8000 GPL.

Un GPL est concu par une association de points (4, 8, 16 selon le mode
d'affichage). Chaque point, representatif d'uen couleur, est
determine a partir d'une ou plusieurs informations stockees en memoire
ecran. En fait, le contenu 16bits d'une adresse de memoire ecran
definit la configuration en couleur des points d'un GPL. Chaque GPL
est donc associe a une adresse qui represente sa position sur la
fenetre. Pour gerer 8000 GPL, il faut 8000 adresses dans le chape 4000
a 5f3f.

Pendant chaque phase non active du 6809E, nous savons que  chaque
nouvelle adresse pointee est incrementee de 1 (cf. fonctionnement du
gate array principal, page 48); ce qui signifie que toutes les µs, un
nouveau GPL est defini en parfait synchronisme avec le balayage,
puisque SYNLT est issu des compteurs delivrant les adresses. Ce
processus est appele rafraichissement d'ecran ou REFRESH.

Le contenu de la RAM ecran RAMA et RAMB represente donc la
configuration codee sur 16bits des GPL. Ce contenu est dirige par les
bus RAMA et RAMB vers le circuit I-27 (gate array d'affichage). Ce
dernier, selon le mode d'affichage programme, restitue des
informations de couleurs serialisees sur le bus "couleur" de 4 bits.
Trois bits representent une couleur primaire R (rouge), V (vert), B
(bleu) correspondant a la configuration de base (couleur TO7/70). Le
quatrieme bit ressort l'information de saturation S transformee; apres
inversion, en information depastel P. L'association de ces quatres
bits definit un adressage ou un numero de couleur pour le circuit de
palette.

Les quatres bits activent, en relation avec une horloge PIXEL (HP), le
circuit I-28 de palette dont le role principal et de convertir en
niveaux analogiques le codage binaire de chaque point d'un GPL.
Optionnellement, il permet de reconfigurer les couleurs de base, grace
a un plan memoire programmable, pouvant traiter 4096 cas de figures.

Trois sorties analogiques RVB attaquent la prise peritel aux normes
SCART a travers un circuit d'adaptation I-30 et un melangeur recevant
SYNLT pour reconstituer une video composite. Les trois signaux sont
derives vers un adaptateur pour un eventuel codeur PAL.

Configuration de base

A la mise sous tension, le circuit palette I-28 est programme pour
restituer, en relation avec l'adressage par numeros de couleur
provenant du gate array I-27, les couleurs fondamentales du TO7/70,
selon le tableau suivant:

Adressage en    Adressage en    Numero de       Selction de
sortie gate     entree palette  couleur         couleur du
d'affichage                                     TO7/70

S B V R         P B V R         
1 0 0 0         0 0 0 0         0               noir
1 0 0 1         0 0 0 1         1               rouge
1 0 1 0         0 0 1 0         2               vert
1 0 1 1         0 0 1 1         3               jaune
1 1 0 0         0 1 0 0         4               bleu
1 1 0 1         0 1 0 1         5               magenta
1 1 1 0         0 1 1 0         6               cyan
1 1 1 1         0 1 1 1         7               blanc
0 0 0 0         1 0 0 0         8               gris
0 0 0 1         1 0 0 1         9               rose
0 0 1 0         1 0 1 0         10              vert clair
0 0 1 1         1 0 1 1         11              sable
0 1 0 0         1 1 0 0         12              bleu clair
0 1 0 1         1 1 0 1         13              parme
0 1 1 0         1 1 1 0         14              bleu ciel
0 1 1 1         1 1 1 1         15              orange

Gate array d'affichage et modes d'affichage

Role du circuit I-27

Le gate array EFG06 de chez EFCIS a ete concu pour recuperer les 16
bits de donnees en provenances des RAMS ecran afin de pouvoir, en les
serialisant pendant une micro-seconde sur un bus de quatres fils (R,
V, B, S), construire, via l'interface video, un GPL selon un mode
d'affichage bien particulier.

Ce circuit comporte des registres programmables par le 6809E, pour
definir uun des huit modes d'affichages tels que:
        Le mode TO7/70 ou 40 colonnes
        Le mode bitmap 4 couleurs
        Le mode 80 colonnes
        Le mode bitmap 16 couleurs
        Le mode page 1
        Le mode page 2
        Le mode surimpression 1 (2 pages)
        Le mode surimpression 3 (4 pages).

Description du circuit

Le gate array I-27 est constitue par:

- Un transcodeur en ralation avec le bus RAMA et le bus RAMB. Ce
transcodeur intervient uniquement pour le mode TO7/70 et le mode
bitmap 16 couleurs.

- Quatre registres serialisateurs de quatre bits chacun recevant les
donnees transcodees et les ressortant en serie. Selon le mode
programmation, ces registres peuvent ravailler separement ou en
association.

- Un circuit de commutatiuon assure les differentes combinaisons. Un
commutateur d'horloge selectionne la frequence de serialisation Ø
point de 4MHz, 8MHz ou 16Mhz. Il genere une frequence dependante de Ø
point. Cette frequence appelee HP (horloge pixel) est destinee a la
prise en compte des informations du bus couleur R, V, B, S pour les
registres de palette.

- L'ensemble de ces circuits est gere par un registre programmable a
l'adresse E7DC. Il est accessible uniquement en ecriture selon le
modele sur huit bits:

X T1 T0 Ø1 Ø0 C B A

avec choix du transcodage:
T1 T0
0  0    Mode TO7/70
0  1    Mode sans transcodage
1  1    Mode bitmap 16 couleurs

avec le choix de frequence d'horloge:
Ø1 Ø2
0  0    8 Mhz
0  1    16 Mhz
1  1    4 Mhz

avec le choix de fonctionnement:
C B A
0 0 0   Mode TO7/70
0 0 1   Mode bitmap 4
0 1 0   Mode 80 colonnes
0 1 1   Mode bitmap 16
1 0 0   Mode page 1
1 0 1   Mode page 2
1 1 0   Mode surimpression 1
1 1 1   Mode surimpression 3

- Un autre registre, programmable uniquement en ecriture en E7DD,
permet d'enregistrer les couleurs du tour selon le modele sur huit
bits:

X X X X S B V R

avec    S bit de saturation
        B bit de bleu
        V bit de vert
        R bit de rouge
dans la configuration de base.

Ce registre est parfaitement independant du premier et ne concerne pas
les modes d'affichages.

Le circuit I-27 est reninitialise a chaque mise sous tension ou
lorsque l'on appuie sur le bouton correspondant. La commande est
commune avec celle du 6809E. Il en resulte une programmation des
registres a 0, d'oul le mode d'affichage implicite TO7/70 et la
couleur du cadre gris.

Les differents modes d'affichage

Dans l'hypothese ou pour chacun des huit points d'un GPL, oncherchait
a obtenir une couleur differente, il faudrait prevoir un format de RAM
ecran de: 8(points) x 4(bits de couleurs) soit 32 bits. La memoire
ecran travaillant uniquement sur un format seize bits, seuls des
compromis sont envisageables quant aux nombres de couleurs
exploitables et a la finesse des pixels; ce fait est illustre par les
quatre modes d'affichage suivants:

. Le mode TO7/70 ou 40 colonnes

C'est le mode implicite permettant pour 16 couleurs une resolution 320
x 200 points avec, par segement de huit points, une rigidite de deux
couleurs.

Dans ce mode, le GPL est defini sur huit points. A chaque point
correspond une couleur de forme ou une couleur de fond. La RAMA sert a
memoriser l'emplacement Fn de la forme ou du fond (memoire de forme).
Un bit a 0 correspond a du fond, un bit a 1 correspond a de la forme.
La RAMB sert a memoriser la couleur de fond et la couleur de
forme,selon les primaires R, V, B et le bit de saturation S.

Schema de codage en RAM

RAMA                            RAMB
F7  F6 F5 F4 F3 F2 F1 F0        S0 S1 B1 V1 R1 R0 V0 B0
                                |  \_________/ \______/
                             fond     forme      fond 

L'organisation en RAMB n'est pas coherente (pour des raisons de
comptabilite avec le TO7) car le bit de saturation de fond est
totalement separe des primaires correspondantes. Dans le mode TO7/70
(CB A = 000), le gate array d'affichage va donc effectuer un
transcodage (T1 T0 = 00), selon le schema suivant:

S1 B1 V1 R1 S0 B0 V0

Les bitsde la RAMA vont etres serialises a la frequence Ø point de
8Mhz (Ø1 Ø2 = 00) et vont commuter sur les quatres sorties S, B, V, R:

Couleur de fond:        S0 B0 V0 R0 pour Fn = 0
Couleur de forme:       S1 B1 V1 R1 pour Fn = 1

- Exemple d'une routine simple permettant d'afficher une succession de
couleurs differentes sur un meme GPL a l'adresse $5000:

Mode TO7/70 implicite:
        LDA     $E7C3
        ANDA    #$FE
        STA     $E7C3
        LDB     #$D1
        STB     $5000
        ORA     #$01
        STA     $E7C3
        LDA     #$AA
REC     BRA     REC

En resume, ce mode permet d'utiliser seize couleurs avec deux couleurs
imposees par GPL, une couleur de forme, et une couleur de fond. Ce
mode entraine d'inevitables conflits de proximite dans la realisation
des graphismes (bavures ou debordmeent de couleurs sur un GPL).

. Le mode bitmap quantre couleurs

Ce mode est destine a eviter les conflits de proximite, pour une
resolution de 320 x200 points, avec uniquement quatre couleurs
imposees.

Le GPL est defini sur huit points. A chaque point, de gauche a droite
et dans le sens decroissant des poids, correspond un bit dans la RAMA
et dans la RAMB poru coder sa couleur selon la configuration de base:

RAMB    RAMA    Couleur du point
0       0       gris
0       1       rose
1       0       vert clair
1       1       sable

Schema de codage en RAM

        RAMA                            RAMB
C7 C6 C5 C4 C3C 2 C1 C0         C7 C6 C5 C4 C3 C2 C1 C0
   pour chaque point               pour chaque point
presence ou absence de rouge    presence ou absence de vert

Pour ce mode (CBA = 001), le gate array d'affichage n'effectue pas de
transcodage (T1 T0 = 01). Les bits de la RAMA et de la RAMB vont etre
serialisesa la frequence Ø point de 8Mhz (Ø1 Ø0 = 00) chacun sur un
fil, R pour la RAMA, V pour la RAMB. Les deux autres fils S et B sont
a l'etat 0 permanent. Ceci explique pourquoi le systeme genere des
teintes en pastel.

- Exemple de routine simple permettant d'afficher une succession de
couleurs differentes sur un meme GPL a l'adresse $5000.

Mode bitmap 4 couleurs:
        LDA     $E7C3
        ANDA    #$FE
        STA     $E7C3
        CLRB
        JSR     EFF
        ORA     #$01
        STA     $E7C3
        JSR     EFF
        LDA     #$21
        STA     $E7Dc
        LDB     #$CC
        STB     $5000
        LDA     $E7C3
        ANDA    #$FE
        STA     $E7C3
        LDB     #$AA
        STB     $5000
REC     BRA     REC
EFF     EQU     *
        LDX     #$4000
ENC     STB     ,X+
        CMPX    #$5F40
        BNE     ENC
        RTS

Ce programme execute en configuration de base determine par principe
quatre couleurs pastel: gris, rose, vert clair et sable. Afin
d'obtenir un affichage plus apparent, il convient de reconfigurer la
palette et de la transformer de telle sorte que gris devienne noir,le
rose devienne rouge, le vert clair devienne vert, le sable devienne
jaune. Cette reconfiguration est implicitement apportee par la
sequence d'echapement ($59) inherente a la routine PUTC (cf.
programmation de la palette, page 212).

. Le mode bitmap 16 couleurs

Ce mode est destine a eviter les conflits de proximite pour une
resolution de 160x200 points avec le choix de seize couleurs.

Le GPL est concu sur quatre points. Pour chaque GPL, la RAMA, par ses
quatre bits de poids for, definit la couleur parmi seize du point le
plusa gauche, puis par ses quatre bits de poids faible la couleur du
point immediatement juxtapose. La RAMB, par ses quatre bits de poids
fort, definit la couleur du point suivant, enfin par ses quatre bit de
poids faible, la couleur du point le plus a droite.

Schema de codage en RAM:

            RAMA                            RAMB
C3 C3 C3 C3     C2 C2 C2 C2     C1 C1 C1 C1     C0 C0 C0 C0 
S  B  V  R      S  B  V  R      S  B  V  R      S  B  V  R      
\________/      \________/      \________/      \________/      
  couleur         couleur         couleur         couleur         
 parmi 16        parmi 16        parmi 16        parmi 16       
  point 1         point 2         point 3         point 4

Pour ce mode (CBA = 011), le gate array d'affichage effecture un
transcodage (T1 T0 = 11) selon le schema:

C3 C2 C1 C0     C3 C2 C1 C0     C3 C2 C1 C0     C3 C2 C1 C0     
\_________/     \_________/     \_________/     \_________/     
     S               B               V               R

Quatre serialisateurs commandes par Ø point = 4Mhz (Ø1 Ø2 = 11),
specialises chacun en S, B, V, R vont delivrer sur les quatres fils
correpsondants l'informationde teinte du point considere.

- Exemple d'un routine simple permttant d'afficher uen succession de
couleurs differentes sur un meme GPL, a l'adresse $5000:
        LDA     #$7B
        STA     $E7DC
        LDB     #$0C
        STB     $5000
        LDA     $E7C3
        ANDA    #$FE
        STA     $E7C3
        LDB     #$A9
        STB     $5000
REC     BRA     REC

Ce programme execute en configuration de base, affiche quatre points
gris ,bleu, vert et rouge de la gauche vers la droite. On en conclut
que ce mode qui n'a pas de couleurs imposees mais une resolution
divisee par 2, n'entraine pas de conflit de proximite.

. Le mode 80 colonnes

C'est le mode permettant la plus haute resolution 640 x 200 points
avec seulement deux couleurs imposees, une couleur dee forme et une
couleru de fond. Le GPL est defini sur seize points, la RAMA et la
RAMB ont donc le cmme codage et servent a memoriser l'emplacement de
la forme et du fond.

Schema de codage en RAM

          RAMA                                        RAMB
F15 F14 F12 F11 F10 F9  F8              F7  F6  F5  F4  F3  F2  F1  F0

La RAMA memorise la structure des points les plus a gauche, la RAMB
celle des points les plus a droite. En affichage de caracteres, la
RAMA contient les bits des points des caracteres des colonnes paires,
tandis que la RAMB contient ceux des colonnes impaires.

Le gate array d'affichage, pour ce mode (CBA = 010), n'effctue pas de
transcodage (T1 T0 = 01). Il combine un serialisateur unique de 16
bits, commande par Ø point = 16Mhz (Ø1 Ø0 = 01). Les informations
serialises ressortent sur deux fils B et V relies en parallele. S et R
etant figes a 0. En configuration de bas,ela couleur de forme
exploitable est du bleu ciel et la couleurde fond du gris.

- Exemple de routine simple permettant d'afficher seize points,
successivement en couleur de forme et couleur de fond sur un meme GPL,
a l'adresse $5000.
        LDA     #$2A
        STA     $E7DC
        LDB     #$AA
        STB     $5000
        LDA     $E7C3
        ORA     #$01
        STA     $E7C3
        STB     $5000
REC     BRA     REC

A l'execution de ce programme, on obtient huit points separes, de
couleur bleu ciel, sur un fond gris. Afin de rendre la demonstration
plus representative, il convient de reconfigurer la palettede
changeant le gris en noir et le bleu ciel en rouge. Cette operation
est implicitement realisee par le routine PUTC, lorsque l'onfait
appela la sequence d'echapement ($5B).

D'une toute autre maniere, le gate array d'affichage permet, selon
uncodage particulier en RAM et RAMB, troismode intrinsequement lies.
        - Le mode page 1
        - Le mode page 2
        - Le mode superpositon deux pages.

. Le mode page 1

Ce mode travaille en resolution 320x200 avec deux couleurs imposes. Le
GPL est defini sur huit points uniquement dans la RAMA en formeet en
fond.

Schema de codage en RAM:

         RAMA
F7 F6 F5 F4 F3 F2 F1 F0

Dans ce mode (CBA = 100), le gate array d'affichage reprend les bits
sans transcodage (T1 T0 = 01). Un serialisateur commande a la
frequence Ø point = 8MHz (Ø1 Ø0 = 00) delivre les informations sur la
sortie R, les trois autresfilsetant a l'etat 0.

. Le mode page 2

Parfaitement equivalent au precedent, il prend l'information GPL en
RAMB.

Schema de codage en RAM:

         RAMA
F7 F6 F5 F4 F3 F2 F1 F0

Dans ce mode (CBA = 101) non transode (T1 T0 = 01). Le deuxieme
serialisateur commande avec Ø point = 8Mhz (Ø1 Ø0 = 00) delivre des
informations sur la sortie V, les trois autres fils etant a l'etant 0.

. Le mode superposition deux page ou surimpression 1, permet de
reprendre simultanement les deux mode sprecedents. Dans ce mode (CBA =
110), le gate array utilise les deux serialisateurs et les deux
sorties R, V selon la relation:

Sortie R = R _
Sortie V = V.R

Cela implique une priorite de sortie pour R (V=0 pour R=1) et un effet
de surimpression de R sur V.

- Programme de mise en evidence des trois modes:
        LDA     #$24
        STA     $E7DC           MODE PAGE 1
        LDB     #$AA
        STB     $5000
        STB     $5001
        LDA     #$25
        STA     $E7DC           MODE PAGE 2
        LDA     $E7C3
        ANDA    #$FE
        STA     $E7C3
        LDB     #$FF
        STB     $5000
        STB     $5001
REPB    JSR     $E806           ATTENTE CARACTERE 'A'
        CMPB    #$41
        BNE     REPB
        LDA     #$24            
        STA     $E7DC           MODE PAGE 1
REPA    JSR     $E806
        CMB     #$53
        BNE     REPA            ATTENTE CARACTERE 'S'
        LDA     #$26
        STA     $E7DC           MODE SURPERPOSITION
REPS    JSR     $E806
        CMP     #$42
        BNE     REPS
        LDA     #$25
        STA     $E7DC           MODE PAGE 2
        JMP     REPB            REPRISE

Lors de l'execution en configuration de base, on affiche sur l'ecran
gris un double GPL en continuevert clai. En appouyant surla touche A,
on affiche un double GPL en pointille rose. En appouant sur la touche
S, on affiche les deux GPL, le rose empietant sur le vert clair. La
touche B permet de revenir a l'etat initial.

Afin d'obtenir une representation plus apparente, il convient de
reconfigurer la palette et de la transformer, de telle sorte que le
grisdevienne noir, le rose devient rouge, le vert clair devienne vert
sature. Cette action est implicitement apportee par les sequences
d'echapement ($48, $49, $4A ou $4B) inherente a la routine PUTC.

Conclusion: l'avantage de ces modes est de pouvoir offiri des pages
independantes. Pendant l'affichage d'une page, l'autre peut etre
ecrite et presentee ensuite, par simple commutation. Le mode
surimpression permet de superposer les deux pages en continuant
d'ecrire dans l'une ou l'autre.

. Mode particulier

Le mode triple surimpression ou quatre pages superposees est un mode
particulier permettant d'associer des plans avec une priorite a
l'affichage, pour un resolution de 160 x 200 points et cinq couleurs
imposees. Le GPL est donc concu sur quatre points. En configuration de
base, chaque point de gauche a droire a sa couleur de forme definie
soit en rose, soit en vert clair, soit en bleu clair soit enfin en
noir, avec une couleur de fond gris.

Schema de codage en RAM:

           RAMA                            RAMB
F3 F2 F1 F0     F3 F2 F1 F0     F3 F2 F1 F0     F3 F2 F1 F0     
\_________/     \_________/     \_________/     \_________/     
     R               V               RB              S

Pour ce mode (CBA = 111), le gate arrau d'affichage n'effectue pas de
transcodage (T1 T0 = 01). Quatre serialisateurs specialises chacun en
R, V, B, S et commandes par Ø point = 4Mhz (Ø1 Ø0 = 11) vont delivrer
en correspondance de R,de V, de B et de Sles informations de teinte du
point considere selon l'effet de masquage ou de priorite suivant:

        Sortie R = R  
                     _
        Sortie V = V.R
                     _ _
        Sortie B = B.V.R
                     _ _ _
        Sortie S = S.B.V.R

Programme representaif du mode:
        LDA     #$3F
        STA     $E7DC
DEB     LDB     #$0F
        STB     $5000
        JSR     ATT
        LDB     #$FF
        STB     $5000
        JSR     ATT
        LDA     $E7C3
        ORA     #$01
        STA     $E7C3
        LDB     #$0F
        STB     $500
        JSR     ATT
        ANDA    #$FE
        STA     $E7C3
        JMP     DEB
ATT     JSR     $E806           ATTENTE ESPACE
        CMPB    #$20
        BNE     ATT
        RTS

Ce programme met en evidence le principe de superposition applique
dans ce mode de fonctionnement. En configuration de base,apres avoir
trace un GPL en noir sur fond gris, en appuyant sur la touche espace,
le meme GPLdevient bleu clair (S masque); en appuyant encore sur la
touche espace, le GPL devient bleu clair (S masque); en appuyant encoe
sur la touche espace, le GPLdevient vert pale (S et B masques) puis
enappuyant de nouveau il devient rose (S, B, V masques). Le fait de
relancer a nouveau l'experience en appuyant plusieurs fois sur la
barre espace, demontre  que S et B resten definitivement masques par
la resence de R ou V dans la RAMA.

Circuit de palette

Le systeme de palette I-28 utilise le circuit IGV EF 9369 de chez
EFCIS. Son principal role est de pouvoir augmenter le nombre de
teintes parmi les seize disponibles en configuration de base, sans
pour autant intervenir sur les plans RAMA et RAMB. Il permet un choix
de seize teintes parmi une palette de 4096.

Description fonctionnelle de l'IGV

Il remplit les fonctions suivantes:
        - Memoire de couleurs reinscriptible
        - Conversion umerique analogique des fondamentale R, V, B et
mise aux normes peritelevision.
        - Interfacage avec le microprocesseur.

. Memoire de couleur

C'est une memoire vice de 16 mots de 13 bits (4 bits par fondamentale
plus un bit de marquage). Elle est accessible en adressage de deux
manieres:
        
- En lecture seulement par le systeme graphique (gate array
d'affichage) a travers un latch 4 bits 74LS173 et un inverseur pour
transformer le bit de saturation en bit pastel. La synchronisation ou
validation est effectuee par l'horloge HP (image de Ø point). De cette
maniere, le circuit effectue la transposition des informations
couleurs entre la memoire ecran et la prise peritel.

- Prioritairement, en lecture-ecriture par le 6809E via l'interface
micro-processeur, permettant ainsi de reconfigurer les couleurs et de
fixer la couleur de transaprence pour l'inscrusation par
l'intermediaire du bit de marquage M (sortie marqueur).

. Convertisseur numerique analogique

Il delivre seize niveaux de tension differents par fondamentale
(sorties CR, CV, RB) ce qui permet uen gamme de 16 x 16 x 16 = 4096
teintes. Les tensions de sorties d'echelonnent entre 0.8V pour le
niveau le plus bas et 1.8V pour le niveau le plus haut. Ces tensions
sont amplifiees de 6dB par le circuit I-30 (TEA 5114) avec un OFFSET
de 2V pour attaquer la prise SCART.

Un controleur CNA recoit la commande de blanking (SUPLT) en provenance
du gate array principal, fixant le niveau du noir pendant le retour
ligne et trame. La commade de RESET force les sorties au niveau de
noir jusqu'a l'acces microprocesseur suivant.

. L'interfacage avec le 6809E se fait par la commande CSN active.
Ainsi, pour A0=0, le bus de donnees principal communique avec le
registre de donnees couleurs representant le contenu du plan memoire.
Pour l'entree A0=1, le bus de donnees communique avec le registre
d'adresses couleurs du plan memoire. Le registre d'adresses couleurs
offre alors la possibilite d'un adressage auto-incrementable modulo 32
(ecriture ou lecture du plan memoire entier en 33 cycles micro).

Ainsi, un acces au registre de donnees incremente automatiquement le
registre d'adresse et lors d'un programmation complete de la palette,
il n'est necessaire de venir reecrire le registre d'adresses.

Programmation de la palette

- La programmation du registre de donnees (designation PALETTE) se
fait l'adresse E7DA en deux ecritures ou deux lectures de 2 x 8 = 16
hbits (dont 13 bits actifs), par auto-incrementation du registre
d'adresses selon la forme

                            V V V V                 R R R R
Premiere adresse        fondamentale V          fondamentale R

Dexieme adresse             X X X M                 B B B B
auto-incrementee        bit de marquage         fondamentale B

et ensachant que:

RRRR = 1111 represente la fondamentale "rouge"
RRRR = 0000 represente le niveau noir

VVVV = 1111 represente la fondamentale "vert"
VVVV = 0000 represente le niveau noir

BBBB = 1111 represente la fondamentale "bleu"
VVVV = 0000 represente le niveau noir.

Toutes les autres combinaisons representent des couleurs
intermediaires enintensite et saturation.

En relation avec le registre de donnees, la programmatipon duregistre
d'adresses couleurs (designation PALETTE + 1) se fait a l'adresse CPU
E7DB par une ecriture ou une lecture du numero de couleur qu'il faut
veiller a transformer en adresse de plan memoire sur 8 bits (une
adresse couleur representnat deux adresses physiques successives par
auto-incrementation), selon la forma:

        Adresse couleur         Adresse plan memoire
     ou numero de couleur
                0                       00
                1                       02
                2                       04
                3                       06
                4                       08
                5                       0A
                6                       0C
                7                       0E
                8                       10
                9                       12
                A                       14
                B                       16
                C                       18
                D                       1A
                E                       1C
                F                       1E

Exemple simple de programmation de la palette:
        LDA     #$03
        ASLA
        STA     $E7DB
        LDD     #$0FFF
        STB     $E7DA
        STA     $E7DA
        SWI

Ce programme permet de fixer la couleur numero 3 en blanc ce qui
revient a dire que l'on transformele  jaune de la configuration de
base en blanc.

Circuit d'incrustation

Le but de l'incrustationest de superposer une image micro ordinateur
sur une image video (antenne ou magnetoscope). Le principe general du
systeme est de permuter, par logiciel, la commande de commutation
rapide (distribution des sorties RVGB) de facon a ce que, pour tout
generation d'images de la part du micro-ordinateur, pour chaque
couleur dont le bit de marquage est positionne, l'image video vienne s
eplacer en substitution.

Il estaussi necessaire d'asservire la synchronisaion ligne du TO9 sur
cellede la source video (utilisation d'un VCO det d'une boucle a
verrouillage de phase). De meme, l'ordinateur fonctionnant en
624lignes, il es indispensable de rattraper l'equivalent d'une
demi-ligne poruchaque tramme, afin de rester en concordance avec la
source video fonctionnant en 625 lignes (generation d'un signal de
remise la 'heure CLRG).

Le VCO, le PLL et la commande  CLRG sont situes dans un boitier
d'extension "incrustation". La figure 10 regroupe les principaux
circuits internes a l'unite centrale, en relation avec l'incrustation.

Le passage en mode incruste est realise par la commutation du bit CB2
(broche 12 du 6821, circuit I-43). Le signal obtenu, clae en phase
avec E, vient commander un aiguilleur (multiplexeur 1-2 a 4 voies).

Ainsi, pour CB2 = 1: Le systeme est en mode normal. Il recoit les
16Mhz de l'oscilatteur interne. Il genere du +12V pour la commutation
lente, du +5V pour la commutation rapide.

Pour CB2 = 0: Le systeme est en mode incruste. Il recoit les 16MHz en
provenance du VCO dans le boitier d'incrustation. Il recoit la
commande CLRG activant l'entree SYCL2 du gate array principal (remise
a l'heure des compteurs lignes et trames). la commutation rapide est
modulee par le marqueur (image video pour l'etat 0). La commutation
lente est supprimee,  al synchronisation mixte de l'ordinateur etant
en phase avec le synchronisation TV. Le son du televiseur est alors
commute. 

-------------------------------------------------------------------------------

6. Les interfaces paralleles

Le TO9 utilise deux circuits fondamenteux: le 6846 et le 6821 avec un
environnement bien specifique.

Utilisation du 6846: circuit I-41

Description fonctionnelle

- Le port 8 bits du 6846, appele port C, a par initialisation cinq
lignes P0, P2, P4, P5, P6, configurees en sorties et deux autres P1,
P7, en entrees. Le bit P3 n'est pas utilise.

P0 represente le bit de forme pour la commutation des plans memoire
RAMA ou RAMB.

P1 recoit l'information de l'interrupteur du crayon optique. Un niveau
1 est present lorsqu'il est active.

P2 et P6 sont employes pour la commutation des banques de la memoire
extension disque virtuel.

P4 et P5 sont utilises pour la commutation des EPROMS a travers le
gate array de decodage d'adresses I-47.

P7 recoit les informations numeriques decodees, en lecture, du
magnetophone LEP. Ce bit sert de test pour le programme
d'initalisation de facon a savoir si le magnetophone est present ou
non (niveau 1 lorsqu'il est branche moteur arrete).

- La ligne de controle CP2 est employee seule. Initialisee en sortie,
elle assure la generation du son via le melangeur.

- Le TIMER a un double role: en fonctionnement normal, il sert, par
des demandes d'interruptions successives (sorties IRQ) toutes les
100ms, a commander le clignotement du curseur. En utilisation du LEP,
il code et fournit les informations numeriques a enregistrer sur le
magnetophone par la sortie CT0. Les informations digitales sont codees
en salve de frequences:
        5 periodes a 4.5KHz pour le bit 0
        7 periodes a 6.3KHz pout le bit 1

Ce procede effectue une transmission serailisee asynchrone a 900
bauds.

Adresses des registres internes

E7C0 - registre d'etat composite (CSR)
E7C1 - registre de controle peritherique (CRC)
E7C2 - registre de direction de donnees (DDRC)
E7C3 - registre de donnees peripheriques (PRC)
E7C4 - registre d'etat composite (CSR)
E7C5 - registre controle temporisateur (TCR)
E7C6 - registre temporisateur d'octet de poids fort (TMSB)
E7C7 - registre temporisateur d'octet de poids faible (TLSB)

Utilisation du 6821 dans le TO9: circuit I-43

Description fonctionnelle

Le 6821 sert a l'interfacage d'un imprimante du type huit bit
"parallele" en mode CENTRONICS. Sept bits du port A sont utilises a
cet effet ainsi que deux bits du port B. Les lignes, configurees en
sorties, servent au transfert des donnees sur huit bits et la commande
de prise en compte STROBE (en PSB1) qui est active a l'etat 0. Les
routines de gestion imprimante autorisent une emission de donnees, a
condition que le signal "BUSY" en provenance de l'imprimante ne soit
pas actif, c'est-a-dir, a l'etat 0. Un test est effectue a partir de
l'entree CTSN de l'ACIA 6850 (circuit I-54).

La ligne PA0 recoit une information KTEST en provenance du clavier. Ce
dernier envoie un etat 1 durable a chaque appui sur uen touche. Ce bit
est repris par la routine moniteur KTST permettant une verification
rapide d'une demande clavier (systeme anti-rebond).

PB2 est la command d'incrustation activea 0. Elle reste a l'etat bas
lorsque l'utilisateur passe en mode incrustation.

PB3 a PB7 sont les bits de commutation de banque memoire.  Le
programme d'initialisation fixe PB3 en sortie a l'etat 0 et PB4, PB5,
PB6, PB7 en entree a l'etat 1 par la presence de resistances de PULL
UP (cf. Systeme de memorisation).

Les lignes de controle ont chacune une application bien specifique:

- CA1 recoit le signale de remise a l'heure de l'eventuel boitier
d'incrustation. Il sert uniquement a positionner le flag du registre
de controle CRA afin d'operer une protection lorsqu'une demande
d'incrustation est effectuee sans le boitier.

- CA2 est ensortie. Active a l'etat 0, elle permet de telecommander la
mise en route du moteur LEP.

- CB1 recoit la demande d'interruption lorsqu'une videe est effectuee
sur l'ecran par l'intermediaire du crayon optique. La routine moniteur
GETLTP prend en compte cette demmande et demasque la sortie IRQN pour
la transmettre en FIRQN sur le 6809 (cf. Gestion du crayon optique).

- CB2 n'est pas utilise.

Adresses des registres internes:

E7C8 - registre de direction de donnees ou registre de donnees partie
       A (PRA)
E7C9 - registre de direction de donnees ou registre de donnees partie
       B (PRB)
E7CA - registre de controle partie A (CRA)
E7CB - registre de controle partie B (CRB)

[--- extrait d'une autre doc
6. Les interfaces paralleles

Le TO9 utilise deux circuits condamentaux: le 6846 et le 6821 avec un
environement bien specifique.

Utilisation du 6846: Circuit I-41

Description fonctionelle

* Le port 8 bit du 6846, appele port C, a par initialisation cinq lignes
P0, P2, P4, P5, P6, configurees en sorties et deux autres P1 et P7 en
entrees. Le bit P3 n'est pas utilise

        P0 represente le bit de forme pour la commutation des plans
        memoire RAMA ou RAMB.

        P1 recoit l'information de l'interrupteur du crayon optique.
        Un niveau 1 est present lorsqu'il est active.

        P2 et P6 sont employes pour la commutation des banques de la
        memoire extension disque virtuel.

        P4 et P5 sont utilises pour la commutation des EPROMS a
        travers le gate array de decodage d'adresse I-47.

        P7 recoit les informations numerique decodees, en lecture, du
        magnetophone LEP. Ce bit sert de test pour le programme
        d'initialisation de facon a savoir si le magnetophone est
        present ou non (niveau 1 lorsqu'il est branche moteur arrete).

* La ligne de controle CP2 est employee seule. Initialisee en sortie
elle assure la generation du son via le melangeur.

* Le TIMER a un double role: en fonctionnement normal, il sert, par
des demandes d'interruptions successives (sortie IRQ) toutes les
100ms, a commander le clignotement du curseur. En utilisation du LEP,
il code et fournit des informations numeriques a enregistrer sur le
magnetophone par la sortie CT0. Les informations digitales sont codees
en salve de frequences:

        5 periodes a 4.5KHz pour le bit 0
        7 periodes a 6.3Khz pour le bit 1

Ce procede effectue une transmission serialisee asynchrone a 900
bauds.

(sam: j'ai un programme qui doit modifier la frequence des
interruptions IRQ du timer. Je l'ai utilise dans ma routine qui joue
les sample des guignols de l'info a la frequence de 4KHz en
re-programmant le timer a cette frequence il me semble... Jette un
oeil au source pour voir comment on arrive a chagner la frequence des
interruption et comment on programme le timer: one shot ou repetitif
(j'ai aucune idee a present d'ou j'ai pu recuperer la facon de
programmer le timer 6846.. peut-etre dans une doc motorola qui m'etait
tombee sous la main a l'epoque))
---]

-------------------------------------------------------------------------------

7. La gestion du clavier et des peripheriques

Le clavier est gere a partir d'un microprocesseur monochip du type
6805. Ce dernier est en liaison serie avec l'unite centrale par
l'intermediaire d'un circuit d'interface serie: l'ACIA 6850.

Utilisation du 6850 dans le TO9

Description

De par le decodage d'adresse envoye sur l'entreee CS2 et la commande
lecture-ecriture R/WN, la situation des registres internes est telle
que:

Adresse R/WN    Registre selecte
E7DE    0       CR (controle)
E7DE    1       SR (etat)
E7DF    0       TDR (emission)
E7DF    1       RDR (reception)

L'horloge est commune pour l'emission et la reception (TXC et RXC
relies ensembles). Cette horloge oscille a une frequence d'environ
145KHz apres division du 16MHz par un compteur asynchrone dans un
rapport 16x7=112. Le regsitre de controle est programme pour une
predivision interne de 16, ce qui permet une transmission a 9600
bauds. L'unite centrale echange des informations avec le
microprocesseur (monochip) du clavier dans les deux sens, soit en
emission par TXD,soit en reception par RXD.

Avant la prise en compte d'un caractere envoye, le logiciel de gestion
clavier, fait un test rapide du bit PA0 du 6821 qui recoit la commande
KTEST. Ce bit passe a 1, lorsque l'on appuie sur une touche. La
routine moniteur KTST force alors le bit C du registre d'etat 6809E a
1.

En fonctionnement normal; le registre de commande est configure pour
maintenir RTSN a l'etat 0, ce qui impose, via la porte I-37, CTSN=0 et
indique par la-meme quele peripherique est toujours pret a emettre.

En attente d'appui sur une touche, le contenu du registre duregistre
d'etat est de 02, precisant notamment que les registres de reception
et d'emission sont vides.

Le 6850 a un role annexe, consistant a recuperer le signal BUSY de
l'imprimante CENTRONICS commandee par le 6821. En gestion imprimante
parallele, les routines correpondantes forcent RTSN au niveau 1 et
viennent alors tester l'etat de CTSN dans le registre SR.

Le clavier

Presentation

L'ensemble clavier du TO9 est separe de l'unite centrale et y est
relie par un cordon spirale a 6 conducteurs. Ce clavier comporte 81
touches a repetition automatique et est muni d'un prise SUB-9 broches
permettant de connecter les peripheriques d'entree, tels que souris et
potentiometres de commande (paddle).

Il est equipe d'un microprocesseur monochip du type 6805, charge de la
scrutation des touches, de la reconnaissance et du traitement de
donnees fournies par les peripheriques. Le monochip est commande par
une horloge autonome a 4Mhz.

Les touches du clavier sont organises en matrice 10 ligne et 8
colonnes. Les 10 lignes sont commandees, via un decodeur (4 vers 10),
par le port B du microprocesseur. Les 8 colonnes sont appliquees sur
le port A du microprocesseur.

Lorsqu'une touche est presse, une liaison est etablie entre une ligne
et iune colonne. Le microprocesseur detecte ce changement d'etat et
positionne alors les 10 lignes a 0V, l'une apres l'autre. Lorsque la
ligne concernee passe a 0, la colonne passe egalement a 0 et le
microprocesseur connait alors l'emplacement de la touche.

Les touches shift et controle (CNT) sont appliquees directement sur le
port d'entree D.

Le voyant associe a la touche de verouillage majuscule (CAPS) est
commande par une sortie de port B qui est capable d'alimenter
directement une diode LED (I = 10mA).

Les peripheriques sont relies par l'intermediaire de la prise
correspondante au port C.

Un starp permet de monter, soit un microprocesseur 6805 masque, soit
un micorprocesseur 68705 (utilisation d'une EPROM). Un autre strap
permet de choisir la configuration du clavier, francais ou export.

Signaux echanges avec l'unite centrale

* Signaux recus par le clavier

L'unite centrale est capable de modifier certaine fonctions du
clavier, telles qui reinitialisation, commande majuscule-minuscule,
autorisation de peripheriques, en envoyant un mot serie (UC->Clavier).

Ce mot est constitue par:
        - 1 bit de start
        - 3 bits de donnees
        - 1 bit de stop.
La vitesse de transmission est de 9600 bauds.

L'untite centrale utilisant l'ACIA peour envoyer ces commandes, le
code est donc constitue de 8 bits. Seuls les 3 bits de poids faibles
sont utilises, les autres sont toujours a l'etat haut.

* Signaux emis vers l'unbtite centrale

Le clavier envoie vers l'unite centrale, des informations sous forme
d'octets, transmis en serie avec le format suivant:
        - 1 bit de start
        - 8 bits de donnes ou octet (code ASCII)
        - 1 bit de parite (indicateur)
        - 3 bits de stop
La vitesse de transmission est de 9600 bauds.

Le bit de parite set d'indicateur pour differencier les codes clavier
des codes peripheriques. Les 3 bits de stop permettent d'obtenir un
ecart de temps minimum entre 3 mots consecutifs. Les informations sont
transmises de la maniere suivante:

        * Mode clavier seul

Un octet est envoye a chaque appui d'une touche. Si cette touche reste
enfoncee, apres un delai de 0.8 secondes, le code est envoye toutes
les 70 mili-secondes (repetition automatique). Si deux touches sont
pressees simultanement, les deux codes sont envoyes successivement.
Dans ce cas, la repetiotion automatique est inhibee, et ceci tant que
les deux touches (ou plus de deux) sont enfoncees.

        * Mode peripherique

Lorsqu'un peripherique est connecte et actif, les informations
transmises a l'unite centrale sont composees de trains de quatre
octets successifs quise repertent toutes les 10 milli-secondes. Ce
trait est organise de la facon suivante:

        - 1er octet: code clavier

Cet octet vaut 00,si aucun code clavier n'est envoye. La parite de cet
octet est impaire (bit de parite = 1, si le nombre de bits a 1 est
impair). Si le clavier est en repetition automatique, le code est
envoye toutes les 70 milli-secondes, c'est a dire une fois tous les 7
trains. 

        - 2eme octet: Valeur du deplacement (boule ou potentiometre)
en X.

Cet octet varie de 0 a $FF. La parite est paire.

        - 3eme octet: Valeur du deplacement (boule ou potentiometre)
en Y.

Cet octet varie de 0 a $FF. La parite est paire.

        - 4eme octet: Depassement et gachettes

La parite est paire. La designation est la suivante:

bit7: depassement Y
bit6: depassement X
bit5:
bit4:
bit3:
bit2: gachette 2
bit1:
bit0: gachette 1

En conbclusion, le bit de parite utilise comme indicateur est impair
uniquement pour le code clavier. Cela permet la synchronisation des
donnees a la reception par l'unite centrale.

-------------------------------------------------------------------------------

8. Gestion du crayon optique

Fonctionnement du crayon optique

Le crayon optique est constitue de deux elements separes.
        - Un interupteur de validation tactile
        - Un phototransistor de detection optique du spot sur l'ecran.

Son action est dirigee a partir de diverses routines situees dans le
moniteur.

Fonctionnement de l'interrupteur

En effectuant une pression sur l'ecran avec le crayon optique, on
ferme l'interupteur de ce dernier sur la tension d'alimentation +5V.
Cet etat haut resultant vient informer le bit P1 du port 6846.

En logiciel, ce bit a 1 est repris par la routinr LPINT du moniteur
qui, apres un test "anti-rebond", force le bit carry du 6809
conjointement a 1.

Fonctionnement du phototransistor

Lorsque l'ecran du televiseur recoit, via la prise peritel, une
information RVB, il n'est concu, au meme instant qu'un point sur
l'ecran. S'il est dans la fenetre de visualisation, ce point
appartient a un GPL dont l'adresse est presente, toujours a cet
instant, dans les compteurs lignes et trames du gate array principal.
Si face a ce point, on place le phototransistor, ce dernier va emettre
une information recuperee en tension, amplifiee (circuit a miroir de
courant) et mise en forme par un monostable (circuit I-55), d'ou
resulte une impulsion calibree a 700ns. Cette impulsion est aiguillee
en deux directions CKLPN et CKLP.

                    ____
* Action de CKLPN = CKLP

CKLPN attaque le gate array principal dans le but de latcher l'etat
des compteurs points, lignes et trame. Pour ce faire, le signal est
decoupe par frequences de l'horloge mere a 16Mhz, ce qui permet la
reconnaissance des compteurs points. En fait, l'operation generale du
stockage des compteurs points, lignes et trame, ne pourra se faire que
par un ordre du 6809. Le CPU doit envoyer en ecriture, par
l'intermediaire du bit D0 a l'etat 1 et a l'adresse $E7E4, une demande
d'ouverture ou de prise en compte dont la finalite est de rendre CKLPN
actif. Cette operation doit etre effectuee avant l'arrivee de ce
signal.

* Action du CKLP

CKLP, via une porte "OU" susceptible de recevoir des informations d'un
evenutel codage a barres, correspond a une demande d'interruption sur
l'entree de la ligne de controle CB1 du 6821. Apres autorisation,
cette demande d'interruption est dirigee sur la borne FIRQN du 6809.
La sous-routine correspondante "INTERLP" du moniteur assure la prise
en compte, en lecture du latch gate array principal, de l'etat des
compteurs. La lecture s'effectue sur les quantres adresses des
flip-flop E7E4 E7E5 E7E6 E7E7 selon la forme suivante:

Adresses du             Bus de donnes en correspondance
latch           D7      D6      D5      D4      D3      D2      D1      D0

E7E4            T12     T11     T10     T9      T8      T7      T6      T5
E7E5            T4      T3      TL2     TL1     TL0     E       H2      H4
E7E6            LT3     INILN   0       0       0       0       0       0
E7E7            INITN   INITN   0       0       0       0       0       1
                \___/
        independant de CKLP (non latche)

* Action generale

Aux adresses E7E4-E7E5, la connaissancde le l'etat de l'ensemble des
compteurs points, ligne et trame (H4 a T12) permet a la routine
principale GETLP (routine appelee par l'utilisateur) de transcrire,
pour le point vise, l'acquisition effectuee en coordonneees X et Y
de la fenetre de visualisation. Cette routine applique la formule
suivante:
                Y = acquisition/320
                X = reste de la division

A l'adresse E7E6, INILN indique si la mesure du crayon optique s'est
effectuee dans la partie horizontale active de la fenetre ou dans les
bords droits ou gauche. A la meme adresse, INITN (bit de poids 7) non
latche par CKLP et l'image du signal de construction de la fenetre en
trame, permet a la routine principale GETLP d'attendre la remise a
zero des compteurs pour tenter une acquisition.

Selon la distance du crayon optique a l'ecran, le systeme prevoit une
prise en compte d'un nombre plus ou moins grand de mesures (8 au
maximum, 2 au minimumà, les resultats etant places dans buffer.

-------------------------------------------------------------------------------

9. L'exploitation du lecteur-enregistreur de disques

L'appareil est compose, sous forme d'un module approprie, par un
circuit d'interface controleur de disques WD 2793 (WESTERN DIGITAL).
Il est destine a adapter les caracteristiques electriques et mecanique
du lecteur-enregistreur de disquette, (DRIVE ou FLOPPY) 3.5 pouces, a
l'unite centrale. Il remplace avantageusement ler WD 1770 dont les
premieres versions du TO9 etaient pourvues.

Le contrôleur est commandé par l'action de la porte OU (I-20) et de
celle du decodage d'adresse combine avec A0 et A1. Ainsi il est
selecte pour E=1 aux quatre adresses E7D0, E7D1, E7D2, E7D3.

Un monostable redeclenchable (74LS122) interne au module, active par
le decodage d'adresse, assure la mise en marche du moteur pendant tout
le temps ou le 6809 travaille en relation avec le lecteur. La commande
resultante de mise en marche du moteur vient informer l'entree "READY"
du controleur.

Le latch I-50 (74LS173) associe a un ensemble de porte tristates
(I-49) realise un registre de commande de drive et de choix de
densite. De par le montage, ce registre est accessible en ecriture a
l'adresse E7D8 pour E=1. L'operation d'ecriture est realisable sous la
forme: 

        ___
        DDE X X X X DS1 DS0 SIDE
        ___                    ___                      ___
avec    DDE: choix de densite (DDE=1 => simple densite; DDE=0 =>
             double densite).
        DS1 DS2: commande de drive
        SIDE: commande de face.

La gestion du systeme presente la particularite suivante: une face de
disquette correspond a un numero de lecteur. Ainsi, les numeros 0 et 1
font parite du drive integre au TO9 (1 est inexploitable) 2 et 3 font
partie d'un drive externe.

Tableau des commandes:
---------------------

DS0     DS1     SIDE    =>  Lecteur n°
 1       0       0      =>      0
 1       0       1      =>      1
 0       1       0      =>      2
 1       1       1      =>      3

Le role de I-49 est de rendre le registre accessible en lecture pour
l'information du choix de densite DDEN.

Les circuits I-51 et I-52, de struture a collecteur ouvert, combines
avec des resistances de pull-up et de pull-down, adaptent et
bufferisent les differentes commandes de sorties du WD2793

-------------------------------------------------------------------------------

TROISEME PARTIE - Analyse materielle du TO8

1. Analyse generale

Conception generale - Description

Le micro-ordinateur TO8 est concu comme ses predecesseurs, a partir
d'un 6809E, microprocesseur commande a la frequence de 1Mhz par deux
horloges exterieures en quadratures: E et Q.

Le bus d'adresses 16bits est direct et permet d'acceder aux
differentes memoires mortes et aux registres.

Le bus de donnees 8bits vehicuant les principaux echanges a une
ramification particuliere: le bus de donnees RAM qui est bufferise est
relie par un 74LS245. Pendant la phase non active du 6809, ce bus est
isole du bus de donnees principal par l'action du 74LS245 commande par
le signal TRANS. C'est durant cette periode que le gate array accede
aux memoires en "mode page".

Les lignes de controle du 6809E correspondent:
        - aux commandes de lecture et ecriture R/WN des differents
        registres et memoire,

        - aux demandes d'interruptions IRQN concernant la gestion du
        clavier, le clignotement du curseur, les manettes de jeux et
        la souris, 

        - aux demandes d'interruptions FIRQN pour le fonctionnement du
        crayon optique et du code barre.

Un circuit de reinitialisation "RESET" est en relation avec le 6809E
et differents circuits, tels le controleur clavier 6804.

* /Pour la memoire morte/

Les deux pages de 6Ko du moniteur ainsi que les 2 pages de 1.9Ko de
logiciel controleur de disque sont logees dans une EPROM 16Ko 27 128.

Les 2x32Ko de logiciel d'application BASIC 1 - divers- BASIC 512 -
EXTRAMONITEUR, sont loges chacun dans une ROM ou EPROM 32Ko selon une
repartition en 4 banques.

La commutation des banques s'effectue en *programmation* par une
ecriture d'adresse ROM dans un /latch/ 74LS173. Ce circuit permet de
selecter chaque partie concernee dans une des memoires mortes.

La cartouche de logiciel d'application externe est reliee a l'unite
centrale par l'intermediaire d'un connecteur. Elle est selectee par
*logiciel* a partir d'un bit de PIA du 6846.

* /Pour la memoire vive/

Huit boitiers 256KBits 41256 forment un plan memoire de 256Ko
comprennant un decoupage de pages logiques de 16Ko.

Les differentes pages sont commutees par un *adressage physique* sur
18bits en provenance du gate array mode page.

L'extension memoire, accessible par un connecteur de carte au bus de
donnees RAM, est constitue de 8 boitiers 41256 qui regroupent seize
autres pages de RAM utilisateur (pages 16 a 31) adressees de la meme
maniere et differenciees par le signal CAS2N.

Outre le 6809E, l'element vital de l'unite centrale est un circuit a
reseau logique (gate array) appele "mode page" car il permet, par un
bus d'adresses multiplexees, de faire fonctionner les RAMs dynamiques
41256 dans le type susnomme.

Pendant la phase non active du CPU, il assure le rafraichissement des
memoires et de l'ecran. Pilote par une horloge mere de 16Mhz, il
delivre les differents signaux de timing et de commande video. Il
fabrique tous les decodages d'adresses. Il gere, en partie, le
fonctionnementdu crayon optique par le signal CKLPN. Il regroupe et
produit les huits modes d'affichage et definit les couleurs du cadre.
Il permet de definir la carte memoire en quatre espaces logiques
principaux:
        L'espace "cartouche" de 0000 a 3FFF
        L'espace "ecran" de 4000 a 5FFF
        L'espace "systeme" de 6000 a 9FFF
        L'espace "donnees" de A000 a DFFF
Il autorise l'utilisateur a affecter une page de RAM a un espace
logique selon certaines modalites; notamment, il permet de recouvrir
16Ko de logiciel par une page de memoire vive.

Un circuit du type EF9369, programmable par le 6809E, permet sous la
dependance du mode d'affichage determine une variete de seize teintes
exploitables directement par l'ecran parmi un choix de 4096 au total.

Il delivre les trois informations B, V, R reprises et adaptees par des
circuits d'interfacage video comprennant, entre autre, le dispositif
d'incrustation. Ces circuits, recevants des signaux de synchronisation
et de blanking du gate array fournissent les tensions et adapatitions
necessaires pour la prise peritel aux normes SCART ainsi que pour un
eventuel codeur modulateur PAL dans la version export.

Un deuxiemme connecteur de carte, appele polyvalent, permet de relier
les bus et signaux necessaires aux extenssions.

Trois circuits d'interface sont en relation avec differents
peripheriques:

- Un 6846 qui assure par le timer l'envoi code des informations
numeriques a enregistrer sur le magnetophone LEP (sauvegarde).
Inversement, une ligne du PIA recupere les informations numeriques
decodees en provenance du LEP (chargement). Les autres lignes du PIA
sont affectes a la commande de silence ou "MUTE" en utilisation de la
souris, a la prise en compte du signal BUSY de l'imprimante, a la
communication avec le 6804 pour la gestion du clavier, au traitement
de l'information tactile du crayon optique LP (signal INTERLP) et
enfin, a la commutation des logiciels internes ou de la cartouche
externe.

- Un 6821 "musique et jeux" qui est charge par ses deux ports de huit
bits et ses quatre lignes de controle de la generation du son et de la
liaison manette des jeux et souris. Un convertisseur numerique
analogique CNA recupere le son synthetise et l'envoie vers un circuit
melangeur recevant, par ailleurs, le son du LEP et la commande de
MUTE. La sortie du melangeur alimente la prise peritel et une prise
auxiliaire CINCH.

- Un 6821 "systeme" qui assure principalement, par l'intermediaire
d'un connecteur specialise, la gestion d'un imprimante en mode
parallele de type CENTRONICS, prend en compte, par le signal KTEST,
l'action d'une touche du clavier, procure les demandes incrustation et
la telecommande du moteur LEP.

Un microprocesseur monochip du type 6804 sert de controleur de
clavier. Pilotye par uen horloge oscillant a 11Mhz, il dialogue en
transmission serie codee avec le 6809E par le truchement du 6846. La
liaison est effectuee dans les deux sens a l'aide de deux fils DATAS
et ACK. Le clavier est relie au 6804 par deux connecteurs assurant une
transmission parallele.

Un controleur de disquettes, sous forme d'un deuxiemme circuit a
reseau logique ou gate array (THMFC01), programmable par le 6809 E,
delivre par l'intermediaire d'une prise DIN 14 broches les signaux
necessaires au fonctionnement d'un lecteur de disquettes.

Une alimentation au secondaire fabrique les deux tensions de +5V et
+12V necessaires a la configuration de l'unite centrale.

2. LE 6809E dans le TO8

Suivant la lignee de ses predecesseurs, le fonctionnement general du
TO8 est base sur le principe fondamental de la phase active et non
active du 6809E (cf. etude TO9, paragraphe sur le principe fondamental
page 34).  

La frequence des horloges E et Q en provenance du gate array reste de
1Mhz et la constante de temps du RESET de 1 seconde. 

La structure de bus est simplifiee. Un seul buffer 74LS245 est utilise
poiur l'aiguillage du bus de donnees RAM (cf. synoptique). En dehors
de l'action de R/WN determinant le sens du transfert des informations,
le 74LS245 est commande par le signal TRANSN reagissant en fonction de
E, des zones adressees et indirectement du CSCRTN (cf. commutation des
logiciels) selon la forme:

E       CSRTN   zones adressees         TRANSN
0         X       XXXX                    1
1         0       0000-3FFF               1
1         1       0000-3FFF               0  \ validation 
1         1       4000-DFFF               0  / du buffer

La consultation de ce tableau amene les remarques suivantes:

Pour E=0, le cpu n'a pas access au bus RAM. Ce dernier est reserve au
rafraichissement. 
Pour E=1, selon la programmation du gate array mode page, la zone
d'adresse 0000-3FFF initialement reservee pour les logiciels interne
ou externes peut etre attribuee a une page de RAM. Dans ce cas
CSCRN=1 et le signal TRANSN=0 valident le buffer permettant au
microprocesseur d'acceder a la memoire vive. 

EXceptees les zones d'adresses du gate array mode page, l'espace
E000-FFFF reste en majorite innaccessible par le cpu a travers le bus
RAM.

Les deux entrees d'interruptions utilisees sont IRQN et FIRQN. La
premiere sert a gerer le cligotement du curseur (sortie du TIMER
6846), le fonctionnement du clavier (PIA 6846) ou d'un peripherique
externe tel que manette de jeux, souris (6821 musique et jeux). La
deuxieme gere l'action du phototransistor dans le crayon optique lors
d'une visee (gate array mode page) ou, en relation avec un logiciel
adapte, l'action d'un eventuel capteur de "code barre".

3. Gestion de la memoire morte

Contrairement au TO7, au TO7/70 et d'une facon similaire au TO9, le
TO8 est livre avec des logiciels integres qui sont adresses dans le
meme espace memoire que la cartouche. Le moniteur, quant a lui, reside
dans une autre partie de la memoire.

Description des logiciels

La memoire morte interne du TO8 est repartie en trois boitiers:
- Une ROM ou EPROM de 32Ko (27256) organisee en deux pages de 16Ko
(banque 0, banque 1) contenant le BASIC 512 et l'EXTRAMONITEUR.
- Une ROM ou EPROM de 32Ko (27256) organisee en deux pages de 16Ko
(banque 2, banque 3) contenant le BASIC 1, la page d'en-tete, le
reglage palette et le DOS ICONIQUE.
- Une ROM ou EPROM de 16Ko (27128) organisee en deux pages de 8Ko
contenant le MONITEUR de l'unite centrale et du lecteur de disquettes
externe.
La cartouche enfichable de 16Ko ou 32Ko represente la memoire morte
externe.

Commutation des logiciels

La figure 17 decrit le mecanisme general de fonctionnement.

De par les decodages d'adresses  CSCRTN et CSMN en provenance du gate
array mode page, le systeme assure la selection de la zone cartouche
0000-3FFF et zone moniteur E000-FFFF moins quelques adresses prises
par les registres des circuits peripheriques.

/Selection d'une page moniteur/

Par construction, le bit P4 du 6846 etant relie au bit A13 du bus
d'adresse de la memoire de 16Ko, ce bit permet de choisir la page de
8Ko haute ou basse du boitier. Ainsi:
        P4=0 => partie basse de la ROM
        P4=1 => partie haute de la ROM

La resistance reliee a la masse a pour effet, lors de l'initalisation,
de rendre accessible automatiquement la partie basse de la ROM, P4
etant positionnee en entree.

/Selection entre logiciels residents et cartouche/

La commutation se fait a partir du bit P2 du 6846 qui, combine avec le
decodage d'adresses  CSCRTN, restitue a trafvers une logique cablee
les deux commandes telles que:
__             _____   __
CS resident  = CSCRT + P2
__             _____   __
CS cartouche = CSCRT + P2
                  __
Ainsi, pour P2=0: CS cartouche est actif dans le champ d'adresses
                  0000-3FFF et valide la cartouche. 
                  __
                  CS resident est inactif.
                  __
Ainsi, pour P2=1: CS resident est actif dans le champ d'adresses
                  0000-3FFF et valide les deux boitiers de logiciels
                  internes. 
                  __
                  CS cartouche est inactif.

De par l'action du gate array mode page, ce montage offre la
possibilite d'inhiber les logiciels dans l'espace memoire 0000-3FFF
qui leur est normallement alloue. Dans ce cas de figure, CSRTN=1
constant. Ce type de fonctionnement permet a l'utilisateur de
substituer de la ROM par une page de RAM pouvant etre par ailleurs
cargee par un logiciel en provenance d'une memoire de masse (cf.
fonctionnenement du gate array mode page, page 105).

/Selection des quatrebanques de logiciels internes/

Le mecanisme employe est comparable a celui utilsie par les cartouches
(COLORCALC, COLORPAINT, BASIC II...) et par le TO9 (en remplacant le
signal CSN par CSCRTN).

Synthese de fonctionnement

Le tableau suivant resume le mecanisme general des commutation selon
differents cas de figure:
              _____   ___
Champ d'adr.  CSCRT   CSM    P2    P4     A1     A0     Logiciel 
                                        latche latche   selecte

0000-3FFF       0      1     0     X      X      X      Cartouche
 -    -         0      1     1     X      0      0      Banque 0
 -    -         0      1     1     X      0      1      Banque 1
 -    -         0      1     1     X      1      0      Banque 2
 -    -         0      1     1     X      1      1      banque 3
4000-DFFF       1      1     X     X      X      X      Neant
E000-E7AF \     1      0     X     0      X      X      Moniteur
E800-FFFF /                                             partie basse
E000-E7AF \     1      0     X     1      X      X      Moniteur
E800-FFFF /                                             partie haute.


4. Les memoires vives

Technologiquement, les 256 Ko de memoire vive residentes du tO8 sont
constitues par 8 boitiers integres du type 41256. Ces circuits ont une
capacite de 256 x 1bit. Pour une reconstitution en donnees de 8 bits,
huit 41256 sont associees, chacune specialisee par un poids de D7 a D0
(cf. figure 18).

Fonctionnement d'une 41256

Les 41256 sont des memoires vives dynamqiues qui permetttent de
stockjer sous forme de matrice de 2^9 = 512 lignes et de 2^9 = 512
colonnes, 512 x 512 = 256 Kbits. L'adressage d'une telle matrice, a
structue symatrique, necessite 2 x 9 bits d'adressage envoyes en deux
temps sur les 9 fils du bus d'adresse correspondant. Aux 9 bits de
poids faible correspond l'adressage ligne valide par le signal de
ligne RASN; aux 9 bits de poids fort correspond l'adressage colonne
valide par le signal de colone CASN. Le diagramme suivant precise la
forme multiplexee de l'adresssage:

        a0              a9
        a1              a10
        a2              a11
        a3              a12
        a4              a13     
        a5              a14
        a6              a15
        a7              a16
        a8              a17

Adressage ligne   Adressage colonne
valide par RASN   valide par CASN
et rafraichis-
sement d'une li-
gne.

On peut faire suivre un adressage ligne bien particulier par deux
adressages colonnes successifs en utilisant deux validatiàons de CASN,
pour RASN actif constamment. Ce type de fonctionnement s'intitule mode
page. Il est utilise dans le TO8, par l'intermediaire du gate array
correspondant. (SAM: sur 68030+ on appelle cela le mode "burst" :)

Le rafraichissement de ces memoires dynamique se fait par adressage
consecutifs des 512 lignes.

Les 41256 ne sont pas selectees (bus de donnees deconnecte) lorsque le
signal CASN n'est pas actif. Ce dernier remplace avantageusement une
commande de CHIP SELECT.

Organisation generale

la figure 18 montre deux plans memoire distincts composes chacun de
huit boitiers 41256. Le plan superieur represente les 256Ko de memoire
vive residant dans l'unite centrale, l'autre plan represente les 256Ko
de memoire vive appartenant a l'unite d'extension.

Chaque boitier recoit en commun les commandes de RASN et RAMWN en
provenance du gate array. CAS1N et CAS2N autorisent la selection des
plans memoire, conformement au tableau suivant par l'intermediaire des
commandes communes de CASN
        ____    ____
        CAS1    CAS2    Plan memoire actif
        0       1       Resident
        1       0       Extension
        1       1       Aucun

Un bus de donneees RAMS est commun en entree-sortie a tous les
boitiers des deux plans memoire. Ce bus est en relation avec le bus de
donnees du 6809 par l'intermediaire d'un buffer 74LS245 commande par
le signal TRANSN selon certaines modalite (cf. chapitre II, le 6809E
dans le TO8, page 95).

L'adressage de chaque boitier, necessairement multiplexe en 2 x 9
bits, est issu du gate array mode page. Cet adressage physique sur 18
bits (a0 a a17 - 256Ko d'investigation) permet un decoupage logique en
pages de 16Ko, selon une correspondance en espace logiques de la carte
memoire limitee par principe a un adressage sur 16 bits (A0 a A15 -
64Ko d'investigation). Ces espaces logiques sont alors a considerer
comme des banques memoires, ce qui, vu d'un logiciel, ne change rien
quant a l'ancienne structure du type TO9, mais est totalement
different au niveau materiel.

Correlativement a l'action du gate array, les trois espaces memoire
RAM definis dans la carte memoire ont chacun une correspondance de
page dans un des deux plans physiques selon:

        Espace logique  Espace physique
           Ecran           page 0               plan resident
           Systeme         page 1               plan resident
           Donnees         pages 2 a 31         plan resident ou
                                                extension

Selection et correspondances

Contrairement au TO9, la selection des zones memoire qui etait faire
par aiguillage de CAS et bits de PIA est realisee, dans le TO8, par un
processus de *transformation d'adresses*. L'adressage logique,
provenant de la programmation sur 16 bits, est transforme en 18 bits.

Le tableau ci-dessous montre la relation entre les conditions
physiques et les decoupages logiques obtenus pour assurer la
compatibilite avec kes anciens montages.

        Condition physiques             Decoupage logique
____    ____
CAS1    CAS2    Zone phys.      Page    Zone logique    Appellation
0       1       00000-01FFF     0       4000-5FFF       RAM ecran B
0       1       02000-03FFF     0       4000-5FFF       RAM ecran A
0       1       04000-07FFF     1       6000-9000       RAM systeme
0       1       08000-0BFFF     2       A000-DFFF       Banque 0
0       1       0C000-0FFFF     3       A000-DFFF       Banque 1
0       1       10000-13FFF     4       A000-DFFF       Banque 2
0       1       14000-17FFF     5       A000-DFFF       Banque 3
0       1       18000-1BFFF     6       A000-DFFF       Banque 4
0       1       1C000-1FFFF     7       A000-DFFF       Banque 5
-       -          -   -        -         -   -           -
0       1       3C000-3FFFF     15      A000-DFFF       Banque 13
1       0       00000-03FFF     16      A000-DFFF       Banque 14
-       -          -   -        -         -   -           -
1       0       3C000-3FFFF     31      A000-DFFF       Banque 29

La commutation de CAS1N et CAS2N est dependante de la programmation du
gate array mode page (voir page 105) dans lequel cing bits
representent le numero de page.

On remarquera, a la vue de ce tableau, une correspondance
logique/physique beaucoup plus rationnelle que dans les montages
precedents. 

Ecriture et lecture des RAMS

Comme pour le TO9, deux cas de figure sibt a considerer.

* E=1, phase active du 6809:
        Le microprocesseur peut communiquer en lecture ou ecriture
        avec les RAMS a travers le 74LS245 par le bus de donnees RAM.
        La commande  RAMW = R/WN. (SAM: ah tiens je viens de realiser
                              ___
        que R/WN = NOT(R/W) = R/W :-)

* E=0, phase non active du 6809:
        RAMW=1, les memoires sont en lecture automatique. Les lignes
        sont adressees en incrementation constante par les compteurs
        du gate array. 

Afin de permettre leur rafraichissement en tdeux temps, soit en acces
mode page, les colonnes sont doublement adressees, avec un ecart qui
represente une variation de 8Ko. Ainsi:

Un premier acces a lieu dans la page physique 0 a une premiere
adresse AD telle que:
* 00000 < AD < 01FFF donc dependante de la memoire ecran B (couleur).
Un deuxiemme acces a lieu dans la meme page physique 0 a une adresse
telle que:
* 02000 < AD + 8Ko < 03FFF donc dependante de la memoire ecran A
(points).

Toute cette organisation est definie a partir du gate arraut "mode
page". 

5. Le gate array mode page CF 74021

Ce nouveau circuit a reseau logique est une extenesion et uen
amelioration sensible du gate array principal utilise dansl e TO9. A
lui seul, il assure un effet:
        - La distribution des signaux necessaires a l'interface video
        - Les decodages d'adresses
        - Les huit modes d'affichages
        - Une nouvelle gestion de smemoires vives, dont le "mode page"
        - Un fonctionnement polyvalent de commutation, d'adaptation et
          de changement de caracteristique pour divers systemes.

Definition du mode page

Dans le tO9, le gate array systeme est concu de telle sorte que
lorsque le CPU travaille dans la memoire ecran, son acces est dirige,
soit vers la RAMA (memoire points ou forme), soit vers la RAMB
(memoire couleur) en fonction du bit de forme. Les circuits
d'exploitation automatiques (automate) de la memoire ecran permettent,
quant a eux, la lecture *simultanee* des deux RAMS. Cette lecture est
idnependante du bit de forme, afin de pouvoir elaborer en temps reel
l'integralite des signaux de visualisation destines au tube cathodique
d'affichage. 

Pour chaque groupe de huit pixels ou GPL affiches a l'ecran, la
circuiterie video doit lire 16bits en memoire: 8 bits pour l'octet
"RAMA" et 8 bits pour l'octet "RAMB". Jusqu'a maintenant, cette
lecture devait se faire en une seule fois, sur 16bits, ce qui imposait
a la memoire ecran, d'etre organisee en deux bancs de 8bits, alors que
tout le reste de la memoire systeme est su un octet seulement. Cetet
organisation "irreguliere" n'est pas optimale economiquement et n'est
pas favorable a l'utilisation des boitiers memoires dynamiques N*1bits
qui portant les plus rependus.

Afin de pallier cet inconvenient, le nouveau gate arrau denomme "mode
page" utilise un automate qui remplace l'acces 16bits a la memoire
ecran par deux acces successifs tres rapides et qui totalisent la meme
duree que l'ancien acces  16bits.

Cette technique est rendu possible grace a un mode d'adressage
particulier de smemoires dynamiques: le mode page (sam: aujourd'hui on
parle mode burst ou memoire edo). Dans ce tytpe de fonctionnement,
plusieurs cases memoires du composant peuvent etre lues en sequence, a
condition que ces cases appartiennent toutes a la meme rangee ou ligne
de la matrice interne.

Ainsi pour une adresse poids faible constante et un signal RASN a
l'etat bas, deux acces sont possibles pour deux adresses poids fort
differentes en correlation avec deux fronts descendants du signal
CASN.

Cette nouvelle structure implique donc une roganisation nouvelle de
la memoire ecran pour que les octets "RAMA" et "RAMB" soient
accessibles en mode page. Evidemment, vu du logiciel, l'agencement de
l'ecran doit rester compatible avec les systemes precedents,
c'est-a-dire que le bit de forme doit toujours permettre de rendre
l'acces du CPU, soit a la memore "ecran A" soit a la memoire "ecran
B". 

Gestion de la memoire vive

Cette nouvelle version du gate permet de surcroit de gere une quantite
de RAM bien superieure a celle implicitement contenue dans la carte
memoire. Ainsi est-il possible d'exploitet jusqu'a 512Ko de memoire
vive par page de 16Ko. Le numero de page peut-etre choisi par
programmation.

De meme ces pages "physiques" peuvent etre affectees a plusieurs
espaces "logiques" du systeme, tels que l'espace "cartouche", l'espace
"ecran" et l'espace "donnees" (cf. gate array mode page dans le TO8,
page 117).

D'une facon independante et de par une organisation tres souple, un
simple changement de programmation dans des registres rend possible
l'adaptation du gate array mode page a diverses unites centrales (TO8,
TO9+, MO6, MO5NR). De la meme maniere, dives types de memoire
dynamliques peuvent etre cables (4416, 4464, 4164, 41128, 41256,
44256).

Structure du circuit

La figure 19 schematise la structure interne du circuit a reseal
logique prediffuse. On y distingue

- Le decodeur d'adresses sollicite par le bus d'adresses du
microprocesseur A15-A0.
- Le module des mode sd'affichages avec ses deux registres
programmables et son electronique en partie identique a ceux du gate
array "mode d'affichage" dans le TO9. Conformement au mecanisme du
"mode page", dans ce module le transcodeur est attaque en deux acces
de huit bits, en remplacement de l'ancien acces 16bits RAM RAMB. (Cf.
analyse materielle du tO9, p. 54).
- Le bus couleur en sortie de module.
- Un circuit de generation RAMW (en logique cablee dans le TO9),
combinaison de R/WN et E, afin de forcer uen lecture automatique des
memoires vices pendant la phase non active du CPU, selon l'equation:
               ___
        RAMW = R/W + E
Comme pour le TO9, (cf. etude materielle, p48) on reconnait l'automate
constitue:
        - des compteurs points (avec C, RASN, E et Q),
        - des compteurs ligne et trame, (pilotes par H16 et CLRG),
        - et du bus de rafraichissement T12-T0 correspondant.
H16 VCO est une nouvelle commande de remise en phase (cf.
incrustation).

- Les circuits de decodage et mixage delivrant les signaux video
SYNLT, SUPLT et INLT.
- Un systeme de registres pour le crayon optiquye quelque peu modifie
dans son exploitation et permettant notamment le controle de FIRQN
anciennement assure par un PIA.
- Un double circuit de multiplexeurs commutant d'une facon classique
les adresses CPU ou les adresses compteurs (phase du cPU en fonction
de E); commutant en matricage ligne et colonne (poids faible, poids
fort en fonction de C); le tout, par l'intermediaire du bus de neuf
bits  MA0-MA8 destine aux memores vives.

En fait, un traitement ou aiguillage de signaux est effectue avant
multiplexage. Cette action definit, entre autres, la generation de
signaux CAS1N, CAS2N. Elle depend de registres, dits de traitement, et
programmables a souhaits. C'est par la-meme que resident l'originalite
et la grande nouveaute du composant, voir du micro-ordinateur.

Traitement des signaux multiplexes.

Les signaux multiplexes delivres sur le bus MA8-MA0 repondent au
diagramme suivant:

                        E=1     E=1     E=0     E=0
                        C=1     C=0     C=1     C=0
                         |       |       |      / \
                         V       V       V     V   V
        MA0-7   =>      A0      RA15    T0    BE1  BE1
        MA1-8   =>      A1      MU8     T1    TU8  TU8
        MA2-9   =>      A2      A9      T2    T9   T9
        MA3-10  =>      A3      A10     T3    T10  T10
        MA4-11  =>      A4      A11     T4    T11  T11
        MA5-12  =>      A5      A12     T5    T12  T12
        MA6-13  =>      A6      RA13    T6    Q=0  Q=1
        MA7-14  =>      A7      RA14    T7    BE0  BE0
        MA8-15  =>      MU16    RA17    T8    0    0
                        ligne   colonne ligne col1 col2


On voit apparaitre selon les commandes d'horloge interne:
Pour E=1 (phase active du CPU), 
     C=1 (adresses RAM ligne) => A7-A0 = adresses poids faible du CPU;
        MU16 represente soit A8, soit les bits de commutation de
        banques BC2 ou BD2.

     E=1 (phase active du CPU) 
     C=0 (adresses RAM colonnes) => A9-A12 = adresses poids fort du
        cpu; RA13 = soit A13 soit le bit de forme; RA14 = soit A14
        soit les commutation de banques BC0 ou BD0; RA15 = les
        commutations de banques BC1 ou BD1; MU8 = soit les bits de
        commutation inverses; RA17 = les commutations de banques BC3
        ou BD3. 

     E=0 (phase non active du CPU)
     C=1 (adresses RAM lignes) => T0-T8 = adresses poids faible des
        compteurs. 

     E=0 (phase non active du CPU)
     C=0 (adresses RAM colones) => T9-T12 = adresses poids fort des
        compteurs; TU8 = soit T8 soit "0"; BE0, bE1; Q; "0";

On notera que pour la conditrion E=0, le systeme permet deux acces
RAM, valides par deux fronts descendants de CASN (cf. gestion des
memoires vices) avec RASN a l'etat 0. La difference d'adressage est
representee par l'etat de Q qui, compte tenu du timing (quadrature ave
E), delivre penant la condition presente l'etat 0 et l'etat 1.

Q est en position de poids 13, ce qui represente un variation ou saut
d'adresse de 213 = 8Ko, les autres bits restants inchanges. Ainsi,
quelque soit l'adresse pointee, i lexiste systematiquement deux acces
dans deux pages de 8ko conjointes. CEs deux pages sont concretisees
par la RAMA et la RAMB.

Cette procedure realise l'adressage automatique en mode page. On
notera aussi que les signaux du type MU, TU, RA representent des
choix de commande imposes par programmation dans le registre de
traitement afin de rendre compatible, comme nous l'avons precise
precedemment, le gate array avec le type de memoire dynamqie et le
micro-ordinateur choisis.

BC, BD, BE et le bit de forme, quant a eux, sont des etats directement
programmables dans les registres de traitement, pour les commutations
de banque, voir de page.

Ainsi:  - BC3, BC2, BC1, BC0 fixent le choix d'une banque de 16Ko
        parmi 16 banques, pour recouvrir l'espace "cartouche".
        - BD3, BD2, BD1, BD0 fixent le choix d'une banque de 16Ko
        parmi 16 banques pour recouvrir l'espace "donnees".
        - BE1, BE0 fixent le choix d'une banque de 8ko parmi 4
        banques, pour recouvrir l'espace "ecran".

Les registres de traitement

En dehors de la gestion des memoires vives, ces circuits offrent, en
relation avec les horloges et les decodages d'adresses, des
possibilites multiples d'adaptaion et de changement de
caracteristiques selon les machines a concevoir, sans oublier pour
atant la compatibilite avec les anciennes versions.

Ces registres sont accessibles a des adresses bien particulieres et
par la commande du microprocesseur R/WN. Les adresses sont
fondamentallement differente selon que le composant travaille avec une
unite centrale TO ou MO. La difference joue sur le digit hexadecimal
de poids fort. Ainsi
        Digit de poids fort = A en version MO
        Digit de poids fort = E en version TO

/Description et programmation des registres accessibles en ecriture/

* Registre "systeme 1" - adresse A7E7/E7E7

Organisation:
D7 - bit de choix de l'utilisation du controleur de disque interne ou
externe. En mode TO uniquement, ce bit a une influence sur les
decodages d'adresses.
        D7 = 0 => controleur interne
        D7 = 1 => controleur externe.
D6 - bit de gestion RAM dans l'espace cartouche
        D6 = 0 => mode compatible nanoreseau
        D6 = 1 => gestion par registre interne "cartouche" A7E6/E7E6
D5 - bit de standard d'affichage
        D5 = 0 => 624 lignes (France)
        D5 = 1 => 524 lignes (Export).
D4 - bit de gestion RAM dans l'espace "donnees".
        D4 = 0 => gestion par bit de PIA (emulation)
        D4 = 1 => gestion par registre interne: autorise l'ecriture
                  dans le registre "RAM donnees" en A7E5/E7E5.
D3 et D2 - bits de choix du type  d'ordinateur.
        D3=0 D2=0 => MO
        D3=0 D2=1 => TO9
        D3=1 D2=1 => TO
D1 et D0 - bits de choix de la RAM dynamique
        D1=0 D0=0 => 256K x 1bit
                  => 256K x 4bits
        D1=1 D0=0 => 128K x 1bit
        D1=1 D0=1 => 64K x 4bits

* Registre "systeme 2" - adresse A7DD/E7DD

Ce registre est une combinaison de l'electronique de traitement et du
registre definissant la couleur du tour ou du cadre dans le module
d'affichage.

Organisation:
D7 et D6 - bits indiquants le numero de page physqiue a afficher sur
l'ecran (de 0 a 3 en binaire naturel).
        D7 = BE1 \
Avec              > cf. diagramme precedent page 108
        D6 = BE0 /
D5 - bit pour masquer la cartouche, utilisable uniquement en mode MO.
        D5 = 0 => cartouche visible
        D5 = 1 => cartouche masquee.
D4 - bit du BASIC a selectionner, utilisable uniquement en mode MO.
        D4 = 0 => BASIC 1
        D4 = 1 => BASIC 128
D3, D2, D1, D0 - bits de la couleur du tour (cf. affichage).

* Registre "RAM donnees" - adresse A7E5/E7E5

Ce registre n'est accessible en ecriture que si le bit D4 du registre
"systeme 1" est ecrit a 1.

Organisation:
D7 - bit d'autorisation d'acces au registre d'affichage en A7DC/E7DC
en mode controleur de disque externe selectionne (D7 de A7E7/E7E7
ecrit a 1)
        D7 = 0 => ecriture autorisee
        D7 = 1 => ecriture inhibee.
Le role de ce bit est du au fait d'un risque de conflit, a l'adresse
A7DC/E7DC, avec un eventuel controleur externe de QDD qui decode lui
aussi cet octet.
        D6 = 0
        D5 = 0
D4, D3, D2, D1, D0 - bits definissant le numero de page RAM utilisee
dans l'espace "RAM donnees" (de 0 a 31 en binaire naturel).
Avec:   D4 = Commutaiton de CASN
        D4 = 0 => CAS1N valide
        D4 = 1 => CAS2N valide
        D3 = BD3 \
        D2 = BD2 |
        D1 = BD1 | cf. diagramme precedent, page 108
        D0 = BD0 /

Ainsi en mode gestion de l'espace "RAM donnes", D4-D0 donne le numero
de page physique de 16Ko a affecter a l'espace logique.

* Registre "cartouche" adresse A7E6/E7E6

Organisation
        D7 = 0
D6 - bit de protection en ecriture dans la page de RAM selectionne
lorsque l'espace carotuche est recouvert par cette meme page de RAM
(D5=1). 
        D6 = 0 => ecriture impossible
        D6 = 1 => ecriture autorisee.
D5 - bit de selection de l'espace cartouche.
        D5 = 0 => l'espace cartouche n'est pas recouvert par de la
                  RAM.
        D5 = 1 => l'espace cartouche est recouvert par uen page de RAM
                  dont le numero est donne par D4-D0.
D4, D3, D2, D1, D0 - bits definissant le numero de page RAM utilisee
dans l'espace cartouche (de 0 a 31 en binaire naturel)/
Avec:   D4 = Commutation de CAS.
        D4 = 0 => CAS1N valide
        D4 = 1 => CAS2N valide.
        D3 = BC3 \
        D2 = BC2 |
        D1 = BC1 | cf. diagramme precedent, page 108
        D0 = BC0 /
Ainsi, en mode de gestion de l'espace cartouche, D4-D0 donne le numero
de page physique de 16Ko a affecter a l'espace logique correspondant.

* Registres "d'emulation"

Ces registres viennent remplacer, pour D4 du registre systeme 1 = 0,
l'action devolkue aux PIA (6846, 6821) des unites centrales TO7/70,
TO9, MO5, par la commutation du bit de forme et des banques.
Reagissant aux meme adresses, ils sont ainsi parfaitement transparents
pour l'utilisateur. Ils assurent une compatibilite totale dans
l'emploi des anciens logiciels.

* Registre de commutation "lecture traitement/crayon optique" adresse
A7E4/E7E4

Ce registre est un peu particulier et ne rentre pas dan la categorie
des registres susnommes. Il est en effet destine selon l'ecriture du
bit D0 a aiguiller, pour des adresses semblables, la lecture de
certains registres de traitement ou des registres crayon optique
(latch).
Ainsi:
        D0 = 0 => selection des registres de traitement (lecture)
        D0 = 1 => selection des registres du crayon optique (lecture).

/Description des registres accessibles en lecture pour D0=0
(A7E4/E7E4)/

Excepte le registre "systeme 1", les registres de traitement, etudies
en ecriture sont lisibles en entier ou partiellement, a des adresses
differentes ou semblables.

* Registre "systeme 2" - adresse A7E4/E7E4

Il Permet une relecture partielle du registre ecrit en A7DD/E7DD.
Organisation:
D7-D6 - bits indiquant le numero de page physique affiche sur
l'ecran (de 0 a 3 en binaire naturel).
D5 - bit de masquage cartouche en mode MO.
D4 - bit de selection du BASIC en mode MO.
Les bits d3, D2, D1, D0 sont a zero.

* Registre "RAM donnees" - adresse A7E5/E7E5

Il permet la relecture du numero de la page RAM, impose en ecriture,
dans l'espace "donnees".
D7, D6, D5 sont a l'etat "0".

* Registre "cartouche" - adresse A7E6/E7E6

C'est le seul registre permettant une relecture complete des bits
positionnes pendant la phase d'ecriture a la meme adresse A7E6/E7E6.
Il permet notamment la relecture du numero de page RAM, impose en
ecriture, dans l'espace cartouche.

/Description des registres accessibles en lecture pour D0=1
(A7E4/E7E4)/

Il s'agit de quatre registres semblables a ceux du gate array systeme
dans le TO9.


* Registre "crayon optique 1" - adresse A7E4/E7E4

Organisation
D7 = T12 \
D6 = T11 |
D5 = T10 |
D4 = T9  | Avec T12-T5, 8 bits de poids fort du compteur trame.
D3 = T8  |
D2 = T7  |
D1 = D6  |
D0 = D5  /

* Registre "crayon optique 2" - adresse A7E5/E7E5

Organisation
D7 = T4  \
D6 = T3  |
D5 = T2  | Avec T4-T0, 5 bits de poids faible du compteur trame.
D4 = T1  |
D3 = T0  /

D2 = E   \
D1 = H2  | Avec E-H4, bits du compteur point.
D0 = H4  /

* Registre "crayon optique 3" - adresse A7E6/E7E6

Organisation
D7 - Bit significatif quand D6=0, c'est a dire, quand le spot est
situe dans les bords droits ou gauche de l'ecran.
        D7 = 0 => spot situe dans la partie gauche du cadre
        D7 = 1 => spot situe dans la partie droite du cadre.
D6 - Bit latche de situation fenetre cadre en ligne (INILN).
        D6 = 0 => spot situe dans le cadre gauche ou a droite.
        D6 = 1 => spot situe dans la partie horizontable de la fenetre
                  de travail.
Cette valeur est latchee au moment de l'interruption de lecture crayon
optique.
D5, D4, D3, D2, D1, D0 sont a l'etat "0".

* Registre "crayon optique 4" - adresse A7E7/E7E7

Note: La lecture de ce registre est independante de l'etat du bit D0
(A7E4/E7E4),ce qui le rend toujours accessible.

Organisation:
D7 - bit instantane de situation fenetre cadre en trame (INITN)
        D7 = 0 => spot situe dans le cadre en haut ou en bas.
        D7 = 1 => spot situe dans la partie verticale de la fenetre de
                  travail. 
D6 - bit latche de situation fenetre cadre en trame (INITN)
        D6 = 0 => spot situe dans le cadre en haut ou en bas.
        D6 = 1 => spot situe dans la partie verticale de la fenetre de
                  travail.
D5 - bit instantane de situation fenetre cadre en ligne (INILN)
        D5 = 0 => spot situe dans le cadre a gaucge ou a droite
        D5 = 1 => spot situe dans la partie horizontale de la fenetre
                  de travail.
D4, D3, D2 sont a l'etat "0".
D1 - bit de flag ou drapeau d'interruption de la demande FIRQN
        D1 = 0 => pas de demande
        D1 = 1 => une interruption a ete generee.
D0 - bit de recopie de D0 ecrit en A7E4/E7E4 permettant de savoir quel
type de registre est commute en lecture. CE bit est toujours
accessible.
        D0 = 0 => registre de traitement
        D0 = 1 => registre de crayon optique.

6. Le gate array "mode page" dans le TO8

Afin de procurer l'adaptation necessaire a l'unite centrale, certains
bits des registres de traitement "systeme 1" doivent etre verrouilles
dans un etat bien particulier. La description suivante met en relief
les bits necessairement "figes" pour la configuration TO8, par rapport
aux bits "X"commutables selon les fonctions ou standard a realiser.

Organisation du registre de traitement "systeme 1" en ecriture -
adresse E7E7

        X       X       X       X       0       1       0       0
                                        \_______/       \_______/
                                          type             RAM
                                      d'ordinateur      256K x 1bit

Ces conditions entrainent plus particulierement:
        MU16 = A8
        MU8  = BC2, BD2
        TU8  = 0

Les autres registres gardent la structure telle qu'elle est decrite
dans le chapitre precedent, selon le repertoire suivant
        Adresse         R/W     Type de registre
        E7E4            0       commutation ou systeme 2
        E7E4            1       crayon optique 1
        E7E5            0       RAM donnees
        E7E5            1       crayon optique 2
        E7E6            0       espace cartouche
        E7E6            1       crayon optique 3
        E7E7            0       systeme 1
        E7E7            1       crayon optique 4
        E7DD            0       systeme 2
        E7DD            1       affichage

Diagramme des signaux multiplexes

Les conditions precedemment exposees determinent le diagramme suivant:

        A0      BC1,BD1         T0      BE1     BE1
        A1      BC2,BD2         T1      0       0
        A2      A9              T2      T9      T9
        A3      A10             T3      T10     T10
        A4      A11             T4      T11     T11
        A5      A12             T5      T12     T12
        A6      A13,forme       T6      Q=0     Q=1
        A7      BC0,BD0         T7      BE0     BE0
        A8      BC3,BD3         T8      0       0
        Ligne   Colonne         Ligne   Col.1   Col.2

Les elements de ce diagramme sont a considerer dans l'ordre des poids
respectifs selon la forme:

Pour l'adressage CPU:
        BC3 BC2 BC1 BC0 A13 A12 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
        BD3 BD2 BD1 BD0 F   \___________________________________/
        \_____________/ |                   Adressage
        Commutation des |
        banques dans    \
        l'espace         \
        cartouche ou      Commutation memoire ecran RAM, RAMB
        donnees

        Il convient de rappeller que le bit D4 dans le registre "RAM
        donnees" et dans le registre "espace cartouche", de par sa
        position, joue indirectement le role d'un dix-neuvieme bit
        d'adressage par le truchement de CAS1N et CAS2N.

        De par ce fait, on peut donc considerer que le systeme est
        capable d'adresser un plan memoire de 512Ko contitue lui-meme
        de deux plans memoire de 41256 (resident et extension) et dont
        les adresses iraient de 00000 a 3FFFF pour D4=0, soit CAS1N=0
        et de 40000 a 7FFFF pour D4=1, soit CAS2N=0.

Pour l'adressage de rafraichissement ou compteurs:
        0 0 BE1 BE0 Q T12 T11 T10 T9 T8 T7 T6 T5 T4 T3 T2 T1 T0
            \_____/ | \_______________________________________/
        Commutation |                Adressage
        des banques \
        dans l'espa  \
        ce ecran.     Commutation memoire ecran RAMA, RAMB

Associtation entre adressage logique et adressage physique

Pour des raisons de comptatibilites evidente, nous savons que
l'ensemble du systeme, vu du logiciel, conduit a la determination de
quatres espaces d'adressage logique distincts:
        l'espace "cartouche"
        l'espace "ecran" (page 0)
        l'espace "systeme" (page 1 fixe)
        l'espace "donnees" (page des banques)
De par la programmation du gate array et la trasnformation de
l'adressage resultant sur le bus multiplexe MA8-M10, une page
physique, c'est-a-dire 16Ko d'un plan memoire 41256, peut etre affecte
a un espace logique donne. Le comportement individuel de chacun des
espaces logiques est specifie dans ce qui suit (cf. figure 20 page
suivante).

/Espace "cartouche"/

Cet espace situe etre 0000 et 3FFF contient normalement de la ROM sous
forme de memoire interne (BASIC 1, BASIC 512) ou de la memoire externe
(cartouche). Il est neanmoins possible d'affecter une page de memoire
vive a cet espace logique (recouvrement) en mettant el bit D5 du
registre gate array (E7E6) a l'etat 1. Dans ces conditions, CSCRTN
estdevalide et les 41256 recoivent CAS1N ou CAS2N. (cf. gestion de la
memoire morte, p96).

La correspondance entre l'adressage CPU et l'adressage multiplexeest
immediate pour les bits A0 a A13. Elle se presente sous la forme
suivante:
                        Adressage logique CPU (16 bits)
             _______________________________________________
            /                                               \
            0 0 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

BC3 BC2 BC1 BC0 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
\___________________________________________________________/
        Adressage physique transforme (18bits)

L'adressage transofrme permet un recouvrement par une des 16 pages
d'adresses de 00000 a 3FFFF pour CAS1N=0 du plan memoire resident et,
par 16 pages d'adresses de 00000 a 3FFFF pour CAS2N=0, du plant
memoire extension.

/Espace "ecran"/

Cet espace, situe entre 4000 et 5FFF, contient deux banques de 8Ko
(RAMA ou memorie point, RAMB ou memoire couleur) utilisees par
l'automate pour synthetiser l'image affichee. Par defaut, c'est la
page 0 qui est affichee, mais il est possible de demander a l'automate
d'afficher les pages 1, 2 ou 3.

Le principe est le suivant:
- Apres un RESET, une mise sous tension ou si les bits D7, D6 du
registre situe en E7DD sont tous les deux a 0, c'est la page phsyqieu
0 qui ets affichee a l'ecran. La facon dont les donnees sont
interpretees par l'automate d'affichage depend alors du mode choisi.

- En reprogrammant les bits D7 et D6 de E7DD, on peut afficher les
pages physique 1, 2 ou 3. Si ond emande l'affichage de la page 1,
c'ets le contenu de la RAM "systeme" qui apparaitra a l'ecran. Ce
contenu ayant peu d'interret, ce sont surtout les pages 2 et 3 qui
seront utilisables.

- Lorsque le CPU accede a l'espace logique d'ecrean, c'est *toujours*
la page physique 0 qui ets adresse, meme si l'automate d'afffichage
utilise une autre page. Dans l'espage logique d'ecran, le CPU utilise
le bit "FORME" pour travailler dans la memoire RAMA (point) ou RAMB
(couleur), de par la programmation en emulation du bit D0 en E7C3.

- Si le CPU veut acceder aux pages 2 et 3 en les considerant comme des
ecrans, il doit les affecter a son espace RAM "donnees" afin de
pouvoir les lire ou les ecrire. Dans ce cas, on doit considerer que la
memoire RAMA (point) se trouve aux adresses hautes de la page, tandis
que les adresses basses contiennent les infotrmations RAMB (couleurs);
en effet, le bit FORME traditionnel est inoperant dans l'espace
"donnees". 

- La page affichee par l'automate peut etre en meme temps affectee a
l'espace "donnees", voir a l'espace "cartouche". De par le principe
enonce, si on veut par exemple afficher la page 2, dans laquelle le
CPU puisse faire une mise a jour, il faudra necessairement affecter la
page 2 a l'espace RAM "donnees" qui sera consideree alors comme la
nouvelle memoire ecran; et demander a l'automate d'afficher la page 2,
en programmant les bits D7 D6 en E7DD respectivement a 1 et 0.

/Espace "systeme"/

Cet espace logique situe entre 6000 et 9FFF contient les informations
vitaales a l'unite centrale, telle que la page 0 du moniteur. Cet
espace n'est pas reconfigurable, on dit qu'il est fixe. C'est la page
physique 1 du plan memoire 41256 qui y est constamment affecte. Aucun
registre ne permet de reprogrammer cet espace.

/Espace "donnees"/

CEt espace est situe entre A000 et DFFF. Sur TO9 et sur TO7/70 cet
epsace etait gere en "bank switch" a l'aide des bits de PUA qui
permettaient de choisir une page physique de 16Ko parmi six. Toujours
pour des raisons de comaptibilite, cette technique est ici totalement
emulee par le gate array mode page. L'ecriture et la lecture des cinq
bits de PIA se font identiquement. Pour obtenir cette emulation, il
faut que le bit D4 du registre E7E7 soit mis a 0. Ceci est obtenu par
defaut au RESET et a la mise sous tension.

Nous savons qu'un deuxiemme mode estdisponible en mettant a 1 le bit
D4 de E7E7. Dans ce mode, il suffit d'ecrire le numero (de 0 a 3&) de
la page physique souhaitee, par les bits d4-d0 du registre E7E5, pour
que la page concerneee soit affectee a l'espace "donnees". Ainsi la
gestion de la memoire s'en trouve simplifiee puisqu'une simple
ecriture de numero de page suffit a effectuer le recouvrement. La
correspondance entre l'adressage CPU et l'adressage multiplexe est
immediate pour les bits A0 a A13. Elle se presente sous la forme
suivante: 
                        Adressage logique CPU (16 bits)
             _______________________________________________
            /                                               \
            1 0 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
            1 1

BD3 BD2 BD1 BD0 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
\___________________________________________________________/
        Adressage physique transforme (18bits)

Comme pour l'espace cartouche, l'adressage transforme permet le
recouvrement des deux pplans memoire de 256+256 = 512KO par
l'intermediaire du CAS1N et CAS2N e nrelation avec le bit D4. Il faut
noter cependant que de par la transposition schematisee ci-avant, i
lexistre une distorsion entre les deux adressages qui se manifestent
dans le champ A15-A12. Aisni, en prenant par exemple un recouvrement
par la page 2:

        BD3=0   BD2=0   BD1=1 BD0=0

la transposition devient:

        Adressage logique       Adressage physique
        A15 A14 A13 A12 ...     BD1 BD0 A13 A12 ...
         1   0   1   0  ...      1   0   1   0  ...
         1   0   1   1  ...      1   0   1   1  ...
         1   1   0   0  ...      1   0   0   0  ...
         1   1   0   1  ...      1   0   0   1  ...

On traduit ce phenomene par un decoupage en tranches de 4Ko, exprime
par le tableau suivant, selon la valeur de A13, A12:

        Adresse logique         Adresse physique
        A000-AFFF               3eme tranche de 4Ko
        B000-BFFF               4eme tranche de 4Ko
        C000-CFFF               1ere tranche de 4Ko
        D000-DFFF               2eme tranche de 4Ko

Cette transposition n'a pas d'importance tant que l'on ne transfere
pas d'information de l'espace "donnees" vers les autres espaces. Si on
epere des transferts, il faut alors tenir compte des correspondances.

Par deduction, la correspondance entre l'espace "cartouche" et
l'espace "donnees" est la suivante:

        Espace "donnees"        Espace "cartouche"
        A000-AFFF               2000-2FFF
        B000-BFFF               3000-3FFF
        C000-CFFF               0000-0FFF
        D000-DFFF               1000-1FFF

De meme, la correspondance entre l'espace "donnees" et l'espace
"ecran" est telle que:
        
        Espace "donnees"        Espace "ecran"
        A000-BFFF               RAMB
        C000-DFFF               RAMA

La correspondance entre espace "cartouche" et espace "ecran" est donc
quant a elle:
        
        Espace "cartouche"      Espace "ecran"
        0000-1FFF               RAMA
        2000-3FFF               RAMB

On notera pour terminer que les six pages accessibles par bits PIA,
selon l'ancien mecanisme, correspondent aux pages 2 a 7 selon le
nouveau systeme.

On en deduit:
        Ancient systeme         Nouveau systeme
        de banque               de banque
        0                       2
        1                       3
        2                       4
        3                       5
        4                       6
        5                       7

Au RESET, la gestion par bit de PIA etant prise par defaut, c'est la
page physique 2 qui ets affectee a l'espace RAM "donnees".

Gestion de l'affichage

La procedure d'affichage sur l'ecrab est sensiblement identique a
celle du TO9 (cf. etude materielle du TO9, page 54). Le gate array
mode page integre la totalite de la circuiterie video capable de gere
les differents modes d'affichage connus sur le TO9. Il est prevu pour
piloter directement une palette externe.

Selon les modes d'affichages, les couleuirs imposees en configuration
de base different de celle connues sur le TO9. Le bit S (saturation)
est notamment rempalce par le bit P (pastelà.

En dehors du bit D5 du registre "systeme 1" en E7E7 qui permet de
definir le standard 624 lignes (systeme europeen) ou 524 lignes
(systeme NTSC), un registre special appele registre "affichage", situe
en E7DC, contient les bits de programmation essentiels de l'affichage.

Ce registre d'affichage est identique a celui du tO9 (cf. systeme de
visualisation du TO9) et, de la meme maniere, permet de decider:
        - du mode d'affichage
        - de la frequence pixel
        - de l'organisation relative des bits a l'interieurs des
          donnees video extraite de la memoire.

Cette procedure est recapituelee par le tableau suivant:

        Mode                    D7  D6  D5  D4  D3  D2  D1  D0
                                0   T1  T0  Ø1  Ø1  C   B   A

        TO7                     0   0   0   0   0   0   0   0
        bitmap 4                0   0   1   0   0   0   0   1
        bitmap 4 special        0   1   0   0   0   0   0   1
        80 colonnes             0   0   1   0   1   0   1   0
        bitmap 16               0   1   1   1   1   0   1   1
        page 1                  0   0   1   0   0   1   0   0
        page 2                  0   0   1   0   0   1   0   1
        surimpression           0   0   1   0   0   1   1   0
        triple sur impression   0   0   1   1   1   1   1   1
                                    \___/   \___/   \_______/
                                   organ.   freq.      mode
                                            pixel

La consultation de ce tableau permet de voir qu'il existe un neuvieme
mode d'affichage non utilise sur le TO9, *le mode bitmap 4 couleurs
special*. Le schema de codage est de transcodange en RAM est le
suivant:

Mode bitmap 4 (rappel):
                RAMA                            RAMB
        C7 C6 C5 C4 C3 C2 C1 C0         C7 C6 C5 C4 C3 C2 C1 C0
        \_____________________/         \_____________________/
         definition du rouge R           definition du vert V

Apres transcodage (mode bitmap 4 special)

        C7 C6 C5 C4 C3 C2 C1 C0         C7 C6 C5 C4 C3 C2 C1 C0
        R  V  R  V  R  V  R  V          R  V  R  V  R  V  R  V  

Dans ce type de codage, un point est presente par deux bits
consecutifs du meme octet. Cette organisation presente un interet pour
certaines routines graphiques; toutefois, ilfaut noter qu'elle n'est
pas employee par les routines du moniteur. (sam: hehe ce mode c'ets du
chunky sur 2 bits :)))

Gestion des couleurs du cadre

La couleur du tour de l'ecran est programmage directement par le
registre "systeme 2" en E7DD, par les bits D3 a D0, selon un
organisation semblable a celle du TO9, exception faite pour le  bit S
(saturation) qui devient P (pastel).

        D3 D2 D1 D0     
        P  B  V  R

Les decodages d'adresses

Le gate array mode page genere directement un certain nombre de
signaux destines a selectionner les differents ROMS et peripheriques.
Ce sont:
        CSMN    = selection de l'espace moniteur
        CSCRTN  = selection de l'espace cartouche
        CS32    = selection de 32 octets (FFD0-FFEF)
        E7CXN   = selection de la zone des 6821 et 6846
        CSPALN  = selection de la palette
        EXXXN   = selection peripheriques externes
        DISN    = selection du controleur disque (E7D0 a E7D9)

Les signaux CS32, E7CXN, CSPALN sont decodes par une simple logique
combinatoire et sont toujorus valides. Les autres signaux dependent de
la proigrammation de certains registres et leur comportement est
detaille ci-apres.

/Selection de l'espace moniteur/

Le moniteur systeme du TO8 est situe de l'adresse E800 a FFFF.
L'espace utilise par le moniteur du drive (floppy ou QDD) est palce
de E000 a E7AF. Les deux moniteurs faisant partie integrante d'une
meme ROM, c'est le mem signal qui est valide sur l'ensemble:

        [E000-E7AF] U [E800-EFFF].

Pa railleurs, il est possible en programmant le bit D7 du registre
"systeme 1" en E7Z7 a l'etat 1, d'installer un controleur de memoire
de masse externe. Dans ce cas de figure; CSMN n'est plus valide de
E000 aE7AF.

Il est a signaler que l'espace moniteur contient un "trou" de 32
octets situe en FFD0 et FFEF qui sont reserves aux decodages
d'extention futures (role de CS32 en relation avec le connecter
d'extention). Dans cet espace, CSMN=1. (sam: tiens ce truc me fait
vaguement penser a l'espace autoconfig de 64Ko sur amiga en E9000).

/Selection de l'espace cartouche CSRTN/

L'espace logique reserve aux logiciels externes (cartouche) ou interne
s'etend de 0000 a 3FFF. Il eput etre recouvert par de la RAM en
positionnant le bit D5 duregistre "espace cartouche" a l'etat 1. Dans
ce cas, CSRTN qui est normallement valide passe a l'etat 1, supprimant
par la-meme, toute communication avec les ROMS. 

/Selection de la zone des peripheriques externes EXXXN/

Le signal EXXXN sort du gate arrau "mode page" pour aller vers les
connecteurs d'extenssions de l'unite centrale ou il est utilise par
les peripheriques pour leur decodage.

Il permet, entre autre, d'effecture un predecodage d'adresses dans le
cas ou l'utilsiateur desire se fabriquer sa propre extension. Ce
dernier devra lors imperativement loger son interface dans l'espace
memoire E7B0 a E7BF.

Comme dans le TO8, un bon nombre d'adresses correspondant a la zone
EXXX sont deja exploitees, il faut donc dque le signal correspondant
soit non valide quand il y a risque de conflit entre un peripherique
exterieur et l'unite centrale.

Les possibilites de conflit different selon l'utilisation ou non d'un
controleur externe.

En utilisation normale (D7 du registe "systeme 1"=0), EXXXN est
invalide sur l'ensemble [E000-E7AF] U [E7D0-E7D9].

En utilisation d'uncontroleur externe (D7=1), EXXXN reste valide a ces
endroits.

De meme, une souplesse de programmation est laissee pour l'octet E7DC
qui peut etre a la fois employe en temps que registre d'affichage ou
par un controleur externe QDD.

Si le bit D7 du registre "donnees" en E7E5 est ecrit a 0, alors EXXXN
n'est pas valide a l'adresse E7DC; sinon EXXXN reste valide a
l'adresse E7DC mais on ne peut plus acceder au registre d'affichage.

L'ensemble des adresses [E7DA-E7Db] U [E7DD-E7DF] invalide toujours le
signal EXXXN car elles correpondent a la palette et certains registes
proteges.

/Selection du controleur du DRIVE DISN/

Ce signal n'est valide sur [E7D0-E7D9] que si le bit D7 du registre
"systeme 1" (E7E7)=0,determiannt alors l'utilisation du controleur
interne.

/Tableau recapitulatif/

Avec D77 bit du registre "systeme 1" en E7E7 pour le controleur
externe, D75 bit du registre "RAM donnees" en E7E5 pour le choix d'un
QDD.

        D77 = 0                 D77 = 1
        D75 = 0          D75 = 0       D75 = 2

Espace          CSMN    EXXXN   DISN    CSMN    EXXXN   DS1N    EXXXN
E000-E7AF       0       1       1       1       0       1       0
E7B0-E7CF       1       0       1       1       0       1       0
E7D0-E7D9       1       1       0       1       0       1       0
E7DA-E7DB       1       1       1       1       1       1       1
E7DC            1       1       1       1       1       1       0
E7DD-E7DF       1       1       1       1       1       1       1
E7E0-E7FF       1       0       1       1       0       1       0
E800-EFFF       0       1       1       0       1       1       1
                                                                QDD
                \_______________/       \_______________________/
                controleur interne      controleur externe

Gestion du Crayon optique

Le fonctionnement de l'interupteur du crayon optique est assure de la
meme maniere que sur le TO9 (cf. gestion du crayon optique, page 82).

Pour la gestion du photo-transitor, via un circuit a miroir de
courant, ler signal CKLPN est recupere par le gate array mode page qui
integre la demande d'interuption FIRQN etablie anciennement apr le
6821 dans le TO9. En dehors de cette particularie, le fonctionnement
reste pratiquement semblable et le gate array mode page offre, comme
son successeur la possibilite de faire des mesures avec la resolution
du point.

Nous savons que quatre registres permettent de lire les infotrmation
afferentes a une mesure light-pen; ce sont:
        E7E4 - registre crayon optique 1
        E7E5 - registre crayon optique 2
        E7E6 - registre crayon optique 3
        E7E7 - registre crayon optique 4

En ecrivant le bit D0 de E7E4 a 1, on s eprepare a pouvoir lire ces
registres et, par la meme occasion, on aurotise le passage du signal
arrivant du crayoin optique lui-meme vers la sortie ITLP du gate array
relie a l'entree FIRQN du CPU. On "arme" donc la routine light-pen en
rendant le CPU interruptible par les signaux de mesure en provenance
du crayon optique. L'arrivee d'une impulsion de mesure CKLPN provoque
une FIRQN sur le CPU et latche le contenu du compteur 16 bits
assiocie. La valeur du compteur designe alors le pixel "vu" par le
crayon optique. Le CPU peut alors lire le contenu de ce compteur par
le registre E7E4 et E7E5.
        - E7E4 donne les 8 bits de poids fort:
                T12 T11 T10 T9 T8 T7 T6 T5
        - E7E5 donne les 8 bits de poids faible
                T4  T3  T2  T1 T0 E  H2 H4

Les 3 bits E, H2, H4 issus d'uncomptage a 8Mhz donnent une resoltuion
du pixel dans les modes 320x200 et d'un pixel sur 2 en mode 80
colonnes (hehe il voit myope le lightpen en 80 cols :). D'autres
informations completant la levcture de ces compteurs sont disponibles
dans les deux autres registres (cf. DEscription des registres
accessibles en lecture pour D=0, page 114).

Au moment de l'arrivee de CLKLPN, un drapeau d'interruption est leve
dans le bit D1 du registe E7E7. Ceci permet de verifier que
l'interruption FIRQN a bien ete causee par le crayon optique.

La lecture des poids faibles du compteur light-pen (E7E5) a pour effet
de relacher la ligne FIRQN et d'abaisser le drapeau d'interruption
dans le registe E7E7. Des que cette lecture est effectuee, le gate
array est donc pret a effecture une autre mesure.

L'organisation du gate array mode page permet donc d'implementer une
routine de mesure du crayon optique similaire a celle qui existe sur
le TO9 (cf .etude materielle du TO9, gestion du crayon optique, page
82). 

7. Chaine de visualisation

Le gate array "mode page" genere les informations R, V, B, P et HP
necessaires au circuit de palette IGV EF 9369 d'une facon parfaitement
identique au TO9 (cf. Le systeme de visualisation du TO9, page 52). Ce
circuit remplit bien evidemment les memes fonctions (choix de 16
teintes parmi 4096, choix de la couleur d'incrustation) et se
programme de la meme maniere.

Les trois sorties analogiques R, V, B attaquent, d'une facon toujours
identique au TO9, la prise peritel a travers un circuit d'adaptaion et
un melangeur recevant le signal SYNLT pour reconstituer uen video
composite.

Les trois sorties sont derivees vers un adaptateur pour un eventuel
modulateur PAL (version EXPORT).

Le circuit d'incrustation, bien que semblable a celui du TO9 dans son
principe (cf. Circuit d'incrustation du TO9, pahe 71) differe par sa
conception. En effet, la gate array "mode page" possede une entree
speciale (16Mhz VCO) de remise en phase, ce qui, en demande
d'incrustation, ne necessite pas une decommutation de l'horloge mere.

La figure 21 concretise le fonctionnement general du dispositif.

Ainsi en fonctionnement normal (apres mise sous tension ou RESET) le
bit CB2 du PIA systeme est a l'etat 1. Le transitor T14 est sature et
le transistor TO6 est bloque. Le 12V apparait en commande de
commutation lente et force par la diode D4 et la conduction du
transistor TO5 la commande de commutation rapide. Le bit marqueur en
provenance du circuit palette est inoperant, la diode D7 etant
bloquee.

En fonctionnement incruste, apres mise a l'etat 0 de CB2 par
programmation, le transitor T14 est bloque, entrainant la saturation
du transitor TO6. La commande de commutation lente devient active
(0V). Le bit marqueur, protege par la diode D4 constamment bloquee,
devient maitre d'oeuvre pour envoyer la commande de commutation rapide
a travers TO5, selon la procedure connue sur le TO9:    
                                      _
        couleur hors incrustation ==> M = 1 --> commutation rapide
                                      _
        couleur d'incrustation    ==> M = 0 --> pas de commutation
                                                rapide

Le boitier d'incrustation branche, le gate array recoit la commande de
remise en pahse ligne par l'intermediaire du 16Mhz VCO. Il recoit la
commande de remise a l'heure trame par l'intermediaire de CLRG.


8. Les interfaces

Le tO8 comprend quatre circuits d'interface pour gerer ses divers
peripheriques (un 6846, deux 6821, un 6804). Certains bits restent
compatibles pour le TO9, ce qui est mis en evidence dans la
description suivante.

L'interface 6846

/Partie ROM/

Comme pour le TO9, la partie memoire morte de ce boitier complexe
n'est pas utilise (adressage sur 4bits de A0 a A3).

/Partie PIA/

Le port 8 bits a, par initialisation, trois lignes P2, P4, P5
configurees en sortie et trois autres lignes P1, P6, P7 en entree. Le
bit P0, bien que configure en sortie, n'est pas utilise materiellement
(broche non connectee). En fait, l'action de ce bit est emulee dans le
gate array "mode page" (cf. Le gate array mode page) CF 7021, page
105) pour la commutation du bit forme.

        - Le bit P1 comme pour le TO9, assure la lecture de l'etat de
        l'interrupteur du crayon optique (0 ==> interrupteur ouvert,
        1 ==> interrupteur ferme).

        - Le bit P2, incompatible sur le TO9, commande la communtation
        cartouche/logiciels internes (cf. selection entrelogiciels
        residents et cartouche, page 98).

        - Le bit P3 n'est pas utilise (ancienne commande LED clavier
        TO7, TO7/70).

        - Le bit P4, incompatible sur le TO9, determine la selection
        de page moniteur (cf. selection d'une page moniteur, page 98
        avec: 
                0 ==> partie basse
                1 ==> partie haute

        - le bit P5, incompatible TO9, envoie le signal ACK
        (acknoledge-accuse de reception), en retour d'un communication
        du clavier (cf. Le 6804, page 138).

        - Le bit P6, incompatible TO9, recoit l'information BUSY
        (indicateur d'occupation) de l'imprimante CENTRONICS avec:
                0 ==> imprimante occupee
                1 ==> imprimante disponible

        - Le bit P7 receptionne, comme pour le TO9, les informations
        numeriques decodees en lecture du LEP.

Les lignes de controles, incompatibles avec celles du TO9, assurent
pour:
        - CP1: la reception des donnees en transmission serie,
        priovenant du clavier via le 6804. Chaque bit est code selon
        une temporisation recuperee en demande IRQN parle 6809E (cf.
        fonctionnement du 6804).

        - CP2: initialise en sortie, envoie la commande "MUTE"
        procurant un blocage du son (action sur un transistor du
        melangeur) lorsque l'utilisateur manipule la souris:
                0 ==> passage du son
                1 ==> blocage du son


/Partie TIMER/

D'une facon identique au TO9, la sortie CT0 genere l'ecriture
cassette.

/Adresses des registres internes/
        E7C0 - register d'etat composite
        E7C1 - registre de controle peripherique
        E7C2 - registre de direction de donnees
        E7C3 - registre de donnees peripheriques
        E7C4 - registre d'etat composite
        E7C5 - registre controle temporisation
        E7C6 - registre temporisation

Le 6821 systeme

A l'exception de CB1 recevant par la broche 5 du connecteur crayon
optique, une eventuelle demande en code barre, et des bits PB7,PB6,
PB5, PB4, PB3 de commutation banque RAM sur le TO9, dont l'action est
ici parfaitement emulee par le gate array "mode page" (les broches
sont "ent l'air"), le composant joue le meme role que dans l'unite
centrale TO9 (cf. Utilisation du 6821 dans le TO9, pages 75).

/Adresses des registres internes/
        E7C8 -  registre de direction de donnee ou registe de donnees
                partie A
        E7C9 -  registre de direction de donnee ou registe de donnees
                partie B
        E7CA - registre de controle partie A
        E7CB - registre de controle partie B

Le 6821 jeux et musique

Ce boitier a, de par l'initialisation, toutes ses lignes en entree. La
quasi-totalite des lignes assume l'exploitation des manettes de jeux
ou de la souris. Lorsque l'unite centrale doit emmetre un message
sonore, six bits du port B sont alors commutes en sortie pour
attaquer, apres bufferisation, un convertisseur numerique analogique
du type CNA R/2R dont la sortie est reliee au melangeur recevant par
ailleurs une eveluelle information audio, apres lecture du LEP.

/Description des broches/

- Port A
        Quatre lignes sont cosacrees a la manette de jeux "0" ou a la
        souris, par l'intermediaire du connecteur B12 (prise avant)
        avec: 
                PA0     contact nord    ou gachette 1
                PA1     contact sud     ou gachette 2
                PA2     contact ouest   ou XB
                PA3     contact est     ou YB

        Les quatres autres lignes sont consacrees a la manette de jeux
        "1" par l'intermediaire du conencteur B14 (prise arriere)
        avec: 
                PA4     contact nord
                PA5     contact sur
                PA6     contact ouest
                PA7     contact est

- Port B
        Chaque ligne a un role complexe:
                PB0     commun bufferise pour la manette de jeux "0"
                        ou bit 0 configure en sortie pour le CNA.
                PB1     commun bufferise pour la manette de jeux "1"
                        ou bit 1 configure en sortie pour le CNA.
                PB2     bouton d'action B de la manette de jeux "0" ou
                        XA de la souris ou bit 2 configure en sortie
                        pour le CNA. 
                PB3     bouton d'action B de la manette de jeux "1" ou
                        bit 3 configure en sortie pour le CNA. 
                PB4     bit 4 configure en sortie pour le CNA.
                PB5     bit 5 configure en sortie pour le CNA.
                PB6     bouton d'action A de la manette de jeux "0" ou
                        YA souris.
                PB7     bouton d'action A de la manette de jeux "1".

Les lignes de controel CA1, CA2, CB1, CB2 peuvent etre utilisees
conjointement en demande IRQN pour les boutons d'action ou la souris
selon:
                CA1     bouton d'action B pour la manette "0"
                CA2     bouton d'action A pour la manette "0"
                CB2     bouton d'action A pour la manette "1"
                CB1     bouton d'action B pour la manette "1".

De par l'emploi des memes connections pour l'elaboration du son et
pour l'utilisation de la souris, il est necessaire, pour ne pas etre
gene par un bruit parasite a chaque manipulation, de bloquer la sortie
son. Cela est realise par le bit CP2 du PIA 6846 (0 sortie son
validee, 1 sortie sont invalidee) qui vient agir sur le melangeur

/Adresses des registres internes/

        E7CC -  registre de direction de donnees ou registre de donnees
                partie A
        E7CD -  registre de direction de donnees ou registre de donnees
                partie B
        E7CE -  registre de controle partie A
        E7CF -  registre de controle partie B.

Le 6804

Le MONOCHIP 6804 a poru tache l'interfacage et le traitement du
clavier en relation avec le 6846 et le 6821 systeme.

/Interfacage du clavier/

La figure 25 montre les interconnexions entre la matrice 10 x 8 du
clavier et les ports A, B et C du 6804. Ce dernier est pilote par
unquartz a la frequence de 11Mhz.

/Fonctionnement/

Comme pour le TO9, c'est el clavier qui indique au 6809E qu'une touche
vient d'etre appuyee. La transmission est realisee par un dialogue
entre les deux microporcesseurs via trois bit de PIA:
        - CP1 du 6846, pour les donnees a transmettre
        - P5 du 6846, pour la reconnaissance d'une touche du clavier
          (ACK),
        - PA0 du 6821 systeme pour la reconnaissance du peripherique
          (KTEST).

* Emission d'une donnee par le microprocesseur "clavier":
        Les donnees emises par le microprocesseur "clavier" se
        composent de 9 bits:
                1er bit:        touche CNT enfoncee     --> 1
                                touche CNT libre        --> 0
                2eme bit:       touche SHIFT enfoncee
                                ou CAPS LOCK actionne   --> 1
                                touche SHIFT libre et 
                                CAPS LOCK non actionne  --> 0
                7 bits suivants: 
                                Numero de la touche 0 a 79
                                (contrairement au TO9 et TO9+, ce
                                n'est pas le code ASCII de la touche
                                qui est envoye, mais seulement le
                                numero de la touche, le transcodage  
                                numero -> code ASCII etant a la charge
                                dur 6809E). 

Correlativement avec KTEST, pour prevenir le 6809E qu'il va recevoir
une information clavier, le 6804 descend le bit PC3 a 0, ce qui
provoque une interruption par le bit CP1 du 6846. Il attend ensuite
que le 6809 descende le fil P5 du 6846 a 0, lui ondiquant qu'il est
pret a recevoir les 9bits de donnees (signal ACK).

Les informations series transmises repondent a la convention suivante:
        - un 1 logique est ocde comme etant une impulsion positive de
          56 microsecondes.
        - un 0 logique est code comme etant une impulsion positive de
          38 microsecondes. (sam: oula ca doit etre complexe a emuler
          ca).

Dans l'exemple de la figure 25, la touche CNT est enfoncee en meme
temps que la touche "U"du clavier "metropole" dont le code est 32 en
hexadecimal.

* Emission d'une requete au clavier par le 6809E:
        
Le 6809 peut emettre 3 requetes differentes au 6804:
        Initialisation: Le 6804 renvoie alors au 6809E, un code
                        indiquant que le clacier est configure en
                        version Francaise ou Export. Le clavier se met
                        en CAPS LOCK actif - LED allumee. 

        Majuscule:      Le clavier se met en CAPS LOCK actif - LED
                        allumee.

        Minuscule:      Le clavier s emet alors en CAPS LOCK inactif -
                        LED eteinte.    

Quand le 6809E souhaite emettre une requete, il met P5 a 0 et attend
que le 6804 descende le fil PC3a 0, le 6804 compte alors le temps
pendant lequel P5 reste a 0. Le 6809E peut donc gerer tois
temporsations differentes correspondant aux trois requetes possibles:
        - 0.67 millisecondes --> demande d'initialisation du 6809E
        - 1.30 millisecondes --> mise en CAPS LOCK actif
        - 1.90 millisecondes --> mise en CAPS LOCK inactif.
(sam: ca non plus ca ne doit pas etre facile a emuler!).

9. Le controleur de l'unite de disquette

Le controleur de drive du TO8 est un nouveau boitier gate array THMFC1
developpe par THOMSON Micro-Informatique, pour repondre aux besoins
des nouvelles machines. Il presente, nottamment, une adaptabilite aux
differents formats d'enregistrement des donnees (codage FM et MFM) et
a la gestion des floppies 3"5, 5"25 ou d'un QDD (Quick Disk Drive).

Il peut commander deux unites de disquettes a la fois. D'un point de
vueexterne, le THMFC1 s'apparente au WD 2793 ou WD 1770 utilises sur
le TO9. En interne, il se distingue par l'emploi d'un separateur de
donnees utilisant la technique de comptage a la place d'un circuit a
verrouillage de phase (PLL). De meme, il integre une registre du choix
de codage simple ou double densite (FM, MFM).

Branchement du THMFC1

En liaison directe avec le bus du 6809E (figure 26), le controleur est
connecte au bus d'adresses par les trois lignes A2, A1, A0. Ces trois
bits, en relation avec le decodage d'adresse DISN (actif pour E=1)
dans l'espace E7D0 a E7D9, et en relation avec la commande R/WN
(retardee en lecture), permettent la selection des onze registres dont
dispose le composant.

La figure 26 decrit les differentes commandes concernant les unites de
disquettes.

On distingue:
- La commande MO du moteur de drive (non utilisee pour le QDD). Elle
est en liaison avec la selection du controleur qui, via un monostable
redeclenchable, avec une constante de temps de plusieurs secondezs,
integre les demandes d'acces et procure une inerie suffisante du
moteur adaptee pour le bon fonctionnement du mecanisme.

- READY est une information en retour de la mecanique confirmant
l'insertion de la disquette, la mise en route du moteur, la frequence
d'index correcte. Cette commande permet de valider, dans le
controleur, les actions de lecture et d'ecriture.

Des commandes bufferisees par un 74LS07 delivent:
- Les ignaux de commande mecanique du drive:
        STEPN   Pour deplacer la tete de lecture/ecriture d'un pas.
                Cette commande est inutilisee dans un QDD.
        DIRN    Pour indiquer a la mecanique dans quel sens deplacer
                la tete (0 vers le centre, 1 vers l'exterieur).
        WGN     Le signal d'autorisation d'ecriture.
        WDN     Flot de donnees series d'ecriture de la disquette.
        DS0N DS1N
                Les signaux de choix du drive.

- Le signal SIDEN bufferise par un transistor indique a la mecanique
sur quelle face de la disquette travailler (0 face superieure, 1 face
inferieure). Pour le QDD, cette commande concerne l'alimentation du
moteur. 

Quatre signaux d'entree informe le controleur:

IPN     Indique  le passage du repere d'index (une impulsion negative
        par tour de disquette). Dans le QDD, ce bit indique la
        presence ou l'absence de disquette (1=disquette presente).

TROON   Indique que la tete de lecture/ecriture est positionnee sur la
        piste 0. Avec le QDD, ce bit est envoye constamment a l'etat
        0, ce qui permet au THMFC1 de "savoir" quel type de machine il
        doit controler. 

WPRTN   Indique que la disquette inseree dans la mecanique est
        protegee en ecriture.

RDN     Flot de donnees lues sur la disquette.

Descritption et programmation des registres

* Registre CMD0 en ecriture a E7D0

bit 7 = 0
bit 6 = 0
bit 5 = 0       => MFM
      = 1       => FM
bit 4 = 1       => validation de la detection des mots de synchro
bit 3 = 0       => inhibition de la synchronisation du separateur de
                donnees pour le formatage.
bit 2 = 1       => active la sortie WGN
bit 1 \
bit 0 /         => code operation
                        0 0     reset
                        0 1     ecriture secteur
                        1 0     lecture adresse
                        1 1     lecture secteur

* Registre CMD1 en ecriture a E7D1

bit 7           => bit de compatibilite
bit 6 \
bit 5 /         => longeur du secteur
                        0 0     128 mots/secteur
                        0 1     256 mots/secteur
                        1 0     512 mots/secteur
                        1 1     1024 mots/secteur
bit 4 = 0       => face 0 du disque
      = 1       => face 1 du disque
bit 3,2,1       => commande de precompenssation a 437.5ns par pas de
                62.5ns. 
bit 0 = 1       => inhibition du systeme, lorsque le signal READY est
                inactif (bit a 1).

* REgistre CMD2 en ecriture a E7D2

Registre de commande, il a des fonctions differentes selon le drive
utilise: Floppy ou QDD.

bit 7           => non utilise
bit 6 = 0       => face 0 du floppy (commande active du moteur QDD).
      = 1       => fonctions inverses.
bit 5 = 0       => commande de direction vers l'exterieur (piste 0) du
                disque. 
      = 1       => fonction inverse
                (non utilise pour le QDD).
bit 4 = 0       => commande de pas inactivee pour le floppy.
      = 1       => active
                (non utilise pour le QDD).
bit 3           => non utilise
bit 2 = 0       => commande moteur inactive pour le floppy
      = 1       => active
                (non utilise pour le QDD).
bit 1           => commandes de selection de drive (floppy et QDD)
bit 0           actives a l'etat 1

* Registre d'etat STAT0 en lecture a E7D0

bit 7           => image de l'horloge caractere
      = 1       => demande d'operation
      = 0       => par lecture ou ecriture des registres RDATA ou
                WDATA. 
bit 6 = 0
bit 5 = 0
bit 4 = 1       => indication que l'operation se termine
bit 3 = 1       => indication que l'operation est terminee.
bit 2 = 1       => erreur de CRC (checksum de la zone d'identification
                de donnees).
bit 1           => action identique au bit 7 pour les operations dites
                intelligentes. 
bit 0 = 1       => indique le bon resultat d'une detection synchro.

* Registre d'etat STAT1 en lecture a E7D1

Ce registre contient des informations differentes selon le drive
utilise. 

bit 7 = 0
bit 6 = 1       => detection d'index pour le floppy
                (presence de disquette pour le QDD)
bit 5 = 1       => information de changement de disquette non utilise
                pour le QDD.
bit 4           => image inverse de la commande moteur MO
bit 3 = 1       => detection de la piste 0 pour le floppy
                (information de detection d'un QDD).
bit 2 = 1       => information de protection en ecriture sur le floppy
                et le QDD.
bit 1 = 1       => information "ready" en provenance du floppy ou du
                QDD. 
bit 0           => non utilise.

* Registre de donnees WDATA, RDATA enecriture ou lecture a E7D3.

Ces registres 8 bits ont le role traditionnel de tampon.

* Registre d'horloge type en ecriture a E7D4

Ce registre 8 bits contient la configuration (FF) pour les donnees et
(0A) pour les mots de synchro.

* Registre WSECT en ecriture a E7D5.

Comporte le numero de secteur a chercher. Le controleur se charge de
comparer les informations ecrites dans ce registre avec celles
presentes sur la disquette dans la zone d'identification.

* Registre piste WTRCK en ecriture a E7D6.

Meme gestion que pour le registre secteur.

* Registre largeuyr de cellule  WCELL en ecriture a E7D7

bit 7 = 0       => modification des caracteristiques du separateur de
                donnees (pour pistes interieurs de la disquette.
                Precompensation). 
      = 1       => fonctionnement normal du separateur.
bit 6-0         => valeur permettant de charger le compteur du
                separateur selon le mode de codage utilise.

Specification d'un secteur

Un secteur est compose d'un champ d'identification et d'un champ de
donnees selon le modele:

        Nombre d'octets         Caracteres      Designation
              / 12                 0 0          synchro bit
              |  3            A1 horloge 0A     synchro caractere
              |  1                 F E          adresse debut identif.
Champ         |  1                              numero de piste
d'identif-    |  1                              numero de face
ication       |  1                              numero de secteur
              |  1                              longeur secteur
              |  2                              controle CRC
              \ 22                              espaces

              / 12                 0 0          synchro bit
              |  3            A1 horloge 0A     synchro caractere
Champ de      |  1                 F B          adresse debut donnee
donnees       | selon long. de secteur          donnees
              |  2                              controle CRC
              \  1                              inhibition porte ecrit.
                variable selon le drive         espace

Les fonctions "intelligentes" du comtroleur consistent a lire une
adresse, un secteur ou ecrire un secteur. Elles sont programmees par
les bits 1 et 0 du registre CMD0. Chaque fonction doit permettre
l'acquittement d'une serie d'operations repondant aux specifications
decrites ci-avant.

------------------------------------------------------------------------------

QUATRIEME PARTIE - Analyse materielle du TO9+

1. Conception generale - Description

Le TO9+ etant la symbiose du TO9 et du TO8, nous faisons references
tout au long de cette partie a des similitudes de structure et de
fonctionnement. Nous invitons le lecteur a se reporter, pour plus de
details, aux chapitres concernant les produits cites en comparaison.

Comme le TO9, le micro-ordinateur TO9+ est architecture autour du
6809E, microprrocesseur commande a la frequence de 1MHz par deux
horloges exterieurs en quadrature: E et Q.

Les bus d'adresses 16bits est direct pour la cartouche et le gate
array mode page. Il est bufferise par 2 x 74LS224 pour adjoindre les
autres composants.

Le bus de donnees 8 bits comporte deux derivations bufferisees et
controlees par deux 74LS245. Les informations sont alors aiguillees,
selon leur destination, sur le *bus de donnees RAMS* ou sur le bus de
donnees afferent aux principaux composants de l'unite. En dehors de
l'aiguillage RAM, ce principe permet de "delester" le 6809, compte
tenu des nombreux circuits a alimenter.

Le bus de donnees RAM assure, plus particulierement en mode page, les
transferts d'information entre les RAMS et le gate array.

Comme pour le TO9, les lignes de controle du 6809E correspondent:
        - aux commandes de lecture ecriture R/WN des differents
          registres et memoires.
        - aux demandes d'interruption IRQN concernant la gestion du
          clavier, le clignotement du curseur, les manettes de jeux et
          la souris. 
        - aux demandes d'interruptions FIRQN pour le fonctionnement du
          crayon optique et du code barre.

Un circuit de renitialisation "RESET" est en relation avec le 6809E et
les PIA.

D'une maniere identique au TO8, la memoire comporte:
        - Deux pages de 6Ko du moniteur ainsi que les deux pages de
          1.9Ko de logiciel controleur de disque qui sont logees dans
          une EPROM 16Ko 27 128. Chacune des pages est selectee a
          partir du bit P4 du PIA 6846. 
        - Les 2 x 32Ko de logiciel d'application BASIC 1 - divers -
          BASIC 512 - EXTRAMONITEUR, qui sont loges chacundans une ROM
          ou EPROM 32Ko selon une repartition en quatre banques. D'une
          maniere semblable au TO8, la commutation des banques
          s'effectue en programmation par une ecriture d'adresses dans
          un LATCH 74LS173. Ce circuit permet de selecter chaque
          partie concernee dans une des memoires mortes. 

La cartouche de logiciel d'application externe est selectee par
logiciel a partir du bitP2 du PIA 6846.

La memoire vive est composee de deux plans de 256Ko chacuns:

Hit boitiers 256K-bits 41256 forment un premier plan memoire valide
par CAS1N et comprenant les differentes pages de 16Ko initialement
telles que:
        page 0          = memoire ou espace "ecran" avec la RAMA et la
                          RAMB.
        page 1          = memoire ou espace "systeme" avec la page
                          moniteur.
        page 2 a 15     = banques memoires utilisateur ou espace
                          "donnees".

Les differentes pages sont commutees par un adressage physique sur
18bits (MA8-MA0), en provenance du gate array mode page.

Le deuxieme plan memoire est valide par CAS2N. Il correspond a
l'extension memoire dans le TO8 et regroupe, par ses huits boitiers
41256, seize pages de RAM utilisateur (pages 16 a 31). Adresse de la
meme maniere que le premier plan, il represente la suite de l'espace
"donnees".

Conformement au TO8, le TO9+ utilise le gate array mode page CF74021
ou EFG202A pour lequel il joue un role parfaitement identique. Il est
en relation avec les plans RAM dynamiques par l'intermediaire du bus
d'adresses multiplexees. Ce derneir est dapate par un HCT245. Les
commandes des boitiers memoires sont elles-memes adaptees par un
HCT245.

La selection du bus de donneees RAM est independante du signal TRANSN
par l'intermediaire du 74LS245. Il assure l'aiguillage des
informations et permet notamment un acces du CPU dans l'espace memoire
0000-3FFF (cf. LE 6809 dans le TO8, page 95). Un signal complementaire
de TRANSN agit de facon opposee sur le 74LS245 du bus de donnees
principal.

Le gate array mode page determine les memes cas de fonctionnement ou
figures realisables sur le TO8 dont, plus particulierement, les
recouvrement d'espaces memoires. De par le register E7DC, il procure,
en relation avec la RAMA et la RAMB, les memes modes d'affichages
connus sur le TO8 ou le TO9 (cf. le systeme de visualisation du TO9,
page 52).

Les signaux, en provenance du crayon optique, subissent le meme
traitement que sur le TO8.

Toujours conformement au TO8, un circuit de palette du type EF9369,
programmable par le 6809E, permet le choix des seize teintes
exploitables parmi 4096. Il distribue les informations necessaires a
la price peritel, via des circuits d'interfacage video.

Deux connecteursde carte "polyvalents" etablissent des liaisons bus et
signaux necessaires aux extensions.

Quatre circuits d'interface sont en relation avec differents
peripheriques:
        - Un PIA TIMER 6846 qui, exception faite de la ligne de
          controle CP1 et du bit P5 devenus inutilises, est cable et
          fonctionne comme sur le TO8.
        - Un PIA 6821 "musique et jeux" pour l'elaboration du son et
          les commandes de manettes et souris; Un PIA "systeme". De
          par leur fonctionnement, ils sont parfaitement identique aux
          circuits utilises sur le TO8. Ainsi, le bit de forme est les
          bits de commutation de banque memoire du TO9 voient leur
          action totalement emulee par le gate array mode page dans le
          TO9+. 
        - Un ACIA 6850 qui, comme sur le TO9, realise la tranformation
          serie/parallele des informations envoyees enserie a travers
          le cordon du clavier.

Il existe cependant une difference notable qui singularise, en ce
point particuleir, le fonctionnement du TO9+: la transmission serie
asynchrone dans le TO9 devient synchrone pour le TO9+. Pour ce faire,
l'horloge est fourine avec les donnees serie par un fil supplementaire
en provenance du monochip du clavier. La liaison entre le clavier et
la partie unite centrale est bi-directionnelle. La cadence de travail
est d'environ 9600 bauds.

Les registres de l'ACIA sont accessibles aux adresses suivantes:
        E7DE    registre de controle en ecriture
        E7DE    registre d'etat en lecture
        E7DF    registre d'emission en ecriture
        E7DF    registre de reception en lecture.

La figure 29, page suivante, traduit le fonctionnement materiel du
clavier.

L'element de dialogue est un monochip 6805 P2 dont le port A et le
port B realisent l'exploration de la matrice clavier. Le port C est en
partie consacre aux echances avec l'ACIA. Ce microprocesseur est
pilote par uen horloge de 4Mhz. Une commutation interne offre la
possibilite de monter un 68705.

Le programme du 6805 P2 est tel que, a chaque appui sur une touche, un
octet precede d'un bit de start, suivi par un bit de strop, est envoye
apres un delai maximum de 8ms (temsp de scrutation). La prise en
compte de chaque bit se fait sur un front montant de l'horloge RXC
fournie par le 6805 P2 (trasmission sychrone).

Si cette touche reste enfoncee, apres un delaiu maximum de 0.8s, le
code est renvoye toutes les 70ms (repetition automatique de 14
caracteres par seconde). Un signal KTEST est expedie vers l'unite
centrale pour indiquer l'action effective de la touche effoncee. Ce
signal estactif environ 10ns apres l'appui d'une touche, alors que le
temps de cycle de scrutation  du clavier est de 8ms.

Comme pour le TO9, le clavier est susceptible de recevoir des
informations en provenance de l'unite centrale. La transmission est
composee de trois bits avec un bit de start et un bit de stop. Le bit
de start est envoye lorsque l'ACIA recoit un impulsion d'horloge TXC.
Lorsque le bit de start est present, une interruption externe est
declanchee et le mot est lu par le monochip.

Le gate arrau controleur de disquettes THMIC01 equipant le TO8 est
egalement utilise sur le TO9+. Il gere l'unite de floppy 3.5 pouces
integree et delivre, en parallele, par l'intermediaire d'une prise DIN
14 broches, les signaux necessaires au fonctionnement d'un drive
externe selon deux standards 5.25 pouces ou 3.5 pouces.

Un alimentation a decoupage semblable a celle du TO9 fabrique les
trois tensions de +5V,de +12V et -5V pour le fonctionnement des
composants de l'unite centrale et des extensions.

2. Extention integree

Le TO9+ rdy equipe, en relation avec le decodage d'adresse
correspondant, d'un module extension telematique qui permet de relier
directement l'ordinateur au reseau telephonique connecte selon la
norme NFC 98010 et les specifications technique CNET 1108 et 1435. Le
principe de transmission est conforme a l'avis V23 du CCITT. (sam:
bref tout ca pour dir qu'il y a un modem dedans.. n'empeche que
c'etait le seul ordinateur avec modem et son integre, et cela bien
avant les PC multimedia d'aujourd'hui).

Conception de l'extentsion telematique

Elle est accessible aux adresses E7F8 a E7FF. Elle est composee:
        - D'un ACIA 6850 qui realise la serialisation des donnees en
          emission et leur deserialisation en reception.
        - D'un 6821 qui assure les commandes et detections necessaires
          au modem et a l'interface ligne (prise de ligne,
          numerotation, detection d'appel, retournement et passage du
          modem en half-duplex...). 
        - D'un MODEM EFB 7513: modulateur/Demodulateur FSK V23,
          pouvant assurer un dialogue "full duplex" car les voies
          emission et reception sont transmises par des proteuses de
          frequences differentes. 
        - D'un duplexeur constitue d'un transormateur et
          amplificateurs operationnels TDB 0124, pour mixer et separer
          les signaux emis par la ligne telephonique
          bi-directionnelle. Cette fonction est appelee conversion 2
          fils/4 fils. 
        - D'une interface ligne (relais optocoupleurs et
          transformateur) qui permet d'adpater les signaux aux
          exigences de transmission et de securite du reseau
          telephonique commute des PTT (isolement galvaniquer par
          rapport au secteur, regulation du courant de ligne,
          numeroation decimale et detection d'appel). 

Elle peut etre geree par un logiciel appele handler telematique et qui
respecte les normes en vigueur.

------------------------------
.. extramon..

4.0 Les mathematiques

Generalites

L'EXYTRAMON sait meme compter! L'ensemble de ses possibilites
mathematiques son exposes dans les chapitres suivants. Passe l'effet
de surprise lorsque l'on apprend qu'il traite les quatres operations,
onplonge dans une beatitude inenarrable en decouvrant que les
fonctions trigonometriques ne sont pas epargnees (SIN, COS, TAN,
ATN...), ainsi que les logarithmes neperiens, exponentiel, racine
carree, conversion de bases, etc. Bref, avis aux amateurs, vous avez
dans les mains une petite merveille (non, pas le livre, l'unite
centrale!)

Toutes ces fonctions mathematiques seront utilises en relation de
registres appeles accumulateurs FAC et ARG. Globalement vous ferez des
operations unaire et binaires. Dans le premier cas, l'argument doit se
trouver dnas l'accumulateur FAC. Un appel a SIN ou COS, par exemple,
cous rend le resultat aussi dans FAC. Dans le second cas, l'argument
gauche doit etre dans ARG et celui de droite dans FAC. Les deux
arguments seront de meme type et prcises dans VALTYP. Le resultat
recherche sera dans FAC. Il est conseille de faire attention car le
typed uresultat peut etre different du type des operandes. Surveillez
donc bien le registre VALTYP. Si vous desirez faire de calculs en
double precision, il faut necessairement que VALTYP (6105) soit egal a
8, et que DBLFLG ($6103- soit a $FF.

Description des accumulateurs

Pour fixer rapidement les idees, nous pouvons dire que FAC est
l'accumulateur principal, et ARG le secondaire. ARG set pour les
operations telles que additions, soustraction, multiplication et
divisions.

Les reels courts sont codes (sauf signeà sur 4 octets. Le 1er octet
est l'exposant E, les 3 autres la mantisse M.

                               exposant - 128
        nombre = 0.mantisse x 2
                                                   7
Exemple: Le nombre 100 deciaml s'ecrit 0.C80000 x 2  et se code en:
        exposant = 128 + 7 = 135 = %10000111
        mantisse = $C80000 = %11001000 00000000 00000000

Pour ces routines, un exposant nul implique que le nombre est egal a
0. En entree, le nombre doit etre normalise (bit de poids fort de la
mantisse = 1). En sortie, EXTRAMON rend egalement des nombtres
normalises.

- Vous trouverez ci-dessous la liste des composants de FAC:

Pour un reel court ou simple precision:

VALTYP ($6105): Type de l'accu (a 4)
FACEXP ($614E): Exposant binaire (de -128 a +127)
FACHO  ($614F): mantisse 24bits, poids forts
FACMO  ($6150): mantisse poids moyen
FACLO  ($6151): mantisse poids faibles
FACSGN ($6156): signe de l'accumultauer

Pour un reel long, c'est identique sauf:
VALTYP ($6105): a 8
   $6152-$6155: 4 octets supplementaires suivent la mantisse

Pour un entier  16 bits:

VALTYP ($6105): a 2
FACMO, FACLO  : contiennent l'entier
FACEXP, FACHO, FACSGN: sont inutiles.

- Vois trouverez ci-dessous la liste des composatnts  de ARG. Elle est
tres semblable a FAC:
ARGEXP, ARGHO, 
ARGMO, ARGLO:   $6159-$615C pour les reels courts (4)
DARGHO:         $615D-$6160 +4 octets pour les reels long (8)
ARGMO, ARGLO:   $615B-$615C pour les entiers

Dans FACSGN et ARGSGN, seul le bit 7 est utilise. Ce bit a 1
represente un nombre negatif/

Echange memoire et accumulateur

Les reels couts (4) sont codes sur 5 octets dans l'accumulteur, et sur
4 octets en memoire. Ceci est possible en codant lke signe du nombre
dans le bit du poids fort de la mantisse, ce bit etant un 1 pour un
reel normalise. Pour les reels longs, on agit de meme, mais avec 4
octets de plus poour la mantisse. Les routines fonctionnent aussi pour
les entiers, X pointnant alors sur 2 octets seulement.

Pour utiliser les routines de transfert bi-directionnelles entre
memoire et accumulateur:
        - Il faut implanter le type de la variable dans VALTYP,
        - puis appeler une des routines de transfert avec le registre
d'adresse X du 6809E pointant sur la variable a transferer. Soit:

MOVFM Code d'entree 62: Transfert de FAC vers la memoire pointee par X
MOVMF Code d'entree 63: Transfert de la memoirepointee par X vers
                        l'accumulateur FAC
MOVAF Code d'entree 64: Transfert de l'accumulateur ARG vers
                        l'accumulateur FAC.
(sam: je crois qu'au dessus il y une inversion entre FAC et ARG ainsi
qu'entre FAC et la memoire pointee par X dans le document original)

Liste des fonctions mathematiques

Le tableau ci-dessous dresse la liste ddes routines mathematiques
disponibles et leur code d'entree respectif.

Nom     Code    Fonctionnalite
        d'entree

SGN     41      Rend le signe de l'accumulteur dans FACMO, FACLO.
                L'accumulateur "entier" vaut ainsi 0, -1 ou 1.
INT     42      Rend la partie entiere de l'accumulateur
ABS     43      Rend la valeur absolue de l'accu.
SQR     44      Rend la racine caree de l'acc. Le resultat est un
                nombre reel.
LOG     45      Rend le log. neperien de l'accu. Le resultat est un
                nombre reel.
EXP     46      Rend l'exponentielle de l'accu. Le resultat est un
                nombre reel.
COS     47      Rend le cos de l'accu. L'accu est en radiant, le
                resultat est un nb reel.
SIN     48      Rend le sin de l'accu. L'accu est en radiant, le
                resultat est un nb reel.
TAN     49      Rend la tangente de l'accu. L'accu est en radiant, le
                resultat est un nb reel.
ATN     68      Rend l'arctg de l'accu. Le resultat est un nb reel
                (TO8 et TO9+ uniquement).
FRCTYP  50      Conversion de type. Param. d'entree:
                - VALTYP de type courant de l'accu FAC
                - si registre A = 2 => resultat entier 2
                - si registre A = 4 => resultat reel 4
                - si registre A = 8 => resultat reel 8
FIXER   51      Rend l'entier tronque d'un reel. Le result est un
                reel.
RND     52      Rend un reel court aleatoire (4)
NEGGO   53      Effectue FAC = -FAC
ADDGO   54      Effectue FAC = ARG + FAC
SUBGO   55      Effectue FAC = ARG - FAC
MULTGO  56      Effectue FAC = ARG * FAC
DIVGO   57      Effectue FAC = ARG / FAc. Les arguments sont des reels
                4 ou 8.
EXPGO   58      Effectue FAC = ARG ^ FAC. Les arguments sont des reels
                4 ou 8.
IMODO   59      Effectue FAC = ARG MOD FAC. Les operandes doivent etre
                des entiers.
IDIVO   60      Effectue FAC = ARG (div. entiere) FAC. Les operandes
                doivent etre des entiers.
FIN     65      Conversion d'une valeur ASCII en binaire
                Param. d'entree:
                - Registe Y du 6809E pointe sur ASCII fini par $00
                Param. de retour:
                - FAC contient le nombre
                - VALTYP le type du nombre
                Les conversions sont similaires a celles du BASIC. FIN
                accepte aussi des constantes bianires, octales ou
                hexadecimales. 
PUFOUT  66      Conversion d'une valeur bianire en ASCII decimal. 
                Param. d'entree:
                - FAC ($614E) le nb a convertir
                - VALTYP ($6105) le type de celui-ci
                - registre Y du 6809E pointe sur un tampon
                - PUMASK ($617C) flag de PRINTUSING.
                Le flag PUMASK permet d'utiliser le PRINTUSING comme
                BASIC. Si ce flag est nul, le format de sortie sera
                choisi par PUFOUT, sinon les octets PDWID et FLDWID
                permettent de choisir le nombre de chiffers avant et
                apres le point decimal.
                - DPWID ($617A) nb de chiffres apres le point decimal.
                - FLDWID ($617B) idem mais avant le point.
                - PUMASK ($617C) bit 0: notation scientifique
                                 bit 2: signe apres le nombre
                                 bit 3: force le "+" pour les positifs
                                 bit 5: remplit d'"*" au lieu
                                        d'espaces.
                                 bit 7: USING or not USING
                Param. de retour (pour le TO9):
                - Le registe Y du 6809E pointe sur l'ASCII
                Pour recuperer les codes ASCII, il faut sauter les
                caracteres indesirables (inferieux ou egaux a $20),
                ensuite vous trouverez votre nombre se terminant par
                un zero binaire. 
                Param. de retour (pour TO8 et TO9+):
                - Le registre FACMO pointe sur l'ASCII
                Le registre FACMO pointe sur l'ASCII dans le tampon
                que vous avez fourni a travers le registre Y. Le
                nombre initialement implante dans FAC est detruit
                apres conversion. 
HOFOUT  67      Conversion d'une valeur binaire en ASCII hexadecimal
                ou octal.
                Param. d'entree:
                - FACMO ($6150-$6151) Le nombre a convertir en entier 2
                - Registre Y du 6809E pointe sur le buffer resultat
                - Accu A du 6809E si $00 la sortie est octale. Si $FF
                la sortie est hexa.



5. Le DOS

Pour toute information relative aux diskettes elles-memes, nous vous
prions de vous reporter au chapitre "Controleur de diskettes", page
207. Le Disk Operating System est compatibleau format Microsoft (sam:
hehe :). Les chapitres suivants presentent les differentes routines de
l'extramon pour travailler sur les diskettes (gestion de fichiers,
backup, etc.). Notons qu'en double densite, le DOS n'utilise que 255
octets par secteur (sur 256 de disponibles (sam: encore un coup de la
compatibilite microsoft ca :))) ).

Initialisation du DOS
---------------------
Apres initialisation de l'EXTRAMON par un RESETC, il est egalement
necessaire d'initialiser les varaibles d'EXTRAMON liees aux disques
(densite, nombre de disques, nombre de fichiers, etc.). L'ensemble de
ces operations est realise par la routine FCBINI.

Pour changer la densite d'un drive (si le controleur le permet), il
faut modifier la table TABDEN debutant a l'adresse $621A. Cette table
fait 5 octets, chacun etant associe a un lecteur. Pour etre en simple
densite, il faut mettre $04 dans l'octet correspondant alors que la
valeur $10 permet de commuter en double densite. Cette table est
automatiquement initialisee par FCBINI en fonction du controleur
present. Avec un controleur doubledensite la table est entierement
mise a $10,ce qui est le cas sur le TO9. Remarque: Il est fortement
conseille de ne pas toucher a la densite du disque virtuel 4,celui-ci
est forcement double densite.

Nom:                    FCBINI
Code d'entree:          02
Parametres d'entree:    SECBUF ($6197) pointe sur un buffer pour un
secteur. 256 ou 128 octets selon la densite. FATPTR ($6199) pointe la
place libre pour 5 FATS. Il faut DSBLEN (166) octets par FAT. Le
registe Y du 6809E contient le nombre de disques que l'on veut
utiliser (5 au maximum). L'accu A du 6809E contient, le nombre maximum
de fichiers que l'on veut pouvoir ouvrir en meme temps. Le registre X
du 6809E pointe sur la zone libre pour FCBLEN (281) x A octets.
Reserve la place pour A File Control Block.
Parametres de sortie:   Voir texte
Effet:                  Initialisationdu DOS.

Cache disque
------------
Seul sur les machine TO8 et TO9+, le cache disque est disponible. Il
permet, comme sur d'autre machines concurentes, d'accelerer
notablement les acces disques. Initialement prevu pour optimiser les
utilisations des lecteurs QDD, le cache disque peut egalement etre
appele pour des acces aux lecteurs double face, double densite.

(sam: bon pas la peine de recopier le reste du cache ca ne concerne
pas le TO9). 

Ouverture d'un fichier
----------------------
Nom:                    OPEN
Code d'entree:          03

On peut ouvrir un fichier selon trois modes: 
        - Lecture
        - Ecriture
        - Acces direct en lecture/ecriture.

Parametres d'entree:    DK.RDK ($6049) numero de drive
                        FILMOD ($624B) type d'access
                                M.SQI ($10) ouvre en input
                                M.SQO ($20) ouvre en output.
                                M.RND ($40) ouvre en direct.
                        FILNAM ($624f-6259) nom de fichier 11
                                caracteres.
                        OPTBUF ($625a-$6261) commentaire (ecriture
                                seule). 8 octets, s'arrete au 1er $00.

En ecriture, 2 autres flags:
                        FILTYP ($624C) type de fichier
                        ASCFLG ($624D) $FF fichier ASCII. $00 fichier
                                binaire.

Pour l'ouverture d'un fichier en acces direct, nous vois prions de
vosu reporter a l'etude de PUTGET.

Parametres de retour:   FCBNUM ($6244) numero logique de fichier

En lecture, 2 autres flags:
                        FILTYP ($624C) type de fichier
                        ASCFLG ($624D) $FF fichier ASCII. $00 fichier
                                binaire. 

Remarque: un numero de fichier est rendu dans FCBNUM. Il permet de
distinguer les differents fichiers ouverts en meme temps. Pour lire,
ecrire ou fermer un fichier, il suffit de mettre son numero dans
FCBNUM avant l'appel a la routine concernee. Tout ceci est transaprent
si n(ouvre qu'un seul fichier.

Lecture d'un caractere
----------------------
Nom:                    INPUT
Code d'entree:          05
Parametres d'entree:    FCBNUM ($6244) numero logique de fichier
Parametres de retour:   CARCOU ($6196) caractere lu
                        EOFFLG ($6179) flag de fin de fichier
Remarque: si EOFFLG est mis, il n'y a pas de caracteres valide dans
CARCOU.

Ecriture d'un caractere
-----------------------
Nom:                    PRINT
Code d'entree:          04
Parametres d'entree:    FCBNUM ($6244) numero logique de fichier
                        Accu A du 6809E caractere a ecrire.

L'acces direct
--------------
Nom:                    PUTGET
Code d'entree:          07

Les deux operations principale d'un enregistrement sont PUT et GET.

Parametre d'entree:     PUTFLG ($6249) $00 pour GET; $FF pour PUT
                        FCBNUM ($6244) numero logique de fichier
                        Registre X du 6809E numero d'enregistrement
                                desire.
Parametre de retour:    Pour PUT, le buffer est enregistre; pour GET,
                                le buffer a ete lu.


Lors de l'appel de la routine OPEN, il faut preciser la longueur des
enregistrements dans RLEN ($6247-$6248), ainsi que l'adresse d'un
buffer dasn BUFRE ($62AA-$62AB). Ce buffer est, biensur, de longeur
RLEN. Le 1er enregistrement est le numero 1. Si X est nul,
l'enregistrement suivant est pris (sequentiel par defaut).

Remarque: Vous pouvez remplir ou vider le buffer vous-meme, ou passer
par PRINT et INPUT si vous preferez. Ceux-ci vous previennent en cas
de depassement du buffer.

Fermeture d'un fichier
----------------------
Nom:                    CLOSE
Code d'entree:          06
Parametres d'entree:    FCBNUM ($6244) numero logique de fichier

Lecture du catalogue

Nom:                    DIR0 ou DIR1
Codes d'entree:         08, 09
Parametres d'entree:    DK.DRV ($6049) Numero de drive
                        FILNAM ($624F-$6259) Filtre 11 caracteres.
Parametres de retour:   NAMSEC ($618E) Nul, indique la fin du
                                catalogue.
                        NAMSLT ($618F-$6190) Pointe vers 32 octets:
                                Offset          Data
                                0-7             Nom
                                8-10            Extension
                                11              Type de fichier
                                12              flag ASCII/binaire.
                                13              pointeur dans la FAT
                                14-15           Taille du dernier
                                                secteur
                                16-23           Commentaire sur 8
                                                octets
                                24-31           reserves.
                        FACMP ($6150-$6151) Taille n Koctets du
                                fichier.

Le registre FILNAM sert de filtre pour le catalogue, des zeros
binaires seravant de joker. Si toutest a zero, le catalogue complet
est rendu. Le 1er appel se fait par DIR0, par la suite appel a DIR1. A
chaque appel, DIR rend un nom de fichier.

Lecture du nom d'une diskette
-----------------------------
Nom:                    RDVOL
Code d'entree:          21
Parametres d'entree:    DK.RDV ($6049) Numero de drive
Parametres de retour:   SECBUF ($6197-$6198) Pointe sur le nom (8
octets).

(bon je passe le "backup d'une diskette.." et la "copie d'un fichier"
ca sert a rien, ya basic et le gestionnaire de fichier qui font
cela tres bien, et surtout c'est top complexe comme operations, 36
initialisations et tests a faire :)

Destruction d'un fichier
------------------------
Nom:                    KILL
Code d'entree:          14
Parametres d'entree:    DK.RDV ($6049) Numero de drive
                        FILNAM ($624F-$6259) Nom du fichier, 11
                                caracteres (8 pour le nom, 3 pour
                                l'extension). 
Parametres de retour:   Sauf erreur, votre fichier est perdu! Entre
nous, vous l'avez bien cherche.

Changement de nom d'un fichier
------------------------------
Nom:                    NAME
Code d'entree:          15
Parametre d'entree:     registe X pointe fichier ancien nom. registre
                        Y pointe sur prochain nom.
X comme Y pointent sur une zone de 20 octets:
        0-7     Nom
        8-10    Extension
        11-18   Commentaire
        19      Numero de drive
EXTRAMON verifie que le nouveau nom n'est pas deja present sur la
diskette. Lors d'un changement de nom, le commantaire du fichier est
conserve si le nouveau commentaire commence par 0. La date du fichie
est conservee (TO8 et TO9+ uniquement).

Initialisation d'une diskette
-----------------------------
Nom:                    DISKINI
Code d'entree:          17
Parametre d'entree:     DK.DRV ($6049) Numero de disque
                        FILNAM ($604F-6256) Nom de volume (8 octets)
                        DK.NUM ($604D) L'entralcement desire (7 est
                                bien)
                        VERFLG ($618D) $00 pas de verification. $80
                                verification (bcp plus lent).

Place libre sur une disquette
-----------------------------
Nom:                    DSKF
Code d'entree:          16
Parametre d'entree:     DK.DRV ($6049) Numero de drive
Parametre de retour:    FACMO ($6050-$6151) La place libre en Koctets.

Taille d'un fichier
-------------------
Nom:                    LOF
Code d'entree:          18
Parametre d'entree:     FCBNUM ($6244) Numero logique de fichier
Parametre de retour:    FAC ($614E) Resultat en entier 16bits (FACMO
                                ($6150)) ou en reele 4 selon la
                                taille, pour le savoir, il faut tester  
                                VALTYPE (2 ou 4).

Dans le cas des fichiers a acces direct, c'estle nombre
d'enregistrements du fichier qui est rendu. En sequentiel, c'ets le
nombre de secteurs du fichiers.

        Formule de calcul pour l'acces direct:

        LOF := (NBoct * NBsecteur - Inutiles)/RLEN

        Avec:   NBoct = Nombre d'octets par secteur
                NBsecteur = Nombre de secteurs du fichier
                Inutiles = Nombre d'octets inutiles du dernier secteur
                RLEN = Taille d'un enregistrement.

Attention: Sur le TO9, en double densite EXTRAMON prend NBoct a 256
octets au lieu de 255, d'ou des petites erreus de calcul... Ce
probleme n'existe pas sur TO8 et TO9+. (sam: hehe microsoft a encore
frappe :)

Numero d'enregistrement courant
-------------------------------
Nom:                    LOC
Code d'entree:          19
Parametre d'entree:     FCB ($6244) Numero logique de fichier.
Parametre de retour:    FAC ($6150-$6151) Resultat entier 16 bits.
Effet:                  LOC rend le numero de l'enregistrement courant
sur un fichier a acces direct. Sur un fichier a acces sequentiel,
c'est le numero dusecteur courant qui est rendu.



9. Le DOS iconique

Generalites

Le DOS iconique, appele sur les menus "Exploitation de fichiers", est
situe sur la banque 3 du slot 0 des TO8, TO9 et TO9+. Il utilise pour
realiser ses differentes manipulations de fichiers, des routines du
moniteur et de l'extramoniteur. Ainsi, globalement,ses variablesse
situent dans les pages $60, $61 et $62, ce qui impliquent que toute
application utilisant le DOS Iconique doit laisser ces 3 pages libres.

Comme toute routines de l'extramoniteur, le debut du programme sera
consacre aux initalisations des sous-ensembles concernes:
        - Unite de disquette
        - Fenetre graphique (nulle par defaut)
        - Curseur graphique qui definit la position des coins gauches
          des tableaux generes par le DOS Iconique.
        - Mise a jour du registre CO+ULEUR ($629F)
        - Le registre CHDRAW ($6041) doit etre a 0.

Le DOS Iconique ne sauvegarde pas l'ecran avant d'afficher ses
fenetres, il faudra donc prevoir un traitement adequat dans vos
programmes personnels.

Trois routines sont utilisables par une application externe:
        - La selection de fichiers
        - La saisie d'un nom de fichier
        - La selection du lecteru courant.
Ainsi, l'utilisateur peut a l'aide du crayon optique ou de la souris
(si elle est en action), selectionner un fichier, relire le catalogue
et se deplacer a l'interieur. Toutes les commandes lightpen ou souris
sont doublees au clavier par les rouches RAZ, ENTREE, les chiffres 0 a
4 et les fleches verticales.

Pour realiser ces taches, un buffer pointe par le registre d'index X
doit etre alloue, sa longueur etant definie par le registre Y. Si ce
buffer est trop petit, une erreur "Out of Memory" sera generee.

Selection de fichiers
---------------------
la routine DIRR fournit un tcatalogue reduit (nom + extension), classe
alphabetiquement,de la diskette palcee dans le lecteur courant. Au
prealable, les regitres DK.RDV et FILNAM indiqueront respectivement le
numero de lecteur concerne et le filtre de selection des nom de
fichiers (0 etant le caractere transparent). Ensortie, le registre B
retourne le numero de l'erreur. Si son contenu vaut 0, aucune erreur
n'est detectee et le nom est inscrit dans le registre FILNAM.

Un buffer de 1500 octets est necessaire pour accomplir cette routine,
sachant que la fenetre affichee a l'ecran a une taille de 20x15
caracteres.

Saisie d'un nom de fichier
--------------------------
La routine SAISIE permet la frappe d'un nom de fichier complet
constitue du nom, de l'extension et du commentaire. Le registre FILNAM
conteint le nom par defaut propose a l'utilisateur suivi de
l'extension et du commentaire (8+3+8 caracteres).

La saisie est validee par le pointage de OK dans le tableau affiche ou
par la frappe de la touche ENTREE. La touche RAZ ou le pointage de
"Annuler" interromp la saisie.

Un buffer de 100 octets eest necessaire pour cette routine. Le tableau
affiche occupe 24x11 caracteres.

Selection du lecteur courant
----------------------------
La routine SELDEV permet de selectionner le lecteur courant. Le
registre DK.DRK contient le numero du lecteur a mettre en evidence. un
buffer de 100 octets est necessaire. La taille de la fenetre affichee
est de 24x11 caracteres.

Appel au DOS Iconique
---------------------
L'appel de l'une des routines decrites ci-dessus se fait cia la
routine COMS du moniteur. Pour de plus amples details, veuillez vous
reporter au chapitre "Commutation des memoire ROM", page 222.

Exemple:
        LDX     #$B000          Debut du buffer
        LDY     #1700           Longueur de la zone
        LDA     #03             Appel du slot 0 banque 3
        LDU     #ROUTINE        Point d'entree de la routine ex $3FC1
                                pour DIRR
        JSR     COMMS
        TSTB
        BNE     ERROR
OK      EQU     *

Il conviendra d'ajouter au debut du programme les initalisations des
registres concernes par la routine appelee. Vous trouverez ci-dessous
un resumedes equates du DOS Iconique.
DK.DRK  EQU     $6049           Numero lecteur courant
SECBUF  EQU     $6197           Pointeur de buffer disque
FATPTR  EQU     $6199           Pointeur de buffer FAT
FILNAM  EQU     $624F           Nom de fichier courant
CHDRAW  EQU     $6041           Caractere graphique
COULEUR EQU     $619E           Couleur courante
EXTRA   EQU     $EC0C           Point d'entree d'extramon
COMS    EQU     $EC03           Point d'entree de commutation de slot
DIRR    EQU     $3FC1           Point d'entree du catalogue reduit
SAISIE  EQU     $3FC4           Point d'entree de SAISIE
SELDEV  EQU     $3FC7           Point d'entree de SELDEV.



10. Informations  complementaires

Extramon sous BASIC 512

Le basic 512 disponible sur les TO8 et TO9+, initialise
automatqiuement l'extramoniteur. En consequence, vois programmes
personnels appelant extramon a partir du BASIC 512 n'ont pas a
realiser ce traitement. Si cous desirez recupere les erreurs
eventuelles, il faut rediriger le vecteur de rattrapage d'erreu ZPERR
($6185) de la maniere suivante:

SAVSTK  EQU     $6179
        LDS     SAVSTK
        PULS    A,DP,X,Y,U,PC
        .
        .

Dans le cas contraire, c'est le message d'erreur BASIC qui sera
affiche.



19 INFORMATIONS COMPLEMENTAIRES

19.1 Organisation de la mémoire

ADRESSES (HEXADECIMAL)

0000-3fff       Espace ROM
4000-5fff       2 x 8Ko de mémoire écran
6000-60ff       Registres du moniteur
6100-9fff       Ram utilisateur banque fixe
a000-dfff       6 banques ram 16ko en parallèle + 4 banques pour
                l'extension ram
e000-e7af       1.9k rom pour le disque
e7b0-e7bf       16 adresses non utilisés ni décodees
e7c0-e7c7       PIA 6846 système
e7c8-e7cb       PIA 6821 système
e7cc-e7cf       PIA 6821 extension jeux
e7d0-e7d9       Contrôleur de floppy
e7da-e7db       Palette
e7dc-e7dd       Gate affichage
e7de-e7df       ACIA liaison clavier
e7e0-e7e3       PIA 6821 interface de communication non utilisable
                dans le TOx
e7e4-e7e7       Compteurs crayonoptique
e7e8-e7eb       Interface RS232
e7f0-e7f7       Interface IEEE
e7f8-e7fd       Interface Modem
e7fe-e7ff       Réservés
e800-ffff       6Ko moniteur

La partie de mémoire situé entre $a000 et $dfff est commutable avec
d'autrs parties de RAM. Vous disposez de 6 banques commutables plus
16Ko stables (de $6000 a $9fff) soit 112K au total, dont 32K
accessibles en même temps. Si vous disposez de l'extension mémoire de
64K, vous disposerez de 4 banques supplémentaires de 16K.

L'extension mémoire de 64ko n'est pas considérée par les applications
comme de la mémoire de programme, mais comme un disque virtuel. Le
sous-programme suivant ne tient donc pas compte de cette extension
mémoire qui est accédée directement par le contrôleur de disque.

Remarque: pour des raisons de protection de sélection simultanée de
plusieuyrs banques RAM, il a été installé le système d'utilisation
suivant. Les 5 bits de données du PIA qui servent à la sélection sont
toujours a 0. Pour commuter une banque on n'écrit donc pas dans le
registre de donnée du PIA, mais on change la direction des bits
concernés, sachant qu'un bit en entrée génère un 1 et un bit en sortie
génère un 0.

Attention: certaines routines du moniteur peuvent modifier
temporairement le contenu du PIA et le restaurer plein 0 à la fin.

Attention: le système de sélection des banques mémoire pour le disque
virtuel sera modifié dans le TO8 et TO9+.

La commutation des 6 banques internes se fait par le sous-programme
suivant:

Entrée: registre 6809 A= numero de banque 0 à 5

COMMUT  equ     *
        pshs    d,x,u
        ldu     #$e7c0  U pointe sur les PIA
        ldb     11,u    lecture du registre de contrôle
        andb    #$fb
        stb     11,u    Passage du PIA en mode direction
        ldx     #TAB    X pointe surla table des valeurs a mettre dans
*                       le PIA
        lda     a,x     lecture de la bonne valeur
        sta     9,u     modification des directions dans le PIA
        orb     #$4
        stb     11,u
        puls    d,x,u,pc
tab     equ     *
        fcb     $f;$17,$e7,$67,$a7,$27


Le tableau suivant résume les valeurs qui doivent être émises par les
registres PRB et PRC des PIA.

                | To9/To7-70 |  To9/Ext To7-70  |  Ram Disk
-------------------------------------------------------------
BANQUE SELECTEE |   0    1   |   2   3   4   5  |  6  7  8  9
-------------------------------------------------------------
BIT DE PIA      |            |                  |
PRB3            |   0    1   |   1   1   1   1  |  1  1  1  1
PRB4            |   1    0   |   1   1   1   1  |  1  1  1  1
PRB5            |   1    1   |   0   0   0   0  |  1  1  1  1
PRB6            |   1    1   |   0   0   1   1  |  1  1  1  1
PRB7            |   1    1   |   0   1   0   1  |  1  1  1  1
PRC2            |   X    X   |   X   X   X   X  |  0  0  1  1
PRC6            |   X    X   |   X   X   X   X  |  0  1  0  1
-------------------------------------------------------------

Par exemple pour accéder à la Bank 5, les bits de PIA devront avoir
les états suivants:

PRB3 PRB4 PRB5 PRB6 PRB7 PRC2 PRC6
  1    1    0    1    1    X    X 


19.2 Points d'entrée standard du moniteur

Nom     Adresse Description
----------------------------------------------------------
PUTC    e803    affichage d'uncaractère
GETC    e806    lecture du clavier
KTST    e809    lecture rapide du clavier
DRAW    e80c    tracé d'un segment de droite
PLOT    e80f    allumage ou extinction d'un point
RSC0    e812    gestion de l'interface de communication
K7C0    e815    lecture/ecriture surcassette
GETL    e818    lecture du bouton du crayon optique
NOTE    e81e    generation de musique
GETP    e821    lecture de la couleur d'un point
GETS    e824    lecture de l'ecran
JOYS    e827    lecture des manette de jeu
DKC0    e82a    contrôleur de disque
MENU    e82d    retour au menu principal
KBIN    e830    sortie programme d'intrruption
CHPL    e833    ecriture d'un point "caractere"
SETP    ec00    programmation de la palette
COMS    ec03    appel d'un sous-programme en ROM
GEPE    ec06    lecture de la souris
PEIN    ec09    lecture des boutons de la souris
EXTRA   ec0c    appel de l'extramoniteur


19.3 Registres du moniteur
Les adresses  qui suivent sont données en hexadécimal:

* 6000-6015 (REDIR):    11 routines moniteur redirectees. Les routines
                        suivantes du moniteur font une indirection en
                        RAM. Si vous coules reprendre le controle lors
                        d'un appel a une de ces routines, il vous
                        suffit de mettre l'adresse choise dans la
                        table REDIR.

                6000-6001       Indirection de GETLP
                6002-6003       Indirection de LPINT
                6004-6005       Indirection de GETPERI
                6006-6007       Indirection de GACHPERI
                6008-6009       Indirection de PUTCH
                600a-600b       Indirection de GETCH
                600c-600d       Indirection de DRAWXY
                600e-600f       Indirection de PLOTXY
                6010-6011       Indirection de RSCONT
                6012-6013       Indirection de GETPT
                6014-6015       Indirection de GETSC

* 6016 (PLAN)           Numero du plan dans les modes overlay

                b2      numero du plan overlay
                b1-0    numero du plan en triple overlay

* 6017-6018 (SAVPAL)    Sauvegarde de la palette 14 en mode 80
                        colonnes.

* 6019 (STATUS)         Differents semaphores

                b7      semigraphique
                b6      scroll rapide
                b5      interruption utilisateur validee: timer 
                b4      graphique sans ecriture de couleurs
                b3      forme seule
                b2      curseur visible/invisible
                b1      trasnmission par GETC
                b0      traitement des sequences SS2 dans GETC

* 601A-601B (TABPT)     Pointeur dans la table des terminaateurs de
                        lignes

* 601B (RANG)           Ligne logique courrante

* 601C-601D (TOPTAB)    Pointeur sur le sommet logique de la table des
                        terminateurs de lignes.
        
* 601D (TOPRAN)         Premiere ligne logique de la fenetre

* 601E-601F (BOTTAB)    Pointeur sur la fin logique de la table des
                        terminateurs de ligne.

* 6020 (COLN)           Colonne logique courante

* 6021-6022 (IRQPT)     Pointeur sur la routine moniteur de traitement
                        des interruptions IRQ.

* 6023-6024 (FIRQPT)    Pointeur sur la routine de traitement des
                        interruptions rapides FIRQ.

* 6025-6026 (COPBUF)    Copie de BUFFAT, reserve au systeme.

* 6027-6028 (TIMEPT)    Pointeur sur la routine utilisateur de
                        traiement des interruptions TIMER utilisateur.

* 6029 (K7.OPC)         Code operation du lecteur-enregisteur de
                        programmes (LEP).

* 602A (K7.STA)         Code etat du LEP.

* 602B (RS.OPC)         Mot de commande pour la gestion de la
                        communication.

* 602C (RS.STA)         Etat courrant de la liaison communication.

* 602D-602E (USERAF)    Pointeur sur le generateur de caracteres
                        utilisateur.

* 602F-6030 (SWI1)      Pointeur sur SWI.

* 6031-6032 (TEMPO)     Tempo general pour la generation de musique.

* 6033-6034 (DUREE)     Duree de la note (de 1 a 96).

* 6035 (TIMBRE)         Attaque de la note.

* 6036-6037 (OCTAVE)    Octabe (1, 2, 4, 8 ou 16).

* 6038 (FORME)          Contient le code de la couleur de -8 a +15
                        pour la mise encouleur d'un point ou le trace 
                        d'un segment de droite.

* 6039 (ATRANG)         Semaphores pour la gestion d'ecran.

                b7      semaphore de scroll
                b6      reserve
                b5      reserve
                b4      reserve
                b3      reserve
                b2      reserve
                b1      largeur simple ou double
                b0      hauteur simple ou double

* 603A (ATRSCR)         Semaphore pour la gestion plein ecran

                b7      semaphore de fond plein ecran
                b6      semaphore de forme plein ecran
                b5      reserve
                b4      reserve
                b3      reserve
                b2      reserve
                b1      largeur simple ou double
                b0      hauteur simple ou double

* 603B (COLOUR)         Couleur courante; les 3bits de poids faible
                        donnent la couleur de fond, les 3 bits suivant
                        la couleur de la forme, suivant le codage
                        video BVR. Les 2bits de poids fort a 0 representent
                        les couleurs pastels.

* 603C (TELETL)         Si ce registre contient la valeur $ff, on est
                        en mode "page" (pas de scoll).

* 603D-603E (PLOTX)     Abscisse du dernier point allume ou eteint.

* 603F-6040 (PLOTY)     Ordonnee du dernier point allume ou eteint.

* 6041 (CHDRAW)         Code ASCII du caractere pour un trace de point
                        ou de droite en mode "caracteres".

* 6042 (CURSFL)         Semaphore de mouvement curseur, qui, s'il
                        contient la valeur 255, indique qu'il ne faut
                        pas lier logiquement la ligne a la suivante.
                        Reserve pour le BASIC.

* 6043 (COPCHR)         Semaphore qui, s'il contient la valeur 255,
                        indique que le deplacement a droite (HT) ou a
                        gauche (BS) recopie le caractere courant.

* 6044-6045 (BAUDS)     Parametre de vitesse de la liaison serie.

* 6046 (NOMBRE)         Definition des parametres de la liaison serie.

                b7-6    nombre de bits
                b5      horloge
                b4-3-2  parite
                b1      mode terminal/modem
                b0      nombre de stop bits.

* 6047 (GRCODE)         Mot de code pour la mise en mode graphique de
                        l'imprimante. 

* 6048 (DK.OPC)         Mot de commande pour le controleur de disque.

* 6049 (DK.DRV)         Numero de disque selecte

* 604A-604B (DK.TRK)    Numero de piste

* 604C (DK.SEC)         Numero de secteur

* 604D (DK.NUM)         Entrelacement de secteurs lors du formattage.

* 604E (DK.STA)         Etat du controleur de disquette.

* 604F-6050 (DK.BUF)    Pointeur sur la zone-tampon reservee aux
                        entrees/sorties disque.

* 6051-6052 (TRACK0)    Position de la tete lecteur 0.

* 6053-6054 (TRACK1)    Position de la tete lecteur 1.

* 6055-6056 (TEMP1)     Registre temporaire.

* 6057 (TEMP2)          Registre temporaire contenant lors de
                        l'initialisation la taille memoire en blocks
                        de 16Ko.

* 6058 (ROTAT)          Flag de rotation du moteur

* 6059 (SEQUCE)         Code indiquant dasn quelle sequence de
                        gestion d'ecran on se trouve.

* 605A-605B (SCRPT)     Pointeur courant dans l'ecran.

* 605C (SAVCOL)         Sauvegarde de la couleur courante.

* 605D (ASCII)          Code du dernier caractere affiche

* 605E (READCLV)        Pointeur de lecture du buffer du clavier

* 605F (SCRMOD)         Flag indiquant le mode d'affichage

                Tout a 0: mode TO7-70
                b7      80 colonnes
                b6      Bitmap 16 couleurs
                b5      Triple overlay
                b4      Rien
                b3      Overlay
                b2      Page2
                b1      Page1
                b0      Bitmap 4 couleurs

* 6060-6061 (STADR)     Adresse du premier octet de la fenetre.

* 6062-6063 (ENDDR)     Adresse + 1 du dernier octet de la fenetre.

* 6064 (TCRSAV)         Sauvegarde de l'etat courant du timer.

* 6065-6066 (TCTSAV)    Sauvegarde du compte courant du timer.

* 6067 (WRITECLV)       Pointeur d'ecriture dans le buffer clavier.

* 6068-6069 (SAVATR)    Sauvegarde des attributs courants d'ecran.

* 606A (US1)            Semaphore pour les sequences "unit separator".

* 606B (COMPT)          Compteur de caracteres repetes.

* 606C-606D (TEMP)      Registre temporaire pour le transfert de
                        donnes

* 606E-606F (SAVEST)    Sauvegarde dupointeur de pile.

* 6070 (ACCENT)         Semaphore pour les séquences accents.

* 6071 (SS2GET)         Semaphore pour l'incrustation ou la lecture
                        d'une minuscule accentuee.

* 6072 (SS3GET)         Semaphore pour l'impression ou la lecture
                        d'une minuscule accentuee.

* 6073 (BUZZ)           Semaphore d'extinctions du buzzer.

* 6074 (CONFIG)         Flags de presence peripheriques.

                b7      lecture lightpen redirectee vers peripherique
                b6      peripheriqye clavier branche
                b5      presence modem premiere et deuxsieme generation
                b4      imprimante connectee et ON-LINE
                b3      interface RS232 connectee
                b2      presence lecteur de cassettes
                b1      presence ram disque
                b0      interface jeu et musique connectee

* 6075 (EFCMPT)         Compteur d'effacements du curseur.

* 6076-6077 (BLOCZ)     Deux octets toujours a la valeur zero pour les
                        initialisations. 

* 6078 (SCOLS)          Semaphore de scroll doux.

* 6079-607A (BUFCLV)    Adresse du buffer de reception clavier.

* 607B (SIZCLV)         Longueur du buffer de clavier.

* 607C (ACCES)          Flag indiquant la validite d'une information
                        du peripheriques clavier.

* 607D (PERIPH)         Echo des 3 bits LSB retournes par le clavier
                        lors de l'envoi d'une commande.

* 607E (PERIPH1)        Assure la chronologie des informationsissues
                        du clavier.

* 607F (RUNFLG)         Semaphore indiquant que l'option AUTO a ete choisie.

* 6080 (DKFLG)          Semaphore de presence du controleur disque.

* 6081-6085 (IDAUT)     Buffer clavier par defaut.

* 6086 (CURFLG)         Page dans laquelle bat le curseur en mode 80
                        colonnes.

* 6087 (TEMP2)          Registre temporaire.

* 6088-608A (RESETP)    Adresse d'initialisation des nouveaux
                        peripheriques qui doit contenir un JMP
                        Adresse. 

* 608B (QWERTZ)         Sur la version QWERTY, le bit 0 à 1 signifie
                        clavier en version QWERTZ.

* 608C-60CC (STACK)     Pile systeme.

* 60CD-60CE (PTCLAV)    Pointeur sur la tabl de decodage du clavier.

* 60CF-60D0 (PTGENE)    Pointeur sur le generateur de caractere
                        standard.

* 60D1 (APPLIC)         Checksum de l'application en cours.

* 60D2 (DECALG)         Ajustement pour le crayon optique.

* 60D3-60FD (LPBUFF)    Zonne-tampon pou la lecture du crayon optique
                        ou du peripherique clavier.

* 60FE-60FF (TSTRST)    Semaphore de demarrage a chaud ou a froid.


19.4 Adresses d'entree/sortie

Les adresses qui suivent sont donnees en hexadecimal.

19.4.1 Le PIA systeme 6846

* E7C0 (CSR)            Registre d'etat

* E7C1 (CRC)            Registre de controle

        CC2             sortie son
        CT0             ecriture cassette

* E7C2 (DDRC)           Registre de direction

* E7C3 (PRC)            Registre de donnees
                
        b0 (sortie)     commutation memoire ecran FORME (1) et memoire
                        ecran COULEUR (0).
        b1 (entree)     interrupteur crayon optique.
        b2 (sortie)     selection banque RAM DISK (cf. tableau Bank
                        Ram).
        b3 (sortie)     inutilisable.
        b4 (sortie)     selection slot ROM (cf. Bank Rom).
        b5 (sortie)     selection slot ROM (cf. Bank Rom).
        b6 (sortie)     selection banque RAM DISK (cf. tableau Bank
                        Ram).
        b7 (entree)     lecture cassette

* E7C5 (TCR)            Registre controle timer

* E7C6-E7C7 (TMSB-TLSB) Valeur timer


19.4.2 Le PIA System 6821

* E7C8 (PRA)            Registre de donnees, port A.
        
        b0 (entree)     bit de keytest.
        b1-7 (sortie)   D1-D7 de l'imprimante.

* E7C9 (PRB)            Registre de donnees, port B.

        b0 (sortie)     D0 de l'imprimante
        b1 (sortie)     strobe imprimante
        b2 (sortie)     Commande de l'incrustation
        b3-7 (entrees-sortie)
                        selection banque memoire

* E7CA (CRA)            Registre de controle, port A

        CA1 (entree)    presence carte incrustation
        CA2 (sortie)    moteur du L.E.P.

* E7CB (CRB)            Registre de controle, port B

        CB1 (entree)    interruption light-pen
        CB2 (sortie)    inutilise


19.4.3 Le PIA jeu

* E7CC (PRA1)           Registre de donnees, Port A:

        b0-7 (entree)   lecture des manettes de jeux.

* E7CD (PRB1)           Registre de donnees, Port B:

        b0-5 (entree)   convertisseur digital/analogique
        b6 (entree)     action manette de jeu 0
        b7 (entree)     action manette de jeu 1

* E7CE (CRA1)           Registre de controle, Port A:

        CA1 (entree)    action manette de jeu 0

* E7CF (CRB1)           Registre de controle, Port B:

        CB1 (entree)    action manette de jeux 1.


19.4.4 Le controleur de disquette WD 1770 / WD 2793

* E7D0 (STR) (lecture)  Registre d'etat

* E7D0 (CMDR) (ecriture)
                        Registre de commande

* E7D1 (TKR) (lec/ecr)  Registre de piste

* E7D2 (SECR) (lec/ecr) Registre de secteur

* E7D3 5DR) (lec/ecr)   Registre de donnees

Les adresses E7D4 a E7D7 correspondent respectivement aux adresses E7D0 a
E7D3 

* E7D8 (DRV) (ecriture) Selection densite et drive


19.4.5 La palette EF9369

* E7DA (DREG) (lec/ecr) Registre de donnees

* E7DB (AREG) (ecriture)
                        Registre d'adresses

ATTENTION: ne pas lire la case E7DB car il en resultera une recopie
parasite de certaine cases de la palette dans d'autres.

19.4.6 Le gate d'affichage EFGG06

* E7DC (LGAMOD) (ecriture)
                        Registre de commande

Les donnees video entrant dans le boitier sont organisees sur 16 bits
regroupant les 8 bits formes du To7/To7-70 et les 8 bits de couleurs du
To7-70. 

Donnees serialisees     Donnees multiplexees
(to7/to7-70)            (to7/to7-70)
V V V V V V V V         V V V V V V V V
1 1 1 1 1 1 9 8         7 6 5 4 3 2 1 0
5 4 3 2 1 0

---------------------------------------------------------------------
|     CODE      |         Resultat          |  sortie vers palette  |
---------------------------------------------------------------------
| Donnees D0-D2 |   Mode de serialisation   |                       |
---------------------------------------------------------------------
|   xxxxx000    | V8-V15 serialisees        | 4 sorties => 16coul   |
|               | V0-V7 multiplexees        |                       |
|               |                           |                       |
|   xxxxx001    | V8-V15 serialisees        | 2 sorties => 4coul    |
|               | V0-V7 serialisees         |                       |
|               |                           |                       |
|   xxxxx010    | V0-V15 serialisees        | 1 sortie => 2coul     |
|               |                           |                       |
|   xxxxx011    | V0-V3 serialisees         | 4 sorties => 16coul   |
|               | V4-V7 serialisees         |                       |
|               | V8-V11 serialisees        |                       |
|               | V12-V15 serialisees       |                       |
|               |                           |                       |
|   xxxxx100    | V8-V15 serialisees        | 1 sortie => 2 coul    |
|               |                           |                       |
|   xxxxx101    | V0-V7 serialisees         | 1 sortie => 2 coul    |
|               |                           |                       |
|   xxxxx110    | V0-V7 serialisees         | 2 sorties (3 couls)   |
|               | V8-V15 serial. priorit.   |                       |
|               |                           |                       |
|   xxxxx111    | V0-V3 serialisees         | 4 sorties (5 couls)   |
|               | V4-V7 ser. priorit.       |                       |
|               | V8-V11 ser. priorit.(+)   |                       |
|               | V12-V15 ser. priorit.(++) |                       |
---------------------------------------------------------------------
| Donnees D3,D4 |   Frequence de serial.    |                       |
---------------------------------------------------------------------
|   xxx00xxx    |          8Mhz             | 320 pts/ligne         |
|               |                           |                       |
|   xxx01xxx    |         16Mhz             | 640 pts/ligne         |
|               |                           |                       |
|   xxx10xxx    |          8Mhz             | 320 pts/ligne         |
|               |                           |                       |
|   xxx11xxx    |          4Mhz             | 160 pts/ligne         |
---------------------------------------------------------------------
| Donnees D5,D6 |   Transcodage                                     |
---------------------------------------------------------------------
|   x00xxxxx    | Croisement des donnees video compatible to7-70    |
|               |                                                   |
|   x01xxxxx    | Pas de transcodage V0-v15 -> V'0-V'15             |
|               |                                                   |
|   x10xxxxx    | Non traite                                        |
|               |                                                   |
|   x11xxxxx    | Transcodage Bitmap 16                             |
---------------------------------------------------------------------
| Valeurs a ecrire en E7DC pour obtenir les 8 modes du To9          |
---------------------------------------------------------------------
| 00000000  00  | Mode To7-70                                       |
| 00100001  21  | Bitmap 4                                          |
| 00101010  2A  | 80 colonnes                                       |
| 01111011  7B  | Bitmap 16                                         |
| 00100100  24  | Page 1                                            |
| 00100101  25  | Page 2                                            |
| 00100110  26  | Overlay                                           |
| 00111111  3F  | Triple overlay                                    |
---------------------------------------------------------------------

ATTENTION: il y a incompatibilite avec le to8 et to9+ au niveau des codes a
inscrire en E7DC.

* E7DD (LGATOU) (ecriture)      Registre couleur tour

        -----------------------------------
        | Donnee ecrite | couleur obtenue |
        -----------------------------------
        |    xxxx0000   |    Couleur 8    |
        |    ........   |    .........    |
        |    xxxx0111   |    Couleur 15   |
        |    xxxx1000   |    Couleur 0    |
        |    ........   |    .........    |
        |    xxxx1111   |    Couleur 7    |
        -----------------------------------

ATTENTION: il y a incompatibilite avec le to8 et to9+ au niveau des codes a
ecrire.


19.4.7 L'interface de communication SY6551

* E7E8 (SIOTRANSM) (ecriture)   Registre de transmission des donnees
       (SIORECPT) (lecture)     Registre de reception des donnees

* E7E9 (SIORESET) (ecriture)    Registre de RESET
       (SIOSTATUS) (lecture)    Registre d'etat

* E7EA (SIOCMDE)                Registre de commande

* E7EB (SIOCNTRL)               Registre de controle


19.4.8 l'ACIA liaison clavier 6850

* E7DE (SCR) (ecriture)         Registre de controle

* E7DE (SSRD) (lecture)         Registre d'etat

* E7DF (STDR) (ecriture)        Registre de transmission de donnees

* E7DF (SRDR) (lecture)         Registre de reception de donnees.

15. Gestion des interruptions

Nous avons appris, au travers de l'etude materielle, que certaines
interruptions du 6809E sont utilisees:

- L'interruption IRQ est declanchee soit pour le dialogue clavier,
soit par le timer du 6846 pour faire clignoter le curseur a l'ecran
toutes les 100ms, soit encore pour gerer la souris ou les manettes
(TO8 et TO9+).
- L'interruption FIRQ est utilisee pour le gestion du lightpen.

Par les differents exemples d'utilisations des routines du moniteur
donnes dans les chapitres precedents, nous savons que les
interruptions logicielles SWI sont utilisees pour arreter un programme
ou "reprendre la main."

Mais ces differentes interruptions sont programmables. A chacune
d'elles correspond un registre RAM contenant l'adresse du programme
qui doit la traiter. A la mise sous tension ou apres un redemarrage "a
chaud", ces registres ont ete initialises avec l'adresse d'un
programme du moniteur. En consequence, vous pouvez deriver ou
aiguiller ces interruptions sur des programmes personnels, en
re-initialisant ces registres!

* Aiguillage des IRQ
 - L'adresse de votre programme de gestion de l'IRQ generee par le timer
doit etre implantee dans le registre TIMEPT ($6027-$6028) et dans le
registre IRQPT ($6021-6022).
 - Le bit 5 du registre STATUS ($6019) doit etre force a 1.
 - Les registres DP et S doivent etres conserves
 - Votre programme doit obligatoirement finir par un JMP KBIN ($E830)
pour valider l'interruption.

Si l'interruption IRQ est generee par une autre sources que le timer,
l'adresse du programme sera implatee en TIMEPT.

Le programme de la page suivante donne un exemple d'une telle
procedure. Le programme de gestion de l'IRQ est ecrit a partir de
l'adresse $A000, et le programe de derivation est ecrit en $7000
(attention, lancez le programme en $7000 et non en $A000). Apres le
lancement, la couleur du cadre changera toute les 100ms sans
pourautant "monopoliser" votre machine.

* Aiguillage des FIRQ
 - Vous devez mettre l'adresse de votre programme en FIRQPT
($6023-$6024).

* Aiguillage des SWI
 - Pour gerer les SWI, vous devez mettre l'adresse de votre programme
en SWI1 ($602F-$6030). SWI2 saute directement en $6800, et SWI3 en
$7000.

Mais attention, certaines routine du moniteur sont interruptibles et
vos programmes ne doivent pas modifier leurs parametres. Un JMP MENU
($E82D) fait revenir a la page d'en-tete.

* PROGRAMME DE GEST. IRQ ECRIT EN $A000
* PROGRAMME DE DERIVATION EN $7000

        TITLE   GEST2IRQ

PUTC    EQU     $E803
RETOUR  EQU     $E830
PILE    EQU     $B000

        ORG     $A000
        LDB     #$1B
        JSR     PUTC
        LDB     PILE
        CMPB    #$67
        BNE     SUIT
        LDB     #$60
        STB     PILE
SUIT    JSR     PUTC
        INC     PILE
        JMP     RETOUR

STATUS  EQU     $6019
TIMEPT  EQU     $6027
IRQPT   EQU     $6021

        ORG     $7000
        LDA     STATUS
        ORA     #$20
        STA     STATUS
        LDX     #$A000
        STX     TIMEPT
        STX     IRQPT
        LDA     #$60
        STA     PILE
        SWI
        END


21 DIFFERENCES ENTRE LES TO7, TO7-70, TO9, TO8 ET TO9+

(sam: ce chapitre est tres mal ecrit dans la doc originale, donc
cette copie peut etre deroutante parfois :-( )

Ce chapitre resume les differences entre les TO7, TO7-70, TO9, TO8 et
TO9+. Il reprend ces differences tant au niveau de la page zero etdes
point d'entree qu'au niveau des PIA et gate-array. Les differentes
machines sont differenciables au niveau de la lecture de l'octet
$FFF0:
        0:      TO7
        1:      TO7-70
        2:      TO9
        3:      TO8
        6:      TO9+

Il s'entend qu'un machine de numero d'ordre n supporte tous les points
d'entree des machines de numero 0 a n.

21.1 Differences des points d'entree

Ces differences sont vairables pour les TO9, TO8 et TO9+ par rapport
aux TO7 et TO7-70. SI une differences existe entre le TO9 et les TO8
et TO9+, elle sera signalee.

Les initialisations sont faites selon la machine

Diverses routines sont redirectee a travers des pointeurs en page
zero.

PUTC permet d'accceder aux divers mode d'affichage.

Le generateur de caractere du G2 a ete etendu.

PLOT et DRAW gerent les 16 couleurs de fond, tous les modes. Elles ne
pouvaient pas bloquer les couleurs sur TO7.

KTST rend vrai si une touche est PRESENTEMENT appuyee. Il rendra faux,
meme si le buffer est plein, si aucune touche n'est appuyee au moment
de l'appel.

GETC fonctionne sur interruption avec un buffer programmable.

La latence du clavier n'est plusprogrammable.

Une fermeture des interruption interdit la reception des caractere du
clavier ainsi que la lecture de la souris.

Une fermeture des interruptions n'interdit pas la reception des
caracteres du clavier mais interdit la lecture de la souris pour le
TO9+.

GETS gere les caracters du G2.

Les registres NOTE sont modifies au reste, et non reinitialises.

RSCO foncitonne jusqu'a 19200 bauds en serie, on peut programmer le
nombre de bits, la parite, etc... Il permet d'ouvrir les voies
paralleles et serie en meme temps. Le code d'ecriture serie sur RSCO
est 9 au lie ude 8.

DKCO permet de gere le disque virtuel, les disquettes 3"5 et 5"1/4,
double et simple densite, et permet de gerer le QDD sur le TO8.

GEPE et PEIN sont nouveaux: lecture de la souris

SETP est nouveau: programmation de la palette.

COMS est nouveau: Appel d'une routine en ROM.

EXTRA est nouveau: Appel a l'extramoniteur.

21.2 Differences des registres de la page zero

Ces differences sont valables pour les to9,to8 et to9+ par rapport aux
to7 et to7-70. Si une differnce existe entre le to9 et les to8 et
to9+, elle sera signalee.

TERMIN (25 octets: table des terminateurs) est replace par REDIR (22
octets: table de redirection), PLAN (1 octet: numero de plan en mode
overlay) et SAVPAL (2 octets: sauvegarde de la couleur 14 en mode 80
colonnes). 

STATUS: le bit de blocage des couleurs en graphique n'existait pas sur
TO7.

NMIPT (2 octets: pointeur sur les NMI) qui n'existait pas sur TO7 est
replace par COPBUF (2 octets; copie de BUFFAT, reserve au systeme).

TEMPO, DUREE, TIMBRE et OCTAVE sont modifie au reset, et non
reinitialises.

GRCODE (1octet: code graphique imprimante) est remplace par DERBANK (1
octet: derniere banque libre) sur les TO8 et TO9+

TRACK2 (2 octets: position de la tete du drive 2) est remplace par
TEMP1 (2 octets: temporaire).

TRACK3 (2 octets: position de la tete du drive 3) est remplace par
TEMP2 (1 octet: temporaire) et ROTAT (1 octet: rotation du moteur
disque).

ROTAT du to9 est remplace par RDEN sur les TO8 et TO9+.

KEY (1 octet: derniere touche lue) est remplace par READCLV (1 octet:
pointeur de lecture du buffer clavier).

CMPKB (1 octet: compteur d'interruption clavier) est remplace par
SCRMOD (1 octet: mode d'affichage courant).

LATCLV (1 octet: latence clavier) est remplace par WRITECLV (1 octet:
pointeur d'ecriture du buffer clavier).

ABCMP (1 octet: inutilise) est remplace par CONFIG (1 octet:
peripherique connectes).

TABCHX (6 octets: table des choix du menu) est remplace par BUFCLV (2
octets: pointeur vers le buffer clavier), ACCES (1 octet: reserve
reception clavier), PERITH (1 cotet: reserve reception clavier),
PERITH2 (1 octet: reserve reception clavier).

ACCES du TO9 est remplace par DATE1 sur les TO8 et TO9+.

PERIPH du TO9 est remplace par DATE2 sur les TO8 et TO9+.

PERIPH1 du TO9 est remplace par DATE3 sur les TO8 et TO9+.

PTCLAV qui n'existait pas sur TO7 ne sert plus.

PTCLAV est remplace par DSKSIZ (1 octet: infos disque) sur les TO8 et
TO9+.

PTGENE n'existait pas sur TO7.

LPBUFF sert aussi a la lecture de la souris.

Le sommet de la pile systeme est reserve pour les registres suivants:

        ME7E7 (1 octet: sauvegarde du registre $E7E7) sur les TO8 et
TO9+
        IDSAUT (5 octets: buffer clavier par defaut).
        IDSAUT (4 octets: buffer clavier par defaut) sur lesTO8 et
TO9+
        CURFLG (1 octet: curseur en 80 colonnes).
        TEMP3 (1 octet: temporaire)
        RESETP (3 octets: debrachement a l'initialisation).
        QWERTZ (1 octet: version QWERTZ) n'a d'effet que sur les TOx
version QWERTY.

21.3 Differences desPIA et registre memoire

Cette partie donne les differences materielles entre les TO7, TO7-70,
TO9, TO8 et TO9+.

21.3.1 le 6846 systeme

* E7C1 (CRC):

TO9             CP1: inutilise
TO8, TO9+       CP1: request clavier

TO9             CP2: sortie son
TO8, TO9+       CP2: mute son pour souris

* E7C3 (PRC):   registe de donnees

TO7             bit2:           intutilise
TO7-70          bit2 (sortie):  Couleur tour pastel
TO9             bit2 (sortie):  selection banque RAM DISK
TO8, TO9+       bit2 (sortie):  selection Cartouche/Basic

TO7-70          bit3 (sortie):  LED clavier
TO9, TO8, TO9+  bit3:           Reflet LED clavier

TO7-70          bit4-6(sortie): Couleur tour
TO9             bit4-5(sortie): selection slot ROM
                bit6 (sortie):  selection banque RAM DISK
TO8, TO9+       bit4 (sortie):  selection banque ROM moniteur
TO8             bit5 (entree):  ACK liaison clavier
TO9+            bit5 (entree):  reserve
TO8, TO9+       bit6 (entree):  busy imprimante

21.3.2 Le 6821 systeme

* E7C8 (PRA):   registre de donnees, port A.

TO7-70          bit0-7(entree): lecture matrice clavier
TO9, TO8, TO9+  bit0 (entree):  bit de keytest
TO9, TO8, TO9+  bit1-7 (sortie): D1-D7 de l'imprimante

* E7C9 (PRB)    registre de donnees, port B.

TO7             bit0-7(sortie): ecriture matrice clavier
TO7-70          bit0-2(sortie): multiplexage clavier
                bit3-7(e/s):    selection banque memoire
TO9, TO8, TO9+  bit0 (sortie):  D0 de l'imprimante
TO9, TO8, TO9+  bit1 (sortie):  strobe imprimante
TO9, TO8, TO9+  bit2 (sortie):  commande d'incrustation
TO9, TO8, TO9+  bit3-7(e/s):    selection banque memoire.

* E7CB (CRB):   registre de controle, port B.

TO9             CB1 (entree):   interruption lightpen
TO8, TO9+       CB1 (entree):   signal code barre

21.3.3 L'interface de communication

Le TOx gere la nouvelle interface de communication RS232. Il ne peut
gerer l'ancienne interface qui fonctionne sur les systemes TO7. Ces
memes systemes ne peuvent accepter la nouvelle interface.

21.3.4 Le controleur de disquette WD 1770/WD 2793

Ce controleur est remplace par le controleur THMFC1 dans les TO8 et
TO9+. Voir le document de sa specifiaction pour tous renseignements.
Seuls les points d'entree du moniteur seront compatibles.

21.3.6 Le gate affichage EFGG06

Ce gate est remplace par le gate mode page dans les TO8et TO9+. Voir
le document de sa specifiaction pour tous renseignements. Seuls les
points d'entree du moniteur seront compatibles.

21.3.7 La liaison clavier

Le mode de fonctionnement sera modifie surtout ence qui concerne le
peripherique relie au clavier. Seuls les points d'entree du moniteur
seront compatibles.


Annexe: La connectique6 CLAVIER

6.1 Lecture rapide du clavier

        * adresse du point d'entree: KTST ($E809)

        * parametre de retour: registre 6809 CC

Cette routine effectue une lecture rapide du clavier, pour tester si
une touche est ACTUELLEMENT enfoncee ou non. Si aucune touche n'est
enfoncee, le bit C du registre CC est mis a 0, sinon il est mis a 1.

6.2 Decodage du clavier

        * adresse du point d'entree: GETC ($E806)
        
        * parametres d'entree: registres BUFCLV ($6079-$607A), SIZCLV
        ($607B), et sur version QWERTY: QWERTZ ($608B)
        
        * parametres de retour: registres 6809 B et CC

Le clavier envoie un interruption au systeme a chaque fois qu'une
touche est frappee. Lors de la reception de ce caractere, le TOx le
range dans un buffer circulaire dont l'adresse est situee dans BUFCLV
($6079-$607A). L'utilisateur peut restituer ce buffer a l'endroit de
son choix. SIZCLV ($607B) definit la taille de ce buffer. Quand il est
plein, les caracteres suivants sont ignores. Au demarrage, ce buffer
est situe dans la page zero du moniteur et a une longueur de 5
caracteres. La longueur maximale du buffer est rangee dans un octet,
ce qui limite la longueur du buffer a 255 caracteres. Un taille minimum
de 3 caracteres pour le buffer est necessaire pour permettre la
reception des caracteres accentues.

B retourne le code ASCII du caractere. Si aucune touche n'a ete
enfoncee, ou si l'une des deux touches SHIFT ou CNT a ete enfoncee
seule, ou si plusieurs touches parmi les touches SHIFT ou CNT ont ete
enfoncees simultanement, B retourne la valeur zero.

La touche SHIFT selectionne le caractere se trouvant en haut de la
touche. La touche CNT force a 0 le bit 6 du code ASCII du caractere de
la touche.

L'acces aux minuscules accentuees necessite en general trois frappes
consecutives:

        1° frappe: touche accent (ACC)

        2° frappe: touche SHIFT en meme temps que la touche
        representant l'accent

        3° frappe: lettre minuscule (ou majuscule en QWERTY)

Cependant sur le TOx, l'acces a certaine minuscules accentuees
couramment utilisees en Francais peut etre fait en une frappe: e', e`,
c, , a`, u`.

De meme, l'accent trema peut ne pas etre precede de la touche ACC;
dans ce cas deux frappes suffisent.

Dans la version QWERTY, les caracteres A, O, U majuscule ou minuscule
avec un trema peuvent etre obtenus en une frappe.

Mais dans tous les cas, vous devez faire trois appels consecutifs a
cette routine:

        le 1° appel retourne dans B le code de la touche ACC, soit $16

        le 2° appel retourne dans B le code de l'accent ou de la
        cedille

        le 3° appel retourne dans B le code du la minuscule.

Le TOx dispose de 10 touches de fonctions. Les codes envoyes par ces
touches vont de $90 a $99.

Le keypad du TOx peut etre reconfigure de facon a envoyer des codes
differents des codes des chiffres. Dans ce cas les 10 chiffres 0 a 9
envoyent les codes $9A a $A3, le point envoie le code $A4 et la touche
ENT le code $A5.

Sur la version QWERTY, il est possible d'intervertir les touches Z et
Y de facon a passer en version QWERTZ. Ceci se fait par l'appui sur la
touche CTRL, et la frappe successive sur les touches CAPS LOCK, A et
6. Le fait de refaire cette sequence repasse en version QWERTY. Au
demarrage a froid de la machine, le clavier est positionne en QWERTY,
un reset ne modifie pas l'etat du clavier. On peut aussi passer le
clavier en version QWERTZ en mettant a 1 le bit 0 du registre QWERTZ
($608B); en remettant ce bit 0, on repasse en version QWERTY. Seul ce
bit doit etre modifie.

6.3 Programmation du clavier
        
        * adresse du point d'entree: GETC ($E806)

        * parametres d'entree: registre 6809 B, registre STATUS
        ($6019)

Le clavier peut etre programme. 7 codes lui permettent de positionner
le CAPS LOCK ou de selecter le mode keypad. Un des codes suivants doit
etre positionne dans B, tandis que lebit 1 de STATUS ($6019) doit etre
mis a 1:

        - $F8: reinitialisation soft du clavier: Caps lock on, keypad
        selectionne pour les chiffres, peripheriques clavier pouvant
        parler.

        - $F9: CAPS LOCK on

        - $FA: CAPS LOCK off

        - $FB: Selection code speciaux pour le keypad

        - $FC: selection chiffres pour le keypad

        - $FD: peripherique autorise a emettre
        
        - $FE: peripherique interdit a emettre

Le bit 1 de STATUS ($6019) est remis a zero des que l'operation est
effectuee.


16 PROGRAMMATION DE LA PALETTE

        * adresse du point d'entree: SETP ($EC00)
        
        * parametres d'entree: registres 6809 A, X et Y

        * parametre de sortie: registre 6809 X

Cette routine permet de definir la valeur de chacune des 16 couleurs
affichages parmi un palette de 4096 couleurs.

Les couleurs sont definies par les trois composantes Rouge, Vert et
Bleu, ainsi qu'un bit definit si la couleur est transparentre en
incrustation. Le codage est le suivant:

        xxxMBBBB VVVVRRRR code sur 2 octets,

ou M represente la transparence en incrustation (1: opaque, 0:
transparent), BBBB le codage du bleu, VVVV le codage du vert et RRRR
le codage du rouge. Chaque composante etant codee sur 4 bits, elle
peut donc prendre 16 valeurs. Trois composantes permettent donc
d'avoir 16x16x16, soit 4096 couleurs.

16.1 Lecture ou ecriture d'un case de la palette

Le numero de la couleur que l'on veut modifier est rangee dans le
registre A.

Le registre X est un masque ET. Il permet de choisir les bits que l'on
veut modifier. Les bits a 0 seront modifies, ceux a 1 conserves.

Le registre Y est un masque OU. Il permet de fixer l'etatt des bits
qui sont a 0, ou qui sont mis a 0 par le masque ET.

En sortie, X contient la valeur rangee dans la palette.

L'operation realisee est: PALETTE = (PALETTE and X) or Y.

REMARQUE: cette operation est effectuee sans attente de retour trame,
mais avec attende de retour de ligne sur les TO8 et TO9+.

Exemple: si on veut mettre le vert a une demi-intensite sans toucher
aux autres composantes pour la couleur 2,on charge:

        A avec 2
        X avec %111 1 1111 0000 1111 ($FF0F)
        Y avec %000 0 000  0111 0000 ($0070)

En sortie X contient la valeur de la case 2 de la palette.

Exemple: si on veut mettre la couleur 5 transparente pour
l'incrustation, on charge:

        A avec 5
        X avec %111 0 1111 1111 1111 ($EFFF)
        Y avec %000 0 0000 0000 0000 ($0000)

En sortie X contient la valeur de la case 5 de la palette.

Exemple: pour lire le contenu d'une case sans la modifier, il est
evident que X doit etre a $FFFF et Y a 0. En sortie, le resultat est
dans X.

16.2 Programmation complete de la palette

Le registre A dans ce cas doit contenir $FF. Le  registre X doit
pointer une table de 32 octets qui contiennet les 16 valeurs des 16
couleurs codees comme decrit precedemment.

Les 2 premiers octets codent la couleur 0, tandis que les 2 derniers
codent la couleur 15, ceci en mode 40 colonnes.

Remarque: cette operation est effectuee avec attente de retour trame.

16.3 Cases memoires utilisees selon le mode d'affichage

Les cases de la palette du TOx sont, pour des raisons materielles,
echangees selon les modes d'affichage.

En programmation d'une case seule de la palette, la table suivante
doit etre utilisee pour programmer la palette. F represente la couleur
a echanger pour modifier la forme, f pour le fond. Les cases reperees
pardes - ne peuvent etre modifees sur le TO9, meme pour le tour

Numero couleur : 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
----------------------------------------------------------------
Cases palette  :
TO7-70         : Ff Ff Ff Ff Ff Ff Ff Ff Ff Ff Ff Ff Ff Ff Ff Ff 
80 colonnes    : f  F  -  -  -  -  -  -  -  -  -  -  -  -  -  -
Page 1         : f     F
Page 2         : f  F
Overlay        : f  F2 F1
Bitmap 4       : F  F  F  F
Bitmap 16      : F  F  F  F  F  F  F  F  F  F  F  F  F  F  F  F
Triple overlay : f  F1 F2    F3          F4

En programmation complete de la palette, les numeros logiques ne
correspondent plus aux numeros physiques. Il faut donc acceder a la
table de conversion suivante pour modifier les couleurs selon le mode
selectionne.

Numero couleur : 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
----------------------------------------------------------------
Cases palette  :
TO7-70         : 0  1  2  3  4  5  6  7  8  9  10 11 12 13 14 15
80 colonnes    : 8 14 10 11 12 13  9 15  0  1  2  3  4  5  6  7
Page 1         : 8  9 10 11 12 13 14 15  0  1  2  3  4  5  6  7
Page 2         : 8  9 10 11 12 13 14 15  0  1  2  3  4  5  6  7
Overlay        : 8  9 10 11 12 13 14 15  0  1  2  3  4  5  6  7
Bitmap 4       : 8  9 10 11 12 13 14 15  0  1  2  3  4  5  6  7
Bitmap 16      : 8  9 10 11 12 13 14 15  0  1  2  3  4  5  6  7
Triple overlay : 8  9 10 11 12 13 14 15  0  1  2  3  4  5  6  7

16.4 Contenu du fichier PALETTE.CFG

Le fichier PALETTE.CFG contient les donnees d'une palette sauvegardee
par l'utilistaire "REGLAGE DE LA PALETTE".

Il s'agit d'un fichier binaire de 32 octers (16 mots de 16 bits)
decrivant les 16 coulerus de la palette depuis la coulkeur 0 jusqu'a
la couleur 15.

Chaque mot a le format suivant:

        xxxMBBBB VVVVRRRR

        M    represente le bit d'incrustation
        BBBB est la quantite de bleu
        VVVV est la quantite de vert
        RRRR est la quantite de rouge
        x    sans importance.


18 APPEL de l'EXTRA-MONITEUR

        * adresse du point d'entree: EXTRA ($EC0C)

        * parametres d'entree: registre 6809 B, registres page
        $6100-$62FF selon routine.

        * parametres de sortie: registre 6809 B, registres pages
        $6100-$62FF selon routine.

Ce point d'entree permet d'acceder aux routines de l'extramoniteur. En
entree, B contient le numero de la routine a executer, les registres
necessaires des pages $6100-$62FF devant etre positionnes selon la
routine appelee.

En sortie, le registre B contient un numero d'erreur, les registres
des pages $6100-$62FF etant modifies si necessaire.

Vous referer au document concernant l'extramoniteur pour la
description complete des routines.


LES EQUATES D'EXTRAMON

*** MODES D'OUVERTURE POUR LA ROUTINE OPEN

M.SQI   EQU     $10     Ouverture en input sequentiel
M.SQO   EQU     $20     Ouverture en output sequentiel
M.RND   EQU     $40     Ouverture en direct (I/O)

*** LES OBJETS TORTUES

TX      EQU     6       position de la tortue X
TY      EQU     9       position de la tortue Y
TROT    EQU     12      rotation de la tortue
TTAI    EQU     13      taille de la tortue
TDIR    EQU     14      direction de la tortue
TFORME  EQU     16      forme de la tortue

*** L'ACCUMULATEUR FLOTTANT

DBLFLG  EQU     $6103   flag de double procision
VALTYP  EQU     $6105   indicateur de type
FAC     EQU     $614E   accumulateur
FACEXP  EQU     $614E   exposant
FACHO   EQU     $614F   octet fort de la mantisse
FACMO   EQU     $6150   octet moyen de la mantisse
FACLO   EQU     $6151   octet faible de la mantisse

DFACHO  EQU     $6152   4 octets de plus pour la double precision
DFACMH  EQU     $6153
FFACML  EQU     $6154
DFACLO  EQU     $6155

FACSGN  EQU     $6156   signe de FAC (0 ou -1) quand non codé

*** LES ARGUMENTS FLOTTANTS (NON CODE)

ARGEXP  EQU     $6159
ARGHO   EQU     $615A
ARGMO   EQU     $615B
ARGLO   EQU     $615C

DARGHO  EQU     $615D   4 octets de plus pour double precision
DARGMH  EQU     $615E
DARGML  EQU     $615F
DARGLO  EQU     $6160

ARGSGN  EQU     $6161

DEBZON  EQU     $616B   Debut et fin de la zone tampon pour EXTRAMON
FINZON  EQU     $616E

EOFFLG  EQU     $6178   flag de fin de fichier (zero => non fini; non
                        zero => fini)

*** TEMPORAIRES POUR PRINT USING

DPWID   EQU     $617A
FLDWID  EQU     $617B
PUMASK  EQU     $617C

ZPERR   EQU     $6185   rattrapage d'erreur d'EXTRAMON. BASIC
                        l'initialise a ERROR dans CLEAR.

RSKCHG  EQU     $6189   flag de risque de changement de disque

NBANK   EQU     $618c   noùbre de banques accessibles

*** VARIABLES LIEES AUX DISQUES

VERFLG  EQU     $618D   pour VERIFY ON ou OFF
NAMSEC  EQU     $618E   le secteur du catalogue contenant le nom
                        recherche 

NAMSLT  EQU     $618F   un pointeur vers le slot dans le secteur (voir
                        NAMSEC), ou zero si le nom n'a pas ete trouve.

CARCOU  EQU     $6196   le caractere que DFCHRI vient de lire. SECBUF
                        et FATPTR doivent etre positionnes avant le
                        1er appel au DOS sous peine d'erreur.

SECBUF  EQU     $6197   un pointeur vers le buffer de lecture d'un
                        secteur

FATPTR  EQU     $6199   pointeur vers la zone ou l'utilisateur veut
                        ranger les FATs (DSBs)

DSBLEN  EQU     6+2*80

SWPFLG  EQU     $619D   un flag pour dire que l'on veut un swap
                        disquette

*** VARIABLES GLOBALES NECESSAIRES AU GRAPHIQUE

COULEUR EQU     $619F
TRATYP  EQU     $61A0   type de trace 0=normal; 1=normal sans couleur;
                        2=en ou exclusif

XXXX    EQU     $61A1
YYYY    EQU     $61A3   le curseur graphique

XL      EQU     $61A5   la fenetre graphique
YB      EQU     $61A5
XR      EQU     $61AB   de XLeft, YBottom a XRight, YTop.

*** TEMPORAIRE POUR L'EDITEUR

DEFTXT  EQU     $61E0   pointeur vers du texte a afficher

*** VARIABLES LOCALES AU TRACE D'ELLIPSES

FILFLG  EQU     $61EF   doit-on remplir l'ellipse ou le rectangle...
AXEV    EQU     $61F0   axe vertical
AXEH    EQU     $61F1   axe horizontal
CAMFLG  EQU     $61F2   camebert ?
ALPHA1  EQU     $61F3
ALPHA2  EQU     $61F7

*** VARIABLES LOCALES AU CODAGE ET AU DECODAGE

X0COD   EQU     $61D6   extremites du rectangle
Y0COD   EQU     $61D7
X1COD   EQU     $61D8
Y1COD   EQU     $61D9

*** DIVERS DE $6200 a $62FF

TYPDSK  EQU     $6219   type de controleur
TABDEN  EQU     $621A   table des densites par disque
MAXMOD  EQU     $6223
FCBNUM  EQU     $6244   numero de FCB courant
RLEN    EQU     $6247   longueur de l'enregistrement du fichier a
                        acces direct

PUTFLG  EQU     $6249   pour distinguer PUT de GET !
FILMOD  EQU     $624B   mode du fichier (OPEN)
FILTYP  EQU     $624C   type de fichier 0=BASIC program; 1=BASIC data
                        file; 2=machine language file
ASCFLG  EQU     $624D   Flag ASCII (0=fichier non ASCII; $FF=fichier
                        ASCII) 
FILNAM  EQU     $624F   buffer nom de fichier
FILEXT  EQU     $6257   buffer extension nom de fichier
OPTBUF  EQU     $625A   buffer de description des options
MACP    EQU     $627D   le pointeur vers le motif peinture
WITH    EQU     $6288   flag avec ou sans couleur

IWTFLG  EQU     $62A9   pour l'editeur, lorsque ce flag devient <> de
                        0, on sort sans reflechir !!!
BUFFRE  EQU     $62AA   pour l'OPEN en acces direct. Pointe vers un
                        buffer (de longueur RLEN) ou l'appelant
                        retrouvera l'enregistrement demande. 

ONOFF   EQU     $62B0   Flag avec ou sans disque
BLOCS   EQU     $62AE   pointe sur une table de descripteur de blocs


13. Commutation des memoires ROM

Le TO9 possede cinq boitiers ROM accessibles entre les adresses 0000
et 3FFF (IW 56, 40, 39, 38 et la cartocuhe exterieure). Ces boitiers,
hormis la cartouche, contiennent l'ensemble des logiciels integres au
TO9:
        - FICHE ET DOSSIERS
        - PARAGRAPHE
        - BASIC 128
        - BASIC 1.0
        - REGLAGES ET PREFERENCES
        - EXPLOITATION DE FICHIERS
et l'EXTRAMON.

Cet espace adressable de 16Ko ne convient pas a tous les logiciels.
Certains en effet depassent cette capacite et sont alors organises en
banques commutables de 16Ko. La routine COMS permet d'acceder a
n'importe quel boitier ROM. Dans ce cas, le registre U du
microprocesseur 6809E doit contenir l'adresse de debut du programme a
executer, et l'accumulateur A contient un octet defini de la maniere
suivante:

        00SS00BB

SS repere le numero de boitier et BB le numero de banque. Le tableau
ci-dessous vous aidera dans ces choix.

        Programme               SS      BB
        ----------------------------------
        Cartouche externe       11      XX
        Fiches et dossiers      10      XX
        Paragraphe              01      XX
        BASIC 128               00      00
        Extramon                00      01
        BASIC 1                 00      10
        Exploitation fichiers   00      11

Chaque ROM possede a l'adresse $20 son numero de banque. Ainsi le
moniteur peut s'assurer de l'identite de la banque selecte, afin de
mieux se reperer dans les boitiers constitues de plusieurs banques de
16Ko en parallele. Dans le cas des TO8 et TO9+, le tableau suivant
doit etre utilise pour la determination du contenu de A:

        Programme               SS      BB
        ----------------------------------
        Cartouche externe       11      XX
        BASIC 512               00      00
        Extramon                00      01
        BASIC 1                 00      10
        Exploitation fichiers   00      11

Nom:                            COMS
Adresse du point d'entree:      $EC03
Parametre d'entree:             Accu A; registre U du 6809E
Parametre de retour:            Neant
Effet:                          Permet d'acceder a n'importe quel
                                programe en ROM.