Programmation de périphériques
Bien que l'Amiga lui-même soit un boîtier assez puissant, il a besoin de certains périphériques pour tirer pleinement parti de sa puissance. Les périphériques évidemment essentiels sont un périphérique d'affichage (moniteur composite ou RVB), un clavier et une certaine forme d'entreposage de masse.
Au début, plus coûteux, de l'informatique personnelle, l'entreposage de masse était un périphérique exotique. Les programmeurs d'ordinateurs simples comme le KIM-1 ou l'Ohio Scientific C1P devaient taper un programme avec un clavier hexadécimal de type calculatrice (ou pire, basculer les interrupteurs à bascule pour modifier les paramètres de bit dans les cellules de mémoire individuelles) chaque fois qu'ils voulaient faire fonctionner la machine. Naturellement, un projet populaire consistait à adapter un enregistreur de cassette audio ordinaire pour entreposer des programmes. Les cassettes fonctionnaient à un rythme d'environ 30 caractères par seconde. Si vous aviez l'argent et les compétences techniques, vous pourriez ajouter une imprimante à bande de caisse enregistreuse à 32 colonnes. Votre écran principal était généralement une rangée de petites LED, mais les modèles de luxe tels que l'OSI C1P pouvaient en fait afficher du texte sur un téléviseur.
Très rapidement, cependant, les ordinateurs ont baissé de prix tout en gagnant en puissance. Le Commodore PET, à environ 800 $, avait un énorme 8 Ko de RAM, un lecteur de bande magnétique intégré et un écran intégré. L'évolution s'est poursuivie avec les PET de la série professionnelle, pouvant utiliser des unités de disque coûteux capables d'obtenir 170 000 données sur une disquette de 5¼ pouces. Le premier ordinateur domestique Commodore, le VIC-20, n'était qu'un clavier avec 5 Ko de RAM, mais il pouvait afficher 16 couleurs avec des graphiques sur un téléviseur domestique, ce qui est tout à fait remarquable pour son prix de lancement de 299 $. Vous pouviez acheter des unités de disque en option, des imprimantes à ressort à faible largeur et même des modems téléphoniques, bien que certains de ces périphériques coûtaient plus cher que l'ordinateur lui-même. Le Commodore 64 utilisait des périphériques VIC-20 améliorés, et avec 64 Ko de RAM au prix de lancement de 599 $, c'était à peu près l'évolution de l'ancien PET vers un ordinateur domestique couleur.
Viens par la suite, l'Amiga, le produit Commodore le plus puissant à ajouter été développé (bien que l'Amiga retrace en fait sa lignée jusqu'aux ordinateurs personnels Atari). Le moniteur est facultatif, mais un unité de disque de 880 Ko est intégré, ainsi que 256 Ko de RAM (512 Ko si vous comptez le magasin de contrôle inscriptible, WCS, contenant le système d'exploitation). En rendant le dispositif d'affichage optionnel, Commodore vous permet de choisir parmi des moniteurs avec des prix et des capacités variables. Mais l'unité de disque intégré montre la véritable nécessité de l'entreposage de masse - l'Amiga nécessite ce qui aurait été un luxe rare dix ans plus tôt.
L'Amiga peut être connecté à d'innombrables accessoires d'amplification de puissance, des modems téléphoniques 1200/2400 bits par seconde et des imprimantes à jet d'encre couleur aux périphériques exotiques tels que les cartes d'acquisition et les numériseurs de son. Écrire des programmes pour tirer parti de tous ces périphériques peut sembler une tâche époustouflante. Mais avec le puissant système d'exploitation de l'Amiga et l'Amiga BASIC, c'est en fait assez facile.
Établir la connexion
Pour permettre à l'Amiga de communiquer avec un périphérique, vous devez d'abord ouvrir un canal de communication entre l'ordinateur et le périphérique. Les données à entreposer, récupérer, transmettre ou imprimer sont envoyées dans la direction appropriée le long de ce pipeline. Le canal de communication est également appelé fichier, à ne pas confondre avec un fichier disque, bien que très souvent vous configuriez un fichier de communication pour accéder à un fichier disque.
L'accès à n'importe quel périphérique nécessite trois étapes. Vous devez d'abord ouvrir un fichier de communication vers le périphérique. Ensuite, vous lisez les données du périphérique ou y écrivez de nouvelles données. Une fois que vous avez terminé, vous fermez le fichier.
L'Amiga vous permet d'ouvrir et d'accéder à plusieurs fichiers à la fois. Ces fichiers ne doivent pas nécessairement être ouverts sur différents périphériques ; certains périphériques, tels que le lecteur de disque, vous permettent d'y ouvrir plusieurs fichiers simultanément. Pour éviter toute confusion, chaque dossier se voit attribuer un numéro de dossier unique. Ce numéro de dossier est comme une chaîne de télévision dédiée à ce dossier. Bien que vous puissiez recevoir (ouvrir) de nombreux canaux, vous ne pouvez vous référer qu'à un seul à la fois, selon le numéro de canal.
L'Amiga attribue également certains noms de périphériques à ses périphériques. Lors de l'ouverture d'un canal vers un périphérique, vous devez spécifier son propre nom de périphérique. Par exemple, PRT: est le nom de périphérique d'une imprimante connectée au port parallèle ou série de l'ordinateur (le port réel auquel on accède lorsque vous spécifiez PRT: dépend de celui ayant été sélectionné avec l'outil Préférences). Le tableau suivant donne tous les noms de périphériques reconnus par AmigaDOS et Amiga BASIC :
Nom de périphérique | Périphérique | Type d'entrée/sortie |
---|---|---|
COM1: | Port RS-232 | Entrée/sortie |
SER: | Port RS-232 | Entrée/sortie |
LPT1: | Imprimante | Sortie |
LPT1:BIN | Imprimante | Sortie |
PRT: | Imprimante | Sortie |
PAR: | Port parallèle | Sortie |
DF0: | Unité de disque interne | Entrée/sortie |
DF1: | Unité de disque externe | Entrée/sortie |
DH0: | Disque dur | Entrée/sortie |
KYBD: | Clavier | Entrée |
RAM: | Disque RAM | Entrée/sortie |
RAW: | Système | Entrée/sortie |
SCRN: | Écran | Sortie |
CON: | Console | Entrée/sortie |
Vous remarquerez qu'il existe plusieurs noms de périphériques pour certains périphériques. Ces périphériques sont accessibles de différentes manières en les adressant avec des noms de périphériques différents, comme nous le verrons dans quelques exemples ci-dessous.
Le concept de noms de périphériques est important. Entre autres choses, cela signifie que l'Amiga prend en charge les entrées/sorties de périphérique généralisées (également appelées entrées/sorties indépendantes du périphérique ou redirection d'entrées/sorties). En changeant simplement le nom d'un périphérique, vous pouvez diriger la sortie vers ou recevoir une entrée de n'importe quel périphérique spécifié. Par exemple, disons que vous avez un programme vidant un fichier de données sur l'imprimante. Il est assez simple de généraliser cette routine afin que l'utilisateur puisse choisir de visualiser les données à l'écran à la place. Toutes les commandes Amiga BASIC envoyant une sortie ou recevant une entrée d'un périphérique fonctionneront avec tous les périphériques. Les seules exceptions, bien sûr, sont les types d'entrées/sorties ne convenant pas à un certain périphérique - vous ne pouvez évidemment pas recevoir d'entrée d'une imprimante ou envoyer une sortie au clavier.
Ouverture (OPEN) d'un fichier de périphérique
Pour configurer un canal de communication dans Amiga BASIC, utilisez l'instruction OPEN. Il existe deux versions d'OPEN dans Amiga BASIC, et les deux font la même chose. Voici la première syntaxe :
OPEN device FOR access mode AS filenumber LEN=file buffer size |
device est le nom d'un périphérique reconnu par l'Amiga ; le mode d'accès spécifie si vous récupérez, envoyez ou ajoutez des données ; filenumber est le numéro d'identification unique que vous attribuez au canal de communication ; et la taille du tampon de fichier est un paramètre facultatif spécifiant la taille du tampon de fichier ou la taille d'enregistrement à utiliser avec des fichiers aléatoires (nous discuterons des différents types de fichiers dans un instant). La limite maximale pour la taille du tampon de fichier est de 32 767 octets.
Pour les fichiers de disque, le périphérique inclut le nom de fichier AmigaDOS. Si vous omettez l'un des périphériques BASIC, un périphérique ou un nom de fichier AmigaDOS est supposé. Si le nom de fichier n'inclut pas de spécificateur d'unité de disque ou de nom de volume, le répertoire actuel de BASIC est utilisé pour référencer le fichier.
Un mot d'explication sur la taille du tampon de fichier : le tampon de fichier est une section de la mémoire contenant les données lues ou écrites dans le fichier. La taille de ce tampon est normalement de 128 octets pour les fichiers aléatoires et de 512 octets pour les fichiers séquentiels. Lorsque vous accédez à un fichier, BASIC remplit toujours la mémoire tampon du fichier à pleine capacité, même si vous ne le lui demandez pas. Par exemple, si vous essayez de lire un seul caractère d'un fichier, BASIC continue et lit suffisamment de caractères pour remplir le tampon de fichier actuel. Pourquoi ? Ainsi, toute unité de disque ultérieure à partir du même fichier peut éviter d'accéder réellement au périphérique - les données peuvent être récupérées à partir de la mémoire. Cela accélère les entrées/sorties. Pour les fichiers aléatoires, vous devez utiliser le paramètre facultatif LEN pour définir la taille de la mémoire tampon du fichier sur le nombre de caractères dans un enregistrement du fichier. Pour les fichiers séquentiels, vous pouvez créer une mémoire tampon de n'importe quelle taille, car les enregistrements séquentiels peuvent être de longueurs différentes. Plus la mémoire tampon est grande, plus les entrées/sorties sont rapides. Cependant, les tampons plus grands consomment également plus de mémoire BASIC.
Voici quelques exemples d'instructions OPEN typiques :
Cela ouvre le périphérique nommé LPT1: (une imprimante connectée au port parallèle ou série) pour la sortie via le canal numéro 1. Notez que l'ouverture d'un canal pour l'entrée d'une imprimante serait illogique et déclencherait donc une erreur.
Cela ouvre le fichier disque "Adresses" sur le répertoire courant pour une entrée via le canal 4.
Cela ouvre le fichier disque "Adresses" sur le répertoire courant pour ajouter des données via le canal 3.
Cela ouvre le fichier disque "MyFile" dans le sous-répertoire "BasicProgs" sur le disque nommé Workbench pour une sortie via le canal 2. Si le disque nommé Workbench n'est pas actuellement monté dans un unité de disque lorsque vous essayez d'accéder à ce fichier, l'Amiga fait apparaît automatiquement une fenêtre de requête système vous demandant d'insérer Workbench.
Voici la syntaxe alternative de l'instruction OPEN :
OPEN access mode, filenumber, device, file buffer size |
Le mode d'accès est "R" pour une entrée/sortie de fichier aléatoire, "I" pour une entrée de fichier séquentielle, "O" pour une sortie de fichier séquentielle, ou "A" pour ajouter des données à un fichier séquentiel ; filenumber est le numéro unique que vous attribuez au canal de communication ; de vice est le nom de périphérique d'un périphérique reconnu par Amiga BASIC ; et la taille du tampon de fichier est le paramètre facultatif décrit ci-dessus. Les instructions suivantes sont équivalentes aux quatre exemples précédents :
Voici quelques exemples supplémentaires :
- OPEN "R",#3,"CASH_RECEIPTS",150
Cela ouvre le fichier disque "CASH_RECEIPTS" sur le répertoire courant pour l'entrée/sortie à accès aléatoire en tant que fichier 3. La taille de chaque enregistrement est de 150 octets. L'autre forme de cette instruction est OPEN "Cash_Receipts" AS #3 LEN=150.
- OPEN "A",#1,"CheckFile"
Cela ouvre le fichier de disque séquentiel "CheckFile" sur le répertoire en cours via le canal 1 pour ajouter des données à la fin du fichier. Il pourrait également être écrit comme OPEN "Checkfile" FOR APPEND AS #1.
Combinez simplement OPEN avec FOR INPUT, FOR OUTPUT, FOR APPEND, le mot-clef AS et le numéro de fichier. N'oubliez pas que vous devez utiliser un numéro de fichier différent pour chaque fichier que vous souhaitez ouvrir simultanément. Et comme ce numéro de fichier est réservé tant que le fichier est ouvert, vous devez fermer un fichier avant de pouvoir réutiliser son numéro de fichier (exemple : CLOSE #1 ou CLOSE 1). Certains programmeurs aiment faire précéder chaque OPEN d'un CLOSE pour s'assurer que le canal est disponible, évitant ainsi une erreur de fichier déjà ouvert. Cependant, un programme bien écrit nettoie après lui-même, fermant tous les fichiers n'étant plus nécessaires, donc cette précaution ne devrait pas être nécessaire.
La saisie au clavier fonctionne un peu comme les instructions normales INPUT ou INKEY$. De même, la sortie vers SCRN: est identique à une instruction PRINT ou WRITE ordinaire. Par conséquent, nous nous concentrerons sur les applications les plus utiles des entrées/sorties de périphérique de programmation pour les imprimantes, les fichiers sur disque et les modems.
À propos du disque RAM
Le disque RAM (nom du périphérique RAM:) est conçu pour simuler un unité de disque physique en mémoire vive. Chaque fonction pertinente à la programmation de disque s'applique à la RAM: périphérique-il suffit de remplacer RAM: par DF0:, DF1:, DH0:, ou le nom de volume du disque.
La première fois que vous accédez au disque RAM, l'Amiga doit charger le pilote de périphérique RAM: depuis votre disque de démarrage (c'est pourquoi un demandeur système apparaît si votre disque de démarrage n'est pas actuellement monté). Une exception à cela est lorsque vous avez précédemment édité un programme BASIC dans la fenêtre List avec les options Cut, Copy ou Paste dans le menu Edit de BASIC. Chaque fois que vous définissez et coupez ou copiez quelque chose à partir d'un programme, Amiga BASIC entrepose le texte défini sur le disque RAM dans un fichier appelé "BasicClip". Vous pouvez le confirmer en saisissant la commande dans une fenêtre CLI :
TYPE RAM:BasicClip |
Le disque RAM grandit au fur et à mesure que vous y ajoutez. Comme le montre la commande INFO dans AmigaDOS, elle est toujours pleine à 100%, mais il n'y a pas de limite supérieure à sa taille (et sur des machines de plusieurs mégaoctets, elle peut être très grande). Accès à la RAM : l'appareil est incroyablement rapide, même plus rapide qu'un disque dur, car aucune récupération réelle ne doit être effectuée. Les données sont déjà en mémoire, il suffit donc de les déplacer.
Le disque RAM est généralement destiné aux fichiers temporaires, car tout ce qui se trouve dans la RAM : est perdu lorsque l'Amiga est éteint (ou lorsque son alimentation est temporairement détournée vers une autre galaxie lors d'une baisse de tension). Une réinitialisation CTRL+Amiga+Amiga efface également le disque RAM. Bien que l'utilisation du disque RAM soit un moyen simple d'accélérer un programme gourmand en ressources disque, le programmeur ou l'utilisateur doit prendre la responsabilité de copier le fichier sur un support physique durable.