You are here, vous êtes ici:
Atari Pages/Support and FAQ/Technical documentation page

Philippe PVBest's Atari 8bit Web Site

Atari 8bit Technical Documentation
Documentation Technique Atari 8bit

 

Communication serie
Communication liaison série entre Atari et PC:
1. Présentation

La communication c'est l'échange de données. Et en informatique, il y a plusieurs moyen de réaliser cet échange de données. Dans notre cas, nous parlerons plus particulièrement de la communication par liaison série, car elle facilement accessible sur le PC, et puis aussi parce que l'Atari l'utilise pour communiquer avec ses périphériques.

Nous expliquons ici les éléments essentiels à la compréhension de la communication par liaison série pour l'application suivante: relier notre PC à un lecteur de disquette Atari et communiquer afin d'échanger des données.

1.1 - Qu'est ce qu'une liaison série?

Une liaison série reliant 2 appareils communicant est constituée d'un bus externe (cable) qui relie 2 processeurs spécialisés appelés UART, nécessairement inclus dans chaque appareil. Le cable est installé entre les connecteurs des appareils.

Le bus de la liaison série standard type RS232 est constituée d'un minimum de 2 fils (ou 2 lignes), TX pour Transmission et RX pour Réception. Par ce support physique, les UART échangent des octets dans un flux de données. Les octets sont convertis en une sucession de bits (et inversement)(un octet est constitué de 8 bits). Les bits correspondent aux 0 et 1 logiques (soit 2 niveaux de tension). Ces bits constituent les octets de données à échanger.

Une liaison série peut aussi mettre en jeu d'autre lignes facilitant le contrôle du flux de données à échanger. La vitesse de transmission, le format des octets et des bits de contrôle échangés sont paramètrables dans les UART. Par exemple, pour communiquer avec un lecteur de disquette Atari, la vitesse est de 19200 bauds (19200 bits par seconde), il n'y a pas de bit de parité et il y a un bit stop pour le contrôle.

Voilà, théoriquement, c'est facile: après le réglage de ces paramètres, des octets peuvent être échangés sur une liaison série.

Mais voilà ce n'est pas aussi simple dans notre cas (communication liaison série entre un PC et un lecteur de disquette Atari), car Atari a développé une ''communication série'' un peu différente et particulière afin de donner robustesse, qualité et rapidité.

1.2 - La liaison série Atari: différence des signaux RS232 entre le PC et l'Atari

Dans un ordinateur Atari, le processeur de communication UART est inclus dans le processeur POKEY.

Les bits sont réalisés par POKEY avec 2 niveaux de tension différents. Ces niveaux de tension sont au format TTL côté Atari (soit 0VDC pour le 0 logique et +5VDC pour le 1 logique). Mais côté PC, ils sont conformes au format RS232C standard (soit entre -10 et +10VDC pour les niveaux logiques).

Il faut donc mettre en place un circuit d'interfaçage capable de convertir ces niveaux de tension afin de les rendre compatibles et identiques.

L'ordinateur Atari est relié par une même chaine à tous les périphériques connectés sur la liaison série. Cette liaison est constituée par les cables série de l'Atari (avec connecteur 13 broches).

Chaque phériphérique Atari à sa propre étiquette, son propre numéro d'identification sur la chaine liaison serie, que nous appelerons numéro d'esclave (terme d'usage dans la communication par liaison série).

Ce numéro est en partie accessible, pour les lecteurs de disquette par exemple, il peut-être ajusté de $31 à $34, en réglant un switch à l'arrière du lecteur de disquette. Il peut y avoir donc 4 lecteurs de disquette différents pour un ordinateur Atari.

1.3 - Le connecteur de liaison série Atari: connecteur non standard

Intéressons-nous au cable et au connecteur Atari série. Constitué de 13 broches (et cable de 13 fils + masse) en voici la description:

Broche NOM Description
1 BIDIRECTIONAL CLOCK ENTREE HORLOGE BIDIRECTIONNELLE
2 SERIAL CLOCK OUT SORTIE HORLOGE
3 DATA IN ENTREE DONNEES
4 GND MASSE
5 DATA OUT SORTIE DONNEES
6 GND MASSE
7 COMMAND COMMANDE
8 MOTOR ON MARCHE MOTEUR
9 PROCEED EXECUTION
10 +5VDC/READY PRET +5VDC
11 AUDIO IN ENTREE AUDIO
12 (*) +12 VDC +12 VDC
13 INTERRUPT INTERRUPTION

(*) Non connecté et non utilisé sur Atari XL/XE

CLOCK IN, CLOCK OUT, PROCEED, INTERRRUPT:

ne sont normalement pas utilisés pour stockage de données disque ou cassette en standard.
[De nouvelles informations sur ces signaux seront disponibles bientot]

MOTOR ON, AUDIO IN:

sont normalement dédiés au lecteur de cassette Atari.

DATA IN et DATA OUT :

correspondent aux 2 lignes ''standard'' RX et TX, i.e. ligne de réception de données et ligne d'envoi de données.

+5VDC/READY:

avec ce signal, l'ordinateur Atari montre sa présence dans l'état actif (état de marche) à tous ses périphériques esclaves connectés et à l'écoute, en mettant la ligne +5VDC/READY à +5VDC.

Pour communiquer avec un lecteur de disquette Atari, un +5VDC sur la ligne +5VDC/READY doit donc être généré. Cette tension est normalement fournie par l'ordinateur Atari. Si nous voulons connecter le lecteur de disquette Atari à notre PC, le PC remplaçant l'ordinateur Atari, il devra fournir cette tension.

Or cette tension n'est pas disponible sur le connecteur série RS232C du PC, une alimentation externe doit donc être mise en place .

COMMAND:

Lorsque l'ordinateur Atari veut communiquer avec un de ses périphériques, il emet un signal de niveau TTL vers ses esclave, signifiant qu'il va envoyer une commande. Pour cela il utilise la ligne COMMAND. Puis il envoie une trame (succession d'octet) de commande sur la liaison série à tous les esclaves présents connectés en utilisant la ligne DATA OUT (TX).

Tous les périphériques esclave lisent alors le message, mais un seul répondra, celui dont le numéro d'esclave correspond à celui présent dans la trame des octets de commande.

Pour communiquer avec un lecteur de disque, il faut donc généré le signal COMMAND sur la ligne COMMAND.

Si nous voulons connecter le lecteur de disquette Atari au PC, le PC remplaçant l'ordinateur Atari, il faut utiliser un des signaux de la liaison série PC pour générer le signal COMMAND.

Nous utiliserons, par exemple, le signal PC série RTS, qui sera lui aussi converti par le circuit d'interface en un signal TTL compatible pour le lecteur de disquette Atari.

1.4 - Le Protocole : Trame d'octets de commande et de données:

Tout comme les octets de la trame de commande ne sont pas pris au hasard, il est important de comprendre quels sont les octets à envoyer ou à recevoir. Il faut donc comprendre comment fonctionne le processus d'échange de données, c'est à dire connaitre le protocole d'échange de données.

Ce protocole correspond à une ''couche logicielle'' (software) contrairement à la couche physique (hardware) que constitue le cablage et les signaux electriques. Ce protocole est caractéristique de chaque appareil communicant. C'est la langue commune, il doit être le même pour les 2 appareils reliés.

Pour l'Atari, ce protocole est facile à comprendre, il est constitué d'un échange d'octets de commande, d'octets de données et d'octets de contrôle. C'est une discussion entre le demandeur maitre (l'ordinateur Atari) et l'esclave (le périphérique), schématiquement, cela donne a peu près cela:

Pour une lecture de données:

Appareil
Type d'octet
''Traduction''
ORDINATEUR ATARI Commande Lecteur de disquette numéro un, je veux lire le secteur 10!
LECTEUR n°1 Contrôle OK commande BIEN RECUE!
- - (Le disque se met à tourner, le lecteur lit alors le secteur 10)
LECTEUR n°1 Contrôle OK EFFECTUE, le secteur est prêt à être envoyé à ordinateur!
LECTEUR n°1 Données Envoie des données sur le bus série
LECTEUR n°1 Contrôle Envoie du dernier octet de somme de contrôle

Pour une écriture de données:

Appareil
Type d'octet
''Traduction''
ORDI. ATARI Commande Lecteur de disquette numéro un, je veux écrire des données au secteur 10!
LECTEUR n°1 Contrôle OK commande BIEN RECUE, je suis prêt àrecevoir les données!
ORDI. ATARI Données Envoie des données sur le bus série
ORDI. ATARI Contrôle Envoie du dernier octet de somme de contrôle
LECTEUR n°1 Contrôle OK données BIEN RECUES!
- - (Le disque se met à tourner, le lecteur écrit alors le secteur 10)
LECTEUR n°1 Contrôle OK EFFECTUE: données bien écrites, terminé!

Ce protocole est inclus dans un programme, réagissant et donnant les octets nécessaire à l'échange de données. Sur Atari, ce programme est stocké en mémoire morte dans les ROM OS (Operating System) de l'ordinateur et des périphériques.

Pour notre application PC, il est relativement simple de programmer ce protocole dans un langage soft PC, en C++ par exemple, plutôt que de vouloir modifier celui du lecteur de disquette Atari, ce qui est impossible sans changer la ROM OS de ce lecteur!

1.5 - Détails de la trame de commande:

Séquentiellement, l'ordinateur Atari envoie la trame de commande pour la requette en premier, car il est le maitre. Cette trame de commande contient 5 octets, dans l'ordre d'envoi:

  • 1er octet: le numéro d'esclave du périphérique (imprimante, lecteur de cassette, lecteur de disquette #1...),
  • 2eme octet: l'ordre à executer (lecture, ecritute, formatage...)
  • 3eme et 4eme octets: des paramètres auxilaires (comme le numéro de secteur).
  • 5eme octet: la somme de contrôle ou checksum. Cette valeur est la somme modulo 256 des 4 premiers octets.

1.6 - Les octets de contrôle:

Normalement, l'esclave périphérique doit répondre à une trame de commande avec un octet ACK (acknowledge = bien reçu!). De manière générale, ces octets de contrôle sont envoyés par les périphériques à l'Atari en fonction du déroulement de la communication. Ces octets de contrôle sont nommés ACK, CPL, ERR et NAK.

Contrôle
eq. Char/Hexa
Nom
Description
ACK 'A' / $41 ACKNOLEDGE OK BIEN RECU!
NAK 'N' / $4E NON ACKNOLEDGE NON RECU!
CPL 'C' / $43 COMPLETE OK EFFECTUE!
ERR 'E' / $45 ERROR ERREUR!

1.7 - La checksum:

Les trames de commande et de données contiennent un octet supplémentaire pour la checksum, ou somme de contrôle. Cette valeur (un octet) est la somme ''modulo 256'' de tous les octets de données de la trame qui viennent d'être envoyés.

1.8 - Les erreurs de communication renvoyées par le lecteur:

  • NAK: erreur 139 ($8B) sur l'ordinateur Atari. Apparait généralement lorsque l'Atari demande au lecteur de disquette de lire un secteur inexistant ou lorsque le lecteur ne contient pas de disquette.
  • ERR: erreur 144 ($90) sur l'ordinateur Atari. Apparait généralement lorsque le lecteur de disquette n'arrive pas à lire un secteur défectueux (Bad Sector), ou que la disquette est protégée en écriture.

1.9 - Les autres erreurs renvoyées par l'Operating System de l'ordinateur Atari:

  • Erreur 143 ($8F) Erreur de checksum (Checksum Error). En effet, l'Atari calcul la checksum des octets de la trame de données reçues. Il compare cette checksum avec celle envoyée par le périphérique en fin de trame de données. Si elles sont différentes, c'est qu'il y a eu erreur dans le processus de communication.
  • Erreur 140 ($8C) Erreur sur trame octet en entrée sur port série (Serial Data Input Frame Error).
  • Erreur 142 ($8E) Erreur de débordement en lecture sur port série (Serial Data Input Over-run).
  • Erreur 138 ($8A) Erreur temps de réponse écoulé sur port série (Serial Data Input Time-Out).

    (Liste non exhaustive)

 

Pour la réalisation du cable et circuit d'interface, cliquer ici.


2. PROTOCOLE: Lecture de données à partir du lecteur de disquettes Atari:

Voici le schéma du protocole de communication Atari sur la liaison série pour une lecture sur le bus de données Atari (lecture par l'unité centrale Atari XL/XE):

Document scanné: Protocole de communication Atari en lecture

Télécharger ici mon schéma:


3. PROTOCOLE: Ecriture de données dans le lecteur de disquettes Atari:

Voici le schéma du protocole de communication Atari sur la liaison série pour une écriture sur le bus de données Atari (écriture demandée par l'unité centrale Atari XL/XE):

Document scanné: Protocole de communication Atari en écriture

Télécharger ici mon schéma:

 

[Page Top]

To contact me:/Pour me contacter: M'envoyer un EMail

[ Retour Sommaire Documentation Technique/Back to the Technical Issues Index]

[ Back to My Atari Site Index/Retour vers Mon Index Site Atari]

[Site Philippe Index Principal]

PVBest's Atari 8bit website

This page © PVBest 2002
Atari is a registered trademark / Atari est une marque déposée.
MS-DOS and Windows are registered trademarks of Microsoft Corp / MS-DOS et Windows sont des marques déposées de Microsoft Corp.
All Software names are registered by their owner / Les noms de logiciel appartiennent à leur auteur
.
If you have any comments or anything to tell me about the content of this page please contact me Webmaster [PVBest@free.fr]
Pour tous commentaires ou suggestions sur le contenu de cette page contactez-moi Webmaster [PVBest@free.fr]