PC-BASIC Instructions

Guide de langage PC-BASIC

Déclarations

Une ligne de programme est composée d'un numéro de ligne et d'une ou plusieurs instructions.

Si plusieurs instructions sont placées sur une même ligne, elles doivent être séparées par des deux-points :

Les déclarations peuvent être vides. Chaque instruction a sa propre syntaxe idiosyncratique.

De nombreux ouvrages de référence sur GW-BASIC distinguent les commandes et les instructions ; cette distinction découle de la conception originale de Dartmouth du langage BASIC, dans laquelle les commandes ne faisaient pas partie du langage et ne pouvaient pas être utilisées dans les programmes, mais étaient plutôt utilisées pour contrôler l'interpréteur lui-même.

Cependant, dans GW-BASIC, cette distinction est moins utile et, par conséquent, cette référence inclut ce qui est traditionnellement considéré comme des commandes dans la catégorie des instructions.

AUTO AUTO [line_number|.] [, [increment]]
Démarre la numérotation automatique des lignes.

Les numéros de ligne sont générés automatiquement lorsque vous appuyez sur Entrée. Si une ligne de programme existe à un numéro de ligne généré, un * s'affiche après le numéro de ligne.

Pour éviter d'écraser cette ligne, laissez-la vide et appuyez sur Entrée.  Pour arrêter la numérotation automatique des lignes, appuyez sur Ctrl + Break ou Ctrl + C. 

La ligne en cours d'édition à ce point n'est pas enregistré. Arrête également l'exécution du programme et rend le contrôle à l'utilisateur. Toute instruction supplémentaire sur la ligne sera ignorée, également en mode direct.

Paramètres

• La numérotation des lignes commence à line_number, si est spécifié, la numérotation des lignes commence à la dernière ligne de programme enregistrée. Sinon, la numérotation des lignes commence à 10.

• Chaque numéro de ligne suivant est incrémenté par incrément, increment si est spécifié. Si une virgule est utilisée sans spécifier d'incrément, le dernier incrément spécifié dans une commande AUTO est utilisé. Si ce n'est pas le cas, l'incrément est par défaut de 10.

Les erreurs

• numéro_ligne n'est pas une valeur entière non signée dans [0—65529] : Syntax error.

• Lorsque la numérotation automatique des lignes est activée et que la touche Entrée est enfoncée sur une ligne vide avec un numéro supérieur à 65519 : Undefined line number.

• l'incrément vaut 0 : Illegal function call.
BEEP Bip le haut-parleur à 800 Hz pendant 0,25 s.
• Si une erreur de syntaxe est levée, le bip est toujours produit.
BEEP (switch) BEEP {ON|OFF} Active ou désactive le haut-parleur interne.
Remarques

• Uniquement légal avec l'option syntax={pcjr|tandy}.

• Sur PC-BASIC, les haut-parleurs interne et externe sont émulés via le même système audio.
BLOAD BLOAD file_spec [, offset] Charge un fichier d'image mémoire dans la mémoire.
Paramètres

• L'expression de chaîne file_spec est une spécification de fichier valide indiquant le fichier à partir duquel lire l'image mémoire.

• offset est une expression numérique dans la plage [-32768—65535].  Il indique un décalage dans le segment DEF SEG actuel où le fichier doit être stocké. S'il n'est pas spécifié, le décalage stocké dans le fichier BSAVE sera utilisé. S'il est négatif, son complément à deux sera utilisé.

Les erreurs

• Le fichier chargé n'est pas au format BSAVE : Bad file mode.

• spéc_fichier contient des caractères interdits : Bad file number (sur CAS1 : ) ; Bad file name (sur les périphériques de disque).

• file_spec a une valeur numérique : Type mismatch.

• le décalage n'est pas dans la plage [-32768—65535] : Overflow.
BSAVE BSAVE file_spec, offset, length Enregistre une zone de mémoire dans un fichier image.
Paramètres

• L'expression de chaîne file_spec est une spécification de fichier valide indiquant le fichier dans lequel écrire.

• offset est une expression numérique dans la plage [-32768—65535] indiquant le décalage dans le segment DEF SEG actuel à partir duquel commencer la lecture.

• length est une expression numérique dans la plage [-32768—65535] indiquant le nombre d'octets à lire.

• Si l'offset ou la longueur sont négatifs, leur complément à deux sera utilisé.

Les erreurs

• file_spec a une valeur numérique : Type mismatch.

• spéc_fichier contient des caractères interdits :  Bad file number (sur CAS1 : ) ; 
Bad file name (sur les périphériques de disque).

• le décalage n'est pas dans la plage [-32768—65535] : Overflow.

• la longueur n'est pas comprise dans la plage [-32768—65535] : Overflow.
CALL and CALLS {CALL|CALLS} address_var [( p0 [, p1]... )]
Ne fait rien.

Remarques

• Dans GW-BASIC, CALL ou CALLS exécute un sous-programme en langage machine.
• Cette instruction n'est pas implémentée dans PC-BASIC.

Paramètres
• address_var est un nom de variable numérique.
• p0, p1,... sont des noms de variables ou des éléments de tableau.

Les erreurs

• address_var est une variable de chaîne : Type mismatch.
• var_adresse est un littéral ou une expression : Syntax error.
CHAIN CHAIN [MERGE] file_spec [, [line_number_expr] [, ALL] [, DELETE range [, ign]]]
Charge un programme d'un fichier dans la mémoire et l'exécute, en transférant éventuellement des variables.

• Si ALL est spécifié, toutes les variables sont transférées. Sinon, les variables spécifiées dans l'instruction COMMON est transférée.

• Si MERGE est spécifié, le programme chargé est fusionné avec le programme existant. Pour être en mesure de l'utiliser, le fichier de programme indiqué par file_spec doit être en texte brut format.

• Si DELETE est spécifié, la plage de numéros de ligne est supprimée du code avant la fusion. C'est inutile sans MERGE.

Paramètres

• L'expression de chaîne file_spec est une spécification de fichier valide indiquant le fichier à lire le programme à partir de.

• line_number_expr est une expression numérique. Il sera interprété comme un numéro de ligne dans le nouveau programme et l'exécution commencera à partir de ce numéro de ligne. Si line_number_expr est négatif, il sera interprété comme son complément à deux.

• range est une plage de numéros de ligne dont le numéro de ligne de fermeture est spécifié et existe avant la fusion.

• ign est facultatif et ignoré.

Remarques

• CHAIN ​​préserve le réglage OPTION BASE.

• Uniquement si ALL est spécifié, les définitions DEF FN sont conservées.

• Uniquement si MERGE est spécifié, les définitions DEFINT, DEFSTR, DEFSNG, DEFDBL sont conservé.

• Si spécifié, ALL doit précéder DELETE ; si non spécifié, aucune virgule ne doit être insérée sa place et seulement deux virgules doivent précéder DELETE.

Les erreurs

• file_spec a une valeur numérique : Type mismatch.

• spéc_fichier contient des caractères interdits : Bad file number (sur CAS1 : ) ;
  Bad file name (sur les périphériques de disque).

• Le fichier spécifié dans spéc_fichier est introuvable : File not found.

• MERGE est spécifié et le programme chargé n'a pas été enregistré en mode texte : Bad file mode.

• Un numéro de ligne dans range est supérieur à 65529 : Syntax error.

• Si une erreur de syntaxe est levée par CHAIN, aucune ligne n'est supprimée et le nouveau programme
n'est pas chargé.

• Le numéro de ligne de fermeture dans la plage n'existe pas : Illegal function call.

• Si line_number_expr ne correspond pas à un numéro de ligne existant dans le nouveau programme, un appel de Illegal function call est déclenché mais le chargement ou la fusion est en cours effectué.

• Un fichier texte chargé contient des lignes sans numéro de ligne : Direct statement in file.

• Un fichier texte chargé contient des lignes de plus de 255 caractères : Line buffer overflow.

Tentative de chargement d'un fichier texte contenant une ligne LF plutôt que CR LF les terminaisons peuvent provoquer cette erreur.
CHDIR CHDIR dir_spec  
Remplacez le répertoire actuel sur un périphérique de disque par dir_spec.  Chaque périphérique de disque a son propre répertoire actuel.

Paramètres
• L'expression de chaîne dir_spec est une spécification de fichier valide indiquant un répertoire sur un périphérique de disque.

Les erreurs

• Aucun chemin correspondant n'a été trouvé : Path not found.
• dir_spec a une valeur numérique : Type mismatch.
• dir_spec est vide : Bad file name.
CIRCLE CIRCLE [STEP] (x, y), radius [, [colour] [, [start] [, [end] [, aspect]]]
Dessinez une ellipse ou un secteur d'ellipse.

Paramètres

• Le milieu de l'ellipse est en (x, y).  Si STEP est spécifié, le milieu est (x, y) est loin de la position actuelle.

• radius est le rayon, en pixels, le long de l'axe longitudinal.

• colour est l'attribut de couleur.

• Si start et end sont spécifiés, un secteur de l'ellipse est tracé à partir de start  radian à end radian, avec zéro radian l'intersection avec le x est l'axe droite. Si une valeur négative est spécifiée, le secteur d'arc est relié par une ligne au point médian.

• aspect spécifie le rapport entre le rayon y et le rayon x. Si ce n'est pas spécifiée, la valeur standard du mode SCREEN est utilisée, de manière à faire apparaître l'ellipse comme un cercle sur le matériel d'origine.

Remarques

• Pour aspect <> 1, l'algorithme du point médian utilisé ne reproduit pas parfaitement les pixels des ellipses de GW-BASIC.

Les erreurs

• L'instruction est exécutée en mode texte : Illegal function call.
• début ou fin n'est pas dans [0—2π] : Illegal function call.
• L'instruction se termine par une virgule : Missing operand.
CLEAR CLEAR [expr] [, [mem_limit] [, [stack_size] [, video_memory]]]
Efface toutes les variables, les tableaux, les fonctions utilisateur DEF FN et les définitions de type DEFtype.

Ferme tous les fichiers. Coupe tous les sons. Réinitialise l'état PLAY et place la musique au premier plan.

Efface tous les pièges ON ERROR. Réinitialise ERR et ERL à zéro.

Désactive tous les évènements. Désactive PEN et STRIG.

Réinitialise le générateur de nombres aléatoires. Efface la pile de boucles. Réinitialise l'état DRAW et la position graphique actuelle.

Paramètres

• mem_limit spécifie la limite supérieure de mémoire utilisable. La valeur par défaut est la précédente taille mémoire. La taille de mémoire par défaut est 65534.

• stack_size spécifie la quantité de mémoire disponible pour la pile BASIC. La valeur par défaut est la taille de pile précédente. La taille de pile par défaut est 512.

• video_memory spécifie la quantité de mémoire disponible pour la carte vidéo. Ce paramètre n'est légal qu'avec l'une des options syntax={pcjr, tandy}.  Au lieu d'utiliser CLEAR, l'option vidéo-mémoire peut également être utilisée pour définir la vidéo taille mémoire.

Remarques

• Le but de expr est inconnu.

• S'il est appelé à l'intérieur d'une boucle FOR — NEXT ou WHILE — WEND, une erreur sera déclenchée à  l'instruction NEXT ou WEND, car les piles de boucles ont été effacées.

Les erreurs

• L'un des arguments a une valeur de chaîne : Type mismatch.

• mem_limit, stack_size n'est sont pas dans [-32768—65535] : Overflow.

• mem_limit ou stack_size équivaut à 0 : Illegal function call.

• mem_limit équivaut à -1 or 65535 : Out of memory.

• mem_limit ou expr est trop petit: Out of memory.

• expr n'est pas dans [-32768—32767] : Overflow.

• expr est négatif: Illegal function call.
CLOSE CLOSE [[#] file_0 [, [#] file_1]...]
Ferme les fichiers. Si aucun numéro de dossier n'est spécifié, tous les dossiers ouverts sont fermés. Le dièse ( # ) est facultatif et n'a aucun effet.

Paramètres
• file_1, file_2,... sont des expressions numériques donnant des numéros de fichier.

Remarques

• Aucune erreur n'est générée si les numéros de fichiers spécifiés n'étaient pas ouverts.

Les erreurs

• file_1, file_2,... ne sont pas dans [-32768—32767] : Overflow.
• file_1, file_2,... ne sont pas dans [0—255] : Illegal function call.
• file_1, file_2,... ont une valeur de chaîne : Type mismatch.
• L'instruction se termine par une virgule,: Missing operand.
• Si une erreur se produit, seuls les fichiers avant la valeur erratique sont fermés.
CLS CLS [x][,]  
Efface l'écran ou une partie de celui-ci. Si x n'est pas spécifié, dans SCREEN 0, la zone d'affichage du texte est
effacé ; dans d'autres écrans, la zone d'affichage graphique est effacée. La virgule est facultative et
n'a aucun effet.

Paramètres

x est une expression à valeur numérique.

0 Efface l'écran de tous les textes et graphiques
1 Efface uniquement la fenêtre graphique
2 Efface uniquement la fenêtre de texte

L'argument facultatif x n'est pas disponible avec syntax={pcjr|tandy}.

Les erreurs

• x a une valeur de chaîne : Type mismatch.
• x n'est pas dans [-32768—32767] : Overflow.
• x n'est pas dans [0, 1, 2] : Illegal function call.
• Aucune virgule n'est spécifiée mais du texte suit : Illegal function call.
• Une virgule est spécifiée suivie de plus : Syntax error.
• syntax=pcjr est défini et un argument est spécifié : Syntax error.
• syntax=tandy est défini et un argument est spécifié : Illegal function call.
• Si une erreur se produit, l'écran n'est pas effacé.
COLOR (text mode)
COLOR [foreground] [, [background] [, border]]
Modifie les attributs actuels de premier plan et d'arrière-plan. Tous les nouveaux caractères imprimés seront
selon les attributs nouvellement définis. Les caractères existants à l'écran ne sont pas affectés.

Paramètres
• foreground est une expression numérique dans [0—31].  Cela précise le nouveau attribut de premier plan.
Les attributs 16 à 31 sont des versions clignotantes des attributs 0 à 15.

• background est une expression numérique dans [0—15].  Cela précise le nouveau attribut de fond.
Il est pris MOD 8 : Les valeurs 8—15 produisent la même couleur comme 0—7.

• border est une expression numérique dans [0—15] spécifiant l'attribut de bord.

Attributs du mode texte (couleur)


Attributs du mode texte (monochrome)


Remarques

• La syntaxe et l'effet de COULEUR sont différents dans les différents modes ÉCRAN : COULEUR (mode texte), COULEUR (ÉCRAN 1), (ÉCRAN 3—9).

• Au moins un paramètre doit être fourni et l'instruction ne doit pas se terminer par une virgule.

Les erreurs

• N'importe lequel des paramètres a une valeur de chaîne : Type mismatch.
• Aucun des paramètres n'est dans [-32768—32767] : Overflow.
• le premier plan n'est pas dans [0—31], l'arrière-plan n'est pas dans [0—15] ou la bordure n'est pas dans [0—15] : Illegal function call.
• L'instruction est utilisée dans SCREEN 2 : Illegal function call.

COLOR (SCREEN 1) COLOR [palette_0] [, palette [, override]]
Attribue de nouvelles couleurs à la palette d'attributs.

• palette_0 est une expression numérique dans [0—255].  Cela définit la couleur de la palette associée à l'attribut 0 ; par défaut, le fond a cet attribut. Tous les pixels avec cet attribut changeront de couleur.

La valeur de la couleur de la palette est tirée de la l'ensemble de 64 couleurs. palette_0 est prise MOD 64.

• palette est une expression numérique dans [0—255] qui spécifie la palette :
     • palette impair définit la palette CGA standard (cyan, magenta, gris).
     • palette définit même la palette alternative (vert, rouge, marron).

Tous les pixels avec les attributs 1,2,3 changeront de couleur vers la nouvelle palette.

• override est une expression numérique dans [0—255]. 
Si override est spécifié, palette est défini comme ci-dessus mais en utilisant override au lieu de palette. palette est alors ignorée.

Palettes CGA


Remarques

• La syntaxe et l'effet de COULEUR sont différents dans les différents modes ÉCRAN :
COULEUR (mode texte), COULEUR (ÉCRAN 1), (ÉCRAN 3—9).

• Au moins un paramètre doit être fourni et l'instruction ne doit pas se terminer par une virgule.

Les erreurs

• N'importe lequel des paramètres a une valeur de chaîne : Type mismatch.
• Aucun des paramètres n'est dans [-32768—32767] : Overflow.
• L'un des paramètres n'est pas dans [0—255] : Illegal function call.
COLOR (SCREEN 3—9)
COLOR [foreground] [, palette_0 [, dummy]]
Modifie l'attribut de premier plan actuel et la couleur de l'attribut 0.

Paramètres

• foreground est une expression numérique dans [1—15] Cela définit le nouvel attribut de premier plan. Cela s'applique uniquement aux nouveaux caractères imprimés ou pixels tracés.

• palette_0 est une expression numérique dans [0—15] Cela définit la couleur associée à l'attribut 0 ; par défaut, le fond a cet attribut. Tous les pixels avec cet attribut changeront de couleur.

Dans SCREEN 7 et 8, la couleur palette_0 est prise parmi les 8 premiers du set EGA 16 couleurs. palette_0 est MOD 8.  À L'ÉCRAN 9, la valeur de couleur est tirée du jeu de 64 couleurs.

• dummy est une expression numérique avec une valeur dans [0—255] La valeur de dummy est ignorée.

Palette par défaut EGA


Liste des couleurs EGA


Remarques

• La syntaxe et l'effet de COULEUR sont différents dans les différents modes ÉCRAN :
COULEUR (mode texte), COULEUR (ÉCRAN 1), (ÉCRAN 3—9).

• Au moins un paramètre doit être fourni et l'instruction ne doit pas se terminer par une virgule.

Les erreurs

• N'importe lequel des paramètres a une valeur de chaîne : Type mismatch.

• Aucun des paramètres n'est dans [-32768—32767] : Overflow.

• le premier plan n'est pas dans [1—15] ; l'arrière-plan n'est pas dans [0—15] ;
   ou dummy n'est pas dans [0—255] : Appel de fonction illégal.
COM COM(port) {ON|OFF|STOP}  
• ON : active l'interception d'événements ON COM(port) du port série émulé.
• OFF : désactive le piégeage.
• STOP : arrête le trapping jusqu'à ce que COM(port) ON soit utilisé.

Les évènements qui se produisent alors que le piégeage est arrêté se déclenchent immédiatement lorsque le piégeage est réactivé.

Paramètres

• port est une expression numérique avec une valeur de 1 ou 2.  Cela spécifie quel port série ( COM1: ou COM2: ) est piégé. Si port est égal à 0, cette instruction ne fait rien.

Les erreurs

• port une valeur de chaîne : Type mismatch.
• le port n'est pas dans [-32768—32767] : Overflow.
• le port n'est pas dans [0—3] : Illegal function call.
COMMON COMMON [var_0 [( [index_0] )] [, [var_1 [( [index_1] )] ]]...]
Spécifie les variables à transmettre en tant que variables communes au programme appelé avec CHAIN ​​.

Paramètres

• var_0, var_1,... sont des noms de variables scalaires ou tableaux.
• index_0, index_1,... sont des nombres littéraux facultatifs ; ils sont ignorés.

Remarques

• Les éléments de tableau avec des crochets et un index ne provoquent pas d'erreur, mais sont ignorés.

• Les instructions COMMON ne sont pas exécutées au moment de l'exécution ; au lieu de cela, lorsqu'une commande CHAIN ​​est rencontrée où ALL n'est pas spécifié, toutes les déclarations COMMON du programme sont analysées. En conséquence, le DEFSTR, DEFINT, DEFSNG ou les paramètres DEFDBL utilisés sont ceux qui sont actifs au moment de l'exécution de l'instruction CHAIN.

• Les déclarations COMMON n'ont pas besoin d'être accessibles dans le déroulement du programme pour être utilisées. Ils peuvent apparaître n'importe où avant ou après l'instruction CHAIN ​​qui les utilise.

• Les variables peuvent être répétées ou apparaître dans plusieurs déclarations COMMON.

• Si le mot clé COMMON n'est pas le premier élément de l'instruction, la déclaration sera ignorée.

En particulier, toute déclaration COMMON qui se produit directement après un mot clé THEN ou ELSE ne sera pas utilisée.

COMMON dans la deuxième instruction ou les instructions suivantes d'une instruction composée après THEN ou ELSE sera utilisé quelle que soit la valeur de la condition IF.
CONT CONT [anything]  
Reprend l'exécution d'un programme qui a été interrompu par STOP, END, Ctrl + C ou Ctrl + Pause.

S'il est exécuté à partir d'un programme, arrête l'exécution du programme et rend le contrôle à l'utilisateur. Toute instruction supplémentaire sur la ligne sera ignorée, également en mode direct.

Remarques

• Tout ce qui suit le mot-clé CONT est ignoré.

• Cette instruction ne peut être utilisée qu'en mode direct.

• Si une interruption est rencontrée dans la routine GOSUB appelée à partir d'une ligne directe continue (par ex.
GOSUB 100:PRINT A$ ), CONT écrasera la ligne directe en cours d'exécution.

Comme le sous-programme RETURN est placé après le GOSUB dans l'ancienne ligne directe, des choses étranges peuvent se produire si des commandes sont données après CONT.

Dans GW-BASIC, cela peut entraîner des erreurs étranges dans des lignes de programme inexistantes car l'analyseur exécute des octets qui ne font pas partie d'une ligne de programme.

En PC-BASIC, si la nouvelle ligne directe est plus courte, l'exécution s'arrête après RETURN ; mais si la ligne directe est prolongée au-delà de l'ancienne position de retour, l'analyseur essaie de reprendre à cette position de retour, avec des effets étranges.

Les erreurs

• Aucun programme n'est chargé, un programme n'a pas été exécuté, après modification d'une ligne de programme ou après CLEAR : Can't continue.

• La rupture s'est produite en ligne directe : Can't continue.

• CONT est utilisé dans un programme : Can't continue.
DATA DATA [const_0] [, [const_1]]... Spécifie les données qui peuvent être lues par une instruction READ.
Paramètres

• const_0, const_1,... sont des chaînes et des nombres littéraux ou peuvent être vides. Les chaînes de caractères
et les littéraux peuvent être donnés avec ou sans guillemets.

Si les guillemets sont omis, les espaces de début et de fin sont ignorés et les virgules ou les deux-points doivent terminer l'instruction de données.

Remarques

• Les déclarations DATA n'ont pas besoin d'être accessibles dans le déroulement du programme pour être utilisées.
Ils peuvent apparaître n'importe où avant ou après l'instruction READ qui les utilise.

• Si le mot clé DATA n'est pas le premier élément de l'instruction, la déclaration sera ignorée. En particulier, toute déclaration DATA qui se produit directement après un mot-clé THEN ou ELSE ne sera pas utilisée.

DATA dans la deuxième instruction ou les instructions suivantes d'une instruction composée après THEN ou ELSE sera utilisée quelle que soit la valeur de la condition IF.

Les erreurs

• Si le type du littéral ne correspond pas à celui de l'instruction READ correspondante, Syntax error se produit sur l'instruction DATA.
DATE$ (statement) DATE$ = date  
Définit la date système.

Date est une expression de chaîne qui représente une date dans l'un des formats suivants :
"mm{-|/}jj{-|/}aa" ou "mm{-|/}jj{-|/}aaaa".

Parmi ceux-ci,

• mm peut comporter un ou deux caractères et doit être entre [1—12].
• dd peut comporter un ou deux caractères et doit figurer dans [1—31].
• yyyy doit être en [1980—2099].
• yy peut comporter un ou deux caractères et doit se trouver dans l'une des plages suivantes :
• [0—77], interprété comme 2000—2077 ; ou
• [80—99], interprété comme 1980—1999.

Remarques

• La date système n'est pas réellement modifiée ; à la place, PC-BASIC mémorise le décalage par rapport à la véritable date système. Cela évite de demander l'autorisation de l'utilisateur pour modifier l'heure du système.

• GW-BASIC semble accepter des dates non valides telles que "02-31-2000". PC-BASIC déclenche un Illegal function call pour ceux-ci.

les erreurs

• date a une valeur numérique : Type mismatch.
• la date n'est pas au format spécifié ci-dessus : Illegal function call.
DEF FN DEF FN[ ]name [(arg_0 [, arg_1]...)] = expression
Définit une fonction appelée FNname (ou FN name : les espaces entre FN et name sont facultatifs). Lors de l'appel de FNname(... ), l'expression est évaluée avec les paramètres fournis substitués.

Tous les noms de variables utilisés dans la fonction qui ne figurent pas dans la liste des arguments font référence aux variables globales correspondantes. Le résultat de l'évaluation est la valeur de retour de FNname. Le type de la valeur de retour doit être compatible avec le type indiqué par name.

Remarques

• Cette instruction ne peut être utilisée que sur une ligne de programme.

• Comme la fonction doit être une expression unique et que PC-BASIC n'a pas d'opérateur ternaire, il n'y a aucun moyen de définir une fonction récursive qui se termine réellement.

Paramètres

• name doit être un nom de variable légal.

• arg_0, arg_1,... doivent être des noms de variables légaux. Ce sont les paramètres de la fonction. Les variables du même nom peuvent ou non exister dans le programme ; leur valeur n'est pas affectée ou utilisée par la fonction définie.

• expression doit être une expression PC-BASIC légale.

Les erreurs

• L'instruction est exécutée directement et non dans une ligne de programme : Illegal direct.

• Si le type de la valeur de retour est incompatible avec le type de name, aucune erreur n'est générée au niveau de l'instruction DEF FN ; cependant, une incompatibilité de type sera déclenchée au premier appel de FNname.
DEFINT, DEFDBL, DEFSNG, DEFSTR {DEFINT|DEFDBL|DEFSNG|DEFSTR}
first_0[- last_0] [, first_1[- last_1]]...
Définit le type supposé si aucun sceau n'est spécifié lorsqu'un nom de variable est utilisé. L'instruction définit le type par défaut pour les variables commençant par une lettre parmi les plages spécifiées.

Le type par défaut est défini sur :

DEFINT entier ( % )
DEFDBL double ( # )
DEFSNG single ( ! )
DEFSTR Chaîne ( $ )

Paramètres
• first_0, last_0,... sont des lettres de l'alphabet. Paires de lettres reliées par un
tiret - indique des plages inclusives.

Remarques

• DEFSNG A-Z est le réglage par défaut.
DEF SEG DEF SEG [= address]  
Définit le segment de mémoire à utiliser par BLOAD, BSAVE, ALL, PEEK, POKE et USR.

Paramètres
• adresse est une expression numérique dans [-32768—65535].

Remarques

• Si l'adresse est négative, elle est interprétée comme son complément à deux.
• Si l'adresse n'est pas spécifiée, le segment est défini sur le segment de données GW-BASIC.

Les erreurs

• address a une valeur de chaîne : Type mismatch.
• adresse n'est pas dans [-32768—65535] : Overflow.
DEF USR DEF USR[n] = address Ne fait rien.
Paramètres

• n est un chiffre compris entre 0 et 9 inclus.
• adresse est une expression numérique dans [-32768—65535].

Remarques

• Dans GW-BASIC, cette instruction définit l'adresse de début d'une fonction en langage assembleur.
• Cette instruction n'est pas implémentée dans PC-BASIC.
• Si l'adresse est négative, elle est interprétée comme son complément à deux.

Les erreurs

• n n'est pas un chiffre dans [0—9] : Syntax error.
• address a une valeur de chaîne : Type mismatch.
• l'adresse n'est pas dans [-32768—65535] : Overflow.
DELETE DELETE [line_number_0|.] [-[line_number_1|.] ]
Supprime une plage de lignes du programme. Arrête également l'exécution du programme et rend le contrôle à l'utilisateur. Toute instruction supplémentaire sur la ligne sera ignorée, également en mode direct.

Paramètres

• line_number_0 et line_number_1 sont des numéros de ligne dans la plage [0—65529], spécifiant la plage inclusive de numéros de ligne à supprimer.

• A. indique la dernière ligne éditée.
• Si le point de départ est omis, la plage commencera au début du programme.
• Si le point final est omis, la plage se terminera à la fin du programme.
• Si aucune plage n'est spécifiée, tout le programme sera supprimé.

Les erreurs

• line_number_0 ou line_number_1 est supérieur à 65529 : Syntax error.
• La plage spécifiée n'inclut aucune ligne de programme stockée : Illegal function call.
DIM DIM name [{(|[} limit_0 [, limit_1]... {)|]}] [,... ]
Alloue de la mémoire pour une ou plusieurs taies.

L'instruction DIM fixe également le nombre d'indices du tableau. Un tableau ne peut être alloué qu'une seule fois ; pour réallouer un tableau, ERASE ou CLEAR doivent d'abord être exécutés.

Si un tableau est utilisé pour la première fois sans instruction DIM, il est automatiquement alloué avec ses indices maximaux fixés à 10 pour chaque position d'index utilisée.

Une entrée DIM sans crochets ni index n'effectue aucune opération. Les parenthèses vides ne sont pas autorisées. Le plus petit index autorisé est déterminé par OPTION BASE.

Paramètres
• name,... sont des noms de variable légaux spécifiant les tableaux à allouer.
• limit_0, limit_1,... sont des expressions numériques qui spécifient le plus grand index autorisé à cette position.

Remarques

• Les parenthèses mixtes sont autorisées.

• La taille des matrices est limitée par la mémoire BASIC disponible.

• Le nombre maximum d'indices est théoriquement de 255. En pratique, il est limité par la limite de 255 octets sur la longueur des lignes de programme.

Les erreurs

• le name a déjà été coté : Duplicate definition.
• Un index est vide : Syntax error.
• Un index manque à la fin : Missing operand.
• limit_0, limit_1,... ont une valeur de chaîne : Type mismatch.
• limit_0, limit_1,... ne sont pas compris entre [-32768—32767] : Overflow.
• limit_0, limit_1,... sont négatifs : Illegal function call.
• Le tableau dépasse la taille de l'espace variable disponible : Out of memory.
DRAW DRAW gml_string
Dessine la forme spécifiée par gml_string, une expression de chaîne dans Graphics Macro Language (GML).

Référence du langage de macro graphique

Commandes de mouvement

Mouvement [B][N]

où la valeur par défaut est de se déplacer et de dessiner ; les préfixes facultatifs signifient :

B se déplace mais ne trace pas

N retour au point d'origine après le déplacement

et le mouvement est l'un des suivants :

U[n] monte de n

L[n] gauche de n

D[n] descend de n

R[n] droite de n

E[n] vers le haut et à droite de n

F[n] vers le bas et vers la droite de n

G[n] vers le bas et vers la gauche de n

H[n] vers le haut et vers la gauche de n

M{+|-}x,[+|-]y déplace de (x, y)

Mx,y déplace pour afficher les coordonnées de la région (x, y)

où n est un entier dans [-32768—32767] et x, y sont des entiers dans [0—9999].

Lorsqu'il est facultatif, n prend par défaut la valeur 1.

Commandes d'échelle

Sn définit la taille du pas sur n/4. La taille de pas par défaut est de 1 pixel. n est un entier dans [1—255]

TAn réglez l'angle sur n degrés. L'angle par défaut est de 0 degré. n est un entier dans [-360—360]

An définit l'angle sur 0 pour n=0, 90 pour n=1, 180 pour n=2, 270 pour n=3. n est un entier dans [0—3]

Commandes de couleur

Cn définit l'attribut de premier plan sur n, où n est un entier dans [-32768—32767] Voir COLOR.

Pn,b remplissage inondé avec l'attribut n et l'attribut de limite b, où n, b sont des entiers dans [0—9999]
Voir PAINT.

Commande de sous-programme

Xs exécutent une sous-chaîne

s est l'un des suivants :

• un nom de variable de chaîne suivi d'un point-virgule ( ; )

• le résultat de VARPTR$() sur une variable de chaîne

Les variables numériques n, x, y, b dans les commandes ci-dessus peuvent être :

• un littéral entier, par ex. DRAW "U100"

• un nom de variable numérique ou un élément de tableau var précédé de = et suivi de ;
Par exemple, DRAW "U=VAR ;" ou DESSINER "U=A(1);"

• le résultat de VARPTR$(var) précédé de = 
Par exemple, DESSINEZ "U=" + VARPTR$(VAR)

Remarques

• L'instruction CLS réinitialise la taille du pas à 1 pixel, l'angle à 0 degré et la position au centre de la zone de visualisation.

• La valeur n dans les commandes TA, A et C peut être omise mais uniquement si la commande se termine par un point-virgule. n est par défaut à 0.

• Dans GW-BASIC, les arguments numériques de U, L, D, R, E, F, G, H et C peuvent être dans la plage [-99999—99999] ; cependant, les résultats pour de grands nombres sont imprévisibles. Ceci n'est pas implémenté dans PC-BASIC.

Les erreurs

• gml_string a une valeur numérique : Type mismatch.
• gml_string contient des erreurs dans le GML : Illegal function call.
• Une variable référencée dans la chaîne GML est de type incorrect : Type mismatch.
EDIT EDIT {line_number|.}  
Affiche la ligne de programme spécifiée avec le curseur positionné pour l'édition.

line_number doit être une ligne qui existe dans le programme, ou un point (.) pour indiquer la dernière ligne stockée.

Arrête également l'exécution du programme et rend le contrôle à l'utilisateur. Toute instruction supplémentaire sur la ligne sera ignorée, également en mode direct.

Les erreurs

• Aucun numéro de ligne n'est spécifié : Undefined line number.
• D'autres caractères sont écrits après le numéro de ligne : Illegal function call.
• line_number n'est pas dans [0—65529] : Illegal function call.
• Le numéro de ligne spécifié n'existe pas : Undefined line number.
ELSE ELSE [anything]  
À moins qu'il ne fasse partie d'une instruction IF sur la même ligne, tout ce qui se trouve après ELSE est ignoré de la même manière qu'après ' ou :REM.

Pas de deux-points : avant l'instruction ELSE est nécessaire.

Voir IF pour une utilisation normale.
END END  
Ferme tous les fichiers, arrête l'exécution du programme et rend le contrôle à l'utilisateur. Aucun message n'est imprimé. Il est possible de reprendre l'exécution à l'instruction suivante en utilisant CONT.
ENVIRON ENVIRON command_string Définit une variable d'environnement shell.
Paramètres

command_string est une expression de chaîne de l'une des formes suivantes :

"VARIABLE=VALEUR"
pour définir VARIABLE sur VALUE ;

"VARIABLE="
pour désactiver VARIABLE.

VARIABLE doit être une chaîne ASCII et sera convertie en majuscules sur les systèmes sensibles à la casse.

Les erreurs

• command_string a une valeur numérique : Type mismatch.
• command_string n'est pas au format requis : Illegal function call.
• VARIABLE contient des caractères hors ASCII : Illegal function call.
ERASE ERASE array_0 [, array_1]... Désalloue les tableaux. Les données stockées dans les tableaux sont perdues.
Paramètres
• array_0, array_1... sont des noms de tableaux existants. Les noms doivent être spécifiés sans crochets.

Les erreurs

• Aucun nom de tableau n'est donné :Syntax error.
• array_0, array_1... n'existent pas : Illegal function call.
• Si une erreur se produit, les tableaux nommés avant que l'erreur ne se produise sont effacés.
ERROR ERROR error_number  
Déclenche l'erreur avec le numéro error_number. Voir la liste des numéros d'erreur et des messages à la fin de cette section.

Paramètres
• error_number est une expression avec une valeur numérique.

les erreurs

• error_number a une valeur de chaîne : Type mismatch.
• error_number n'est pas dans [-32768—32767] : Overflow.
• error_number n'est pas dans [1—255] : Illegal function call.
FIELD FIELD [#] file_number [, width_0 AS name_0 [, width_1 AS name_1]...]
Affecte des variables au tampon d'enregistrement à accès aléatoire. Le tampon d'enregistrement est une région de mémoire de longueur définie par l'instruction OPEN ; la longueur d'enregistrement par défaut est de 128 octets.

L'instruction FIELD affecte une partie de cette région à une ou plusieurs variables de chaîne de longueur fixe, de sorte que la valeur de ces chaînes soit celle qui se trouve dans le tampon d'enregistrement à cet emplacement.

Remarques

• Une instruction FIELD sans aucune variable spécifiée n'a aucun effet.

• Une autre instruction FIELD sur le même fichier spécifiera un mappage alternatif du même tampon de fichier ; tous les mappages seront en vigueur simultanément.

• Une affectation ultérieure ou une instruction LET ou MID$ sur name_0, name_1... dissociera la variable de chaîne du tampon de champ.

• Utilisez LSET, RSET ou MID$ pour copier les valeurs dans un tampon FIELD.

• Utilisez GET pour lire les valeurs du fichier dans le tampon de champ, en modifiant les variables.

• Utilisez PUT pour écrire le tampon de champ dans le fichier.

Paramètres

• numéro_fichier est une expression numérique qui donne le numéro d'un fichier à accès aléatoire ouvert. Le # est facultatif et n'a aucun effet.

• width_0, width_1,... sont des expressions numériques donnant la longueur des variables de chaîne

• name_0, name_1... sont des variables de chaîne.

Les erreurs

• file_number n'est pas dans [0—255] : Illegal function call.

• file_number n'est pas le numéro d'un fichier ouvert : Bad file number.

• file_number est ouvert sous un mode autre que RANDOM : Bad file mode.

• L'instruction se termine par une virgule : Missing operand.

• Aucun numéro de fichier n'est spécifié : Missing operand.

• Les longueurs d'une instruction FIELD s'ajoutent à un nombre supérieur à la longueur d'enregistrement du tampon de champ : Field overflow.

• name_0, name_1... spécifiez une variable non-chaîne : Type mismatch.
FILES FILES [filter_spec]  
Affiche les fichiers correspondant au filtre spécifié dans le répertoire spécifié sur un périphérique de disque. Si filter_spec n'est pas spécifié, affiche tous les fichiers du répertoire de travail actuel.

Paramètres

• filter_spec est une expression de chaîne qui ressemble beaucoup à une spécification de fichier, mais qui permet éventuellement à la partie du nom de fichier de contenir des caractères génériques.

Remarques

• Le filtre de nom de fichier peut contenir les caractères génériques suivants :
? Correspond à n'importe quel caractère de nom de fichier légal.
* Correspond à n'importe quelle série de caractères de nom de fichier légal.

• Le filtre ne correspondra qu'aux noms de fichiers de style MS-DOS.
• Les séries de caractères correspondantes ne s'étendent pas sur les séparateurs de répertoire \ ou les séparateurs d'extension. Pour faire correspondre tous les fichiers avec toutes les extensions, utilisez *.*.
• Sinon, si tous les fichiers d'un répertoire spécifié sont requis, terminez le nom du répertoire par une barre oblique inverse \.

Les erreurs

• filter_spec a une valeur numérique : Type mismatch.
• filter_spec est la chaîne vide : Bad file name.
• Le filtre spécifié ne correspond à aucun fichier : File not found.
FOR FOR loop_var = start TO stop [STEP step]
Initie une boucle FOR—NEXT.

Initialement, loop_var est défini sur start. Ensuite, les instructions entre l'instruction FOR et l'instruction NEXT sont exécutées et loop_var est incrémenté de step (si step n'est pas spécifié, de 1).

Ceci est répété jusqu'à ce que loop_var soit devenu supérieur à stop. L'exécution continue ensuite à l'instruction suivant NEXT. La valeur de loop_var est égale à stop+step après la boucle.

start, stop et step ne sont évalués qu'une seule fois et les valeurs résultantes sont utilisées tout au long de la boucle.

Paramètres

• loop_var est un nombre entier ou une variable simple précision.
• start, stop et step sont des expressions numériques.

Les erreurs

• Aucune instruction NEXT ne correspond à l'instruction FOR : FOR without NEXT se produit à l'instruction FOR.
• loop_var est une variable chaîne ou start, stop ou end a une valeur chaîne : Type mismatch.
• loop_var est une variable à double précision : Type mismatch.
• loop_var est un élément de tableau : Syntax error.
loop_var est une variable entière et un start, stop ou step est en dehors de la plage [-32768, 32767] : Overflow.
GET (files) GET [#] file_number [, record_number]
Lit un enregistrement du fichier à accès aléatoire numéro_fichier à la position numéro_enregistrement. L'enregistrement est accessible via les variables FIELD ou via INPUT$, INPUT ou LINE INPUT.

Paramètres

• numéro_fichier est une expression numérique qui donne le numéro d'un fichier à accès aléatoire ouvert. Le # est facultatif et n'a aucun effet.

• numéro_enregistrement est une expression numérique dans [1—33554432] ( 2^25 ) et est interprété comme le numéro d'enregistrement.

Remarques

• Si le numéro d'enregistrement est au-delà de la fin du fichier, le tampon du fichier est rempli d'octets nuls.

• Le numéro d'enregistrement est stocké en simple précision ; cette précision n'est pas assez élevée pour distinguer des enregistrements uniques proches de la valeur maximale de 2^25.

Les erreurs

• numéro_enregistrement n'est pas dans [1—33554432] : Bad record number.
• file_number n'est pas dans [0—255] : Illegal function call.
• file_number n'est pas le numéro d'un fichier ouvert : Bad file mode.
• file_number est ouvert sous un mode autre que RANDOM : Bad file mode.
• numéro_fichier n'est pas spécifié : Missing operand.
GET (communications) GET [#] com_file_number [, number_bytes]
Lit number_bytes octets du tampon de communication ouvert sous le numéro de fichier com_file_number. L'enregistrement est accessible via les variables FIELD ou via INPUT$, INPUT ou LINE INPUT.

Paramètres

• numéro_fichier est une expression numérique qui donne le numéro d'un fichier ouvert sur un périphérique COM. Le # est facultatif et n'a aucun effet.

• number_bytes est une expression numérique comprise entre 1 et la longueur du tampon COM, inclus.

Remarques

• Si octets est égal ou supérieur à 32 768, GW-BASIC se bloque. Cette fonctionnalité n'est pas implémentée dans PC-BASIC.

• Dans GW-BASIC, une erreur d'E/S de périphérique est déclenchée pour une erreur de dépassement, une erreur de trame et une interruption d'interruption.

Le périphérique par défaut est déclenché si le DSR est perdu pendant les E/S. Une erreur de parité est déclenchée si la parité est activée et qu'une parité incorrecte est rencontrée. C'est selon le manuel; il n'est pas testé.

Les erreurs

• octets est inférieur à 1 : Bad record number.
• octets est inférieur à 32768 et supérieur à la longueur du tampon COM : illégal function call.
• com_file_number n'est pas spécifié : Missing operand.
• com_file_number n'est pas dans [0—255] : illégal function call.
• com_file_number n'est pas le numéro d'un fichier ouvert : Bad file number.

• Si le tampon d'entrée série est plein, c'est-à-dire LOF(com_file_number) = 0, et LOC(com_file_number) = 255 : Communication buffer overflow.

• Si la porteuse tombe pendant GET, se bloque jusqu'à ce que la touche Ctrl + Break soit enfoncée.
GET (graphics) GET (x0, y0) - [STEP] (x1, y1), array_name
Stocke une zone rectangulaire de l'écran graphique dans un tableau. La zone stockée est un rectangle parallèle aux bords de l'écran, délimité par les coordonnées en haut à gauche et en bas à droite x0, y0 et x1, y1.

Si STEP est spécifié, x1, y1 est un décalage par rapport à x0, y0. La zone est telle que ces points d'angle sont à l'intérieur.

L'image stockée dans le tableau peut ensuite être affichée à l'écran à l'aide de PUT.

Pour les besoins de GET, tout tableau est considéré comme une chaîne d'octets. La taille en octets d'un tableau peut être calculée comme number_elements * byte_size avec byte_size égal à 2 pour les entiers ( % ), 4 pour simple ( ! ) et 8 pour double ( # ).

La taille en octets du tableau pour la chaîne est de 3, mais les tableaux de chaînes ne sont pas autorisés dans GET.

Pour calculer le nombre d'éléments, gardez à l'esprit que OPTION BASE 0 est la valeur par défaut ; auquel cas un tableau avec un indice maximum de 10 a 11 éléments. Cela fonctionne dans les tableaux multidimensionnels.

Le format du tableau est le suivant :

L'octet contient

0, 1 Nombre de x pixels, entier non signé. Dans SCREEN 1, cette valeur est doublée.
2, 3 Nombre de pixels y, entier non signé.
4— Données de pixels.

Les données sont organisées en mots de 2 octets. Le premier mot de 16 bits contient le bit 0 des 16 premiers pixels de la rangée supérieure. Le deuxième mot contient le deuxième bit, etc.

Les données sont alignées sur les mots à la fin de chaque ligne. Ainsi, dans un mode écran à 4 bits par pixel, la première ligne occupe au moins 8 octets (4 mots), même si elle n'est constituée que d'un seul pixel. Le nombre de bits par pixel dépend du mode SCREEN.

Paramètres

• array_name est le nom d'un tableau numérique dimensionné avec suffisamment d'espace pour stocker la zone.
• x0, y0, x1, y1 sont des expressions numériques.

Remarques

• En mode PCjr/Tandy, dans SCREEN 6, GET stocke une zone de deux fois la largeur du rectangle spécifié.

Les erreurs

• Le tableau n'existe pas : Illegal function call.
• array_name fait référence à un tableau de chaînes : Type mismatch.
• La zone est trop grande pour le tableau : Illegal function call.
• x0,... y1 sont des expressions de chaîne : Type mismatch.
• x0,... y1 ne sont pas dans [-32768—32767] : Overflow.
• x0,... y1 sont en dehors de la VUE ou de la FENÊTRE courante : Illegal function call.
GOSUB GO[ ]SUB line_number [anything]
Passe à une sous-routine à line_number. L'instruction RETURN suivante revient à l'instruction après GOSUB. Tout ce qui se trouve après line_number jusqu'à la fin de l'instruction est ignoré. S'il est exécuté à partir d'une ligne directe, GOSUB exécute le sous-programme et le RETURN suivant renvoie l'exécution à la ligne directe.

Paramètres

• line_number est un littéral de numéro de ligne existant.
• Les autres caractères de la ligne sont ignorés jusqu'à la fin de l'instruction.

Remarques

• Si aucun RETURN n'est rencontré, pas de problème.
• Un espace facultatif est autorisé entre GO et SUB ; il ne sera pas retenu dans le programme.

Les erreurs

• Si numéro_ligne n'existe pas : Undefined line number.
• Si line_number est supérieur à 65529, seuls les 4 premiers caractères sont lus (par exemple 6553 )
GOTO GO[ ]TO line_number [anything]  
Saute à line_number. Tout ce qui se trouve après line_number jusqu'à la fin de l'instruction est ignoré. S'il est exécuté à partir d'une ligne directe, GOTO lance l'exécution du programme à la ligne spécifiée.

Paramètres

• line_number est un littéral de numéro de ligne existant.
• Les autres caractères de la ligne sont ignorés jusqu'à la fin de l'instruction.

Remarques

• N'importe quel nombre d'espaces facultatifs est autorisé entre GO et TO, mais ils ne seront pas conservés dans le programme.

• Si line_number est supérieur à 65529, seuls les 4 premiers caractères sont lus (par exemple, GOTO 65530 est exécuté comme GOTO 6553 )

Les erreurs

• line_number n'existe pas : Undefined line number.
IF IF truth_value [,] {THEN|GOTO} [compound_statement_true|line_number_true [anything]]

[ELSE [compound_statement_false|line_number_false [anything]]]
If truth_value est différent de zéro, exécute compound_statement_true ou saute à line_number_true.

Si c'est zéro, executes compound_statement_false ou saute à line_number_false.

Paramètres

• truth_value est une expression numérique.

• line_number_false et line_number_true sont des numéros de ligne existants.

• compound_statement_false et compound_statement_true sont des instructions composées, constituées d'au moins une instruction, éventuellement suivie d'autres instructions séparées par des deux-points :

Les instructions composées peuvent contenir des instructions IF—THEN—ELSE imbriquées.

Remarques

• La virgule est facultative et ignorée.

• Les clauses ELSE sont facultatives ; ils sont liés à l'instruction IF libre la plus interne si elles sont imbriquées. Les clauses ELSE supplémentaires qui n'ont pas de IF correspondant sont ignorées.

• Toutes les clauses doivent être sur la même ligne de programme.

• THEN et GOTO sont interchangeables ; celui qui est choisi est indépendant du fait qu'une déclaration ou un numéro de ligne soit donné. GOTO PRINT 1 est correct.

• Comme dans GOTO, tout ce qui suit le numéro de ligne est ignoré.

les erreurs

• Si truth_value a une valeur de chaîne : Type mismatch.

• truth_value est égal à 0 et numéro_ligne_faux est un numéro de ligne inexistant, ou truth_value est différent de zéro et line_number_true est un numéro de ligne inexistant : Undefined line number.
INPUT (console) INPUT [;] [prompt {;|,}] var_0 [, var_1]...
Affiche l'invite à l'écran et attend que l'utilisateur saisisse les valeurs des variables spécifiées.

Le point-virgule avant l'invite, s'il est présent, arrête l'impression d'une nouvelle ligne après la saisie des valeurs.

Si l'invite est suivie d'un point-virgule, elle est imprimée avec un ?. Si l'invite est suivie d'une virgule, aucun point d'interrogation n'est ajouté.

Paramètres

• prompt est un littéral de chaîne.

• var_0, var_1,... sont des noms de variables ou des éléments de tableau entièrement indexés.

Remarques

• Les valeurs saisies doivent être séparées par des virgules. Les espaces de début et de fin sont ignorés.

• Les valeurs de chaîne peuvent être saisies avec ou sans guillemets ( " ).

• Si une chaîne avec une virgule, un espace blanc de début ou de fin est nécessaire, les guillemets sont le seul moyen de la saisir.

• Entre un guillemet fermant et la virgule à la fin de l'entrée, seul un espace blanc est autorisé.

• Si des guillemets sont nécessaires dans la chaîne elle-même, le premier caractère ne doit être ni un guillemet ni un espace. Il n'est pas possible d'entrer une chaîne qui commence par un guillemet via INPUT.

• Si un var_n donné est une variable numérique, la valeur saisie doit être un littéral numérique.

• Les caractères au-delà du 255e caractère de la ligne d'écran sont ignorés.

• Si l'entrée de l'utilisateur est interrompue par Ctrl + Break, CONT réexécute l'instruction INPUT.

Les erreurs

• Si la valeur saisie pour une variable numérique n'est pas un littéral numérique valide ou si le nombre de valeurs saisies ne correspond pas au nombre de variables dans l'instruction, ?Redo from start est imprimé et toutes les valeurs doivent être saisies à nouveau.

• Une erreur de syntaxe qui se produit après l'impression de l'invite n'est déclenchée qu'après la saisie de la valeur rasée. Aucune valeur n'est stockée.
INPUT (files) INPUT # file_num, var_0 [, var_1]...
Lit des variables de chaîne ou numériques à partir d'un fichier texte ou du tampon FIELD d'un accès aléatoire.

Paramètres

• file_num est le numéro d'un fichier ouvert en mode INPUT ou un fichier à accès aléatoire ouvert en mode ALÉATOIRE.

• var_0, var_1,... sont des noms de variables ou des éléments de tableau entièrement indexés.

Remarques

• Le # est obligatoire. Il peut y avoir ou non des espaces entre INPUT et #.
• Les valeurs de chaîne peuvent être saisies avec ou sans guillemets ( " ).
• Les valeurs numériques se terminent par, LF, CR,,.
• Les chaînes sans guillemets se terminent par LF, CR,,.
• Les chaînes entre guillemets se terminent par le guillemet fermant.
• Toute entrée se termine par le caractère EOF ou son 255ème caractère.
• Les espaces de début et de fin sont supprimés.

• Si l'entrée ne peut pas être convertie dans le type demandé, une valeur nulle est renvoyée.

• Si file_num est ouvert sur KYBD :, INPUT# lit à partir du clavier jusqu'à ce qu'un retour ou une virgule soit rencontré (comme dans un fichier).

Les touches fléchées et la suppression sont transmises comme caractères de contrôle (pas de scancodes !) précédés de CHR$(&hFF).

Les erreurs

• L'entrée est demandée après que la fin d'un fichier texte a été atteinte ou qu'un caractère EOF a été rencontré : Input past end.

• Le dernier caractère du tampon de champ est lu : Field overflow.

• file_num a une valeur de chaîne : Type mismatch.

• num_fichier est supérieur à 32767 : Overflow.

• file_num est inférieur à zéro : Illegal function call.

• num_fichier n'est pas un fichier ouvert : Bad file number.

• num_fichier n'est pas ouvert pour INPUT ou RANDOM : Bad file mode.

• file_num est ouvert sur un port COM et il s'agit du premier appel INPUT, LINE INPUT ou INPUT$ sur ce port depuis que le tampon s'est complètement rempli (c'est-à-dire que LOF(file_num) est devenu zéro) :
Communication buffer overflow.
IOCTL IOCTL [#] file_num, control_string
Appel de fonction illégal.

Remarques

• Dans GW-BASIC, IOCTL envoie une chaîne de contrôle à un appareil.
• Cette instruction n'est pas implémentée dans PC-BASIC.

Les erreurs

• file_num a une valeur de chaîne : Type mismatch.
• num_fichier n'est pas dans [-32768—32767] : Overflow.
• num_fichier n'est pas un fichier ouvert : Bad file number.
• Sinon : Illegal function call
KEY (macro list) KEY {ON|OFF|LIST}  
Active ou désactive la liste des macros de touches de fonction en bas de l'écran.

Si LIST est spécifié, imprime une liste des 10 (ou 12 avec syntax=tandy ) touches de fonction avec les macros de touches de fonction définies pour ces touches sur la console.

La plupart des caractères sont représentés par leur symbole équivalent dans la page de code actuelle.

Cependant, certains caractères obtiennent une représentation différente, qui est une représentation symbolique de leur effet en tant que caractères de contrôle à l'écran.


KEY
(macro definition)
KEY key_id, string_value  
Définit la macro de chaîne pour la touche de fonction key_id.

Seuls les 15 premiers caractères de string_value sont stockés.

Paramètres
• key_id est une expression numérique dans la plage [1—10] (ou [1—12] lorsque syntax=tandy ).
• string_value est une expression de chaîne.

Remarques

• Si key_id n'est pas dans la plage prescrite, l'instruction est interprétée comme une instruction KEY de capture d'événement.

• Si string_value est la chaîne vide ou si le premier caractère de string_value est CHR$(0), la macro de touche de fonction est désactivée et la capture ultérieure de la touche de fonction associée avec INKEY$ est activée.

Les erreurs

• key_id n'est pas dans [-32768—32767] : Overflow.
• key_id n'est pas dans [1—255] : Illegal function call.
• key_id a une valeur de chaîne : Type mismatch.
KEY (event switch) KEY (key_id) {ON|OFF|STOP}  
Contrôle l'interception d'évènements de la clé avec l'identifiant key_id.

Le piégeage d'évènement est activé ou désactivé. STOP suspend l'interception d'évènements jusqu'à ce qu'un KEY() ON soit exécuté.

Jusqu'à un évènement peut être déclenché pendant la suspension, à condition que la gestion des évènements ait été activée avant la suspension. L'évènement déclenché pendant la suspension est traité immédiatement après la prochaine instruction KEY() ON. L'interception d'évènements ne peut être active que pendant l'exécution d'un programme, elle ne fonctionne pas en mode direct.

Paramètres

key_id est une expression numérique dans [1—20]. Les clés sont :

1 F1
2 F2
3 F3
4 F4
5 F5
6 F6
7 F7
8 F8
9 F9
10 F10
11 ↑
12 ←
13 →
14 ↓

Les clés 15 à 20 sont définies à l'aide de l'instruction de définition KEY de capture d'évènement.

Remarques

• Avec syntax=tandy, la clé 11 est F11 et la clé 12 est F12. Les touches prédéfinies 11—14 passent à 13—16.

Les erreurs

• key_id n'est pas dans [-32768—32767] : Overflow.
• key_id n'est pas dans [0—20] : Illegal function call.
• key_id a une valeur de chaîne : Type mismatch.
KEY(event definition) KEY key_id, two_char_string Définit la clé à intercepter pour key_id.
Paramètres
• key_id est une expression numérique dans [15—20] (ou [17—20] lorsque syntax=tandy ).

• two_char_string est une expression de chaîne de longueur 2. Le premier caractère est interprété comme un modificateur tandis que le deuxième caractère est interprété comme un scancode.

Le caractère modificateur est une combinaison OU au niveau du bit des indicateurs suivants :

CHR$(&h80) Étendu (ignoré)
CHR$(&h40) Verrouillage des majuscules
CHR$(&h20) Verr Num
CHR$(&h10) non utilisé
CHR$(&h08) Autre
CHR$(&h04) Ctrl
CHR$(&h02) Décalage (de chaque côté)
CHR$(&h01) Décalage (de chaque côté)

Pour la clé non modifiée, le caractère modificateur est CHR$(0).

Remarques

• Si key_id n'est pas dans la plage prescrite, aucune erreur n'est générée ; ces valeurs sont ignorées. Dans GW-BASIC, des choses étranges peuvent se produire dans ce cas : des anomalies d'écran et des plantages suggérant un accès mémoire involontaire.

• Si key_id est dans [1—10] (ou [1—12] lorsque syntax=tandy ), l'instruction est interprétée comme une définition de macro de touche de fonction.

• Le modificateur étendu &h80 fait référence aux touches supplémentaires qui ont été introduites avec le clavier modèle M à 101 touches dans la zone située entre le clavier principal et le pavé numérique. Ce sont les touches fléchées, Home, End, PgUp, PgDn, Ins, Del comme distinctes du pavé numérique. PC-BASIC ignore ce modificateur ; dans une définition de clé, cela ne fait aucune différence qu'elle soit définie ou non.

Les erreurs

• key_id n'est pas dans [-32768—32767] : Overflow.
• key_id n'est pas dans [1—255] : Illegal function call.
• key_id a une valeur de chaîne : Type mismatch.
• two_char_string est plus long que deux : Illegal function call.
• two_char_string a une valeur numérique : Type mismatch.
KILL KILL filter_spec  
Supprime un ou plusieurs fichiers sur un périphérique de disque.

Paramètres

• L'expression de chaîne filter_spec est une spécification de fichier valide indiquant les fichiers à supprimer. Les caractères génériques sont autorisés. Voir FICHIERS pour une description des wildcards.

Remarques

• Soyez très prudent avec l'utilisation de caractères génériques dans cette instruction : les règles de correspondance DOS peuvent ne pas être les mêmes que celles habituelles sur votre système d'exploitation, ce qui pourrait entraîner la suppression de fichiers inattendus.

• Cette déclaration ne peut pas supprimer les fichiers cachés et les fichiers qui n'ont pas de noms abrégés qui sont des noms DOS légaux. Cependant, ce comportement n'est pas garanti, vous ne devez donc pas en dépendre.

Les erreurs

• filter_spec est une valeur numérique : Type mismatch.
• Un fichier dont le nom de base est égal à celui d'un fichier correspondant à filter_spec est ouvert : File already open
• Aucun fichier ne correspond à filter_spec : File not found
• L'utilisateur n'a pas d'autorisation en écriture : Permission denied
• Si une erreur de syntaxe se produit après le guillemet fermant, le fichier est quand même supprimé.
LCOPY LCOPY [num] Ne fait rien.
Paramètres
• num est une expression numérique dans [0—255].

Remarques

• Cette instruction ne fait rien dans GW-BASIC. Vraisemblablement, il s'agit d'un reste d'une déclaration dans les anciennes versions de MS Basic qui copierait l'écran sur l'imprimante.

Les erreurs

• num n'est pas dans [-32768—32767] : Overflow.
• num n'est pas dans [0—255] : Illegal function call.
• num a une valeur de chaîne : Type mismatch.
LET [LET] name = expression  
Attribue la valeur de expression à la variable ou à l'élément de tableau name.

Paramètres

• name est une variable qui peut ou non déjà exister.

• Le type d'expression correspond à celui de name : c'est-à-dire que tous les types numériques peuvent être affectés les uns aux autres mais que les chaînes ne peuvent être affectées qu'à des chaînes.

Les erreurs

• le nom et l'expression ne sont pas de types correspondants : Type mismatch.
LINE
LINE [[STEP] (x0, y0)] - [STEP] (x1, y1) [, [attr] [, [B [F]] [, pattern]]]
Dessine une ligne ou une boîte en mode graphique.

Si B n'est pas spécifié, une ligne est tracée de (x0, y0) à (x1, y1), extrémités incluses.

Si B est spécifié, un rectangle est dessiné avec des côtés parallèles à l'écran et deux coins opposés spécifiés par (x0, y0) et (x1, y1).

Si le point de départ n'est pas donné, la position graphique actuelle est utilisée comme point de départ.

Si STEP est spécifié, (x0, y0) est un décalage par rapport à la position actuelle et (x1, y1) est un décalage par rapport à (x0, y0).

LIGNE déplace la position graphique actuelle vers le dernier point final donné.

Si F est spécifié avec B, le rectangle est rempli avec l'attribut spécifié. F et B peuvent être séparés par zéro ou plusieurs espaces.

Paramètres

• attr est une expression numérique dans [0—255], qui spécifie l'attribut de couleur de la ligne. S'il n'est pas donné, l'attribut courant est utilisé.

• motif est une expression numérique dans [-32768—32767]. Ceci est interprété comme un masque de motif binaire de 16 bits appliqué à des pixels consécutifs dans la ligne : un bit 1 indique un pixel tracé ; un bit 0 indique un pixel laissé intact.

Le modèle commence au bit le plus significatif, qui est appliqué au point de terminaison le plus élevé.

Si une boîte est dessinée, le motif est appliqué dans la séquence contre-intuitive suivante : (x1,y1)—(x0, y1), (x1, y0)—(x0, y0), puis (x1, y0)—( x1, y1), (x0, y0)—(x0,y1) si y0<y1 et y0, y1 inversé si y1<y0.

Lors du dessin d'une boîte remplie, LINE ignore le motif.

Remarques

• Si une coordonnée est en dehors des limites de l'écran, elle est remplacée par -1 (si inférieure à 0) ou la dimension de l'écran (si supérieure à la dimension de l'écran).

Les erreurs

• L'instruction se termine par une virgule et c'est la première ou la troisième : Missing operand.
Si c'est le second : Syntax error.

• L'une des coordonnées n'est pas dans [-32768—32767] : Overflow.

• N'importe lequel des paramètres a une valeur de chaîne : Type mismatch.
LINE INPUT (console) LINE INPUT [;] [prompt_literal {;|,}] string_name
Affiche l'invite de donnée dans prompt_literal et lit les entrées de l'utilisateur à partir du clavier,
en le stockant dans la variable string_name.

Toutes les entrées sont lues jusqu'à ce que la touche Entrée soit enfoncée ; les 255 premiers caractères sont stockés.

Si ; est donné juste après LINE INPUT, l'entrée de l'utilisateur Enter ending n'est pas renvoyée à l'écran.

Paramètres

• prompt_literal est un littéral de chaîne. Peu importe qu'il soit suivi d'une virgule ou d'un point-virgule.
• string_name est une variable de chaîne ou un élément de tableau.

Remarques

• Si l'entrée de l'utilisateur est interrompue par Ctrl + Break, CONT réexécute l'instruction LINE INPUT.
• Contrairement à INPUT, LINE INPUT ne termine pas l'invite par ?.
LINE INPUT (files) LINE INPUT # file_num, string_name
Lit des variables de chaîne ou numériques à partir d'un fichier texte ou du tampon FIELD d'un fichier à accès aléatoire.

Toutes les entrées sont lues jusqu'à ce que la touche Entrée soit enfoncée ; les 255 premiers caractères sont stockés. file_num doit être le numéro d'un fichier ouvert en mode INPUT ou d'un fichier à accès aléatoire ouvert en mode RANDOM.

Paramètres

• string_name est une variable de chaîne ou un élément de tableau.

Remarques

• Le # est obligatoire. Il peut y avoir ou non des espaces entre INPUT et #.

• L'entrée se termine uniquement par un CR.

• Si file_num est ouvert sur KYBD :, LINE INPUT# lit à partir du clavier jusqu'à ce qu'un retour ou une virgule soit rencontré (comme dans un fichier). Les touches fléchées et la suppression sont transmises comme caractères de contrôle (pas de scancodes !) précédés de CHR$(&hFF).

Les erreurs

• L'entrée est demandée après que la fin d'un fichier texte a été atteinte ou qu'un caractère EOF a été rencontré : Input past end.

• Le dernier caractère du tampon de champ est lu : Field overflow.

• num_fichier n'est pas un fichier ouvert : Bad file number.

• file_num est inférieur à zéro : Illegal function call.

• num_fichier n'est pas dans [-32768—32767] : Overflow.

• num_fichier n'est pas ouvert pour INPUT ou RANDOM : Illegal function call.

• file_num a une valeur de chaîne : Type mismatch.

• file_num est ouvert sur un port COM et il s'agit du premier appel INPUT, LINE INPUT ou INPUT$ sur ce port depuis que le tampon s'est complètement rempli (c'est-à-dire que LOF(file_num) est devenu zéro) :
Communication buffer overflow.
LIST LIST [line_number_0|.] [-[line_number_1|.]] [, file_spec [anything]]
Imprime le programme à l'écran ou dans un fichier, en commençant par line_number_0 jusqu'à et y compris line_number_1.

Arrête également l'exécution du programme et rend le contrôle à l'utilisateur.

Si l'instruction LIST se termine par une spécification de fichier, tout ce qui suit est ignoré. Dans tous les cas, toute instruction supplémentaire dans un composé après LIST sera ignorée, à la fois dans un programme et en mode direct.

Lors du listage à l'écran, les mêmes caractères de contrôle sont reconnus que dans l'instruction PRINT.

Remarques

• Dans GW-BASIC 3.23, LIST n'affichera pas les numéros de ligne 65531 — 65535 inclus.
Par défaut, la LISTE de PC-BASIC affiche ces lignes. Cependant, leur affichage peut être désactivé avec l'option hide-listing=65530.

Paramètres

• line_number_0 et line_number_1 sont des numéros de ligne dans la plage [0—65529] ou un. pour indiquer la dernière ligne éditée. Les numéros de ligne n'ont pas besoin d'exister ; elles ou ils spécifient une plage. Si la plage est vide, rien n'est imprimé.

• L'expression de chaîne file_spec est une spécification de fichier valide indiquant le fichier à répertorier. Si ce fichier existe déjà, il sera écrasé.

Les erreurs

• Un numéro de ligne est supérieur à 65529 : Syntax error.

• file_spec a une valeur numérique : Type mismatch.

• spéc_fichier se termine par deux-points mais n'est pas un nom de périphérique ou une lettre de lecteur :
Bad file number.

• spéc_fichier contient des caractères interdits : Bad file number (sur CAS1 : ) ;
  Bad file name (sur les périphériques de disque).
LLIST LLIST [line_number_0|.] [-[line_number_1|.]]
Imprime le programme sur l'imprimante ligne LPT1 : en commençant par line_number_0 jusqu'à et y compris line_number_1. Arrête également l'exécution du programme et rend le contrôle à l'utilisateur. Toute instruction supplémentaire sur une ligne après LLIST sera ignorée, à la fois dans un programme et en mode direct.

Remarques

• Dans GW-BASIC 3.23, LLIST n'affichera pas les numéros de ligne 65531 — 65535 inclus. Par défaut, la LLIST de PC-BASIC affiche ces lignes. Cependant, leur affichage peut être désactivé avec l'option hide-listing=65530.

Paramètres

• line_number_0 et line_number_1 sont des numéros de ligne dans la plage [0—65529]. ou un.(point) pour indiquer la dernière ligne éditée. Les numéros de ligne n'ont pas besoin d'exister ; ils spécifient une plage. Si la plage est vide, rien n'est imprimé.

Les erreurs

• Un numéro de ligne est supérieur à 65529 : Syntax error.
LOAD LOAD file_spec [, R]  
Charge le programme stocké dans un fichier en mémoire. Les variables existantes seront effacées et tout programme en mémoire sera effacé.

LOAD implique CLEAR.

Arrête également l'exécution du programme et rend le contrôle à l'utilisateur. Toute instruction supplémentaire sur la ligne sera ignorée, également en mode direct.

Si,R est spécifié, garde tous les fichiers de données ouverts et exécute le fichier spécifié.

Paramètres

• L'expression de chaîne file_spec est une spécification de fichier valide indiquant le fichier à partir duquel lire le programme.

Les erreurs

• file_spec a une valeur numérique : Type mismatch.

• file_spec contient des caractères interdits : Bad file number (sur CAS1 : ) ; Bad file name (sur les périphériques de disque).

• Le fichier spécifié dans file_spec est introuvable : File not found.

• Un fichier texte chargé contient des lignes sans numéro de ligne : Direct statement in file.

• Un fichier texte chargé contient des lignes de plus de 255 caractères : Line buffer overflow.

La tentative de chargement d'un fichier texte contenant des fins de ligne LF plutôt que CR LF peut provoquer cette erreur.
LOCATE LOCATE [row] [, [col] [, [cursor_visible] [, [start_line] [, [stop_line] [,]]]]]
Positionne le curseur sur row, col sur l'écran et modifie la forme et la visibilité du curseur.

cursor_visible peut être 0 ou 1. Si cursor_visible est 0, cela rend le curseur invisible ; si c'est 1, rend le curseur visible.

Cela ne fonctionne que lorsqu'un programme est en cours d'exécution. La forme du curseur est ajustée dans une cellule de caractère pour commencer à start_line et se terminer à end_line où start_line et end_line sont dans [0—31].

Si start_line ou end_line est supérieur à la hauteur de la cellule de caractère (15), remplacez par 15.

Remarques

• Sur les cartes VGA émulées, les paramètres de forme du curseur sont interprétés d'une manière compliquée destinée à maintenir la compatibilité fonctionnelle avec CGA.

• Dans GW-BASIC, la forme du curseur est conservée après avoir appuyé deux fois sur Ins. Le curseur du mode d'insertion est différent du demi-bloc habituel. Dans PC-BASIC, le mode d'insertion réinitialise la forme du curseur par défaut.

• Les options de forme et de visibilité du curseur n'ont aucun effet en mode graphique.

• Locate accepte une 5e virgule à la fin, qui est ignorée.

Les erreurs

• Tout les paramètre a une valeur de chaîne : Type mismatch.
• Tout les paramètre n'est pas dans [-32768—32767] : Overflow.
• la ligne est en dehors de la zone d'affichage actuelle : Illegal function call.
• col est supérieur à la largeur actuelle : Illegal function call.
• cursor_visible n'est pas dans [0, 1] ( [0—255] sur Tandy/PCjr) : Illegal function call.
LOCK LOCK [#] file_number [, record_0]

LOCK [#] file_number, [record_0] TO record_1
Verrouille un fichier ou une partie de fichier contre l'accès par d'autres utilisateurs.

Sur un fichier RANDOM, record_0 est le premier enregistrement verrouillé et record_1 est le dernier enregistrement verrouillé.

Sur tout autre type de fichier, record_0 et record_1 n'ont aucun effet. Si record_0 n'est pas spécifié, il est supposé être 1.

Si aucun enregistrement n'est spécifié, le fichier entier est verrouillé.

Paramètres

• file_number est une expression numérique dans [0—255].
• record_0 et record_1 sont des expressions numériques dans [1—2^25-2].

Remarques

• Dans GW-BASIC sous MS-DOS, la commande LOCK nécessite le chargement de SHARE.EXE. Le nombre maximal de verrous est spécifié dans la commande MS-DOS SHARE. Si SHARE n'a pas été activé ou si tous les verrous sont utilisés, LOCK lève la permission refusée. PC-BASIC se comporte comme si SHARE avait été activé avec des verrous illimités.

• Si numéro_fichier est ouvert pour RANDOM, les instructions LOCK et UNLOCK doivent correspondre en termes d'enregistrement_0 et d'enregistrement_1. Un UNLOCK non correspondant augmentera la permission refusée.

• Pour vérifier si un autre fichier ouvert est le même fichier, PC-BASIC ne regarde que le nom de base du fichier, c'est-à-dire son nom DOS sans répertoires. Par conséquent, si un fichier "test.txt" est ouvert et verrouillé, une tentative de verrouillage d'un fichier "dir\test.txt" échouera, même s'il s'agit de fichiers différents. Inversement, si deux noms de fichiers sont différents mais pointent vers le même fichier dans le système de fichiers (par exemple en raison de liens de système de fichiers), ils seront alors considérés comme des fichiers différents par BASIC.

Les erreurs

• Tout paramètre a une valeur de chaîne : Type mismatch.
• num_fichier n'est pas dans [-32768—32767] : Overflow.
• file_num n'est pas dans [0—255] : Illegal function call.
• num_fichier n'est pas un fichier ouvert : Bad file number.
• LOCK (une partie de) un fichier portant le même nom qu'un fichier déjà verrouillé : Permission denied.
• record_0 ou record_1 n'est pas dans [1—2^25-2] : Bad record number.
LPRINT Voir PRINT  
LSET LSET string_name = expression  
Copie une valeur de chaîne dans une variable de chaîne ou un élément de tableau existant. La valeur sera justifiée à gauche et tous les caractères restants seront remplacés par des espaces.

Paramètres

• string_name est une variable de chaîne ou un élément de tableau.
• expression est une expression de chaîne.

Remarques

• Si expression a une valeur plus longue que la longueur de la variable cible, elle est tronquée à la fin à la longueur de la variable cible.

• Si string_name n'a pas été alloué auparavant, cette instruction n'a aucun effet.

• Utilisez LSET, RSET ou MID$ pour copier les valeurs dans un tampon FIELD.

• Si LET est utilisé sur une variable FIELD au lieu de L|RSET, la variable est détachée du champ et une nouvelle variable de chaîne normale est allouée.

Les erreurs

• string_name n'est pas une variable de chaîne : Type mismatch.
• expression n'a pas de valeur de chaîne : Type mismatch.
MERGE MERGE file_spec  
Superpose les lignes d'un programme à partir d'un fichier de programme en texte brut dans le programme existant. Les lignes chargées écrasent les lignes existantes si elles ont le même numéro de ligne.

Arrête également l'exécution du programme et rend le contrôle à l'utilisateur. Toute instruction supplémentaire sur la ligne sera ignorée, également en mode direct.

Paramètres

• L'expression de chaîne file_spec est une spécification de fichier valide indiquant le fichier à partir duquel lire le programme.

Les erreurs

• spéc_fichier introuvable : File not found.

• spéc_fichier contient des caractères interdits : Bad file number (sur CAS1 : ) ;
  Bad file name (sur les périphériques de disque).

• file_spec n'a pas été enregistré en tant que texte brut : Bad file mode.

• Un fichier texte chargé contient des lignes sans numéro de ligne : Direct statement in file.

• Un fichier texte chargé contient des lignes de plus de 255 caractères : Line buffer overflow.

La tentative de chargement d'un fichier texte contenant des fins de ligne LF plutôt que CR LF peut provoquer cette erreur.
MID$ (statement) MID$(string_name, position [, length]) = substring
Remplace une partie de string_name par substring.

Paramètres

• string_name est un nom de variable de chaîne valide.
• position est une expression numérique comprise entre 1 et la longueur de la chaîne, inclus.
• length est une expression numérique dans [0—255].

Remarques

• Aucun espace n'est autorisé entre MID$ et (.
• Si substring est plus long que length, seuls les premiers caractères de longueur sont utilisés.
• Si substring est plus court que length, seuls les caractères LEN(substring) sont remplacés.

Les erreurs

• position est supérieure à la longueur de string_name : Illegal function call, sauf si la longueur est spécifiée comme 0.
• la position n'est pas dans [1—255] : Illegal function call.
• la longueur n'est pas dans [0—255] : Illegal function call.
• la position ou la longueur ne sont pas dans [-32768—32767] : Overflow.
MKDIR MKDIR dir_spec Crée un nouveau répertoire sur un périphérique de disque.
Paramètres

• L'expression de chaîne dir_spec est une spécification de fichier valide qui spécifie le chemin du nouveau répertoire sur un périphérique de disque.

Les erreurs

• dir_spec n'est pas une chaîne : Type mismatch.
• Le répertoire parent n'existe pas : Path not found.
• Le nom du répertoire existe déjà sur ce chemin : Path/File access error.
• L'utilisateur n'a pas d'autorisation en écriture : Permission denied.
MOTOR MOTOR [num] Ne fait rien.
Paramètres

• num est une expression numérique dans [0—255].

Remarques

• Dans GW-BASIC, cette instruction active le moteur de la cassette si num est différent de zéro ou omis, et l'éteint si num est égal à zéro. Ceci n'est pas implémenté dans PC-BASIC.

Les erreurs

• num a une valeur de chaîne : Type mismatch.
• num n'est pas dans [-32768—32767] : Overflow.
• num n'est pas dans [0—255] : Illegal function call.
NAME NAME old_name AS new_name  
Renomme le fichier disque old_name en new_name.

Paramètres

• Les expressions de chaîne old_name et new_name sont des spécifications de fichier valides donnant respectivement le chemin d'accès sur un périphérique de disque à l'ancien et au nouveau nom de fichier.

Remarques

• new_name sera modifié au format 8.3 tout en majuscules.

Les erreurs

• old_name ou new_name ont des valeurs numériques : Type mismatch.
• old_name n'existe pas : File not found.
• Un fichier dont le nom de base est égal à old_name ou new_nameest ouvert : File already open.
• new_name existe : File already exists.
NEW NEW  
Arrête l'exécution d'un programme, supprime le programme en mémoire, exécute CLEAR et RESTORE et rend le contrôle à l'utilisateur.
NEXT NEXT [var_0 [, var_1]...]  
Itère une boucle FOR—NEXT : incrémente la variable de boucle et saute à l'instruction FOR.

Si aucune variable n'est spécifiée, next correspond à l'instruction FOR la plus récente. Plusieurs instructions NEXT imbriquées peuvent être regroupées en une seule à l'aide de la liste de variables.

Si une ou plusieurs variables sont spécifiées, leur ordre doit correspondre à l'ordre des instructions FOR précédentes.

Paramètres

• var_0, var_1,... sont des variables numériques qui sont des compteurs de boucle dans une instruction FOR.

Les erreurs

• Aucune instruction FOR ne correspond à l'instruction et aux variables NEXT : NEXT without FOR.
• var_0, var_1,... sont des variables de chaîne :NEXT without FOR.
• La variable de boucle (implicite ou explicite) est une variable entière et est prise en dehors de l'intervalle
  [-32768, 32767] lorsqu'elle est incrémentée après l'itération finale : Overflow.
NOISE NOISE source, volume, duration  
Génère différents types de bruit.

Paramètres

• source est une expression numérique dans [0—7]. Il indique le type de bruit :

type de source haut de la bande de fréquence (Hz)
0 périodique 6991
1 périodique 3495
2 périodiques 1747
3 dernières tonalités périodiques jouées sur la voix 2
0 bruit blanc 6991
1 bruit blanc 3495
2 bruit blanc 1747
3 bruit blanc dernier ton joué sur la voix 2

• volume est une expression numérique entre [0—15].
• la durée est une expression numérique.

Le volume et la durée sont déterminés de la même manière que pour l'instruction SOUND.

Remarques

• Cette instruction n'est disponible que si syntax={pcjr|tandy} est défini.

Les erreurs

• SOUND ON n'a pas été exécuté : Illegal function call.
• la durée n'est pas dans [-65535—65535] : Illegal function call.
• le volume n'est pas dans [0—15] : Illegal function call.
• la source n'est pas dans [0—7] : Illegal function call.
ON (calculated jump) ON n {GOTO|GOSUB} line_number_0 [, line_number_1]...
Saute au nième numéro de ligne spécifié dans la liste. Si n est 0 ou supérieur au nombre de numéros de ligne dans la liste, aucun saut n'est effectué. Si GOTO est spécifié, le saut est inconditionnel ; si GOSUB est spécifié, saute à un sous-programme.

Paramètres

• n est une expression numérique dans [0—255]. L'expression ne doit pas commencer par les mots clés de fonction STRIG, PEN, PLAY ou TIMER ; si vous avez besoin de ces fonctions, l'expression doit être entre crochets.

• line_number_0, line_number_1,... sont des numéros de ligne existants dans le programme.

Les erreurs

• n a une valeur de chaîne : Type mismatch.
• n n'est pas dans [-32768—32767], Overflow.
• n n'est pas dans [0—255] : Illegal function call.
• Le numéro de ligne sauté n'existe pas : Undefined line number.
ON (event trapping) ON {COM(n)|KEY(n)|STRIG(n)|PEN|PLAY(n)|TIMER(x)} GOSUB line_number
Définit une sous-routine de capture d'évènement. Le type d'évènement est donné par l'un des mots clés suivants :

COM(n) L'évènement est déclenché si des données sont présentes dans le tampon d'entrée de COMn :. n est le numéro de port dans [1,2].

KEY(n) L'évènement est déclenché si la touche n est enfoncée. n est le numéro de clé [1—20] défini dans l'instruction KEY.

STRIG(n) Cet évènement est déclenché si le bouton de tir n est enfoncé. n dans [0,2,4,6] fait référence aux deux déclencheurs de tir sur deux joysticks.

STYLO L'évènement est déclenché si le crayon lumineux est sur l'écran. (Dans PC-BASIC, le stylet lumineux est émulé par défaut par le bouton droit de la souris).

PLAY(n) L'évènement est déclenché s'il reste exactement n notes dans la file d'attente de musique de fond. n est une expression numérique dans [1—32].

TIMER(x) L'évènement est déclenché toutes les x secondes après l'instruction TIMER ON. x est une expression numérique dans [1—86400].

Remarques

• Le piégeage d'évènements pour l'évènement que vous avez choisi doit d'abord être activé à l'aide de l'une des instructions : COM(n) ON, KEY(n) ON, STRIG(n) ON, PEN ON, PLAY ON, TIMER ON

• Les évènements ne sont interceptés que lorsqu'un programme est en cours d'exécution.

Les erreurs

• n ou x a une valeur de chaîne : Type mismatch.
• n n'est pas dans [-32768—32767] : Overflow.
• n ou x est en dehors de la plage spécifiée : Illegal function call.
ON ERROR ON ERROR GOTO {line_number|0}
Active ou désactive l'interception d'erreurs. Lorsque line_number est défini, toute erreur provoque l'appel de la routine de gestion des erreurs commençant à ce numéro de ligne ; aucun message n'est imprimé et l'exécution du programme n'est pas arrêtée.

 La routine de gestion des erreurs se termine par une instruction RESUME. Dans une routine de gestion d'erreurs, les évènements sont mis en pause et l'interception d'erreurs est désactivée.

Après l'instruction RESUME, tous les évènements déclenchés sont récupérés dans l'ordre suivant : KEY, TIMER, PLAY - l'ordre des autres est inconnu.

Contrairement à l'interception d'évènements, l'interception d'erreurs reste active lorsqu'aucun programme n'est qu'en cours d'exécution. ON ERROR GOTO 0 désactive l'interception d'erreurs.

Paramètres
• line_number est un numéro de ligne existant dans le programme.

Remarques

• Il n'est pas possible de démarrer le gestionnaire d'erreurs à la ligne numéro 0.

Les erreurs

• line_number n'existe pas : numéro de ligne indéfini.
OPEN OPEN mode_char, [#] file_num, file_spec [, rec_len]

OPEN file_spec [FOR {INPUT|OUTPUT|APPEND|RANDOM}]
[ACCESS {READ|WRITE|READ WRITE}]
[SHARED|LOCK {READ|WRITE|READ WRITE}] AS [#] file_num [LEN = rec_len]
Ouvre un fichier de données sur un appareil.

Paramètres

• L'expression de chaîne file_spec est une spécification de fichier valide.

• file_num est une expression numérique dans [1—max_files], où max_files est le nombre maximal de fichiers (3 par défaut).

• rec_len est une expression numérique dans [1—128] : la longueur de l'enregistrement.

• mode_char est une expression de chaîne dont le premier caractère est l'un des ["I", "O", "A", "R"].

Modes d'accès

Les modes FOR ou mode_char sont les suivants :


"I"  pour INPUT 
Ouvre un fichier texte en lecture et positionne le pointeur de fichier au début.

"O" pour OUTPUT
Tronque un fichier texte au début et l'ouvre en écriture. Toutes les données précédemment présentes dans le fichier seront supprimées.

"A" pour APPEND
Ouvre un fichier texte pour l'écriture à la fin de toute donnée existante.

"R" pour RANDOM
Ouvre un fichier pour un accès aléatoire ; le fichier est divisé en enregistrements de longueur rec_len.

Si LEN n'est pas spécifié, la longueur d'enregistrement par défaut est 128. Le contenu du fichier est accessible à l'aide de GET et PUT du tampon FIELD ; le tampon FIELD est accessible via les variables FIELD ou via les instructions PRINT# et INPUT#.

Si aucun mode FOR ou mode_char n'est spécifié, le fichier est ouvert pour RANDOM.

Si FOR et ACCESS sont spécifiés, n'importe quel mode ACCESS est autorisé pour RANDOM mais pour les autres modes, l'accès doit correspondre comme suit :

INPUT      READ
OUTPUT   WRITE
APPEND   READ WRITE READ
RANDOM  READ WRITE all

Partage et verrouillages

Si ni SHARED ni LOCK ne sont spécifiés. Dans ce processus, un fichier peut être ouvert plusieurs fois pour INPUT ou RANDOM mais une seule fois pour OUTPUT ou APPEND, tant qu'il est à nouveau ouvert en mode par défaut. Il ne peut pas être ouvert en mode PARTAGÉ ou en mode VERROUILLÉ.

Si SHARED, LOCK READ, LOCK WRITE ou LOCK READ WRITE est spécifié, le fait que deux instructions OPEN puissent accéder au même fichier dépend de l'état LOCK de l'une et de l'état ACCESS de l'autre et vice versa.

Pour deux instructions OPEN comme suit :

OUVRIR verrou "fichier"_1 AS 1
OUVRIR "fichier" ACCÈS acc_2 PARTAGÉ EN TANT QUE 2

les combinaisons suivantes sont autorisées :



Dans GW-BASIC sous MS-DOS avec SHARE.EXE actif, ces verrous doivent être appliqués sur un réseau ainsi qu'à l'intérieur d'un seul processus BASIC.

Sans SHARED et LOCK, le fichier est verrouillé exclusivement pour être utilisé par le processus GW-BASIC. En revanche, dans PC-BASIC, les verrous ne sont implémentés qu'en interne. Le fait que d'autres processus puissent accéder au fichier dépendra du système d'exploitation hôte.

Pour vérifier si un autre fichier ouvert est le même fichier, PC-BASIC ne regarde que le nom de base du fichier, c'est-à-dire son nom DOS sans répertoires. Par conséquent, si un fichier "test.txt" est ouvert et verrouillé, une tentative de verrouillage d'un fichier "dir\test.txt" échouera, même s'il s'agit de fichiers différents.

Inversement, si deux noms de fichiers sont différents mais pointent vers le même fichier dans le système de fichiers (par exemple en raison de liens de système de fichiers), ils seront alors considérés comme des fichiers différents par BASIC.

Spécifications du fichier

Une spécification de fichier file_spec est une expression de chaîne non vide de la forme "[device:]parameters", où device est un périphérique PC-BASIC et la forme des paramètres est spécifique au type de périphérique. Si le périphérique est omis, le périphérique actuel (l'un des périphériques de disque ou CAS1 : ) est utilisé.

Unités de disque A : — Z : et @ :

Les paramètres doivent spécifier un chemin de fichier valide sous la forme [\] nom_répertoire\]... nom_fichier.

PC-BASIC suit les conventions du système de fichiers DOS. Les noms de répertoire sont séparés par des barres obliques inverses \ (même si le système d'exploitation hôte sépare les chemins par des barres obliques). Les noms de fichiers et de répertoires se composent d'un nom à 8 caractères et d'une extension à 3 caractères. Les noms sont insensibles à la casse.

Les caractères autorisés pour le nom de fichier et l'extension sont les caractères ASCII imprimables dans la plage &h20 – &h7E à l'exclusion des caractères " * +., / : ; < = > ? \ [ ] |.

Les espaces sont autorisés mais les espaces de début et de fin sont ignorés. les noms AUX, CON, PRN et NUL sont réservés en tant qu'alias de périphérique et ne sont pas des noms légaux pour les fichiers ou les répertoires sur un périphérique de disque.

Un chemin commençant par une barre oblique inverse est interprété comme un chemin absolu, commençant à la racine du périphérique de disque spécifié. Sinon, le chemin est interprété comme relatif au répertoire courant sur le périphérique spécifié.

Le nom de répertoire spécial.. fait référence au répertoire parent d'un chemin précédent, ou au répertoire parent du répertoire courant si aucun chemin n'est donné. Le nom du répertoire spécial. fait référence au même répertoire que celui donné par le chemin précédent, ou au répertoire courant si aucun chemin précédent n'est donné.

Si le nom de fichier fourni ne contient aucun point, les instructions LOAD, SAVE, BLOAD, BSAVE, CHAIN ​​, MERGE, RUN et LIST ajoutent l'extension par défaut.BAS. Pour faire référence à un nom de fichier sans extension, la spécification du fichier doit se terminer par un point.. Pour les autres instructions, l'ajout d'un point est autorisé mais pas obligatoire.

Notes de compatibilité

Contrairement à PC-BASIC, certaines versions de MS-DOS autorisent certains caractères dans la plage &h7F – &hFF. Cependant, leur admissibilité et leur interprétation dépendent de la page de code de la console, qui peut être différente de la page de code d'affichage qui affecte GW-BASIC.

En fonction de sa page de code de console, MS-DOS remplacera les lettres accentuées par leur variante majuscule non accentuée. Certaines implémentations DOS supprimeront les espaces des noms de fichiers ; c'est notamment le cas sur DOSBox.

Afin de permettre l'accès aux fichiers dont le nom sur le système hôte n'est pas conforme aux normes DOS tout en maintenant la compatibilité avec GW-BASIC, PC-BASIC suivra ces étapes pour faire correspondre les noms de fichiers de style DOS aux noms de fichiers hôtes :

1. Recherchez un fichier portant le nom fourni. Il peut s'agir d'un long nom de fichier qui peut contenir des caractères non autorisés et qui sera sensible à la casse si votre système de fichiers l'est.

2. Si un tel fichier n'est pas trouvé, il tronquera le nom fourni au format 8.3 tout en majuscules et recherchera une correspondance exacte. Le nom tronqué se compose des 8 premiers caractères avant le premier point, suivis des trois premiers caractères après le premier point. Si le nom de fichier résultant contient des caractères non autorisés, une erreur sera générée.

3. Recherchez les noms 8.3 en casse mixte qui correspondent au nom fourni sans tenir compte de la casse. Ces fichiers sont recherchés dans l'ordre lexicographique. Les noms de fichiers supérieurs à 8.3 ne seront pas mis en correspondance, à moins que leur nom ne soit entré exactement.

Sous Windows, le nom correspondant peut être un nom de fichier court ainsi qu'un nom de fichier long à condition qu'il soit de longueur 8.3 — il peut, par exemple, contenir des espaces et donc ne pas être un nom de fichier court Windows valide.

Si le nom de fichier fourni se termine par un seul point et ne contient aucun autre point, PC-BASIC fera d'abord correspondre le nom tel qu'il est fourni ; s'il n'est pas trouvé, il correspondra au nom fourni mais sans le point unique. Le format 8.3 d'un tel nom de fichier correspondra aux noms de fichiers avec et sans le point, dans l'ordre lexicographique.

Si aucun fichier correspondant n'est trouvé pour un nom de fichier de sortie, un nouveau fichier sera créé avec un nom de fichier 8.3 entièrement en majuscules.

Appareil à cassettes CAS1 :

Les paramètres peuvent être un nom de fichier de huit caractères maximum. Les noms de fichier de cassette sont sensibles à la casse, n'ont ni chemin ni extension, peuvent être vides et n'ont pas besoin d'être uniques. Ils peuvent contenir n'importe quel caractère dans la plage &h20 – &hFF.

Sur l'appareil à cassette, lorsqu'il est appelé en mode direct, OPEN, CHAIN ​​, MERGE, LOAD et BLOAD imprimeront un message à la console pour chaque fichier trouvé lors de l'enroulement de la bande. Le message se compose du nom de fichier suivi d'un point et du type de fichier et se termine par un message d'état. Le type de fichier est l'un des suivants :

A fichier programme au format texte
B Fichier de programme au format tokenisé
D Fichier de données
M Image mémoire BSAVE
P Fichier programme au format protégé

Si le fichier ne correspond pas à la spécification de fichier et au type de fichier requis, l'état est Ignoré ; si le fichier correspond, le statut est Found.

Lorsqu'elles sont appelées à partir d'un programme, ces instructions n'impriment pas de messages sur la console.

Si le périphérique a été spécifié explicitement, les paramètres peuvent également être vides. Dans ce cas, le premier fichier du type approprié est ouvert.

Console et périphériques parallèles SCRN :, KYBD : et LPTn :

Ces appareils ne permettent pas d'autres paramètres d'appareil.

Périphériques série COMn :

Lors de l'ouverture d'un port COM, le file_spec a la forme "COMn:[speed[,parity[,data[,stop[,RS][,CS[n]][,DS[n]][,CD[n]] [,LF][,PE]]]]]"

Les quatre premiers paramètres après les deux-points du périphérique doivent être donnés dans l'ordre spécifié, mais les paramètres nommés peuvent être donnés dans n'importe quel ordre. La signification des paramètres
est:

Paramètre Par défaut  Signification
speed 300 Débit en bauds (bps) pour la connexion. la vitesse est l'un des [75, 110, 150, 300, 600, 1200, 1800, 2400, 4800, 9600].
parity E Convention de bit de parité. la parité est l'une des [S, M, O, E, N].

S SPACE Bit de parité toujours mis à 0.
M MARK Bit de parité toujours mis à 1.
O ODD Bit de parité défini de sorte que la parité des caractères soit impaire.
E EVEN Bit de parité défini pour que la parité des caractères soit paire.
N NONE Aucun bit de parité transmis ou reçu.
data ? Bits de données par octet. les données doivent être l'une des [4, 5, 6, 7, 8]. Un octet se compose des bits de données plus le bit de parité, le cas échéant. La taille des octets doit être comprise dans la plage [5—8] : si les données sont 4, la parité ne doit pas être N ; si les données sont 8, la parité doit être N.
stop 1 Le nombre de bits d'arrêt. stop doit être 1 ou 2. La valeur par défaut est 2 si la vitesse est 75 ou 110 ; 1 sinon.
RS no Supprimer la demande d'envoi.
CS[n]  CS1000 Définit le délai d'expiration Clear To Send sur n millisecondes. Si n vaut 0 ou n'est pas donné, désactivez la vérification CTS. La valeur par défaut est CS0 si RS est défini ; CS1000 sinon.
DS[n] DS1000 Définit le délai d'expiration de l'ensemble de données prêt sur n millisecondes. Si n vaut 0 ou n'est pas donné, désactive la vérification DSR.
CD[n] CD0 Définit le délai de détection de porteuse sur n millisecondes. Si n vaut 0 ou n'est pas donné, désactive la vérification du CD.
LF no Envoie un saut de ligne après chaque retour de charriot.
PE no Activer le contrôle de parité (ce paramètre est ignoré par PC-BASIC).

Remarques

• Si un port COM est ouvert pour RANDOM, l'accès s'effectue octet par octet plutôt que via les enregistrements FIELD ; PRINT# et INPUT# accèdent directement au port. rec_len définit le nombre d'octets lus par les instructions GET et PUT.

• Pour les modes INPUT, OUTPUT et APPEND, LEN peut être spécifié mais est ignoré.

• Si une tentative d'E/S contrevient au mode FOR spécifié, les touches PRINT ou INPUT instruction déclenchera Bad file mode.

• Si une E/S ALÉATOIRE est tentée en violation du mode d'ACCÈS spécifié, l'instruction PUT ou GET génère une erreur Path/File access error.

• Le # est facultatif et n'a aucun effet.

Les erreurs

• file_spec est vide ou périphérique inexistant : Bad file number.

• FOR APPEND ACCESS WRITE est spécifié : Path/File access error.

• FOR et ACCESS ne correspondent pas d'une autre manière : Syntax error.

• Les paramètres COM : file_spec ne suivent pas la spécification : Bad file name.

• Le CAS1 : file_spec contient des caractères interdits : Bad file number.

• Un fichier portant le même nom est déjà ouvert pour OUTPUT ou APPEND : File already open.
Ceci n'est déclenché que pour COMn:, CASn: et les périphériques de disque.

• rec_len ou file_num ont des valeurs de chaîne : Type mismatch.

• file_spec ou mode_char ont des valeurs numériques : Type mismatch.

• num_fichier n'est pas dans [-32768—32767] : Overflow.

• file_num n'est pas dans [0—255] : Illegal function call.

• file_num n'est pas dans [1—max_files] : Bad file number.

• rec_len n'est pas dans [-32768—32767] : Overflow.

• rec_len n'est pas dans [1—128] : Illegal function call.

• mode_char est vide ou le premier caractère n'est pas dans ["I", "O", "A", "R"] : Bad file mode.
OPTION BASE OPTION BASE n Définit l'index de départ de tous les tableaux sur n.
Paramètres
• n est un chiffre littéral 0 ou 1. Les expressions ne sont pas autorisées.

Remarques

• Si OPTION BASE n'a pas été appelée, la première allocation de tableau prend par défaut l'index de départ 0.

Les erreurs

• n n'est pas un chiffre 0 ou 1 :  Syntax error.
• L'OPTION BASE 1 est appelée mais un tableau a déjà été alloué auparavant : Duplicate definition.
• OPTION BASE est appelée plus d'une fois avec un index de départ différent : Duplicate definition.
OUT OUT port, value  
Envoie un octet à un port de machine émulé.

Les ports machine suivants sont émulés dans PC-BASIC :

port Effet &h201 réinitialise le port de jeu (port joystick)
&h3C5 définit le masque d'écriture pour les plans de couleur SCREEN 7, 8, 9. masque de bits = 2 ^ valeur.
&h3CF définit le plan de couleur lu sur valeur.
&h3D8 si valeur = &h1A, active le colorburst composite.
si valeur = &h1E, désactive le colorburst composite.
Nécessite vidéo={cga, tandy, pcjr}.

Remarques

• Seul un nombre limité de ports machine sont émulés.

• Dans GW-BASIC sous MS-DOS, la séquence nécessaire pour définir le masque de plan de couleur est:

SORTIE &h3C4, 2
OUT &h3C5, 2 ^ avion
La séquence nécessaire pour définir le plan de couleur est :
SORTIE &h3CE, 4
OUT &h3CF, avion
Les instructions OUT initiales n'ont actuellement aucun effet dans PC-BASIC.

Paramètres
• port est une expression numérique dans [-32768—65535].
• valeur est une expression numérique dans [0—255].

Les erreurs

• port ou value a une valeur de chaîne : Type mismatch.
• le port n'est pas dans [-32768—65535] : Overflow.
• la valeur n'est pas dans [-32768—32767] : Overflow.
• la valeur n'est pas dans [0—255] : Illegal function call.
PAINT PAINT [STEP] (x, y) [, attrib [, border [, background]]]
Remplit l'écran avec une couleur ou un motif, à partir du point de départ donné.

Paramètres

• x, y sont des expressions numériques dans la plage [-32768—32767] Si STEP est spécifié, x y sont des décalages par rapport à la position actuelle. Si le point d'origine se trouve en dehors de la zone d'écran visible, aucun remplissage plein n'est effectué.

• attrib est une expression qui spécifie l'attribut ou le motif de remplissage. S'il n'est pas spécifié, l'attribut de premier plan actuel est utilisé.

• Si attrib a une valeur numérique, il doit être dans [0—255] ; il spécifie l'attribut de couleur utilisé pour remplir.

• Si attrib a une valeur de chaîne, il spécifie un motif de mosaïque (voir ci-dessous).

• border est une expression numérique dans [0—255]. Il spécifie l'attribut de la limite de remplissage (voir ci-dessous).

• background est une expression de chaîne qui représente un motif de mosaïque d'arrière-plan à ignorer lors de la détermination des limites (voir ci-dessous).

Motifs de carreaux

Un modèle de mosaïque peut être spécifié par une chaîne de 255 caractères maximum. L'interprétation de la chaîne dépend du nombre de bits par pixel et du mode d'écran en cours.

1 bit par pixel (par exemple SCREEN 2 )

Voici un exemple:
76543210 Valeur d'octet
*....... &h80
.*...... &h40
..*..... &h20
...*.... &h10
....*... &h08
.....*.. &h04
......*. &h02

Ce motif à rayures diagonales peut ainsi être réalisé avec
PEINTURE (0, 0), CHR$(128)+CHR$(64)+CHR$(32)+CHR$(16)+CHR$(8)+CHR$(4)+CHR$(2)

ÉCRAN 7, 8, 9

Le motif de mosaïque a toujours une largeur de 8 pixels. Le premier caractère de la chaîne de motif contient le premier bit de chacun de ces 8 pixels, le second caractère contient les seconds bits, etc. Par exemple, en mode 2 bits par pixel, quatre attributs de couleur peuvent être utilisés dans le motif. Pour créer un motif à rayures diagonales de la même forme, dans l'attribut &h03, nous avons maintenant besoin d'une chaîne de tuiles deux fois plus longue :



Si la chaîne de modèle est tronquée avant que tous les bits de la dernière ligne aient été définis, les bits restants seront à zéro.

ÉCRAN 1, 3, 4, 5, 6

Chaque ligne du motif de mosaïque représente une ligne d'écran. Les couleurs sont codées en bits consécutifs ; plus il y a de bits par pixel, plus le motif est étroit. Pour 2 bits par pixel, le motif a une largeur de 4 pixels ; pour 4 bits par pixel, il fait 2 pixels de large. La chaîne de motif suivante encode une bande pointillée diagonale en deux couleurs :



Le motif de carreaux est ancré à l'écran ; imaginez une grille commençant à (0,0) et recouvrant l'écran. Chaque fois qu'une zone est remplie de tuiles, les tuiles sont placées dans cette grille. De cette façon, les zones adjacentes auront un carrelage continu même si elles ont été remplies à partir de différents points de départ.

Les frontières

Un remplissage uni plein s'arrête aux pixels qui ont le même attribut que le remplissage ou qui ont l'attribut de bordure spécifié, le cas échéant.

Un remplissage inondé de mosaïque s'arrête à l'attribut de bordure spécifié ; si aucun attribut de bordure n'est spécifié, il s'arrête à l'attribut de premier plan actuel.

Un remplissage en mosaïque s'arrête également à des intervalles de ligne de balayage identiques au motif de mosaïque de cette ligne, sauf si un motif d'arrière-plan est spécifié et que l'intervalle est également égal au motif d'arrière-plan de cette ligne.

Le motif de carreaux d'arrière-plan est construit exactement comme le motif de carreaux. Cependant, seule la première ligne de la tuile de fond est prise en compte ; le reste est ignoré. La tuile d'arrière-plan ne doit pas correspondre à la tuile d'attribut, ou à plus de deux lignes consécutives de celle-ci.

Les erreurs

• Si plus de deux lignes consécutives de la tuile d'attribut (ou toutes les lignes, s'il y a moins
supérieur à trois) est égal à la première ligne de la vignette d'arrière-plan : Illegal function call.

• background a une valeur numérique : Illegal function call.

• border, x ou y ont une valeur de chaîne : Type mismatch.

• border, x ou y ne sont pas dans [-32768—32767] : Overflow.

• la bordure n'est pas dans [0—255] : Illegal function call.

• attrib est numérique et non dans [-32768—32767] : Overflow.

• attrib est numérique et pas dans [0—255] : Illegal function call.
PALETTE PALETTE [attrib, colour]  
Asigne une couleur à un attribut. Tous les pixels avec cet attribut changeront de couleur immédiatement. Si aucun paramètre n'est spécifié, PALETTE revient au réglage initial.

Paramètres

• attrib est une expression numérique comprise entre 0 et la taille actuelle de la palette, moins un.

• couleur est une expression numérique comprise entre -1 et le nombre maximal de couleurs pour le mode d'écran actuel, moins une. Si la couleur est égale à -1, la palette reste inchangée.

Les erreurs

• attrib ou color a une valeur de chaîne : Type mismatch.
• l'attribut ou la couleur n'est pas dans [-32768—32767] : Overflow.
• l'attribut ou la couleur n'est pas dans la plage : Illegal function call.
PALETTE USING PALETTE USING int_array_name {(|[} start_index {)|]}
Attribue de nouvelles couleurs à tous les attributs.

Paramètres

• int_array_name est un tableau unidimensionnel ou multidimensionnel d'entiers ( % ) qui fournira les nouvelles valeurs de la palette.

• start_index est une expression numérique qui indique à quel index du tableau commencer le mappage vers la palette.

Remarques

• Les valeurs de tableau sont affectées aux entrées de la palette dans l'ordre dans lequel elles sont stockées en mémoire. Voir Tableaux pour plus de détails sur la disposition des tableaux en mémoire.

• Si une entrée de tableau a la valeur -1, l'attribut correspondant reste inchangé.

Les erreurs

• int_array_name n'a pas été alloué : Illegal function call. Le tableau ne sera pas automatiquement alloué.
• int_array_name n'est pas un tableau d'entiers : Type mismatch.
• int_array_name est trop court : Illegal function call.
• start_index a une valeur de chaîne : Type mismatch.
• start_index n'est pas dans [-32768—32767] : Overflow.
• start_index est en dehors des dimensions du tableau : Subscript out of range.
PCOPY PCOPY src, dst  
Copie la page écran src vers dst. Tout le texte et les graphiques sur dst sont remplacés par ceux de src.

Paramètres

• src et dst sont des expressions numériques comprises entre 0 et le nombre de pages du mode vidéo courant, moins une.

Les erreurs

• src ou dst a une valeur de chaîne : Type mismatch.
• src ou dst n'est pas dans [-32768—32767] : Overflow.
• src ou dst est hors limites : Illegal function call.
PEN (statement) PEN {ON|OFF|STOP}  
Contrôle le piégeage des évènements et l'accès en lecture du stylet lumineux (émulé via la souris dans PC-BASIC).

PEN ON active la lecture et le recouvrement du stylet. PEN OFF l'éteint. PEN STOP suspend l'interception d'évènements PEN jusqu'à ce que PEN ON soit exécuté.

Jusqu'à 1 évènement peut être déclenché pendant la suspension, à condition que la gestion des évènements ait été activée avant la suspension. L'évènement déclenché pendant la suspension est traité immédiatement après la prochaine instruction PEN ON.
PLAY (event switch) PLAY {ON|OFF|STOP}  
• ON : active le piégeage d'évènement ON PLAY de la file d'attente musicale.
• OFF : désactive le piégeage.

• STOP : arrête le recouvrement jusqu'à ce que PLAY ON soit utilisé.

Les évènements qui se produisent alors que le piégeage est arrêté se déclenchent immédiatement lorsque le piégeage est réactivé.
PLAY
(music statement)
PLAY [mml_string_0] [, [mml_string_1] [, mml_string_2]]
Joue la mélodie définie par les chaînes du langage de macro de musique mml_string_0, sauf si syntax={tandy | pcjr} est défini, seule la syntaxe à voix unique est disponible. Les trois chaînes MML distinctes correspondent aux trois voix de l'adaptateur de son PCjr/Tandy. Les notes de ces chaînes sont jouées de manière synchrone.

Paramètres

• mml_string_0, mml_string_1, mml_string_2 sont des expressions de chaîne dans MML.
• Au moins un paramètre doit être fourni et l'instruction ne doit pas se terminer par une virgule.

Référence du langage macro musical

Notes et pauses

A-G [#,+,-]
A-G sont des notes. # ou + après une note produit un dièse ; - produit un plat.

Toute note suivie de #, + ou - doit faire référence à une touche noire sur un piano.

L(n)
Définit la longueur de chaque note. L4 est une noire, L1 est une ronde, et ainsi de suite. n peut être compris entre 1 et 64.

La longueur peut également suivre la note pour modifier la longueur de cette note uniquement. A16 est équivalent à L16A.

MF Musique de premier plan. Les instructions PLAY et SOUND doivent être exécutées au premier plan. C'est-à-dire que chaque note ou son suivant n'est pas démarré tant que la note ou le son précédent n'est pas terminé. Il s'agit de la valeur par défaut initiale.

Fond de musique MB. Les instructions PLAY et SOUND doivent s'exécuter en arrière-plan. C'est-à-dire que chaque note ou son est placé dans un tampon permettant au programme BASIC de continuer son exécution pendant que la musique joue en arrière-plan. Jusqu'à 32 notes (ou silences) peuvent être jouées en arrière-plan en même temps.

MN Musique normale. Chaque note joue sept huitièmes du temps déterminé par L (longueur).

ML Music legato. Chaque note joue la période complète définie par L.

MS Musique saccadée. Chaque note joue les trois quarts du temps déterminé par L.

N(n) Joue la note n. n peut varier de 0 à 84. Dans les 7 octaves possibles, il y a 84 notes. n mis à 0 indique un silence.

O(n) Octave 0 définit l'octave actuelle. Il y a 7 octaves (0 à 6). La valeur par défaut est 4. Le do médian est au début de l'octave 3.

P(n) Pause. P peut varier de 1 à 64.

T(n) Tempo. T définit le nombre de L4 en une minute. n peut varier de 32 à 255. La valeur par défaut est 120.

. (période)

Une période après une note augmente le temps de jeu de la note de 3/2 fois la période déterminée par L (longueur de note) fois T (tempo). Plusieurs périodes peuvent apparaître après une note, et le temps de jeu est mis à l'échelle en conséquence.

Par exemple, A. fera jouer la note A une fois et demie le temps de jeu déterminé par L (longueur de la note) fois T (le tempo); deux points placés après A (A..) feront jouer la note à 9/4 fois sa valeur attribuée ; un A à trois points (A...) à 27/8, etc.

Des points peuvent également apparaître après un P (pause) et augmenter la durée de la pause comme décrit ci-dessus.

Xstring ;
Exécute une sous-chaîne, où chaîne est une variable affectée à une chaîne de commandes PLAY.

En raison de la lenteur du taux d'interruption de l'horloge, certaines notes ne jouent pas à des tempos plus élevés ; par exemple, 1,64 à T255. Ces combinaisons note/tempo doivent être déterminées par l'expérimentation.

>n Un symbole supérieur à précédant la note n joue la note dans l'octave immédiatement supérieure.
<n Un symbole inférieur à précédant la note n joue la note dans l'octave inférieure suivante.

Contrôle du volume

Le contrôle du volume est disponible sur syntax={tandy | pcjr} uniquement :

Effet de commande

Vn Réglez le volume sur n, dans la plage [-1—15]. -1 signifie plein volume. Si SOUND ON n'a pas été exécuté, cela n'a aucun effet.

Paramètres MML

Les variables numériques n dans les commandes ci-dessus peuvent être :

• un littéral entier, par ex. JOUER "L4G"

• un nom de variable numérique ou un élément de tableau var précédé de = et suivi de ;. Par exemple, PLAY "L=VAR;G" ou PLAY "L=A(1);G"

• le résultat de VARPTR$(var) précédé de =. Par exemple, PLAY "L=" + VARPTR$(VAR) + "G"

Notez que seuls les littéraux numériques peuvent suivre les notes nommées et que le déréférencement des variables ou des tableaux n'est pas autorisé ici. C'est une erreur d'écrire PLAY "G=VAR;" ou PLAY "G=" + VARPTR$(VAR).

Utilisez PLAY "G4" ou PLAY "L=VAR;G" ou PLAY "L=" + VARPTR$(VAR) + "G" à la place.

Les commandes peuvent éventuellement être séparées par un point-virgule ;, mais pas par plus d'un.

PLAY "MBABCDABCDABCD"

PLAY "L4 ABGD"

Les erreurs

• mml_string a une valeur numérique : Type mismatch.
• mml_string contient des erreurs dans le MML : appel de fonction illégal.
• Une variable dans une chaîne MML est de type incorrect : Type mismatch.
• Aucune chaîne MML n'est spécifiée : opérande manquant.
• Si SOUND ON n'a pas été exécuté, l'utilisation de la syntaxe à trois voix génère une erreur de syntaxe.

POKE POKE address, value  
Définit la valeur de l'octet de mémoire au segment * 16 + adresse à valeur, où segment est le segment actuel défini avec DEF SEG.

Paramètres

• adresse est une expression numérique dans [-32768—65535]. Les valeurs négatives sont interprétées comme leur complément à deux.

• valeur est une expression numérique dans [0—255].

Remarques

• La mémoire n'est que partiellement émulée en PC-BASIC. Voir Modèle de mémoire pour les adresses prises en charge. En dehors des zones de mémoire émulées, cette instruction n'a aucun effet.

Les erreurs

• l'adresse ou la valeur a une valeur de chaîne : Type mismatch.
• l'adresse n'est pas dans [-32768—65535] : Overflow.
• la valeur n'est pas dans [-32768—32767] : Overflow.
• la valeur n'est pas dans [0—255] : Illegal function call.
PSET and PRESET { PSET | PRESET } [STEP] (x, y) [, attrib]
Change l'attribut d'un pixel sur l'écran à la position (x, y). Si STEP est spécifié, (x,y) est un décalage par rapport à la position actuelle.

Si attrib est compris entre 0 et la taille de la palette du mode écran, le pixel est remplacé par l'attribut attrib.

Si l'attribut est supérieur à la taille de la palette, l'attribut du pixel est remplacé par la valeur d'attribut légale la plus élevée.

Si attrib n'est pas spécifié, PSET remplace l'attribut par l'attribut de premier plan actuel tandis que PRESET le remplace par zéro.

Paramètres
• x, y sont des expressions numériques dans [-32768—32767].
• attrib est une expression numérique dans [0—255].

Les erreurs

• x ou y a une valeur de chaîne : Type mismatch.
• attrib, x ou y ou les coordonnées physiques dans lesquelles ils se traduisent ne sont pas dans [-32768—32767] : Overflow.
• attrib n'est pas dans [0—255] : Illegal function call.
PRINT et LPRINT {LPRINT|{PRINT|?} [# file_num,]} [expr_0|;|,|SPC(n)|TAB(n)]...
[USING format; uexpr_0 [{;|,} uexpr_1]... [;|,]]
Écrit des expressions sur l'écran, l'imprimante ou le fichier.

Si LPRINT est utilisé, la sortie passe à LPT1 :

Si file_num est spécifié, la sortie va au fichier ouvert sous ce numéro.

? est un raccourci pour PRINT.

Lors de l'écriture d'une expression de chaîne à l'écran, les caractères de contrôle suivants ont une signification particulière. Les autres caractères sont affichés sous la forme de leur glyphe correspondant dans la page de code actuelle.

Code Car Effet
&h07
&h08
&h09
&h0A
&h0B
&h0C
&h0D
&h1C
&h1D
&h1E
&h1F
 BEL
BS
HT
LF
VT
FF
CR
FS
GS
RS
US
Bip le haut-parleur.
Efface le caractère de la colonne précédente et déplacez le curseur vers l'arrière.
Passe au prochain taquet de tabulation à 8 cellules.
Aller à la colonne la plus à gauche de la rangée suivante ; connecte les rangées à une ligne logique.
Déplace le curseur en haut à gauche de l'écran.
Efface l'écran.
Aller à la colonne la plus à gauche de la ligne suivante.
Déplace le curseur d'une colonne vers la droite.
Déplace le curseur d'une colonne vers la gauche.
Déplace le curseur d'une ligne vers le haut.
Déplace le curseur d'une ligne vers le bas.

Les expressions peuvent éventuellement être séparées par un ou plusieurs des mots clés suivants :

;

Attache deux expressions étroitement ensemble ; les chaînes seront imprimées sans aucun espace entre elles, les nombres auront un espace les séparant, en plus de l'espace ou du signe moins qui indique le signe du nombre.
,

L'expression après sera positionnée à la prochaine zone disponible. Le fichier de sortie est divisé en zones de 14 caractères ; si la largeur du fichier n'est pas un multiple de 14, les espaces restants ne sont pas utilisés et la première zone de la ligne suivante est utilisée à la place. Si le fichier a une largeur inférieure à 14 caractères, les zones sont déterminées comme si le fichier était en boucle continue.

SPC(n)

Produit n espaces, où n est une expression numérique. si n est inférieur à zéro, sa valeur par défaut est zéro. Si n est supérieur à la largeur du fichier, il est pris modulo la largeur du fichier.

TAB(n)

Passe à la colonne n, où n est une expression numérique. si n est inférieur à zéro, sa valeur par défaut est zéro. Si n est supérieur à la largeur du fichier, il est pris modulo la largeur du fichier. Si la colonne actuelle est supérieure à n, TAB passe à la colonne n sur la ligne suivante.

Si l'instruction print ne se termine pas par l'un de ces quatre jetons de séparation, une nouvelle ligne est imprimée après la dernière expression. Les expressions de chaîne peuvent être séparées par un ou plusieurs espaces, ce qui a le même effet que la séparation par des points-virgules.

Formater la syntaxe de la chaîne

Une déclaration USING se produit à la fin d'une instruction [L]PRINT[#] et écrit une chaîne formatée sur l'écran, l'imprimante ou le fichier. Les tableaux suivants répertorient les jetons de format pouvant être utilisés dans la chaîne de format.

_

Caractère d'échappement; entraîne l'impression du caractère suivant dans la chaîne de format tel quel plutôt qu'interprété comme un jeton de format.

Pour les expressions de chaîne :

! Imprime le premier caractère d'une chaîne.

\\ Imprime 2 caractères ou plus d'une chaîne.

Un plus grand nombre de caractères est sélectionné en séparant les \s par des espaces.

& Imprime toute la chaîne.

Pour les expressions numériques, la chaîne de format spécifie une largeur et un alignement.

# Indique une position pour un chiffre.
. Indiquez la virgule décimale.
, Avant la virgule : provoque le regroupement des chiffres par trois séparés par des virgules.

Après la virgule décimale, ce n'est pas un jeton. Fournit une position de chiffre.

Le nombre de caractères dans le champ ne doit pas dépasser 24.

Jetons précédant le champ numérique :

+ Provoque l'impression du signe pour les nombres positifs et négatifs. Le signe doit être imprimé à gauche du numéro.

** Provoque le remplacement de tous les espaces de début par *s. Fournit des positions à deux chiffres. $$ Provoque l'impression d'un $ à gauche du nombre. Fournit une position de chiffre.

Jetons à la fin du champ numérique :

+ Provoque l'impression du signe pour les nombres positifs et négatifs. Le signe sera imprimé à droite du numéro.

- Provoque l'impression du signe des nombres négatifs à droite du nombre. Notez que - précédant le champ n'est pas un jeton mais imprimé littéralement.

^^^^ Précise que la notation scientifique doit être utilisée, avec une mantisse et un exposant représenté par

E+00. En notation scientifique, les séparateurs de milliers ne seront pas affichés et tout caractère, a le même effet que #.

Les expressions numériques sont toujours entièrement imprimées, même si elles ne tiennent pas dans les positions spécifiées.

Si le nombre ne tient pas dans l'espace autorisé, un % le précédant est imprimé.

• S'il y a plus d'expressions que de champs de format, la chaîne de format est bouclée.

• Les expressions peuvent être séparées par des points-virgules ou des virgules ; l'effet est le même.

• Si la déclaration USING se termine par une virgule ou un point-virgule, aucune nouvelle ligne n'est imprimée à la fin.

• Après une déclaration USING, les autres éléments de la syntaxe PRINT tels que SPC(et TAB( ne peuvent pas être utilisés.

Paramètres

• expr_0, expr_1,... sont des expressions de tout type.
• format est une expression de chaîne qui spécifie le format de sortie.
• uexpr_0, uexpr_1,... sont des expressions correspondant à un jeton dans la chaîne de format.

Remarques

• Si une erreur est générée, la sortie avant que l'erreur ne se produise est imprimée normalement.

• Dans GW-BASIC, lors du formatage d'un nombre avec un signe dollar, si le nombre est dans la plage [-10000—-32767] et ne tient pas dans la largeur du champ numérique, le signe moins est omis. Ceci n'est pas implémenté dans PC-BASIC.

Les erreurs

• n a une valeur de chaîne : Type mismatch.
• n n'est pas dans [-32768—65535] : Overflow.
• La chaîne de format ne contient aucun jeton : Illegal function call.
• Une expression ne correspond pas au type de jeton de format correspondant : Type mismatch.
• Un champ numérique dans la chaîne de format dépasse 24 caractères : Illegal function call.
• Un champ numérique dans la chaîne de format ne contient aucun caractère # : Illegal function call.
PUT (files) PUT [#] file_number [, record_number]
Écrit un enregistrement dans le fichier à accès aléatoire file_number à la position record_number.

Paramètres

• file_number est une expression numérique qui donne le numéro d'un fichier à accès aléatoire ouvert. Le # est facultatif et n'a aucun effet.

• record_number est une expression numérique dans [1—33554432] ( 2^25 ) et est interprété comme le numéro d'enregistrement.

Remarques

• Le numéro d'enregistrement est stocké en simple précision ; cette précision n'est pas assez élevée pour distinguer des enregistrements uniques proches de la valeur maximale de 2^25.

Les erreurs

• record_number  n'est pas dans [1—33554432] : Bad record number.
• file_number n'est pas dans [0—255] : Illegal function call.
• file_number n'est pas le numéro d'un fichier ouvert : Bad file mode.
• file_number est ouvert sous un mode autre que RANDOM : Bad file mode.
• record_number n'est pas spécifié : Missing operand.
PUT
(communications)
PUT [#] com_file_number [, number_bytes]
Écrit number_bytes octets dans le tampon de communication ouvert sous le numéro de fichier com_file_number. number_bytes est une expression numérique comprise entre 1 et la longueur du tampon COM, inclus.

Remarques

• Dans GW-BASIC, une erreur d'E/S de périphérique est déclenchée pour une erreur de dépassement, une erreur de trame et une interruption d'interruption. Le périphérique de défaut est déclenché si le DSR est perdu pendant les E/S. Une erreur de parité est déclenchée si la parité est activée et qu'une parité incorrecte est rencontrée. C'est selon le manuel; il n'est pas testé.

Les erreurs

• octets est inférieur à 1 : Bad record number.
• octets est inférieur à 32768 et supérieur à la longueur du tampon COM : Illegal function call.
• com_file_number n'est pas spécifié : Missing operand.
• com_file_number n'est pas dans [0—255] : Illegal function call.
• com_file_number n'est pas le numéro d'un fichier ouvert : Bad file number.
• Le buffer d'entrée série est plein, c'est-à-dire LOF(com_file_number) = 0 et LOC(com_file_number)=255 : Communication buffer overflow.
PUT (graphics) PUT (x0, y0), array_name [, {PSET|PRESET|AND|OR|XOR}]
Affiche un tableau dans une zone rectangulaire de l'écran graphique. Habituellement, PUT est utilisé avec des tableaux qui ont été stockés à l'aide de GET. Voir GET pour le format du tableau.

Les mots clés ont l'effet suivant :

PSET Écrase l'emplacement de l'écran avec la nouvelle image

PRESET Écrase l'emplacement de l'écran avec l'image inverse

AND Combine les anciens et les nouveaux attributs avec bitwise AND

OR Combine les anciens et nouveaux attributs avec bitwise OR

XOR Combine les anciens et nouveaux attributs avec bitwise XOR

Paramètres

• array_name est un tableau numérique.
• x0, y0 sont des expressions numériques.

Les erreurs

• Le tableau n'existe pas : Illegal function call.
• array_name fait référence à un tableau de chaînes : Type mismatch.
• x0, y0 sont des expressions de chaîne : Type mismatch.
• x0, y0 ne sont pas dans [-32768—32767] : Overflow.
• x0, y0 est en dehors de la VUE ou de la FENÊTRE actuelle : Illegal function call.
RANDOMIZE RANDOMIZE [expr] Initialise le générateur de nombres aléatoires avec expr.
Si aucune graine n'est spécifiée, RANDOMIZE demandera à l'utilisateur d'entrer une graine aléatoire. La valeur fournie par l'utilisateur est arrondie à un nombre entier.

La graine aléatoire est formée des deux derniers octets de cet entier ou expr.

Si expr est un flottant (4 ou 8 octets), ceux-ci sont XOR avec les 2 précédents. Les 4 premiers octets d'un double sont ignorés.

La même graine aléatoire conduira à la même séquence de nombres pseudo-aléatoires générés par la fonction RND.

Paramètres

• expr est une expression numérique.

Remarques

• Pour la même graine, PC-BASIC produit les mêmes nombres pseudo-aléatoires que GW-BASIC 3.23.

• Le générateur de nombres aléatoires est très pauvre et ne doit pas être utilisé à des fins sérieuses. Voir RND pour plus de détails.

Les erreurs

• expr a une valeur de chaîne : Illegal function call.
• L'utilisateur fournit une graine en dehors de [-32768—32767] à l'invite : Overflow.
READ READ var_0 [, var_1]...  
Affecte des données d'une instruction DATA à des variables. La lecture commence à la position DATA actuelle, qui est l'entrée DATA immédiatement après la dernière lue par les instructions READ précédentes. La position DATA est réinitialisée au début par les instructions RUN et RESTORE.

Paramètres

• var_0, var_1 sont des variables ou des éléments de tableau.

Les erreurs

• Il n'y a pas assez de données dans les instructions DATA : Out of DATA.

• Le type de la variable n'est pas compatible avec celui de la donnée en cours de lecture : une erreur de syntaxe se produit sur la ligne DATA.
REM ou ' {REM|'} [anything] Ignore tout jusqu'au bout de la ligne.
La déclaration REM est destinée aux commentaires.

Tout ce qui suit REM sera stocké dans le programme sans modification ni interprétation.

' (apostrophe) est un alias pour :REM' ; il peut être placé à n'importe quel point de la ligne de programme et garantira que le reste de la ligne est ignoré.

Notez qu'un deux-points : ne termine pas l'instruction REM ; les deux-points et tout ce qui suit seront traités comme faisant partie du commentaire.
RENUM RENUM [new|.] [, [old|.] [, increment]]
Remplace les numéros de ligne dans le programme par une énumération systématique commençant par new et augmentant par incrément.

Si old est spécifié, les numéros de ligne inférieurs à ancien restent inchangés. new, old sont des numéros de ligne ; le point. signifie la dernière ligne éditée.

incrément est un numéro de ligne mais ne doit pas être un point ou zéro. Arrête également l'exécution du programme et rend le contrôle à l'utilisateur. Toute instruction supplémentaire sur la ligne sera ignorée, également en mode direct.

Remarques

• Les numéros de ligne après les mots clés suivants seront renumérotés : AUTO, EDIT, ELSE, ERL, DELETE, GOSUB, GOTO, LIST, LLIST, RENUM, RESTORE, RESUME, RETURN, RUN, THEN.

• Aucun numéro de ligne dans les instructions CHAIN ​​ne sera renuméroté ; notez que ces numéros de ligne font référence à un autre programme.

• Tous les arguments des instructions RENUM ou AUTO dans un programme seront renumérotés, y compris tous les décalages ou incréments de numéro de ligne, même si cela n'a pas beaucoup de sens.

• Un numéro de ligne zéro suivant les mots clés ERROR GOTO ne sera pas renuméroté.

• Si un numéro de ligne référencé n'existe pas dans le programme, un message Réf. ligne indéfinie dans old_line est imprimé. Ici, old_line est le numéro de ligne avant la renumérotation. Le numéro de ligne référencé restera inchangé, mais l'ancien numéro de ligne de la ligne sera renuméroté.

Les erreurs

• Aucun des paramètres n'est dans [0—65529] : Syntax error.

• L'un des numéros de ligne nouvellement générés est supérieur à 65529 : Illegal function call.
Les numéros de ligne jusqu'à l'erreur n'ont pas été modifiés.

• l'incrément est vide ou nul : Illegal function call.

• old est spécifié et new est inférieur ou égal à un numéro de ligne existant inférieur à old : Illegal function call.
RESET RESET Ferme tous les fichiers ouverts.
Remarques

• La documentation officielle GW-BASIC et de nombreuses autres sources indiquent que RESET ferme tous les fichiers sur les périphériques de disque. Cependant, en réalité, GW-BASIC 3.23 ferme également les fichiers sur bande et tout autre périphérique, rendant cette instruction identique à CLOSE sans arguments. PC-BASIC suit ce comportement.
RESTORE RESTORE [line]  
Réinitialise le pointeur DATA. ligne est un numéro de ligne.

Si ligne n'est pas spécifiée, le pointeur DATA est réinitialisé à la première entrée DATA du programme.

S'il est spécifié, le pointeur DATA est réinitialisé à la première entrée DATA dans ou après la ligne.

Les erreurs

• la ligne n'est pas un numéro de ligne existant : Undefined line number.
RESUME RESUME [0|NEXT|line]  
Continue l'exécution normale après une routine de gestion des erreurs.

Si 0 ou aucune option n'est spécifiée, réexécute l'instruction à l'origine de l'erreur.

Si NEXT est spécifié, exécute l'instruction suivant celle qui a causé l'erreur.

Si line est spécifié, il doit s'agir d'un numéro de ligne valide.

les erreurs

• RESUME est rencontré en dehors d'une routine d'interception d'erreurs : RESUME without error.

• Le programme se termine dans une routine d'interception d'erreurs sans instruction RESUME ou END :
No RESUME.

• la ligne n'est pas un numéro de ligne existant : Undefined line number.
RETURN RETURN [line] Retourne d'un sous-programme GOSUB.
 Si la ligne n'est pas spécifiée, RETURN revient à l'instruction après le GOSUB qui a sauté dans le sous-programme.

Si line est spécifié, il doit s'agir d'un numéro de ligne valide. RETURN saute à cette ligne (et fait apparaître la pile GOSUB). Lors du retour d'une routine d'interception d'erreurs, RETURN réactive l'interception d'évènements qui a été arrêtée lors de l'entrée dans la routine d'interruption.

Les erreurs

• la ligne n'est pas un numéro de ligne existant : Undefined line number.
RMDIR RMDIR dir_spec  
Supprime un répertoire vide sur un périphérique de disque.

Paramètres

• L'expression de chaîne dir_spec est une spécification de fichier valide qui spécifie le chemin et le nom du répertoire.

les erreurs

• dir_spec a une valeur numérique : Type mismatch.
• dir_spec est une chaîne vide : Bad file name.
• Aucun chemin correspondant n'a été trouvé : Path not found.
• Le répertoire à supprimer n'est pas vide : Path/File access error.
RSET RSET string_name = expression  
Copie une valeur de chaîne dans une variable de chaîne ou un élément de tableau existant. La valeur sera justifiée à droite et tous les caractères restants seront remplacés par des espaces.

Paramètres

• string_name est une variable de chaîne ou un élément de tableau.
• expression est une expression de chaîne.

Remarques

• Si expression a une valeur plus longue que la longueur de la variable cible, elle est tronquée à la fin à la longueur de la variable cible.

• Si string_name n'a pas été alloué auparavant, cette instruction n'a aucun effet.

• Utilisez LSET, RSET ou MID$ pour copier les valeurs dans un tampon FIELD.

• Si LET est utilisé sur une variable FIELD au lieu de L|RSET, la variable est détachée du champ et une nouvelle variable de chaîne normale est allouée.

Les erreurs

• string_name n'est pas une variable de chaîne : Type mismatch.
• expression n'a pas de valeur de chaîne : Type mismatch.
RUN RUN [line_number [anything]|file_spec [, R]]
Exécute un programme.

Les variables existantes seront effacées. RUN implique CLEAR.

Si file_spec est donné, tout programme en mémoire sera effacé.

Si R est spécifié après file_spec, les fichiers restent ouverts ; sinon, tous les fichiers sont fermés.

Paramètres

• line_number est un numéro de ligne valide dans le programme en cours. Si spécifié, l'exécution commence à partir de ce numéro de ligne. Le reste de l'instruction RUN est ignoré dans ce cas.

• L'expression de chaîne file_spec, si elle est spécifiée, est une spécification de fichier valide indiquant le fichier à partir duquel lire le programme.

Les erreurs

• numéro_ligne n'est pas un numéro de ligne dans le programme en cours : Undefined line number.
• spéc_fichier introuvable : File not found.
• spéc_fichier est une chaîne vide : Bad file number.
• Un fichier texte chargé contient des lignes sans numéro de ligne : Direct statement in file.
SAVE SAVE file_spec [, {A|P}]  
Enregistre le programme en cours dans un fichier.

Si ,A est spécifié, le programme sera enregistré au format texte brut. Dans ce cas,
l'exécution du programme s'arrêtera et le contrôle sera rendu à l'utilisateur. Toute autre déclaration sur la ligne sera ignorée, également en mode direct.

• Si ,P est spécifié, le programme sera enregistré dans un format protégé. Lorsqu'un programme protégé est chargé dans GW-BASIC, il ne peut pas être LISTED ou SAVED dans un format non protégé.

• Si aucun n'est spécifié, le programme sera enregistré au format tokenisé.

Paramètres

• L'expression de chaîne file_spec est une spécification de fichier valide indiquant le fichier dans lequel stocker.

Les erreurs

• file_spec a une valeur numérique : Type mismatch.
• spéc_fichier est une chaîne vide : Bad file number.

• spéc_fichier contient des caractères interdits : Bad file number (sur CAS1 : ) ;
  Bad file name (sur les périphériques de disque).

• hide-protected est activé, le programme en cours est protégé et ,P n'est pas spécifié : Illegal function call.
SCREEN (statement) SCREEN [mode] [, [colorburst] [, [apage] [, [vpage] [, erase]]]]
Modifiez le mode vidéo, composite colorburst, la page active et la page visible.

Les modes vidéo sont décrits dans la section Modes vidéo.

Paramètres

• mode est une expression numérique qui définit le mode d'écran.
• colorburst est une expression numérique. Voir les notes ci-dessous.
• apage est une expression numérique qui définit la page active.
• vpage est une expression numérique qui définit la page visible.
• erase est une expression numérique dans la plage [0, 1, 2]. Ce n'est légal qu'avec syntax={pcjr, tandy}.

Voir les notes ci-dessous.

Modes vidéo

Les modes vidéo sont les suivants :

ÉCRAN 0 Mode texte
80x25 ou 40x25 caractères de 8x16 pixels
16 attributs choisis parmi 64 couleurs
Les attributs 16-31 sont des versions clignotantes de 0-15
4 pages ega

ÉCRAN 1 CGA couleur
320x200 pixels
40x25 caractères de 8x8 pixels
4 attributs choisis parmi 16 couleurs ; 2 bits par pixel
1 page ega 2 pages pcjr tandy

ÉCRAN 2 CGA monochrome
640x200 pixels
80x25 caractères de 8x8 pixels
2 attributs choisis parmi 16 couleurs ; 1 bit par pixel
1 page ega 2 pages pcjr tandy

ÉCRAN 3 PCJR tandy 16 couleurs basse résolution
160x200 pixels
20x25 caractères de 8x8 pixels
16 attributs choisis parmi 16 couleurs ; 4 bits par pixel
2pages

ÉCRAN 3 Hercule monochrome hercule
720x348 pixels
80x25 caractères de 9x14 pixels (avec ligne du bas tronquée de 2 px)
2 attributs ; 1 bit par pixel
2pages

ÉCRAN 3—255 Altissima risoluzione olivetti
640x400 pixels
80x25 caractères de 8x16 pixels
2 attributs dont un choisi parmi 16 couleurs ; 2 bits par pixel
1 pages

ÉCRAN 4 Med-res 4 couleurs pcjr tandy
320x200 pixels
40x25 caractères de 8x8 pixels
4 attributs choisis parmi 16 couleurs ; 2 bits par pixel
2pages

ÉCRAN 5 Med-res 16 couleurs pcjr tandy
320x200 pixels
40x25 caractères de 8x8 pixels
16 attributs choisis parmi 16 couleurs ; 4 bits par pixel
1 pages
Remarque : un minimum de 32 768 octets de mémoire vidéo doit être réservé pour utiliser ce mode vidéo. Utilisez l'instruction CLEAR ,,,32768 ! ou l'option video-memory=32768.

ÉCRAN 6 Tandy pcjr 4 couleurs haute résolution
640x200 pixels
80x25 caractères de 8x8 pixels
4 attributs choisis parmi 16 couleurs ; 2 bits par pixel
1 pages
Remarque : un minimum de 32 768 octets de mémoire vidéo doit être réservé pour utiliser ce mode vidéo. Utilisez l'instruction CLEAR ,,,32768 ! ou l'option video-memory=32768.

ÉCRAN 7 EGA couleur ega
320x200 pixels
40x25 caractères de 8x8 pixels
16 attributs choisis parmi 16 couleurs ; 4 bits par pixel
8pages

ÉCRAN 8 EGA couleur ega
640x200 pixels
80x25 caractères de 8x8 pixels
16 attributs choisis parmi 16 couleurs ; 4 bits par pixel
4pages

ÉCRAN 9 EGA couleur ega
640x350 pixels
80x25 caractères de 8x14 pixels
16 attributs choisis parmi 64 couleurs ; 4 bits par pixel
2pages

ÉCRAN 10 EGA monochrome moniteur ega=mono
640x350 pixels
80x25 caractères de 8x14 pixels
4 attributs choisis parmi 9 pseudo-couleurs ; 2 bits par pixel
2pages

Rafale de couleurs composite NTSC

Sur CGA, Tandy et PCjr, colorburst a les effets suivants, selon le type de moniteur - RVB (par défaut) ou composite :



Sur SCREEN 2 , colorburst n'a aucun effet ; sur un moniteur composite, les artéfacts de couleur peuvent être activés sur cet écran via OUT (voir ici). Sur SCREEN 3 et plus, colorburst n'a pas effet.

Erase

Par défaut, si le mode change ou si le colorburst passe de zéro à non nul, l'ancienne page et la nouvelle page de l'écran sont effacées. Sur syntax={pcjr, tandy} , le paramètre erase peut être utilisé pour modifier ce comportement.

Ses valeurs sont les suivantes :

0 N'efface aucune page d'écran

1 (défaut)

Si le mode change ou si la couleur change entre zéro et non zéro, l'ancienne page et la nouvelle page de l'écran sont effacées.

2 Si le mode change ou si la salve de couleur passe de zéro à non zéro, toutes les pages de l'écran sont effacées.

Remarques

• Au moins un paramètre doit être spécifié.

• Les artéfacts de couleur composite ne sont émulés que grossièrement dans PC-BASIC, et pas du tout dans SCREEN 1.

Les erreurs

• Aucun paramètre n'est spécifié : Missing operand.
• Tout paramètre a une valeur de chaîne : Type mismatch.
• Tout paramètre n'est pas dans [-32768—32767] : Overflow.

• mode n'est pas un numéro de mode vidéo disponible pour le réglage de votre carte vidéo : Illegal function call.

• vpage , apage ne sont pas compris entre 0 et le nombre de pages pour le mode vidéo choisi moins un :
Illegal function call.

• colorburst n'est pas dans [0—255] : Illegal function call.
• erase n'est pas dans [0, 1, 2] : Illegal function call.
SHELL SHELL [command]  
Démarre un sous-shell du système d'exploitation sur la console. Si command est spécifié, la commande est exécutée sur le shell et l'exécution revient au programme.

Pour activer cette instruction, l'option shell doit être définie sur un interpréteur de commandes valide.

Paramètres

• command est une expression de chaîne.

Remarques

Soyez prudent lorsque vous activez cette commande, car elle permet au programme BASIC en cours d'exécution un accès complet à vos fichiers et à votre système d'exploitation.

Les erreurs

• l'option shell n'est pas spécifiée : Illegal function call.
• la commande a une valeur numérique : Type mismatch.

• Toutes les sorties du sous-shell du système d'exploitation, y compris les messages d'erreur, s'affichent sur l'écran PC-BASIC.
SOUND (tone) SOUND frequency, duration [, volume [, voice]]
Produit un son à la fréquence Hz pendant une durée/18,2 secondes. Sur PCjr et Tandy, le volume et le canal vocal peuvent également être spécifiés.

Si PLAY "MB" a été exécuté, SOUND joue en arrière-plan. Si PLAY "MF" a été exécuté, le son joue au premier plan et l'interprète bloque jusqu'à ce que le son soit terminé.

Le mode premier plan est par défaut. Contrairement à PLAY , le son joué par l'instruction SOUND la plus récente joue toujours en arrière-plan, même si PLAY "MF" a été entré. En arrière-plan, chaque instruction SOUND compte pour 1 dans la longueur de la file d'attente signalée par la fonction PLAY.

Paramètres

• fréquence est une expression numérique dans [37—32767] ou 0 (pour syntax={advanced | pcjr} ) ou dans [-32768—32767] (pour syntax=tandy ).

• duration est une expression numérique dans [0—65535].

• volume est une expression numérique entre [-1—15]. 0 est silencieux, 15 est plein volume ; chaque pas en moins réduit le volume de 2 dB. -1 est également à plein volume. (Pour syntax={pcjr | tandy} ).

• voice est une expression numérique entre [0—2] , indiquant lequel des trois canaux vocaux est utilisé pour ce son. (Pour syntax={pcjr | tandy} )

Remarques

• Sur PCjr et Tandy, les fréquences inférieures à 110 Hz sont lues comme 110 Hz.
• Si la durée est nulle, tout son de fond actif est arrêté et la file d'attente sonore est vidée.
• Si la durée est de zéro, le volume et la voix ne doivent pas être spécifiés.

• Si la durée est inférieure à 0,022 mais différente de zéro, le son sera joué en arrière-plan et continuera indéfiniment jusqu'à ce qu'une autre instruction sonore soit exécutée. C'est également le comportement pour une durée négative.

• Si fréquence est égale à 32767 ou 0 , un silence de longueur durée est mis en file d'attente.

Les erreurs

• Tout argument a une valeur de chaîne : Type mismatch.
• la fréquence n'est pas dans sa plage autorisée et la durée n'est pas nulle : Illegal function call.
• la durée est nulle et plus de deux arguments sont spécifiés : Syntax error.
• syntaxe={ pcjr | tandy } n'est pas défini et plus de deux arguments sont spécifiés : Erreur de syntaxe.
• la fréquence n'est pas dans [-32768—32767] : Overflow.
• la durée n'est pas dans [-65535—65535] : Illegal function call.
• le volume n'est pas dans [0—15] :Illegal function call.
• la voix n'est pas dans [0—2] : Illegal function call.
SOUND (switch) SOUND {ON|OFF}  
Active ou désactive le haut-parleur externe et bascule la disponibilité des capacités sonores avancées sur PCjr et Tandy. Cela inclut le son à 3 voix, la génération de bruit et le contrôle du volume. Efface la file d'attente de la musique de fond.

Remarques

• Uniquement disponible avec syntax={pcjr | tandy}.
• Sur PC-BASIC, les haut-parleurs interne et externe sont émulés via le même système audio.

Les erreurs

• Cette instruction est utilisée et syntax={ pcjr | tandy } n'est pas défini : Syntax error.
STOP STOP  
Interrompt l'exécution du programme, imprime un message Break sur la console et rend le contrôle à l'utilisateur. Les fichiers ne sont pas fermés. Il est possible de reprendre l'exécution du programme à l'instruction suivante en utilisant CONT.
STRIG (switch) STRIG {ON|OFF}  
N'a aucun effet.
STRIG
(event switch)
STRIG[ ](button) {ON|OFF|STOP}
Active ou désactive le piégeage d'évènement du bouton de déclenchement du joystick.

STRIG (bouton) STOP suspend le piégeage d'évènement jusqu'à ce que STRIG (bouton) ON soit exécuté. Jusqu'à un évènement peut être déclenché pendant la suspension, à condition que la gestion des évènements ait été activée avant la suspension. L'évènement déclenché pendant la suspension est traité immédiatement après la prochaine instruction STRIG (bouton) ON.

valeur de retour du bouton

0 1ère manette 1ère gâchette
2 2ème manette 1ère gâchette
4 1ère manette 2ème gâchette
6 2ème manette 2ème gâchette

Paramètres

• button est une expression numérique dans [0, 2, 4, 6].

Les erreurs

• button a une valeur de chaîne : Type mismatch.
• le bouton n'est pas dans [-32768—32767] : Overflow.
• le bouton n'est pas dans [0, 2, 4, 6] : Illegal function call.
SWAP SWAP var_0, var_1 Échange les variables var_0 et var_1.
Remarques

• Les variables sont échangées par référence. Si, par exemple, var_0 est une variable FIELD et var_1 ne l'est pas, alors SWAP inversera ces rôles.

Paramètres

• var_0 et var_1 sont des variables ou des éléments de tableau du même type. var_1 doit avoir été défini au préalable.

Les erreurs

• var_1 n'est pas défini : Illegal function call.
Notez qu'aucune erreur n'est générée si var_0 n'est pas défini, et qu'après cette erreur, les deux variables seront définies.

• Les types de var_0 et var_1 ne sont pas identiques : Type mismatch.
SYSTEM SYSTEM Quitte l'interpréteur.
Remarques

• SYSTEM quitte immédiatement l'interpréteur PC-BASIC sans autre interaction. Tout programme ou donnée non enregistré sera perdu.
TERM TERM  
Charge et exécute le programme défini par l'option terme. Par défaut, comme sur IBM PCjr, il s'agit d'une application d'émulation de terminal série intégrée. Cette instruction n'est disponible qu'avec syntax={pcjr|tandy}.

Les erreurs

• Si term n'est pas défini, cette instruction génère une erreur interne.

• Si la syntaxe n'est pas définie sur pcjr ou tandy , ce mot-clé n'est pas présent. L'appel de TERM génèrera une erreur de syntaxe.
TIME$ (statement) TIME$ = time  
Règle l'heure BASIC actuelle sur l'heure.

Paramètres

• Time est une expression de chaîne de la forme "HH{:|.}mm{:|.}ss" où 0 <= HH < 24 , 0 <= mm < 60 et 0 <= ss < 60. Chaque position peut avoir un ou deux caractères.

Remarques

• PC-BASIC stocke un décalage par rapport à l'heure système et l'utilise pour les futurs appels aux fonctions TIME$ et DATE$ dans la même session d'interpréteur. L'heure système n'est pas modifiée, contrairement à GW-BASIC sous MS-DOS.

Les erreurs

• time a une valeur numérique : Type mismatch.
• l'heure n'est pas de la forme correcte : Illegal function call.
TIMER (statement) TIMER {ON|OFF|STOP}  
• ON : active le piégeage d'événement ON TIMER de l'horloge de la minuterie.
• OFF : désactive le piégeage.

• STOP : arrête le piégeage jusqu'à ce que TIMER ON soit utilisé. Les évènements qui se produisent alors que le piégeage est arrêté se déclenchent immédiatement lorsque le piégeage est réactivé.
TRON and TROFF {TRON|TROFF} Active ou désactive le suivi des numéros de ligne.
 Si le suivi des numéros de ligne est activé, BASIC imprime une balise [100] sur la console lorsque la ligne de programme 100 est exécutée, et ainsi de suite.

Remarques

• Le traçage est désactivé par les instructions NEW et LOAD.
UNLOCK UNLOCK [#] file_number [, record_0]

UNLOCK [#] file_number, [record_0] TO record_1
Déverrouille un fichier ou une partie de celui-ci qui a été précédemment verrouillé avec LOCK.

Paramètres

• file_number est une expression numérique dans [0—255].
• record_0 et record_1 sont des expressions numériques dans [1—2^25-2].

Les erreurs

• Tout paramètre a une valeur de chaîne : Type mismatch.
• file_number n'est pas dans [-32768—32767] : Overflow.
• file_number n'est pas dans [0—255] : Illegal function call.
• numéro_fichier n'est pas un fichier ouvert : Bad file number.

• Si numéro_fichier est ouvert pour RANDOM, les instructions LOCK et UNLOCK doivent correspondre en termes d'enregistrement_0 et d'enregistrement_1. Un UNLOCK non correspondant déclenchera une autorisation refusée.

• record_0 ou record_1 n'est pas dans [1—2^25-2] :Bad record number.
VIEW VIEW [[SCREEN] (x0, y0)-(x1, y1) [, [fill] [, border]]]
Définit une fenêtre graphique. Les graphiques dessinés en dehors de la fenêtre ne seront pas affichés. (x0,y0) , (x1, y1) sont les coordonnées écran absolues de deux coins opposés de la zone.

À moins que SCREEN ne soit spécifié, après une instruction VIEW, le système de coordonnées est décalé de sorte que (0, 0) devienne la coordonnée supérieure gauche de la fenêtre.

Si VIEW est appelé sans arguments, la fenêtre est réinitialisée sur tout l'écran.

Paramètres

• fill est un attribut. La fenêtre sera remplie avec cet attribut.
• border est un attribut. Une bordure sera dessinée juste à l'extérieur de la fenêtre avec cet attribut.

Les erreurs

• N'importe lequel des paramètres a une valeur de chaîne : Type mismatch.
• L'une des coordonnées n'est pas dans [-32768—32767] : Overflow.
• L'une des paires de coordonnées se trouve en dehors de l'écran physique : Illegal function call.
VIEW PRINT VIEW PRINT top_row TO bottom_row
Définit la zone de défilement du texte de l'écran. Les instructions LOCATE, le mouvement du curseur et le défilement seront limités à la zone de défilement.

Paramètres

• top_row et bottom_row sont des expressions numériques dans [1—24].

Remarques

• Si syntaxe={pcjr | tandy} et KEY OFF est défini, bottom_row peut être 25. Sinon, la ligne d'écran 25 ne peut pas faire partie de la zone de défilement.

Les erreurs

• top_row ou bottom_row n'est pas dans [1—24] : Illegal function call.
WAIT WAIT port, and_mask [, xor_mask]
Attend que la valeur de (INP(port) XOR xor_mask) AND and_mask devienne non nulle. La gestion des évènements est suspendue jusqu'au retour de WAIT.

Si xor_mask n'est pas spécifié, sa valeur par défaut est 0.

Remarques

• Un nombre limité de ports machine sont émulés dans PC-BASIC. Voir INP.

Les erreurs

• Tout paramètre a une valeur de chaîne : Type mismatch.
• le port n'est pas dans [-32768—65535] : Overflow.
• and_mask ou xor_mask ne sont pas dans [0—255] : Type mismatch.
WEND WEND  
Itère une boucle WHILE—WEND : saute à l'instruction WHILE correspondante, où sa condition peut être vérifiée.

Remarques

• Les boucles WHILE—WEND peuvent être imbriquées. WEND saute à l'instruction WHILE la plus récente qui n'a pas été fermée par un autre WEND.

Les erreurs

• Toutes les instructions WHILE précédentes ont été fermées par un autre WEND ou aucune instruction WHILE n'a été exécutée auparavant : WEND without WHILE.
WHILE WHILE expr Initie une boucle WHILE—WEND.
 Si expr vaut zéro, WHILE saute à l'instruction immédiatement après le WEND correspondant. Sinon, l'exécution continue.

Paramètres
• expr est une expression numérique.

Les erreurs

• Aucun WEND correspondant n'est trouvé : WHILE sans WEND.
• expr a une valeur de chaîne : Type mismatch.
WIDTH (console) WIDTH num_columns [, [num_rows] [,]]
Définit la largeur de l'écran sur 20, 40 ou 80 colonnes.

Remarques

• Lorsque vous modifiez la largeur de l'écran en mode graphique, le mode vidéo est modifié.

Les modifications suivantes se produisent :

ÉCRAN 1 (40)  ←→ ÉCRAN 2 (80)
ÉCRAN 7 (40) ←→  ÉCRAN 8 (80)
ÉCRAN 7 (40) ← ÉCRAN 9 (80)

• La valeur de largeur d'écran 20 n'est autorisée que sur Tandy et PCjr. Le passage à cette largeur passe à SCREEN 3.

En outre, les modifications suivantes se produisent :

ÉCRAN 3 (20) → ÉCRAN 1 (40)
ÉCRAN 3 (20) → ÉCRAN 2 (80)
ÉCRAN 4 (40) → ÉCRAN 2 (80)
ÉCRAN 5 (40) ←→ ÉCRAN 6 (80)

Paramètres

• num_columns est soit un littéral 20 , 40 ou 80 soit une expression numérique entre parenthèses. La virgule finale est facultative et n'a aucun effet.

• num_rows est facultatif et doit être égal à 25. Si syntax={pcjr | tandy} est défini, num_rows peut être compris entre [0—25] mais sa valeur est ignorée.

Les erreurs

• num_columns est une expression de chaîne : Type mismatch.
• num_columns n'est pas dans [-32768—32767] : Overflow.
• num_columns n'est pas dans [0—255] : Illegal function call.
• num_columns n'est pas un littéral et n'est pas entre crochets : Illegal function call.
• num_rows n'est pas dans sa plage acceptée : Illegal function call.
WIDTH
(devices and files)
WIDTH {#file_num,|device_name,|LPRINT} num_columns
Définit la largeur de ligne d'un fichier ou d'un périphérique. Lorsqu'une opération d'écriture dépasse la largeur de colonne, une séquence CR LF est insérée.

Si un périphérique est spécifié, il n'est pas nécessaire qu'un fichier lui soit ouvert ; le paramètre de largeur sera la largeur par défaut la prochaine fois qu'un fichier sera ouvert sur ce périphérique.

Si device_name est "LPT1:" ou si LPRINT est spécifié, le paramètre de largeur de périphérique affecte LPRINT et LLIST.

Si device_name est "SCRN:" , "KYBD:" , ou omis, la largeur de l'écran est modifiée. Dans ce cas, num_columns doit être l'un des 20, 40 ou 80. Voir les notes sur WIDTH (console) pour les effets secondaires.

Paramètres

• file_num est une expression numérique qui correspond au numéro d'un fichier ouvert.

• nom_périphérique est une expression de chaîne parmi "KYBD :" , "SCRN :" , "LPT1 :" , "LPT2 :" , "LPT3 :" , "COM1 :" , "COM2 :" , "CAS1 :"

• num_columns est une expression numérique.

Les erreurs

• nom_périphérique n'est pas l'un des périphériques autorisés : Bad file name.
• nom_périphérique est "SCRN :", "KYBD :" et num_columns n'est pas 20, 40 ou 80 : Illegal function call.
• file_num ou num_columns sont des chaînes : Type mismatch.
• file_num ou num_columns ne sont pas dans [-32768—32767] : Overflow.
• file_num ou num_columns ne sont pas dans [0—255] : Illegal function call.
• num_fichier n'est pas un fichier ouvert : Bad file mode.
WINDOW WINDOW [[SCREEN] (x0, y0)-(x1, y1)]
Définisse les coordonnées logiques de la fenêtre.

Si SCREEN n'est pas spécifié, le coin inférieur gauche de l'écran est mappé aux coordonnées inférieures ; le coin supérieur droit de l'écran correspond aux coordonnées supérieures.

Si SCREEN est spécifié, le coin supérieur gauche de l'écran est mappé aux coordonnées inférieures ; le coin inférieur droit de l'écran correspond aux coordonnées supérieures.

Si WINDOW est appelée sans arguments, les coordonnées logiques sont réinitialisées aux coordonnées de la fenêtre.

Paramètres
• x0 , y0 , x1 , y1 sont des expressions numériques.

Les erreurs

• Toutes les coordonnées ont une valeur de chaîne : Type mismatch.
• x0 = x1 ou y0 = y1 : Illegal function call.
WRITE WRITE [# file_num,] [expr_0 [{,|;} expr_1]... ]
Écrit des valeurs dans un fichier ou sur l'écran sous une forme lisible par machine. Les valeurs sont séparées par des virgules et la ligne se termine par une séquence CR LF. Les chaînes sont délimitées par des guillemets doubles ". Aucun espace de remplissage n'est inséré.

Lors de l'écriture à l'écran, les mêmes caractères de contrôle sont reconnus que pour l'instruction PRINT.

Paramètres
• expr_0, expr_1,... sont des expressions dont la valeur doit être imprimée.

Les erreurs

• file_num a une valeur de chaîne : Type mismatch.
• num_fichier est ouvert pour INPUT : Bad file mode.

 

 

 

 

 

 

 

Recherche personnalisée