LES VARIABLES SYSTEME
LISTE DES VARIABLES SYSTEME.
Note : quand on fait appel à une variable système, il est conseillé de fait marque une légère pause au programme avec la fonction WAIT( ) , en général WAIT( 10 ), afin de s'assurer que les traitements en cours sont bien terminés et que les valeurs de ces variables ont bien été mise à jour.
Variables système pour toutes les versions du BBC BASIC.
@chrmap% : un pointeur vers la table de caractères utilisée dans MODE 7 et pour GET(abscisse,ordonnée).
@flags% : un entier incorporant les indicateurs de contrôle de BASIC.
@fn%(n): un tableau de pointeurs vers des fonctions internes.
@hfile%(n) : un tableau de handles de fichiers indexés par numéro de canal.
@hpal% : le handle ou le pointeur vers la palette de couleurs.
@hwnd% : le handle de fenêtre pour la fenêtre du programme de BASIC.
@hwo% : le handle de l'appareil WAVEOUTPUT.
@ispal% : un booléen qui est différent de zéro si l'affichage est en palette de couleurs.
@memhdc% : le contexte de périphérique ou le moteur de rendu pour le canevas de sortie.
@msg% : la valeur MSG (à utiliser avec ON MOUSE, ON MOVE et ON SYS).
@wparam% : la valeur WPARAM (à utiliser avec ON MOUSE, ON MOVE et ON SYS).
@lparam% : la valeur LPARAM (à utiliser avec ON MOUSE, ON MOVE et ON SYS).
@ox% : décalage horizontal (en pixels) entre l'image bitmap de sortie et le canevas.
@oy% : décalage vertical (en pixels) entre l'image bitmap de sortie et le canevas.
@vdu% : un pointeur vers les paramètres texte et graphiques de BASIC.
@cmd$ : la ligne de commande d'un programme compilé.
@dir$ : le répertoire à partir duquel le programme a été chargé.
@lib$ : le répertoire contenant les fichiers de la bibliothèque BBC BASIC.
@tmp$ : le répertoire temporaire.
@usr$ : le répertoire spécifique à l'utilisateur actuel.
@vdu{} : une structure contenant les principales variables VDU.
Variables système pour la version Windows du BBC BASIC.
@haccel% : le handle de l'accélérateur du clavier, si utilisé.
@hcsr% : le handle du pointeur de la souris.
@hevent% : le handle de l'événement utilisé pour empêcher le blocage dans les E/S séries et parallèles.
@hmdi% : le handle de la fenêtre de l'interface de documents multiples (le cas échéant).
@hwacc% : le handle de fenêtre vers lequel les commandes d'accélérateur de clavier seront envoyées.
@midi% : id du périphérique MIDI (différent de zéro si un fichier MIDI est en lecture).
@prthdc% : le contexte du périphérique pour l'imprimante actuelle (le cas échéant).
Variables système pour la version SDL 2.0 du BBC BASIC.
@cache% : l'adresse mémoire du cache de polices TTF (65536 pointeurs de texture).
@panx% : la position horizontale du canevas de sortie par rapport à la fenêtre.
@pany% : la position verticale du canevas de sortie par rapport à la fenêtre.
@zoom% : le facteur d'échelle du canevas de sortie par rapport à la fenêtre (&8000 = 1:1).
@platform% : donne des renseignements sur l'environnement de machine.
GÉNÉRALITÉS.
Le nom d'une variable système commence par le caractère @. Les variables système sont prédéfinis, vous ne pouvez donc pas en créer.
Le BASIC BBC original ne possédait qu'une seule variable système @%. Elle controlait le formatage de l'impression. Voir l'instruction PRINT pour plus de détails pour son utilisation. Maintenant, le BBC SDL propose de nouvelles variables système principalement destinées aux interactions avec les fonctions API Windows ou SDL 2.0.
Note : quand on fait appel à une variable système, il est conseillé de fait marque une légère pause au programme avec la fonction WAIT() , en général WAIT( 10 ), afin de s'assurer que les traitements en cours sont bien terminés et que les valeurs de ces variables ont bien été mise à jour.
Dans BBC BASIC pour SDL 2.0, les variables système peuvent être obsolètes, c'est-à-dire qu'elles ne peuvent pas représenter l'état actuel à moins qu'une synchronisation de thread ne soit d'abord effectuée. Le moyen le plus simple (et le plus rapide) d'y parvenir est de lire la valeur POS ou VPOS :
IF POS ... : REM - Synchronisation des threads SDL
REM - Les variables système peuvent désormais être lues de manière fiable.
REMARQUES.
La variable @cmd$ permet à un exécutable créé avec l'utilitaire Compile d'accéder à la ligne de commande avec laquelle il a été exécuté. @cmd$ est vide dans le cas d'un programme exécuté depuis l'environnement interactif. @cmd$ est une variable en lecture seule, vous ne devez pas y écrire.
Les variables @dir$ et @lib$ sont utiles lors de l'utilisation des l'instructions CALL et/ou INSTALL ou lors du chargement de tout autre fichier de ressources (images, fichiers de données, etc.) nécessaire à votre programme. Si vous vous assurez que ces fichiers sont stockés soit dans le répertoire de la bibliothèque, soit dans le même répertoire que le programme lui-même, vous pouvez simplement préfixer leurs noms de fichiers avec @lib$ ou @dir$. Par exemple : INSTALL @lib$ + "mabibliotheque" ou OSCLI "DISPLAY "+@dir$+"monimage". Les fichiers spécifiés de cette manière sont automatiquement incorporés dans un exécutable créé par la commande Compile. @dir$ et @lib$ sont prédéfinis, vous ne devez pas leur attribuer de nouvelles valeurs.
Les variables @tmp$ et @usr$ sont utiles pour stocker des fichiers de données. @tmp$ peut être utilisée pour les fichiers temporaires qui peuvent être supprimés une fois le programme terminé, et @usr$ pour les fichiers contenant des informations pertinentes pour l'utilisateur actuel, telles que les résultats enregistrés du programme. Contrairement à @dir$, ces emplacements sont garantis comme étant accessibles en écriture (dans des circonstances normales).@tmp$ et @usr$ sont prédéfinis, vous ne devez pas leur attribuer de nouvelles valeurs.
La variable @platform% : retourne :
- le numéro de version SDL dans les 24 bits les plus significatifs
- majeur ;
- mineur ;
- correctif ;
- un identifiant de plate-forme dans les 4 bits LS :
- 0 pour Windows ;
- 1 pour Linux ;
- 2 pour MacOS ;
- 3 pour Android ;
- 4 pour iOS ;
- 5 pour dans le navigateur ;
- et si le bit 6 est défini, cela indique une plate-forme 64 bits.
Sur les plateformes 64 bits, @chrmap%, @fn%(), @hfile%(), @hwnd%, @hpal%, @memhdc%, @vdu% et @cache% peuvent tous renvoyer des valeurs 64 bits, même s'ils n'ont qu'un seul suffixe %.
La variable @vdu% vous permet d'accéder aux valeurs d'un certain nombre de paramètres textuels et graphiques internes de BASIC. Certains des plus utiles d'entre eux sont répertoriés ci-dessous ; en général, vous ne devez lire que ces valeurs (elles doivent être écrites à l'aide des instructions BASIC associées). Les principales variables VDU peuvent également être accessibles via la structure @vdu{}, comme indiqué ci-dessous :
@vdu%!0 ou @vdu.o.x%
L'origine graphique horizontale (en unités graphiques BBC BASIC), telle que définie par ORIGIN ou VDU 29.
@vdu%!4 ou @vdu.o.y%
L'origine graphique verticale (en unités graphiques BBC BASIC), telle que définie par ORIGIN ou VDU 29.
@vdu%!8 ou @vdu.l.x%
La coordonnée horizontale (en unités graphiques) du dernier point visité, avec MOVE, PLOT, etc.
@vdu%!12 ou @vdu.l.y%
La coordonnée verticale (en unités graphiques) du dernier point visité, avec MOVE, PLOT, etc.
@vdu%!16 ou @vdu.p.x%
La coordonnée horizontale (en unités graphiques) du dernier point visité, avec MOVE, PLOT, etc.
@vdu%!20 ou @vdu.p.y%
La coordonnée verticale (en unités graphiques) du dernier point visité, avec MOVE, PLOT, etc.
@vdu%!24 ou @vdu.tl%
Le bord gauche de la fenêtre d'affichage du texte (en pixels), tel que défini par VDU 28.
@vdu%!28 ou @vdu.tr%
Le bord droit de la fenêtre d'affichage du texte (en pixels), tel que défini par VDU 28.
@vdu%!32 ou @vdu.tt%
Le haut de la fenêtre d'affichage du texte (en pixels), tel que défini par VDU 28.
@vdu%!36 ou @vdu.tb%
Le bas de la fenêtre d'affichage du texte (en pixels), tel que défini par VDU 28.
@vdu%!40 ou @vdu.d.x%
La largeur d'un point graphique, en pixels (LS 16 bits uniquement).
@vdu%!44 ou @vdu.d.y%
La hauteur d'un point graphique, en pixels (LS 16 bits uniquement).
@vdu%!48 ou @vdu.c.x%
La position du curseur de texte horizontal, en pixels.
@vdu%!52 ou @vdu.c.y%
La position du curseur de texte vertical, en pixels.
@vdu%!56 ou @vdu.hf%
Le handle de la police actuelle, tel que défini par *FONT. Éditions 32 bits uniquement. Dans les éditions 64 bits, il s'agit de valeurs 64 bits, utilisez @vdu.hf% et @vdu.hr%.
@vdu%!60 ou @vdu.hr%
La poignée du rectangle de découpage graphique actuel, tel que défini par VDU 24 . Éditions 32 bits uniquement. Dans les éditions 64 bits, il s'agit de valeurs 64 bits, utilisez @vdu.hf% et @vdu.hr%.
@vdu%?64 ou @vdu.g.a&
L'action de premier plan graphique actuelle (ou code ROP2), telle que définie par GCOL.
@vdu%?65 ou @vdu.g.b&
La couleur de premier plan graphique actuelle, telle que définie par GCOL.
@vdu%?66 ou @vdu.g.c&
L'action d'arrière-plan graphique actuelle (ou code ROP2), telle que définie par GCOL.
@vdu%?67 ou @vdu.g.d&
La couleur d'arrière-plan graphique actuelle, telle que définie par GCOL.
@vdu%?68 ou vdu.t.a&
La ligne supérieure du curseur de texte (caret), telle que définie par VDU 23,0,10.
@vdu%?69 ou @vdu.t.b&
La ligne inférieure du curseur de texte (caret), telle que définie par VDU 23,0,11.
@vdu%?70 ou @vdu.t.c&
La couleur de premier plan du texte, telle que définie par COLOUR.
@vdu%?71 ou @vdu.t.d&
La couleur d'arrière-plan du texte, telle que définie par COLOUR.
@vdu%?72 ou @vdu.m.a&
Le numéro de MODE actuel (255 pour un mode défini par l'utilisateur).
@vdu%?73 ou @vdu.m.b&
Le masque de couleur pour le MODE actuel (nombre de couleurs−1).
@vdu%?74 ou @vdu.m.c&
Les indicateurs de l'émulateur VDU sont des octets (8 bits).
@vdu%?75 ou @vdu.m.d&
Le compteur de défilement en mode paginé VDU 14.
@vdu%?76 ou @vdu.w.a&
La largeur, en pixels, du curseur de texte (caret) telle que définie par VDU 23,0,18.
@vdu%?77 ou @vdu.w.b&
L'épaisseur, en pixels, des lignes droites continues et des formes de contour, tel que définie par VDU 23,23... .
@vdu%?78 ou @vdu.w.c&
Contrôle du mouvement du curseur de texte (caret), tel que défini par VDU 23,16... .
@vdu%?79 ou @vdu.w.d&
BBC BASIC pour Windows : définissez sur &80 pour supprimer la substitution de caractères en MODE 7.
@vdu%!208 ou @size.x%
La largeur, en pixels, de l'écran de sortie de BASIC, telle que définie par MODE ou VDU 23,22. Uniquement pour BBC BASIC pour SDL 2.0.
@vdu%!212 ou @size.y%
La hauteur, en pixels, de l'écran de sortie de BASIC, telle que définie par MODE ou VDU 23,22. Uniquement pour BBC BASIC pour SDL 2.0.
@vdu%!216 ou @char.x%
La largeur, en pixels, d'une cellule de caractère, telle que définie par MODE ou VDU 23,22. Uniquement pour BBC BASIC pour SDL 2.0.
@vdu%!220 ou @char.y%
La hauteur, en pixels, d'une cellule de caractère, telle que définie par MODE ou VDU 23,22. Uniquement pour BBC BASIC pour SDL 2.0.
@vdu%!224
La largeur d'une cellule de caractère sur l'imprimante, telle que définie par *PRINTERFONT. Uniquement pour BBC BASIC pour Windows. BBC BASIC pour SDL 2.0 ne prend actuellement pas en charge la sortie papier.
@vdu%!228
La hauteur d'une cellule de caractère sur l'imprimante, telle que définie par *PRINTERFONT. Uniquement pour BBC BASIC pour Windows. BBC BASIC pour SDL 2.0 ne prend actuellement pas en charge la sortie papier.
@vdu%!232
Le bord gauche de la page imprimée (marge gauche), tel que défini par *MARGINS. Uniquement pour BBC BASIC pour Windows. BBC BASIC pour SDL 2.0 ne prend actuellement pas en charge la sortie papier.
@vdu%!236
Le bord droit de la page imprimée, tel que défini par *MARGINS. Uniquement pour BBC BASIC pour Windows. BBC BASIC pour SDL 2.0 ne prend actuellement pas en charge la sortie papier.
@vdu%!240
Le bord supérieur de la page imprimée (marge supérieure), tel que défini par *MARGINS. Uniquement pour BBC BASIC pour Windows. BBC BASIC pour SDL 2.0 ne prend actuellement pas en charge la sortie papier.
@vdu%!244
Le bord inférieur de la page imprimée, tel que défini par *MARGINS. Uniquement pour BBC BASIC pour Windows. BBC BASIC pour SDL 2.0 ne prend actuellement pas en charge la sortie papier.
@vdu%!-4
L'ID du travail d'impression actuel (le cas échéant). Uniquement pour BBC BASIC pour Windows. BBC BASIC pour SDL 2.0 ne prend actuellement pas en charge la sortie papier.
@vdu%!-8
La coordonnée verticale déterminant où le texte apparaîtra sur la page lorsqu'il sera envoyé à l'imprimante. Uniquement pour BBC BASIC pour Windows. BBC BASIC pour SDL 2.0 ne prend actuellement pas en charge la sortie papier.
@vdu%!-12
La coordonnée horizontale déterminant où le texte apparaîtra sur la page lorsqu'il sera envoyé à l'imprimante. Uniquement pour BBC BASIC pour Windows. BBC BASIC pour SDL 2.0 ne prend actuellement pas en charge la sortie papier.
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
avec un exemple de résolution à télécharger pour vous inspirer.