Entreposage sur bande magnétique
Les méthodes de base pour utiliser le magnétophone à cassettes pour les programmes sont SAVE, LOAD et VERIFY.
Nous avons vu que LOAD supprime l'ancien programme et les variables de l'ordinateur avant de charger les nouveaux depuis la bande magnétique; il y a une autre déclaration, MERGE, qui ne fonctionne pas. MERGE ne supprime une ancienne ligne de programme ou une ancienne variable que s'il le faut car il y en a une nouvelle avec le même numéro de ligne ou le même nom. Tapez le programme «dice» (des dés) de la page Les nombres aléatoires et enregistrez-le sur bande magnétique, sous le nom de «dice». Maintenant, entrez et exécutez ce qui suit :
puis procédez comme pour la vérification, mais en remplaçant VERIFY "dice" par :
- MERGE "dice"
Si vous listez le programme, vous pouvez voir que les lignes 1 et 2 ont survécu, mais que les lignes 10 et 20 ont été remplacées par celles du programme de dés. x a également survécu (essayez PRINT x). Vous avez maintenant vu des formes simples des quatre déclarations utilisées avec la cassette :
- SAVE enregistre le programme et les variables sur cassette.
- VERIFY vérifie le programme et les variables sur la cassette par rapport à ceux déjà dans l'ordinateur.
- LOAD efface l'ordinateur de tous ses programmes et variables, et les remplace par de nouveaux lus à partir de la cassette.
- MERGE est comme LOAD sauf qu'il n'efface pas une ancienne ligne de programme ou une variable à moins qu'il ne le soit parce que son numéro de ligne ou son nom est le même que celui d'une nouvelle de la cassette.
Dans chacun d'eux, le mot-clef est suivi d'une chaîne de caractères : pour SAVE, cela donne un nom au programme sur bande magnétique, tandis que pour les trois autres, il indique à l'ordinateur quel programme rechercher. Pendant la recherche, il affiche le nom de chaque programme qu'il rencontre. Il y a quelques rebondissements à tout cela.
Pour VERIFY, LOAD et MERGE vous pouvez fournir la chaîne de caractères vide comme nom à rechercher : alors l'ordinateur ne se soucie pas du nom, mais prend le premier programme qu'il rencontre.
Une variante de SAVE prend la format suivant :
SAVE string LINE number |
Un programme sauvegardé à l'aide de ceci est enregistré de telle manière que lorsqu'il est relu par LOAD (mais pas MERGE), il saute automatiquement à la ligne avec le numéro donné, s'exécutant ainsi de lui-même.
Jusqu'à présent, les seuls types d'informations que nous avons entreposés sur cassette ont été des programmes avec leurs variables. Il existe également deux autres types, appelés tableaux et octets.
Les tableaux sont traités légèrement différemment : vous pouvez enregistrer des tableaux sur bande magnétique en utilisant DATA dans une instruction SAVE en :
SAVE string DATA array name() |
string est le nom que les informations auront sur la bande magnétique et fonctionne exactement de la même manière que lorsque vous enregistrez un programme ou des octets simples.
Le array name spécifie le tableau que vous souhaitez enregistrer, il ne s'agit donc que d'une lettre ou d'une lettre suivie de $. Rappelez-vous les parenthèses après; vous pourriez penser qu'ils sont logiquement inutiles, mais vous devez quand même les mettre pour faciliter la tâche de l'ordinateur.
Soyez clair sur les rôles distincts de la chaîne de caractères et du nom du tableau. Si vous dites (par exemple) :
puis SAVE prend le tableau de l'ordinateur et l'entrepose sur bande magnétique sous le nom "Bloggs". Lorsque vous tapez :
l'ordinateur recherchera un tableau de nombres entreposé sur bande magnétique sous le nom "Bloggs" (quand il le trouvera, il écrira "Number array: Bloggs") et le comparera au tableau b de l'ordinateur :
trouve le tableau sur bande magnétique, puis - s'il y a de la place pour cela dans l'ordinateur - supprime tout tableau déjà existant appelé b et charge le nouveau tableau à partir de la bande, en l'appelant b.
Vous ne pouvez pas utiliser MERGE avec des tableaux enregistrés.
Vous pouvez enregistrer des tableaux de caractères (chaînes de caractères) exactement de la même manière. Lorsque l'ordinateur recherche la bande magnétique et en trouve une, il écrit "Character array:" suivi du nom. Lorsque vous chargez un tableau de caractères, il supprimera non seulement tout tableau de caractères précédent portant le même nom, mais également toute chaîne portant le même nom.
L'entreposage d'octets est utilisé pour des éléments d'information sans aucune référence à l'utilisation de l'information - il peut s'agir d'images télévisées, de graphiques définis par l'utilisateur ou de quelque chose que vous avez créé vous-même. Il est représenté à l'aide du mot CODE, comme dans :
- SAVE "picture" CODE 16364,6912
L'unité d'entreposage en mémoire est l'octet (un nombre compris entre 0 et 255) et chaque octet a une adresse (étant un nombre entre 0 et 65535). Le premier nombre après CODE est l'adresse du premier octet à entreposer sur la bande magnétique, et le second est le nombre d'octets à entreposer. Dans notre cas, 16384 est l'adresse du premier octet du fichier d'affichage (contenant l'image de télévision) et 6912 est le nombre d'octets qu'il contient, nous enregistrons donc une copie de l'écran de télévision - essayez-le. Le nom "image" fonctionne exactement comme les noms des programmes.
Pour le recharger, utilisez :
- LOAD "picture" CODE
vous pouvez mettre des nombres après CODE dans le format suivant :
LOAD name CODE start, length |
Ici, length n'est qu'une mesure de sécurité; lorsque l'ordinateur a trouvé les octets sur la bande magnétique avec le bon nom, il refusera toujours de les charger s'il y en a plus que la longueur - car il y a évidemment plus de données que prévu, cela pourrait sinon écraser quelque chose que vous n'aviez pas l'intention de être écrasé. Il donne le rapport d'erreur R Tape loading error. Vous pouvez manquer une longueur, puis l'ordinateur lira les octets, quel qu'en soit le nombre.
start affiche l'adresse où le premier octet doit être rechargé - cela peut être différent de l'adresse à partir de laquelle il a été enregistré, bien que s'ils sont identiques, vous pouvez manquer start dans l'instruction LOAD.
Le CODE 16394,6912 est si utile pour enregistrer et charger l'image que vous pouvez le remplacer par SCREEN$ - par exemple :
C'est un cas rare pour lequel VERIFY ne fonctionnera pas - VERIFY écrit les noms de ce qu'il trouve sur la bande, de sorte qu'au moment où il arrive à la vérification, le fichier d'affichage a été modifié et la vérification échoue. Dans tous les autres cas, vous devez utiliser VERIFY chaque fois que vous utilisez SAVE.
Vous trouverez ci-dessous un résumé complet des quatre déclarations utilisées dans cette page.
Le nom représente n'importe quelle expression de chaîne de caractères et fait référence au nom sous lequel les informations sont entreposées sur la cassette. Il doit être composé de caractères d'affichage ASCII, dont seuls les 10 premiers sont utilisés.
Il existe quatre types d'informations pouvant être entreposées sur bande magnétique : le programme et les variables (ensemble), les tableaux de nombres, les tableaux de caractères et les octets droits.
Lorsque VERIFY, LOAD et MERGE recherchent sur la bande magnétique des informations avec un nom donné et d'un type donné, ils affichent à l'écran le type et le nom de toutes les informations qu'ils trouvent. Le tri est indiqué par 'Program:', 'Number array:', 'Character array:' ou 'Bytes:'. Si le nom était la chaîne de caractères vide, ils prennent le premier lot d'informations du bon tri, quel que soit son nom.
SAVE
Enregistre les informations sur bande magnétique sous le nom donné. L'erreur F se produit lorsque le nom est vide ou comporte 11 caractères ou plus.
SAVE affiche toujours un message Start tape, then press any key et attend qu'une touche soit pressée avant de sauvegarder quoi que ce soit.
- Programme et variables :
- Octets :
- Tableaux :
SAVE name LINE line number |
enregistre le programme et les variables de manière à ce que LOAD suive automatiquement avec :
GO TO line number |
SAVE name CODE start, length |
enregistre la longueur des octets à partir du début de l'adresse :
SAVE name SCREEN$ |
est équivalent à :
SAVE name CODE 16364,6912 |
et enregistre l'image de télévision :
SAVE name DATA letter () |
ou
SAVE name DATA letter $ () |
enregistre le tableau dont le nom est la letter ou la letter $ (cela n'a pas besoin d'avoir de relation avec le nom).
VERIFY
Vérifie les informations sur la bande magnétique par rapport aux informations déjà en mémoire. L'échec de la vérification génère une erreur R Tape loading error.
- Programme et variables :
- Octets :
- Tableaux :
VERIFY name |
VERIFY name CODE start, length |
Si le nom des octets sur la bande magnétique est supérieur à la longueur en nombre, donne alors l'erreur R. Sinon, les compare aux octets en mémoire en commençant au début de l'adresse.
VERIFY name CODE start |
vérifie le nom des octets sur la bande magnétique par rapport à ceux en mémoire en commençant au début de l'adresse.
VERIFY name CODE |
vérifie le nom des octets sur la bande magnétique par rapport à ceux en mémoire à partir de l'adresse à partir de laquelle le premier octet de la cassette a été enregistré.
VERIFY name SCREEN$ |
est équivalent à :
VERIFY name CODE 16364,6912 |
mais échouera presque certainement à vérifier.
VERIFY name DATA letter () |
ou
VERIFY name DATA letter $ () |
Vérifie le nom du tableau sur la bande magnétique par rapport à la letter du tableau ou à la letter $ en mémoire.
LOAD
Charge de nouvelles informations à partir de la bande magnétique, supprimant les anciennes informations de la mémoire.
- Programme et variables :
- Octets :
- Tableaux :
LOAD name |
supprime l'ancien programme et les variables et charge le nom du programme et des variables de la cassette ; si le programme a été enregistré avec le nom SAVE LINE, il effectue un saut automatique.
L'erreur 4 Out of memory occurs s'il n'y a pas de place pour le nouveau programme et les variables. Dans ce cas, l'ancien programme et les variables ne sont pas supprimés.
LOAD name CODE start, length |
Si le nombre d'octets name de la bande magnétique est supérieur à length, l'erreur R est renvoyée. Sinon, charge-les en mémoire en commençant à l'adresse start et en écrasant tout ce qui s'y trouvait auparavant.
LOAD name CODE start |
charge le nom des octets de la bande magnétique dans la mémoire, en commençant à l'adresse de début et en écrasant tout ce qui s'y trouvait auparavant.
LOAD name CODE |
charge le nom des octets de la bande magnétique dans la mémoire en commençant à l'adresse à partir de laquelle le premier octet de la bande a été enregistré et en écrasant les octets s'y trouvant auparavant en mémoire.
LOAD name DATA letter () |
ou
LOAD name DATA letter $ |
supprime tout tableau déjà appelé letter ou letter $ (selon le cas) et en forme un nouveau à partir du tableau entreposé sur la cassette.
L'erreur 4 Out of memory se produit s'il n'y a pas de place pour de nouveaux tableaux. Les anciens tableaux ne sont pas supprimés.
MERGE
Charge les nouvelles informations de la cassette sans supprimer les anciennes informations de la mémoire.
- Programme et variables :
- Octets :
- Tableaux :
MERGE name |
fusionne le nom du programme avec celui déjà en mémoire, écrasant toutes les lignes de programme ou les variables de l'ancien programme dont les numéros de ligne ou les noms sont en conflit avec ceux du nouveau programme.
L'erreur 4 Out of memory se produit à moins qu'il n'y ait suffisamment d'espace en mémoire pour tous les anciens programmes et variables et tous les nouveaux programmes et variables chargés à partir de la bande magnétique.
Ce n'est pas possible.
Ce n'est pas possible.