blob: 84401b2780f8d5044e3518ef5a0e501560deb1b1 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Index of /~devulder/priv/TOx</TITLE>
</HEAD>
<BODY>
<H1>Index of /~devulder/priv/TOx</H1>
<PRE><IMG SRC="/icons/blank.gif" ALT=" "> <A HREF="?N=D">Name</A> <A HREF="?M=A">Last modified</A> <A HREF="?S=A">Size</A> <A HREF="?D=A">Description</A>
<HR>
<IMG SRC="/icons/back.gif" ALT="[DIR]"> <A HREF="/~devulder/priv/">Parent Directory</A> 03-Mar-1999 19:32 -
<IMG SRC="/icons/image2.gif" ALT="[IMG]"> <A HREF="TEO_sur_amiga.gif">TEO_sur_amiga.gif</A> 21-Aug-1998 19:21 11k
<IMG SRC="/icons/unknown.gif" ALT="[ ]"> <A HREF="teo0_6.lha">teo0_6.lha</A> 28-Aug-1998 14:29 72k
<IMG SRC="/icons/image2.gif" ALT="[IMG]"> <A HREF="teo_sous_uae_sous_kde_sous_linux.gif">teo_sous_uae_sous_kd..></A> 21-Aug-1998 19:25 65k
</PRE><HR>
<PRE>
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 &amp; 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 &lt;= 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. &amp; 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-&gt;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 =&gt; simple densite; DDE=0 =&gt;
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 =&gt; Lecteur n°
1 0 0 =&gt; 0
1 0 1 =&gt; 1
0 1 0 =&gt; 2
1 1 1 =&gt; 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 =&gt; partie basse de la ROM
P4=1 =&gt; 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 &lt; AD &lt; 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 &lt; AD + 8Ko &lt; 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 =&gt; A0 RA15 T0 BE1 BE1
MA1-8 =&gt; A1 MU8 T1 TU8 TU8
MA2-9 =&gt; A2 A9 T2 T9 T9
MA3-10 =&gt; A3 A10 T3 T10 T10
MA4-11 =&gt; A4 A11 T4 T11 T11
MA5-12 =&gt; A5 A12 T5 T12 T12
MA6-13 =&gt; A6 RA13 T6 Q=0 Q=1
MA7-14 =&gt; A7 RA14 T7 BE0 BE0
MA8-15 =&gt; 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) =&gt; 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) =&gt; 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) =&gt; T0-T8 = adresses poids faible des
compteurs.
E=0 (phase non active du CPU)
C=0 (adresses RAM colones) =&gt; 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 =&gt; controleur interne
D7 = 1 =&gt; controleur externe.
D6 - bit de gestion RAM dans l'espace cartouche
D6 = 0 =&gt; mode compatible nanoreseau
D6 = 1 =&gt; gestion par registre interne "cartouche" A7E6/E7E6
D5 - bit de standard d'affichage
D5 = 0 =&gt; 624 lignes (France)
D5 = 1 =&gt; 524 lignes (Export).
D4 - bit de gestion RAM dans l'espace "donnees".
D4 = 0 =&gt; gestion par bit de PIA (emulation)
D4 = 1 =&gt; 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 =&gt; MO
D3=0 D2=1 =&gt; TO9
D3=1 D2=1 =&gt; TO
D1 et D0 - bits de choix de la RAM dynamique
D1=0 D0=0 =&gt; 256K x 1bit
=&gt; 256K x 4bits
D1=1 D0=0 =&gt; 128K x 1bit
D1=1 D0=1 =&gt; 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 &gt; cf. diagramme precedent page 108
D6 = BE0 /
D5 - bit pour masquer la cartouche, utilisable uniquement en mode MO.
D5 = 0 =&gt; cartouche visible
D5 = 1 =&gt; cartouche masquee.
D4 - bit du BASIC a selectionner, utilisable uniquement en mode MO.
D4 = 0 =&gt; BASIC 1
D4 = 1 =&gt; 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 =&gt; ecriture autorisee
D7 = 1 =&gt; 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 =&gt; CAS1N valide
D4 = 1 =&gt; 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 =&gt; ecriture impossible
D6 = 1 =&gt; ecriture autorisee.
D5 - bit de selection de l'espace cartouche.
D5 = 0 =&gt; l'espace cartouche n'est pas recouvert par de la
RAM.
D5 = 1 =&gt; 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 =&gt; CAS1N valide
D4 = 1 =&gt; 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 =&gt; selection des registres de traitement (lecture)
D0 = 1 =&gt; 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 =&gt; spot situe dans la partie gauche du cadre
D7 = 1 =&gt; spot situe dans la partie droite du cadre.
D6 - Bit latche de situation fenetre cadre en ligne (INILN).
D6 = 0 =&gt; spot situe dans le cadre gauche ou a droite.
D6 = 1 =&gt; 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 =&gt; spot situe dans le cadre en haut ou en bas.
D7 = 1 =&gt; spot situe dans la partie verticale de la fenetre de
travail.
D6 - bit latche de situation fenetre cadre en trame (INITN)
D6 = 0 =&gt; spot situe dans le cadre en haut ou en bas.
D6 = 1 =&gt; spot situe dans la partie verticale de la fenetre de
travail.
D5 - bit instantane de situation fenetre cadre en ligne (INILN)
D5 = 0 =&gt; spot situe dans le cadre a gaucge ou a droite
D5 = 1 =&gt; 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 =&gt; pas de demande
D1 = 1 =&gt; 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 =&gt; registre de traitement
D0 = 1 =&gt; 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&amp;) 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 ==&gt; M = 1 --&gt; commutation rapide
_
couleur d'incrustation ==&gt; M = 0 --&gt; 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 ==&gt; interrupteur ouvert,
1 ==&gt; 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 ==&gt; partie basse
1 ==&gt; 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 ==&gt; imprimante occupee
1 ==&gt; 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 ==&gt; passage du son
1 ==&gt; 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 --&gt; 1
touche CNT libre --&gt; 0
2eme bit: touche SHIFT enfoncee
ou CAPS LOCK actionne --&gt; 1
touche SHIFT libre et
CAPS LOCK non actionne --&gt; 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 -&gt; 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 --&gt; demande d'initialisation du 6809E
- 1.30 millisecondes --&gt; mise en CAPS LOCK actif
- 1.90 millisecondes --&gt; 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 =&gt; MFM
= 1 =&gt; FM
bit 4 = 1 =&gt; validation de la detection des mots de synchro
bit 3 = 0 =&gt; inhibition de la synchronisation du separateur de
donnees pour le formatage.
bit 2 = 1 =&gt; active la sortie WGN
bit 1 \
bit 0 / =&gt; 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 =&gt; bit de compatibilite
bit 6 \
bit 5 / =&gt; 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 =&gt; face 0 du disque
= 1 =&gt; face 1 du disque
bit 3,2,1 =&gt; commande de precompenssation a 437.5ns par pas de
62.5ns.
bit 0 = 1 =&gt; 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 =&gt; non utilise
bit 6 = 0 =&gt; face 0 du floppy (commande active du moteur QDD).
= 1 =&gt; fonctions inverses.
bit 5 = 0 =&gt; commande de direction vers l'exterieur (piste 0) du
disque.
= 1 =&gt; fonction inverse
(non utilise pour le QDD).
bit 4 = 0 =&gt; commande de pas inactivee pour le floppy.
= 1 =&gt; active
(non utilise pour le QDD).
bit 3 =&gt; non utilise
bit 2 = 0 =&gt; commande moteur inactive pour le floppy
= 1 =&gt; active
(non utilise pour le QDD).
bit 1 =&gt; 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 =&gt; image de l'horloge caractere
= 1 =&gt; demande d'operation
= 0 =&gt; par lecture ou ecriture des registres RDATA ou
WDATA.
bit 6 = 0
bit 5 = 0
bit 4 = 1 =&gt; indication que l'operation se termine
bit 3 = 1 =&gt; indication que l'operation est terminee.
bit 2 = 1 =&gt; erreur de CRC (checksum de la zone d'identification
de donnees).
bit 1 =&gt; action identique au bit 7 pour les operations dites
intelligentes.
bit 0 = 1 =&gt; 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 =&gt; detection d'index pour le floppy
(presence de disquette pour le QDD)
bit 5 = 1 =&gt; information de changement de disquette non utilise
pour le QDD.
bit 4 =&gt; image inverse de la commande moteur MO
bit 3 = 1 =&gt; detection de la piste 0 pour le floppy
(information de detection d'un QDD).
bit 2 = 1 =&gt; information de protection en ecriture sur le floppy
et le QDD.
bit 1 = 1 =&gt; information "ready" en provenance du floppy ou du
QDD.
bit 0 =&gt; 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 =&gt; modification des caracteristiques du separateur de
donnees (pour pistes interieurs de la disquette.
Precompensation).
= 1 =&gt; fonctionnement normal du separateur.
bit 6-0 =&gt; 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 =&gt; resultat entier 2
- si registre A = 4 =&gt; resultat reel 4
- si registre A = 8 =&gt; 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 =&gt; 16coul |
| | V0-V7 multiplexees | |
| | | |
| xxxxx001 | V8-V15 serialisees | 2 sorties =&gt; 4coul |
| | V0-V7 serialisees | |
| | | |
| xxxxx010 | V0-V15 serialisees | 1 sortie =&gt; 2coul |
| | | |
| xxxxx011 | V0-V3 serialisees | 4 sorties =&gt; 16coul |
| | V4-V7 serialisees | |
| | V8-V11 serialisees | |
| | V12-V15 serialisees | |
| | | |
| xxxxx100 | V8-V15 serialisees | 1 sortie =&gt; 2 coul |
| | | |
| xxxxx101 | V0-V7 serialisees | 1 sortie =&gt; 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 -&gt; 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 =&gt; non fini; non
zero =&gt; 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 &lt;&gt; 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.
</PRE>
</BODY></HTML>