L'Oric émulé
Avant de voir comment Phosphoric émule l’Oric, voyons ce qu’il émule : quatre puces principales sur un bus, 64 Ko d’adresses, et une façon bien à elle de mettre de la couleur à l’écran.
Dans cette page
Deux modèles, une même carte
Phosphoric émule les deux machines de Tangerine :
| Oric-1 (1983) | Oric Atmos (1984) | |
|---|---|---|
| ROM | BASIC 1.0 (basic10.rom) | BASIC 1.1 (basic11b.rom) |
| Vecteur de RESET | $EA59 | $ECCC |
| Au démarrage | 47870 BYTES FREE | 37631 BYTES FREE |
| Choix | détecté d’après la ROM, ou -m oric1 / -m atmos |
Les deux ROM font 16 Ko. Phosphoric reconnaît la version d’après la ROM chargée et adapte ses corrections de la ROM (chargement rapide de cassette, notamment) à chacune.

Les puces
- Le processeur, un 6502 NMOS à 1 MHz. Il fait un accès au bus par cycle. Sa version NMOS a des particularités que Phosphoric reproduit : des accès factices (lectures ou écritures sans but apparent, au milieu de certaines instructions), 105 opcodes « illégaux » en plus des 151 officiels, et un mode décimal.
- L’ULA (HCS 10017) fabrique l’image. Elle partage la mémoire avec le processeur : dans chaque microseconde, le 6502 accède d’abord, puis l’ULA lit un octet de l’écran. Il n’y a donc jamais de conflit ni de cycle volé.
- Le VIA 6522 a deux ports de 8 bits et deux minuteries. Il sélectionne la colonne du clavier, reçoit le signal de la cassette, pilote l’imprimante, et déclenche les interruptions du système.
- Le PSG AY-3-8912 fait le son : trois voix carrées, un générateur de bruit, seize formes d’enveloppe. Son port A sert aussi au clavier et à la manette IJK.
La mémoire
Quelques adresses reviennent sans cesse :
| Adresse | Contenu |
|---|---|
$0300-$03FF | la page 3 : entrées-sorties. Le VIA en $0300, les cartes d’extension au-dessus. |
$A000-$BF3F | l’écran HIRES : 200 lignes de 40 octets. |
$B400 et $B800 | les jeux de caractères du mode texte (standard et secondaire). |
$BB80-$BFDF | l’écran texte : 28 rangées de 40 caractères. |
$C000-$FFFF | la ROM BASIC, ou, avec le Microdisc, de la RAM et la ROM du contrôleur en $E000. |
En mode HIRES, les jeux de caractères se déplacent en $9800 et $9C00, puisque l’écran
graphique occupe leur place.
La couleur par attributs série
L’ULA n’a pas de mémoire de couleur. La couleur se règle dans l’écran lui-même : un octet dont les bits 5 et 6 sont à zéro n’est pas un caractère mais un attribut, qui change l’état de la suite de la ligne :
| Valeur | Effet |
|---|---|
| 0 à 7 | couleur d’encre (INK) |
| 8 à 15 | style du texte : jeu secondaire, double hauteur, clignotement |
| 16 à 23 | couleur de fond (PAPER) |
| 24 à 31 | mode vidéo : texte ou HIRES, 50 ou 60 Hz |
Un attribut occupe sa place à l’écran : il s’affiche comme une cellule de la couleur de fond. Le bit 7 d’un octet inverse sa cellule. Chaque ligne repart en encre blanche sur fond noir, puis la ROM pose ses propres attributs en début de ligne. C’est pourquoi l’écran de démarrage de l’Atmos est noir sur blanc.
Le clavier
Le clavier est une matrice de 8 colonnes sur 8 rangées. Le VIA choisit une colonne (bits 0 à 2 de son port B, par un décodeur 74LS138), le PSG choisit les rangées à tester (son registre 14), et le bit 3 du port B du VIA dit si une touche est enfoncée. La ROM balaie ainsi tout le clavier, colonne par colonne.
Phosphoric reproduit cette matrice, propose les dispositions QWERTY et AZERTY, et synchronise sa
frappe automatique (--type-keys) sur ce balayage : aucune touche n’est perdue, même si un
programme lit le clavier lentement.
L’image, en chiffres
| Mesure | Valeur |
|---|---|
| Texte | 40 colonnes × 28 rangées, caractères de 6 × 8 pixels |
| HIRES | 240 × 200 pixels, puis 3 rangées de texte |
| Couleurs | 8 (noir, rouge, vert, jaune, bleu, magenta, cyan, blanc) |
| Ligne | 64 cycles, dont 40 de cellules visibles |
| Trame | 312 lignes PAL, dont 224 visibles, 50 par seconde |
Le détail du balayage est dans L’image et l’ULA.