| <HTML> |
| <HEAD> |
| <TITLE>La page du hardware TO8</TITLE> |
| </HEAD> |
| <BODY> |
| <H2> |
| Informations sur l'architecture interne du TO8 |
| </H2> |
| <P> |
| Ces informations proviennent de diverses sources, en premier lieu la revue |
| spécialisée Thomson TEO<I>phile</I> (disparue vers la fin des |
| années 80). Ensuite le désassemblage de la ROM du TO8.<BR> |
| Les dernières informations m'ont été apportées |
| par Alexandre Pukal<BR> |
| (E7E6 - BORDER - DISK) |
| <H2> |
| I - Organisation de la mémoire |
| </H2> |
| <P> |
| <H3> |
| I.1 Carte mémoire (espace d'adressage du 6809) |
| </H3> |
| <P> |
| <TABLE BORDER CELLPADDING="2"> |
| <TR> |
| <TD>Debut</TD> |
| <TD>Fin</TD> |
| <TD>Taille</TD> |
| <TD>Description</TD> |
| </TR> |
| <TR> |
| <TD>0000</TD> |
| <TD>3FFF</TD> |
| <TD>16ko</TD> |
| <TD>ROM1</TD> |
| </TR> |
| <TR> |
| <TD>4000</TD> |
| <TD>5FFF</TD> |
| <TD>8ko</TD> |
| <TD>VRAM (video RAM)</TD> |
| </TR> |
| <TR> |
| <TD>6000</TD> |
| <TD>9FFF</TD> |
| <TD>16ko</TD> |
| <TD>RAM1 (Fixe)</TD> |
| </TR> |
| <TR> |
| <TD>A000</TD> |
| <TD>DFFF</TD> |
| <TD>16ko</TD> |
| <TD>RAM2 (fenêtre de RAM paginée)</TD> |
| </TR> |
| <TR> |
| <TD>E000</TD> |
| <TD>FFFF</TD> |
| <TD>8ko</TD> |
| <TD>ROM2 (Moniteur)</TD> |
| </TR> |
| <TR> |
| <TD>E000</TD> |
| <TD>E7FF</TD> |
| <TD>-</TD> |
| <TD>accès aux périphériques</TD> |
| </TR> |
| </TABLE> |
| <P> |
| <H3> |
| I.2 Organisation des banques : |
| </H3> |
| <P> |
| <P> |
| ROM1 est composé de 4 banques de 16ko |
| <UL> |
| <LI> |
| Banque 0 : Basic 512 Part I |
| <LI> |
| Banque 1 : Basic 512 Part II |
| <LI> |
| Banque 2 : Basic 1.0 |
| <LI> |
| Banque 3 : Exploitation de fichiers |
| </UL> |
| On peut également mapper à cette addresse, une des 16 ou 32 pages de RAM. |
| <P> |
| VRAM est composé de 2 banques de 8ko (appelée forme et couleur |
| pour des raisons historiques) |
| <P> |
| RAM1 n'a pas de banques |
| <P> |
| RAM2 est composé de 16 (TO8 de 256ko) à 32 banques (TO8 de |
| 512ko) de 16ko, les pages 0 et 1 étant la VRAM et RAM1. |
| <P> |
| ROM2 est composé de 2 banques de 8ko partiellement accessibles (la |
| fenêtre d'accès aux périphériques) |
| <P> |
| <H3> |
| I.3 Commutation des banques de RAM2: |
| </H3> |
| <P> |
| <P> |
| Il existe 2 modes de commutation (pour conserver la compatibilité |
| TO7/70 et TO9).Le bit 4 du registre $E7E7 détermine le mode (1 mode |
| registre /0 mode PIA) |
| <P> |
| <P> |
| <B>Mode registre (mode normal)</B> |
| <P> |
| Elle se fait par écriture dans le registre (8bits) $E7E5. La premiere |
| page porte le numéro 2. |
| <P> |
| <B>Mode PIA (mode compatible TO7/70 et TO9)</B> |
| <P> |
| Seules 6 banques sont accessibles dans ce mode. Les bits 3 à 7 du |
| registre de direction du port B (DDRB) effectuent cette commutation. |
| <P> |
| exemple : (Le numero de la banque est dans le registre A) |
| <PRE>RCOM EQU $E7CB registre commande<BR>RDIR EQU $E7C9 registre |
| direction<BR>TABANK FCB $0f,$17,$e7,$67,$a7,$27 |
| COMMUT PSHS D,X<BR> LDB RCOM<BR> ANDB #$FB<BR> STB RCOM<BR> LDX #TABANK<BR> LDA A,X<BR> STA RDIR<BR> ORB #$04<BR> STB RCOM<BR> PULS D,X<BR> RTS |
| </PRE> |
| <P> |
| <P> |
| Rem : Les numéros des banques ne se correspondant pas dans les 2 modes. |
| <P> |
| <H3> |
| I.4 Commutation des banques de ROM2: |
| </H3> |
| <P> |
| <P> |
| Cette commutation passe par le 6846 système. Le bit 4 du PRC situé |
| en E7C3 selectionne la banque de ROM moniteur (2pages). |
| <P> |
| <H3> |
| I.5 Commutation des banques de ROM1: |
| </H3> |
| <P> |
| <P> |
| Le mécanisme principal consiste à tenter d'écrire dans |
| la ROM. Une écriture à l'adresse 0000 commute la banque 0, |
| une écriture à l'adresse 0001 commute la banque 1, etc... |
| <P> |
| De plus, le bit 2 du PRC situé en E7C3 effectue la selection entre |
| la cartouche et la ROM interne |
| <P> |
| Enfin le registre E7E6 du Gate Mode Page permet de venir mapper une banque |
| de RAM dans cet emplacement |
| <H3> |
| I.6 Selection des pages de VRAM |
| </H3> |
| <P> |
| <P> |
| La sélection se fait par le bit 0 du PIA système situé |
| en E7C3 |
| <UL> |
| <LI> |
| 1 -> forme |
| <LI> |
| 0 -> couleur |
| </UL> |
| <P> |
| Le mode d'affichage se selectionne par une écriture dans le Gate Array |
| à l'adresse E7DC |
| <UL> |
| <LI> |
| 5A - Mode compatible (40 colonnes) |
| <LI> |
| 5B - Mode 80 colonnes |
| <LI> |
| 59 - Mode Bitmap 4 |
| <LI> |
| 5941 - Mode Bitmap 4 spécial |
| <LI> |
| 48 - Mode Page1 / 49 - Mode Page 2 |
| <LI> |
| 4A - 4B - Mode Overlay |
| <LI> |
| 5E - Mode Bitmap 16 |
| <LI> |
| 88-89-8A-8B - Mode Triple Overlay |
| </UL> |
| <P> |
| <HR> |
| <H2> |
| II Les Ports du TO8 |
| </H2> |
| <P> |
| <H3> |
| II.1 6846 système |
| </H3> |
| <P> |
| E7C1 - CRC<BR> |
| E7C3 - PRC |
| <P> |
| CRC: |
| <UL> |
| <LI> |
| bit2 : Sortie Son 1bit |
| <LI> |
| CP1 : request clavier |
| <LI> |
| CP2 : Mute son pour souris |
| </UL> |
| <P> |
| PRC: |
| <UL> |
| <LI> |
| bit0(E/S) : Selection page VRAM (Forme/Fond) |
| <LI> |
| bit2(Sortie) : Sélection Cartouche/Basic |
| <LI> |
| bit3(Entrée) : Reflet LED clavier |
| <LI> |
| bit4(Sortie) : Sélection banque ROM moniteur |
| <LI> |
| bit5(Entrée) : Ack liaison clavier |
| <LI> |
| bit6(Entrée) : Busy imprimante |
| </UL> |
| <P> |
| <H3> |
| II.2 PIA système 6821 |
| </H3> |
| <P> |
| <P> |
| E7C8 - PORTA ou DDRA<BR> |
| E7C9 - PORTB ou DDRB<BR> |
| E7CA - CRA<BR> |
| E7CB - CRB |
| <P> |
| PORTA: |
| <UL> |
| <LI> |
| bit0 : Keytest |
| <LI> |
| bit1-7 : D1 à D7 de l'imprimante |
| </UL> |
| <P> |
| PORT B: |
| <UL> |
| <LI> |
| bit0 : D0 de l'imprimante |
| <LI> |
| bit1 : strobe de l'imprimante |
| <LI> |
| bit2 : commande d'incrustation |
| </UL> |
| <P> |
| DDRB: |
| <UL> |
| <LI> |
| bit3-7 : Sélection banque RAM (mode compatible TO7/70 et TO9) |
| </UL> |
| <P> |
| CRB: |
| <UL> |
| <LI> |
| CB1 : signal code barre |
| </UL> |
| <P> |
| <H3> |
| II.3 PIA interface manette |
| </H3> |
| <P> |
| <P> |
| E7CC - PORTA ou DDRA<BR> |
| E7CD - PORTB ou DDRB<BR> |
| E7CE - CRA<BR> |
| E7CF - CRB |
| <P> |
| PORTA: |
| <UL> |
| <LI> |
| bit0-3 : Direction Joy0 D,G,B,H (1 au repos) |
| <LI> |
| bit4-7 : Direction Joy1 |
| </UL> |
| <P> |
| PORTB: |
| <UL> |
| <LI> |
| bit0-5 : Convertisseur numérique -> analogique (son) |
| <LI> |
| bit6 : Fire Joy0 (1au repos) |
| <LI> |
| bit7 : Fire Joy1 |
| </UL> |
| <P> |
| CRA: |
| <UL> |
| <LI> |
| CRA1 est relié au Fire Joy0 |
| <LI> |
| CRA2 est relié au Fire Joy1 |
| </UL> |
| <P> |
| <H3> |
| II.4 Les circuits "Gate Array" |
| </H3> |
| <P> |
| <P> |
| E7E5 - GE7E5<BR> |
| E7E6 - GE7E6 <BR> |
| E7E7 - GE7E7 |
| <P> |
| GE7E5: |
| <UL> |
| <LI> |
| bit0-4: sélection banque ram |
| </UL> |
| <P> |
| GE7E6: |
| <UL> |
| <LI> |
| bit 4,3,2,1,0 : numéro de page RAM utilisée dans l'espace cartouche |
| ( de 0 a 31 ) |
| <LI> |
| bit 5 : bit de sélection de l'espace cartouche<BR> |
| 0 l'espace cartouche n'est pas recouvert par de la RAM<BR> |
| 1 l'espace cartouche est recouvert par de la RAM dont le numéro est |
| donné par les bits 4 à 0 |
| <LI> |
| bit 6 : bit de protection en écriture dans la page RAM |
| sélectionnée lorsque l'espace cartouche est recouvert pas cette |
| même page de RAM. ( bit 5 = 1 ). C'est ce qui permet de passer les |
| cartouches MEMO7 en disquettes et de les lancer avec l'option 4 du menu du |
| TO8.<BR> |
| 0 écriture impossible<BR> |
| 1 écriture autorisée |
| <LI> |
| bit 7 toujours à 0 |
| </UL> |
| <P> |
| GE7E7: |
| <UL> |
| <LI> |
| bit4 : Selection mode commutation RAM (0 Mode PIA/1 Mode registre) |
| <LI> |
| bit5 : Selection 50/60Hz |
| <LI> |
| bit7 : Synchro Trame |
| </UL> |
| <P> |
| <P> |
| E7DA - P_WRITE<BR> |
| E7DB - P_INDEX<BR> |
| E7DC - G_MODE<BR> |
| E7DD - BORDER |
| <P> |
| P_INDEX : registre d'index de modification de palette (0-31) |
| <P> |
| P_WRITE : registre d'écriture dans la palette |
| <P> |
| G_MODE : Mode graphique |
| <P> |
| BORDER : |
| <UL> |
| <LI> |
| bit0 à 3: couleur à utiliser pour le pourtour de l'écran |
| <LI> |
| bit7 et bit6 : Page de Ram utilisée pour l' affichage<BR> |
| 00 - systeme normal type TO7<BR> |
| 01 - RAM1 <BR> |
| 10 - Bank 1<BR> |
| 11 - Bank 2 |
| </UL> |
| <P> |
| </BODY></HTML> |