# Atari 8-bits

L'Atari 8-bits désigne une série d'ordinateurs personnels 8 bits conçus par Jay Miner et produits par Atari. Les premiers modèles, Atari 400 et Atari 800, ont été distribués à partir de novembre 1979. À l'époque, l'Atari 400 valait en France environ 1 990 francs (aux alentours de 1100 euros de 2023 (convertisseur INSEE)). La gamme XL (600XL et 800XL) a été introduite en 1983, et la gamme XE (65XE, 130XE, 800XE) en 1985. La série d'ordinateurs a été un grand succès commercial, vendant deux millions d'unités entre 1979 et 1985.

## Les modèles

* Atari 400 (1979)
* Atari 800 (1979)
* Atari 1200XL (1982)
* Atari 1450XLD (1982)
* Atari 600XL (1983)
* Atari 800XL (1983)
* Atari 65XE (1985)
* Atari 130XE (1985)
* Atari 1020 Traceur de courbes quadrichrome (1985)
* Atari 800XE (1987)
* Atari XEGS (1987)
* Atari 410 (lecteur de cassette)
* Atari 1010 (lecteur de cassette)
* Atari 850 (extension)
* Atari 1050 (lecteur de disquette)
* Atari 810 (lecteur de disquette)
* Imprimante Atari 1027
* Imprimante thermique Atari 822
* Tablette tactile
* Track Ball
* Atari XF551 (lecteur de disquette)
* Atari CX85 (pavé numérique)

## Spécifications techniques

Les ordinateurs Atari utilisaient une alimentation externe qui convertissait la tension alternative 220V/50Hz en tension continue 5V. Cette alimentation pouvait délivrer 1,2A au maximum en sortie par une prise DIN à 7 broches. L'ordinateur était relié au téléviseur soit par un modulateur SÉCAM soit par un adaptateur Péritel. Il pouvait aussi être relié à un moniteur par une prise DIN à 5 broches amenant un signal vidéo composite, un signal de luminance et un signal audio. Si le clavier restait inactif pendant un certain temps, les ordinateurs Atari faisaient cycler la couleur de l'écran avec une luminosité modérée (Attract mode) pour éviter d'endommager l'écran du moniteur.

### Atari 400

* processeur principal : MOS Technology 6502A cadencé à 1,77 MHz, (NTSC) : 1,79 MHz (PAL)
* mémoire principale (RAM) : 8 ko
* mémoire morte (BIOS) : 10 ko
* mémoire de masse: lecteur de cassette ou lecteur de disquette 5"1/4 simple face, simple densité.
* système d'exploitation : version 400/800 OS
* processeur vidéo : ANTIC : Alpha Numeric Television Interface Controler, CTIA : Color Television Interface Adaptor
* capacités graphiques : 40x24 (monochrome), 20x24 (5 couleurs), 20x12 (5 couleurs), palette 128 couleurs (256 depuis 1981)
* capacités sonores : POKEY (POtentiometer & KEYboard Integrated)
* type de clavier : clavier sensitif QWERTY, 57 touches + 4 fonctions (option, reset, select, start)
* manette : 4 ports de manettes de jeux
* interfaces : 1 port de cartouche, 1 port série (lecteur de cassette ou disquette)

### Atari 800

Ordinateur semblable à l'Atari 400, mais disposant de 48 Ko de mémoire vive et d'un clavier mécanique.

### Atari XEGS

Atari XEGS est simplement un remake de la console Atari 65XE 8 bits. En option était disponible un pistolet XG-1 ainsi qu'un clavier.
* processeur principal : 6502C microprocessor 1,79 MHz
* mémoire principale (RAM) : 64 ko
* mémoire morte (BIOS) : 34 ko
* système d'exploitation : version 400/800 OS
* poids : 1,02 kg
* prix de commercialisation en France : 990F

### Atari 600XL

Il s'agit de la deuxième vague d'ordinateurs familiaux vendue par Atari, compatible avec les Atari 400 et 800. Néanmoins, pour faire fonctionner certains logiciels, cela nécessitait l'utilisation d'un traducteur (translator). Ce modèle comportait 16 ko de mémoire vive. Le circuit CTIA était remplacé par GTIA (Graphic Television Interface Adaptor). Contrairement à la gamme 400/800, le Basic était stocké en mémoire morte et disponible dès la mise sous tension de l'ordinateur. Lorsqu'une cartouche était insérée, le programme stocké sur la cartouche était exécuté à la place de l'interpréteur Basic. Les Atari XL étaient dotés de cinq touches de fonction. La touche Reset provoquait un redémarrage à chaud de l'ordinateur qui n'effaçait pas les programmes en mémoire. Les quatre autres touches (Option, Select, Start et Help qui n'était pas présente sur la gamme 400/800) étaient disponibles pour le programmeur. Presser la touche option au démarrage permettait de réaliser un auto-test de l'ordinateur (mémoire, affichage, clavier et son). Une interface PBI (Parallel Bus Interface) était disponible en plus de l'interface SIO sur l'arrière de l'ordinateur, protégée par un capuchon en plastique. Sur le 600XL, elle permettait de connecter une extension de mémoire.

### Atari 800XL

Ce modèle est équivalent au 600XL mais avec 64 ko de mémoire vive.

### Atari 1200XL

L'Atari 1200XL était le premier modèle de la gamme XL, commercialisé aux États-Unis fin 1982. Son dessin était dû à Regan Cheng et fut repris pour les autres modèles de la gamme XL. Sur ce modèle, le Basic était encore sur une cartouche séparée. À cause de changements du système d'exploitation, des problèmes de compatibilité avec les Atari 400/800 sont apparus, et l'ordinateur a été retiré du marché après 4 mois.

### Atari 1450 XLD

Il s'agit d'un modèle équivalent au 1200 XL mais qui comporte un ou deux lecteurs de disquettes au format 5 pouces 1/4 intégré sur le dessus. Le clavier est quant à lui, celui de l'ATARI 1200 XL. Il ne fut jamais commercialisé : seuls quelques prototypes existent.

### Atari 65XE

Modèle équivalent à l'Atari 800XL, mais sans interface PBI, avec un boîtier redessiné d'aspect semblable à celui des Atari ST.

### Atari 130XE

Modèle disposant de 128 Ko de mémoire vive. Les processeurs 8 bits ne pouvant accéder qu'à 64 Ko de mémoire à la fois, la mémoire supplémentaire était rendue accessible par commutation de banc. Elle pouvait servir par exemple servir de Ramdisk avec DOS 2.5 ou à réaliser des animations en commutant la mémoire vidéo. L'interface PBI est remplacée par l'interface ECI.

### Atari 800XE

Modèle analogue au 65XE (même boitier, 64 Ko de mémoire vive) mais possédant la puce FREDDIE qui permet d'étendre sa mémoire à 128 Ko. Il n'a été commercialisé qu'en Europe de l'Est (RDA et Pologne) entre 1987 et 1992.

## Circuits intégrés spécialisés

Le circuit intégré ANTIC gérait le graphisme de l'Atari. Il recevait du 6502 un programme appelé Display list indiquant le mode graphique pour chaque ligne du moniteur et était responsable de l'affichage des pixels à l'écran. Le circuit CTIA puis GTIA était responsable de la couleur (256 couleurs disponibles) des player/missiles et de la détection de collisions entre objets graphiques. Le circuit POKEY gérait le clavier (sauf les touches de fonction Start, Select, Help et Option contrôlées par GTIA) , les joysticks et le son. Un circuit PIA (Peripheral Interface Adapter) était utilisé pour les lignes de contrôle SIO. Sur l'Atari 130 XE, le circuit FREDDIE servait à gérer la mémoire au delà de 64 Ko.

## Périphériques

Sur les ordinateurs Atari 8-bits, les périphériques étaient connectés sur un port série asynchrone pouvant transmettre 19 200 bits/s avec un câble SIO (Serial Input Output).
Ils formaient une chaîne, c'est-à-dire que par exemple, le lecteur de cassettes pouvait être le premier périphérique connecté à l'ordinateur par un câble SIO, puis l'imprimante pouvait être branchée sur la seconde prise SIO du lecteur de cassette par un second câble SIO, puis un lecteur de disquettes pouvait être branché à la suite de l'imprimante avec un troisième câble SIO. L'ordinateur pouvait adresser chaque périphérique au moyen de la chaîne de câbles.

### Lecteurs de disquettes

Jusqu'à 4 lecteurs de disquettes pouvaient être connectés à l'ordinateur. Ils apparaissaient comme D1:, D2:, D3:, D4:. Le numéro du lecteur de disquette était déterminé en positionnant des cavaliers. Les Atari 400 et 800 utilisaient le lecteur de disquettes Atari 810 à disquettes 5"1/4 simple face simple densité (pouvant stocker 88 Ko) avec le système d'exploitation DOS 2.0. Les Atari XL utilisaient le lecteur Atari 1050 avec un DOS 3.0 incompatible avec le DOS 2.0 des anciens modèles, mais qui pouvait utiliser des disquettes double densité (pouvant stocker 127 Ko). Le DOS 2.5 a été introduit par Atari pour remplacer ces deux DOS incompatibles. Les Atari XE avaient un lecteur XF551 utilisant DOS 2.5 et compatible avec les modèles précédents.

### Lecteurs de cassettes

Les ordinateurs Atari ne pouvaient pas utiliser un magnétophone du commerce pour sauvegarder les programmes ou les fichiers. Il était nécessaire d'utiliser les lecteurs de cassettes Atari 410 (gamme 400/800) ou 1010 (gamme XL) qui se connectaient à l'ordinateur par un câble SIO. Ces lecteurs de cassettes étaient équipés d'un compteur pour localiser le début d'un programme enregistré. En effet, la commande LOAD C:ne permettait pas de rechercher un programme sur une cassette en donnant un nom de fichier.

### Imprimante

L'imprimante Atari 1020 était un traceur de courbes utilisant 4 crayons à bille de couleurs différentes et écrivant sur un rouleau de papier. Elle permettait aussi d'imprimer du texte sur 40 colonnes. Il existait également une imprimante à marguerite Atari 1027 capable d'écrire du texte sur 80 colonnes.

### Tablette Graphique

Il existait une tablette graphique vendue avec une cartouche du programme Atari Artist qui permettait de dessiner sur l'écran de l'ordinateur Atari et d'enregistrer le dessin sur cassette. La tablette se branchait sur les ports joysticks. D'autres périphériques se branchaient sur ces ports comme le trackball, les paddles ou un crayon optique.

### Extension RS-232

Le boîtier d'extension Atari 850 permettait de connecter des périphériques comme un modem ou une imprimante série par un câble RS-232. Il comprenait outre les 4 ports RS-232C un port parallèle permettant de relier une imprimante parallèle.

### Joysticks, raquettes et trackball

Les ordinateurs Atari XL et XE étaient dotés de deux ports (prises à 9 broches) permettant de connecter des Joysticks ou des paddles. Ces derniers étaient en fait des potentiomètres dont la résistance était mesurée par l'ordinateur. Les joysticks fermaient des contacts (avant, arrière, gauche et droite) ce qui permettait de coder leur position sur 4 bits.

## Langage de programmation Atari Basic

Les ordinateurs Atari 8-bit de la gamme XL ou XE avaient un interpréteur pour le langage Basic dans leur mémoire morte (sur la gamme 400/800 l'interpréteur était sur une cartouche). Au démarrage, l'ordinateur affichait un écran bleu avec le texte « Ready » (prêt) indiquant que l'interpréteur était prêt à exécuter les commandes en mode direct. Le Basic des ordinateurs Atari présentait plusieurs particularités$^,$.

### Chaînes de caractères

Pour pouvoir utiliser une chaîne de caractères en Basic Atari il fallait commencer par déclarer sa longueur avec l'instruction DIM. Il n'existait pas de tableau de chaînes de caractères. On pouvait extraire des sous-chaînes d'une chaîne de caractères en utilisant deux indices (au lieu des instructions MID$,LEFT$,RIGHT$) comme dans l'exemple suivant.
Cette technique d'extraction des sous-chaînes se retrouve aussi dans le Basic des mini-ordinateurs Hewlett-Packard HP 2000 des années 1970 et en Fortran 77. La concaténation des chaînes étaient réalisée par la commande

### Arithmétique décimale codée binaire

Le Basic Atari représente les valeurs numériques en utilisant une arithmétique décimale codée binaire. cette méthode permet d'éviter les erreurs d'arrondi de la virgule flottante lors de divisions par des multiples de 5. Mais elle conduit à des calculs beaucoup plus lents. Elle est relativement facile à implémenter sur le 6502 qui possède une instruction pour basculer entre le mode binaire et le mode décimal codé binaire les additions et soustractions.Une comparaison entre l'Atari 600XL et l'Apple II+, réalisée par Science et Vie micro montrait qu'avec le même microprocesseur 6502C cadencé à 1,7 MHz, l'Apple II+ était 2,5 fois plus rapide sur des calculs arithmétiques ou trigonométriques.

### Instructions graphiques

La commande GRAPHICS npermettait de choisir un mode graphique$^,$.
| Graphics | Résolution | nombre de couleurs | mode texte |
| 0 | 40x24 | 2 (monochrome) | oui |
| 1 | 20x24 | 4 | oui |
| 2 | 20x12 | 4 | oui |
| 3 | 40x24 | 4 | non |
| 4 | 80x48 | 2 | non |
| 5 | 80x48 | 4 | non |
| 6 | 160x96 | 2 | non |
| 7 | 160x96 | 4 | non |
| 8 | 320x192 | 2 | non |
| 9 | 80x192 | 16 (intensités) | non |
| 10 | 80x192 | 8 | non |
| 11 | 80x192 | 16 (intensité fixe) | non |
| 12 | 20x24 | 4 | oui |
| 13 | 20x12 | 4 | oui |
| 14 | 160x192 | 2 | non |
| 15 | 160x192 | 4 | non |
Il n'était pas possible de mélanger textes et graphiques sur la même portion d'écran. Dans les modes graphiques on dessinait des pixels sur l'écran avec les instructions COLOR,PLOT,DRAWTO, XIO18. La commande COLOR npermettait de sélectionner la couleur du fond de l'écran (n=0) ou une couleur de pinceau pour le tracé (n=1 dans un mode monochrome, de 1 au nombre de couleurs moins un dans les modes polychromes). Il était possible de choisir les couleurs affichées parmi 16 couleurs possibles et de déterminer leur luminosité entre 0 (sombre) et 15 (brillant) avec la commande SETCOLOR PINCEAU,COULEUR,LUMINOSITE. La commande LOCATE X,Y,C permettait de connaître la couleur C du pixel se trouvant aux coordonnées X,Y. Dans les modes texte, la commande PLOT X,Y dessinait un caractère de code ASCII déterminé par la dernière commande COLOR. LOCATE X,Y,C renvoyait le code ASCII du caractère occupant les coordonnées X,Y. On pouvait aussi écrire du texte sur l'écran avec PRINT #6,"TEXTE". Sa couleur était gérée différemment dans les modes 1 et 2 et dans les modes 12 et 13. En mode 1 ou 2, la couleur des caractères était uniforme et déterminée par leur code ASCII. En mode 12 ou 13, les caractères étaient multicolores, et les couleurs étaient déterminées par leur dessin stocké en mémoire morte. Les 8 pixels de largeur du caractère étaient groupés en blocs de 2 pixels, et la couleur du pixel à l'intérieur du caractère était déterminée par la valeur en base 2 de cette paire de bits. Ces modes étaient utilisés avec des caractères redéfinis pour des jeux vidéo. Ils permettaient de dessiner des objets multicolores en groupant plusieurs caractères. L'usage de caractères redéfinis économisait la mémoire et permet une animation plus rapide que dans les modes graphiques.
Dans les modes graphiques de 3 à 8 et 14 et 15, l'écran était divisé en deux sections. Le haut de l'écran était en mode graphique, le bas de l'écran (4 lignes) en mode texte (avec la résolution du mode 0). En ajoutant 16 au numéro du mode, on éliminait cette fenêtre de texte. Les modes graphiques 9,10,11 utilisaient le circuit GTIA et ne présentaient pas de fenêtre de texte en bas de l'écran. En mode 9, il existait une seule couleur pour les graphiques, mais COLOR nchoisissait la luminosité du pixel de 0 (éteint) à 15 (luminosité maximale). En mode 11, COLOR nsélectionnait une couleur parmi 16 possibilités, mais elles avaient toutes la même luminosité. En mode 10, il était possible de fixer indépendamment la luminosité et la couleur, mais seules 8 couleurs différentes pouvaient être affichées simultanément.
Les modes 8,9,10,11 et 15 avaient la plus grande consommation de mémoire, 8Ko. Le mode 7 et le mode 14 utilisaient 4Ko.
De nombreuses fonctions graphiques des ordinateurs Atari n'étaient accessibles qu'au moyen des instructions PEEK/POKEqui accédaient directement aux processeurs ANTIC ou GTIA. En particulier, les graphiques player/missile,
La redéfinition de caractères, ou la création de display lists avec des bandes dans différents modes graphiques sur un seul écran n'étaient accessibles en Basic qu'avec ces commandes.

### Son

Le circuit POKEY permettait de produire du son sur 4 voies avec 3,5 octaves. On utilisait la commande
pour produire une note de fréquence 32kHz/PERIODE et de volume entre 1 et 15 sur une des quatre voies. Pour un paramètre de distorsion égal à 10, le son était musical les autres valeurs produisant un bruitage codé par une fonction polynôme.

### Entrées sorties

On accédait aux périphériques avec la commande
Le périphérique pouvait être
| Symbole en Basic | périphérique |
| P: | imprimante |
| C: | lecteur de cassette |
| D: | lecteur de disquette |
| S: | écran (sortie) |
| E: | écran (entrée sortie) |
| K: | clavier |
| R: | interface RS-232 |
Le mode pouvait prendre les valeurs 4 (lecture), 8 (écriture), 9 (ajout) ou 12 (lecture et écriture). Avec un lecteur de disquette, la liste des fichiers sur une disquette était accessible en ouvrant le lecteur avec le mode 6.
On écrivait un caractère avec PUT #n,CODE_ASCIIet on lisait un caractère avec GET #n, X . Pour lire une chaîne ou un nombre, on se servait de la commande INPUT #n et pour écrire une chaîne ou un nombre de PRINT #n. La commande XIO numcmd, #n, 0, "peripherique"réalisait des opérations spéciales sur un périphérique.
| XIO numcmd | opération |
| XIO 32 | renomme un fichier sur une disquette |
| XIO 33 | efface un fichier |
| XIO 35 | verrouille un fichier |
| XIO 36 | déverrouille un fichier |
| XIO 254 | formatte une disquette |
Les joysticks, et la tablette graphiques étaient traités différemment des autres périphériques$^,$. L'orientation des joysticks étaient lue par la commande
La position du joystick est codée sur 4 bits (EOSN). Lorsque le joystick est au repos, les 4 bits sont à 1, et la fonction STICKprend la valeur 15 (1111 en binaire). Lorsque le joystick est poussé dans une direction N (Nord), S(Sud), E(Est) ou O(Ouest) le bit correspondant est mis à zéro. Par exemple, quand le joystick est poussé dans la direction N, son état est représenté par 1110 en binaire, et la fonction STICKrenvoie la valeur 14. S'il est poussé dans la direction SE, son état est représenté par 0101 en binaire, et la fonction STICKrenvoie la valeur 5.
La position du crayon sur la tablette graphique était lue par les fonctions PADDLE
Les boutons de la tablette et des joysticks étaient lus par la fonction PTRIG et STRIGrespectivement.

### Appel de procédures en langage machine

Il était possible d'appeler des procédures en langage machine depuis le Basic avec la fonction X=USR(ADRESSE)où ADRESSEcontenait l'adresse mémoire où la procédure était stockée.

### Instructions manquantes

* Certaines instructions pour formater les entrées sorties comme PRINT TAB, PRINT SPC ou PRINT USING sont manquantes et n'ont pas d'équivalent en Basic Atari.
* Il n'y a pas de fichiers à accès direct. Les instructions NOTE/POINTpermettent de repérer la position d'un enregistrement sur la disquette et d'y déplacer la tête de lecture, mais il n'y a pas de notion d'enregistrement de taille fixée ni de commande FIELDpour définir le contenu des enregistrements.
* Il n'est pas possible de définir des fonctions avec DEF FN
* Il n'y a pas d'instruction pour des boucles conditionnelles comme WHILE/WEND ou LOOP/UNTIL. On utilise IF/THEN GOTO
* Il n'y a pas de clause ELSEdans les tests IF/THEN
* Le Basic n'a pas de variables entières, et il n'existe donc pas de fonction booléenne bit à bit entre deux entiers.
* Il n'y a pas d'instruction INKEY$ pour lire le clavier sans suspendre l'exécution du programme.
Dans le dernier cas, le programmeur Basic peut utiliser P=PEEK(764)et la variable P contiendra le code clavier de la dernière touche pressée par l'utilisateur. Si aucune touche n'a été pressée, le programme se poursuit avec la variable P prenant la valeur 255.

## Autres langages de programmation

* MAC/65 (macro-assembleur 6502)
* Basic Microsoft (1981), Basic XL/XE (1983/1985)
* Atari LOGO (1983)
* Atari PILOT (1981)
* Atari Pascal (1981), Draper Pascal (1983), Kyan Pascal (1986)
* Extended fig-Forth (1981), E/S Forth (1984)
* Deep Blue C, C/65
* Inter LISP/65
* Action!
* PL/65
Le Basic XL/XE est un basic Atari amélioré, en particulier il dispose d'instructions IF/ELSE/ENDIF, WHILE/ENDWHILEpour écrire des programmes plus lisibles tout en étant compatible avec le basic Atari.
Le compilateur C/65 ne reconnaît qu'un sous ensemble du langage C, en particulier, il ne possède pas de type float.
Les langages Action! et PL/65 sont des langages de type Algol, spécifiques des ordinateurs Atari.

## Les ordinateurs Atari 8-bit en France

Les ordinateurs atari 400/800 et les consoles Atari 2600 étaient utilisés dans l'émission Super défi diffusée sur TF1 en 1983.
L'Atari 800XL a été commercialisé en France d'avril 1984 à janvier 1986. Son prix a baissé progressivement de 3 500 à 1 000 FRF. Il existait un catalogue d'environ 2 000 logiciels, principalement des jeux vidéo, mais aussi VisiCalc, écrits pour la gamme 400/800.
L'Atari 800XL a servi pour les jeux (avec l'Apple II) de l'émission Micro Kid diffusée sur Antenne 2 en 1984. La gamme XE a été annoncée au CES de Las Vegas par Jack Tramiel en janvier 1985, et sa commercialisation a commencé en juin de la même année.

### Édition et presse informatique

Les principaux éditeurs de livres sur les Atari 8-bits étaient Eyrolles et les Éditions du PSI. Quelques livres comme De Re Atari de Chris Crawford ont été traduits en français et diffusés par Atari. Hebdogiciel a publié des programmes pour les ordinateurs Atari 8-bits entre mars 1984 et avril 1985, puis a renoncé faute d'auteurs. Tilt a aussi publié quelques programmes pour Atari 8-bits. La revue trimestrielle La Commode publiait des programmes et des informations techniques pour les ordinateurs Atari, Commodore 64 et Oric qui utilisaient tous le processeur MOS Technology 6502. Elle cessa de paraître en juillet 1984. Un magazine bimestriel à destination des utilisateurs d'ordinateur Atari, L'Atarien, avait été lançé par Atari France en octobre 1983 et cessa de paraître en février 1986. En juillet 1986, un nouveau magazine publié par Pressimage, Pokey, prit la suite de L'Atarien, et disparut en septembre 1987 après quatre numéros.