★ APPLICATIONS ★ DIVERS ★ TRANSFERTS CPC/IBM-PC ★ |
Transferts CPC/IBM-PC | Applications Divers |
Voyons le matériel nécessaire :
C'est tout et avec cela vous pourrez transférer d'un système à l'autre des fichiers ASCII et des listings de programmes, toujours en ASCII. Moyennant quelques modifications, on peut communiquer avec autre chose qu'un PC : MSX, APPLE, ORIC... pourvu qu'ils possèdent, eux aussi, une interface série et qu'ils utilisent le codage ASCII. Nous avons fait par exemple un couple de programmes pour communiquer avec un EPSON HX-20, le programme côté AMSTRAD subissant très peu de changements. L'interface série permettra aussi le branchement à un MODEM, mais cela présente peu d'intérêt en France pour un particulier (vu le rapport qualité-prix des liaisons téléphoniques...). Egalement, avec une imprimante avec carte série, on a alors le huitième bit. LE PRINCIPE DES LIAISONS SERIE "Tout sort par un seul fil", c'est-à-dire que pour envoyer un octet on va y faire passer ses huit bits un par un. A l'autre extrémité du fil, une autre interface série reçoit ces salves d'impulsions électriques, reconstitue l'octet et le communique à son micro. Toute interface série pour microordinateur possède une borne de sortie (n° 2) et une d'entrée (n° 3). Bonne nouvelle, ces prises ont un brochage normalisé. Donc, pour relier deux micros par leurs interfaces, la borne n° 2 va au n° 3 et la n° 3 au n° 2. OK ? Pour réaliser ces croisements de fils, on intercale un raccord spécial que l'on appelle un "NUL-MODEM" facile et peu coûteux à fabriquer. Nous verrons cela plus loin. En fait, il y a bien d'autres fils dans ce type de liaisons : le retour masse, bien sûr, mais aussi des "coordinations" entre les deux interfaces ; des noms "impossibles" tels que RTS, CTS, DTR, DSR et DCD. Eux aussi vont faire l'objet de croisements dans notre NUL MODEM. La norme RS 232C porte bien mal son nom car toutes les fantaisies y sont possibles, non pas dans le brochage, mais dans le codage du signal. Il est évident que les deux interfaces doivent être sur la même "longueur d'onde" pour se comprendre '! De part et d'autre, c'est le programme BASIC qui établit les codages de son interface série. Les syntaxes sont certes différentes, mais les codages résultants doivent être identiques. Le paramètre le plus important est la vitesse de transmission de bits par seconde, elle est exprimée en "bauds". L'interface AMSTRAD peut être programmée depuis 50 bauds ( = 5 octets/seconde) jusqu'à 19 200 bauds (=1900 octets/seconde). Nous opérerons arbitrairement en 9600 bauds [= 960 caractères/seconde). Pour fixer les idées, le Minitel reçoit en 1200 bauds et émet en 75 bauds. Les autres paramètres concernent le "message octet" : le nombre de bits de données, 8 ou 7 ; on a pris 7 car il s'agit de transmettre des caractères ASCII (< 128). Le nombre de bits signalant la fin de l'octet, c'est 1 ou 2, on en a pris un. Le "contrôle de parité", un contrôle de la qualité de l'octet reçu qui refusera tout octet ayant souffert d'un parasite sur la ligne. Pas de risques avec notre liaison directe de moins de deux mètres ! Donc pas de contrôle de parité (= "parité nulle"). Ces choix sont tout à fait arbitraires. NOTA : Les interfaces série pour imprimantes sont codées par des "switches" parce que l'on ne peut faire autrement. Elles ne savent que recevoir. L'entrée/sortie d'un MODEM est, elle aussi, codée par switches. La multiplicité des codages possibles en RS 232C constitue une sorte de "confidentialité" pour les transmissions téléphoniques. L'INTERFACE AMSTRAD Le coffret contient le boîtier électronique, un bloc secteur (qui chauffe beaucoup...), un câble plat avec connecteurs, hélas très court, une plaquette d'époxy (pour raccorder l'interface disquette DD1 pour 464) et une notice en français : celle-ci est très claire sur les généralités, mais super nébuleuse quant à l'utilisation pratique. Je m'explique : l'usage d'interface série fait intervenir des commandes et des fonctions spéciales absentes du BASIC des CPC. Elles sont disponibles sous formes de RSX qui sont changées en RAM par une ROM dans le boîtier. Un bon point, mais rien sur leur utilisation rationnelle dans un programme AMSTRAD ! Il a fallu quelques heures d'essais pour découvrir leurs exigences et leurs interdits, du moins pour ce qui nous intéresse, à savoir l'envoi et la réception de chaînes sans risques de ratés. Le matériel est bon, c'est la notice qui n'est pas à la hauteur. Si vous voulez programmer autre chose, inspirez-vous des syntaxes, des routines mises au point dans le nôtre. Nous l'avons éprouvé avec un fichier bidon de 26 fiches de 255 caractères chacune : après plusieurs allers-retours, pas le moindre octet abîmé.
LE CABLE ET LE NUL-MODEM Les socles d'interfaces série sont mâles sur les micros et femelles sur les imprimantes et les MODEM. En conséquence, puisque nous prolongerons le câble par notre NUL-MODEM, on a intérêt à avoir un câble mâle-femelle et un NUL-MODEM (on dit aussi ZERO-MODEM) femelle-femelle. Pour le raccordement AMSTRAD/MODEM, il suffira d'enlever le NUL-MODEM. Pour raccorder à une imprimante avec carte série (c'est rare...), ça ne marche pas. Il faudrait sertir une troisième fiche (mâle) sur notre câble plat à 25 conducteurs, donc en parallèle avec les autres, mais à « 10 cm de l'extrémité femelle. Confection du câble Dans un magasin de composants électroniques (ou chaîne TANDY), procurez-vous 1,5 à 2 mètres de câble en ruban 25 conducteurs et deux prises mâle et femelle "à sertir". Outil nécessaire : une vulgaire pince multiprise. Un bord du ruban est teinté (bleu), c'est le "fil n° 1 ". Engagez le ruban de telle sorte que le bord bleu soit côté n° 1 (visible sur la prise). Puis, serrez avec la pince multiprise. Trois minutes pour faire un câble... Confection du NUL-MODEM Il faut deux prises femelles "à souder", ainsi que sept fils de 10 à 1 5 cm, assez fins mais de couleurs différentes (demandez du "fil en nappe multicolore"). Dénudez, torsadez et pré-étamez les extrémités. Le plan de câblage n'est pas celui de la notice AMSTRAD. Sur chaque prise, reliez ensemble (fil court) les bornes 6 et 8, puis les fils d'une prise à l'autre : 2 vers 3 ; 3 vers 2 ; 4 vers 5; 5 vers 4; (6 + 8) vers 20 ; 20 vers (6 + 8); et 7 relié à 7 (c'est la masse). L'UTILISATION DE L'ENSEMBLE Les deux micros sont reliés et chargés de leurs programmes BASIC.RUN SUR AMSTRAD. L'écran demande si vous voulez envoyer ou recevoir un fichier, puis son nom, le nom qu'il prendra sur le "récepteur". Sur le PC, est-ce que ça se passera sur le drive A, B ou C ? Vous voyez que tout est commandé à partir de l'AMSTRAD. Fort de ces renseignements, le CPC vous invite à faire RUN sur le PC (la touche de fonction F2). C'est tout. La suite est entièrement automatique ; le fichier s'enregistre sur la disquette du micro récepteur, puis retour automatique aux états initiaux ; prêt pour un autre transfert, pourquoi pas dans l'autre sens, si vous trouvez plus simple d'emploi... Et maintenant, quelques gadgets utiles :
Pour transférer un programme BASIC, il faut d'abord en faire une version ASCII par SAVE"MACHIN",A. C'est la même syntaxe sur IBM, mais attention au super piège ! Sur disque CPC, vous aurez "MACHIN.BAS" et "MACHIN" tout court pour la version ASCII. Très bien. En revanche, avec le DOS de l'IBM ("MS.DOS"), ils vont porter tous les deux le même nom "MACHIN.BAS"... Donc, pour contourner cette stupidité, pensez à modifier le nom, par exemple en tapant SAVE"MACHINA",A sur l'IBM. Vous pouvez faire LOAD d'un programme BASIC en ASCII, et de là le lister normalement à l'écran comme à l'imprimante, modifier les différences de syntaxes, puis le recharger en BASIC par un SAVE banal. Le BASIC MICROSOFT de l'IBM PC et celui de l'AMSTRAD se ressemblent à 80 %. Celui de l'AMSTRAD étant bien plus complet (Hé oui !...), il est plus facile d'adapter de l'IBM sur CPC que de faire l'inverse (attention aux paramètres des LOCATE qu'il faut inverser). Les gens pressés peuvent arrêter là la lecture de cet article pour taper et lancer nos deux programmes. La suite explique comment ça marche. LA SYNTAXE DES COMMANDES DE LIAISONS SERIE Celle apportée par la ROM de l'interface AMSTRAD ne ressemble en rien à ce qui existait précédemment dans les autres BASIC : nous donnons respectivement les syntaxes AMSTRAD et IBM (MICROSOFT). — Paramètres RS 232C et ouverture liaison : |SETSIO,9600,9600,1,7,00 (= canal #1) |SETTIMEOUT,8000 (= 8 secondes) ",DS15000" (à la suite du COM1:) ( = 1 5 secondes) — Caractère repère de fin de chaîne : |SETBLOCKEND,1 3 (= CHR$(13)) pas fixable, à découvrir (13 pour IBM, 10 pour EPSON) — Envoi d'une chaîne T$ : |OUTBLOCK,@E%,@T$ — Réception d'une chaîne T$ : |INBL0CK,@E%@T$ — Fermeture de la liaison : |CLOSESIO CLOSE #1 Le plus complexe et de loin chez AMSTRAD, ce sont les deux commandes d'envoi préception de chaîne. Voilà ce que nous avons compris :
Puis, on met le tout à la suite de |IN BLOCK mais précédé du "a commercial". La chaîne reçue est par exemple "TOTO". Hé bien T$ n'est pas égale à "TOTO", mais à TOTO suivi de 76 blancs, puisqu'au départ il y en avait 80... En fait, ces lettres sont venues se substituer aux caractères de gauche. Deux conséquences :
Pour l'envoi vers le PC, nous accolons un CHR$(13) à la suite de T$ (sauf s'il fait 255 caractères). En effet, le PC le reçoit par un INPUT ; il lui faut bien un "ENTER" artificiel... LE DEROULEMENT DES PROGRAMMES Par vos réponses du début de programme, le CPC connaît le sens du transfert (1 = envoie ; 2 = reçoit), le nom sur CPC et le nom sur PC. Puis, il se met en attente série en vous invitant à presser F2 sur le clavier du PC ( = RUN). Ce dernier envoie trois fois une chaîne de cinq dièses, puis une chaîne de cinq astérisques. C'est le signal attendu par l'AMSTRAD = "liaison correcte". Le CPC communique à l'IBM le sens et nom de son fichier. Exemple 2 et "B:TRUC.DAT", le tout signifiant transmet le fichier TRUC.DAT se trouvant sur ton drive B, alors que 1 et "A:CHOSE" signifierait apprête-toi à recevoir un fichier que tu enregistreras sur le drive A sous le nom de "CHOSE". Lorsque le micro émetteur a terminé son fichier, il envoie un signal fin sans équivoque à savoir /*FINCPC*/ dans le sens 1 ou /*FINIBM*/ dans le sens 2. Le receveur n'enregistre pas ce signal, il clôt l'enregistrement et la liaison série. L'IBM s'arrête par un END, l'AMSTRAD revient au menu de départ. Quel que soit le sens, les fiches transitées apparaissent simultanément sur les deux écrans, en scrolling. Lorsque l'AMSTRAD reçoit un fichier IBM, son écran passe en MODE 2. Dans les deux programmes on rencontre des boucles d'attentes genre FOR W= 1 T0 300. Ce sont des sécurités qui pourraient être restreintes ; nous avons préféré la sécurité aux records de vitesses. NOS TESTS Afin de s'assurer de la parfaite fiabilité de cet ensemble matériel/programmes, nous avons conçu des fichiers bidons pleins de traîtrises en tous genres (vous imaginez le pire, vous avez raison...). Sens CPC-PC, examen par TYPE sur PC. Sens PC-CPC, examen par TYPE pour le comparer à l'original. Egalement un fichier normal de 14000 octets de 586 fiches : dans tous les cas, 100 % de réussite. Attention ! Un programme BASIC en ASCII transféré sur IBM doit être "renommé" en .BAS, afin qu'il puisse être rechargé par LOAD. Le matériel utilisé fut le suivant : AMSTRAD CPC 464 -i- drive DD1 ; "compatible PC-XT" portable marque "COM PAO" équipé d'une carte série de marque "IBM". CONCLUSION La liaison série entre deux microordinateurs est l'Espéranto des Incompatibles. Outre les programmes BASIC, on peut faire de même avec des "programmes sources" en d'autres langages, par exemple en PASCAL. Les applications pratiques ne manquent pas ! A partir de nos deux programmes, vous pourrez en concevoir d'autres pour "négocier" des fichiers ASCII avec d'autres micro-ordinateurs, APPLE par exemple. Les une ou deux soirées de mise au point seront très vite amorties ! L'interface série AMSTRAD a d'autres utilisations, on en reparlera bientôt...
|