| <!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 & dossiers |
| 1 1 0 0 3 X cartouche |
| |
| On peut voir que le systeme est prevu pour supporter quatres slots de |
| quatre banques chacune. |
| |
| /Routine de commutation/ |
| |
| Le moniteur comporte au point d'entree standard EC03 une routine |
| COMSLOT permettant d'appeler une routine d'une banque quelconque d'un |
| slot quelconque (voir page 222). Les commutations effectuees s'operent |
| alors a partir d'un mode bianire designe par l'utilisateur selon la |
| forme: |
| 0 0 P5 P4 0 0 A1 A0 |
| \___/ \___/ |
| bits du 6846 bits du bus d'adresses |
| commutation des slots commutation des banques |
| |
| (sam: je comprends qu'il faille utiliser le moniteur pour la |
| commutation de banques, car autrement c'est le bordel; cependant je |
| me demande si les routines de Paragraphe utilisent cette routine du |
| moniteur ou programment directement la commutation en accedant au |
| hardware..). |
| |
| Les RAMS |
| |
| Technologiquement, la memoire vive du TO9 est constituee par 16 |
| bitiers integres du type 4416. Ces circuits ont une capacite de 16Ko x |
| 4bits. Sachant que le systeme travaille en donnees de 8 bits, deux |
| 4416 sont associes pour chaque plan memoire de 16Ko. On obtient ainsi |
| huit couples de RAM, avec, pour chaque couple, un boitier specialise |
| pour les quatres bits de poids faiblet un boitier specialise pour les |
| quatre bits de poids fort du bus de donnees. |
| |
| /Fonctionnement d'une 4416/ |
| |
| Les 4416 sont des memoires qui permettent de stocker, sous forme de |
| matrices de 2^8 = 256 lignes et de 2^6 = 64 colonnes: 256 x 64 = 16384 |
| groupes de 4 bits. L'adressage d'une telle matrice necessite donc 14 |
| bits. En fait, seuls 8 bits d'adresses (A0 a A1) (sam: heu ? c'est pas |
| clair leur truc; j'aurais dis A7 a A0 si c'est 8 bits) permettent la |
| gestion de la memoire. Ils sont multiplexes et diriges,soit vers le |
| bloc d'adresses lignes, quand le signal de validation ligne RASN passe |
| a zero, soitvers le bloc d'adresse colonnes, quand le signal de |
| validation colonne CASN passe a zero. |
| |
| Les 4416 sont des memoires du type MOS dynamique necessitant un |
| rafraichissement (REFRESH) de cycle <= 2ms. En groupe de 4 bits, ce |
| rafraichissement se fait par adressage successif des 256 lignes. A |
| chaque ligne adressee, si RASN est actif (etat 0), les 64 cellules a |
| transitors, placees aux intersections de cette ligne avec les 64 |
| colonnes, sont simultanement rafraichies. Le tableau suivant precise |
| la forme de l'adressage: |
| |
| a0 X |
| a1 a8 |
| a2 a9 |
| a3 a10 |
| a4 a11 |
| a5 a12 |
| a6 a13 |
| a7 X |
| Adressage lignes Adressage colonnes valide |
| valide par RASN et par CASN |
| rafraichissement |
| d'une ligne |
| |
| Les 4416, enfin, ne sont pas selectees (bus de donnees deconnecte) |
| lorsque le signal de CASN n'est pas actif. Ce dernier remplace |
| avantageusement une commande CHIP SELECT (action conjointe de GN). |
| |
| /Principe fondamental/ |
| |
| La figure 5 schematise l'organisation generale du systeme. On |
| ydistingue les huit plans memoire, partie A, partie B et banques de 0 |
| a 5. L'adressage des RAMS ne provient pas en direct du 6809 mais passe |
| a travers le gate array (circuit I-25) par un double multiplexage. |
| |
| Le premier jeux de multiplexeurs permet de commuter, au rythme du |
| signal d'horloge E, tantot le bus d'adresses du CPU (phase active du |
| 6809E, E=1), tantot un ensemble de compteurs integres (phase non |
| active du 6809E, E=0). Ce processus est une technique de DMA |
| permettant a chaque cycle d'horloge le rafraichissement d'une ligne |
| RAM dynamique, a savoir le rafraichissement toutal des boitiers |
| lorsque les compteurs ont effectues un cycle de 256 pas. Il permet, |
| d'une tout autre maniere, "le rafraichissement d'ecran" par |
| l'intermediaire d'une partie des RAMA et RAMB (cf. gestion d'ecran). |
| |
| Le deuxiemme jeux de multiplexeur assure la commutation poids faible |
| et poids fort de l'adressage ligne et colonnesconformement aux |
| specificationdes 4416; ce que confirme le tableau suivant: |
| |
| /Forme de l'adressage complet (double multiplexage)/ |
| A0 X T0 X |
| A1 A8 T1 T8 |
| A2 A9 T2 T9 |
| A3 A10 T3 T10 |
| A4 A11 T4 T11 |
| A5 A12 T5 T12 |
| A6 A13 T6 0 |
| A7 X T7 X |
| \_________/ \_________/ |
| adressage adressage |
| 6809 E=1 compteur |
| lecture E=0 refresh |
| ecriture du ecran |
| CPU |
| |
| On remarquera que le systeme de comptage est limite au bit de poids |
| 12. Cela est justifie par le fait que les 2 x 8 Ko de RAM ecran sont |
| repartis dans la moitie inferieure des plans memoire A et B (cf. |
| organisation memoire). |
| |
| /Organisation memore vive du TO9/ |
| |
| Les hui coupes memoire organises *physiquement* sont structures |
| *logiquement* en dix parties. Ainsi: |
| |
| La RAMA comprend: |
| - de 4000 a 5FFF, 8Ko de memoire ecran appelee RAMA ou RAM |
| point (denomination TO7, cf. modes d'affichage) |
| - de 6000 a 7FFF; 8Ko de memoire datas ou utilisateur dont de |
| 6000 a 60FF les registres du moniteur et de 6100 a 62FF une |
| partie reservee au systeme, a savoir: les diverses pages 0 |
| de BASIC ou autres qui representent des applications. |
| |
| La RAMB comprend: |
| - de 4000 a 5FFF, 8Ko de memoire ecran appelee RAMB ou RAM |
| couleur (denomination TO7), |
| - de 8000 a 9FFF, 8Ko de memoire dats ou utilisateurs. |
| |
| Les banques 0, 1, 2, 3, 4 et 5 constituent chacune 16Ko de memoire |
| datas ou utilisateurdans la zone d'adressage A000-DFFF. |
| |
| /Selections/ |
| |
| Les selections se font a partir de l'entree dynamique CAS, en relation |
| avec les signaux CASAN, CASBN et CASEXTN depedant de decodage |
| d'adresses (cf. fonctionnement du gate array principal) et des bits de |
| PIA dont P0 (bit de forme) du 6846 et PB3, PB4, PB5, PB6, PB7 du 6821 |
| (techique de bank switching). L'extension de 4 x 16Ko utilisee en |
| disque virtuel (commande uniquement apr le controleur du lecteur), |
| utilise les bits P2 et P6 du 6846 ainsi que les bits PB5, PB4, PB3 du |
| 6821. |
| |
| Les tableaux suivants mettent en evidence les commutations requises |
| pour lesdifferents types de fonctionnement selon la valeur de E (phase |
| active ou non active): |
| |
| Commutation des parties RAM A et B pour E=1 phase active du 6809E: |
| |
| Zone d'adressage P0 CASAN CASBN CASEXTN Selection |
| 4000-5FFF 0 inactif actif inactif couleur |
| 4000-5FFF 1 actif inactif inactif points |
| 6000-7FFF X actif inactif inactif Adatas |
| 8000-9FFF X inactif actif inactif Bdatas |
| A000-DFFF X inactif inactif actif banques |
| |
| Commutation des parties RAM A et B pour E=0 phase non active du 6809E: |
| |
| Zone d'adressage P0 CASAN CASBN CASEXTN Selection |
| 4000-5FFF X actif actif inactif coul. & point |
| |
| Pour ce type de fonctionnement, l'adressage est implicite. On notera |
| la double prise en compte sur 16bits des datas, via le bus de donnees |
| Aet le bus de donnees B, par le gate d'affichage I-27 (role de DATA |
| VALID). |
| |
| Commutation des banques |
| |
| CASEXTN P6 P2 PB7 PB6 PB5 PB4 PB3 Selection |
| |
| inactif X X X X X X X aucune |
| actif X X 1 1 1 1 0 banque 0 |
| actif X X 1 1 1 0 1 banque 1 |
| actif X X 0 0 0 1 1 banque 2 |
| actif X X 1 0 0 1 1 banque 3 |
| actif X X 0 1 0 1 1 banque 4 |
| actif X X 1 1 0 1 1 banque 5 |
| actif 0 0 1 1 1 1 1 RAM disk1 |
| actif 1 0 1 1 1 1 1 RAM disk2 |
| actif 0 1 1 1 1 1 1 RAM disk3 |
| actif 1 1 1 1 1 1 1 RAM disk4 |
| |
| /Lecture-ecriture des RAMS/ |
| |
| Les 4416 sont en ecriture pour l'entree W a 0 et en lecture pour W a |
| 1. Chaque entree W estreliee a la commande RAMW. Il en resulte une |
| lecture automatique des RAMS pendant la phase non active du CPU (cf. |
| le 6809E et ses bus). Ce procede est bien naturel puisqu'on sait, il |
| faut realiser a ce moment precis le rafraichissement d'ecran. Ainsi, |
| lorsque E=0 le gate array d'affichage I-27 va pouvoir lire |
| automatiquement et simultanement le contenu d'une adresse RAM point et |
| RAM couleur (role des bus A et B). |
| |
| /Routine de commutation de banques/ |
| |
| L'extension memoire de 64Ko n'etant pas consideree, dans les |
| applications soft, comme de la memoire programme mais comme un disque |
| virtuel, le sous-programme suivant ne tient donc pas compte de cette |
| extension a laquelle on accede directement par le controleur de |
| disque. |
| |
| Pour des raisons *imperatives* de protection de selectionsimultanee de |
| plusiquers banques RAM, le processus suivant a ete etabli: |
| - Les 5 bits de donnees du PIA 6821 qui servent a la selection |
| sont toujours a zero (dans le registre de sortie ORB). |
| - Pour commuter une banque, on n'ecrira jammais dans ce |
| registre, mais *on changera la direction des bits |
| concernes*. Cela se produira par uen ecriture dans el |
| registre de direction de donnees (DDRB), en sachant qu'un |
| bit en entree genere, par technologie, un "1" et un bit en |
| sortie genere un "0" en provenance de l'ORB (sam: donc si tu |
| veux foutre la merde, il suffit d'ecrire dans l'ORB!). |
| |
| Il est bon aussi de faire attention a certaines routines du moniteur |
| qui peuvent modifier temporairement le contenu du PIA et restaurer |
| tout a "0" a la fin. |
| |
| Sous-programme standard: |
| Entree: registre A du 6809 = numero de banque 0 a 5. |
| |
| COMMUT EQU * |
| PSHS D,X,U |
| LDU #$E7C0 U pointe sur les PIA |
| LDB 11,U Lecture du registre CRB en E7CB |
| ANDB #$FB Passage du PIA en mode direction |
| STB 11,U " " " " |
| LDX #TAB X pointe sur l'adresse de la table |
| des valeurs a mettre dans le PIA |
| LDA A,X Lecture de la valeur de la table |
| enfonction du n° de banque |
| STA 9,U Modification des directions |
| ecriture dans le DDRB du PIA E7C9 |
| ORB #4 Passage du PIA en mode donnees |
| STB 11,U (retour aux conditions de depart) |
| PULS D,X,U,PC retour |
| TAB EQU * |
| FCB $0F,$17,$E7,$67$A7,$27 |
| |
| Le tableau ci-apres precise l'action du contenu de TAB en relation avec |
| le contenu de A. |
| |
| (TAB) resultante configuration du PIA |
| (A) pointe valeur dans le DDRB PB7 PB6 PB5 PB4 PB3 Sel.bank |
| |
| 0 0F 0 0 0 0 1 1 1 1 1 1 1 1 0 0 |
| 1 17 0 0 0 1 0 1 1 1 1 1 1 0 1 1 |
| 2 E7 1 1 1 0 0 1 1 1 0 0 0 1 1 2 |
| 3 67 0 1 1 0 0 1 1 1 1 0 0 1 1 3 |
| 4 A7 1 0 1 0 0 1 1 1 0 1 0 1 1 4 |
| 5 27 0 0 1 0 0 1 1 1 1 1 0 1 1 5 |
| |
| ------------------------------------------------------------------------------- |
| |
| 4. La gestion du systeme |
| |
| Les decodages d'adresses |
| |
| Le decodage d'adresse du TO9 est effectue par un circuit integre |
| quarante broches specialise. C'est une gate array TAHC06 de chez TEXAS |
| regroupant un reseau cable de portes et de decodeurs TTL type 74LS156, |
| 74LS138 et 74LS139. |
| |
| Ce circuit a quinze entrees concernant le bus d'adresses de A1 a A15, |
| et les deux bits de PIA en provenance du 6846 pour la commutation des |
| EPROMS. Seize sorties sont distribuees pour effectuer les selections |
| suivantes: |
| - de E7DE a E7DF, pour la validation du circuit ACIA 6850 |
| (gestion clavier), |
| - de E7DC a E7DD, pour la validation du registre mode |
| d'affichage du gate arrai I-27, |
| - de E7DA a E7DB, pour valider les registres du circuit de |
| palette I-28, |
| - de E7D8, pour la validation du registre de commande double |
| densite et choix des lecteurs I-50. |
| - de E7D0 a E7D3, pour la validation des registres du controle |
| de lecteur, |
| - de E000 a E7AF et de E800 a FFFF, pour valider le moniteur, |
| - de E7C0 a E7CF, pour la validation du 6846, du 6821 systeme |
| et 6821 controleur de jeux externes, |
| - de 4000 a 9FFF, pour deconnecter le buffer du bus de donnees |
| principal, lorsque le 6809E travaille en RAMA ou en RAMB |
| (commande VP du 74LS245), |
| - de 4000 a DFFF, pour la validation des plans RAM, selon |
| trois signaux: |
| ___ |
| CSAN = CSA actif a "0" de 4000 a 7FFF |
| ___ |
| CSBN = CSB actif a "0" de 8000 a 9FFF |
| _____ |
| CSEXTN = CSEXT actif a "0" de A000 a DFFF |
| - de 0000 a 3FFF, pour determiner l'espace alloue a la |
| commutation des banques EPROMS (commande reliee au 74LS173 |
| I-35) et generer: |
| ___ ___ ___ ___ |
| CS0, CS1, CS2, CS3. |
| ___ |
| Une sortie particuliere: CSEN = CSE active a "0" pour l'espace EXXX, |
| (soit de E000 a EFFF), est destine aux differentes extensions ou |
| controleurs de communication. Elle permet, entre autre, d'effectuer un |
| predecodage d'adresse dans le cas ou l'utilisateur desire se fabriquer |
| sa propre extension. Par un montage approprier, il devra alors |
| imperativement loger cette derniere dans l'espace memoire E7B0 a E7BF |
| ou E7E0 a E7E3. |
| |
| La generation des fonctions |
| |
| /Le gate array principal ou gate array systeme/ |
| |
| Le gate array principal, type EFGJ03 (circuit I-25) de chez EFCIS, est |
| un circuit a reseau prediffuse servant de generateur de fonctions. Il |
| a quatre roles fondamenteaux: |
| - generer des signaux d'horloge et de comptage point, |
| - generer des signaux d'interfacage video, en relation avec |
| des compteurs lignes et trames, |
| - gerer les memoires vives dynamiques 4416, |
| - recuperer et stocker le contenu des compteurs points, lignes |
| et trames pour le traitement du crayon optique. |
| |
| /Description fonctionnelle/ |
| |
| * /signaux d'horloge et compteur point/ |
| H16 est une entree d'horloge 16Mhz (horloge mere externe). Elle est |
| divisee, de proche en proche, par un compteur a quatre etages, creant |
| les frequences points: H4, H2 ainsi que E et Q, en quadrature, a la |
| frequence de 1Mhz pour le microprocesseur. |
| |
| Un decodeur d'horloge fournit trois signaux tels que: RASN, CAS, a la |
| frequence de 2Mhz ainsi que DATA VALID a la frequence de 1Mhz. |
| |
| L'entree SYCL1 permet de reinitialiser l'ensemble du systeme. |
| |
| * /Compteur lignes et generation des signaux video/ |
| |
| Compteur de ligne: E, de frequence 1Mhz, pilote un compteur 6 bits |
| dont les sorties sont successivement, TL0, TL1, TL2, TL3, TL4, TL5. Le |
| cycle de comptage dure 64µs, duree normalisee d'une ligne de balayage |
| TV. |
| |
| L'entree SYCL2 reinitialise le compteur. |
| |
| Decodeur ligne: En relation avec les sorties du compteur, in genere |
| les signaux de synchro, de suppression et d'inhibition pour le |
| televiseur. |
| |
| INIL est le signal d'inhibition de ligne permettant de definir la |
| fenetre de visualisation sur l'ecran pour une largeur correspondant a |
| un balayage dont la duree est 40µs. |
| |
| SUPL est le signal de suppression ligne. Il est destine a mettre au |
| niveau du noir les signaux RVB, durant le retour du spto en ligne/ |
| |
| SYNL est le syngal de synchronisation ligne. |
| |
| * /Compteur trame et generation des signaux video/ |
| |
| Compteur trame de 3 + 11 = 14 bits dont les trois premiers sont, en |
| realite, les trois premiers etages du compteur ligne. Les sorties sont |
| reperees TL0, TL1, TL2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, |
| T13. L'horloge de commande est une combinaison logique E et INIL, dont |
| une inhibition de 24µs toutes les 64µs. Autrement dit, le compteur ne |
| fonctionne que pendant le balayage de la fenetre de visualisation. Ce |
| compteur est reinitialise par un signal interne a chaque trame TV. Il |
| peut etre reinitialise comme le compteur lignes par l'entree SYCL2. |
| |
| Decodeur trame: En relation avec les sorties du compteur, il genere |
| les signaux de synchro, de suppression et inhibition de trame. En |
| standard SECAM, le signal de synchro est distribue toutes les 312 |
| lignes,soit toutes les 612 x 64 =19968 µs (duree d'une trame environ |
| 20ms). |
| |
| INIT est le signal d'inhibition trame permettant de definir la fenetre |
| de visualisation sur l'ecran pour une hauteur dont la duree correspond |
| a un balayage de 200 lignes. |
| |
| SUPT est le signal de suppression trame. Il est destine a mettre au |
| niveau du noir les sorties RVB pendant le retour trame. |
| |
| SYNT est le signal de synchronisation trame. |
| |
| * /Mixage des signaux lignes-trames/ |
| |
| Le gate array dispose de trois sorties de signaux lignes et trames |
| melanges tels que: |
| - INILT signal d'inhibition ligne et trame: |
| INILT = INIL + INIT |
| - SYNLT signal de synchro ligne et trame: |
| SYNLT = SYNL + SYNT |
| - SUPLT signal de blanking: |
| SUPLT = SUPL + SUPT |
| |
| * /Gestion des memoires vives/ |
| |
| Le gate array comprend un double circuit de multiplexeurs recevant le |
| bus d'adresses CPU et le bus compteur ligne et trame. Le double |
| multiplexage est pilote par E et un signal interne C,derive du signal |
| CAS. Il permet de distribuer sur 9 bits une succession d'adresses |
| basses et hautes en provenance CPU ou compteur selon le |
| giagramme suivant: |
| |
| A0 A7 TL0 T7 |
| A1 A8 TL1 T8 |
| A2 A9 TL2 T9 |
| A3 A10 T3 T10 |
| A4 A11 T4 T11 |
| A5 A12 T5 T12 |
| A6 A13 + CSB T6 0 |
| A7 A14 T7 0 |
| A8 A15 0 0 |
| \_________/ \_______/ |
| E = 1 E = 0 |
| |
| On notera la relation logique A13 + CSB dont le role est explique |
| ci-apres. Dans le TO9 le neuviemme bit n'est pas exploite. |
| |
| Un circuit "aiguilleur de CAS" distribue, en relation avec la |
| combinaison logique de A13, CSAN, CSBN, CSEXTN, le bit FORME (P0) et la |
| validation de E, les signaux CASAN, CASBN ainsi que CASEXTN selon le |
| tableau suivant: |
| |
| E A13 FORME CSAN CSBN CSEXTN CASAN CASBN CASEXTN |
| (P0) |
| 0 X X X X X CASN CASN 1 |
| 1 0 0 0 1 1 1 CASN 1 |
| 1 0 1 0 1 1 CASN 1 1 |
| 1 1 X 0 1 1 CASN 1 1 |
| 1 X X 1 0 1 1 CASN 1 |
| 1 X X 1 1 0 1 1 CASN |
| |
| De par le decodage d'adresses, selon les trois champs d'adresses |
| suivants, nous savons par ailleurs que: |
| |
| De 4000-7FFF CSAN = 0 CSBN = 1 CSEXTN = 1 |
| De 8000-9FFF CSAN = 1 CSBN = 0 CSEXTN = 1 |
| De A000-DFFF CSAN = 1 CSBN = 1 CSEXTN = 0 |
| |
| Ce qui permet de construiore le tableau general de la commutationdes |
| plans memoire pour E = 1 (cf. organisation memoire vive TO9, pages |
| 42). |
| ____ ____ ______ |
| Champ A13 P0 CASA CASB CASEXT A13+CSB Type |
| memoire ram |
| |
| 4000-5FFF 0 0 1 CASN 1 0 RAMB |
| partie basse |
| (ecran coul) |
| 4000-5FFF 0 1 CASN 1 1 0 RAMA |
| partie basse |
| (ecran form) |
| 6000-7FFF 1 X CASN 1 1 1 RAMA |
| partie haute |
| (datas) |
| 8000-9FFF 0 X 1 CASN 1 1 RAMB |
| partie haute |
| (datas) |
| A000-DFFF X X 1 1 CASN X banques |
| |
| On met ainsi en evidence la selection des plans memoire A (ecran |
| forme) et B (ecran couleur) par le bit de forme P0; de meme, la |
| selection des plans memoires A (datas) et B (datas) par l'action de |
| A7+CSB envoye sur le busd'adresses multiplexe. |
| |
| * /Traitement du crayon optique/ |
| |
| Une serie de /flip-flop/, denommee latch ou registre crayon optique, |
| situe aux adresses E7E4 E7E5 E7E6 E7E7, realise la prise en compte des |
| etats presents des compteurs, au moment d'une visee sur l'ecran par le |
| crayon optique. Des que l'utilisateur pointe le crayon sur la fenetre |
| de visualisation, une impulsion synchronisee sur le premier front |
| descendant de H16 est appliquee en commande d'horloge des |
| /flip-flops/. Ces derniers recoivent sur leur entree l'etat des |
| compteurs points, ligne et trame afin de les stocker. |
| |
| Pour R/WN = 1, les informations memorisees dans les /flip-flops/ sont |
| multiplexees par les bits A0 et A1 du bus d'adresses et envoyees sur |
| le bus de datas D0 a D7. Quand le circuit n'est pas selectionne, ces |
| sorties sont normallement en tristate. Pour R/WN = 0, D0 peut passer |
| en entree. |
| |
| Pour les les informations, le 6809 doitfaire appel a une routine |
| particuliere. Il doit envoyer, en ecriture, un front montant sur D0 a |
| l'adresse E7E4. Le gate array autorise alors le passage du signal issu |
| de CKLPN en rendant disponibles les donnees en sorties. Le 6809 peut |
| lire les donnees a travers l'etat A1 et A0 en envoyant les adresses |
| E7E4 a E7E7. |
| |
| Les informations memorisees premettent la lecture de la position du |
| pointage sur l'ecran en donnant la precision du point, dans une |
| totalite de 8000 (comptage sur 16bits de H4 a T12). La prise en compte |
| de INILN et INITN permet de verifier si le crayon optique a ete |
| reelement pointe sur la fenetre de visualisation (cf. etude du |
| fonctionnement du crayon optique). |
| |
| ------------------------------------------------------------------------------- |
| |
| 5. Le système de visualisation |
| |
| Généralités |
| |
| La figure 7 donne un appercu general de la gestion d'ecran TV. Il est |
| bon de decomposer le fonctionnement en deux parties. |
| |
| Construction globale de l'ecran |
| |
| L'ecran doit etre divise en deux zones distinctes: |
| - La fenetre active d'affichage ou de visualisation, dont la dimension |
| en largeur correspond a un temps de balayage de 40µs et la dimension |
| en hauter a 200 lignes de 64µs. La fenetre est destinee a recevoir |
| caracteres et graphismes. |
| - Le tour ou cadre ne recevant ni caracteres ni graphisme mais |
| susceptible de changer de teinte. |
| |
| La definition geometrique de la fenetre et du cadre est realisee a |
| partir du signal INILT, distribue par le gate array principal, et |
| venant agir sur un aiguilleur contenu dans le gate array d'affichage |
| I-27. Ce dernier determine, entre autre, les couleurs du tour. |
| |
| La definition de l'ecran est faite a partir des signaux SYNLT et SUPLT |
| (synchronisation ligne, trame et blancking) pour assurer un balayage |
| non interligne de 312lignes de duree normalisee a 64µs. |
| |
| Construction de la fenetre active |
| |
| La fenetre de visualisation ou de travail est realisee en synchronisme |
| avec le balayage du spot par l'association de segments en ligne et |
| en colonnes. Ces segments sont appeles GPL. Quarante GPL constituent |
| une ligne. La fenetre est donc construite a partir de 40x200 lignes = |
| 8000 GPL. |
| |
| Un GPL est concu par une association de points (4, 8, 16 selon le mode |
| d'affichage). Chaque point, representatif d'uen couleur, est |
| determine a partir d'une ou plusieurs informations stockees en memoire |
| ecran. En fait, le contenu 16bits d'une adresse de memoire ecran |
| definit la configuration en couleur des points d'un GPL. Chaque GPL |
| est donc associe a une adresse qui represente sa position sur la |
| fenetre. Pour gerer 8000 GPL, il faut 8000 adresses dans le chape 4000 |
| a 5f3f. |
| |
| Pendant chaque phase non active du 6809E, nous savons que chaque |
| nouvelle adresse pointee est incrementee de 1 (cf. fonctionnement du |
| gate array principal, page 48); ce qui signifie que toutes les µs, un |
| nouveau GPL est defini en parfait synchronisme avec le balayage, |
| puisque SYNLT est issu des compteurs delivrant les adresses. Ce |
| processus est appele rafraichissement d'ecran ou REFRESH. |
| |
| Le contenu de la RAM ecran RAMA et RAMB represente donc la |
| configuration codee sur 16bits des GPL. Ce contenu est dirige par les |
| bus RAMA et RAMB vers le circuit I-27 (gate array d'affichage). Ce |
| dernier, selon le mode d'affichage programme, restitue des |
| informations de couleurs serialisees sur le bus "couleur" de 4 bits. |
| Trois bits representent une couleur primaire R (rouge), V (vert), B |
| (bleu) correspondant a la configuration de base (couleur TO7/70). Le |
| quatrieme bit ressort l'information de saturation S transformee; apres |
| inversion, en information depastel P. L'association de ces quatres |
| bits definit un adressage ou un numero de couleur pour le circuit de |
| palette. |
| |
| Les quatres bits activent, en relation avec une horloge PIXEL (HP), le |
| circuit I-28 de palette dont le role principal et de convertir en |
| niveaux analogiques le codage binaire de chaque point d'un GPL. |
| Optionnellement, il permet de reconfigurer les couleurs de base, grace |
| a un plan memoire programmable, pouvant traiter 4096 cas de figures. |
| |
| Trois sorties analogiques RVB attaquent la prise peritel aux normes |
| SCART a travers un circuit d'adaptation I-30 et un melangeur recevant |
| SYNLT pour reconstituer une video composite. Les trois signaux sont |
| derives vers un adaptateur pour un eventuel codeur PAL. |
| |
| Configuration de base |
| |
| A la mise sous tension, le circuit palette I-28 est programme pour |
| restituer, en relation avec l'adressage par numeros de couleur |
| provenant du gate array I-27, les couleurs fondamentales du TO7/70, |
| selon le tableau suivant: |
| |
| Adressage en Adressage en Numero de Selction de |
| sortie gate entree palette couleur couleur du |
| d'affichage TO7/70 |
| |
| S B V R P B V R |
| 1 0 0 0 0 0 0 0 0 noir |
| 1 0 0 1 0 0 0 1 1 rouge |
| 1 0 1 0 0 0 1 0 2 vert |
| 1 0 1 1 0 0 1 1 3 jaune |
| 1 1 0 0 0 1 0 0 4 bleu |
| 1 1 0 1 0 1 0 1 5 magenta |
| 1 1 1 0 0 1 1 0 6 cyan |
| 1 1 1 1 0 1 1 1 7 blanc |
| 0 0 0 0 1 0 0 0 8 gris |
| 0 0 0 1 1 0 0 1 9 rose |
| 0 0 1 0 1 0 1 0 10 vert clair |
| 0 0 1 1 1 0 1 1 11 sable |
| 0 1 0 0 1 1 0 0 12 bleu clair |
| 0 1 0 1 1 1 0 1 13 parme |
| 0 1 1 0 1 1 1 0 14 bleu ciel |
| 0 1 1 1 1 1 1 1 15 orange |
| |
| Gate array d'affichage et modes d'affichage |
| |
| Role du circuit I-27 |
| |
| Le gate array EFG06 de chez EFCIS a ete concu pour recuperer les 16 |
| bits de donnees en provenances des RAMS ecran afin de pouvoir, en les |
| serialisant pendant une micro-seconde sur un bus de quatres fils (R, |
| V, B, S), construire, via l'interface video, un GPL selon un mode |
| d'affichage bien particulier. |
| |
| Ce circuit comporte des registres programmables par le 6809E, pour |
| definir uun des huit modes d'affichages tels que: |
| Le mode TO7/70 ou 40 colonnes |
| Le mode bitmap 4 couleurs |
| Le mode 80 colonnes |
| Le mode bitmap 16 couleurs |
| Le mode page 1 |
| Le mode page 2 |
| Le mode surimpression 1 (2 pages) |
| Le mode surimpression 3 (4 pages). |
| |
| Description du circuit |
| |
| Le gate array I-27 est constitue par: |
| |
| - Un transcodeur en ralation avec le bus RAMA et le bus RAMB. Ce |
| transcodeur intervient uniquement pour le mode TO7/70 et le mode |
| bitmap 16 couleurs. |
| |
| - Quatre registres serialisateurs de quatre bits chacun recevant les |
| donnees transcodees et les ressortant en serie. Selon le mode |
| programmation, ces registres peuvent ravailler separement ou en |
| association. |
| |
| - Un circuit de commutatiuon assure les differentes combinaisons. Un |
| commutateur d'horloge selectionne la frequence de serialisation Ø |
| point de 4MHz, 8MHz ou 16Mhz. Il genere une frequence dependante de Ø |
| point. Cette frequence appelee HP (horloge pixel) est destinee a la |
| prise en compte des informations du bus couleur R, V, B, S pour les |
| registres de palette. |
| |
| - L'ensemble de ces circuits est gere par un registre programmable a |
| l'adresse E7DC. Il est accessible uniquement en ecriture selon le |
| modele sur huit bits: |
| |
| X T1 T0 Ø1 Ø0 C B A |
| |
| avec choix du transcodage: |
| T1 T0 |
| 0 0 Mode TO7/70 |
| 0 1 Mode sans transcodage |
| 1 1 Mode bitmap 16 couleurs |
| |
| avec le choix de frequence d'horloge: |
| Ø1 Ø2 |
| 0 0 8 Mhz |
| 0 1 16 Mhz |
| 1 1 4 Mhz |
| |
| avec le choix de fonctionnement: |
| C B A |
| 0 0 0 Mode TO7/70 |
| 0 0 1 Mode bitmap 4 |
| 0 1 0 Mode 80 colonnes |
| 0 1 1 Mode bitmap 16 |
| 1 0 0 Mode page 1 |
| 1 0 1 Mode page 2 |
| 1 1 0 Mode surimpression 1 |
| 1 1 1 Mode surimpression 3 |
| |
| - Un autre registre, programmable uniquement en ecriture en E7DD, |
| permet d'enregistrer les couleurs du tour selon le modele sur huit |
| bits: |
| |
| X X X X S B V R |
| |
| avec S bit de saturation |
| B bit de bleu |
| V bit de vert |
| R bit de rouge |
| dans la configuration de base. |
| |
| Ce registre est parfaitement independant du premier et ne concerne pas |
| les modes d'affichages. |
| |
| Le circuit I-27 est reninitialise a chaque mise sous tension ou |
| lorsque l'on appuie sur le bouton correspondant. La commande est |
| commune avec celle du 6809E. Il en resulte une programmation des |
| registres a 0, d'oul le mode d'affichage implicite TO7/70 et la |
| couleur du cadre gris. |
| |
| Les differents modes d'affichage |
| |
| Dans l'hypothese ou pour chacun des huit points d'un GPL, oncherchait |
| a obtenir une couleur differente, il faudrait prevoir un format de RAM |
| ecran de: 8(points) x 4(bits de couleurs) soit 32 bits. La memoire |
| ecran travaillant uniquement sur un format seize bits, seuls des |
| compromis sont envisageables quant aux nombres de couleurs |
| exploitables et a la finesse des pixels; ce fait est illustre par les |
| quatre modes d'affichage suivants: |
| |
| . Le mode TO7/70 ou 40 colonnes |
| |
| C'est le mode implicite permettant pour 16 couleurs une resolution 320 |
| x 200 points avec, par segement de huit points, une rigidite de deux |
| couleurs. |
| |
| Dans ce mode, le GPL est defini sur huit points. A chaque point |
| correspond une couleur de forme ou une couleur de fond. La RAMA sert a |
| memoriser l'emplacement Fn de la forme ou du fond (memoire de forme). |
| Un bit a 0 correspond a du fond, un bit a 1 correspond a de la forme. |
| La RAMB sert a memoriser la couleur de fond et la couleur de |
| forme,selon les primaires R, V, B et le bit de saturation S. |
| |
| Schema de codage en RAM |
| |
| RAMA RAMB |
| F7 F6 F5 F4 F3 F2 F1 F0 S0 S1 B1 V1 R1 R0 V0 B0 |
| | \_________/ \______/ |
| fond forme fond |
| |
| L'organisation en RAMB n'est pas coherente (pour des raisons de |
| comptabilite avec le TO7) car le bit de saturation de fond est |
| totalement separe des primaires correspondantes. Dans le mode TO7/70 |
| (CB A = 000), le gate array d'affichage va donc effectuer un |
| transcodage (T1 T0 = 00), selon le schema suivant: |
| |
| S1 B1 V1 R1 S0 B0 V0 |
| |
| Les bitsde la RAMA vont etres serialises a la frequence Ø point de |
| 8Mhz (Ø1 Ø2 = 00) et vont commuter sur les quatres sorties S, B, V, R: |
| |
| Couleur de fond: S0 B0 V0 R0 pour Fn = 0 |
| Couleur de forme: S1 B1 V1 R1 pour Fn = 1 |
| |
| - Exemple d'une routine simple permettant d'afficher une succession de |
| couleurs differentes sur un meme GPL a l'adresse $5000: |
| |
| Mode TO7/70 implicite: |
| LDA $E7C3 |
| ANDA #$FE |
| STA $E7C3 |
| LDB #$D1 |
| STB $5000 |
| ORA #$01 |
| STA $E7C3 |
| LDA #$AA |
| REC BRA REC |
| |
| En resume, ce mode permet d'utiliser seize couleurs avec deux couleurs |
| imposees par GPL, une couleur de forme, et une couleur de fond. Ce |
| mode entraine d'inevitables conflits de proximite dans la realisation |
| des graphismes (bavures ou debordmeent de couleurs sur un GPL). |
| |
| . Le mode bitmap quantre couleurs |
| |
| Ce mode est destine a eviter les conflits de proximite, pour une |
| resolution de 320 x200 points, avec uniquement quatre couleurs |
| imposees. |
| |
| Le GPL est defini sur huit points. A chaque point, de gauche a droite |
| et dans le sens decroissant des poids, correspond un bit dans la RAMA |
| et dans la RAMB poru coder sa couleur selon la configuration de base: |
| |
| RAMB RAMA Couleur du point |
| 0 0 gris |
| 0 1 rose |
| 1 0 vert clair |
| 1 1 sable |
| |
| Schema de codage en RAM |
| |
| RAMA RAMB |
| C7 C6 C5 C4 C3C 2 C1 C0 C7 C6 C5 C4 C3 C2 C1 C0 |
| pour chaque point pour chaque point |
| presence ou absence de rouge presence ou absence de vert |
| |
| Pour ce mode (CBA = 001), le gate array d'affichage n'effectue pas de |
| transcodage (T1 T0 = 01). Les bits de la RAMA et de la RAMB vont etre |
| serialisesa la frequence Ø point de 8Mhz (Ø1 Ø0 = 00) chacun sur un |
| fil, R pour la RAMA, V pour la RAMB. Les deux autres fils S et B sont |
| a l'etat 0 permanent. Ceci explique pourquoi le systeme genere des |
| teintes en pastel. |
| |
| - Exemple de routine simple permettant d'afficher une succession de |
| couleurs differentes sur un meme GPL a l'adresse $5000. |
| |
| Mode bitmap 4 couleurs: |
| LDA $E7C3 |
| ANDA #$FE |
| STA $E7C3 |
| CLRB |
| JSR EFF |
| ORA #$01 |
| STA $E7C3 |
| JSR EFF |
| LDA #$21 |
| STA $E7Dc |
| LDB #$CC |
| STB $5000 |
| LDA $E7C3 |
| ANDA #$FE |
| STA $E7C3 |
| LDB #$AA |
| STB $5000 |
| REC BRA REC |
| EFF EQU * |
| LDX #$4000 |
| ENC STB ,X+ |
| CMPX #$5F40 |
| BNE ENC |
| RTS |
| |
| Ce programme execute en configuration de base determine par principe |
| quatre couleurs pastel: gris, rose, vert clair et sable. Afin |
| d'obtenir un affichage plus apparent, il convient de reconfigurer la |
| palette et de la transformer de telle sorte que gris devienne noir,le |
| rose devienne rouge, le vert clair devienne vert, le sable devienne |
| jaune. Cette reconfiguration est implicitement apportee par la |
| sequence d'echapement ($59) inherente a la routine PUTC (cf. |
| programmation de la palette, page 212). |
| |
| . Le mode bitmap 16 couleurs |
| |
| Ce mode est destine a eviter les conflits de proximite pour une |
| resolution de 160x200 points avec le choix de seize couleurs. |
| |
| Le GPL est concu sur quatre points. Pour chaque GPL, la RAMA, par ses |
| quatre bits de poids for, definit la couleur parmi seize du point le |
| plusa gauche, puis par ses quatre bits de poids faible la couleur du |
| point immediatement juxtapose. La RAMB, par ses quatre bits de poids |
| fort, definit la couleur du point suivant, enfin par ses quatre bit de |
| poids faible, la couleur du point le plus a droite. |
| |
| Schema de codage en RAM: |
| |
| RAMA RAMB |
| C3 C3 C3 C3 C2 C2 C2 C2 C1 C1 C1 C1 C0 C0 C0 C0 |
| S B V R S B V R S B V R S B V R |
| \________/ \________/ \________/ \________/ |
| couleur couleur couleur couleur |
| parmi 16 parmi 16 parmi 16 parmi 16 |
| point 1 point 2 point 3 point 4 |
| |
| Pour ce mode (CBA = 011), le gate array d'affichage effecture un |
| transcodage (T1 T0 = 11) selon le schema: |
| |
| C3 C2 C1 C0 C3 C2 C1 C0 C3 C2 C1 C0 C3 C2 C1 C0 |
| \_________/ \_________/ \_________/ \_________/ |
| S B V R |
| |
| Quatre serialisateurs commandes par Ø point = 4Mhz (Ø1 Ø2 = 11), |
| specialises chacun en S, B, V, R vont delivrer sur les quatres fils |
| correpsondants l'informationde teinte du point considere. |
| |
| - Exemple d'un routine simple permttant d'afficher uen succession de |
| couleurs differentes sur un meme GPL, a l'adresse $5000: |
| LDA #$7B |
| STA $E7DC |
| LDB #$0C |
| STB $5000 |
| LDA $E7C3 |
| ANDA #$FE |
| STA $E7C3 |
| LDB #$A9 |
| STB $5000 |
| REC BRA REC |
| |
| Ce programme execute en configuration de base, affiche quatre points |
| gris ,bleu, vert et rouge de la gauche vers la droite. On en conclut |
| que ce mode qui n'a pas de couleurs imposees mais une resolution |
| divisee par 2, n'entraine pas de conflit de proximite. |
| |
| . Le mode 80 colonnes |
| |
| C'est le mode permettant la plus haute resolution 640 x 200 points |
| avec seulement deux couleurs imposees, une couleur dee forme et une |
| couleru de fond. Le GPL est defini sur seize points, la RAMA et la |
| RAMB ont donc le cmme codage et servent a memoriser l'emplacement de |
| la forme et du fond. |
| |
| Schema de codage en RAM |
| |
| RAMA RAMB |
| F15 F14 F12 F11 F10 F9 F8 F7 F6 F5 F4 F3 F2 F1 F0 |
| |
| La RAMA memorise la structure des points les plus a gauche, la RAMB |
| celle des points les plus a droite. En affichage de caracteres, la |
| RAMA contient les bits des points des caracteres des colonnes paires, |
| tandis que la RAMB contient ceux des colonnes impaires. |
| |
| Le gate array d'affichage, pour ce mode (CBA = 010), n'effctue pas de |
| transcodage (T1 T0 = 01). Il combine un serialisateur unique de 16 |
| bits, commande par Ø point = 16Mhz (Ø1 Ø0 = 01). Les informations |
| serialises ressortent sur deux fils B et V relies en parallele. S et R |
| etant figes a 0. En configuration de bas,ela couleur de forme |
| exploitable est du bleu ciel et la couleurde fond du gris. |
| |
| - Exemple de routine simple permettant d'afficher seize points, |
| successivement en couleur de forme et couleur de fond sur un meme GPL, |
| a l'adresse $5000. |
| LDA #$2A |
| STA $E7DC |
| LDB #$AA |
| STB $5000 |
| LDA $E7C3 |
| ORA #$01 |
| STA $E7C3 |
| STB $5000 |
| REC BRA REC |
| |
| A l'execution de ce programme, on obtient huit points separes, de |
| couleur bleu ciel, sur un fond gris. Afin de rendre la demonstration |
| plus representative, il convient de reconfigurer la palettede |
| changeant le gris en noir et le bleu ciel en rouge. Cette operation |
| est implicitement realisee par le routine PUTC, lorsque l'onfait |
| appela la sequence d'echapement ($5B). |
| |
| D'une toute autre maniere, le gate array d'affichage permet, selon |
| uncodage particulier en RAM et RAMB, troismode intrinsequement lies. |
| - Le mode page 1 |
| - Le mode page 2 |
| - Le mode superpositon deux pages. |
| |
| . Le mode page 1 |
| |
| Ce mode travaille en resolution 320x200 avec deux couleurs imposes. Le |
| GPL est defini sur huit points uniquement dans la RAMA en formeet en |
| fond. |
| |
| Schema de codage en RAM: |
| |
| RAMA |
| F7 F6 F5 F4 F3 F2 F1 F0 |
| |
| Dans ce mode (CBA = 100), le gate array d'affichage reprend les bits |
| sans transcodage (T1 T0 = 01). Un serialisateur commande a la |
| frequence Ø point = 8MHz (Ø1 Ø0 = 00) delivre les informations sur la |
| sortie R, les trois autresfilsetant a l'etat 0. |
| |
| . Le mode page 2 |
| |
| Parfaitement equivalent au precedent, il prend l'information GPL en |
| RAMB. |
| |
| Schema de codage en RAM: |
| |
| RAMA |
| F7 F6 F5 F4 F3 F2 F1 F0 |
| |
| Dans ce mode (CBA = 101) non transode (T1 T0 = 01). Le deuxieme |
| serialisateur commande avec Ø point = 8Mhz (Ø1 Ø0 = 00) delivre des |
| informations sur la sortie V, les trois autres fils etant a l'etant 0. |
| |
| . Le mode superposition deux page ou surimpression 1, permet de |
| reprendre simultanement les deux mode sprecedents. Dans ce mode (CBA = |
| 110), le gate array utilise les deux serialisateurs et les deux |
| sorties R, V selon la relation: |
| |
| Sortie R = R _ |
| Sortie V = V.R |
| |
| Cela implique une priorite de sortie pour R (V=0 pour R=1) et un effet |
| de surimpression de R sur V. |
| |
| - Programme de mise en evidence des trois modes: |
| LDA #$24 |
| STA $E7DC MODE PAGE 1 |
| LDB #$AA |
| STB $5000 |
| STB $5001 |
| LDA #$25 |
| STA $E7DC MODE PAGE 2 |
| LDA $E7C3 |
| ANDA #$FE |
| STA $E7C3 |
| LDB #$FF |
| STB $5000 |
| STB $5001 |
| REPB JSR $E806 ATTENTE CARACTERE 'A' |
| CMPB #$41 |
| BNE REPB |
| LDA #$24 |
| STA $E7DC MODE PAGE 1 |
| REPA JSR $E806 |
| CMB #$53 |
| BNE REPA ATTENTE CARACTERE 'S' |
| LDA #$26 |
| STA $E7DC MODE SURPERPOSITION |
| REPS JSR $E806 |
| CMP #$42 |
| BNE REPS |
| LDA #$25 |
| STA $E7DC MODE PAGE 2 |
| JMP REPB REPRISE |
| |
| Lors de l'execution en configuration de base, on affiche sur l'ecran |
| gris un double GPL en continuevert clai. En appouyant surla touche A, |
| on affiche un double GPL en pointille rose. En appouant sur la touche |
| S, on affiche les deux GPL, le rose empietant sur le vert clair. La |
| touche B permet de revenir a l'etat initial. |
| |
| Afin d'obtenir une representation plus apparente, il convient de |
| reconfigurer la palette et de la transformer, de telle sorte que le |
| grisdevienne noir, le rose devient rouge, le vert clair devienne vert |
| sature. Cette action est implicitement apportee par les sequences |
| d'echapement ($48, $49, $4A ou $4B) inherente a la routine PUTC. |
| |
| Conclusion: l'avantage de ces modes est de pouvoir offiri des pages |
| independantes. Pendant l'affichage d'une page, l'autre peut etre |
| ecrite et presentee ensuite, par simple commutation. Le mode |
| surimpression permet de superposer les deux pages en continuant |
| d'ecrire dans l'une ou l'autre. |
| |
| . Mode particulier |
| |
| Le mode triple surimpression ou quatre pages superposees est un mode |
| particulier permettant d'associer des plans avec une priorite a |
| l'affichage, pour un resolution de 160 x 200 points et cinq couleurs |
| imposees. Le GPL est donc concu sur quatre points. En configuration de |
| base, chaque point de gauche a droire a sa couleur de forme definie |
| soit en rose, soit en vert clair, soit en bleu clair soit enfin en |
| noir, avec une couleur de fond gris. |
| |
| Schema de codage en RAM: |
| |
| RAMA RAMB |
| F3 F2 F1 F0 F3 F2 F1 F0 F3 F2 F1 F0 F3 F2 F1 F0 |
| \_________/ \_________/ \_________/ \_________/ |
| R V RB S |
| |
| Pour ce mode (CBA = 111), le gate arrau d'affichage n'effectue pas de |
| transcodage (T1 T0 = 01). Quatre serialisateurs specialises chacun en |
| R, V, B, S et commandes par Ø point = 4Mhz (Ø1 Ø0 = 11) vont delivrer |
| en correspondance de R,de V, de B et de Sles informations de teinte du |
| point considere selon l'effet de masquage ou de priorite suivant: |
| |
| Sortie R = R |
| _ |
| Sortie V = V.R |
| _ _ |
| Sortie B = B.V.R |
| _ _ _ |
| Sortie S = S.B.V.R |
| |
| Programme representaif du mode: |
| LDA #$3F |
| STA $E7DC |
| DEB LDB #$0F |
| STB $5000 |
| JSR ATT |
| LDB #$FF |
| STB $5000 |
| JSR ATT |
| LDA $E7C3 |
| ORA #$01 |
| STA $E7C3 |
| LDB #$0F |
| STB $500 |
| JSR ATT |
| ANDA #$FE |
| STA $E7C3 |
| JMP DEB |
| ATT JSR $E806 ATTENTE ESPACE |
| CMPB #$20 |
| BNE ATT |
| RTS |
| |
| Ce programme met en evidence le principe de superposition applique |
| dans ce mode de fonctionnement. En configuration de base,apres avoir |
| trace un GPL en noir sur fond gris, en appuyant sur la touche espace, |
| le meme GPLdevient bleu clair (S masque); en appuyant encore sur la |
| touche espace, le GPL devient bleu clair (S masque); en appuyant encoe |
| sur la touche espace, le GPLdevient vert pale (S et B masques) puis |
| enappuyant de nouveau il devient rose (S, B, V masques). Le fait de |
| relancer a nouveau l'experience en appuyant plusieurs fois sur la |
| barre espace, demontre que S et B resten definitivement masques par |
| la resence de R ou V dans la RAMA. |
| |
| Circuit de palette |
| |
| Le systeme de palette I-28 utilise le circuit IGV EF 9369 de chez |
| EFCIS. Son principal role est de pouvoir augmenter le nombre de |
| teintes parmi les seize disponibles en configuration de base, sans |
| pour autant intervenir sur les plans RAMA et RAMB. Il permet un choix |
| de seize teintes parmi une palette de 4096. |
| |
| Description fonctionnelle de l'IGV |
| |
| Il remplit les fonctions suivantes: |
| - Memoire de couleurs reinscriptible |
| - Conversion umerique analogique des fondamentale R, V, B et |
| mise aux normes peritelevision. |
| - Interfacage avec le microprocesseur. |
| |
| . Memoire de couleur |
| |
| C'est une memoire vice de 16 mots de 13 bits (4 bits par fondamentale |
| plus un bit de marquage). Elle est accessible en adressage de deux |
| manieres: |
| |
| - En lecture seulement par le systeme graphique (gate array |
| d'affichage) a travers un latch 4 bits 74LS173 et un inverseur pour |
| transformer le bit de saturation en bit pastel. La synchronisation ou |
| validation est effectuee par l'horloge HP (image de Ø point). De cette |
| maniere, le circuit effectue la transposition des informations |
| couleurs entre la memoire ecran et la prise peritel. |
| |
| - Prioritairement, en lecture-ecriture par le 6809E via l'interface |
| micro-processeur, permettant ainsi de reconfigurer les couleurs et de |
| fixer la couleur de transaprence pour l'inscrusation par |
| l'intermediaire du bit de marquage M (sortie marqueur). |
| |
| . Convertisseur numerique analogique |
| |
| Il delivre seize niveaux de tension differents par fondamentale |
| (sorties CR, CV, RB) ce qui permet uen gamme de 16 x 16 x 16 = 4096 |
| teintes. Les tensions de sorties d'echelonnent entre 0.8V pour le |
| niveau le plus bas et 1.8V pour le niveau le plus haut. Ces tensions |
| sont amplifiees de 6dB par le circuit I-30 (TEA 5114) avec un OFFSET |
| de 2V pour attaquer la prise SCART. |
| |
| Un controleur CNA recoit la commande de blanking (SUPLT) en provenance |
| du gate array principal, fixant le niveau du noir pendant le retour |
| ligne et trame. La commade de RESET force les sorties au niveau de |
| noir jusqu'a l'acces microprocesseur suivant. |
| |
| . L'interfacage avec le 6809E se fait par la commande CSN active. |
| Ainsi, pour A0=0, le bus de donnees principal communique avec le |
| registre de donnees couleurs representant le contenu du plan memoire. |
| Pour l'entree A0=1, le bus de donnees communique avec le registre |
| d'adresses couleurs du plan memoire. Le registre d'adresses couleurs |
| offre alors la possibilite d'un adressage auto-incrementable modulo 32 |
| (ecriture ou lecture du plan memoire entier en 33 cycles micro). |
| |
| Ainsi, un acces au registre de donnees incremente automatiquement le |
| registre d'adresse et lors d'un programmation complete de la palette, |
| il n'est necessaire de venir reecrire le registre d'adresses. |
| |
| Programmation de la palette |
| |
| - La programmation du registre de donnees (designation PALETTE) se |
| fait l'adresse E7DA en deux ecritures ou deux lectures de 2 x 8 = 16 |
| hbits (dont 13 bits actifs), par auto-incrementation du registre |
| d'adresses selon la forme |
| |
| V V V V R R R R |
| Premiere adresse fondamentale V fondamentale R |
| |
| Dexieme adresse X X X M B B B B |
| auto-incrementee bit de marquage fondamentale B |
| |
| et ensachant que: |
| |
| RRRR = 1111 represente la fondamentale "rouge" |
| RRRR = 0000 represente le niveau noir |
| |
| VVVV = 1111 represente la fondamentale "vert" |
| VVVV = 0000 represente le niveau noir |
| |
| BBBB = 1111 represente la fondamentale "bleu" |
| VVVV = 0000 represente le niveau noir. |
| |
| Toutes les autres combinaisons representent des couleurs |
| intermediaires enintensite et saturation. |
| |
| En relation avec le registre de donnees, la programmatipon duregistre |
| d'adresses couleurs (designation PALETTE + 1) se fait a l'adresse CPU |
| E7DB par une ecriture ou une lecture du numero de couleur qu'il faut |
| veiller a transformer en adresse de plan memoire sur 8 bits (une |
| adresse couleur representnat deux adresses physiques successives par |
| auto-incrementation), selon la forma: |
| |
| Adresse couleur Adresse plan memoire |
| ou numero de couleur |
| 0 00 |
| 1 02 |
| 2 04 |
| 3 06 |
| 4 08 |
| 5 0A |
| 6 0C |
| 7 0E |
| 8 10 |
| 9 12 |
| A 14 |
| B 16 |
| C 18 |
| D 1A |
| E 1C |
| F 1E |
| |
| Exemple simple de programmation de la palette: |
| LDA #$03 |
| ASLA |
| STA $E7DB |
| LDD #$0FFF |
| STB $E7DA |
| STA $E7DA |
| SWI |
| |
| Ce programme permet de fixer la couleur numero 3 en blanc ce qui |
| revient a dire que l'on transformele jaune de la configuration de |
| base en blanc. |
| |
| Circuit d'incrustation |
| |
| Le but de l'incrustationest de superposer une image micro ordinateur |
| sur une image video (antenne ou magnetoscope). Le principe general du |
| systeme est de permuter, par logiciel, la commande de commutation |
| rapide (distribution des sorties RVGB) de facon a ce que, pour tout |
| generation d'images de la part du micro-ordinateur, pour chaque |
| couleur dont le bit de marquage est positionne, l'image video vienne s |
| eplacer en substitution. |
| |
| Il estaussi necessaire d'asservire la synchronisaion ligne du TO9 sur |
| cellede la source video (utilisation d'un VCO det d'une boucle a |
| verrouillage de phase). De meme, l'ordinateur fonctionnant en |
| 624lignes, il es indispensable de rattraper l'equivalent d'une |
| demi-ligne poruchaque tramme, afin de rester en concordance avec la |
| source video fonctionnant en 625 lignes (generation d'un signal de |
| remise la 'heure CLRG). |
| |
| Le VCO, le PLL et la commande CLRG sont situes dans un boitier |
| d'extension "incrustation". La figure 10 regroupe les principaux |
| circuits internes a l'unite centrale, en relation avec l'incrustation. |
| |
| Le passage en mode incruste est realise par la commutation du bit CB2 |
| (broche 12 du 6821, circuit I-43). Le signal obtenu, clae en phase |
| avec E, vient commander un aiguilleur (multiplexeur 1-2 a 4 voies). |
| |
| Ainsi, pour CB2 = 1: Le systeme est en mode normal. Il recoit les |
| 16Mhz de l'oscilatteur interne. Il genere du +12V pour la commutation |
| lente, du +5V pour la commutation rapide. |
| |
| Pour CB2 = 0: Le systeme est en mode incruste. Il recoit les 16MHz en |
| provenance du VCO dans le boitier d'incrustation. Il recoit la |
| commande CLRG activant l'entree SYCL2 du gate array principal (remise |
| a l'heure des compteurs lignes et trames). la commutation rapide est |
| modulee par le marqueur (image video pour l'etat 0). La commutation |
| lente est supprimee, al synchronisation mixte de l'ordinateur etant |
| en phase avec le synchronisation TV. Le son du televiseur est alors |
| commute. |
| |
| ------------------------------------------------------------------------------- |
| |
| 6. Les interfaces paralleles |
| |
| Le TO9 utilise deux circuits fondamenteux: le 6846 et le 6821 avec un |
| environnement bien specifique. |
| |
| Utilisation du 6846: circuit I-41 |
| |
| Description fonctionnelle |
| |
| - Le port 8 bits du 6846, appele port C, a par initialisation cinq |
| lignes P0, P2, P4, P5, P6, configurees en sorties et deux autres P1, |
| P7, en entrees. Le bit P3 n'est pas utilise. |
| |
| P0 represente le bit de forme pour la commutation des plans memoire |
| RAMA ou RAMB. |
| |
| P1 recoit l'information de l'interrupteur du crayon optique. Un niveau |
| 1 est present lorsqu'il est active. |
| |
| P2 et P6 sont employes pour la commutation des banques de la memoire |
| extension disque virtuel. |
| |
| P4 et P5 sont utilises pour la commutation des EPROMS a travers le |
| gate array de decodage d'adresses I-47. |
| |
| P7 recoit les informations numeriques decodees, en lecture, du |
| magnetophone LEP. Ce bit sert de test pour le programme |
| d'initalisation de facon a savoir si le magnetophone est present ou |
| non (niveau 1 lorsqu'il est branche moteur arrete). |
| |
| - La ligne de controle CP2 est employee seule. Initialisee en sortie, |
| elle assure la generation du son via le melangeur. |
| |
| - Le TIMER a un double role: en fonctionnement normal, il sert, par |
| des demandes d'interruptions successives (sorties IRQ) toutes les |
| 100ms, a commander le clignotement du curseur. En utilisation du LEP, |
| il code et fournit les informations numeriques a enregistrer sur le |
| magnetophone par la sortie CT0. Les informations digitales sont codees |
| en salve de frequences: |
| 5 periodes a 4.5KHz pour le bit 0 |
| 7 periodes a 6.3KHz pout le bit 1 |
| |
| Ce procede effectue une transmission serailisee asynchrone a 900 |
| bauds. |
| |
| Adresses des registres internes |
| |
| E7C0 - registre d'etat composite (CSR) |
| E7C1 - registre de controle peritherique (CRC) |
| E7C2 - registre de direction de donnees (DDRC) |
| E7C3 - registre de donnees peripheriques (PRC) |
| E7C4 - registre d'etat composite (CSR) |
| E7C5 - registre controle temporisateur (TCR) |
| E7C6 - registre temporisateur d'octet de poids fort (TMSB) |
| E7C7 - registre temporisateur d'octet de poids faible (TLSB) |
| |
| Utilisation du 6821 dans le TO9: circuit I-43 |
| |
| Description fonctionnelle |
| |
| Le 6821 sert a l'interfacage d'un imprimante du type huit bit |
| "parallele" en mode CENTRONICS. Sept bits du port A sont utilises a |
| cet effet ainsi que deux bits du port B. Les lignes, configurees en |
| sorties, servent au transfert des donnees sur huit bits et la commande |
| de prise en compte STROBE (en PSB1) qui est active a l'etat 0. Les |
| routines de gestion imprimante autorisent une emission de donnees, a |
| condition que le signal "BUSY" en provenance de l'imprimante ne soit |
| pas actif, c'est-a-dir, a l'etat 0. Un test est effectue a partir de |
| l'entree CTSN de l'ACIA 6850 (circuit I-54). |
| |
| La ligne PA0 recoit une information KTEST en provenance du clavier. Ce |
| dernier envoie un etat 1 durable a chaque appui sur uen touche. Ce bit |
| est repris par la routine moniteur KTST permettant une verification |
| rapide d'une demande clavier (systeme anti-rebond). |
| |
| PB2 est la command d'incrustation activea 0. Elle reste a l'etat bas |
| lorsque l'utilisateur passe en mode incrustation. |
| |
| PB3 a PB7 sont les bits de commutation de banque memoire. Le |
| programme d'initialisation fixe PB3 en sortie a l'etat 0 et PB4, PB5, |
| PB6, PB7 en entree a l'etat 1 par la presence de resistances de PULL |
| UP (cf. Systeme de memorisation). |
| |
| Les lignes de controle ont chacune une application bien specifique: |
| |
| - CA1 recoit le signale de remise a l'heure de l'eventuel boitier |
| d'incrustation. Il sert uniquement a positionner le flag du registre |
| de controle CRA afin d'operer une protection lorsqu'une demande |
| d'incrustation est effectuee sans le boitier. |
| |
| - CA2 est ensortie. Active a l'etat 0, elle permet de telecommander la |
| mise en route du moteur LEP. |
| |
| - CB1 recoit la demande d'interruption lorsqu'une videe est effectuee |
| sur l'ecran par l'intermediaire du crayon optique. La routine moniteur |
| GETLTP prend en compte cette demmande et demasque la sortie IRQN pour |
| la transmettre en FIRQN sur le 6809 (cf. Gestion du crayon optique). |
| |
| - CB2 n'est pas utilise. |
| |
| Adresses des registres internes: |
| |
| E7C8 - registre de direction de donnees ou registre de donnees partie |
| A (PRA) |
| E7C9 - registre de direction de donnees ou registre de donnees partie |
| B (PRB) |
| E7CA - registre de controle partie A (CRA) |
| E7CB - registre de controle partie B (CRB) |
| |
| [--- extrait d'une autre doc |
| 6. Les interfaces paralleles |
| |
| Le TO9 utilise deux circuits condamentaux: le 6846 et le 6821 avec un |
| environement bien specifique. |
| |
| Utilisation du 6846: Circuit I-41 |
| |
| Description fonctionelle |
| |
| * Le port 8 bit du 6846, appele port C, a par initialisation cinq lignes |
| P0, P2, P4, P5, P6, configurees en sorties et deux autres P1 et P7 en |
| entrees. Le bit P3 n'est pas utilise |
| |
| P0 represente le bit de forme pour la commutation des plans |
| memoire RAMA ou RAMB. |
| |
| P1 recoit l'information de l'interrupteur du crayon optique. |
| Un niveau 1 est present lorsqu'il est active. |
| |
| P2 et P6 sont employes pour la commutation des banques de la |
| memoire extension disque virtuel. |
| |
| P4 et P5 sont utilises pour la commutation des EPROMS a |
| travers le gate array de decodage d'adresse I-47. |
| |
| P7 recoit les informations numerique decodees, en lecture, du |
| magnetophone LEP. Ce bit sert de test pour le programme |
| d'initialisation de facon a savoir si le magnetophone est |
| present ou non (niveau 1 lorsqu'il est branche moteur arrete). |
| |
| * La ligne de controle CP2 est employee seule. Initialisee en sortie |
| elle assure la generation du son via le melangeur. |
| |
| * Le TIMER a un double role: en fonctionnement normal, il sert, par |
| des demandes d'interruptions successives (sortie IRQ) toutes les |
| 100ms, a commander le clignotement du curseur. En utilisation du LEP, |
| il code et fournit des informations numeriques a enregistrer sur le |
| magnetophone par la sortie CT0. Les informations digitales sont codees |
| en salve de frequences: |
| |
| 5 periodes a 4.5KHz pour le bit 0 |
| 7 periodes a 6.3Khz pour le bit 1 |
| |
| Ce procede effectue une transmission serialisee asynchrone a 900 |
| bauds. |
| |
| (sam: j'ai un programme qui doit modifier la frequence des |
| interruptions IRQ du timer. Je l'ai utilise dans ma routine qui joue |
| les sample des guignols de l'info a la frequence de 4KHz en |
| re-programmant le timer a cette frequence il me semble... Jette un |
| oeil au source pour voir comment on arrive a chagner la frequence des |
| interruption et comment on programme le timer: one shot ou repetitif |
| (j'ai aucune idee a present d'ou j'ai pu recuperer la facon de |
| programmer le timer 6846.. peut-etre dans une doc motorola qui m'etait |
| tombee sous la main a l'epoque)) |
| ---] |
| |
| ------------------------------------------------------------------------------- |
| |
| 7. La gestion du clavier et des peripheriques |
| |
| Le clavier est gere a partir d'un microprocesseur monochip du type |
| 6805. Ce dernier est en liaison serie avec l'unite centrale par |
| l'intermediaire d'un circuit d'interface serie: l'ACIA 6850. |
| |
| Utilisation du 6850 dans le TO9 |
| |
| Description |
| |
| De par le decodage d'adresse envoye sur l'entreee CS2 et la commande |
| lecture-ecriture R/WN, la situation des registres internes est telle |
| que: |
| |
| Adresse R/WN Registre selecte |
| E7DE 0 CR (controle) |
| E7DE 1 SR (etat) |
| E7DF 0 TDR (emission) |
| E7DF 1 RDR (reception) |
| |
| L'horloge est commune pour l'emission et la reception (TXC et RXC |
| relies ensembles). Cette horloge oscille a une frequence d'environ |
| 145KHz apres division du 16MHz par un compteur asynchrone dans un |
| rapport 16x7=112. Le regsitre de controle est programme pour une |
| predivision interne de 16, ce qui permet une transmission a 9600 |
| bauds. L'unite centrale echange des informations avec le |
| microprocesseur (monochip) du clavier dans les deux sens, soit en |
| emission par TXD,soit en reception par RXD. |
| |
| Avant la prise en compte d'un caractere envoye, le logiciel de gestion |
| clavier, fait un test rapide du bit PA0 du 6821 qui recoit la commande |
| KTEST. Ce bit passe a 1, lorsque l'on appuie sur une touche. La |
| routine moniteur KTST force alors le bit C du registre d'etat 6809E a |
| 1. |
| |
| En fonctionnement normal; le registre de commande est configure pour |
| maintenir RTSN a l'etat 0, ce qui impose, via la porte I-37, CTSN=0 et |
| indique par la-meme quele peripherique est toujours pret a emettre. |
| |
| En attente d'appui sur une touche, le contenu du registre duregistre |
| d'etat est de 02, precisant notamment que les registres de reception |
| et d'emission sont vides. |
| |
| Le 6850 a un role annexe, consistant a recuperer le signal BUSY de |
| l'imprimante CENTRONICS commandee par le 6821. En gestion imprimante |
| parallele, les routines correpondantes forcent RTSN au niveau 1 et |
| viennent alors tester l'etat de CTSN dans le registre SR. |
| |
| Le clavier |
| |
| Presentation |
| |
| L'ensemble clavier du TO9 est separe de l'unite centrale et y est |
| relie par un cordon spirale a 6 conducteurs. Ce clavier comporte 81 |
| touches a repetition automatique et est muni d'un prise SUB-9 broches |
| permettant de connecter les peripheriques d'entree, tels que souris et |
| potentiometres de commande (paddle). |
| |
| Il est equipe d'un microprocesseur monochip du type 6805, charge de la |
| scrutation des touches, de la reconnaissance et du traitement de |
| donnees fournies par les peripheriques. Le monochip est commande par |
| une horloge autonome a 4Mhz. |
| |
| Les touches du clavier sont organises en matrice 10 ligne et 8 |
| colonnes. Les 10 lignes sont commandees, via un decodeur (4 vers 10), |
| par le port B du microprocesseur. Les 8 colonnes sont appliquees sur |
| le port A du microprocesseur. |
| |
| Lorsqu'une touche est presse, une liaison est etablie entre une ligne |
| et iune colonne. Le microprocesseur detecte ce changement d'etat et |
| positionne alors les 10 lignes a 0V, l'une apres l'autre. Lorsque la |
| ligne concernee passe a 0, la colonne passe egalement a 0 et le |
| microprocesseur connait alors l'emplacement de la touche. |
| |
| Les touches shift et controle (CNT) sont appliquees directement sur le |
| port d'entree D. |
| |
| Le voyant associe a la touche de verouillage majuscule (CAPS) est |
| commande par une sortie de port B qui est capable d'alimenter |
| directement une diode LED (I = 10mA). |
| |
| Les peripheriques sont relies par l'intermediaire de la prise |
| correspondante au port C. |
| |
| Un starp permet de monter, soit un microprocesseur 6805 masque, soit |
| un micorprocesseur 68705 (utilisation d'une EPROM). Un autre strap |
| permet de choisir la configuration du clavier, francais ou export. |
| |
| Signaux echanges avec l'unite centrale |
| |
| * Signaux recus par le clavier |
| |
| L'unite centrale est capable de modifier certaine fonctions du |
| clavier, telles qui reinitialisation, commande majuscule-minuscule, |
| autorisation de peripheriques, en envoyant un mot serie (UC->Clavier). |
| |
| Ce mot est constitue par: |
| - 1 bit de start |
| - 3 bits de donnees |
| - 1 bit de stop. |
| La vitesse de transmission est de 9600 bauds. |
| |
| L'untite centrale utilisant l'ACIA peour envoyer ces commandes, le |
| code est donc constitue de 8 bits. Seuls les 3 bits de poids faibles |
| sont utilises, les autres sont toujours a l'etat haut. |
| |
| * Signaux emis vers l'unbtite centrale |
| |
| Le clavier envoie vers l'unite centrale, des informations sous forme |
| d'octets, transmis en serie avec le format suivant: |
| - 1 bit de start |
| - 8 bits de donnes ou octet (code ASCII) |
| - 1 bit de parite (indicateur) |
| - 3 bits de stop |
| La vitesse de transmission est de 9600 bauds. |
| |
| Le bit de parite set d'indicateur pour differencier les codes clavier |
| des codes peripheriques. Les 3 bits de stop permettent d'obtenir un |
| ecart de temps minimum entre 3 mots consecutifs. Les informations sont |
| transmises de la maniere suivante: |
| |
| * Mode clavier seul |
| |
| Un octet est envoye a chaque appui d'une touche. Si cette touche reste |
| enfoncee, apres un delai de 0.8 secondes, le code est envoye toutes |
| les 70 mili-secondes (repetition automatique). Si deux touches sont |
| pressees simultanement, les deux codes sont envoyes successivement. |
| Dans ce cas, la repetiotion automatique est inhibee, et ceci tant que |
| les deux touches (ou plus de deux) sont enfoncees. |
| |
| * Mode peripherique |
| |
| Lorsqu'un peripherique est connecte et actif, les informations |
| transmises a l'unite centrale sont composees de trains de quatre |
| octets successifs quise repertent toutes les 10 milli-secondes. Ce |
| trait est organise de la facon suivante: |
| |
| - 1er octet: code clavier |
| |
| Cet octet vaut 00,si aucun code clavier n'est envoye. La parite de cet |
| octet est impaire (bit de parite = 1, si le nombre de bits a 1 est |
| impair). Si le clavier est en repetition automatique, le code est |
| envoye toutes les 70 milli-secondes, c'est a dire une fois tous les 7 |
| trains. |
| |
| - 2eme octet: Valeur du deplacement (boule ou potentiometre) |
| en X. |
| |
| Cet octet varie de 0 a $FF. La parite est paire. |
| |
| - 3eme octet: Valeur du deplacement (boule ou potentiometre) |
| en Y. |
| |
| Cet octet varie de 0 a $FF. La parite est paire. |
| |
| - 4eme octet: Depassement et gachettes |
| |
| La parite est paire. La designation est la suivante: |
| |
| bit7: depassement Y |
| bit6: depassement X |
| bit5: |
| bit4: |
| bit3: |
| bit2: gachette 2 |
| bit1: |
| bit0: gachette 1 |
| |
| En conbclusion, le bit de parite utilise comme indicateur est impair |
| uniquement pour le code clavier. Cela permet la synchronisation des |
| donnees a la reception par l'unite centrale. |
| |
| ------------------------------------------------------------------------------- |
| |
| 8. Gestion du crayon optique |
| |
| Fonctionnement du crayon optique |
| |
| Le crayon optique est constitue de deux elements separes. |
| - Un interupteur de validation tactile |
| - Un phototransistor de detection optique du spot sur l'ecran. |
| |
| Son action est dirigee a partir de diverses routines situees dans le |
| moniteur. |
| |
| Fonctionnement de l'interrupteur |
| |
| En effectuant une pression sur l'ecran avec le crayon optique, on |
| ferme l'interupteur de ce dernier sur la tension d'alimentation +5V. |
| Cet etat haut resultant vient informer le bit P1 du port 6846. |
| |
| En logiciel, ce bit a 1 est repris par la routinr LPINT du moniteur |
| qui, apres un test "anti-rebond", force le bit carry du 6809 |
| conjointement a 1. |
| |
| Fonctionnement du phototransistor |
| |
| Lorsque l'ecran du televiseur recoit, via la prise peritel, une |
| information RVB, il n'est concu, au meme instant qu'un point sur |
| l'ecran. S'il est dans la fenetre de visualisation, ce point |
| appartient a un GPL dont l'adresse est presente, toujours a cet |
| instant, dans les compteurs lignes et trames du gate array principal. |
| Si face a ce point, on place le phototransistor, ce dernier va emettre |
| une information recuperee en tension, amplifiee (circuit a miroir de |
| courant) et mise en forme par un monostable (circuit I-55), d'ou |
| resulte une impulsion calibree a 700ns. Cette impulsion est aiguillee |
| en deux directions CKLPN et CKLP. |
| |
| ____ |
| * Action de CKLPN = CKLP |
| |
| CKLPN attaque le gate array principal dans le but de latcher l'etat |
| des compteurs points, lignes et trame. Pour ce faire, le signal est |
| decoupe par frequences de l'horloge mere a 16Mhz, ce qui permet la |
| reconnaissance des compteurs points. En fait, l'operation generale du |
| stockage des compteurs points, lignes et trame, ne pourra se faire que |
| par un ordre du 6809. Le CPU doit envoyer en ecriture, par |
| l'intermediaire du bit D0 a l'etat 1 et a l'adresse $E7E4, une demande |
| d'ouverture ou de prise en compte dont la finalite est de rendre CKLPN |
| actif. Cette operation doit etre effectuee avant l'arrivee de ce |
| signal. |
| |
| * Action du CKLP |
| |
| CKLP, via une porte "OU" susceptible de recevoir des informations d'un |
| evenutel codage a barres, correspond a une demande d'interruption sur |
| l'entree de la ligne de controle CB1 du 6821. Apres autorisation, |
| cette demande d'interruption est dirigee sur la borne FIRQN du 6809. |
| La sous-routine correspondante "INTERLP" du moniteur assure la prise |
| en compte, en lecture du latch gate array principal, de l'etat des |
| compteurs. La lecture s'effectue sur les quantres adresses des |
| flip-flop E7E4 E7E5 E7E6 E7E7 selon la forme suivante: |
| |
| Adresses du Bus de donnes en correspondance |
| latch D7 D6 D5 D4 D3 D2 D1 D0 |
| |
| E7E4 T12 T11 T10 T9 T8 T7 T6 T5 |
| E7E5 T4 T3 TL2 TL1 TL0 E H2 H4 |
| E7E6 LT3 INILN 0 0 0 0 0 0 |
| E7E7 INITN INITN 0 0 0 0 0 1 |
| \___/ |
| independant de CKLP (non latche) |
| |
| * Action generale |
| |
| Aux adresses E7E4-E7E5, la connaissancde le l'etat de l'ensemble des |
| compteurs points, ligne et trame (H4 a T12) permet a la routine |
| principale GETLP (routine appelee par l'utilisateur) de transcrire, |
| pour le point vise, l'acquisition effectuee en coordonneees X et Y |
| de la fenetre de visualisation. Cette routine applique la formule |
| suivante: |
| Y = acquisition/320 |
| X = reste de la division |
| |
| A l'adresse E7E6, INILN indique si la mesure du crayon optique s'est |
| effectuee dans la partie horizontale active de la fenetre ou dans les |
| bords droits ou gauche. A la meme adresse, INITN (bit de poids 7) non |
| latche par CKLP et l'image du signal de construction de la fenetre en |
| trame, permet a la routine principale GETLP d'attendre la remise a |
| zero des compteurs pour tenter une acquisition. |
| |
| Selon la distance du crayon optique a l'ecran, le systeme prevoit une |
| prise en compte d'un nombre plus ou moins grand de mesures (8 au |
| maximum, 2 au minimumà, les resultats etant places dans buffer. |
| |
| ------------------------------------------------------------------------------- |
| |
| 9. L'exploitation du lecteur-enregistreur de disques |
| |
| L'appareil est compose, sous forme d'un module approprie, par un |
| circuit d'interface controleur de disques WD 2793 (WESTERN DIGITAL). |
| Il est destine a adapter les caracteristiques electriques et mecanique |
| du lecteur-enregistreur de disquette, (DRIVE ou FLOPPY) 3.5 pouces, a |
| l'unite centrale. Il remplace avantageusement ler WD 1770 dont les |
| premieres versions du TO9 etaient pourvues. |
| |
| Le contrôleur est commandé par l'action de la porte OU (I-20) et de |
| celle du decodage d'adresse combine avec A0 et A1. Ainsi il est |
| selecte pour E=1 aux quatre adresses E7D0, E7D1, E7D2, E7D3. |
| |
| Un monostable redeclenchable (74LS122) interne au module, active par |
| le decodage d'adresse, assure la mise en marche du moteur pendant tout |
| le temps ou le 6809 travaille en relation avec le lecteur. La commande |
| resultante de mise en marche du moteur vient informer l'entree "READY" |
| du controleur. |
| |
| Le latch I-50 (74LS173) associe a un ensemble de porte tristates |
| (I-49) realise un registre de commande de drive et de choix de |
| densite. De par le montage, ce registre est accessible en ecriture a |
| l'adresse E7D8 pour E=1. L'operation d'ecriture est realisable sous la |
| forme: |
| |
| ___ |
| DDE X X X X DS1 DS0 SIDE |
| ___ ___ ___ |
| avec DDE: choix de densite (DDE=1 => simple densite; DDE=0 => |
| double densite). |
| DS1 DS2: commande de drive |
| SIDE: commande de face. |
| |
| La gestion du systeme presente la particularite suivante: une face de |
| disquette correspond a un numero de lecteur. Ainsi, les numeros 0 et 1 |
| font parite du drive integre au TO9 (1 est inexploitable) 2 et 3 font |
| partie d'un drive externe. |
| |
| Tableau des commandes: |
| --------------------- |
| |
| DS0 DS1 SIDE => Lecteur n° |
| 1 0 0 => 0 |
| 1 0 1 => 1 |
| 0 1 0 => 2 |
| 1 1 1 => 3 |
| |
| Le role de I-49 est de rendre le registre accessible en lecture pour |
| l'information du choix de densite DDEN. |
| |
| Les circuits I-51 et I-52, de struture a collecteur ouvert, combines |
| avec des resistances de pull-up et de pull-down, adaptent et |
| bufferisent les differentes commandes de sorties du WD2793 |
| |
| ------------------------------------------------------------------------------- |
| |
| TROISEME PARTIE - Analyse materielle du TO8 |
| |
| 1. Analyse generale |
| |
| Conception generale - Description |
| |
| Le micro-ordinateur TO8 est concu comme ses predecesseurs, a partir |
| d'un 6809E, microprocesseur commande a la frequence de 1Mhz par deux |
| horloges exterieures en quadratures: E et Q. |
| |
| Le bus d'adresses 16bits est direct et permet d'acceder aux |
| differentes memoires mortes et aux registres. |
| |
| Le bus de donnees 8bits vehicuant les principaux echanges a une |
| ramification particuliere: le bus de donnees RAM qui est bufferise est |
| relie par un 74LS245. Pendant la phase non active du 6809, ce bus est |
| isole du bus de donnees principal par l'action du 74LS245 commande par |
| le signal TRANS. C'est durant cette periode que le gate array accede |
| aux memoires en "mode page". |
| |
| Les lignes de controle du 6809E correspondent: |
| - aux commandes de lecture et ecriture R/WN des differents |
| registres et memoire, |
| |
| - aux demandes d'interruptions IRQN concernant la gestion du |
| clavier, le clignotement du curseur, les manettes de jeux et |
| la souris, |
| |
| - aux demandes d'interruptions FIRQN pour le fonctionnement du |
| crayon optique et du code barre. |
| |
| Un circuit de reinitialisation "RESET" est en relation avec le 6809E |
| et differents circuits, tels le controleur clavier 6804. |
| |
| * /Pour la memoire morte/ |
| |
| Les deux pages de 6Ko du moniteur ainsi que les 2 pages de 1.9Ko de |
| logiciel controleur de disque sont logees dans une EPROM 16Ko 27 128. |
| |
| Les 2x32Ko de logiciel d'application BASIC 1 - divers- BASIC 512 - |
| EXTRAMONITEUR, sont loges chacun dans une ROM ou EPROM 32Ko selon une |
| repartition en 4 banques. |
| |
| La commutation des banques s'effectue en *programmation* par une |
| ecriture d'adresse ROM dans un /latch/ 74LS173. Ce circuit permet de |
| selecter chaque partie concernee dans une des memoires mortes. |
| |
| La cartouche de logiciel d'application externe est reliee a l'unite |
| centrale par l'intermediaire d'un connecteur. Elle est selectee par |
| *logiciel* a partir d'un bit de PIA du 6846. |
| |
| * /Pour la memoire vive/ |
| |
| Huit boitiers 256KBits 41256 forment un plan memoire de 256Ko |
| comprennant un decoupage de pages logiques de 16Ko. |
| |
| Les differentes pages sont commutees par un *adressage physique* sur |
| 18bits en provenance du gate array mode page. |
| |
| L'extension memoire, accessible par un connecteur de carte au bus de |
| donnees RAM, est constitue de 8 boitiers 41256 qui regroupent seize |
| autres pages de RAM utilisateur (pages 16 a 31) adressees de la meme |
| maniere et differenciees par le signal CAS2N. |
| |
| Outre le 6809E, l'element vital de l'unite centrale est un circuit a |
| reseau logique (gate array) appele "mode page" car il permet, par un |
| bus d'adresses multiplexees, de faire fonctionner les RAMs dynamiques |
| 41256 dans le type susnomme. |
| |
| Pendant la phase non active du CPU, il assure le rafraichissement des |
| memoires et de l'ecran. Pilote par une horloge mere de 16Mhz, il |
| delivre les differents signaux de timing et de commande video. Il |
| fabrique tous les decodages d'adresses. Il gere, en partie, le |
| fonctionnementdu crayon optique par le signal CKLPN. Il regroupe et |
| produit les huits modes d'affichage et definit les couleurs du cadre. |
| Il permet de definir la carte memoire en quatre espaces logiques |
| principaux: |
| L'espace "cartouche" de 0000 a 3FFF |
| L'espace "ecran" de 4000 a 5FFF |
| L'espace "systeme" de 6000 a 9FFF |
| L'espace "donnees" de A000 a DFFF |
| Il autorise l'utilisateur a affecter une page de RAM a un espace |
| logique selon certaines modalites; notamment, il permet de recouvrir |
| 16Ko de logiciel par une page de memoire vive. |
| |
| Un circuit du type EF9369, programmable par le 6809E, permet sous la |
| dependance du mode d'affichage determine une variete de seize teintes |
| exploitables directement par l'ecran parmi un choix de 4096 au total. |
| |
| Il delivre les trois informations B, V, R reprises et adaptees par des |
| circuits d'interfacage video comprennant, entre autre, le dispositif |
| d'incrustation. Ces circuits, recevants des signaux de synchronisation |
| et de blanking du gate array fournissent les tensions et adapatitions |
| necessaires pour la prise peritel aux normes SCART ainsi que pour un |
| eventuel codeur modulateur PAL dans la version export. |
| |
| Un deuxiemme connecteur de carte, appele polyvalent, permet de relier |
| les bus et signaux necessaires aux extenssions. |
| |
| Trois circuits d'interface sont en relation avec differents |
| peripheriques: |
| |
| - Un 6846 qui assure par le timer l'envoi code des informations |
| numeriques a enregistrer sur le magnetophone LEP (sauvegarde). |
| Inversement, une ligne du PIA recupere les informations numeriques |
| decodees en provenance du LEP (chargement). Les autres lignes du PIA |
| sont affectes a la commande de silence ou "MUTE" en utilisation de la |
| souris, a la prise en compte du signal BUSY de l'imprimante, a la |
| communication avec le 6804 pour la gestion du clavier, au traitement |
| de l'information tactile du crayon optique LP (signal INTERLP) et |
| enfin, a la commutation des logiciels internes ou de la cartouche |
| externe. |
| |
| - Un 6821 "musique et jeux" qui est charge par ses deux ports de huit |
| bits et ses quatre lignes de controle de la generation du son et de la |
| liaison manette des jeux et souris. Un convertisseur numerique |
| analogique CNA recupere le son synthetise et l'envoie vers un circuit |
| melangeur recevant, par ailleurs, le son du LEP et la commande de |
| MUTE. La sortie du melangeur alimente la prise peritel et une prise |
| auxiliaire CINCH. |
| |
| - Un 6821 "systeme" qui assure principalement, par l'intermediaire |
| d'un connecteur specialise, la gestion d'un imprimante en mode |
| parallele de type CENTRONICS, prend en compte, par le signal KTEST, |
| l'action d'une touche du clavier, procure les demandes incrustation et |
| la telecommande du moteur LEP. |
| |
| Un microprocesseur monochip du type 6804 sert de controleur de |
| clavier. Pilotye par uen horloge oscillant a 11Mhz, il dialogue en |
| transmission serie codee avec le 6809E par le truchement du 6846. La |
| liaison est effectuee dans les deux sens a l'aide de deux fils DATAS |
| et ACK. Le clavier est relie au 6804 par deux connecteurs assurant une |
| transmission parallele. |
| |
| Un controleur de disquettes, sous forme d'un deuxiemme circuit a |
| reseau logique ou gate array (THMFC01), programmable par le 6809 E, |
| delivre par l'intermediaire d'une prise DIN 14 broches les signaux |
| necessaires au fonctionnement d'un lecteur de disquettes. |
| |
| Une alimentation au secondaire fabrique les deux tensions de +5V et |
| +12V necessaires a la configuration de l'unite centrale. |
| |
| 2. LE 6809E dans le TO8 |
| |
| Suivant la lignee de ses predecesseurs, le fonctionnement general du |
| TO8 est base sur le principe fondamental de la phase active et non |
| active du 6809E (cf. etude TO9, paragraphe sur le principe fondamental |
| page 34). |
| |
| La frequence des horloges E et Q en provenance du gate array reste de |
| 1Mhz et la constante de temps du RESET de 1 seconde. |
| |
| La structure de bus est simplifiee. Un seul buffer 74LS245 est utilise |
| poiur l'aiguillage du bus de donnees RAM (cf. synoptique). En dehors |
| de l'action de R/WN determinant le sens du transfert des informations, |
| le 74LS245 est commande par le signal TRANSN reagissant en fonction de |
| E, des zones adressees et indirectement du CSCRTN (cf. commutation des |
| logiciels) selon la forme: |
| |
| E CSRTN zones adressees TRANSN |
| 0 X XXXX 1 |
| 1 0 0000-3FFF 1 |
| 1 1 0000-3FFF 0 \ validation |
| 1 1 4000-DFFF 0 / du buffer |
| |
| La consultation de ce tableau amene les remarques suivantes: |
| |
| Pour E=0, le cpu n'a pas access au bus RAM. Ce dernier est reserve au |
| rafraichissement. |
| Pour E=1, selon la programmation du gate array mode page, la zone |
| d'adresse 0000-3FFF initialement reservee pour les logiciels interne |
| ou externes peut etre attribuee a une page de RAM. Dans ce cas |
| CSCRN=1 et le signal TRANSN=0 valident le buffer permettant au |
| microprocesseur d'acceder a la memoire vive. |
| |
| EXceptees les zones d'adresses du gate array mode page, l'espace |
| E000-FFFF reste en majorite innaccessible par le cpu a travers le bus |
| RAM. |
| |
| Les deux entrees d'interruptions utilisees sont IRQN et FIRQN. La |
| premiere sert a gerer le cligotement du curseur (sortie du TIMER |
| 6846), le fonctionnement du clavier (PIA 6846) ou d'un peripherique |
| externe tel que manette de jeux, souris (6821 musique et jeux). La |
| deuxieme gere l'action du phototransistor dans le crayon optique lors |
| d'une visee (gate array mode page) ou, en relation avec un logiciel |
| adapte, l'action d'un eventuel capteur de "code barre". |
| |
| 3. Gestion de la memoire morte |
| |
| Contrairement au TO7, au TO7/70 et d'une facon similaire au TO9, le |
| TO8 est livre avec des logiciels integres qui sont adresses dans le |
| meme espace memoire que la cartouche. Le moniteur, quant a lui, reside |
| dans une autre partie de la memoire. |
| |
| Description des logiciels |
| |
| La memoire morte interne du TO8 est repartie en trois boitiers: |
| - Une ROM ou EPROM de 32Ko (27256) organisee en deux pages de 16Ko |
| (banque 0, banque 1) contenant le BASIC 512 et l'EXTRAMONITEUR. |
| - Une ROM ou EPROM de 32Ko (27256) organisee en deux pages de 16Ko |
| (banque 2, banque 3) contenant le BASIC 1, la page d'en-tete, le |
| reglage palette et le DOS ICONIQUE. |
| - Une ROM ou EPROM de 16Ko (27128) organisee en deux pages de 8Ko |
| contenant le MONITEUR de l'unite centrale et du lecteur de disquettes |
| externe. |
| La cartouche enfichable de 16Ko ou 32Ko represente la memoire morte |
| externe. |
| |
| Commutation des logiciels |
| |
| La figure 17 decrit le mecanisme general de fonctionnement. |
| |
| De par les decodages d'adresses CSCRTN et CSMN en provenance du gate |
| array mode page, le systeme assure la selection de la zone cartouche |
| 0000-3FFF et zone moniteur E000-FFFF moins quelques adresses prises |
| par les registres des circuits peripheriques. |
| |
| /Selection d'une page moniteur/ |
| |
| Par construction, le bit P4 du 6846 etant relie au bit A13 du bus |
| d'adresse de la memoire de 16Ko, ce bit permet de choisir la page de |
| 8Ko haute ou basse du boitier. Ainsi: |
| P4=0 => partie basse de la ROM |
| P4=1 => partie haute de la ROM |
| |
| La resistance reliee a la masse a pour effet, lors de l'initalisation, |
| de rendre accessible automatiquement la partie basse de la ROM, P4 |
| etant positionnee en entree. |
| |
| /Selection entre logiciels residents et cartouche/ |
| |
| La commutation se fait a partir du bit P2 du 6846 qui, combine avec le |
| decodage d'adresses CSCRTN, restitue a trafvers une logique cablee |
| les deux commandes telles que: |
| __ _____ __ |
| CS resident = CSCRT + P2 |
| __ _____ __ |
| CS cartouche = CSCRT + P2 |
| __ |
| Ainsi, pour P2=0: CS cartouche est actif dans le champ d'adresses |
| 0000-3FFF et valide la cartouche. |
| __ |
| CS resident est inactif. |
| __ |
| Ainsi, pour P2=1: CS resident est actif dans le champ d'adresses |
| 0000-3FFF et valide les deux boitiers de logiciels |
| internes. |
| __ |
| CS cartouche est inactif. |
| |
| De par l'action du gate array mode page, ce montage offre la |
| possibilite d'inhiber les logiciels dans l'espace memoire 0000-3FFF |
| qui leur est normallement alloue. Dans ce cas de figure, CSRTN=1 |
| constant. Ce type de fonctionnement permet a l'utilisateur de |
| substituer de la ROM par une page de RAM pouvant etre par ailleurs |
| cargee par un logiciel en provenance d'une memoire de masse (cf. |
| fonctionnenement du gate array mode page, page 105). |
| |
| /Selection des quatrebanques de logiciels internes/ |
| |
| Le mecanisme employe est comparable a celui utilsie par les cartouches |
| (COLORCALC, COLORPAINT, BASIC II...) et par le TO9 (en remplacant le |
| signal CSN par CSCRTN). |
| |
| Synthese de fonctionnement |
| |
| Le tableau suivant resume le mecanisme general des commutation selon |
| differents cas de figure: |
| _____ ___ |
| Champ d'adr. CSCRT CSM P2 P4 A1 A0 Logiciel |
| latche latche selecte |
| |
| 0000-3FFF 0 1 0 X X X Cartouche |
| - - 0 1 1 X 0 0 Banque 0 |
| - - 0 1 1 X 0 1 Banque 1 |
| - - 0 1 1 X 1 0 Banque 2 |
| - - 0 1 1 X 1 1 banque 3 |
| 4000-DFFF 1 1 X X X X Neant |
| E000-E7AF \ 1 0 X 0 X X Moniteur |
| E800-FFFF / partie basse |
| E000-E7AF \ 1 0 X 1 X X Moniteur |
| E800-FFFF / partie haute. |
| |
| |
| 4. Les memoires vives |
| |
| Technologiquement, les 256 Ko de memoire vive residentes du tO8 sont |
| constitues par 8 boitiers integres du type 41256. Ces circuits ont une |
| capacite de 256 x 1bit. Pour une reconstitution en donnees de 8 bits, |
| huit 41256 sont associees, chacune specialisee par un poids de D7 a D0 |
| (cf. figure 18). |
| |
| Fonctionnement d'une 41256 |
| |
| Les 41256 sont des memoires vives dynamqiues qui permetttent de |
| stockjer sous forme de matrice de 2^9 = 512 lignes et de 2^9 = 512 |
| colonnes, 512 x 512 = 256 Kbits. L'adressage d'une telle matrice, a |
| structue symatrique, necessite 2 x 9 bits d'adressage envoyes en deux |
| temps sur les 9 fils du bus d'adresse correspondant. Aux 9 bits de |
| poids faible correspond l'adressage ligne valide par le signal de |
| ligne RASN; aux 9 bits de poids fort correspond l'adressage colonne |
| valide par le signal de colone CASN. Le diagramme suivant precise la |
| forme multiplexee de l'adresssage: |
| |
| a0 a9 |
| a1 a10 |
| a2 a11 |
| a3 a12 |
| a4 a13 |
| a5 a14 |
| a6 a15 |
| a7 a16 |
| a8 a17 |
| |
| Adressage ligne Adressage colonne |
| valide par RASN valide par CASN |
| et rafraichis- |
| sement d'une li- |
| gne. |
| |
| On peut faire suivre un adressage ligne bien particulier par deux |
| adressages colonnes successifs en utilisant deux validatiàons de CASN, |
| pour RASN actif constamment. Ce type de fonctionnement s'intitule mode |
| page. Il est utilise dans le TO8, par l'intermediaire du gate array |
| correspondant. (SAM: sur 68030+ on appelle cela le mode "burst" :) |
| |
| Le rafraichissement de ces memoires dynamique se fait par adressage |
| consecutifs des 512 lignes. |
| |
| Les 41256 ne sont pas selectees (bus de donnees deconnecte) lorsque le |
| signal CASN n'est pas actif. Ce dernier remplace avantageusement une |
| commande de CHIP SELECT. |
| |
| Organisation generale |
| |
| la figure 18 montre deux plans memoire distincts composes chacun de |
| huit boitiers 41256. Le plan superieur represente les 256Ko de memoire |
| vive residant dans l'unite centrale, l'autre plan represente les 256Ko |
| de memoire vive appartenant a l'unite d'extension. |
| |
| Chaque boitier recoit en commun les commandes de RASN et RAMWN en |
| provenance du gate array. CAS1N et CAS2N autorisent la selection des |
| plans memoire, conformement au tableau suivant par l'intermediaire des |
| commandes communes de CASN |
| ____ ____ |
| CAS1 CAS2 Plan memoire actif |
| 0 1 Resident |
| 1 0 Extension |
| 1 1 Aucun |
| |
| Un bus de donneees RAMS est commun en entree-sortie a tous les |
| boitiers des deux plans memoire. Ce bus est en relation avec le bus de |
| donnees du 6809 par l'intermediaire d'un buffer 74LS245 commande par |
| le signal TRANSN selon certaines modalite (cf. chapitre II, le 6809E |
| dans le TO8, page 95). |
| |
| L'adressage de chaque boitier, necessairement multiplexe en 2 x 9 |
| bits, est issu du gate array mode page. Cet adressage physique sur 18 |
| bits (a0 a a17 - 256Ko d'investigation) permet un decoupage logique en |
| pages de 16Ko, selon une correspondance en espace logiques de la carte |
| memoire limitee par principe a un adressage sur 16 bits (A0 a A15 - |
| 64Ko d'investigation). Ces espaces logiques sont alors a considerer |
| comme des banques memoires, ce qui, vu d'un logiciel, ne change rien |
| quant a l'ancienne structure du type TO9, mais est totalement |
| different au niveau materiel. |
| |
| Correlativement a l'action du gate array, les trois espaces memoire |
| RAM definis dans la carte memoire ont chacun une correspondance de |
| page dans un des deux plans physiques selon: |
| |
| Espace logique Espace physique |
| Ecran page 0 plan resident |
| Systeme page 1 plan resident |
| Donnees pages 2 a 31 plan resident ou |
| extension |
| |
| Selection et correspondances |
| |
| Contrairement au TO9, la selection des zones memoire qui etait faire |
| par aiguillage de CAS et bits de PIA est realisee, dans le TO8, par un |
| processus de *transformation d'adresses*. L'adressage logique, |
| provenant de la programmation sur 16 bits, est transforme en 18 bits. |
| |
| Le tableau ci-dessous montre la relation entre les conditions |
| physiques et les decoupages logiques obtenus pour assurer la |
| compatibilite avec kes anciens montages. |
| |
| Condition physiques Decoupage logique |
| ____ ____ |
| CAS1 CAS2 Zone phys. Page Zone logique Appellation |
| 0 1 00000-01FFF 0 4000-5FFF RAM ecran B |
| 0 1 02000-03FFF 0 4000-5FFF RAM ecran A |
| 0 1 04000-07FFF 1 6000-9000 RAM systeme |
| 0 1 08000-0BFFF 2 A000-DFFF Banque 0 |
| 0 1 0C000-0FFFF 3 A000-DFFF Banque 1 |
| 0 1 10000-13FFF 4 A000-DFFF Banque 2 |
| 0 1 14000-17FFF 5 A000-DFFF Banque 3 |
| 0 1 18000-1BFFF 6 A000-DFFF Banque 4 |
| 0 1 1C000-1FFFF 7 A000-DFFF Banque 5 |
| - - - - - - - - |
| 0 1 3C000-3FFFF 15 A000-DFFF Banque 13 |
| 1 0 00000-03FFF 16 A000-DFFF Banque 14 |
| - - - - - - - - |
| 1 0 3C000-3FFFF 31 A000-DFFF Banque 29 |
| |
| La commutation de CAS1N et CAS2N est dependante de la programmation du |
| gate array mode page (voir page 105) dans lequel cing bits |
| representent le numero de page. |
| |
| On remarquera, a la vue de ce tableau, une correspondance |
| logique/physique beaucoup plus rationnelle que dans les montages |
| precedents. |
| |
| Ecriture et lecture des RAMS |
| |
| Comme pour le TO9, deux cas de figure sibt a considerer. |
| |
| * E=1, phase active du 6809: |
| Le microprocesseur peut communiquer en lecture ou ecriture |
| avec les RAMS a travers le 74LS245 par le bus de donnees RAM. |
| La commande RAMW = R/WN. (SAM: ah tiens je viens de realiser |
| ___ |
| que R/WN = NOT(R/W) = R/W :-) |
| |
| * E=0, phase non active du 6809: |
| RAMW=1, les memoires sont en lecture automatique. Les lignes |
| sont adressees en incrementation constante par les compteurs |
| du gate array. |
| |
| Afin de permettre leur rafraichissement en tdeux temps, soit en acces |
| mode page, les colonnes sont doublement adressees, avec un ecart qui |
| represente une variation de 8Ko. Ainsi: |
| |
| Un premier acces a lieu dans la page physique 0 a une premiere |
| adresse AD telle que: |
| * 00000 < AD < 01FFF donc dependante de la memoire ecran B (couleur). |
| Un deuxiemme acces a lieu dans la meme page physique 0 a une adresse |
| telle que: |
| * 02000 < AD + 8Ko < 03FFF donc dependante de la memoire ecran A |
| (points). |
| |
| Toute cette organisation est definie a partir du gate arraut "mode |
| page". |
| |
| 5. Le gate array mode page CF 74021 |
| |
| Ce nouveau circuit a reseau logique est une extenesion et uen |
| amelioration sensible du gate array principal utilise dansl e TO9. A |
| lui seul, il assure un effet: |
| - La distribution des signaux necessaires a l'interface video |
| - Les decodages d'adresses |
| - Les huit modes d'affichages |
| - Une nouvelle gestion de smemoires vives, dont le "mode page" |
| - Un fonctionnement polyvalent de commutation, d'adaptation et |
| de changement de caracteristique pour divers systemes. |
| |
| Definition du mode page |
| |
| Dans le tO9, le gate array systeme est concu de telle sorte que |
| lorsque le CPU travaille dans la memoire ecran, son acces est dirige, |
| soit vers la RAMA (memoire points ou forme), soit vers la RAMB |
| (memoire couleur) en fonction du bit de forme. Les circuits |
| d'exploitation automatiques (automate) de la memoire ecran permettent, |
| quant a eux, la lecture *simultanee* des deux RAMS. Cette lecture est |
| idnependante du bit de forme, afin de pouvoir elaborer en temps reel |
| l'integralite des signaux de visualisation destines au tube cathodique |
| d'affichage. |
| |
| Pour chaque groupe de huit pixels ou GPL affiches a l'ecran, la |
| circuiterie video doit lire 16bits en memoire: 8 bits pour l'octet |
| "RAMA" et 8 bits pour l'octet "RAMB". Jusqu'a maintenant, cette |
| lecture devait se faire en une seule fois, sur 16bits, ce qui imposait |
| a la memoire ecran, d'etre organisee en deux bancs de 8bits, alors que |
| tout le reste de la memoire systeme est su un octet seulement. Cetet |
| organisation "irreguliere" n'est pas optimale economiquement et n'est |
| pas favorable a l'utilisation des boitiers memoires dynamiques N*1bits |
| qui portant les plus rependus. |
| |
| Afin de pallier cet inconvenient, le nouveau gate arrau denomme "mode |
| page" utilise un automate qui remplace l'acces 16bits a la memoire |
| ecran par deux acces successifs tres rapides et qui totalisent la meme |
| duree que l'ancien acces 16bits. |
| |
| Cette technique est rendu possible grace a un mode d'adressage |
| particulier de smemoires dynamiques: le mode page (sam: aujourd'hui on |
| parle mode burst ou memoire edo). Dans ce tytpe de fonctionnement, |
| plusieurs cases memoires du composant peuvent etre lues en sequence, a |
| condition que ces cases appartiennent toutes a la meme rangee ou ligne |
| de la matrice interne. |
| |
| Ainsi pour une adresse poids faible constante et un signal RASN a |
| l'etat bas, deux acces sont possibles pour deux adresses poids fort |
| differentes en correlation avec deux fronts descendants du signal |
| CASN. |
| |
| Cette nouvelle structure implique donc une roganisation nouvelle de |
| la memoire ecran pour que les octets "RAMA" et "RAMB" soient |
| accessibles en mode page. Evidemment, vu du logiciel, l'agencement de |
| l'ecran doit rester compatible avec les systemes precedents, |
| c'est-a-dire que le bit de forme doit toujours permettre de rendre |
| l'acces du CPU, soit a la memore "ecran A" soit a la memoire "ecran |
| B". |
| |
| Gestion de la memoire vive |
| |
| Cette nouvelle version du gate permet de surcroit de gere une quantite |
| de RAM bien superieure a celle implicitement contenue dans la carte |
| memoire. Ainsi est-il possible d'exploitet jusqu'a 512Ko de memoire |
| vive par page de 16Ko. Le numero de page peut-etre choisi par |
| programmation. |
| |
| De meme ces pages "physiques" peuvent etre affectees a plusieurs |
| espaces "logiques" du systeme, tels que l'espace "cartouche", l'espace |
| "ecran" et l'espace "donnees" (cf. gate array mode page dans le TO8, |
| page 117). |
| |
| D'une facon independante et de par une organisation tres souple, un |
| simple changement de programmation dans des registres rend possible |
| l'adaptation du gate array mode page a diverses unites centrales (TO8, |
| TO9+, MO6, MO5NR). De la meme maniere, dives types de memoire |
| dynamliques peuvent etre cables (4416, 4464, 4164, 41128, 41256, |
| 44256). |
| |
| Structure du circuit |
| |
| La figure 19 schematise la structure interne du circuit a reseal |
| logique prediffuse. On y distingue |
| |
| - Le decodeur d'adresses sollicite par le bus d'adresses du |
| microprocesseur A15-A0. |
| - Le module des mode sd'affichages avec ses deux registres |
| programmables et son electronique en partie identique a ceux du gate |
| array "mode d'affichage" dans le TO9. Conformement au mecanisme du |
| "mode page", dans ce module le transcodeur est attaque en deux acces |
| de huit bits, en remplacement de l'ancien acces 16bits RAM RAMB. (Cf. |
| analyse materielle du tO9, p. 54). |
| - Le bus couleur en sortie de module. |
| - Un circuit de generation RAMW (en logique cablee dans le TO9), |
| combinaison de R/WN et E, afin de forcer uen lecture automatique des |
| memoires vices pendant la phase non active du CPU, selon l'equation: |
| ___ |
| RAMW = R/W + E |
| Comme pour le TO9, (cf. etude materielle, p48) on reconnait l'automate |
| constitue: |
| - des compteurs points (avec C, RASN, E et Q), |
| - des compteurs ligne et trame, (pilotes par H16 et CLRG), |
| - et du bus de rafraichissement T12-T0 correspondant. |
| H16 VCO est une nouvelle commande de remise en phase (cf. |
| incrustation). |
| |
| - Les circuits de decodage et mixage delivrant les signaux video |
| SYNLT, SUPLT et INLT. |
| - Un systeme de registres pour le crayon optiquye quelque peu modifie |
| dans son exploitation et permettant notamment le controle de FIRQN |
| anciennement assure par un PIA. |
| - Un double circuit de multiplexeurs commutant d'une facon classique |
| les adresses CPU ou les adresses compteurs (phase du cPU en fonction |
| de E); commutant en matricage ligne et colonne (poids faible, poids |
| fort en fonction de C); le tout, par l'intermediaire du bus de neuf |
| bits MA0-MA8 destine aux memores vives. |
| |
| En fait, un traitement ou aiguillage de signaux est effectue avant |
| multiplexage. Cette action definit, entre autres, la generation de |
| signaux CAS1N, CAS2N. Elle depend de registres, dits de traitement, et |
| programmables a souhaits. C'est par la-meme que resident l'originalite |
| et la grande nouveaute du composant, voir du micro-ordinateur. |
| |
| Traitement des signaux multiplexes. |
| |
| Les signaux multiplexes delivres sur le bus MA8-MA0 repondent au |
| diagramme suivant: |
| |
| E=1 E=1 E=0 E=0 |
| C=1 C=0 C=1 C=0 |
| | | | / \ |
| V V V V V |
| MA0-7 => A0 RA15 T0 BE1 BE1 |
| MA1-8 => A1 MU8 T1 TU8 TU8 |
| MA2-9 => A2 A9 T2 T9 T9 |
| MA3-10 => A3 A10 T3 T10 T10 |
| MA4-11 => A4 A11 T4 T11 T11 |
| MA5-12 => A5 A12 T5 T12 T12 |
| MA6-13 => A6 RA13 T6 Q=0 Q=1 |
| MA7-14 => A7 RA14 T7 BE0 BE0 |
| MA8-15 => MU16 RA17 T8 0 0 |
| ligne colonne ligne col1 col2 |
| |
| |
| On voit apparaitre selon les commandes d'horloge interne: |
| Pour E=1 (phase active du CPU), |
| C=1 (adresses RAM ligne) => A7-A0 = adresses poids faible du CPU; |
| MU16 represente soit A8, soit les bits de commutation de |
| banques BC2 ou BD2. |
| |
| E=1 (phase active du CPU) |
| C=0 (adresses RAM colonnes) => A9-A12 = adresses poids fort du |
| cpu; RA13 = soit A13 soit le bit de forme; RA14 = soit A14 |
| soit les commutation de banques BC0 ou BD0; RA15 = les |
| commutations de banques BC1 ou BD1; MU8 = soit les bits de |
| commutation inverses; RA17 = les commutations de banques BC3 |
| ou BD3. |
| |
| E=0 (phase non active du CPU) |
| C=1 (adresses RAM lignes) => T0-T8 = adresses poids faible des |
| compteurs. |
| |
| E=0 (phase non active du CPU) |
| C=0 (adresses RAM colones) => T9-T12 = adresses poids fort des |
| compteurs; TU8 = soit T8 soit "0"; BE0, bE1; Q; "0"; |
| |
| On notera que pour la conditrion E=0, le systeme permet deux acces |
| RAM, valides par deux fronts descendants de CASN (cf. gestion des |
| memoires vices) avec RASN a l'etat 0. La difference d'adressage est |
| representee par l'etat de Q qui, compte tenu du timing (quadrature ave |
| E), delivre penant la condition presente l'etat 0 et l'etat 1. |
| |
| Q est en position de poids 13, ce qui represente un variation ou saut |
| d'adresse de 213 = 8Ko, les autres bits restants inchanges. Ainsi, |
| quelque soit l'adresse pointee, i lexiste systematiquement deux acces |
| dans deux pages de 8ko conjointes. CEs deux pages sont concretisees |
| par la RAMA et la RAMB. |
| |
| Cette procedure realise l'adressage automatique en mode page. On |
| notera aussi que les signaux du type MU, TU, RA representent des |
| choix de commande imposes par programmation dans le registre de |
| traitement afin de rendre compatible, comme nous l'avons precise |
| precedemment, le gate array avec le type de memoire dynamqie et le |
| micro-ordinateur choisis. |
| |
| BC, BD, BE et le bit de forme, quant a eux, sont des etats directement |
| programmables dans les registres de traitement, pour les commutations |
| de banque, voir de page. |
| |
| Ainsi: - BC3, BC2, BC1, BC0 fixent le choix d'une banque de 16Ko |
| parmi 16 banques, pour recouvrir l'espace "cartouche". |
| - BD3, BD2, BD1, BD0 fixent le choix d'une banque de 16Ko |
| parmi 16 banques pour recouvrir l'espace "donnees". |
| - BE1, BE0 fixent le choix d'une banque de 8ko parmi 4 |
| banques, pour recouvrir l'espace "ecran". |
| |
| Les registres de traitement |
| |
| En dehors de la gestion des memoires vives, ces circuits offrent, en |
| relation avec les horloges et les decodages d'adresses, des |
| possibilites multiples d'adaptaion et de changement de |
| caracteristiques selon les machines a concevoir, sans oublier pour |
| atant la compatibilite avec les anciennes versions. |
| |
| Ces registres sont accessibles a des adresses bien particulieres et |
| par la commande du microprocesseur R/WN. Les adresses sont |
| fondamentallement differente selon que le composant travaille avec une |
| unite centrale TO ou MO. La difference joue sur le digit hexadecimal |
| de poids fort. Ainsi |
| Digit de poids fort = A en version MO |
| Digit de poids fort = E en version TO |
| |
| /Description et programmation des registres accessibles en ecriture/ |
| |
| * Registre "systeme 1" - adresse A7E7/E7E7 |
| |
| Organisation: |
| D7 - bit de choix de l'utilisation du controleur de disque interne ou |
| externe. En mode TO uniquement, ce bit a une influence sur les |
| decodages d'adresses. |
| D7 = 0 => controleur interne |
| D7 = 1 => controleur externe. |
| D6 - bit de gestion RAM dans l'espace cartouche |
| D6 = 0 => mode compatible nanoreseau |
| D6 = 1 => gestion par registre interne "cartouche" A7E6/E7E6 |
| D5 - bit de standard d'affichage |
| D5 = 0 => 624 lignes (France) |
| D5 = 1 => 524 lignes (Export). |
| D4 - bit de gestion RAM dans l'espace "donnees". |
| D4 = 0 => gestion par bit de PIA (emulation) |
| D4 = 1 => gestion par registre interne: autorise l'ecriture |
| dans le registre "RAM donnees" en A7E5/E7E5. |
| D3 et D2 - bits de choix du type d'ordinateur. |
| D3=0 D2=0 => MO |
| D3=0 D2=1 => TO9 |
| D3=1 D2=1 => TO |
| D1 et D0 - bits de choix de la RAM dynamique |
| D1=0 D0=0 => 256K x 1bit |
| => 256K x 4bits |
| D1=1 D0=0 => 128K x 1bit |
| D1=1 D0=1 => 64K x 4bits |
| |
| * Registre "systeme 2" - adresse A7DD/E7DD |
| |
| Ce registre est une combinaison de l'electronique de traitement et du |
| registre definissant la couleur du tour ou du cadre dans le module |
| d'affichage. |
| |
| Organisation: |
| D7 et D6 - bits indiquants le numero de page physqiue a afficher sur |
| l'ecran (de 0 a 3 en binaire naturel). |
| D7 = BE1 \ |
| Avec > cf. diagramme precedent page 108 |
| D6 = BE0 / |
| D5 - bit pour masquer la cartouche, utilisable uniquement en mode MO. |
| D5 = 0 => cartouche visible |
| D5 = 1 => cartouche masquee. |
| D4 - bit du BASIC a selectionner, utilisable uniquement en mode MO. |
| D4 = 0 => BASIC 1 |
| D4 = 1 => BASIC 128 |
| D3, D2, D1, D0 - bits de la couleur du tour (cf. affichage). |
| |
| * Registre "RAM donnees" - adresse A7E5/E7E5 |
| |
| Ce registre n'est accessible en ecriture que si le bit D4 du registre |
| "systeme 1" est ecrit a 1. |
| |
| Organisation: |
| D7 - bit d'autorisation d'acces au registre d'affichage en A7DC/E7DC |
| en mode controleur de disque externe selectionne (D7 de A7E7/E7E7 |
| ecrit a 1) |
| D7 = 0 => ecriture autorisee |
| D7 = 1 => ecriture inhibee. |
| Le role de ce bit est du au fait d'un risque de conflit, a l'adresse |
| A7DC/E7DC, avec un eventuel controleur externe de QDD qui decode lui |
| aussi cet octet. |
| D6 = 0 |
| D5 = 0 |
| D4, D3, D2, D1, D0 - bits definissant le numero de page RAM utilisee |
| dans l'espace "RAM donnees" (de 0 a 31 en binaire naturel). |
| Avec: D4 = Commutaiton de CASN |
| D4 = 0 => CAS1N valide |
| D4 = 1 => CAS2N valide |
| D3 = BD3 \ |
| D2 = BD2 | |
| D1 = BD1 | cf. diagramme precedent, page 108 |
| D0 = BD0 / |
| |
| Ainsi en mode gestion de l'espace "RAM donnes", D4-D0 donne le numero |
| de page physique de 16Ko a affecter a l'espace logique. |
| |
| * Registre "cartouche" adresse A7E6/E7E6 |
| |
| Organisation |
| D7 = 0 |
| D6 - bit de protection en ecriture dans la page de RAM selectionne |
| lorsque l'espace carotuche est recouvert par cette meme page de RAM |
| (D5=1). |
| D6 = 0 => ecriture impossible |
| D6 = 1 => ecriture autorisee. |
| D5 - bit de selection de l'espace cartouche. |
| D5 = 0 => l'espace cartouche n'est pas recouvert par de la |
| RAM. |
| D5 = 1 => l'espace cartouche est recouvert par uen page de RAM |
| dont le numero est donne par D4-D0. |
| D4, D3, D2, D1, D0 - bits definissant le numero de page RAM utilisee |
| dans l'espace cartouche (de 0 a 31 en binaire naturel)/ |
| Avec: D4 = Commutation de CAS. |
| D4 = 0 => CAS1N valide |
| D4 = 1 => CAS2N valide. |
| D3 = BC3 \ |
| D2 = BC2 | |
| D1 = BC1 | cf. diagramme precedent, page 108 |
| D0 = BC0 / |
| Ainsi, en mode de gestion de l'espace cartouche, D4-D0 donne le numero |
| de page physique de 16Ko a affecter a l'espace logique correspondant. |
| |
| * Registres "d'emulation" |
| |
| Ces registres viennent remplacer, pour D4 du registre systeme 1 = 0, |
| l'action devolkue aux PIA (6846, 6821) des unites centrales TO7/70, |
| TO9, MO5, par la commutation du bit de forme et des banques. |
| Reagissant aux meme adresses, ils sont ainsi parfaitement transparents |
| pour l'utilisateur. Ils assurent une compatibilite totale dans |
| l'emploi des anciens logiciels. |
| |
| * Registre de commutation "lecture traitement/crayon optique" adresse |
| A7E4/E7E4 |
| |
| Ce registre est un peu particulier et ne rentre pas dan la categorie |
| des registres susnommes. Il est en effet destine selon l'ecriture du |
| bit D0 a aiguiller, pour des adresses semblables, la lecture de |
| certains registres de traitement ou des registres crayon optique |
| (latch). |
| Ainsi: |
| D0 = 0 => selection des registres de traitement (lecture) |
| D0 = 1 => selection des registres du crayon optique (lecture). |
| |
| /Description des registres accessibles en lecture pour D0=0 |
| (A7E4/E7E4)/ |
| |
| Excepte le registre "systeme 1", les registres de traitement, etudies |
| en ecriture sont lisibles en entier ou partiellement, a des adresses |
| differentes ou semblables. |
| |
| * Registre "systeme 2" - adresse A7E4/E7E4 |
| |
| Il Permet une relecture partielle du registre ecrit en A7DD/E7DD. |
| Organisation: |
| D7-D6 - bits indiquant le numero de page physique affiche sur |
| l'ecran (de 0 a 3 en binaire naturel). |
| D5 - bit de masquage cartouche en mode MO. |
| D4 - bit de selection du BASIC en mode MO. |
| Les bits d3, D2, D1, D0 sont a zero. |
| |
| * Registre "RAM donnees" - adresse A7E5/E7E5 |
| |
| Il permet la relecture du numero de la page RAM, impose en ecriture, |
| dans l'espace "donnees". |
| D7, D6, D5 sont a l'etat "0". |
| |
| * Registre "cartouche" - adresse A7E6/E7E6 |
| |
| C'est le seul registre permettant une relecture complete des bits |
| positionnes pendant la phase d'ecriture a la meme adresse A7E6/E7E6. |
| Il permet notamment la relecture du numero de page RAM, impose en |
| ecriture, dans l'espace cartouche. |
| |
| /Description des registres accessibles en lecture pour D0=1 |
| (A7E4/E7E4)/ |
| |
| Il s'agit de quatre registres semblables a ceux du gate array systeme |
| dans le TO9. |
| |
| |
| * Registre "crayon optique 1" - adresse A7E4/E7E4 |
| |
| Organisation |
| D7 = T12 \ |
| D6 = T11 | |
| D5 = T10 | |
| D4 = T9 | Avec T12-T5, 8 bits de poids fort du compteur trame. |
| D3 = T8 | |
| D2 = T7 | |
| D1 = D6 | |
| D0 = D5 / |
| |
| * Registre "crayon optique 2" - adresse A7E5/E7E5 |
| |
| Organisation |
| D7 = T4 \ |
| D6 = T3 | |
| D5 = T2 | Avec T4-T0, 5 bits de poids faible du compteur trame. |
| D4 = T1 | |
| D3 = T0 / |
| |
| D2 = E \ |
| D1 = H2 | Avec E-H4, bits du compteur point. |
| D0 = H4 / |
| |
| * Registre "crayon optique 3" - adresse A7E6/E7E6 |
| |
| Organisation |
| D7 - Bit significatif quand D6=0, c'est a dire, quand le spot est |
| situe dans les bords droits ou gauche de l'ecran. |
| D7 = 0 => spot situe dans la partie gauche du cadre |
| D7 = 1 => spot situe dans la partie droite du cadre. |
| D6 - Bit latche de situation fenetre cadre en ligne (INILN). |
| D6 = 0 => spot situe dans le cadre gauche ou a droite. |
| D6 = 1 => spot situe dans la partie horizontable de la fenetre |
| de travail. |
| Cette valeur est latchee au moment de l'interruption de lecture crayon |
| optique. |
| D5, D4, D3, D2, D1, D0 sont a l'etat "0". |
| |
| * Registre "crayon optique 4" - adresse A7E7/E7E7 |
| |
| Note: La lecture de ce registre est independante de l'etat du bit D0 |
| (A7E4/E7E4),ce qui le rend toujours accessible. |
| |
| Organisation: |
| D7 - bit instantane de situation fenetre cadre en trame (INITN) |
| D7 = 0 => spot situe dans le cadre en haut ou en bas. |
| D7 = 1 => spot situe dans la partie verticale de la fenetre de |
| travail. |
| D6 - bit latche de situation fenetre cadre en trame (INITN) |
| D6 = 0 => spot situe dans le cadre en haut ou en bas. |
| D6 = 1 => spot situe dans la partie verticale de la fenetre de |
| travail. |
| D5 - bit instantane de situation fenetre cadre en ligne (INILN) |
| D5 = 0 => spot situe dans le cadre a gaucge ou a droite |
| D5 = 1 => spot situe dans la partie horizontale de la fenetre |
| de travail. |
| D4, D3, D2 sont a l'etat "0". |
| D1 - bit de flag ou drapeau d'interruption de la demande FIRQN |
| D1 = 0 => pas de demande |
| D1 = 1 => une interruption a ete generee. |
| D0 - bit de recopie de D0 ecrit en A7E4/E7E4 permettant de savoir quel |
| type de registre est commute en lecture. CE bit est toujours |
| accessible. |
| D0 = 0 => registre de traitement |
| D0 = 1 => registre de crayon optique. |
| |
| 6. Le gate array "mode page" dans le TO8 |
| |
| Afin de procurer l'adaptation necessaire a l'unite centrale, certains |
| bits des registres de traitement "systeme 1" doivent etre verrouilles |
| dans un etat bien particulier. La description suivante met en relief |
| les bits necessairement "figes" pour la configuration TO8, par rapport |
| aux bits "X"commutables selon les fonctions ou standard a realiser. |
| |
| Organisation du registre de traitement "systeme 1" en ecriture - |
| adresse E7E7 |
| |
| X X X X 0 1 0 0 |
| \_______/ \_______/ |
| type RAM |
| d'ordinateur 256K x 1bit |
| |
| Ces conditions entrainent plus particulierement: |
| MU16 = A8 |
| MU8 = BC2, BD2 |
| TU8 = 0 |
| |
| Les autres registres gardent la structure telle qu'elle est decrite |
| dans le chapitre precedent, selon le repertoire suivant |
| Adresse R/W Type de registre |
| E7E4 0 commutation ou systeme 2 |
| E7E4 1 crayon optique 1 |
| E7E5 0 RAM donnees |
| E7E5 1 crayon optique 2 |
| E7E6 0 espace cartouche |
| E7E6 1 crayon optique 3 |
| E7E7 0 systeme 1 |
| E7E7 1 crayon optique 4 |
| E7DD 0 systeme 2 |
| E7DD 1 affichage |
| |
| Diagramme des signaux multiplexes |
| |
| Les conditions precedemment exposees determinent le diagramme suivant: |
| |
| A0 BC1,BD1 T0 BE1 BE1 |
| A1 BC2,BD2 T1 0 0 |
| A2 A9 T2 T9 T9 |
| A3 A10 T3 T10 T10 |
| A4 A11 T4 T11 T11 |
| A5 A12 T5 T12 T12 |
| A6 A13,forme T6 Q=0 Q=1 |
| A7 BC0,BD0 T7 BE0 BE0 |
| A8 BC3,BD3 T8 0 0 |
| Ligne Colonne Ligne Col.1 Col.2 |
| |
| Les elements de ce diagramme sont a considerer dans l'ordre des poids |
| respectifs selon la forme: |
| |
| Pour l'adressage CPU: |
| BC3 BC2 BC1 BC0 A13 A12 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 |
| BD3 BD2 BD1 BD0 F \___________________________________/ |
| \_____________/ | Adressage |
| Commutation des | |
| banques dans \ |
| l'espace \ |
| cartouche ou Commutation memoire ecran RAM, RAMB |
| donnees |
| |
| Il convient de rappeller que le bit D4 dans le registre "RAM |
| donnees" et dans le registre "espace cartouche", de par sa |
| position, joue indirectement le role d'un dix-neuvieme bit |
| d'adressage par le truchement de CAS1N et CAS2N. |
| |
| De par ce fait, on peut donc considerer que le systeme est |
| capable d'adresser un plan memoire de 512Ko contitue lui-meme |
| de deux plans memoire de 41256 (resident et extension) et dont |
| les adresses iraient de 00000 a 3FFFF pour D4=0, soit CAS1N=0 |
| et de 40000 a 7FFFF pour D4=1, soit CAS2N=0. |
| |
| Pour l'adressage de rafraichissement ou compteurs: |
| 0 0 BE1 BE0 Q T12 T11 T10 T9 T8 T7 T6 T5 T4 T3 T2 T1 T0 |
| \_____/ | \_______________________________________/ |
| Commutation | Adressage |
| des banques \ |
| dans l'espa \ |
| ce ecran. Commutation memoire ecran RAMA, RAMB |
| |
| Associtation entre adressage logique et adressage physique |
| |
| Pour des raisons de comptatibilites evidente, nous savons que |
| l'ensemble du systeme, vu du logiciel, conduit a la determination de |
| quatres espaces d'adressage logique distincts: |
| l'espace "cartouche" |
| l'espace "ecran" (page 0) |
| l'espace "systeme" (page 1 fixe) |
| l'espace "donnees" (page des banques) |
| De par la programmation du gate array et la trasnformation de |
| l'adressage resultant sur le bus multiplexe MA8-M10, une page |
| physique, c'est-a-dire 16Ko d'un plan memoire 41256, peut etre affecte |
| a un espace logique donne. Le comportement individuel de chacun des |
| espaces logiques est specifie dans ce qui suit (cf. figure 20 page |
| suivante). |
| |
| /Espace "cartouche"/ |
| |
| Cet espace situe etre 0000 et 3FFF contient normalement de la ROM sous |
| forme de memoire interne (BASIC 1, BASIC 512) ou de la memoire externe |
| (cartouche). Il est neanmoins possible d'affecter une page de memoire |
| vive a cet espace logique (recouvrement) en mettant el bit D5 du |
| registre gate array (E7E6) a l'etat 1. Dans ces conditions, CSCRTN |
| estdevalide et les 41256 recoivent CAS1N ou CAS2N. (cf. gestion de la |
| memoire morte, p96). |
| |
| La correspondance entre l'adressage CPU et l'adressage multiplexeest |
| immediate pour les bits A0 a A13. Elle se presente sous la forme |
| suivante: |
| Adressage logique CPU (16 bits) |
| _______________________________________________ |
| / \ |
| 0 0 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 |
| |
| BC3 BC2 BC1 BC0 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 |
| \___________________________________________________________/ |
| Adressage physique transforme (18bits) |
| |
| L'adressage transofrme permet un recouvrement par une des 16 pages |
| d'adresses de 00000 a 3FFFF pour CAS1N=0 du plan memoire resident et, |
| par 16 pages d'adresses de 00000 a 3FFFF pour CAS2N=0, du plant |
| memoire extension. |
| |
| /Espace "ecran"/ |
| |
| Cet espace, situe entre 4000 et 5FFF, contient deux banques de 8Ko |
| (RAMA ou memorie point, RAMB ou memoire couleur) utilisees par |
| l'automate pour synthetiser l'image affichee. Par defaut, c'est la |
| page 0 qui est affichee, mais il est possible de demander a l'automate |
| d'afficher les pages 1, 2 ou 3. |
| |
| Le principe est le suivant: |
| - Apres un RESET, une mise sous tension ou si les bits D7, D6 du |
| registre situe en E7DD sont tous les deux a 0, c'est la page phsyqieu |
| 0 qui ets affichee a l'ecran. La facon dont les donnees sont |
| interpretees par l'automate d'affichage depend alors du mode choisi. |
| |
| - En reprogrammant les bits D7 et D6 de E7DD, on peut afficher les |
| pages physique 1, 2 ou 3. Si ond emande l'affichage de la page 1, |
| c'ets le contenu de la RAM "systeme" qui apparaitra a l'ecran. Ce |
| contenu ayant peu d'interret, ce sont surtout les pages 2 et 3 qui |
| seront utilisables. |
| |
| - Lorsque le CPU accede a l'espace logique d'ecrean, c'est *toujours* |
| la page physique 0 qui ets adresse, meme si l'automate d'afffichage |
| utilise une autre page. Dans l'espage logique d'ecran, le CPU utilise |
| le bit "FORME" pour travailler dans la memoire RAMA (point) ou RAMB |
| (couleur), de par la programmation en emulation du bit D0 en E7C3. |
| |
| - Si le CPU veut acceder aux pages 2 et 3 en les considerant comme des |
| ecrans, il doit les affecter a son espace RAM "donnees" afin de |
| pouvoir les lire ou les ecrire. Dans ce cas, on doit considerer que la |
| memoire RAMA (point) se trouve aux adresses hautes de la page, tandis |
| que les adresses basses contiennent les infotrmations RAMB (couleurs); |
| en effet, le bit FORME traditionnel est inoperant dans l'espace |
| "donnees". |
| |
| - La page affichee par l'automate peut etre en meme temps affectee a |
| l'espace "donnees", voir a l'espace "cartouche". De par le principe |
| enonce, si on veut par exemple afficher la page 2, dans laquelle le |
| CPU puisse faire une mise a jour, il faudra necessairement affecter la |
| page 2 a l'espace RAM "donnees" qui sera consideree alors comme la |
| nouvelle memoire ecran; et demander a l'automate d'afficher la page 2, |
| en programmant les bits D7 D6 en E7DD respectivement a 1 et 0. |
| |
| /Espace "systeme"/ |
| |
| Cet espace logique situe entre 6000 et 9FFF contient les informations |
| vitaales a l'unite centrale, telle que la page 0 du moniteur. Cet |
| espace n'est pas reconfigurable, on dit qu'il est fixe. C'est la page |
| physique 1 du plan memoire 41256 qui y est constamment affecte. Aucun |
| registre ne permet de reprogrammer cet espace. |
| |
| /Espace "donnees"/ |
| |
| CEt espace est situe entre A000 et DFFF. Sur TO9 et sur TO7/70 cet |
| epsace etait gere en "bank switch" a l'aide des bits de PUA qui |
| permettaient de choisir une page physique de 16Ko parmi six. Toujours |
| pour des raisons de comaptibilite, cette technique est ici totalement |
| emulee par le gate array mode page. L'ecriture et la lecture des cinq |
| bits de PIA se font identiquement. Pour obtenir cette emulation, il |
| faut que le bit D4 du registre E7E7 soit mis a 0. Ceci est obtenu par |
| defaut au RESET et a la mise sous tension. |
| |
| Nous savons qu'un deuxiemme mode estdisponible en mettant a 1 le bit |
| D4 de E7E7. Dans ce mode, il suffit d'ecrire le numero (de 0 a 3&) de |
| la page physique souhaitee, par les bits d4-d0 du registre E7E5, pour |
| que la page concerneee soit affectee a l'espace "donnees". Ainsi la |
| gestion de la memoire s'en trouve simplifiee puisqu'une simple |
| ecriture de numero de page suffit a effectuer le recouvrement. La |
| correspondance entre l'adressage CPU et l'adressage multiplexe est |
| immediate pour les bits A0 a A13. Elle se presente sous la forme |
| suivante: |
| Adressage logique CPU (16 bits) |
| _______________________________________________ |
| / \ |
| 1 0 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 |
| 1 1 |
| |
| BD3 BD2 BD1 BD0 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 |
| \___________________________________________________________/ |
| Adressage physique transforme (18bits) |
| |
| Comme pour l'espace cartouche, l'adressage transforme permet le |
| recouvrement des deux pplans memoire de 256+256 = 512KO par |
| l'intermediaire du CAS1N et CAS2N e nrelation avec le bit D4. Il faut |
| noter cependant que de par la transposition schematisee ci-avant, i |
| lexistre une distorsion entre les deux adressages qui se manifestent |
| dans le champ A15-A12. Aisni, en prenant par exemple un recouvrement |
| par la page 2: |
| |
| BD3=0 BD2=0 BD1=1 BD0=0 |
| |
| la transposition devient: |
| |
| Adressage logique Adressage physique |
| A15 A14 A13 A12 ... BD1 BD0 A13 A12 ... |
| 1 0 1 0 ... 1 0 1 0 ... |
| 1 0 1 1 ... 1 0 1 1 ... |
| 1 1 0 0 ... 1 0 0 0 ... |
| 1 1 0 1 ... 1 0 0 1 ... |
| |
| On traduit ce phenomene par un decoupage en tranches de 4Ko, exprime |
| par le tableau suivant, selon la valeur de A13, A12: |
| |
| Adresse logique Adresse physique |
| A000-AFFF 3eme tranche de 4Ko |
| B000-BFFF 4eme tranche de 4Ko |
| C000-CFFF 1ere tranche de 4Ko |
| D000-DFFF 2eme tranche de 4Ko |
| |
| Cette transposition n'a pas d'importance tant que l'on ne transfere |
| pas d'information de l'espace "donnees" vers les autres espaces. Si on |
| epere des transferts, il faut alors tenir compte des correspondances. |
| |
| Par deduction, la correspondance entre l'espace "cartouche" et |
| l'espace "donnees" est la suivante: |
| |
| Espace "donnees" Espace "cartouche" |
| A000-AFFF 2000-2FFF |
| B000-BFFF 3000-3FFF |
| C000-CFFF 0000-0FFF |
| D000-DFFF 1000-1FFF |
| |
| De meme, la correspondance entre l'espace "donnees" et l'espace |
| "ecran" est telle que: |
| |
| Espace "donnees" Espace "ecran" |
| A000-BFFF RAMB |
| C000-DFFF RAMA |
| |
| La correspondance entre espace "cartouche" et espace "ecran" est donc |
| quant a elle: |
| |
| Espace "cartouche" Espace "ecran" |
| 0000-1FFF RAMA |
| 2000-3FFF RAMB |
| |
| On notera pour terminer que les six pages accessibles par bits PIA, |
| selon l'ancien mecanisme, correspondent aux pages 2 a 7 selon le |
| nouveau systeme. |
| |
| On en deduit: |
| Ancient systeme Nouveau systeme |
| de banque de banque |
| 0 2 |
| 1 3 |
| 2 4 |
| 3 5 |
| 4 6 |
| 5 7 |
| |
| Au RESET, la gestion par bit de PIA etant prise par defaut, c'est la |
| page physique 2 qui ets affectee a l'espace RAM "donnees". |
| |
| Gestion de l'affichage |
| |
| La procedure d'affichage sur l'ecrab est sensiblement identique a |
| celle du TO9 (cf. etude materielle du TO9, page 54). Le gate array |
| mode page integre la totalite de la circuiterie video capable de gere |
| les differents modes d'affichage connus sur le TO9. Il est prevu pour |
| piloter directement une palette externe. |
| |
| Selon les modes d'affichages, les couleuirs imposees en configuration |
| de base different de celle connues sur le TO9. Le bit S (saturation) |
| est notamment rempalce par le bit P (pastelà. |
| |
| En dehors du bit D5 du registre "systeme 1" en E7E7 qui permet de |
| definir le standard 624 lignes (systeme europeen) ou 524 lignes |
| (systeme NTSC), un registre special appele registre "affichage", situe |
| en E7DC, contient les bits de programmation essentiels de l'affichage. |
| |
| Ce registre d'affichage est identique a celui du tO9 (cf. systeme de |
| visualisation du TO9) et, de la meme maniere, permet de decider: |
| - du mode d'affichage |
| - de la frequence pixel |
| - de l'organisation relative des bits a l'interieurs des |
| donnees video extraite de la memoire. |
| |
| Cette procedure est recapituelee par le tableau suivant: |
| |
| Mode D7 D6 D5 D4 D3 D2 D1 D0 |
| 0 T1 T0 Ø1 Ø1 C B A |
| |
| TO7 0 0 0 0 0 0 0 0 |
| bitmap 4 0 0 1 0 0 0 0 1 |
| bitmap 4 special 0 1 0 0 0 0 0 1 |
| 80 colonnes 0 0 1 0 1 0 1 0 |
| bitmap 16 0 1 1 1 1 0 1 1 |
| page 1 0 0 1 0 0 1 0 0 |
| page 2 0 0 1 0 0 1 0 1 |
| surimpression 0 0 1 0 0 1 1 0 |
| triple sur impression 0 0 1 1 1 1 1 1 |
| \___/ \___/ \_______/ |
| organ. freq. mode |
| pixel |
| |
| La consultation de ce tableau permet de voir qu'il existe un neuvieme |
| mode d'affichage non utilise sur le TO9, *le mode bitmap 4 couleurs |
| special*. Le schema de codage est de transcodange en RAM est le |
| suivant: |
| |
| Mode bitmap 4 (rappel): |
| RAMA RAMB |
| C7 C6 C5 C4 C3 C2 C1 C0 C7 C6 C5 C4 C3 C2 C1 C0 |
| \_____________________/ \_____________________/ |
| definition du rouge R definition du vert V |
| |
| Apres transcodage (mode bitmap 4 special) |
| |
| C7 C6 C5 C4 C3 C2 C1 C0 C7 C6 C5 C4 C3 C2 C1 C0 |
| R V R V R V R V R V R V R V R V |
| |
| Dans ce type de codage, un point est presente par deux bits |
| consecutifs du meme octet. Cette organisation presente un interet pour |
| certaines routines graphiques; toutefois, ilfaut noter qu'elle n'est |
| pas employee par les routines du moniteur. (sam: hehe ce mode c'ets du |
| chunky sur 2 bits :))) |
| |
| Gestion des couleurs du cadre |
| |
| La couleur du tour de l'ecran est programmage directement par le |
| registre "systeme 2" en E7DD, par les bits D3 a D0, selon un |
| organisation semblable a celle du TO9, exception faite pour le bit S |
| (saturation) qui devient P (pastel). |
| |
| D3 D2 D1 D0 |
| P B V R |
| |
| Les decodages d'adresses |
| |
| Le gate array mode page genere directement un certain nombre de |
| signaux destines a selectionner les differents ROMS et peripheriques. |
| Ce sont: |
| CSMN = selection de l'espace moniteur |
| CSCRTN = selection de l'espace cartouche |
| CS32 = selection de 32 octets (FFD0-FFEF) |
| E7CXN = selection de la zone des 6821 et 6846 |
| CSPALN = selection de la palette |
| EXXXN = selection peripheriques externes |
| DISN = selection du controleur disque (E7D0 a E7D9) |
| |
| Les signaux CS32, E7CXN, CSPALN sont decodes par une simple logique |
| combinatoire et sont toujorus valides. Les autres signaux dependent de |
| la proigrammation de certains registres et leur comportement est |
| detaille ci-apres. |
| |
| /Selection de l'espace moniteur/ |
| |
| Le moniteur systeme du TO8 est situe de l'adresse E800 a FFFF. |
| L'espace utilise par le moniteur du drive (floppy ou QDD) est palce |
| de E000 a E7AF. Les deux moniteurs faisant partie integrante d'une |
| meme ROM, c'est le mem signal qui est valide sur l'ensemble: |
| |
| [E000-E7AF] U [E800-EFFF]. |
| |
| Pa railleurs, il est possible en programmant le bit D7 du registre |
| "systeme 1" en E7Z7 a l'etat 1, d'installer un controleur de memoire |
| de masse externe. Dans ce cas de figure; CSMN n'est plus valide de |
| E000 aE7AF. |
| |
| Il est a signaler que l'espace moniteur contient un "trou" de 32 |
| octets situe en FFD0 et FFEF qui sont reserves aux decodages |
| d'extention futures (role de CS32 en relation avec le connecter |
| d'extention). Dans cet espace, CSMN=1. (sam: tiens ce truc me fait |
| vaguement penser a l'espace autoconfig de 64Ko sur amiga en E9000). |
| |
| /Selection de l'espace cartouche CSRTN/ |
| |
| L'espace logique reserve aux logiciels externes (cartouche) ou interne |
| s'etend de 0000 a 3FFF. Il eput etre recouvert par de la RAM en |
| positionnant le bit D5 duregistre "espace cartouche" a l'etat 1. Dans |
| ce cas, CSRTN qui est normallement valide passe a l'etat 1, supprimant |
| par la-meme, toute communication avec les ROMS. |
| |
| /Selection de la zone des peripheriques externes EXXXN/ |
| |
| Le signal EXXXN sort du gate arrau "mode page" pour aller vers les |
| connecteurs d'extenssions de l'unite centrale ou il est utilise par |
| les peripheriques pour leur decodage. |
| |
| Il permet, entre autre, d'effecture un predecodage d'adresses dans le |
| cas ou l'utilsiateur desire se fabriquer sa propre extension. Ce |
| dernier devra lors imperativement loger son interface dans l'espace |
| memoire E7B0 a E7BF. |
| |
| Comme dans le TO8, un bon nombre d'adresses correspondant a la zone |
| EXXX sont deja exploitees, il faut donc dque le signal correspondant |
| soit non valide quand il y a risque de conflit entre un peripherique |
| exterieur et l'unite centrale. |
| |
| Les possibilites de conflit different selon l'utilisation ou non d'un |
| controleur externe. |
| |
| En utilisation normale (D7 du registe "systeme 1"=0), EXXXN est |
| invalide sur l'ensemble [E000-E7AF] U [E7D0-E7D9]. |
| |
| En utilisation d'uncontroleur externe (D7=1), EXXXN reste valide a ces |
| endroits. |
| |
| De meme, une souplesse de programmation est laissee pour l'octet E7DC |
| qui peut etre a la fois employe en temps que registre d'affichage ou |
| par un controleur externe QDD. |
| |
| Si le bit D7 du registre "donnees" en E7E5 est ecrit a 0, alors EXXXN |
| n'est pas valide a l'adresse E7DC; sinon EXXXN reste valide a |
| l'adresse E7DC mais on ne peut plus acceder au registre d'affichage. |
| |
| L'ensemble des adresses [E7DA-E7Db] U [E7DD-E7DF] invalide toujours le |
| signal EXXXN car elles correpondent a la palette et certains registes |
| proteges. |
| |
| /Selection du controleur du DRIVE DISN/ |
| |
| Ce signal n'est valide sur [E7D0-E7D9] que si le bit D7 du registre |
| "systeme 1" (E7E7)=0,determiannt alors l'utilisation du controleur |
| interne. |
| |
| /Tableau recapitulatif/ |
| |
| Avec D77 bit du registre "systeme 1" en E7E7 pour le controleur |
| externe, D75 bit du registre "RAM donnees" en E7E5 pour le choix d'un |
| QDD. |
| |
| D77 = 0 D77 = 1 |
| D75 = 0 D75 = 0 D75 = 2 |
| |
| Espace CSMN EXXXN DISN CSMN EXXXN DS1N EXXXN |
| E000-E7AF 0 1 1 1 0 1 0 |
| E7B0-E7CF 1 0 1 1 0 1 0 |
| E7D0-E7D9 1 1 0 1 0 1 0 |
| E7DA-E7DB 1 1 1 1 1 1 1 |
| E7DC 1 1 1 1 1 1 0 |
| E7DD-E7DF 1 1 1 1 1 1 1 |
| E7E0-E7FF 1 0 1 1 0 1 0 |
| E800-EFFF 0 1 1 0 1 1 1 |
| QDD |
| \_______________/ \_______________________/ |
| controleur interne controleur externe |
| |
| Gestion du Crayon optique |
| |
| Le fonctionnement de l'interupteur du crayon optique est assure de la |
| meme maniere que sur le TO9 (cf. gestion du crayon optique, page 82). |
| |
| Pour la gestion du photo-transitor, via un circuit a miroir de |
| courant, ler signal CKLPN est recupere par le gate array mode page qui |
| integre la demande d'interuption FIRQN etablie anciennement apr le |
| 6821 dans le TO9. En dehors de cette particularie, le fonctionnement |
| reste pratiquement semblable et le gate array mode page offre, comme |
| son successeur la possibilite de faire des mesures avec la resolution |
| du point. |
| |
| Nous savons que quatre registres permettent de lire les infotrmation |
| afferentes a une mesure light-pen; ce sont: |
| E7E4 - registre crayon optique 1 |
| E7E5 - registre crayon optique 2 |
| E7E6 - registre crayon optique 3 |
| E7E7 - registre crayon optique 4 |
| |
| En ecrivant le bit D0 de E7E4 a 1, on s eprepare a pouvoir lire ces |
| registres et, par la meme occasion, on aurotise le passage du signal |
| arrivant du crayoin optique lui-meme vers la sortie ITLP du gate array |
| relie a l'entree FIRQN du CPU. On "arme" donc la routine light-pen en |
| rendant le CPU interruptible par les signaux de mesure en provenance |
| du crayon optique. L'arrivee d'une impulsion de mesure CKLPN provoque |
| une FIRQN sur le CPU et latche le contenu du compteur 16 bits |
| assiocie. La valeur du compteur designe alors le pixel "vu" par le |
| crayon optique. Le CPU peut alors lire le contenu de ce compteur par |
| le registre E7E4 et E7E5. |
| - E7E4 donne les 8 bits de poids fort: |
| T12 T11 T10 T9 T8 T7 T6 T5 |
| - E7E5 donne les 8 bits de poids faible |
| T4 T3 T2 T1 T0 E H2 H4 |
| |
| Les 3 bits E, H2, H4 issus d'uncomptage a 8Mhz donnent une resoltuion |
| du pixel dans les modes 320x200 et d'un pixel sur 2 en mode 80 |
| colonnes (hehe il voit myope le lightpen en 80 cols :). D'autres |
| informations completant la levcture de ces compteurs sont disponibles |
| dans les deux autres registres (cf. DEscription des registres |
| accessibles en lecture pour D=0, page 114). |
| |
| Au moment de l'arrivee de CLKLPN, un drapeau d'interruption est leve |
| dans le bit D1 du registe E7E7. Ceci permet de verifier que |
| l'interruption FIRQN a bien ete causee par le crayon optique. |
| |
| La lecture des poids faibles du compteur light-pen (E7E5) a pour effet |
| de relacher la ligne FIRQN et d'abaisser le drapeau d'interruption |
| dans le registe E7E7. Des que cette lecture est effectuee, le gate |
| array est donc pret a effecture une autre mesure. |
| |
| L'organisation du gate array mode page permet donc d'implementer une |
| routine de mesure du crayon optique similaire a celle qui existe sur |
| le TO9 (cf .etude materielle du TO9, gestion du crayon optique, page |
| 82). |
| |
| 7. Chaine de visualisation |
| |
| Le gate array "mode page" genere les informations R, V, B, P et HP |
| necessaires au circuit de palette IGV EF 9369 d'une facon parfaitement |
| identique au TO9 (cf. Le systeme de visualisation du TO9, page 52). Ce |
| circuit remplit bien evidemment les memes fonctions (choix de 16 |
| teintes parmi 4096, choix de la couleur d'incrustation) et se |
| programme de la meme maniere. |
| |
| Les trois sorties analogiques R, V, B attaquent, d'une facon toujours |
| identique au TO9, la prise peritel a travers un circuit d'adaptaion et |
| un melangeur recevant le signal SYNLT pour reconstituer uen video |
| composite. |
| |
| Les trois sorties sont derivees vers un adaptateur pour un eventuel |
| modulateur PAL (version EXPORT). |
| |
| Le circuit d'incrustation, bien que semblable a celui du TO9 dans son |
| principe (cf. Circuit d'incrustation du TO9, pahe 71) differe par sa |
| conception. En effet, la gate array "mode page" possede une entree |
| speciale (16Mhz VCO) de remise en phase, ce qui, en demande |
| d'incrustation, ne necessite pas une decommutation de l'horloge mere. |
| |
| La figure 21 concretise le fonctionnement general du dispositif. |
| |
| Ainsi en fonctionnement normal (apres mise sous tension ou RESET) le |
| bit CB2 du PIA systeme est a l'etat 1. Le transitor T14 est sature et |
| le transistor TO6 est bloque. Le 12V apparait en commande de |
| commutation lente et force par la diode D4 et la conduction du |
| transistor TO5 la commande de commutation rapide. Le bit marqueur en |
| provenance du circuit palette est inoperant, la diode D7 etant |
| bloquee. |
| |
| En fonctionnement incruste, apres mise a l'etat 0 de CB2 par |
| programmation, le transitor T14 est bloque, entrainant la saturation |
| du transitor TO6. La commande de commutation lente devient active |
| (0V). Le bit marqueur, protege par la diode D4 constamment bloquee, |
| devient maitre d'oeuvre pour envoyer la commande de commutation rapide |
| a travers TO5, selon la procedure connue sur le TO9: |
| _ |
| couleur hors incrustation ==> M = 1 --> commutation rapide |
| _ |
| couleur d'incrustation ==> M = 0 --> pas de commutation |
| rapide |
| |
| Le boitier d'incrustation branche, le gate array recoit la commande de |
| remise en pahse ligne par l'intermediaire du 16Mhz VCO. Il recoit la |
| commande de remise a l'heure trame par l'intermediaire de CLRG. |
| |
| |
| 8. Les interfaces |
| |
| Le tO8 comprend quatre circuits d'interface pour gerer ses divers |
| peripheriques (un 6846, deux 6821, un 6804). Certains bits restent |
| compatibles pour le TO9, ce qui est mis en evidence dans la |
| description suivante. |
| |
| L'interface 6846 |
| |
| /Partie ROM/ |
| |
| Comme pour le TO9, la partie memoire morte de ce boitier complexe |
| n'est pas utilise (adressage sur 4bits de A0 a A3). |
| |
| /Partie PIA/ |
| |
| Le port 8 bits a, par initialisation, trois lignes P2, P4, P5 |
| configurees en sortie et trois autres lignes P1, P6, P7 en entree. Le |
| bit P0, bien que configure en sortie, n'est pas utilise materiellement |
| (broche non connectee). En fait, l'action de ce bit est emulee dans le |
| gate array "mode page" (cf. Le gate array mode page) CF 7021, page |
| 105) pour la commutation du bit forme. |
| |
| - Le bit P1 comme pour le TO9, assure la lecture de l'etat de |
| l'interrupteur du crayon optique (0 ==> interrupteur ouvert, |
| 1 ==> interrupteur ferme). |
| |
| - Le bit P2, incompatible sur le TO9, commande la communtation |
| cartouche/logiciels internes (cf. selection entrelogiciels |
| residents et cartouche, page 98). |
| |
| - Le bit P3 n'est pas utilise (ancienne commande LED clavier |
| TO7, TO7/70). |
| |
| - Le bit P4, incompatible sur le TO9, determine la selection |
| de page moniteur (cf. selection d'une page moniteur, page 98 |
| avec: |
| 0 ==> partie basse |
| 1 ==> partie haute |
| |
| - le bit P5, incompatible TO9, envoie le signal ACK |
| (acknoledge-accuse de reception), en retour d'un communication |
| du clavier (cf. Le 6804, page 138). |
| |
| - Le bit P6, incompatible TO9, recoit l'information BUSY |
| (indicateur d'occupation) de l'imprimante CENTRONICS avec: |
| 0 ==> imprimante occupee |
| 1 ==> imprimante disponible |
| |
| - Le bit P7 receptionne, comme pour le TO9, les informations |
| numeriques decodees en lecture du LEP. |
| |
| Les lignes de controles, incompatibles avec celles du TO9, assurent |
| pour: |
| - CP1: la reception des donnees en transmission serie, |
| priovenant du clavier via le 6804. Chaque bit est code selon |
| une temporisation recuperee en demande IRQN parle 6809E (cf. |
| fonctionnement du 6804). |
| |
| - CP2: initialise en sortie, envoie la commande "MUTE" |
| procurant un blocage du son (action sur un transistor du |
| melangeur) lorsque l'utilisateur manipule la souris: |
| 0 ==> passage du son |
| 1 ==> blocage du son |
| |
| |
| /Partie TIMER/ |
| |
| D'une facon identique au TO9, la sortie CT0 genere l'ecriture |
| cassette. |
| |
| /Adresses des registres internes/ |
| E7C0 - register d'etat composite |
| E7C1 - registre de controle peripherique |
| E7C2 - registre de direction de donnees |
| E7C3 - registre de donnees peripheriques |
| E7C4 - registre d'etat composite |
| E7C5 - registre controle temporisation |
| E7C6 - registre temporisation |
| |
| Le 6821 systeme |
| |
| A l'exception de CB1 recevant par la broche 5 du connecteur crayon |
| optique, une eventuelle demande en code barre, et des bits PB7,PB6, |
| PB5, PB4, PB3 de commutation banque RAM sur le TO9, dont l'action est |
| ici parfaitement emulee par le gate array "mode page" (les broches |
| sont "ent l'air"), le composant joue le meme role que dans l'unite |
| centrale TO9 (cf. Utilisation du 6821 dans le TO9, pages 75). |
| |
| /Adresses des registres internes/ |
| E7C8 - registre de direction de donnee ou registe de donnees |
| partie A |
| E7C9 - registre de direction de donnee ou registe de donnees |
| partie B |
| E7CA - registre de controle partie A |
| E7CB - registre de controle partie B |
| |
| Le 6821 jeux et musique |
| |
| Ce boitier a, de par l'initialisation, toutes ses lignes en entree. La |
| quasi-totalite des lignes assume l'exploitation des manettes de jeux |
| ou de la souris. Lorsque l'unite centrale doit emmetre un message |
| sonore, six bits du port B sont alors commutes en sortie pour |
| attaquer, apres bufferisation, un convertisseur numerique analogique |
| du type CNA R/2R dont la sortie est reliee au melangeur recevant par |
| ailleurs une eveluelle information audio, apres lecture du LEP. |
| |
| /Description des broches/ |
| |
| - Port A |
| Quatre lignes sont cosacrees a la manette de jeux "0" ou a la |
| souris, par l'intermediaire du connecteur B12 (prise avant) |
| avec: |
| PA0 contact nord ou gachette 1 |
| PA1 contact sud ou gachette 2 |
| PA2 contact ouest ou XB |
| PA3 contact est ou YB |
| |
| Les quatres autres lignes sont consacrees a la manette de jeux |
| "1" par l'intermediaire du conencteur B14 (prise arriere) |
| avec: |
| PA4 contact nord |
| PA5 contact sur |
| PA6 contact ouest |
| PA7 contact est |
| |
| - Port B |
| Chaque ligne a un role complexe: |
| PB0 commun bufferise pour la manette de jeux "0" |
| ou bit 0 configure en sortie pour le CNA. |
| PB1 commun bufferise pour la manette de jeux "1" |
| ou bit 1 configure en sortie pour le CNA. |
| PB2 bouton d'action B de la manette de jeux "0" ou |
| XA de la souris ou bit 2 configure en sortie |
| pour le CNA. |
| PB3 bouton d'action B de la manette de jeux "1" ou |
| bit 3 configure en sortie pour le CNA. |
| PB4 bit 4 configure en sortie pour le CNA. |
| PB5 bit 5 configure en sortie pour le CNA. |
| PB6 bouton d'action A de la manette de jeux "0" ou |
| YA souris. |
| PB7 bouton d'action A de la manette de jeux "1". |
| |
| Les lignes de controel CA1, CA2, CB1, CB2 peuvent etre utilisees |
| conjointement en demande IRQN pour les boutons d'action ou la souris |
| selon: |
| CA1 bouton d'action B pour la manette "0" |
| CA2 bouton d'action A pour la manette "0" |
| CB2 bouton d'action A pour la manette "1" |
| CB1 bouton d'action B pour la manette "1". |
| |
| De par l'emploi des memes connections pour l'elaboration du son et |
| pour l'utilisation de la souris, il est necessaire, pour ne pas etre |
| gene par un bruit parasite a chaque manipulation, de bloquer la sortie |
| son. Cela est realise par le bit CP2 du PIA 6846 (0 sortie son |
| validee, 1 sortie sont invalidee) qui vient agir sur le melangeur |
| |
| /Adresses des registres internes/ |
| |
| E7CC - registre de direction de donnees ou registre de donnees |
| partie A |
| E7CD - registre de direction de donnees ou registre de donnees |
| partie B |
| E7CE - registre de controle partie A |
| E7CF - registre de controle partie B. |
| |
| Le 6804 |
| |
| Le MONOCHIP 6804 a poru tache l'interfacage et le traitement du |
| clavier en relation avec le 6846 et le 6821 systeme. |
| |
| /Interfacage du clavier/ |
| |
| La figure 25 montre les interconnexions entre la matrice 10 x 8 du |
| clavier et les ports A, B et C du 6804. Ce dernier est pilote par |
| unquartz a la frequence de 11Mhz. |
| |
| /Fonctionnement/ |
| |
| Comme pour le TO9, c'est el clavier qui indique au 6809E qu'une touche |
| vient d'etre appuyee. La transmission est realisee par un dialogue |
| entre les deux microporcesseurs via trois bit de PIA: |
| - CP1 du 6846, pour les donnees a transmettre |
| - P5 du 6846, pour la reconnaissance d'une touche du clavier |
| (ACK), |
| - PA0 du 6821 systeme pour la reconnaissance du peripherique |
| (KTEST). |
| |
| * Emission d'une donnee par le microprocesseur "clavier": |
| Les donnees emises par le microprocesseur "clavier" se |
| composent de 9 bits: |
| 1er bit: touche CNT enfoncee --> 1 |
| touche CNT libre --> 0 |
| 2eme bit: touche SHIFT enfoncee |
| ou CAPS LOCK actionne --> 1 |
| touche SHIFT libre et |
| CAPS LOCK non actionne --> 0 |
| 7 bits suivants: |
| Numero de la touche 0 a 79 |
| (contrairement au TO9 et TO9+, ce |
| n'est pas le code ASCII de la touche |
| qui est envoye, mais seulement le |
| numero de la touche, le transcodage |
| numero -> code ASCII etant a la charge |
| dur 6809E). |
| |
| Correlativement avec KTEST, pour prevenir le 6809E qu'il va recevoir |
| une information clavier, le 6804 descend le bit PC3 a 0, ce qui |
| provoque une interruption par le bit CP1 du 6846. Il attend ensuite |
| que le 6809 descende le fil P5 du 6846 a 0, lui ondiquant qu'il est |
| pret a recevoir les 9bits de donnees (signal ACK). |
| |
| Les informations series transmises repondent a la convention suivante: |
| - un 1 logique est ocde comme etant une impulsion positive de |
| 56 microsecondes. |
| - un 0 logique est code comme etant une impulsion positive de |
| 38 microsecondes. (sam: oula ca doit etre complexe a emuler |
| ca). |
| |
| Dans l'exemple de la figure 25, la touche CNT est enfoncee en meme |
| temps que la touche "U"du clavier "metropole" dont le code est 32 en |
| hexadecimal. |
| |
| * Emission d'une requete au clavier par le 6809E: |
| |
| Le 6809 peut emettre 3 requetes differentes au 6804: |
| Initialisation: Le 6804 renvoie alors au 6809E, un code |
| indiquant que le clacier est configure en |
| version Francaise ou Export. Le clavier se met |
| en CAPS LOCK actif - LED allumee. |
| |
| Majuscule: Le clavier se met en CAPS LOCK actif - LED |
| allumee. |
| |
| Minuscule: Le clavier s emet alors en CAPS LOCK inactif - |
| LED eteinte. |
| |
| Quand le 6809E souhaite emettre une requete, il met P5 a 0 et attend |
| que le 6804 descende le fil PC3a 0, le 6804 compte alors le temps |
| pendant lequel P5 reste a 0. Le 6809E peut donc gerer tois |
| temporsations differentes correspondant aux trois requetes possibles: |
| - 0.67 millisecondes --> demande d'initialisation du 6809E |
| - 1.30 millisecondes --> mise en CAPS LOCK actif |
| - 1.90 millisecondes --> mise en CAPS LOCK inactif. |
| (sam: ca non plus ca ne doit pas etre facile a emuler!). |
| |
| 9. Le controleur de l'unite de disquette |
| |
| Le controleur de drive du TO8 est un nouveau boitier gate array THMFC1 |
| developpe par THOMSON Micro-Informatique, pour repondre aux besoins |
| des nouvelles machines. Il presente, nottamment, une adaptabilite aux |
| differents formats d'enregistrement des donnees (codage FM et MFM) et |
| a la gestion des floppies 3"5, 5"25 ou d'un QDD (Quick Disk Drive). |
| |
| Il peut commander deux unites de disquettes a la fois. D'un point de |
| vueexterne, le THMFC1 s'apparente au WD 2793 ou WD 1770 utilises sur |
| le TO9. En interne, il se distingue par l'emploi d'un separateur de |
| donnees utilisant la technique de comptage a la place d'un circuit a |
| verrouillage de phase (PLL). De meme, il integre une registre du choix |
| de codage simple ou double densite (FM, MFM). |
| |
| Branchement du THMFC1 |
| |
| En liaison directe avec le bus du 6809E (figure 26), le controleur est |
| connecte au bus d'adresses par les trois lignes A2, A1, A0. Ces trois |
| bits, en relation avec le decodage d'adresse DISN (actif pour E=1) |
| dans l'espace E7D0 a E7D9, et en relation avec la commande R/WN |
| (retardee en lecture), permettent la selection des onze registres dont |
| dispose le composant. |
| |
| La figure 26 decrit les differentes commandes concernant les unites de |
| disquettes. |
| |
| On distingue: |
| - La commande MO du moteur de drive (non utilisee pour le QDD). Elle |
| est en liaison avec la selection du controleur qui, via un monostable |
| redeclenchable, avec une constante de temps de plusieurs secondezs, |
| integre les demandes d'acces et procure une inerie suffisante du |
| moteur adaptee pour le bon fonctionnement du mecanisme. |
| |
| - READY est une information en retour de la mecanique confirmant |
| l'insertion de la disquette, la mise en route du moteur, la frequence |
| d'index correcte. Cette commande permet de valider, dans le |
| controleur, les actions de lecture et d'ecriture. |
| |
| Des commandes bufferisees par un 74LS07 delivent: |
| - Les ignaux de commande mecanique du drive: |
| STEPN Pour deplacer la tete de lecture/ecriture d'un pas. |
| Cette commande est inutilisee dans un QDD. |
| DIRN Pour indiquer a la mecanique dans quel sens deplacer |
| la tete (0 vers le centre, 1 vers l'exterieur). |
| WGN Le signal d'autorisation d'ecriture. |
| WDN Flot de donnees series d'ecriture de la disquette. |
| DS0N DS1N |
| Les signaux de choix du drive. |
| |
| - Le signal SIDEN bufferise par un transistor indique a la mecanique |
| sur quelle face de la disquette travailler (0 face superieure, 1 face |
| inferieure). Pour le QDD, cette commande concerne l'alimentation du |
| moteur. |
| |
| Quatre signaux d'entree informe le controleur: |
| |
| IPN Indique le passage du repere d'index (une impulsion negative |
| par tour de disquette). Dans le QDD, ce bit indique la |
| presence ou l'absence de disquette (1=disquette presente). |
| |
| TROON Indique que la tete de lecture/ecriture est positionnee sur la |
| piste 0. Avec le QDD, ce bit est envoye constamment a l'etat |
| 0, ce qui permet au THMFC1 de "savoir" quel type de machine il |
| doit controler. |
| |
| WPRTN Indique que la disquette inseree dans la mecanique est |
| protegee en ecriture. |
| |
| RDN Flot de donnees lues sur la disquette. |
| |
| Descritption et programmation des registres |
| |
| * Registre CMD0 en ecriture a E7D0 |
| |
| bit 7 = 0 |
| bit 6 = 0 |
| bit 5 = 0 => MFM |
| = 1 => FM |
| bit 4 = 1 => validation de la detection des mots de synchro |
| bit 3 = 0 => inhibition de la synchronisation du separateur de |
| donnees pour le formatage. |
| bit 2 = 1 => active la sortie WGN |
| bit 1 \ |
| bit 0 / => code operation |
| 0 0 reset |
| 0 1 ecriture secteur |
| 1 0 lecture adresse |
| 1 1 lecture secteur |
| |
| * Registre CMD1 en ecriture a E7D1 |
| |
| bit 7 => bit de compatibilite |
| bit 6 \ |
| bit 5 / => longeur du secteur |
| 0 0 128 mots/secteur |
| 0 1 256 mots/secteur |
| 1 0 512 mots/secteur |
| 1 1 1024 mots/secteur |
| bit 4 = 0 => face 0 du disque |
| = 1 => face 1 du disque |
| bit 3,2,1 => commande de precompenssation a 437.5ns par pas de |
| 62.5ns. |
| bit 0 = 1 => inhibition du systeme, lorsque le signal READY est |
| inactif (bit a 1). |
| |
| * REgistre CMD2 en ecriture a E7D2 |
| |
| Registre de commande, il a des fonctions differentes selon le drive |
| utilise: Floppy ou QDD. |
| |
| bit 7 => non utilise |
| bit 6 = 0 => face 0 du floppy (commande active du moteur QDD). |
| = 1 => fonctions inverses. |
| bit 5 = 0 => commande de direction vers l'exterieur (piste 0) du |
| disque. |
| = 1 => fonction inverse |
| (non utilise pour le QDD). |
| bit 4 = 0 => commande de pas inactivee pour le floppy. |
| = 1 => active |
| (non utilise pour le QDD). |
| bit 3 => non utilise |
| bit 2 = 0 => commande moteur inactive pour le floppy |
| = 1 => active |
| (non utilise pour le QDD). |
| bit 1 => commandes de selection de drive (floppy et QDD) |
| bit 0 actives a l'etat 1 |
| |
| * Registre d'etat STAT0 en lecture a E7D0 |
| |
| bit 7 => image de l'horloge caractere |
| = 1 => demande d'operation |
| = 0 => par lecture ou ecriture des registres RDATA ou |
| WDATA. |
| bit 6 = 0 |
| bit 5 = 0 |
| bit 4 = 1 => indication que l'operation se termine |
| bit 3 = 1 => indication que l'operation est terminee. |
| bit 2 = 1 => erreur de CRC (checksum de la zone d'identification |
| de donnees). |
| bit 1 => action identique au bit 7 pour les operations dites |
| intelligentes. |
| bit 0 = 1 => indique le bon resultat d'une detection synchro. |
| |
| * Registre d'etat STAT1 en lecture a E7D1 |
| |
| Ce registre contient des informations differentes selon le drive |
| utilise. |
| |
| bit 7 = 0 |
| bit 6 = 1 => detection d'index pour le floppy |
| (presence de disquette pour le QDD) |
| bit 5 = 1 => information de changement de disquette non utilise |
| pour le QDD. |
| bit 4 => image inverse de la commande moteur MO |
| bit 3 = 1 => detection de la piste 0 pour le floppy |
| (information de detection d'un QDD). |
| bit 2 = 1 => information de protection en ecriture sur le floppy |
| et le QDD. |
| bit 1 = 1 => information "ready" en provenance du floppy ou du |
| QDD. |
| bit 0 => non utilise. |
| |
| * Registre de donnees WDATA, RDATA enecriture ou lecture a E7D3. |
| |
| Ces registres 8 bits ont le role traditionnel de tampon. |
| |
| * Registre d'horloge type en ecriture a E7D4 |
| |
| Ce registre 8 bits contient la configuration (FF) pour les donnees et |
| (0A) pour les mots de synchro. |
| |
| * Registre WSECT en ecriture a E7D5. |
| |
| Comporte le numero de secteur a chercher. Le controleur se charge de |
| comparer les informations ecrites dans ce registre avec celles |
| presentes sur la disquette dans la zone d'identification. |
| |
| * Registre piste WTRCK en ecriture a E7D6. |
| |
| Meme gestion que pour le registre secteur. |
| |
| * Registre largeuyr de cellule WCELL en ecriture a E7D7 |
| |
| bit 7 = 0 => modification des caracteristiques du separateur de |
| donnees (pour pistes interieurs de la disquette. |
| Precompensation). |
| = 1 => fonctionnement normal du separateur. |
| bit 6-0 => valeur permettant de charger le compteur du |
| separateur selon le mode de codage utilise. |
| |
| Specification d'un secteur |
| |
| Un secteur est compose d'un champ d'identification et d'un champ de |
| donnees selon le modele: |
| |
| Nombre d'octets Caracteres Designation |
| / 12 0 0 synchro bit |
| | 3 A1 horloge 0A synchro caractere |
| | 1 F E adresse debut identif. |
| Champ | 1 numero de piste |
| d'identif- | 1 numero de face |
| ication | 1 numero de secteur |
| | 1 longeur secteur |
| | 2 controle CRC |
| \ 22 espaces |
| |
| / 12 0 0 synchro bit |
| | 3 A1 horloge 0A synchro caractere |
| Champ de | 1 F B adresse debut donnee |
| donnees | selon long. de secteur donnees |
| | 2 controle CRC |
| \ 1 inhibition porte ecrit. |
| variable selon le drive espace |
| |
| Les fonctions "intelligentes" du comtroleur consistent a lire une |
| adresse, un secteur ou ecrire un secteur. Elles sont programmees par |
| les bits 1 et 0 du registre CMD0. Chaque fonction doit permettre |
| l'acquittement d'une serie d'operations repondant aux specifications |
| decrites ci-avant. |
| |
| ------------------------------------------------------------------------------ |
| |
| QUATRIEME PARTIE - Analyse materielle du TO9+ |
| |
| 1. Conception generale - Description |
| |
| Le TO9+ etant la symbiose du TO9 et du TO8, nous faisons references |
| tout au long de cette partie a des similitudes de structure et de |
| fonctionnement. Nous invitons le lecteur a se reporter, pour plus de |
| details, aux chapitres concernant les produits cites en comparaison. |
| |
| Comme le TO9, le micro-ordinateur TO9+ est architecture autour du |
| 6809E, microprrocesseur commande a la frequence de 1MHz par deux |
| horloges exterieurs en quadrature: E et Q. |
| |
| Les bus d'adresses 16bits est direct pour la cartouche et le gate |
| array mode page. Il est bufferise par 2 x 74LS224 pour adjoindre les |
| autres composants. |
| |
| Le bus de donnees 8 bits comporte deux derivations bufferisees et |
| controlees par deux 74LS245. Les informations sont alors aiguillees, |
| selon leur destination, sur le *bus de donnees RAMS* ou sur le bus de |
| donnees afferent aux principaux composants de l'unite. En dehors de |
| l'aiguillage RAM, ce principe permet de "delester" le 6809, compte |
| tenu des nombreux circuits a alimenter. |
| |
| Le bus de donnees RAM assure, plus particulierement en mode page, les |
| transferts d'information entre les RAMS et le gate array. |
| |
| Comme pour le TO9, les lignes de controle du 6809E correspondent: |
| - aux commandes de lecture ecriture R/WN des differents |
| registres et memoires. |
| - aux demandes d'interruption IRQN concernant la gestion du |
| clavier, le clignotement du curseur, les manettes de jeux et |
| la souris. |
| - aux demandes d'interruptions FIRQN pour le fonctionnement du |
| crayon optique et du code barre. |
| |
| Un circuit de renitialisation "RESET" est en relation avec le 6809E et |
| les PIA. |
| |
| D'une maniere identique au TO8, la memoire comporte: |
| - Deux pages de 6Ko du moniteur ainsi que les deux pages de |
| 1.9Ko de logiciel controleur de disque qui sont logees dans |
| une EPROM 16Ko 27 128. Chacune des pages est selectee a |
| partir du bit P4 du PIA 6846. |
| - Les 2 x 32Ko de logiciel d'application BASIC 1 - divers - |
| BASIC 512 - EXTRAMONITEUR, qui sont loges chacundans une ROM |
| ou EPROM 32Ko selon une repartition en quatre banques. D'une |
| maniere semblable au TO8, la commutation des banques |
| s'effectue en programmation par une ecriture d'adresses dans |
| un LATCH 74LS173. Ce circuit permet de selecter chaque |
| partie concernee dans une des memoires mortes. |
| |
| La cartouche de logiciel d'application externe est selectee par |
| logiciel a partir du bitP2 du PIA 6846. |
| |
| La memoire vive est composee de deux plans de 256Ko chacuns: |
| |
| Hit boitiers 256K-bits 41256 forment un premier plan memoire valide |
| par CAS1N et comprenant les differentes pages de 16Ko initialement |
| telles que: |
| page 0 = memoire ou espace "ecran" avec la RAMA et la |
| RAMB. |
| page 1 = memoire ou espace "systeme" avec la page |
| moniteur. |
| page 2 a 15 = banques memoires utilisateur ou espace |
| "donnees". |
| |
| Les differentes pages sont commutees par un adressage physique sur |
| 18bits (MA8-MA0), en provenance du gate array mode page. |
| |
| Le deuxieme plan memoire est valide par CAS2N. Il correspond a |
| l'extension memoire dans le TO8 et regroupe, par ses huits boitiers |
| 41256, seize pages de RAM utilisateur (pages 16 a 31). Adresse de la |
| meme maniere que le premier plan, il represente la suite de l'espace |
| "donnees". |
| |
| Conformement au TO8, le TO9+ utilise le gate array mode page CF74021 |
| ou EFG202A pour lequel il joue un role parfaitement identique. Il est |
| en relation avec les plans RAM dynamiques par l'intermediaire du bus |
| d'adresses multiplexees. Ce derneir est dapate par un HCT245. Les |
| commandes des boitiers memoires sont elles-memes adaptees par un |
| HCT245. |
| |
| La selection du bus de donneees RAM est independante du signal TRANSN |
| par l'intermediaire du 74LS245. Il assure l'aiguillage des |
| informations et permet notamment un acces du CPU dans l'espace memoire |
| 0000-3FFF (cf. LE 6809 dans le TO8, page 95). Un signal complementaire |
| de TRANSN agit de facon opposee sur le 74LS245 du bus de donnees |
| principal. |
| |
| Le gate array mode page determine les memes cas de fonctionnement ou |
| figures realisables sur le TO8 dont, plus particulierement, les |
| recouvrement d'espaces memoires. De par le register E7DC, il procure, |
| en relation avec la RAMA et la RAMB, les memes modes d'affichages |
| connus sur le TO8 ou le TO9 (cf. le systeme de visualisation du TO9, |
| page 52). |
| |
| Les signaux, en provenance du crayon optique, subissent le meme |
| traitement que sur le TO8. |
| |
| Toujours conformement au TO8, un circuit de palette du type EF9369, |
| programmable par le 6809E, permet le choix des seize teintes |
| exploitables parmi 4096. Il distribue les informations necessaires a |
| la price peritel, via des circuits d'interfacage video. |
| |
| Deux connecteursde carte "polyvalents" etablissent des liaisons bus et |
| signaux necessaires aux extensions. |
| |
| Quatre circuits d'interface sont en relation avec differents |
| peripheriques: |
| - Un PIA TIMER 6846 qui, exception faite de la ligne de |
| controle CP1 et du bit P5 devenus inutilises, est cable et |
| fonctionne comme sur le TO8. |
| - Un PIA 6821 "musique et jeux" pour l'elaboration du son et |
| les commandes de manettes et souris; Un PIA "systeme". De |
| par leur fonctionnement, ils sont parfaitement identique aux |
| circuits utilises sur le TO8. Ainsi, le bit de forme est les |
| bits de commutation de banque memoire du TO9 voient leur |
| action totalement emulee par le gate array mode page dans le |
| TO9+. |
| - Un ACIA 6850 qui, comme sur le TO9, realise la tranformation |
| serie/parallele des informations envoyees enserie a travers |
| le cordon du clavier. |
| |
| Il existe cependant une difference notable qui singularise, en ce |
| point particuleir, le fonctionnement du TO9+: la transmission serie |
| asynchrone dans le TO9 devient synchrone pour le TO9+. Pour ce faire, |
| l'horloge est fourine avec les donnees serie par un fil supplementaire |
| en provenance du monochip du clavier. La liaison entre le clavier et |
| la partie unite centrale est bi-directionnelle. La cadence de travail |
| est d'environ 9600 bauds. |
| |
| Les registres de l'ACIA sont accessibles aux adresses suivantes: |
| E7DE registre de controle en ecriture |
| E7DE registre d'etat en lecture |
| E7DF registre d'emission en ecriture |
| E7DF registre de reception en lecture. |
| |
| La figure 29, page suivante, traduit le fonctionnement materiel du |
| clavier. |
| |
| L'element de dialogue est un monochip 6805 P2 dont le port A et le |
| port B realisent l'exploration de la matrice clavier. Le port C est en |
| partie consacre aux echances avec l'ACIA. Ce microprocesseur est |
| pilote par uen horloge de 4Mhz. Une commutation interne offre la |
| possibilite de monter un 68705. |
| |
| Le programme du 6805 P2 est tel que, a chaque appui sur une touche, un |
| octet precede d'un bit de start, suivi par un bit de strop, est envoye |
| apres un delai maximum de 8ms (temsp de scrutation). La prise en |
| compte de chaque bit se fait sur un front montant de l'horloge RXC |
| fournie par le 6805 P2 (trasmission sychrone). |
| |
| Si cette touche reste enfoncee, apres un delaiu maximum de 0.8s, le |
| code est renvoye toutes les 70ms (repetition automatique de 14 |
| caracteres par seconde). Un signal KTEST est expedie vers l'unite |
| centrale pour indiquer l'action effective de la touche effoncee. Ce |
| signal estactif environ 10ns apres l'appui d'une touche, alors que le |
| temps de cycle de scrutation du clavier est de 8ms. |
| |
| Comme pour le TO9, le clavier est susceptible de recevoir des |
| informations en provenance de l'unite centrale. La transmission est |
| composee de trois bits avec un bit de start et un bit de stop. Le bit |
| de start est envoye lorsque l'ACIA recoit un impulsion d'horloge TXC. |
| Lorsque le bit de start est present, une interruption externe est |
| declanchee et le mot est lu par le monochip. |
| |
| Le gate arrau controleur de disquettes THMIC01 equipant le TO8 est |
| egalement utilise sur le TO9+. Il gere l'unite de floppy 3.5 pouces |
| integree et delivre, en parallele, par l'intermediaire d'une prise DIN |
| 14 broches, les signaux necessaires au fonctionnement d'un drive |
| externe selon deux standards 5.25 pouces ou 3.5 pouces. |
| |
| Un alimentation a decoupage semblable a celle du TO9 fabrique les |
| trois tensions de +5V,de +12V et -5V pour le fonctionnement des |
| composants de l'unite centrale et des extensions. |
| |
| 2. Extention integree |
| |
| Le TO9+ rdy equipe, en relation avec le decodage d'adresse |
| correspondant, d'un module extension telematique qui permet de relier |
| directement l'ordinateur au reseau telephonique connecte selon la |
| norme NFC 98010 et les specifications technique CNET 1108 et 1435. Le |
| principe de transmission est conforme a l'avis V23 du CCITT. (sam: |
| bref tout ca pour dir qu'il y a un modem dedans.. n'empeche que |
| c'etait le seul ordinateur avec modem et son integre, et cela bien |
| avant les PC multimedia d'aujourd'hui). |
| |
| Conception de l'extentsion telematique |
| |
| Elle est accessible aux adresses E7F8 a E7FF. Elle est composee: |
| - D'un ACIA 6850 qui realise la serialisation des donnees en |
| emission et leur deserialisation en reception. |
| - D'un 6821 qui assure les commandes et detections necessaires |
| au modem et a l'interface ligne (prise de ligne, |
| numerotation, detection d'appel, retournement et passage du |
| modem en half-duplex...). |
| - D'un MODEM EFB 7513: modulateur/Demodulateur FSK V23, |
| pouvant assurer un dialogue "full duplex" car les voies |
| emission et reception sont transmises par des proteuses de |
| frequences differentes. |
| - D'un duplexeur constitue d'un transormateur et |
| amplificateurs operationnels TDB 0124, pour mixer et separer |
| les signaux emis par la ligne telephonique |
| bi-directionnelle. Cette fonction est appelee conversion 2 |
| fils/4 fils. |
| - D'une interface ligne (relais optocoupleurs et |
| transformateur) qui permet d'adpater les signaux aux |
| exigences de transmission et de securite du reseau |
| telephonique commute des PTT (isolement galvaniquer par |
| rapport au secteur, regulation du courant de ligne, |
| numeroation decimale et detection d'appel). |
| |
| Elle peut etre geree par un logiciel appele handler telematique et qui |
| respecte les normes en vigueur. |
| |
| ------------------------------ |
| .. extramon.. |
| |
| 4.0 Les mathematiques |
| |
| Generalites |
| |
| L'EXYTRAMON sait meme compter! L'ensemble de ses possibilites |
| mathematiques son exposes dans les chapitres suivants. Passe l'effet |
| de surprise lorsque l'on apprend qu'il traite les quatres operations, |
| onplonge dans une beatitude inenarrable en decouvrant que les |
| fonctions trigonometriques ne sont pas epargnees (SIN, COS, TAN, |
| ATN...), ainsi que les logarithmes neperiens, exponentiel, racine |
| carree, conversion de bases, etc. Bref, avis aux amateurs, vous avez |
| dans les mains une petite merveille (non, pas le livre, l'unite |
| centrale!) |
| |
| Toutes ces fonctions mathematiques seront utilises en relation de |
| registres appeles accumulateurs FAC et ARG. Globalement vous ferez des |
| operations unaire et binaires. Dans le premier cas, l'argument doit se |
| trouver dnas l'accumulateur FAC. Un appel a SIN ou COS, par exemple, |
| cous rend le resultat aussi dans FAC. Dans le second cas, l'argument |
| gauche doit etre dans ARG et celui de droite dans FAC. Les deux |
| arguments seront de meme type et prcises dans VALTYP. Le resultat |
| recherche sera dans FAC. Il est conseille de faire attention car le |
| typed uresultat peut etre different du type des operandes. Surveillez |
| donc bien le registre VALTYP. Si vous desirez faire de calculs en |
| double precision, il faut necessairement que VALTYP (6105) soit egal a |
| 8, et que DBLFLG ($6103- soit a $FF. |
| |
| Description des accumulateurs |
| |
| Pour fixer rapidement les idees, nous pouvons dire que FAC est |
| l'accumulateur principal, et ARG le secondaire. ARG set pour les |
| operations telles que additions, soustraction, multiplication et |
| divisions. |
| |
| Les reels courts sont codes (sauf signeà sur 4 octets. Le 1er octet |
| est l'exposant E, les 3 autres la mantisse M. |
| |
| exposant - 128 |
| nombre = 0.mantisse x 2 |
| 7 |
| Exemple: Le nombre 100 deciaml s'ecrit 0.C80000 x 2 et se code en: |
| exposant = 128 + 7 = 135 = %10000111 |
| mantisse = $C80000 = %11001000 00000000 00000000 |
| |
| Pour ces routines, un exposant nul implique que le nombre est egal a |
| 0. En entree, le nombre doit etre normalise (bit de poids fort de la |
| mantisse = 1). En sortie, EXTRAMON rend egalement des nombtres |
| normalises. |
| |
| - Vous trouverez ci-dessous la liste des composants de FAC: |
| |
| Pour un reel court ou simple precision: |
| |
| VALTYP ($6105): Type de l'accu (a 4) |
| FACEXP ($614E): Exposant binaire (de -128 a +127) |
| FACHO ($614F): mantisse 24bits, poids forts |
| FACMO ($6150): mantisse poids moyen |
| FACLO ($6151): mantisse poids faibles |
| FACSGN ($6156): signe de l'accumultauer |
| |
| Pour un reel long, c'est identique sauf: |
| VALTYP ($6105): a 8 |
| $6152-$6155: 4 octets supplementaires suivent la mantisse |
| |
| Pour un entier 16 bits: |
| |
| VALTYP ($6105): a 2 |
| FACMO, FACLO : contiennent l'entier |
| FACEXP, FACHO, FACSGN: sont inutiles. |
| |
| - Vois trouverez ci-dessous la liste des composatnts de ARG. Elle est |
| tres semblable a FAC: |
| ARGEXP, ARGHO, |
| ARGMO, ARGLO: $6159-$615C pour les reels courts (4) |
| DARGHO: $615D-$6160 +4 octets pour les reels long (8) |
| ARGMO, ARGLO: $615B-$615C pour les entiers |
| |
| Dans FACSGN et ARGSGN, seul le bit 7 est utilise. Ce bit a 1 |
| represente un nombre negatif/ |
| |
| Echange memoire et accumulateur |
| |
| Les reels couts (4) sont codes sur 5 octets dans l'accumulteur, et sur |
| 4 octets en memoire. Ceci est possible en codant lke signe du nombre |
| dans le bit du poids fort de la mantisse, ce bit etant un 1 pour un |
| reel normalise. Pour les reels longs, on agit de meme, mais avec 4 |
| octets de plus poour la mantisse. Les routines fonctionnent aussi pour |
| les entiers, X pointnant alors sur 2 octets seulement. |
| |
| Pour utiliser les routines de transfert bi-directionnelles entre |
| memoire et accumulateur: |
| - Il faut implanter le type de la variable dans VALTYP, |
| - puis appeler une des routines de transfert avec le registre |
| d'adresse X du 6809E pointant sur la variable a transferer. Soit: |
| |
| MOVFM Code d'entree 62: Transfert de FAC vers la memoire pointee par X |
| MOVMF Code d'entree 63: Transfert de la memoirepointee par X vers |
| l'accumulateur FAC |
| MOVAF Code d'entree 64: Transfert de l'accumulateur ARG vers |
| l'accumulateur FAC. |
| (sam: je crois qu'au dessus il y une inversion entre FAC et ARG ainsi |
| qu'entre FAC et la memoire pointee par X dans le document original) |
| |
| Liste des fonctions mathematiques |
| |
| Le tableau ci-dessous dresse la liste ddes routines mathematiques |
| disponibles et leur code d'entree respectif. |
| |
| Nom Code Fonctionnalite |
| d'entree |
| |
| SGN 41 Rend le signe de l'accumulteur dans FACMO, FACLO. |
| L'accumulateur "entier" vaut ainsi 0, -1 ou 1. |
| INT 42 Rend la partie entiere de l'accumulateur |
| ABS 43 Rend la valeur absolue de l'accu. |
| SQR 44 Rend la racine caree de l'acc. Le resultat est un |
| nombre reel. |
| LOG 45 Rend le log. neperien de l'accu. Le resultat est un |
| nombre reel. |
| EXP 46 Rend l'exponentielle de l'accu. Le resultat est un |
| nombre reel. |
| COS 47 Rend le cos de l'accu. L'accu est en radiant, le |
| resultat est un nb reel. |
| SIN 48 Rend le sin de l'accu. L'accu est en radiant, le |
| resultat est un nb reel. |
| TAN 49 Rend la tangente de l'accu. L'accu est en radiant, le |
| resultat est un nb reel. |
| ATN 68 Rend l'arctg de l'accu. Le resultat est un nb reel |
| (TO8 et TO9+ uniquement). |
| FRCTYP 50 Conversion de type. Param. d'entree: |
| - VALTYP de type courant de l'accu FAC |
| - si registre A = 2 => resultat entier 2 |
| - si registre A = 4 => resultat reel 4 |
| - si registre A = 8 => resultat reel 8 |
| FIXER 51 Rend l'entier tronque d'un reel. Le result est un |
| reel. |
| RND 52 Rend un reel court aleatoire (4) |
| NEGGO 53 Effectue FAC = -FAC |
| ADDGO 54 Effectue FAC = ARG + FAC |
| SUBGO 55 Effectue FAC = ARG - FAC |
| MULTGO 56 Effectue FAC = ARG * FAC |
| DIVGO 57 Effectue FAC = ARG / FAc. Les arguments sont des reels |
| 4 ou 8. |
| EXPGO 58 Effectue FAC = ARG ^ FAC. Les arguments sont des reels |
| 4 ou 8. |
| IMODO 59 Effectue FAC = ARG MOD FAC. Les operandes doivent etre |
| des entiers. |
| IDIVO 60 Effectue FAC = ARG (div. entiere) FAC. Les operandes |
| doivent etre des entiers. |
| FIN 65 Conversion d'une valeur ASCII en binaire |
| Param. d'entree: |
| - Registe Y du 6809E pointe sur ASCII fini par $00 |
| Param. de retour: |
| - FAC contient le nombre |
| - VALTYP le type du nombre |
| Les conversions sont similaires a celles du BASIC. FIN |
| accepte aussi des constantes bianires, octales ou |
| hexadecimales. |
| PUFOUT 66 Conversion d'une valeur bianire en ASCII decimal. |
| Param. d'entree: |
| - FAC ($614E) le nb a convertir |
| - VALTYP ($6105) le type de celui-ci |
| - registre Y du 6809E pointe sur un tampon |
| - PUMASK ($617C) flag de PRINTUSING. |
| Le flag PUMASK permet d'utiliser le PRINTUSING comme |
| BASIC. Si ce flag est nul, le format de sortie sera |
| choisi par PUFOUT, sinon les octets PDWID et FLDWID |
| permettent de choisir le nombre de chiffers avant et |
| apres le point decimal. |
| - DPWID ($617A) nb de chiffres apres le point decimal. |
| - FLDWID ($617B) idem mais avant le point. |
| - PUMASK ($617C) bit 0: notation scientifique |
| bit 2: signe apres le nombre |
| bit 3: force le "+" pour les positifs |
| bit 5: remplit d'"*" au lieu |
| d'espaces. |
| bit 7: USING or not USING |
| Param. de retour (pour le TO9): |
| - Le registe Y du 6809E pointe sur l'ASCII |
| Pour recuperer les codes ASCII, il faut sauter les |
| caracteres indesirables (inferieux ou egaux a $20), |
| ensuite vous trouverez votre nombre se terminant par |
| un zero binaire. |
| Param. de retour (pour TO8 et TO9+): |
| - Le registre FACMO pointe sur l'ASCII |
| Le registre FACMO pointe sur l'ASCII dans le tampon |
| que vous avez fourni a travers le registre Y. Le |
| nombre initialement implante dans FAC est detruit |
| apres conversion. |
| HOFOUT 67 Conversion d'une valeur binaire en ASCII hexadecimal |
| ou octal. |
| Param. d'entree: |
| - FACMO ($6150-$6151) Le nombre a convertir en entier 2 |
| - Registre Y du 6809E pointe sur le buffer resultat |
| - Accu A du 6809E si $00 la sortie est octale. Si $FF |
| la sortie est hexa. |
| |
| |
| |
| 5. Le DOS |
| |
| Pour toute information relative aux diskettes elles-memes, nous vous |
| prions de vous reporter au chapitre "Controleur de diskettes", page |
| 207. Le Disk Operating System est compatibleau format Microsoft (sam: |
| hehe :). Les chapitres suivants presentent les differentes routines de |
| l'extramon pour travailler sur les diskettes (gestion de fichiers, |
| backup, etc.). Notons qu'en double densite, le DOS n'utilise que 255 |
| octets par secteur (sur 256 de disponibles (sam: encore un coup de la |
| compatibilite microsoft ca :))) ). |
| |
| Initialisation du DOS |
| --------------------- |
| Apres initialisation de l'EXTRAMON par un RESETC, il est egalement |
| necessaire d'initialiser les varaibles d'EXTRAMON liees aux disques |
| (densite, nombre de disques, nombre de fichiers, etc.). L'ensemble de |
| ces operations est realise par la routine FCBINI. |
| |
| Pour changer la densite d'un drive (si le controleur le permet), il |
| faut modifier la table TABDEN debutant a l'adresse $621A. Cette table |
| fait 5 octets, chacun etant associe a un lecteur. Pour etre en simple |
| densite, il faut mettre $04 dans l'octet correspondant alors que la |
| valeur $10 permet de commuter en double densite. Cette table est |
| automatiquement initialisee par FCBINI en fonction du controleur |
| present. Avec un controleur doubledensite la table est entierement |
| mise a $10,ce qui est le cas sur le TO9. Remarque: Il est fortement |
| conseille de ne pas toucher a la densite du disque virtuel 4,celui-ci |
| est forcement double densite. |
| |
| Nom: FCBINI |
| Code d'entree: 02 |
| Parametres d'entree: SECBUF ($6197) pointe sur un buffer pour un |
| secteur. 256 ou 128 octets selon la densite. FATPTR ($6199) pointe la |
| place libre pour 5 FATS. Il faut DSBLEN (166) octets par FAT. Le |
| registe Y du 6809E contient le nombre de disques que l'on veut |
| utiliser (5 au maximum). L'accu A du 6809E contient, le nombre maximum |
| de fichiers que l'on veut pouvoir ouvrir en meme temps. Le registre X |
| du 6809E pointe sur la zone libre pour FCBLEN (281) x A octets. |
| Reserve la place pour A File Control Block. |
| Parametres de sortie: Voir texte |
| Effet: Initialisationdu DOS. |
| |
| Cache disque |
| ------------ |
| Seul sur les machine TO8 et TO9+, le cache disque est disponible. Il |
| permet, comme sur d'autre machines concurentes, d'accelerer |
| notablement les acces disques. Initialement prevu pour optimiser les |
| utilisations des lecteurs QDD, le cache disque peut egalement etre |
| appele pour des acces aux lecteurs double face, double densite. |
| |
| (sam: bon pas la peine de recopier le reste du cache ca ne concerne |
| pas le TO9). |
| |
| Ouverture d'un fichier |
| ---------------------- |
| Nom: OPEN |
| Code d'entree: 03 |
| |
| On peut ouvrir un fichier selon trois modes: |
| - Lecture |
| - Ecriture |
| - Acces direct en lecture/ecriture. |
| |
| Parametres d'entree: DK.RDK ($6049) numero de drive |
| FILMOD ($624B) type d'access |
| M.SQI ($10) ouvre en input |
| M.SQO ($20) ouvre en output. |
| M.RND ($40) ouvre en direct. |
| FILNAM ($624f-6259) nom de fichier 11 |
| caracteres. |
| OPTBUF ($625a-$6261) commentaire (ecriture |
| seule). 8 octets, s'arrete au 1er $00. |
| |
| En ecriture, 2 autres flags: |
| FILTYP ($624C) type de fichier |
| ASCFLG ($624D) $FF fichier ASCII. $00 fichier |
| binaire. |
| |
| Pour l'ouverture d'un fichier en acces direct, nous vois prions de |
| vosu reporter a l'etude de PUTGET. |
| |
| Parametres de retour: FCBNUM ($6244) numero logique de fichier |
| |
| En lecture, 2 autres flags: |
| FILTYP ($624C) type de fichier |
| ASCFLG ($624D) $FF fichier ASCII. $00 fichier |
| binaire. |
| |
| Remarque: un numero de fichier est rendu dans FCBNUM. Il permet de |
| distinguer les differents fichiers ouverts en meme temps. Pour lire, |
| ecrire ou fermer un fichier, il suffit de mettre son numero dans |
| FCBNUM avant l'appel a la routine concernee. Tout ceci est transaprent |
| si n(ouvre qu'un seul fichier. |
| |
| Lecture d'un caractere |
| ---------------------- |
| Nom: INPUT |
| Code d'entree: 05 |
| Parametres d'entree: FCBNUM ($6244) numero logique de fichier |
| Parametres de retour: CARCOU ($6196) caractere lu |
| EOFFLG ($6179) flag de fin de fichier |
| Remarque: si EOFFLG est mis, il n'y a pas de caracteres valide dans |
| CARCOU. |
| |
| Ecriture d'un caractere |
| ----------------------- |
| Nom: PRINT |
| Code d'entree: 04 |
| Parametres d'entree: FCBNUM ($6244) numero logique de fichier |
| Accu A du 6809E caractere a ecrire. |
| |
| L'acces direct |
| -------------- |
| Nom: PUTGET |
| Code d'entree: 07 |
| |
| Les deux operations principale d'un enregistrement sont PUT et GET. |
| |
| Parametre d'entree: PUTFLG ($6249) $00 pour GET; $FF pour PUT |
| FCBNUM ($6244) numero logique de fichier |
| Registre X du 6809E numero d'enregistrement |
| desire. |
| Parametre de retour: Pour PUT, le buffer est enregistre; pour GET, |
| le buffer a ete lu. |
| |
| |
| Lors de l'appel de la routine OPEN, il faut preciser la longueur des |
| enregistrements dans RLEN ($6247-$6248), ainsi que l'adresse d'un |
| buffer dasn BUFRE ($62AA-$62AB). Ce buffer est, biensur, de longeur |
| RLEN. Le 1er enregistrement est le numero 1. Si X est nul, |
| l'enregistrement suivant est pris (sequentiel par defaut). |
| |
| Remarque: Vous pouvez remplir ou vider le buffer vous-meme, ou passer |
| par PRINT et INPUT si vous preferez. Ceux-ci vous previennent en cas |
| de depassement du buffer. |
| |
| Fermeture d'un fichier |
| ---------------------- |
| Nom: CLOSE |
| Code d'entree: 06 |
| Parametres d'entree: FCBNUM ($6244) numero logique de fichier |
| |
| Lecture du catalogue |
| |
| Nom: DIR0 ou DIR1 |
| Codes d'entree: 08, 09 |
| Parametres d'entree: DK.DRV ($6049) Numero de drive |
| FILNAM ($624F-$6259) Filtre 11 caracteres. |
| Parametres de retour: NAMSEC ($618E) Nul, indique la fin du |
| catalogue. |
| NAMSLT ($618F-$6190) Pointe vers 32 octets: |
| Offset Data |
| 0-7 Nom |
| 8-10 Extension |
| 11 Type de fichier |
| 12 flag ASCII/binaire. |
| 13 pointeur dans la FAT |
| 14-15 Taille du dernier |
| secteur |
| 16-23 Commentaire sur 8 |
| octets |
| 24-31 reserves. |
| FACMP ($6150-$6151) Taille n Koctets du |
| fichier. |
| |
| Le registre FILNAM sert de filtre pour le catalogue, des zeros |
| binaires seravant de joker. Si toutest a zero, le catalogue complet |
| est rendu. Le 1er appel se fait par DIR0, par la suite appel a DIR1. A |
| chaque appel, DIR rend un nom de fichier. |
| |
| Lecture du nom d'une diskette |
| ----------------------------- |
| Nom: RDVOL |
| Code d'entree: 21 |
| Parametres d'entree: DK.RDV ($6049) Numero de drive |
| Parametres de retour: SECBUF ($6197-$6198) Pointe sur le nom (8 |
| octets). |
| |
| (bon je passe le "backup d'une diskette.." et la "copie d'un fichier" |
| ca sert a rien, ya basic et le gestionnaire de fichier qui font |
| cela tres bien, et surtout c'est top complexe comme operations, 36 |
| initialisations et tests a faire :) |
| |
| Destruction d'un fichier |
| ------------------------ |
| Nom: KILL |
| Code d'entree: 14 |
| Parametres d'entree: DK.RDV ($6049) Numero de drive |
| FILNAM ($624F-$6259) Nom du fichier, 11 |
| caracteres (8 pour le nom, 3 pour |
| l'extension). |
| Parametres de retour: Sauf erreur, votre fichier est perdu! Entre |
| nous, vous l'avez bien cherche. |
| |
| Changement de nom d'un fichier |
| ------------------------------ |
| Nom: NAME |
| Code d'entree: 15 |
| Parametre d'entree: registe X pointe fichier ancien nom. registre |
| Y pointe sur prochain nom. |
| X comme Y pointent sur une zone de 20 octets: |
| 0-7 Nom |
| 8-10 Extension |
| 11-18 Commentaire |
| 19 Numero de drive |
| EXTRAMON verifie que le nouveau nom n'est pas deja present sur la |
| diskette. Lors d'un changement de nom, le commantaire du fichier est |
| conserve si le nouveau commentaire commence par 0. La date du fichie |
| est conservee (TO8 et TO9+ uniquement). |
| |
| Initialisation d'une diskette |
| ----------------------------- |
| Nom: DISKINI |
| Code d'entree: 17 |
| Parametre d'entree: DK.DRV ($6049) Numero de disque |
| FILNAM ($604F-6256) Nom de volume (8 octets) |
| DK.NUM ($604D) L'entralcement desire (7 est |
| bien) |
| VERFLG ($618D) $00 pas de verification. $80 |
| verification (bcp plus lent). |
| |
| Place libre sur une disquette |
| ----------------------------- |
| Nom: DSKF |
| Code d'entree: 16 |
| Parametre d'entree: DK.DRV ($6049) Numero de drive |
| Parametre de retour: FACMO ($6050-$6151) La place libre en Koctets. |
| |
| Taille d'un fichier |
| ------------------- |
| Nom: LOF |
| Code d'entree: 18 |
| Parametre d'entree: FCBNUM ($6244) Numero logique de fichier |
| Parametre de retour: FAC ($614E) Resultat en entier 16bits (FACMO |
| ($6150)) ou en reele 4 selon la |
| taille, pour le savoir, il faut tester |
| VALTYPE (2 ou 4). |
| |
| Dans le cas des fichiers a acces direct, c'estle nombre |
| d'enregistrements du fichier qui est rendu. En sequentiel, c'ets le |
| nombre de secteurs du fichiers. |
| |
| Formule de calcul pour l'acces direct: |
| |
| LOF := (NBoct * NBsecteur - Inutiles)/RLEN |
| |
| Avec: NBoct = Nombre d'octets par secteur |
| NBsecteur = Nombre de secteurs du fichier |
| Inutiles = Nombre d'octets inutiles du dernier secteur |
| RLEN = Taille d'un enregistrement. |
| |
| Attention: Sur le TO9, en double densite EXTRAMON prend NBoct a 256 |
| octets au lieu de 255, d'ou des petites erreus de calcul... Ce |
| probleme n'existe pas sur TO8 et TO9+. (sam: hehe microsoft a encore |
| frappe :) |
| |
| Numero d'enregistrement courant |
| ------------------------------- |
| Nom: LOC |
| Code d'entree: 19 |
| Parametre d'entree: FCB ($6244) Numero logique de fichier. |
| Parametre de retour: FAC ($6150-$6151) Resultat entier 16 bits. |
| Effet: LOC rend le numero de l'enregistrement courant |
| sur un fichier a acces direct. Sur un fichier a acces sequentiel, |
| c'est le numero dusecteur courant qui est rendu. |
| |
| |
| |
| 9. Le DOS iconique |
| |
| Generalites |
| |
| Le DOS iconique, appele sur les menus "Exploitation de fichiers", est |
| situe sur la banque 3 du slot 0 des TO8, TO9 et TO9+. Il utilise pour |
| realiser ses differentes manipulations de fichiers, des routines du |
| moniteur et de l'extramoniteur. Ainsi, globalement,ses variablesse |
| situent dans les pages $60, $61 et $62, ce qui impliquent que toute |
| application utilisant le DOS Iconique doit laisser ces 3 pages libres. |
| |
| Comme toute routines de l'extramoniteur, le debut du programme sera |
| consacre aux initalisations des sous-ensembles concernes: |
| - Unite de disquette |
| - Fenetre graphique (nulle par defaut) |
| - Curseur graphique qui definit la position des coins gauches |
| des tableaux generes par le DOS Iconique. |
| - Mise a jour du registre CO+ULEUR ($629F) |
| - Le registre CHDRAW ($6041) doit etre a 0. |
| |
| Le DOS Iconique ne sauvegarde pas l'ecran avant d'afficher ses |
| fenetres, il faudra donc prevoir un traitement adequat dans vos |
| programmes personnels. |
| |
| Trois routines sont utilisables par une application externe: |
| - La selection de fichiers |
| - La saisie d'un nom de fichier |
| - La selection du lecteru courant. |
| Ainsi, l'utilisateur peut a l'aide du crayon optique ou de la souris |
| (si elle est en action), selectionner un fichier, relire le catalogue |
| et se deplacer a l'interieur. Toutes les commandes lightpen ou souris |
| sont doublees au clavier par les rouches RAZ, ENTREE, les chiffres 0 a |
| 4 et les fleches verticales. |
| |
| Pour realiser ces taches, un buffer pointe par le registre d'index X |
| doit etre alloue, sa longueur etant definie par le registre Y. Si ce |
| buffer est trop petit, une erreur "Out of Memory" sera generee. |
| |
| Selection de fichiers |
| --------------------- |
| la routine DIRR fournit un tcatalogue reduit (nom + extension), classe |
| alphabetiquement,de la diskette palcee dans le lecteur courant. Au |
| prealable, les regitres DK.RDV et FILNAM indiqueront respectivement le |
| numero de lecteur concerne et le filtre de selection des nom de |
| fichiers (0 etant le caractere transparent). Ensortie, le registre B |
| retourne le numero de l'erreur. Si son contenu vaut 0, aucune erreur |
| n'est detectee et le nom est inscrit dans le registre FILNAM. |
| |
| Un buffer de 1500 octets est necessaire pour accomplir cette routine, |
| sachant que la fenetre affichee a l'ecran a une taille de 20x15 |
| caracteres. |
| |
| Saisie d'un nom de fichier |
| -------------------------- |
| La routine SAISIE permet la frappe d'un nom de fichier complet |
| constitue du nom, de l'extension et du commentaire. Le registre FILNAM |
| conteint le nom par defaut propose a l'utilisateur suivi de |
| l'extension et du commentaire (8+3+8 caracteres). |
| |
| La saisie est validee par le pointage de OK dans le tableau affiche ou |
| par la frappe de la touche ENTREE. La touche RAZ ou le pointage de |
| "Annuler" interromp la saisie. |
| |
| Un buffer de 100 octets eest necessaire pour cette routine. Le tableau |
| affiche occupe 24x11 caracteres. |
| |
| Selection du lecteur courant |
| ---------------------------- |
| La routine SELDEV permet de selectionner le lecteur courant. Le |
| registre DK.DRK contient le numero du lecteur a mettre en evidence. un |
| buffer de 100 octets est necessaire. La taille de la fenetre affichee |
| est de 24x11 caracteres. |
| |
| Appel au DOS Iconique |
| --------------------- |
| L'appel de l'une des routines decrites ci-dessus se fait cia la |
| routine COMS du moniteur. Pour de plus amples details, veuillez vous |
| reporter au chapitre "Commutation des memoire ROM", page 222. |
| |
| Exemple: |
| LDX #$B000 Debut du buffer |
| LDY #1700 Longueur de la zone |
| LDA #03 Appel du slot 0 banque 3 |
| LDU #ROUTINE Point d'entree de la routine ex $3FC1 |
| pour DIRR |
| JSR COMMS |
| TSTB |
| BNE ERROR |
| OK EQU * |
| |
| Il conviendra d'ajouter au debut du programme les initalisations des |
| registres concernes par la routine appelee. Vous trouverez ci-dessous |
| un resumedes equates du DOS Iconique. |
| DK.DRK EQU $6049 Numero lecteur courant |
| SECBUF EQU $6197 Pointeur de buffer disque |
| FATPTR EQU $6199 Pointeur de buffer FAT |
| FILNAM EQU $624F Nom de fichier courant |
| CHDRAW EQU $6041 Caractere graphique |
| COULEUR EQU $619E Couleur courante |
| EXTRA EQU $EC0C Point d'entree d'extramon |
| COMS EQU $EC03 Point d'entree de commutation de slot |
| DIRR EQU $3FC1 Point d'entree du catalogue reduit |
| SAISIE EQU $3FC4 Point d'entree de SAISIE |
| SELDEV EQU $3FC7 Point d'entree de SELDEV. |
| |
| |
| |
| 10. Informations complementaires |
| |
| Extramon sous BASIC 512 |
| |
| Le basic 512 disponible sur les TO8 et TO9+, initialise |
| automatqiuement l'extramoniteur. En consequence, vois programmes |
| personnels appelant extramon a partir du BASIC 512 n'ont pas a |
| realiser ce traitement. Si cous desirez recupere les erreurs |
| eventuelles, il faut rediriger le vecteur de rattrapage d'erreu ZPERR |
| ($6185) de la maniere suivante: |
| |
| SAVSTK EQU $6179 |
| LDS SAVSTK |
| PULS A,DP,X,Y,U,PC |
| . |
| . |
| |
| Dans le cas contraire, c'est le message d'erreur BASIC qui sera |
| affiche. |
| |
| |
| |
| 19 INFORMATIONS COMPLEMENTAIRES |
| |
| 19.1 Organisation de la mémoire |
| |
| ADRESSES (HEXADECIMAL) |
| |
| 0000-3fff Espace ROM |
| 4000-5fff 2 x 8Ko de mémoire écran |
| 6000-60ff Registres du moniteur |
| 6100-9fff Ram utilisateur banque fixe |
| a000-dfff 6 banques ram 16ko en parallèle + 4 banques pour |
| l'extension ram |
| e000-e7af 1.9k rom pour le disque |
| e7b0-e7bf 16 adresses non utilisés ni décodees |
| e7c0-e7c7 PIA 6846 système |
| e7c8-e7cb PIA 6821 système |
| e7cc-e7cf PIA 6821 extension jeux |
| e7d0-e7d9 Contrôleur de floppy |
| e7da-e7db Palette |
| e7dc-e7dd Gate affichage |
| e7de-e7df ACIA liaison clavier |
| e7e0-e7e3 PIA 6821 interface de communication non utilisable |
| dans le TOx |
| e7e4-e7e7 Compteurs crayonoptique |
| e7e8-e7eb Interface RS232 |
| e7f0-e7f7 Interface IEEE |
| e7f8-e7fd Interface Modem |
| e7fe-e7ff Réservés |
| e800-ffff 6Ko moniteur |
| |
| La partie de mémoire situé entre $a000 et $dfff est commutable avec |
| d'autrs parties de RAM. Vous disposez de 6 banques commutables plus |
| 16Ko stables (de $6000 a $9fff) soit 112K au total, dont 32K |
| accessibles en même temps. Si vous disposez de l'extension mémoire de |
| 64K, vous disposerez de 4 banques supplémentaires de 16K. |
| |
| L'extension mémoire de 64ko n'est pas considérée par les applications |
| comme de la mémoire de programme, mais comme un disque virtuel. Le |
| sous-programme suivant ne tient donc pas compte de cette extension |
| mémoire qui est accédée directement par le contrôleur de disque. |
| |
| Remarque: pour des raisons de protection de sélection simultanée de |
| plusieuyrs banques RAM, il a été installé le système d'utilisation |
| suivant. Les 5 bits de données du PIA qui servent à la sélection sont |
| toujours a 0. Pour commuter une banque on n'écrit donc pas dans le |
| registre de donnée du PIA, mais on change la direction des bits |
| concernés, sachant qu'un bit en entrée génère un 1 et un bit en sortie |
| génère un 0. |
| |
| Attention: certaines routines du moniteur peuvent modifier |
| temporairement le contenu du PIA et le restaurer plein 0 à la fin. |
| |
| Attention: le système de sélection des banques mémoire pour le disque |
| virtuel sera modifié dans le TO8 et TO9+. |
| |
| La commutation des 6 banques internes se fait par le sous-programme |
| suivant: |
| |
| Entrée: registre 6809 A= numero de banque 0 à 5 |
| |
| COMMUT equ * |
| pshs d,x,u |
| ldu #$e7c0 U pointe sur les PIA |
| ldb 11,u lecture du registre de contrôle |
| andb #$fb |
| stb 11,u Passage du PIA en mode direction |
| ldx #TAB X pointe surla table des valeurs a mettre dans |
| * le PIA |
| lda a,x lecture de la bonne valeur |
| sta 9,u modification des directions dans le PIA |
| orb #$4 |
| stb 11,u |
| puls d,x,u,pc |
| tab equ * |
| fcb $f;$17,$e7,$67,$a7,$27 |
| |
| |
| Le tableau suivant résume les valeurs qui doivent être émises par les |
| registres PRB et PRC des PIA. |
| |
| | To9/To7-70 | To9/Ext To7-70 | Ram Disk |
| ------------------------------------------------------------- |
| BANQUE SELECTEE | 0 1 | 2 3 4 5 | 6 7 8 9 |
| ------------------------------------------------------------- |
| BIT DE PIA | | | |
| PRB3 | 0 1 | 1 1 1 1 | 1 1 1 1 |
| PRB4 | 1 0 | 1 1 1 1 | 1 1 1 1 |
| PRB5 | 1 1 | 0 0 0 0 | 1 1 1 1 |
| PRB6 | 1 1 | 0 0 1 1 | 1 1 1 1 |
| PRB7 | 1 1 | 0 1 0 1 | 1 1 1 1 |
| PRC2 | X X | X X X X | 0 0 1 1 |
| PRC6 | X X | X X X X | 0 1 0 1 |
| ------------------------------------------------------------- |
| |
| Par exemple pour accéder à la Bank 5, les bits de PIA devront avoir |
| les états suivants: |
| |
| PRB3 PRB4 PRB5 PRB6 PRB7 PRC2 PRC6 |
| 1 1 0 1 1 X X |
| |
| |
| 19.2 Points d'entrée standard du moniteur |
| |
| Nom Adresse Description |
| ---------------------------------------------------------- |
| PUTC e803 affichage d'uncaractère |
| GETC e806 lecture du clavier |
| KTST e809 lecture rapide du clavier |
| DRAW e80c tracé d'un segment de droite |
| PLOT e80f allumage ou extinction d'un point |
| RSC0 e812 gestion de l'interface de communication |
| K7C0 e815 lecture/ecriture surcassette |
| GETL e818 lecture du bouton du crayon optique |
| NOTE e81e generation de musique |
| GETP e821 lecture de la couleur d'un point |
| GETS e824 lecture de l'ecran |
| JOYS e827 lecture des manette de jeu |
| DKC0 e82a contrôleur de disque |
| MENU e82d retour au menu principal |
| KBIN e830 sortie programme d'intrruption |
| CHPL e833 ecriture d'un point "caractere" |
| SETP ec00 programmation de la palette |
| COMS ec03 appel d'un sous-programme en ROM |
| GEPE ec06 lecture de la souris |
| PEIN ec09 lecture des boutons de la souris |
| EXTRA ec0c appel de l'extramoniteur |
| |
| |
| 19.3 Registres du moniteur |
| Les adresses qui suivent sont données en hexadécimal: |
| |
| * 6000-6015 (REDIR): 11 routines moniteur redirectees. Les routines |
| suivantes du moniteur font une indirection en |
| RAM. Si vous coules reprendre le controle lors |
| d'un appel a une de ces routines, il vous |
| suffit de mettre l'adresse choise dans la |
| table REDIR. |
| |
| 6000-6001 Indirection de GETLP |
| 6002-6003 Indirection de LPINT |
| 6004-6005 Indirection de GETPERI |
| 6006-6007 Indirection de GACHPERI |
| 6008-6009 Indirection de PUTCH |
| 600a-600b Indirection de GETCH |
| 600c-600d Indirection de DRAWXY |
| 600e-600f Indirection de PLOTXY |
| 6010-6011 Indirection de RSCONT |
| 6012-6013 Indirection de GETPT |
| 6014-6015 Indirection de GETSC |
| |
| * 6016 (PLAN) Numero du plan dans les modes overlay |
| |
| b2 numero du plan overlay |
| b1-0 numero du plan en triple overlay |
| |
| * 6017-6018 (SAVPAL) Sauvegarde de la palette 14 en mode 80 |
| colonnes. |
| |
| * 6019 (STATUS) Differents semaphores |
| |
| b7 semigraphique |
| b6 scroll rapide |
| b5 interruption utilisateur validee: timer |
| b4 graphique sans ecriture de couleurs |
| b3 forme seule |
| b2 curseur visible/invisible |
| b1 trasnmission par GETC |
| b0 traitement des sequences SS2 dans GETC |
| |
| * 601A-601B (TABPT) Pointeur dans la table des terminaateurs de |
| lignes |
| |
| * 601B (RANG) Ligne logique courrante |
| |
| * 601C-601D (TOPTAB) Pointeur sur le sommet logique de la table des |
| terminateurs de lignes. |
| |
| * 601D (TOPRAN) Premiere ligne logique de la fenetre |
| |
| * 601E-601F (BOTTAB) Pointeur sur la fin logique de la table des |
| terminateurs de ligne. |
| |
| * 6020 (COLN) Colonne logique courante |
| |
| * 6021-6022 (IRQPT) Pointeur sur la routine moniteur de traitement |
| des interruptions IRQ. |
| |
| * 6023-6024 (FIRQPT) Pointeur sur la routine de traitement des |
| interruptions rapides FIRQ. |
| |
| * 6025-6026 (COPBUF) Copie de BUFFAT, reserve au systeme. |
| |
| * 6027-6028 (TIMEPT) Pointeur sur la routine utilisateur de |
| traiement des interruptions TIMER utilisateur. |
| |
| * 6029 (K7.OPC) Code operation du lecteur-enregisteur de |
| programmes (LEP). |
| |
| * 602A (K7.STA) Code etat du LEP. |
| |
| * 602B (RS.OPC) Mot de commande pour la gestion de la |
| communication. |
| |
| * 602C (RS.STA) Etat courrant de la liaison communication. |
| |
| * 602D-602E (USERAF) Pointeur sur le generateur de caracteres |
| utilisateur. |
| |
| * 602F-6030 (SWI1) Pointeur sur SWI. |
| |
| * 6031-6032 (TEMPO) Tempo general pour la generation de musique. |
| |
| * 6033-6034 (DUREE) Duree de la note (de 1 a 96). |
| |
| * 6035 (TIMBRE) Attaque de la note. |
| |
| * 6036-6037 (OCTAVE) Octabe (1, 2, 4, 8 ou 16). |
| |
| * 6038 (FORME) Contient le code de la couleur de -8 a +15 |
| pour la mise encouleur d'un point ou le trace |
| d'un segment de droite. |
| |
| * 6039 (ATRANG) Semaphores pour la gestion d'ecran. |
| |
| b7 semaphore de scroll |
| b6 reserve |
| b5 reserve |
| b4 reserve |
| b3 reserve |
| b2 reserve |
| b1 largeur simple ou double |
| b0 hauteur simple ou double |
| |
| * 603A (ATRSCR) Semaphore pour la gestion plein ecran |
| |
| b7 semaphore de fond plein ecran |
| b6 semaphore de forme plein ecran |
| b5 reserve |
| b4 reserve |
| b3 reserve |
| b2 reserve |
| b1 largeur simple ou double |
| b0 hauteur simple ou double |
| |
| * 603B (COLOUR) Couleur courante; les 3bits de poids faible |
| donnent la couleur de fond, les 3 bits suivant |
| la couleur de la forme, suivant le codage |
| video BVR. Les 2bits de poids fort a 0 representent |
| les couleurs pastels. |
| |
| * 603C (TELETL) Si ce registre contient la valeur $ff, on est |
| en mode "page" (pas de scoll). |
| |
| * 603D-603E (PLOTX) Abscisse du dernier point allume ou eteint. |
| |
| * 603F-6040 (PLOTY) Ordonnee du dernier point allume ou eteint. |
| |
| * 6041 (CHDRAW) Code ASCII du caractere pour un trace de point |
| ou de droite en mode "caracteres". |
| |
| * 6042 (CURSFL) Semaphore de mouvement curseur, qui, s'il |
| contient la valeur 255, indique qu'il ne faut |
| pas lier logiquement la ligne a la suivante. |
| Reserve pour le BASIC. |
| |
| * 6043 (COPCHR) Semaphore qui, s'il contient la valeur 255, |
| indique que le deplacement a droite (HT) ou a |
| gauche (BS) recopie le caractere courant. |
| |
| * 6044-6045 (BAUDS) Parametre de vitesse de la liaison serie. |
| |
| * 6046 (NOMBRE) Definition des parametres de la liaison serie. |
| |
| b7-6 nombre de bits |
| b5 horloge |
| b4-3-2 parite |
| b1 mode terminal/modem |
| b0 nombre de stop bits. |
| |
| * 6047 (GRCODE) Mot de code pour la mise en mode graphique de |
| l'imprimante. |
| |
| * 6048 (DK.OPC) Mot de commande pour le controleur de disque. |
| |
| * 6049 (DK.DRV) Numero de disque selecte |
| |
| * 604A-604B (DK.TRK) Numero de piste |
| |
| * 604C (DK.SEC) Numero de secteur |
| |
| * 604D (DK.NUM) Entrelacement de secteurs lors du formattage. |
| |
| * 604E (DK.STA) Etat du controleur de disquette. |
| |
| * 604F-6050 (DK.BUF) Pointeur sur la zone-tampon reservee aux |
| entrees/sorties disque. |
| |
| * 6051-6052 (TRACK0) Position de la tete lecteur 0. |
| |
| * 6053-6054 (TRACK1) Position de la tete lecteur 1. |
| |
| * 6055-6056 (TEMP1) Registre temporaire. |
| |
| * 6057 (TEMP2) Registre temporaire contenant lors de |
| l'initialisation la taille memoire en blocks |
| de 16Ko. |
| |
| * 6058 (ROTAT) Flag de rotation du moteur |
| |
| * 6059 (SEQUCE) Code indiquant dasn quelle sequence de |
| gestion d'ecran on se trouve. |
| |
| * 605A-605B (SCRPT) Pointeur courant dans l'ecran. |
| |
| * 605C (SAVCOL) Sauvegarde de la couleur courante. |
| |
| * 605D (ASCII) Code du dernier caractere affiche |
| |
| * 605E (READCLV) Pointeur de lecture du buffer du clavier |
| |
| * 605F (SCRMOD) Flag indiquant le mode d'affichage |
| |
| Tout a 0: mode TO7-70 |
| b7 80 colonnes |
| b6 Bitmap 16 couleurs |
| b5 Triple overlay |
| b4 Rien |
| b3 Overlay |
| b2 Page2 |
| b1 Page1 |
| b0 Bitmap 4 couleurs |
| |
| * 6060-6061 (STADR) Adresse du premier octet de la fenetre. |
| |
| * 6062-6063 (ENDDR) Adresse + 1 du dernier octet de la fenetre. |
| |
| * 6064 (TCRSAV) Sauvegarde de l'etat courant du timer. |
| |
| * 6065-6066 (TCTSAV) Sauvegarde du compte courant du timer. |
| |
| * 6067 (WRITECLV) Pointeur d'ecriture dans le buffer clavier. |
| |
| * 6068-6069 (SAVATR) Sauvegarde des attributs courants d'ecran. |
| |
| * 606A (US1) Semaphore pour les sequences "unit separator". |
| |
| * 606B (COMPT) Compteur de caracteres repetes. |
| |
| * 606C-606D (TEMP) Registre temporaire pour le transfert de |
| donnes |
| |
| * 606E-606F (SAVEST) Sauvegarde dupointeur de pile. |
| |
| * 6070 (ACCENT) Semaphore pour les séquences accents. |
| |
| * 6071 (SS2GET) Semaphore pour l'incrustation ou la lecture |
| d'une minuscule accentuee. |
| |
| * 6072 (SS3GET) Semaphore pour l'impression ou la lecture |
| d'une minuscule accentuee. |
| |
| * 6073 (BUZZ) Semaphore d'extinctions du buzzer. |
| |
| * 6074 (CONFIG) Flags de presence peripheriques. |
| |
| b7 lecture lightpen redirectee vers peripherique |
| b6 peripheriqye clavier branche |
| b5 presence modem premiere et deuxsieme generation |
| b4 imprimante connectee et ON-LINE |
| b3 interface RS232 connectee |
| b2 presence lecteur de cassettes |
| b1 presence ram disque |
| b0 interface jeu et musique connectee |
| |
| * 6075 (EFCMPT) Compteur d'effacements du curseur. |
| |
| * 6076-6077 (BLOCZ) Deux octets toujours a la valeur zero pour les |
| initialisations. |
| |
| * 6078 (SCOLS) Semaphore de scroll doux. |
| |
| * 6079-607A (BUFCLV) Adresse du buffer de reception clavier. |
| |
| * 607B (SIZCLV) Longueur du buffer de clavier. |
| |
| * 607C (ACCES) Flag indiquant la validite d'une information |
| du peripheriques clavier. |
| |
| * 607D (PERIPH) Echo des 3 bits LSB retournes par le clavier |
| lors de l'envoi d'une commande. |
| |
| * 607E (PERIPH1) Assure la chronologie des informationsissues |
| du clavier. |
| |
| * 607F (RUNFLG) Semaphore indiquant que l'option AUTO a ete choisie. |
| |
| * 6080 (DKFLG) Semaphore de presence du controleur disque. |
| |
| * 6081-6085 (IDAUT) Buffer clavier par defaut. |
| |
| * 6086 (CURFLG) Page dans laquelle bat le curseur en mode 80 |
| colonnes. |
| |
| * 6087 (TEMP2) Registre temporaire. |
| |
| * 6088-608A (RESETP) Adresse d'initialisation des nouveaux |
| peripheriques qui doit contenir un JMP |
| Adresse. |
| |
| * 608B (QWERTZ) Sur la version QWERTY, le bit 0 à 1 signifie |
| clavier en version QWERTZ. |
| |
| * 608C-60CC (STACK) Pile systeme. |
| |
| * 60CD-60CE (PTCLAV) Pointeur sur la tabl de decodage du clavier. |
| |
| * 60CF-60D0 (PTGENE) Pointeur sur le generateur de caractere |
| standard. |
| |
| * 60D1 (APPLIC) Checksum de l'application en cours. |
| |
| * 60D2 (DECALG) Ajustement pour le crayon optique. |
| |
| * 60D3-60FD (LPBUFF) Zonne-tampon pou la lecture du crayon optique |
| ou du peripherique clavier. |
| |
| * 60FE-60FF (TSTRST) Semaphore de demarrage a chaud ou a froid. |
| |
| |
| 19.4 Adresses d'entree/sortie |
| |
| Les adresses qui suivent sont donnees en hexadecimal. |
| |
| 19.4.1 Le PIA systeme 6846 |
| |
| * E7C0 (CSR) Registre d'etat |
| |
| * E7C1 (CRC) Registre de controle |
| |
| CC2 sortie son |
| CT0 ecriture cassette |
| |
| * E7C2 (DDRC) Registre de direction |
| |
| * E7C3 (PRC) Registre de donnees |
| |
| b0 (sortie) commutation memoire ecran FORME (1) et memoire |
| ecran COULEUR (0). |
| b1 (entree) interrupteur crayon optique. |
| b2 (sortie) selection banque RAM DISK (cf. tableau Bank |
| Ram). |
| b3 (sortie) inutilisable. |
| b4 (sortie) selection slot ROM (cf. Bank Rom). |
| b5 (sortie) selection slot ROM (cf. Bank Rom). |
| b6 (sortie) selection banque RAM DISK (cf. tableau Bank |
| Ram). |
| b7 (entree) lecture cassette |
| |
| * E7C5 (TCR) Registre controle timer |
| |
| * E7C6-E7C7 (TMSB-TLSB) Valeur timer |
| |
| |
| 19.4.2 Le PIA System 6821 |
| |
| * E7C8 (PRA) Registre de donnees, port A. |
| |
| b0 (entree) bit de keytest. |
| b1-7 (sortie) D1-D7 de l'imprimante. |
| |
| * E7C9 (PRB) Registre de donnees, port B. |
| |
| b0 (sortie) D0 de l'imprimante |
| b1 (sortie) strobe imprimante |
| b2 (sortie) Commande de l'incrustation |
| b3-7 (entrees-sortie) |
| selection banque memoire |
| |
| * E7CA (CRA) Registre de controle, port A |
| |
| CA1 (entree) presence carte incrustation |
| CA2 (sortie) moteur du L.E.P. |
| |
| * E7CB (CRB) Registre de controle, port B |
| |
| CB1 (entree) interruption light-pen |
| CB2 (sortie) inutilise |
| |
| |
| 19.4.3 Le PIA jeu |
| |
| * E7CC (PRA1) Registre de donnees, Port A: |
| |
| b0-7 (entree) lecture des manettes de jeux. |
| |
| * E7CD (PRB1) Registre de donnees, Port B: |
| |
| b0-5 (entree) convertisseur digital/analogique |
| b6 (entree) action manette de jeu 0 |
| b7 (entree) action manette de jeu 1 |
| |
| * E7CE (CRA1) Registre de controle, Port A: |
| |
| CA1 (entree) action manette de jeu 0 |
| |
| * E7CF (CRB1) Registre de controle, Port B: |
| |
| CB1 (entree) action manette de jeux 1. |
| |
| |
| 19.4.4 Le controleur de disquette WD 1770 / WD 2793 |
| |
| * E7D0 (STR) (lecture) Registre d'etat |
| |
| * E7D0 (CMDR) (ecriture) |
| Registre de commande |
| |
| * E7D1 (TKR) (lec/ecr) Registre de piste |
| |
| * E7D2 (SECR) (lec/ecr) Registre de secteur |
| |
| * E7D3 5DR) (lec/ecr) Registre de donnees |
| |
| Les adresses E7D4 a E7D7 correspondent respectivement aux adresses E7D0 a |
| E7D3 |
| |
| * E7D8 (DRV) (ecriture) Selection densite et drive |
| |
| |
| 19.4.5 La palette EF9369 |
| |
| * E7DA (DREG) (lec/ecr) Registre de donnees |
| |
| * E7DB (AREG) (ecriture) |
| Registre d'adresses |
| |
| ATTENTION: ne pas lire la case E7DB car il en resultera une recopie |
| parasite de certaine cases de la palette dans d'autres. |
| |
| 19.4.6 Le gate d'affichage EFGG06 |
| |
| * E7DC (LGAMOD) (ecriture) |
| Registre de commande |
| |
| Les donnees video entrant dans le boitier sont organisees sur 16 bits |
| regroupant les 8 bits formes du To7/To7-70 et les 8 bits de couleurs du |
| To7-70. |
| |
| Donnees serialisees Donnees multiplexees |
| (to7/to7-70) (to7/to7-70) |
| V V V V V V V V V V V V V V V V |
| 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 |
| 5 4 3 2 1 0 |
| |
| --------------------------------------------------------------------- |
| | CODE | Resultat | sortie vers palette | |
| --------------------------------------------------------------------- |
| | Donnees D0-D2 | Mode de serialisation | | |
| --------------------------------------------------------------------- |
| | xxxxx000 | V8-V15 serialisees | 4 sorties => 16coul | |
| | | V0-V7 multiplexees | | |
| | | | | |
| | xxxxx001 | V8-V15 serialisees | 2 sorties => 4coul | |
| | | V0-V7 serialisees | | |
| | | | | |
| | xxxxx010 | V0-V15 serialisees | 1 sortie => 2coul | |
| | | | | |
| | xxxxx011 | V0-V3 serialisees | 4 sorties => 16coul | |
| | | V4-V7 serialisees | | |
| | | V8-V11 serialisees | | |
| | | V12-V15 serialisees | | |
| | | | | |
| | xxxxx100 | V8-V15 serialisees | 1 sortie => 2 coul | |
| | | | | |
| | xxxxx101 | V0-V7 serialisees | 1 sortie => 2 coul | |
| | | | | |
| | xxxxx110 | V0-V7 serialisees | 2 sorties (3 couls) | |
| | | V8-V15 serial. priorit. | | |
| | | | | |
| | xxxxx111 | V0-V3 serialisees | 4 sorties (5 couls) | |
| | | V4-V7 ser. priorit. | | |
| | | V8-V11 ser. priorit.(+) | | |
| | | V12-V15 ser. priorit.(++) | | |
| --------------------------------------------------------------------- |
| | Donnees D3,D4 | Frequence de serial. | | |
| --------------------------------------------------------------------- |
| | xxx00xxx | 8Mhz | 320 pts/ligne | |
| | | | | |
| | xxx01xxx | 16Mhz | 640 pts/ligne | |
| | | | | |
| | xxx10xxx | 8Mhz | 320 pts/ligne | |
| | | | | |
| | xxx11xxx | 4Mhz | 160 pts/ligne | |
| --------------------------------------------------------------------- |
| | Donnees D5,D6 | Transcodage | |
| --------------------------------------------------------------------- |
| | x00xxxxx | Croisement des donnees video compatible to7-70 | |
| | | | |
| | x01xxxxx | Pas de transcodage V0-v15 -> V'0-V'15 | |
| | | | |
| | x10xxxxx | Non traite | |
| | | | |
| | x11xxxxx | Transcodage Bitmap 16 | |
| --------------------------------------------------------------------- |
| | Valeurs a ecrire en E7DC pour obtenir les 8 modes du To9 | |
| --------------------------------------------------------------------- |
| | 00000000 00 | Mode To7-70 | |
| | 00100001 21 | Bitmap 4 | |
| | 00101010 2A | 80 colonnes | |
| | 01111011 7B | Bitmap 16 | |
| | 00100100 24 | Page 1 | |
| | 00100101 25 | Page 2 | |
| | 00100110 26 | Overlay | |
| | 00111111 3F | Triple overlay | |
| --------------------------------------------------------------------- |
| |
| ATTENTION: il y a incompatibilite avec le to8 et to9+ au niveau des codes a |
| inscrire en E7DC. |
| |
| * E7DD (LGATOU) (ecriture) Registre couleur tour |
| |
| ----------------------------------- |
| | Donnee ecrite | couleur obtenue | |
| ----------------------------------- |
| | xxxx0000 | Couleur 8 | |
| | ........ | ......... | |
| | xxxx0111 | Couleur 15 | |
| | xxxx1000 | Couleur 0 | |
| | ........ | ......... | |
| | xxxx1111 | Couleur 7 | |
| ----------------------------------- |
| |
| ATTENTION: il y a incompatibilite avec le to8 et to9+ au niveau des codes a |
| ecrire. |
| |
| |
| 19.4.7 L'interface de communication SY6551 |
| |
| * E7E8 (SIOTRANSM) (ecriture) Registre de transmission des donnees |
| (SIORECPT) (lecture) Registre de reception des donnees |
| |
| * E7E9 (SIORESET) (ecriture) Registre de RESET |
| (SIOSTATUS) (lecture) Registre d'etat |
| |
| * E7EA (SIOCMDE) Registre de commande |
| |
| * E7EB (SIOCNTRL) Registre de controle |
| |
| |
| 19.4.8 l'ACIA liaison clavier 6850 |
| |
| * E7DE (SCR) (ecriture) Registre de controle |
| |
| * E7DE (SSRD) (lecture) Registre d'etat |
| |
| * E7DF (STDR) (ecriture) Registre de transmission de donnees |
| |
| * E7DF (SRDR) (lecture) Registre de reception de donnees. |
| |
| 15. Gestion des interruptions |
| |
| Nous avons appris, au travers de l'etude materielle, que certaines |
| interruptions du 6809E sont utilisees: |
| |
| - L'interruption IRQ est declanchee soit pour le dialogue clavier, |
| soit par le timer du 6846 pour faire clignoter le curseur a l'ecran |
| toutes les 100ms, soit encore pour gerer la souris ou les manettes |
| (TO8 et TO9+). |
| - L'interruption FIRQ est utilisee pour le gestion du lightpen. |
| |
| Par les differents exemples d'utilisations des routines du moniteur |
| donnes dans les chapitres precedents, nous savons que les |
| interruptions logicielles SWI sont utilisees pour arreter un programme |
| ou "reprendre la main." |
| |
| Mais ces differentes interruptions sont programmables. A chacune |
| d'elles correspond un registre RAM contenant l'adresse du programme |
| qui doit la traiter. A la mise sous tension ou apres un redemarrage "a |
| chaud", ces registres ont ete initialises avec l'adresse d'un |
| programme du moniteur. En consequence, vous pouvez deriver ou |
| aiguiller ces interruptions sur des programmes personnels, en |
| re-initialisant ces registres! |
| |
| * Aiguillage des IRQ |
| - L'adresse de votre programme de gestion de l'IRQ generee par le timer |
| doit etre implantee dans le registre TIMEPT ($6027-$6028) et dans le |
| registre IRQPT ($6021-6022). |
| - Le bit 5 du registre STATUS ($6019) doit etre force a 1. |
| - Les registres DP et S doivent etres conserves |
| - Votre programme doit obligatoirement finir par un JMP KBIN ($E830) |
| pour valider l'interruption. |
| |
| Si l'interruption IRQ est generee par une autre sources que le timer, |
| l'adresse du programme sera implatee en TIMEPT. |
| |
| Le programme de la page suivante donne un exemple d'une telle |
| procedure. Le programme de gestion de l'IRQ est ecrit a partir de |
| l'adresse $A000, et le programe de derivation est ecrit en $7000 |
| (attention, lancez le programme en $7000 et non en $A000). Apres le |
| lancement, la couleur du cadre changera toute les 100ms sans |
| pourautant "monopoliser" votre machine. |
| |
| * Aiguillage des FIRQ |
| - Vous devez mettre l'adresse de votre programme en FIRQPT |
| ($6023-$6024). |
| |
| * Aiguillage des SWI |
| - Pour gerer les SWI, vous devez mettre l'adresse de votre programme |
| en SWI1 ($602F-$6030). SWI2 saute directement en $6800, et SWI3 en |
| $7000. |
| |
| Mais attention, certaines routine du moniteur sont interruptibles et |
| vos programmes ne doivent pas modifier leurs parametres. Un JMP MENU |
| ($E82D) fait revenir a la page d'en-tete. |
| |
| * PROGRAMME DE GEST. IRQ ECRIT EN $A000 |
| * PROGRAMME DE DERIVATION EN $7000 |
| |
| TITLE GEST2IRQ |
| |
| PUTC EQU $E803 |
| RETOUR EQU $E830 |
| PILE EQU $B000 |
| |
| ORG $A000 |
| LDB #$1B |
| JSR PUTC |
| LDB PILE |
| CMPB #$67 |
| BNE SUIT |
| LDB #$60 |
| STB PILE |
| SUIT JSR PUTC |
| INC PILE |
| JMP RETOUR |
| |
| STATUS EQU $6019 |
| TIMEPT EQU $6027 |
| IRQPT EQU $6021 |
| |
| ORG $7000 |
| LDA STATUS |
| ORA #$20 |
| STA STATUS |
| LDX #$A000 |
| STX TIMEPT |
| STX IRQPT |
| LDA #$60 |
| STA PILE |
| SWI |
| END |
| |
| |
| 21 DIFFERENCES ENTRE LES TO7, TO7-70, TO9, TO8 ET TO9+ |
| |
| (sam: ce chapitre est tres mal ecrit dans la doc originale, donc |
| cette copie peut etre deroutante parfois :-( ) |
| |
| Ce chapitre resume les differences entre les TO7, TO7-70, TO9, TO8 et |
| TO9+. Il reprend ces differences tant au niveau de la page zero etdes |
| point d'entree qu'au niveau des PIA et gate-array. Les differentes |
| machines sont differenciables au niveau de la lecture de l'octet |
| $FFF0: |
| 0: TO7 |
| 1: TO7-70 |
| 2: TO9 |
| 3: TO8 |
| 6: TO9+ |
| |
| Il s'entend qu'un machine de numero d'ordre n supporte tous les points |
| d'entree des machines de numero 0 a n. |
| |
| 21.1 Differences des points d'entree |
| |
| Ces differences sont vairables pour les TO9, TO8 et TO9+ par rapport |
| aux TO7 et TO7-70. SI une differences existe entre le TO9 et les TO8 |
| et TO9+, elle sera signalee. |
| |
| Les initialisations sont faites selon la machine |
| |
| Diverses routines sont redirectee a travers des pointeurs en page |
| zero. |
| |
| PUTC permet d'accceder aux divers mode d'affichage. |
| |
| Le generateur de caractere du G2 a ete etendu. |
| |
| PLOT et DRAW gerent les 16 couleurs de fond, tous les modes. Elles ne |
| pouvaient pas bloquer les couleurs sur TO7. |
| |
| KTST rend vrai si une touche est PRESENTEMENT appuyee. Il rendra faux, |
| meme si le buffer est plein, si aucune touche n'est appuyee au moment |
| de l'appel. |
| |
| GETC fonctionne sur interruption avec un buffer programmable. |
| |
| La latence du clavier n'est plusprogrammable. |
| |
| Une fermeture des interruption interdit la reception des caractere du |
| clavier ainsi que la lecture de la souris. |
| |
| Une fermeture des interruptions n'interdit pas la reception des |
| caracteres du clavier mais interdit la lecture de la souris pour le |
| TO9+. |
| |
| GETS gere les caracters du G2. |
| |
| Les registres NOTE sont modifies au reste, et non reinitialises. |
| |
| RSCO foncitonne jusqu'a 19200 bauds en serie, on peut programmer le |
| nombre de bits, la parite, etc... Il permet d'ouvrir les voies |
| paralleles et serie en meme temps. Le code d'ecriture serie sur RSCO |
| est 9 au lie ude 8. |
| |
| DKCO permet de gere le disque virtuel, les disquettes 3"5 et 5"1/4, |
| double et simple densite, et permet de gerer le QDD sur le TO8. |
| |
| GEPE et PEIN sont nouveaux: lecture de la souris |
| |
| SETP est nouveau: programmation de la palette. |
| |
| COMS est nouveau: Appel d'une routine en ROM. |
| |
| EXTRA est nouveau: Appel a l'extramoniteur. |
| |
| 21.2 Differences des registres de la page zero |
| |
| Ces differences sont valables pour les to9,to8 et to9+ par rapport aux |
| to7 et to7-70. Si une differnce existe entre le to9 et les to8 et |
| to9+, elle sera signalee. |
| |
| TERMIN (25 octets: table des terminateurs) est replace par REDIR (22 |
| octets: table de redirection), PLAN (1 octet: numero de plan en mode |
| overlay) et SAVPAL (2 octets: sauvegarde de la couleur 14 en mode 80 |
| colonnes). |
| |
| STATUS: le bit de blocage des couleurs en graphique n'existait pas sur |
| TO7. |
| |
| NMIPT (2 octets: pointeur sur les NMI) qui n'existait pas sur TO7 est |
| replace par COPBUF (2 octets; copie de BUFFAT, reserve au systeme). |
| |
| TEMPO, DUREE, TIMBRE et OCTAVE sont modifie au reset, et non |
| reinitialises. |
| |
| GRCODE (1octet: code graphique imprimante) est remplace par DERBANK (1 |
| octet: derniere banque libre) sur les TO8 et TO9+ |
| |
| TRACK2 (2 octets: position de la tete du drive 2) est remplace par |
| TEMP1 (2 octets: temporaire). |
| |
| TRACK3 (2 octets: position de la tete du drive 3) est remplace par |
| TEMP2 (1 octet: temporaire) et ROTAT (1 octet: rotation du moteur |
| disque). |
| |
| ROTAT du to9 est remplace par RDEN sur les TO8 et TO9+. |
| |
| KEY (1 octet: derniere touche lue) est remplace par READCLV (1 octet: |
| pointeur de lecture du buffer clavier). |
| |
| CMPKB (1 octet: compteur d'interruption clavier) est remplace par |
| SCRMOD (1 octet: mode d'affichage courant). |
| |
| LATCLV (1 octet: latence clavier) est remplace par WRITECLV (1 octet: |
| pointeur d'ecriture du buffer clavier). |
| |
| ABCMP (1 octet: inutilise) est remplace par CONFIG (1 octet: |
| peripherique connectes). |
| |
| TABCHX (6 octets: table des choix du menu) est remplace par BUFCLV (2 |
| octets: pointeur vers le buffer clavier), ACCES (1 octet: reserve |
| reception clavier), PERITH (1 cotet: reserve reception clavier), |
| PERITH2 (1 octet: reserve reception clavier). |
| |
| ACCES du TO9 est remplace par DATE1 sur les TO8 et TO9+. |
| |
| PERIPH du TO9 est remplace par DATE2 sur les TO8 et TO9+. |
| |
| PERIPH1 du TO9 est remplace par DATE3 sur les TO8 et TO9+. |
| |
| PTCLAV qui n'existait pas sur TO7 ne sert plus. |
| |
| PTCLAV est remplace par DSKSIZ (1 octet: infos disque) sur les TO8 et |
| TO9+. |
| |
| PTGENE n'existait pas sur TO7. |
| |
| LPBUFF sert aussi a la lecture de la souris. |
| |
| Le sommet de la pile systeme est reserve pour les registres suivants: |
| |
| ME7E7 (1 octet: sauvegarde du registre $E7E7) sur les TO8 et |
| TO9+ |
| IDSAUT (5 octets: buffer clavier par defaut). |
| IDSAUT (4 octets: buffer clavier par defaut) sur lesTO8 et |
| TO9+ |
| CURFLG (1 octet: curseur en 80 colonnes). |
| TEMP3 (1 octet: temporaire) |
| RESETP (3 octets: debrachement a l'initialisation). |
| QWERTZ (1 octet: version QWERTZ) n'a d'effet que sur les TOx |
| version QWERTY. |
| |
| 21.3 Differences desPIA et registre memoire |
| |
| Cette partie donne les differences materielles entre les TO7, TO7-70, |
| TO9, TO8 et TO9+. |
| |
| 21.3.1 le 6846 systeme |
| |
| * E7C1 (CRC): |
| |
| TO9 CP1: inutilise |
| TO8, TO9+ CP1: request clavier |
| |
| TO9 CP2: sortie son |
| TO8, TO9+ CP2: mute son pour souris |
| |
| * E7C3 (PRC): registe de donnees |
| |
| TO7 bit2: intutilise |
| TO7-70 bit2 (sortie): Couleur tour pastel |
| TO9 bit2 (sortie): selection banque RAM DISK |
| TO8, TO9+ bit2 (sortie): selection Cartouche/Basic |
| |
| TO7-70 bit3 (sortie): LED clavier |
| TO9, TO8, TO9+ bit3: Reflet LED clavier |
| |
| TO7-70 bit4-6(sortie): Couleur tour |
| TO9 bit4-5(sortie): selection slot ROM |
| bit6 (sortie): selection banque RAM DISK |
| TO8, TO9+ bit4 (sortie): selection banque ROM moniteur |
| TO8 bit5 (entree): ACK liaison clavier |
| TO9+ bit5 (entree): reserve |
| TO8, TO9+ bit6 (entree): busy imprimante |
| |
| 21.3.2 Le 6821 systeme |
| |
| * E7C8 (PRA): registre de donnees, port A. |
| |
| TO7-70 bit0-7(entree): lecture matrice clavier |
| TO9, TO8, TO9+ bit0 (entree): bit de keytest |
| TO9, TO8, TO9+ bit1-7 (sortie): D1-D7 de l'imprimante |
| |
| * E7C9 (PRB) registre de donnees, port B. |
| |
| TO7 bit0-7(sortie): ecriture matrice clavier |
| TO7-70 bit0-2(sortie): multiplexage clavier |
| bit3-7(e/s): selection banque memoire |
| TO9, TO8, TO9+ bit0 (sortie): D0 de l'imprimante |
| TO9, TO8, TO9+ bit1 (sortie): strobe imprimante |
| TO9, TO8, TO9+ bit2 (sortie): commande d'incrustation |
| TO9, TO8, TO9+ bit3-7(e/s): selection banque memoire. |
| |
| * E7CB (CRB): registre de controle, port B. |
| |
| TO9 CB1 (entree): interruption lightpen |
| TO8, TO9+ CB1 (entree): signal code barre |
| |
| 21.3.3 L'interface de communication |
| |
| Le TOx gere la nouvelle interface de communication RS232. Il ne peut |
| gerer l'ancienne interface qui fonctionne sur les systemes TO7. Ces |
| memes systemes ne peuvent accepter la nouvelle interface. |
| |
| 21.3.4 Le controleur de disquette WD 1770/WD 2793 |
| |
| Ce controleur est remplace par le controleur THMFC1 dans les TO8 et |
| TO9+. Voir le document de sa specifiaction pour tous renseignements. |
| Seuls les points d'entree du moniteur seront compatibles. |
| |
| 21.3.6 Le gate affichage EFGG06 |
| |
| Ce gate est remplace par le gate mode page dans les TO8et TO9+. Voir |
| le document de sa specifiaction pour tous renseignements. Seuls les |
| points d'entree du moniteur seront compatibles. |
| |
| 21.3.7 La liaison clavier |
| |
| Le mode de fonctionnement sera modifie surtout ence qui concerne le |
| peripherique relie au clavier. Seuls les points d'entree du moniteur |
| seront compatibles. |
| |
| |
| Annexe: La connectique6 CLAVIER |
| |
| 6.1 Lecture rapide du clavier |
| |
| * adresse du point d'entree: KTST ($E809) |
| |
| * parametre de retour: registre 6809 CC |
| |
| Cette routine effectue une lecture rapide du clavier, pour tester si |
| une touche est ACTUELLEMENT enfoncee ou non. Si aucune touche n'est |
| enfoncee, le bit C du registre CC est mis a 0, sinon il est mis a 1. |
| |
| 6.2 Decodage du clavier |
| |
| * adresse du point d'entree: GETC ($E806) |
| |
| * parametres d'entree: registres BUFCLV ($6079-$607A), SIZCLV |
| ($607B), et sur version QWERTY: QWERTZ ($608B) |
| |
| * parametres de retour: registres 6809 B et CC |
| |
| Le clavier envoie un interruption au systeme a chaque fois qu'une |
| touche est frappee. Lors de la reception de ce caractere, le TOx le |
| range dans un buffer circulaire dont l'adresse est situee dans BUFCLV |
| ($6079-$607A). L'utilisateur peut restituer ce buffer a l'endroit de |
| son choix. SIZCLV ($607B) definit la taille de ce buffer. Quand il est |
| plein, les caracteres suivants sont ignores. Au demarrage, ce buffer |
| est situe dans la page zero du moniteur et a une longueur de 5 |
| caracteres. La longueur maximale du buffer est rangee dans un octet, |
| ce qui limite la longueur du buffer a 255 caracteres. Un taille minimum |
| de 3 caracteres pour le buffer est necessaire pour permettre la |
| reception des caracteres accentues. |
| |
| B retourne le code ASCII du caractere. Si aucune touche n'a ete |
| enfoncee, ou si l'une des deux touches SHIFT ou CNT a ete enfoncee |
| seule, ou si plusieurs touches parmi les touches SHIFT ou CNT ont ete |
| enfoncees simultanement, B retourne la valeur zero. |
| |
| La touche SHIFT selectionne le caractere se trouvant en haut de la |
| touche. La touche CNT force a 0 le bit 6 du code ASCII du caractere de |
| la touche. |
| |
| L'acces aux minuscules accentuees necessite en general trois frappes |
| consecutives: |
| |
| 1° frappe: touche accent (ACC) |
| |
| 2° frappe: touche SHIFT en meme temps que la touche |
| representant l'accent |
| |
| 3° frappe: lettre minuscule (ou majuscule en QWERTY) |
| |
| Cependant sur le TOx, l'acces a certaine minuscules accentuees |
| couramment utilisees en Francais peut etre fait en une frappe: e', e`, |
| c, , a`, u`. |
| |
| De meme, l'accent trema peut ne pas etre precede de la touche ACC; |
| dans ce cas deux frappes suffisent. |
| |
| Dans la version QWERTY, les caracteres A, O, U majuscule ou minuscule |
| avec un trema peuvent etre obtenus en une frappe. |
| |
| Mais dans tous les cas, vous devez faire trois appels consecutifs a |
| cette routine: |
| |
| le 1° appel retourne dans B le code de la touche ACC, soit $16 |
| |
| le 2° appel retourne dans B le code de l'accent ou de la |
| cedille |
| |
| le 3° appel retourne dans B le code du la minuscule. |
| |
| Le TOx dispose de 10 touches de fonctions. Les codes envoyes par ces |
| touches vont de $90 a $99. |
| |
| Le keypad du TOx peut etre reconfigure de facon a envoyer des codes |
| differents des codes des chiffres. Dans ce cas les 10 chiffres 0 a 9 |
| envoyent les codes $9A a $A3, le point envoie le code $A4 et la touche |
| ENT le code $A5. |
| |
| Sur la version QWERTY, il est possible d'intervertir les touches Z et |
| Y de facon a passer en version QWERTZ. Ceci se fait par l'appui sur la |
| touche CTRL, et la frappe successive sur les touches CAPS LOCK, A et |
| 6. Le fait de refaire cette sequence repasse en version QWERTY. Au |
| demarrage a froid de la machine, le clavier est positionne en QWERTY, |
| un reset ne modifie pas l'etat du clavier. On peut aussi passer le |
| clavier en version QWERTZ en mettant a 1 le bit 0 du registre QWERTZ |
| ($608B); en remettant ce bit 0, on repasse en version QWERTY. Seul ce |
| bit doit etre modifie. |
| |
| 6.3 Programmation du clavier |
| |
| * adresse du point d'entree: GETC ($E806) |
| |
| * parametres d'entree: registre 6809 B, registre STATUS |
| ($6019) |
| |
| Le clavier peut etre programme. 7 codes lui permettent de positionner |
| le CAPS LOCK ou de selecter le mode keypad. Un des codes suivants doit |
| etre positionne dans B, tandis que lebit 1 de STATUS ($6019) doit etre |
| mis a 1: |
| |
| - $F8: reinitialisation soft du clavier: Caps lock on, keypad |
| selectionne pour les chiffres, peripheriques clavier pouvant |
| parler. |
| |
| - $F9: CAPS LOCK on |
| |
| - $FA: CAPS LOCK off |
| |
| - $FB: Selection code speciaux pour le keypad |
| |
| - $FC: selection chiffres pour le keypad |
| |
| - $FD: peripherique autorise a emettre |
| |
| - $FE: peripherique interdit a emettre |
| |
| Le bit 1 de STATUS ($6019) est remis a zero des que l'operation est |
| effectuee. |
| |
| |
| 16 PROGRAMMATION DE LA PALETTE |
| |
| * adresse du point d'entree: SETP ($EC00) |
| |
| * parametres d'entree: registres 6809 A, X et Y |
| |
| * parametre de sortie: registre 6809 X |
| |
| Cette routine permet de definir la valeur de chacune des 16 couleurs |
| affichages parmi un palette de 4096 couleurs. |
| |
| Les couleurs sont definies par les trois composantes Rouge, Vert et |
| Bleu, ainsi qu'un bit definit si la couleur est transparentre en |
| incrustation. Le codage est le suivant: |
| |
| xxxMBBBB VVVVRRRR code sur 2 octets, |
| |
| ou M represente la transparence en incrustation (1: opaque, 0: |
| transparent), BBBB le codage du bleu, VVVV le codage du vert et RRRR |
| le codage du rouge. Chaque composante etant codee sur 4 bits, elle |
| peut donc prendre 16 valeurs. Trois composantes permettent donc |
| d'avoir 16x16x16, soit 4096 couleurs. |
| |
| 16.1 Lecture ou ecriture d'un case de la palette |
| |
| Le numero de la couleur que l'on veut modifier est rangee dans le |
| registre A. |
| |
| Le registre X est un masque ET. Il permet de choisir les bits que l'on |
| veut modifier. Les bits a 0 seront modifies, ceux a 1 conserves. |
| |
| Le registre Y est un masque OU. Il permet de fixer l'etatt des bits |
| qui sont a 0, ou qui sont mis a 0 par le masque ET. |
| |
| En sortie, X contient la valeur rangee dans la palette. |
| |
| L'operation realisee est: PALETTE = (PALETTE and X) or Y. |
| |
| REMARQUE: cette operation est effectuee sans attente de retour trame, |
| mais avec attende de retour de ligne sur les TO8 et TO9+. |
| |
| Exemple: si on veut mettre le vert a une demi-intensite sans toucher |
| aux autres composantes pour la couleur 2,on charge: |
| |
| A avec 2 |
| X avec %111 1 1111 0000 1111 ($FF0F) |
| Y avec %000 0 000 0111 0000 ($0070) |
| |
| En sortie X contient la valeur de la case 2 de la palette. |
| |
| Exemple: si on veut mettre la couleur 5 transparente pour |
| l'incrustation, on charge: |
| |
| A avec 5 |
| X avec %111 0 1111 1111 1111 ($EFFF) |
| Y avec %000 0 0000 0000 0000 ($0000) |
| |
| En sortie X contient la valeur de la case 5 de la palette. |
| |
| Exemple: pour lire le contenu d'une case sans la modifier, il est |
| evident que X doit etre a $FFFF et Y a 0. En sortie, le resultat est |
| dans X. |
| |
| 16.2 Programmation complete de la palette |
| |
| Le registre A dans ce cas doit contenir $FF. Le registre X doit |
| pointer une table de 32 octets qui contiennet les 16 valeurs des 16 |
| couleurs codees comme decrit precedemment. |
| |
| Les 2 premiers octets codent la couleur 0, tandis que les 2 derniers |
| codent la couleur 15, ceci en mode 40 colonnes. |
| |
| Remarque: cette operation est effectuee avec attente de retour trame. |
| |
| 16.3 Cases memoires utilisees selon le mode d'affichage |
| |
| Les cases de la palette du TOx sont, pour des raisons materielles, |
| echangees selon les modes d'affichage. |
| |
| En programmation d'une case seule de la palette, la table suivante |
| doit etre utilisee pour programmer la palette. F represente la couleur |
| a echanger pour modifier la forme, f pour le fond. Les cases reperees |
| pardes - ne peuvent etre modifees sur le TO9, meme pour le tour |
| |
| Numero couleur : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
| ---------------------------------------------------------------- |
| Cases palette : |
| TO7-70 : Ff Ff Ff Ff Ff Ff Ff Ff Ff Ff Ff Ff Ff Ff Ff Ff |
| 80 colonnes : f F - - - - - - - - - - - - - - |
| Page 1 : f F |
| Page 2 : f F |
| Overlay : f F2 F1 |
| Bitmap 4 : F F F F |
| Bitmap 16 : F F F F F F F F F F F F F F F F |
| Triple overlay : f F1 F2 F3 F4 |
| |
| En programmation complete de la palette, les numeros logiques ne |
| correspondent plus aux numeros physiques. Il faut donc acceder a la |
| table de conversion suivante pour modifier les couleurs selon le mode |
| selectionne. |
| |
| Numero couleur : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
| ---------------------------------------------------------------- |
| Cases palette : |
| TO7-70 : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
| 80 colonnes : 8 14 10 11 12 13 9 15 0 1 2 3 4 5 6 7 |
| Page 1 : 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 |
| Page 2 : 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 |
| Overlay : 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 |
| Bitmap 4 : 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 |
| Bitmap 16 : 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 |
| Triple overlay : 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 |
| |
| 16.4 Contenu du fichier PALETTE.CFG |
| |
| Le fichier PALETTE.CFG contient les donnees d'une palette sauvegardee |
| par l'utilistaire "REGLAGE DE LA PALETTE". |
| |
| Il s'agit d'un fichier binaire de 32 octers (16 mots de 16 bits) |
| decrivant les 16 coulerus de la palette depuis la coulkeur 0 jusqu'a |
| la couleur 15. |
| |
| Chaque mot a le format suivant: |
| |
| xxxMBBBB VVVVRRRR |
| |
| M represente le bit d'incrustation |
| BBBB est la quantite de bleu |
| VVVV est la quantite de vert |
| RRRR est la quantite de rouge |
| x sans importance. |
| |
| |
| 18 APPEL de l'EXTRA-MONITEUR |
| |
| * adresse du point d'entree: EXTRA ($EC0C) |
| |
| * parametres d'entree: registre 6809 B, registres page |
| $6100-$62FF selon routine. |
| |
| * parametres de sortie: registre 6809 B, registres pages |
| $6100-$62FF selon routine. |
| |
| Ce point d'entree permet d'acceder aux routines de l'extramoniteur. En |
| entree, B contient le numero de la routine a executer, les registres |
| necessaires des pages $6100-$62FF devant etre positionnes selon la |
| routine appelee. |
| |
| En sortie, le registre B contient un numero d'erreur, les registres |
| des pages $6100-$62FF etant modifies si necessaire. |
| |
| Vous referer au document concernant l'extramoniteur pour la |
| description complete des routines. |
| |
| |
| LES EQUATES D'EXTRAMON |
| |
| *** MODES D'OUVERTURE POUR LA ROUTINE OPEN |
| |
| M.SQI EQU $10 Ouverture en input sequentiel |
| M.SQO EQU $20 Ouverture en output sequentiel |
| M.RND EQU $40 Ouverture en direct (I/O) |
| |
| *** LES OBJETS TORTUES |
| |
| TX EQU 6 position de la tortue X |
| TY EQU 9 position de la tortue Y |
| TROT EQU 12 rotation de la tortue |
| TTAI EQU 13 taille de la tortue |
| TDIR EQU 14 direction de la tortue |
| TFORME EQU 16 forme de la tortue |
| |
| *** L'ACCUMULATEUR FLOTTANT |
| |
| DBLFLG EQU $6103 flag de double procision |
| VALTYP EQU $6105 indicateur de type |
| FAC EQU $614E accumulateur |
| FACEXP EQU $614E exposant |
| FACHO EQU $614F octet fort de la mantisse |
| FACMO EQU $6150 octet moyen de la mantisse |
| FACLO EQU $6151 octet faible de la mantisse |
| |
| DFACHO EQU $6152 4 octets de plus pour la double precision |
| DFACMH EQU $6153 |
| FFACML EQU $6154 |
| DFACLO EQU $6155 |
| |
| FACSGN EQU $6156 signe de FAC (0 ou -1) quand non codé |
| |
| *** LES ARGUMENTS FLOTTANTS (NON CODE) |
| |
| ARGEXP EQU $6159 |
| ARGHO EQU $615A |
| ARGMO EQU $615B |
| ARGLO EQU $615C |
| |
| DARGHO EQU $615D 4 octets de plus pour double precision |
| DARGMH EQU $615E |
| DARGML EQU $615F |
| DARGLO EQU $6160 |
| |
| ARGSGN EQU $6161 |
| |
| DEBZON EQU $616B Debut et fin de la zone tampon pour EXTRAMON |
| FINZON EQU $616E |
| |
| EOFFLG EQU $6178 flag de fin de fichier (zero => non fini; non |
| zero => fini) |
| |
| *** TEMPORAIRES POUR PRINT USING |
| |
| DPWID EQU $617A |
| FLDWID EQU $617B |
| PUMASK EQU $617C |
| |
| ZPERR EQU $6185 rattrapage d'erreur d'EXTRAMON. BASIC |
| l'initialise a ERROR dans CLEAR. |
| |
| RSKCHG EQU $6189 flag de risque de changement de disque |
| |
| NBANK EQU $618c noùbre de banques accessibles |
| |
| *** VARIABLES LIEES AUX DISQUES |
| |
| VERFLG EQU $618D pour VERIFY ON ou OFF |
| NAMSEC EQU $618E le secteur du catalogue contenant le nom |
| recherche |
| |
| NAMSLT EQU $618F un pointeur vers le slot dans le secteur (voir |
| NAMSEC), ou zero si le nom n'a pas ete trouve. |
| |
| CARCOU EQU $6196 le caractere que DFCHRI vient de lire. SECBUF |
| et FATPTR doivent etre positionnes avant le |
| 1er appel au DOS sous peine d'erreur. |
| |
| SECBUF EQU $6197 un pointeur vers le buffer de lecture d'un |
| secteur |
| |
| FATPTR EQU $6199 pointeur vers la zone ou l'utilisateur veut |
| ranger les FATs (DSBs) |
| |
| DSBLEN EQU 6+2*80 |
| |
| SWPFLG EQU $619D un flag pour dire que l'on veut un swap |
| disquette |
| |
| *** VARIABLES GLOBALES NECESSAIRES AU GRAPHIQUE |
| |
| COULEUR EQU $619F |
| TRATYP EQU $61A0 type de trace 0=normal; 1=normal sans couleur; |
| 2=en ou exclusif |
| |
| XXXX EQU $61A1 |
| YYYY EQU $61A3 le curseur graphique |
| |
| XL EQU $61A5 la fenetre graphique |
| YB EQU $61A5 |
| XR EQU $61AB de XLeft, YBottom a XRight, YTop. |
| |
| *** TEMPORAIRE POUR L'EDITEUR |
| |
| DEFTXT EQU $61E0 pointeur vers du texte a afficher |
| |
| *** VARIABLES LOCALES AU TRACE D'ELLIPSES |
| |
| FILFLG EQU $61EF doit-on remplir l'ellipse ou le rectangle... |
| AXEV EQU $61F0 axe vertical |
| AXEH EQU $61F1 axe horizontal |
| CAMFLG EQU $61F2 camebert ? |
| ALPHA1 EQU $61F3 |
| ALPHA2 EQU $61F7 |
| |
| *** VARIABLES LOCALES AU CODAGE ET AU DECODAGE |
| |
| X0COD EQU $61D6 extremites du rectangle |
| Y0COD EQU $61D7 |
| X1COD EQU $61D8 |
| Y1COD EQU $61D9 |
| |
| *** DIVERS DE $6200 a $62FF |
| |
| TYPDSK EQU $6219 type de controleur |
| TABDEN EQU $621A table des densites par disque |
| MAXMOD EQU $6223 |
| FCBNUM EQU $6244 numero de FCB courant |
| RLEN EQU $6247 longueur de l'enregistrement du fichier a |
| acces direct |
| |
| PUTFLG EQU $6249 pour distinguer PUT de GET ! |
| FILMOD EQU $624B mode du fichier (OPEN) |
| FILTYP EQU $624C type de fichier 0=BASIC program; 1=BASIC data |
| file; 2=machine language file |
| ASCFLG EQU $624D Flag ASCII (0=fichier non ASCII; $FF=fichier |
| ASCII) |
| FILNAM EQU $624F buffer nom de fichier |
| FILEXT EQU $6257 buffer extension nom de fichier |
| OPTBUF EQU $625A buffer de description des options |
| MACP EQU $627D le pointeur vers le motif peinture |
| WITH EQU $6288 flag avec ou sans couleur |
| |
| IWTFLG EQU $62A9 pour l'editeur, lorsque ce flag devient <> de |
| 0, on sort sans reflechir !!! |
| BUFFRE EQU $62AA pour l'OPEN en acces direct. Pointe vers un |
| buffer (de longueur RLEN) ou l'appelant |
| retrouvera l'enregistrement demande. |
| |
| ONOFF EQU $62B0 Flag avec ou sans disque |
| BLOCS EQU $62AE pointe sur une table de descripteur de blocs |
| |
| |
| 13. Commutation des memoires ROM |
| |
| Le TO9 possede cinq boitiers ROM accessibles entre les adresses 0000 |
| et 3FFF (IW 56, 40, 39, 38 et la cartocuhe exterieure). Ces boitiers, |
| hormis la cartouche, contiennent l'ensemble des logiciels integres au |
| TO9: |
| - FICHE ET DOSSIERS |
| - PARAGRAPHE |
| - BASIC 128 |
| - BASIC 1.0 |
| - REGLAGES ET PREFERENCES |
| - EXPLOITATION DE FICHIERS |
| et l'EXTRAMON. |
| |
| Cet espace adressable de 16Ko ne convient pas a tous les logiciels. |
| Certains en effet depassent cette capacite et sont alors organises en |
| banques commutables de 16Ko. La routine COMS permet d'acceder a |
| n'importe quel boitier ROM. Dans ce cas, le registre U du |
| microprocesseur 6809E doit contenir l'adresse de debut du programme a |
| executer, et l'accumulateur A contient un octet defini de la maniere |
| suivante: |
| |
| 00SS00BB |
| |
| SS repere le numero de boitier et BB le numero de banque. Le tableau |
| ci-dessous vous aidera dans ces choix. |
| |
| Programme SS BB |
| ---------------------------------- |
| Cartouche externe 11 XX |
| Fiches et dossiers 10 XX |
| Paragraphe 01 XX |
| BASIC 128 00 00 |
| Extramon 00 01 |
| BASIC 1 00 10 |
| Exploitation fichiers 00 11 |
| |
| Chaque ROM possede a l'adresse $20 son numero de banque. Ainsi le |
| moniteur peut s'assurer de l'identite de la banque selecte, afin de |
| mieux se reperer dans les boitiers constitues de plusieurs banques de |
| 16Ko en parallele. Dans le cas des TO8 et TO9+, le tableau suivant |
| doit etre utilise pour la determination du contenu de A: |
| |
| Programme SS BB |
| ---------------------------------- |
| Cartouche externe 11 XX |
| BASIC 512 00 00 |
| Extramon 00 01 |
| BASIC 1 00 10 |
| Exploitation fichiers 00 11 |
| |
| Nom: COMS |
| Adresse du point d'entree: $EC03 |
| Parametre d'entree: Accu A; registre U du 6809E |
| Parametre de retour: Neant |
| Effet: Permet d'acceder a n'importe quel |
| programe en ROM. |
| </PRE> |
| </BODY></HTML> |