<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://wiki.planet-casio.com/fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kevkevvtt</id>
		<title>Casio Universal Wiki - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.planet-casio.com/fr/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kevkevvtt"/>
		<link rel="alternate" type="text/html" href="https://wiki.planet-casio.com/fr/Sp%C3%A9cial:Contributions/Kevkevvtt"/>
		<updated>2026-04-08T22:22:12Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.28.2</generator>

	<entry>
		<id>https://wiki.planet-casio.com/fr/index.php?title=Fx-9860G_SDK&amp;diff=621</id>
		<title>Fx-9860G SDK</title>
		<link rel="alternate" type="text/html" href="https://wiki.planet-casio.com/fr/index.php?title=Fx-9860G_SDK&amp;diff=621"/>
				<updated>2012-07-12T15:30:38Z</updated>
		
		<summary type="html">&lt;p&gt;Kevkevvtt : /*Recorections de quelques fautes + corrections du lien de notepad++ (pour la dernière version)*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le Fx-9860G (Software Development Kit, ou kit de développement) est un logiciel de programmation qui permet de créer des add-ins en C ou en C++ compatibles avec la graph 75, 85, 85 SD, 95 (et graph 35+ tweakées grâce à cette astuce : [[Transformer sa graph 35+ USB en graph 75]]). Les add-ins créés par ce logiciel sont beaucoup plus rapides que les programmes en Basic, et ils permettent l'utilisation des [[syscall]] et de nombreuses fonctionnalités supplémentaires comme le multi-getkey et l'inclusion de librairies. Les jeux ou utilitaires ainsi créés s'affichent dans le menu principal, comme les applications intégrées de Casio ! Voilà une petite présentation qui vous aidera à faire vos premiers pas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comment l'utiliser ==&lt;br /&gt;
=== Téléchargement et installation ===&lt;br /&gt;
Tout d'abord vous devez télécharger le logiciel, soit sur le site officiel de Casio (mais il faudra vous inscrire et prouver que vous avez la bonne calculatrice), soit sur [http://www.planet-casio.com/Fr/logiciels/voir_un_logiciel_casio.php?logiciel=SDK_Graph_75_85_95_logiciel&amp;amp;showid=76 Planet-Casio], choisissez le fichier &amp;quot;sdk85.rar&amp;quot;.&lt;br /&gt;
Ouvrez le fichier que vous venez de téléchargé avec un gestionnaire d'archive comme [http://www.7-zip.org/ 7zip] et exécutez &amp;quot;fx-9860G SDK setup.exe&amp;quot;. Continuez l'installation normalement et une fois celle-ci terminée, lancez le programme.&lt;br /&gt;
=== Création du projet ===&lt;br /&gt;
Tout d'abord, vous devez créer un projet. Pour cela allez dans le menu &amp;quot;Projet&amp;quot; et faites &amp;quot;New...&amp;quot;. Une fenêtre apparaît:&lt;br /&gt;
* '''&amp;quot;Path to project&amp;quot;''' : Donnez ici un dossier général des projets.&lt;br /&gt;
* '''&amp;quot;Folder name&amp;quot;''' : Ici donnez le nom du dossier de votre projet, un dossier de ce nom sera créé dans le répertoire que vous avez indiqué juste au dessus. Tout votre projet sera dans ce nouveau dossier.&lt;br /&gt;
* '''&amp;quot;Title&amp;quot;''' : C'est le nom de votre projet, il ne peut contenir que 8 caractères.&lt;br /&gt;
* '''&amp;quot;Version&amp;quot;''' : Indiquez ici la version de votre projet. Vous pouvez par exemple écrire &amp;quot;1.0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* '''&amp;quot;Copy from project&amp;quot;''' : Cela permet de récupérer la config d'un ancien projet&lt;br /&gt;
* '''&amp;quot;Copy sources and header files&amp;quot;''' : Lorsque cette case est coché et que vous avez indiquer un projet a récupérer, il copiera en plus les sources.&lt;br /&gt;
* '''&amp;quot;Copy icons&amp;quot;''' : Lorsque cette case est coché et que vous avez indiquer un projet a récupérer, il récupérera en plus les icônes.&lt;br /&gt;
Une fois que vous validez, il se peut qu'un message s'affiche ou la seul possibilité est de cliquer sur OK. Faites le, ce n'est pas un problème, c'est juste le compilateur qui vous dit que vous devez compiler avant de lancer le programme.&lt;br /&gt;
=== Première compilation ===&lt;br /&gt;
Ça y est votre projet est prêt vous pouvez dès maintenant commencer à coder, mais pour être sûr que tout fonctionne bien, je vous conseille de lancer une première compilation en utilisant le bouton &amp;quot;compiler&amp;quot; (celui tout moche et coloré). Si tout s'est bien passé, vous devriez voir en bas de la fenetre &amp;quot;Build results&amp;quot;, &amp;quot;Build has completed&amp;quot;. Si vous voyez ça, vous pouvez lancer l’émulateur en cliquant sur le bouton &amp;quot;run&amp;quot; (la petite flèche style &amp;quot;play&amp;quot; noire) ou en appuyant sur F5 (et si vous ne voyez pas ça vous avez deux solutions : chercher l'erreur avec les indications qu'il vous donne, et abandonner). Normalement l'écran et le clavier vont s'afficher; pour exécuter votre add-in, restez dans le menu principal et utilisez les fléches de la calculatrice pour vous déplacer en bas a droite (vous pouvez aussi utiliser votre clavier) sur le logo de votre add-in où il est actuellement écrit &amp;quot;Debug&amp;quot; (sauf si vous avez pensé à refaire l'icone). Cliquez ensuite sur [EXE], et vous devrez voir a l'écran &amp;quot;This application is sample Add-In&amp;quot;. Si tout s'est bien passé, c'est parfait et vous pouvez continuer, si il n'a pas réussi à compiler et que vous êtes sous Windows 64 bits, essayez cette [[#Incompatibilit.C3.A9_avec_les_versions_de_windows_64bit|astuce]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problèmes rencontrés ==&lt;br /&gt;
=== Incompatibilité avec les versions de Windows 64 bits ===&lt;br /&gt;
Il arrive que la compilation ne fonctionne pas avec les versions 64 bits de Windows. L'incompatibilité vient du fait que par défaut les logiciels créés pour les versions 32 bits s'installent automatiquement dans le dossier &amp;quot;C:\Program Files (x86)\&amp;quot; au lieu de &amp;quot;C:\Program Files\&amp;quot; et le compilateur ne fonctionne pas si son chemin d'accès comporte des parenthèses.&lt;br /&gt;
==== Si le logiciel est déjà installé ====&lt;br /&gt;
Pour régler le problème, allez dans &amp;quot;C:\Program Files (x86)\CASIO&amp;quot;, faites clique droit puis couper sur le dossier &amp;quot;fx-9860G SDK&amp;quot;. Allez ensuite dans &amp;quot;C:\Programmes\&amp;quot;, si il y a déjà un dossier &amp;quot;CASIO&amp;quot;, ouvrez le sinon créez le. Et enfin collez dans ce dossier. Normalement les racourcis se metterons automatiquement à jour mais si ce n'est pas le cas, allez dans le dossier que vous venez de déplacer &amp;quot;fx-9860G SDK&amp;quot; et faites un raccourci de &amp;quot;FXSH.exe&amp;quot;&lt;br /&gt;
==== Si le logiciel n'est pas encore installé ====&lt;br /&gt;
Lors de l'installation, changez le dossier de destination pour &amp;quot;C:\CASIO\fx-9860G SDK&amp;quot;. Une fois l’installation terminée, allez dans &amp;quot;C:\&amp;quot; et déplacez le dossier &amp;quot;CASIO&amp;quot; dans &amp;quot;Programmes&amp;quot;. Normalement les raccourcis devraient se mettre à jour automatiquement. Mais si ce n'est pas le cas, allez dans &amp;quot;C:\Programmes\CASIO\fx-9860G SDK&amp;quot; et faites un raccourci de &amp;quot;FXSH.exe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Éditeur sans colorisation syntaxique ===&lt;br /&gt;
Ce logiciel à un gros inconvénient, c'est qu'il n'est pas équipé de colorisation syntaxique, c'est à dire que tout le code en C que vous allez programmer sera écrit en noir, ce qui peut vite devenir illisible quand on a beaucoup de lignes. Pour remédier à cela, je vous conseil d'utiliser un autre éditeur, par exemple [http://notepad-plus-plus.org/fr/download/ Notepad++]. Néanmoins, nous sommes encore obligés d'utiliser le SDK pour compiler et pour tester, donc dans le SDK, vous fermez toutes les fenêtres d'éditions et gardez celle qui vous servent pour débugger. Ouvrez ensuite notepad++ et allez chercher les fichiers dans le dossier de votre projet. Si vous en ouvrez plusieurs, ils se mettrons sous forme d'onglets.&lt;br /&gt;
Désormais, vous aurez deux fenêtres au lieu d'une pour programmer, mais cet inconvénient est négligeable.&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Graph 75/85/95]]&lt;/div&gt;</summary>
		<author><name>Kevkevvtt</name></author>	</entry>

	<entry>
		<id>https://wiki.planet-casio.com/fr/index.php?title=Fx-9860G_SDK&amp;diff=620</id>
		<title>Fx-9860G SDK</title>
		<link rel="alternate" type="text/html" href="https://wiki.planet-casio.com/fr/index.php?title=Fx-9860G_SDK&amp;diff=620"/>
				<updated>2012-07-12T15:09:58Z</updated>
		
		<summary type="html">&lt;p&gt;Kevkevvtt : /*Corrections de quelques fautes d'orthographes*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Le Fx-9860G (Software development kit, ou kit de développement) est un logiciel de programmation qui permet de créer des add-in en C ou C++ compatibles avec la graph 75, 85, 85 SD, 95 (et 35+ tweakées grâce à cette astuce : [[Transformer sa graph 35+ USB en graph 75]]). Les add-ins crée par ce logiciel sont beaucoup plus rapides que les programmes en Basic, et ils permettent l'utilisation des [[syscall]] et de nombreuses fonctionnalités supplémentaires comme le multi-getkey et l'inclusion de librairies. Les jeux ou utilitaires ainsi créés s'affichent dans le menu principal, comme les applications intégrées de Casio ! Voilà une petite présentation qui vous aidera à faire vos premiers pas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Comment l'utiliser ==&lt;br /&gt;
=== Téléchargement et installation ===&lt;br /&gt;
Tout d'abord vous devez télécharger le logiciel, soit sur le site officiel de Casio, mais il faudra vous inscrire et prouver que vous avez la bonne calculatrice, soit sur [http://www.planet-casio.com/Fr/logiciels/voir_un_logiciel_casio.php?logiciel=SDK_Graph_75_85_95_logiciel&amp;amp;showid=76 Planet-Casio], croissez le fichier &amp;quot;sdk85.rar&amp;quot;&lt;br /&gt;
Ouvrez le fichier que vous avez téléchargé avec un gestionnaire d'archive comme [http://www.7-zip.org/ 7zip] et exécutez &amp;quot;fx-9860G SDK setup.exe&amp;quot;. Continuez l'installation normalement et une fois celle-ci terminé lancez le programme.&lt;br /&gt;
=== Création du projet ===&lt;br /&gt;
Tout d'abord, vous devez créer un projet. Pour cela allez dans le menu &amp;quot;Projet&amp;quot; et faites &amp;quot;New...&amp;quot;. Une fenêtre apparaît:&lt;br /&gt;
* '''&amp;quot;Path to project&amp;quot;''' : Donner ici un dossier général des projets.&lt;br /&gt;
* '''&amp;quot;Folder name&amp;quot;''' : Ici donnez le nom du dossier de votre projet, un dossier de ce nom sera créé dans le répertoire que vous avez indiqué juste au dessus. Tout votre projet sera dans ce nouveau dossier.&lt;br /&gt;
* '''&amp;quot;Title&amp;quot;''' : C'est le nom de votre projet, il ne peut contenir que 8 caractères.&lt;br /&gt;
* '''&amp;quot;Version&amp;quot;''' : Indiquez ici la version de votre projet. Vous pouvez par exemple écrire &amp;quot;1.0&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* '''&amp;quot;Copy from project&amp;quot;''' : Cela permet de récupérer la config d'un ancien projet&lt;br /&gt;
* '''&amp;quot;Copy sources and header files&amp;quot;''' : Lorsque cette case est coché et que vous avez indiquer un projet a récupérer, il copiera en plus les sources.&lt;br /&gt;
* '''&amp;quot;Copy icons&amp;quot;''' : Lorsque cette case est coché et que vous avez indiquer un projet a récupérer, il récupérera en plus les icônes.&lt;br /&gt;
Une fois que vous validez, il se peut qu'un message s'affiche ou la seul possibilité est de cliquer sur OK. Faites le, ce n'est pas un problème, c'est juste le compilateur qui vous dit que vous devez compiler avant de lancer le programme.&lt;br /&gt;
=== Première compilation ===&lt;br /&gt;
Ça y est votre projet est près vous pouvez dès maintenant coder, mais pour être sûr que tout fonctionne bien, je vous conseil de lancer une première compilation en utilisant le bouton &amp;quot;compiler&amp;quot; (celui tout moche et coloré). Si tout s'est bien passé vous devriez voir en bas de la fenetre &amp;quot;Build results&amp;quot;, &amp;quot;Build has completed&amp;quot;. Si vous voyez ça, vous pouvez lancer l’émulateur en cliquant sur le bouton &amp;quot;run&amp;quot; (la petite flèche style &amp;quot;play&amp;quot; noire) ou en appuyant sur F5 (et si vous ne voyez pas ça vous avez deux solutions : chercher l'erreur avec les indications qu'il vous donne, et abandonner). Normalement l'écran et le clavier vont s'afficher; pour ouvrir votre add-in, restez dans le menu principal et utilisez les fléches de la calculatrice pour vous déplacer en bas a droite (vous pouvez aussi utiliser votre clavier) sur le logo de votre add-in qui où actuellement il est écrit &amp;quot;Debug&amp;quot;, sauf si vous avez pensé à refaire l'icone. Cliquez ensuite sur [EXE], et vous devrez voir a l'écran &amp;quot;This application is sample Add-In&amp;quot;. Si tout s'est bien passé, c'est parfait vous pouvez continuer, si il n'a pas réussi a compiler et que vous êtes sous Windows 64 bit, essayez cette [[#Incompatibilit.C3.A9_avec_les_versions_de_windows_64bit|astuce]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problèmes rencontrés ==&lt;br /&gt;
=== Incompatibilité avec les versions de Windows 64 bits ===&lt;br /&gt;
Il arrive que la compilation ne fonctionne pas avec les versions 64 bits de Windows. L'incompatibilité vient du fait que par défaut les logiciels créés pour les versions 32 bits s'installent automatiquement dans le dossier &amp;quot;C:\Program Files (x86)\&amp;quot; au lieu de &amp;quot;C:\Program Files\&amp;quot; et le compilateur ne fonctionne pas si son chemin d'accès comporte des parenthèses.&lt;br /&gt;
==== Si le logiciel est déjà installé ====&lt;br /&gt;
Pour régler le problème, allez dans &amp;quot;C:\Program Files (x86)\CASIO&amp;quot;, faites clique droit puis couper sur le dossier &amp;quot;fx-9860G SDK&amp;quot;. Allez ensuite dans &amp;quot;C:\Programmes\&amp;quot;, si il y a déjà un dossier &amp;quot;CASIO&amp;quot;, ouvrez le sinon créez le. Et enfin collez dans ce dossier. Normalement les racourcis se metterons automatiquement à jour mais si ce n'est pas le cas, allez dans le dossier que vous venez de déplacer &amp;quot;fx-9860G SDK&amp;quot; et faites un raccourci de &amp;quot;FXSH.exe&amp;quot;&lt;br /&gt;
==== Si le logiciel n'est pas encore installé ====&lt;br /&gt;
Lors de l'installation, changez le dossier de destination pour &amp;quot;C:\CASIO\fx-9860G SDK&amp;quot;. Une fois l’installation terminée, allez dans &amp;quot;C:\&amp;quot; et déplacez le dossier &amp;quot;CASIO&amp;quot; dans &amp;quot;Programmes&amp;quot;. Normalement les raccourcis devraient se mettre à jour automatiquement. Mais si ce n'est pas le cas, allez dans &amp;quot;C:\Programmes\CASIO\fx-9860G SDK&amp;quot; et faites un raccourci de &amp;quot;FXSH.exe&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Éditeur sans colorisation syntaxique ===&lt;br /&gt;
Ce logiciel à un gros inconvénient, c'est qu'il n'est pas équipé de colorisation syntaxique, c'est a dire que tout le code en C que vous allez programmer sera écrit en noir, ce qui peut vite devenir illisible quand on a beaucoup de lignes. Pour remédier à cela, je vous conseil d'utiliser un autre éditeur, par exemple [http://notepad-plus-plus.org/fr/download/v6.1.1.html Notepad++]. Néanmoins, on est oblgé d'utiliser encore le SDK pour compiler et pour tester, donc dans le sdk, vous fermez toutes les fenêtres d'éditions et gardez celle qui vous servent pour débugger. Ouvrez ensuite notepad++ et allez chercher les fichiers dans le dossier de votre projet. Si vous en ouvrez plusieurs, ils se mettrons sous forme d'onglet.&lt;br /&gt;
L’inconvénient c'est que vous aurez deux fenêtre au lieu d'une pour programmer, mais cet inconvénient est négligeable.&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Graph 75/85/95]]&lt;/div&gt;</summary>
		<author><name>Kevkevvtt</name></author>	</entry>

	<entry>
		<id>https://wiki.planet-casio.com/fr/index.php?title=Fxlib.h&amp;diff=616</id>
		<title>Fxlib.h</title>
		<link rel="alternate" type="text/html" href="https://wiki.planet-casio.com/fr/index.php?title=Fxlib.h&amp;diff=616"/>
				<updated>2012-06-29T21:42:16Z</updated>
		
		<summary type="html">&lt;p&gt;Kevkevvtt : /* Bdisp_AreaReverseVRAM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La librairie &amp;quot;fxlib.h&amp;quot; est la librairie qui contient toutes les fonctions de bases du kit de développement de Casio pour Graph 75/85/95 (SD). Il existe d'autres librairies communautaires bien plus simples et puissantes, mais certaines fonctions de &amp;quot;fxlib.h&amp;quot; sont nécessaires, et n'ont pas d'équivalent dans les librairies non-officielles.&lt;br /&gt;
&lt;br /&gt;
Dans cette documentation vous découvrirez un aperçu des fonctions, comment les utiliser et leur utilité. Si il vous manque des informations, vous pouvez toujours venir vous informer sur les forums Casio comme [http://www.planet-casio.com/Fr/| Planète-Casio] côté francophone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fonctions d'affichage ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bdisp_PutDisp_DD ===&lt;br /&gt;
prototype : ''void Bdisp_PutDisp_DD(void);''&lt;br /&gt;
&lt;br /&gt;
Affiche à l'écran le contenu de la VRAM (buffer stockant le contenu de l'écran virtuel). Ne prend aucun argument et ne renvoie aucune valeur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bdisp_AllClr_DD/ Bdisp_AllClr_VRAM/ Bdisp_AllClr_DDVRAM ===&lt;br /&gt;
prototypes :&lt;br /&gt;
&lt;br /&gt;
''void Bdisp_AllClr_DD(void);''&lt;br /&gt;
&lt;br /&gt;
''void Bdisp_AllClr_VRAM(void);''&lt;br /&gt;
&lt;br /&gt;
''void Bdisp_AllClr_DDVRAM(void);''&lt;br /&gt;
&lt;br /&gt;
Ne prend aucun argument et ne renvoie aucune valeur.&lt;br /&gt;
&lt;br /&gt;
Bdisp_AllClr_DDVRAM() efface l'écran et la VRAM.&lt;br /&gt;
Pour effacer uniquement l'écran, utiliser Bdisp_AllClr_DD().&lt;br /&gt;
Pour effacer uniquement la VRAM, utiliser Bdisp_AllClr_VRAM().&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bdisp_AreaClr_DD/ Bdisp_AreaClr_VRAM/ Bdisp_AreaClr_DDVRAM ===&lt;br /&gt;
prototypes :&lt;br /&gt;
&lt;br /&gt;
''void Bdisp_AreaClr_DD(const DISPBOX *pArea);''&lt;br /&gt;
&lt;br /&gt;
''void Bdisp_AreaClr_VRAM(const DISPBOX *pArea);''&lt;br /&gt;
&lt;br /&gt;
''void Bdisp_AreaClr_DDVRAM(const DISPBOX *pArea);''&lt;br /&gt;
&lt;br /&gt;
La fonction ne renvoie aucune valeur.&lt;br /&gt;
&lt;br /&gt;
Efface une partie de l'écran. L'argument à passer (par pointeur) à cette fonction est une structure de la forme :&lt;br /&gt;
&lt;br /&gt;
''typedef struct tag_DISPBOX{'' // déclarée dans &amp;quot;dispbios.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''int left;'' // 0~127&lt;br /&gt;
&lt;br /&gt;
''int top;'' // 0~63&lt;br /&gt;
&lt;br /&gt;
''int right;'' // 0~127&lt;br /&gt;
&lt;br /&gt;
''int bottom;'' // 0~63&lt;br /&gt;
&lt;br /&gt;
''} DISPBOX;''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bdisp_AreaReverseVRAM ===&lt;br /&gt;
prototype :&lt;br /&gt;
&lt;br /&gt;
''void Bdisp_AreaReverseVRAM(''&lt;br /&gt;
&lt;br /&gt;
''int x1,'' // coordonnée x à gauche&lt;br /&gt;
&lt;br /&gt;
''int y1,'' // coordonnée y en haut&lt;br /&gt;
&lt;br /&gt;
''int x2,'' // coordonnée x à droite&lt;br /&gt;
&lt;br /&gt;
''int y2'' // coordonnée y en bas&lt;br /&gt;
&lt;br /&gt;
'');''&lt;br /&gt;
&lt;br /&gt;
La fonction ne renvoie aucune valeur. Inverse une zone de la VRAM (pixel éteint en allumé et allumé en éteint).&lt;br /&gt;
Passez-lui en argument les coordonnées de la zone à inverser, comme indiqué ci-dessus).&lt;br /&gt;
&lt;br /&gt;
=== Bdisp_GetDisp_DD/ Bdisp_GetDisp_VRAM ===&lt;br /&gt;
prototypes :&lt;br /&gt;
&lt;br /&gt;
''void Bdisp_GetDisp_DD(unsigned char * pData);''&lt;br /&gt;
&lt;br /&gt;
''void Bdisp_GetDisp_VRAM(unsigned char * pData);''&lt;br /&gt;
&lt;br /&gt;
La fonction ne renvoie aucune valeur. Elle permet de stocker dans un tableau le bitmap des écrans de la VRAM (écran virtuel) ou du DD (écran graphique). On lui passe en argument (par pointeur) le tableau où le bitmap sera stocké.&lt;br /&gt;
&lt;br /&gt;
La documentation ne précise rien de plus à propos de cette fonction, si ce n'est que le tableau sur lequel est stocké le bitmap doit avoir une taille de 1024 octets. On peut donc penser que la méthode de codage utilisée par Casio est : on regroupe les pixels par groupe de 8 (un octet), où chaque bit prend la valeur d'un pixel (allumé : 1, éteint : 0). Si l'on fait le calcul : (128*64)/8 = 1024.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bdisp_PutDispArea_DD ===&lt;br /&gt;
prototype : ''void Bdisp_PutDispArea_DD(const DISPBOX *pArea);''&lt;br /&gt;
&lt;br /&gt;
Une des plus belles erreurs de la documentation de Casio ! Dans la doc ils ont mis les explications d'une autre fonction... Cette fonction permet d'afficher à l'écran graphique une zone de l'écran virtuel. On peut tout de même deviner que cette fonction demande en argument une structure (passage par pointeur) de la forme :&lt;br /&gt;
&lt;br /&gt;
''typedef struct tag_DISPBOX{'' // déclarée dans &amp;quot;dispbios.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''int left;'' // 0~127&lt;br /&gt;
&lt;br /&gt;
''int top;'' // 0~63&lt;br /&gt;
&lt;br /&gt;
''int right;'' // 0~127&lt;br /&gt;
&lt;br /&gt;
''int bottom;'' // 0~63&lt;br /&gt;
&lt;br /&gt;
''} DISPBOX;''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bdisp_SetPoint_DD/ Bdisp_SetPoint_VRAM/ Bdisp_SetPoint_DDVRAM ===&lt;br /&gt;
prototypes :&lt;br /&gt;
&lt;br /&gt;
''void Bdisp_SetPoint_DD(int x,int y,unsigned char point);''&lt;br /&gt;
&lt;br /&gt;
''void Bdisp_SetPoint_VRAM(int x,int y,unsigned char point);''&lt;br /&gt;
&lt;br /&gt;
''void Bdisp_SetPoint_DDVRAM(int x,int y,unsigned char point);''&lt;br /&gt;
&lt;br /&gt;
Place ou supprime un pixel aux coordonnées x et y passées en argument. Ne renvoie aucune valeur. La troisième valeur passée en argument est le type de point : 1 pour mettre un pixel, 0 pour en enlever un.&lt;br /&gt;
La première fonction permet d'agir sur l'écran graphique, la seconde dans la VRAM, et la troisième dans les deux.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bdisp_GetPoint_VRAM ===&lt;br /&gt;
prototype : ''int Bdisp_GetPoint_VRAM(int x,int y);''&lt;br /&gt;
&lt;br /&gt;
Retourne la couleur du pixel dont les coordonnées sont passées en argument (1 pour un pixel allumé, 0 pour un pixel éteint).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bdisp_WriteGraph_DD/ Bdisp_WriteGraph_VRAM/ Bdisp_WriteGraph_DDVRAM ===&lt;br /&gt;
prototypes :&lt;br /&gt;
&lt;br /&gt;
''void Bdisp_WriteGraph_DD(const DISPGRAPH *WriteGraph);''&lt;br /&gt;
&lt;br /&gt;
''void Bdisp_WriteGraph_VRAM(const DISPGRAPH *WriteGraph);''&lt;br /&gt;
&lt;br /&gt;
''void Bdisp_WriteGraph_DDVRAM(const DISPGRAPH *WriteGraph);''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Affiche un bitmap sur la VRAM ou l'écran (ou les deux). Ne renvoie aucune valeur. Les arguments sont passés (par pointeur) dans une structure de la forme :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''typedef struct tag_DISPGRAPH {''  // déclarée dans &amp;quot;dispbios.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''int x;'' // coordonnée x à gauche&lt;br /&gt;
&lt;br /&gt;
''int y;'' // coordonnée y à gauche&lt;br /&gt;
&lt;br /&gt;
''GRAPHDATA GraphData;'' // pointeur sur la structure contenant les données du bitmap (voir en dessous)&lt;br /&gt;
&lt;br /&gt;
''WRITEMODIFY WriteModify;'' // type d'écriture du graphe (IMB_WRITEMODIFY_NORMAL : écriture normale et IMB_WRITEMODIFY_REVERSE : écriture inverse).&lt;br /&gt;
&lt;br /&gt;
''WRITEKIND WriteKind;'' // mode d'écriture&lt;br /&gt;
&lt;br /&gt;
''} DISPGRAPH;''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le mode d'écriture peut être :&lt;br /&gt;
&lt;br /&gt;
OR = allumé si le pixel de l'écran OU le pixel du bitmap sont allumés&lt;br /&gt;
&lt;br /&gt;
AND = allumé si le pixel de l'écran ET le pixel du bitmap sont allumés&lt;br /&gt;
&lt;br /&gt;
XOR = allumé si le pixel de l'écran OU le pixel du bitmap sont allumés, MAIS PAS LES DEUX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La structure contenant les données du bitmap prend cette forme :&lt;br /&gt;
&lt;br /&gt;
''typedef struct tag_GRAPHDATA{'' // déclarée dans &amp;quot;dispbios.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''int width;'' // largeur du bitmap&lt;br /&gt;
&lt;br /&gt;
''int height;'' // hauteur du bitmap&lt;br /&gt;
&lt;br /&gt;
''unsigned char *pBitmap;'' // pointeur sur les données du bitmap&lt;br /&gt;
&lt;br /&gt;
''} GRAPHDATA;''&lt;br /&gt;
&lt;br /&gt;
Le bitmap est codé de la manière suivante : on regroupe les pixels par groupe de 8 (un octet), où chaque bit prend la valeur d'un pixel (allumé : 1, éteint : 0).&lt;br /&gt;
&lt;br /&gt;
On peut s'interroger sur l'utilité de faire des fonctions avec passage d'arguments aussi complexe, mais n'oubliez pas que nous sommes chez Casio.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bdisp_ReadArea_DD / Bdisp_ReadArea_VRAM ===&lt;br /&gt;
prototypes :&lt;br /&gt;
&lt;br /&gt;
''void Bdisp_ReadArea_DD (const DISPBOX *ReadArea,unsigned char *ReadData);''&lt;br /&gt;
''void Bdisp_ReadArea_VRAM (const DISPBOX *ReadArea,unsigned char *ReadData);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction permet de stocker une zone de l'écran graphique (DD) ou de l'écran virtuel (VRAM) sur un tableau, codé de la manière suivante : on regroupe les pixels par groupe de 8 (un octet), où chaque bit prend la valeur d'un pixel (allumé : 1, éteint : 0).&lt;br /&gt;
La fonction ne retourne rien. On lui passe en argument (par pointeur) le tableau récepteur du bitmap et une structure de la forme :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''typedef struct tag_DISPBOX {'' // déclarée dans &amp;quot;dispbios.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''int left;'' // 0~127&lt;br /&gt;
&lt;br /&gt;
''int top;'' // 0~63&lt;br /&gt;
&lt;br /&gt;
''int right;'' // 0~127&lt;br /&gt;
&lt;br /&gt;
''int bottom;'' // 0~63&lt;br /&gt;
&lt;br /&gt;
''} DISPBOX;''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bdisp_DrawLineVRAM ===&lt;br /&gt;
prototype :&lt;br /&gt;
&lt;br /&gt;
''void Bdisp_DrawLineVRAM(int x1,int y1,int x2,int y2);''&lt;br /&gt;
&lt;br /&gt;
La fonction trace une ligne entre deux points dont les coordonnées sont entières et de la forme : (0~127;0~63).&lt;br /&gt;
Elle ne retourne rien.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bdisp_ClearLineVRAM ===&lt;br /&gt;
prototype :&lt;br /&gt;
&lt;br /&gt;
''void Bdisp_ClearLineVRAM(int x1,int y1,int x2,int y2);''&lt;br /&gt;
&lt;br /&gt;
La fonction efface une ligne entre deux points dont les coordonnées sont entières et de la forme : (0~127;0~63).&lt;br /&gt;
Elle ne retourne rien.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== locate ===&lt;br /&gt;
prototype : ''void locate(int x,int y);''&lt;br /&gt;
&lt;br /&gt;
La fonction déplace le curseur à la position spécifiée par les arguments x et y de la forme (1~21;1~8).&lt;br /&gt;
&lt;br /&gt;
Chaque &amp;quot;case&amp;quot; de l'écran correspond à un rectangle de 6*8 pixels.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Print ===&lt;br /&gt;
prototype : ''void Print(const unsigned char *str);''&lt;br /&gt;
&lt;br /&gt;
La fonction affiche à la position du curseur la chaîne de caractères passée en arguments. Elle ne renvoie rien.&lt;br /&gt;
&lt;br /&gt;
Attention les textes trop longs ne sont pas renvoyés à la ligne ! C'est à vous de découper votre chaîne et de déplacer le curseur via la fonction locate().&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PrintRev ===&lt;br /&gt;
prototype : ''void PrintRev(const unsigned char *str);''&lt;br /&gt;
&lt;br /&gt;
La fonction affiche à la position du curseur la chaîne de caractères passée en arguments en couleurs inversées : pixels éteints sur fond de pixels allumés. Elle ne renvoie rien.&lt;br /&gt;
&lt;br /&gt;
Attention les textes trop longs ne sont pas renvoyés à la ligne ! C'est à vous de découper votre chaîne et de déplacer le curseur via la fonction locate().&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PrintC ===&lt;br /&gt;
prototype : ''void PrintC(const unsigned char *c);''&lt;br /&gt;
&lt;br /&gt;
Selon Casio cette fonction sert à afficher un unique caractère. On lui passe en argument la chaîne de caractères à afficher, et elle ne renvoie rien. Après, pourquoi une fonction spécifique qui produit le même résultat que la fonction Print() ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PrintRevC ===&lt;br /&gt;
prototype : ''void PrintRevC(const unsigned char *c);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction sert à afficher un caractère en couleurs inversées : pixels éteints sur fond de pixels allumés. On lui passe en argument la chaîne de caractères à afficher, et elle ne renvoie rien. Après, pourquoi une fonction spécifique qui produit le même résultat que la fonction PrintRev() ?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PrintLine ===&lt;br /&gt;
prototype : ''void PrintLine(const unsigned char *str,int max);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction affiche une chaîne de caractère passée en premier argument à la position du curseur (définie par locate() ou positionnée de base en haut à gauche), mais la spécificité de cette fonction est que l'affichage de la chaîne s'arrête à l'abscisse passée en second argument.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PrintRLine ===&lt;br /&gt;
prototype : ''void PrintRLine(const unsigned char *str,int max);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction affiche une chaîne de caractère passée en premier argument à la position du curseur (définie par locate() ou positionnée de base en haut à gauche) en couleurs inversées (pixels éteints sur fond de pixels allumés), mais la spécificité de cette fonction est que l'affichage de la chaîne s'arrête à l'abscisse passée en second argument.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PrintXY ===&lt;br /&gt;
prototype: ''void PrintXY(int x,int y,const unsigned char *str,int type);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction est très importante : elle permet d'afficher un texte passé en troisième argument aux coordonnées x et y précisées EN PIXELS et non en cases, de la forme : (0~127;0~63).&lt;br /&gt;
&lt;br /&gt;
L'argument type correspond à 0 pour affichage normal et 1 pour affichage en couleurs inversées (pixels éteints sur fond de pixels allumés). La fonction ne renvoie aucune valeur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PrintMini ===&lt;br /&gt;
prototype : ''void PrintMini(int x,int y,const unsigned char *str,int type);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction permet d'afficher à l'écran un texte plus petit (4*6 contre 6*8) aux coordonnées x et y passées en argument précisées en pixels, de la forme : (0~127;0~63).&lt;br /&gt;
&lt;br /&gt;
L'argument type correspond à 0 pour affichage normal et 1 pour affichage en couleurs inversées (pixels éteints sur fond de pixels allumés). La fonction ne renvoie aucune valeur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SaveDisp ===&lt;br /&gt;
prototype : ''void SaveDisp(unsigned char num);''&lt;br /&gt;
&lt;br /&gt;
Permet de stocker l'image affichée à l'écran dans la RAM (mémoire vive, donc détruite à la fin de l'exécution du programme). L'argument num spécifie sur quelle image on doit la stocker : SAVEDISP_PAGE1, SAVEDISP_PAGE2, SAVEDISP_PAGE3. La fonction ne renvoie aucune valeur. Pour ressortir l'image, voir RestoreDisp().&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== RestoreDisp ===&lt;br /&gt;
prototype : ''void RestoreDisp(unsigned char num);''&lt;br /&gt;
&lt;br /&gt;
Permet de ressortir une image enregistrée à l'écran. L'argument num spécifie l'image source : SAVEDISP_PAGE1, SAVEDISP_PAGE2, SAVEDISP_PAGE3. La fonction ne renvoie aucune valeur. Pour stocker l'image, voir SaveDisp().&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PopUpWin ===&lt;br /&gt;
prototype : ''void PopUpWin(int n);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction affiche une fenêtre système, comme celles affichées par la calto lors d'une erreur. Vous lui donnez en argument la taille, en lignes, de la fenêtre (de 1 à 5 lignes en théorie, mais j'ai déjà utilisé la fonction avec l'argument 7 sans erreur). La fonction ne retourne rien.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fonctions de manipulation des fichiers ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bfile_OpenFile ===&lt;br /&gt;
prototype : ''int Bfile_OpenFile(const FONTCHARACTER *filename,int mode);''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ouvre le fichier dont le nom est passé en argument, sous forme d'une chaîne de caractère de type FONTCHARACTER. La forme de cette chaîne de caractère est :&lt;br /&gt;
&lt;br /&gt;
''FONTCHARACTER PathName[]={'\\','\\','f','l','s','0','\\','f','i','l','e','n','a','m','e','.','e','x','t',0};''&lt;br /&gt;
&lt;br /&gt;
Si votre fichier se trouve dans la mémoire de stockage, choisissez comme répertoire &amp;quot;fls&amp;quot;, pour la carte SD choisissez &amp;quot;crd&amp;quot;. Le nom de fichier fait maximum 8 caractères, plus le point et votre extension (choisissez celle que vous voulez, cela ne change rien au codage du fichier). La chaîne est terminée par un 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L'argument mode correspond à :&lt;br /&gt;
&lt;br /&gt;
''_OPENMODE_READ'' : lecture seule.&lt;br /&gt;
&lt;br /&gt;
''_OPENMODE_WRITE'' : écriture seule.&lt;br /&gt;
&lt;br /&gt;
''_OPENMODE_READWRITE'' : lecture et écriture.&lt;br /&gt;
&lt;br /&gt;
''_OPENMODE_READWRITE_SHARE'' : lecture et écriture exclusives à ce programme (si un autre programme y touche, il aura uniquement un code d'erreur).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La valeur retournée est un handle. Il est ESSENTIEL de conserver ce handle tout au long de la lecture ou de l'écriture du fichier, il permet en effet d'accéder au fichier et de le fermer ! Si il y a erreur à l'ouverture du fichier, le handle retourné aura une valeur négative.&lt;br /&gt;
&lt;br /&gt;
=== Bfile_OpenMainMemory ===&lt;br /&gt;
prototype : ''int Bfile_OpenMainMemory(const unsigned char *name);''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ouvre un fichier dans la mémoire principale. Le nom de fichier est de la forme :&lt;br /&gt;
&lt;br /&gt;
''unsigned char name[]={“filename”};''&lt;br /&gt;
&lt;br /&gt;
Vous n'avez à préciser que le nom, dont la taille est inférieure à 8 caractères, sans extension ni répertoire.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La valeur retournée est un handle. Il est ESSENTIEL de conserver ce handle tout au long de la lecture ou de l'écriture du fichier, il permet en effet d'accéder au fichier et de le fermer ! Si il y a erreur à l'ouverture du fichier, le handle retourné aura une valeur négative.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bfile_ReadFile ===&lt;br /&gt;
prototype : ''int Bfile_ReadFile(int HANDLE,void *buf,int size,int readpos);''&lt;br /&gt;
&lt;br /&gt;
Le premier argument est le handle récupéré à l'ouverture du fichier. Le second est le buffer qui reçoit les données (passage par pointeur), c'est-à-dire un tableau dont vous aurez bien prévu la taille afin d'éviter que les données soient perdues dans la RAM. L'argument size est la longueur (en octets) à lire. Le dernier argument est la positon à laquelle va commencer la lecture. Si elle vaut -1, la lecture commencera à la position indiquée par le curseur du fichier, que l'on peut modifier grâce à la fonction Bfile_SeekFile(); sinon la lecture commence à la position indiquée en argument.&lt;br /&gt;
&lt;br /&gt;
La fonction retourne le nombre d'octets lus. Si la fonction échoue, la valeur retournée est un code d'erreur, une valeur négative.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bfile_WriteFile ===&lt;br /&gt;
prototype : ''int Bfile_WriteFile(int HANDLE,const void *buf,int size);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction est compliquée à utiliser, puisqu'elle ne marche pas comme il le faudrait... La fonction prend en premier paramètre le handle du fichier ouvert, en second le buffer à écrire (un tableau sur lequel sont stockées les données à enregistrer) et enfin le nombre d'octets à écrire.&lt;br /&gt;
&lt;br /&gt;
Mais dans la mémoire de stockage, si on fait plusieurs appels à Bfile_WriteFile() consécutifs, seul le premier aura une action. Si le fichier existe déjà et qu'on essaye de surécrire, ça donne des caractères inattendus. Dans la carte SD, on peut faire plusieurs appels consécutifs à Bfile_WriteFile(), tout sera écrit à la suite. Mais Bfile_SeekFile() ne change pas la position du curseur d'écriture, et si le fichier existe déjà, on écrit toujours à la suite de ce qu'il contient déjà.&lt;br /&gt;
&lt;br /&gt;
En conclusion, la seule manière d'écrire sans risque dans les fichiers est d'effacer et recréer le fichier à chaque fois, et de tout écrire d'une seule traite.&lt;br /&gt;
&lt;br /&gt;
La fonction retourne la position du curseur de fichier, oou un code d'erreur, une valeur négative.&lt;br /&gt;
&lt;br /&gt;
=== Bfile_SeekFile ===&lt;br /&gt;
prototype : ''int Bfile_SeekFile(int HANDLE,int pos);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction positionne le curseur du fichier dont le handle d'ouverture est passé en premier argument à la position indiquée par le second argument. Encore une fois, méfiez-vous : cette fonction ne produit pas toujours les résultats attendus, il arrive qu'elle n'ait aucun effet !&lt;br /&gt;
&lt;br /&gt;
La fonction retourne le nombre d'octets pouvant être lus. En cas d'erreur, elle retourne un code d'erreur, qui est une valeur négative.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bfile_CloseFile ===&lt;br /&gt;
prototype : ''int Bfile_CloseFile(int HANDLE);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction ferme le fichier dont le handle d'ouverture est passé en argument.&lt;br /&gt;
&lt;br /&gt;
Elle renvoie 0 si tout se passe bien et une valeur négative représentant un code d'erreur si elle échoue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bfile_GetMediaFree ===&lt;br /&gt;
prototype : ''int Bfile_GetMediaFree(enum DEVICE_TYPE devicetype,int *freebytes);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction permet d'obtenir la place libre sur la carte SD, la mémoire principale ou la mémoire de stockage. Ceci est essentiel pour éviter les erreurs lorsque vous essayez d'enregistrer des fichiers. Le premier argument représente la mémoire étudiée (DEVICE_MAIN_MEMORY : méémoire principale, DEVICE_STORAGE : mémoire de stockage, DEVICE_SD_CARD : carte SD). Le second argument est l'adresse de la variable sur laquelle stocker l'espace libre (passage par pointeur). La fonction renvoie 0 si tout se passe bien et une valeur négative représentant un code d'erreur si elle échoue (pourquoi Casio n'a pas tout simplement fait une fonction qui renvoie l'espace libre, et qui éviterait de passer par les pointeurs ? Encore une logique étrange...).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bfile_GetFileSize ===&lt;br /&gt;
prototype : ''int Bfile_GetFileSize(int HANDLE);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction renvoie la taille du fichier dont le handle d'ouverture est passé en argument. Elle est très utile si vous créez des fichiers dont la taille varie à chaque enregistrement. Elle renvoie une valeur négative représentant un code d'erreur si elle échoue.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bfile_CreateFile ===&lt;br /&gt;
prototype : ''int Bfile_CreateFile(const FONTCHARACTER *filename,int size);''&lt;br /&gt;
&lt;br /&gt;
Crée le fichier dont le nom est passé en premier argument, sous forme d'une chaîne de caractère de type FONTCHARACTER. La forme de cette chaîne de caractère est :&lt;br /&gt;
&lt;br /&gt;
''FONTCHARACTER PathName[]={'\\','\\','f','l','s','0','\\','f','i','l','e','n','a','m','e','.','e','x','t',0};''&lt;br /&gt;
&lt;br /&gt;
Si votre fichier se trouve dans la mémoire de stockage, choisissez comme répertoire &amp;quot;fls&amp;quot;, pour la carte SD choisissez &amp;quot;crd&amp;quot;. Le nom de fichier fait maximum 8 caractères, plus le point et votre extension (choisissez celle que vous voulez, cela ne change rien au codage du fichier). La chaîne est terminée par un 0.&lt;br /&gt;
&lt;br /&gt;
Le second argument est la taille en octets du fichier. Prévoyez toujours un caractère de plus que la taille dont vous avez besoin, pour le caractère de fin de fichier essentiel pour une utilisation correcte du fichier. La valeur retournée est 0 en cas de réussite, et une valeur négative correspondant à un code d'erreur en cas d'échec.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bfile_CreateDirectory ===&lt;br /&gt;
prototype : ''int Bfile_CreateDirectory(const FONTCHARACTER *pathname);''&lt;br /&gt;
&lt;br /&gt;
Crée un répertoire. L'argument passé est le chemin du répertoire, sous forme d'une chaîne de caractères de type FONTCHARACTER. La forme de cette chaîne de caractères est :&lt;br /&gt;
&lt;br /&gt;
''FONTCHARACTER PathName[]={'\\','\\','f','l','s','0','\\','d','i','r','n','a','m','e',0};''&lt;br /&gt;
&lt;br /&gt;
Si votre répertoire se trouve dans la mémoire de stockage, choisissez &amp;quot;fls&amp;quot;, pour la carte SD choisissez &amp;quot;crd&amp;quot;. Le nom fait maximum 8 caractères. La chaîne est terminée par un 0.&lt;br /&gt;
&lt;br /&gt;
La valeur retournée est 0 en cas de réussite, et une valeur négative correspondant à un code d'erreur en cas d'échec.&lt;br /&gt;
&lt;br /&gt;
=== Bfile_CreateMainMemory ===&lt;br /&gt;
prototype : ''int Bfile_CreateMainMemory(const unsigned char *name);''&lt;br /&gt;
&lt;br /&gt;
Crée un fichier dans la mémoire principale. Donnez-lui en argument le nom du fichier, de la forme :&lt;br /&gt;
&lt;br /&gt;
''unsigned char name[]={“filename”};''&lt;br /&gt;
&lt;br /&gt;
Vous n'avez à préciser que le nom, dont la taille est inférieure à 8 caractères, sans extension ni répertoire.&lt;br /&gt;
&lt;br /&gt;
La valeur retournée est 0 en cas de réussite, et une valeur négative correspondant à un code d'erreur en cas d'échec.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bfile_RenameMainMemory ===&lt;br /&gt;
prototype : ''int Bfile_RenameMainMemory(const unsigned char *oldname, unsigned char *newname);''&lt;br /&gt;
&lt;br /&gt;
Renomme le fichier dont le nom est passé en premier argument avec le nom passé en second argument. Les noms sont de la forme :&lt;br /&gt;
&lt;br /&gt;
''unsigned char name[]={“filename”};''&lt;br /&gt;
&lt;br /&gt;
Vous n'avez à préciser que le nom, dont la taille est inférieure à 8 caractères, sans extension ni répertoire.&lt;br /&gt;
&lt;br /&gt;
La valeur retournée est 0 en cas de réussite, et une valeur négative correspondant à un code d'erreur en cas d'échec.&lt;br /&gt;
&lt;br /&gt;
=== Bfile_DeleteFile ===&lt;br /&gt;
prototype : ''int Bfile_DeleteFile(const FONTCHARACTER *filename);''&lt;br /&gt;
&lt;br /&gt;
Supprime le fichier dont le nom est passé en premier argument, sous forme d'une chaîne de caractère de type FONTCHARACTER. La forme de cette chaîne de caractère est :&lt;br /&gt;
&lt;br /&gt;
''FONTCHARACTER PathName[]={'\\','\\','f','l','s','0','\\','f','i','l','e','n','a','m','e','.','e','x','t',0};''&lt;br /&gt;
&lt;br /&gt;
Cette fonction sert généralement lorsque vous voulez recréer le fichier (ou si ça vous amuse de casser définitivement l'enregistrement). La valeur retournée est 0 en cas de réussite, et une valeur négative correspondant à un code d'erreur en cas d'échec.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bfile_DeleteDirectory ===&lt;br /&gt;
prototype : ''int Bfile_DeleteDirectory(const FONTCHARACTER *pathname);''&lt;br /&gt;
&lt;br /&gt;
Supprime un répertoire. L'argument passé est le chemin du répertoire, sous forme d'une chaîne de caractères de type FONTCHARACTER. La forme de cette chaîne de caractères est :&lt;br /&gt;
&lt;br /&gt;
''FONTCHARACTER PathName[]={'\\','\\','f','l','s','0','\\','d','i','r','n','a','m','e',0};''&lt;br /&gt;
&lt;br /&gt;
Si votre répertoire se trouve dans la mémoire de stockage, choisissez &amp;quot;fls&amp;quot;, pour la carte SD choisissez &amp;quot;crd&amp;quot;. Le nom fait maximum 8 caractères. La chaîne est terminée par un 0.&lt;br /&gt;
&lt;br /&gt;
Cette fonction n'est valable que sur la mémoire de stockage, il est impossible de supprimer un répertoire sur la carte SD ou dans la mémoire de stockage. La valeur retournée est 0 en cas de réussite, et une valeur négative correspondant à un code d'erreur en cas d'échec.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bfile_DeleteMainMemory ===&lt;br /&gt;
prototype : ''int Bfile_DeleteMainMemory(const unsigned char *name);''&lt;br /&gt;
&lt;br /&gt;
Supprime un fichier dans la mémoire principale. Donnez-lui en argument le nom du fichier, de la forme :&lt;br /&gt;
&lt;br /&gt;
''unsigned char name[]={“filename”};''&lt;br /&gt;
&lt;br /&gt;
Vous n'avez à préciser que le nom, dont la taille est inférieure à 8 caractères, sans extension ni répertoire.&lt;br /&gt;
&lt;br /&gt;
La valeur retournée est 0 en cas de réussite, et une valeur négative correspondant à un code d'erreur en cas d'échec.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bfile_FindFirst ===&lt;br /&gt;
prototype : ''int Bfile_FindFirst(const FONTCHARACTER *pathname,int *FindHandle,FONTCHARACTER *foundfile,FILE_INFO *fileinfo);&lt;br /&gt;
&lt;br /&gt;
Bfile_FindFirst() et Bfile_FindNext() sont des fonctions assez complexes, et très peu utilisées pour des jeux, mais elles peuvent s'avérer bien utiles. Elles permettent en effet de rechercher des fichiers dans un répertoire selon leur extension.&lt;br /&gt;
&lt;br /&gt;
Cette fonction permet de trouver le premier fichier (dans l'ordre alphabétique) correspondant au profil de recherche. Le premier argument est ce profil, de la forme :&lt;br /&gt;
&lt;br /&gt;
''FONTCHARACTER PathName[]={'\\','\\','f','l','s','0','\\','*','.','e','x','t',0};''&lt;br /&gt;
&lt;br /&gt;
On précise bien &amp;quot;fls&amp;quot; pour la mémoire de stockage, &amp;quot;crd&amp;quot; pour la carte SD. L'extension doit bien être choisie, en fonction du type de fichiers que vous recherchez.&lt;br /&gt;
&lt;br /&gt;
En second argument vous passez l'adresse d'un handle de recherche (passage par pointeur). Il est essentiel de garder ce handle pour continuer la recherche et la fermer.&lt;br /&gt;
&lt;br /&gt;
En troisième argument vous passez un tableau de type FONTCHARACTER sur lequel sera stockée la chaîne de caractères contenant le nom du fichier (passage par pointeur). Prévoyez le stockage de 20 caractères (en content le 0 de fin de chaîne).&lt;br /&gt;
&lt;br /&gt;
Le dernier argument est la structure qui recevra les informations sur le fichier trouvé (passage par pointeur). cette structure est de la forme :&lt;br /&gt;
&lt;br /&gt;
''typedef struct tag_FILE_INFO {'' // déclarée dans &amp;quot;filebios.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''unsigned short id;'' // index du fichier&lt;br /&gt;
&lt;br /&gt;
''unsigned short type;'' // type de fichier&lt;br /&gt;
&lt;br /&gt;
''unsigned long fsize;'' // taille du fichier (en octets)&lt;br /&gt;
&lt;br /&gt;
''unsigned long dsize;'' // taille des données (le header du fichier non compté)&lt;br /&gt;
&lt;br /&gt;
''unsigned int property;'' // renseigne si le fichier est entièrement rempli (si oui, property=0)&lt;br /&gt;
&lt;br /&gt;
''unsigned long address;'' // adresse la plus haute des données&lt;br /&gt;
&lt;br /&gt;
''} FILE_INFO;''&lt;br /&gt;
&lt;br /&gt;
Le type de fichier renseigne si le fichier est un répertoire, un add-in, une e-Activity, une image, etc (''DT_DIRECTORY'' : répertoire, DT_FILE : fichier, ''DT_ADDIN_APP'' : add-in, ''DT_EACT'' : e-Activity, ''DT_LANGUAGE'' : langue, DT_BITMAP : bitmap, ''DT_MAINMEM'': donnée de la mémoire principale, ''DT_TEMP'' : fichier temporaire, ''DT_DOT'' : répertoire courant, ''DT_DOTDOT'' : répertoire parent, ''DT_VOLUME'' : libellé de volume).&lt;br /&gt;
&lt;br /&gt;
Si la fonction réussit, elle retourne 0. Si elle ne trouve rien elle renvoie le code d'erreur ''IML_FILEERR_ENUMRATEEND'', une valeur négative.&lt;br /&gt;
&lt;br /&gt;
=== Bfile_FindNext ===&lt;br /&gt;
prototype : ''int Bfile_FindNext(const FONTCHARACTER *pathname,int *FindHandle,FONTCHARACTER *foundfile,FILE_INFO *fileinfo);&lt;br /&gt;
&lt;br /&gt;
Bfile_FindFirst() et Bfile_FindNext() sont des fonctions assez complexes, et très peu utilisées pour des jeux, mais elles peuvent s'avérer bien utiles. Elles permettent en effet de rechercher des fichiers dans un répertoire selon leur extension.&lt;br /&gt;
&lt;br /&gt;
Cette fonction permet de trouver le fichier suivant (dans l'ordre alphabétique) correspondant à la recherche dont le handle est passé en premier argument.&lt;br /&gt;
&lt;br /&gt;
En second argument vous passez un tableau de type FONTCHARACTER sur lequel sera stockée la chaîne de caractères contenant le nom du fichier (passage par pointeur). Prévoyez le stockage de 20 caractères (en content le 0 de fin de chaîne).&lt;br /&gt;
&lt;br /&gt;
Le dernier argument est la structure qui recevra les informations sur le fichier trouvé (passage par pointeur). cette structure est de la forme :&lt;br /&gt;
&lt;br /&gt;
''typedef struct tag_FILE_INFO {'' // déclarée dans &amp;quot;filebios.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''unsigned short id;'' // index du fichier&lt;br /&gt;
&lt;br /&gt;
''unsigned short type;'' // type de fichier&lt;br /&gt;
&lt;br /&gt;
''unsigned long fsize;'' // taille du fichier (en octets)&lt;br /&gt;
&lt;br /&gt;
''unsigned long dsize;'' // taille des données (le header du fichier non compté)&lt;br /&gt;
&lt;br /&gt;
''unsigned int property;'' // renseigne si le fichier est entièrement rempli (si oui, property=0)&lt;br /&gt;
&lt;br /&gt;
''unsigned long address;'' // adresse la plus haute des données&lt;br /&gt;
&lt;br /&gt;
''} FILE_INFO;''&lt;br /&gt;
&lt;br /&gt;
Le type de fichier renseigne si le fichier est un répertoire, un add-in, une e-Activity, une image, etc (''DT_DIRECTORY'' : répertoire, ''DT_FILE'' : fichier, ''DT_ADDIN_APP'' : add-in, ''DT_EACT'' : e-Activity, ''DT_LANGUAGE'' : langue, ''DT_BITMAP'' : bitmap, ''DT_MAINMEM'': donnée de la mémoire principale, ''DT_TEMP'' : fichier temporaire, ''DT_DOT'' : répertoire courant, ''DT_DOTDOT'' : répertoire parent, ''DT_VOLUME'' : libellé de volume).&lt;br /&gt;
&lt;br /&gt;
Si la fonction réussit, elle retourne 0. Si elle ne trouve rien elle renvoie le code d'erreur ''IML_FILEERR_ENUMRATEEND'', une valeur négative.&lt;br /&gt;
&lt;br /&gt;
=== Bfile_FindClose ===&lt;br /&gt;
prototype : ''int Bfile_FindClose(int FindHandle);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction ferme la recherche dont le handle est passé en argument. La valeur retournée est 0 en cas de réussite, et une valeur négative correspondant à un code d'erreur en cas d'échec.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fonctions de contrôle du clavier ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bkey_Set_RepeatTime ===&lt;br /&gt;
prototype : ''void Bkey_Set_RepeatTime(long FirstCount,long NextCount);''&lt;br /&gt;
&lt;br /&gt;
Voilà une fonction bien étrange pour commencer notre travail sur le clavier. Cette fonction définit les valeurs du temps de déclenchement entre l'appui d'une touche et le signal et le temps de répétition de la touche. Ces valeurs sont exprimées en 40èmes de secondes (temps en millisecondes divisé par 25). Traduction : votre calculatrice répète virtuellement l'appui d'une touche...&lt;br /&gt;
&lt;br /&gt;
La fonction ne retourne rien.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bkey_Get_RepeatTime ===&lt;br /&gt;
prototype : ''void Bkey_Get_RepeatTime(long *FirstCount,long *NextCount);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction récupère les valeurs du temps de déclenchement et du temps de répétition de la touche, définies par la fonction Bkey_Set_RepeatTime(). Ces valeurs sont exprimées en 40èmes de secondes (temps en millisecondes divisé par 25).&lt;br /&gt;
&lt;br /&gt;
La fonction ne retourne rien.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Bkey_Set_RepeatTime_Default ===&lt;br /&gt;
prototype : ''void Bkey_Set_RepeatTime_Default(void)''&lt;br /&gt;
&lt;br /&gt;
Cette fonction réinitialise les valeurs du temps de déclenchement et du temps de répétition de la touche. Elle ne reçoit aucun argument et ne retourne aucune valeur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GetKeyWait ===&lt;br /&gt;
prototype : ''int GetKeyWait(int sel,int time,int menu,unsigned int *keycode);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction attend l'appui d'une touche et donne sa valeur. On lui donne en premier argument le type d'attente (''KEYWAIT_HALTON_TIMEROFF'' : attend la première arrivée dans le buffer de touches, ''KEYWAIT_HALTOFF_TIMEROFF'' : si le buffer de touches est vide, la fonction se termine immédiatement, ''KEYWAIT_HALTON_TIMERON'' : si aucune touche n'est pressée avant la fin du timer spécifié par le second argument en secondes, la fonction se termine). Si le troisième argument a pour valeur 0, la touche MENU mène au menu principal, si elle a pour valeur 1 la onction retourne la valeur de la touche MENU. La quatrième argument est l'adresse de la variable sur laquelle stocker le code de la touche appuyée (passage par pointeur).&lt;br /&gt;
&lt;br /&gt;
La fonction retourne ''KEYREP_NOEVENT'' si elle s'est terminée immédiatement car le buffer de touches est vide, ''KEYREP_KEYEVENT'' si elle a enregistré un appui, et ''KEYREP_TIMEREVENT'' si le timer s'est terminé avant appui d'une touche.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GetKey ===&lt;br /&gt;
prototype : ''int GetKey(unsigned int *keycode);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction attend l'appui d'une touche et écrit sa valeur sur la variable donnée en argument (passage par pointeur). Elle retourne 1 pour une touche alphanumérique, et 0 pour une touche de contrôle. L'appui de MENU amène au menu principal, et SHIFT/AC éteint la calculatrice.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IsKeyDown ===&lt;br /&gt;
prototype : ''IsKeyDown(int keycode);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction retourne 1 si la touche dont on passe le code en argument est pressée, et 0 si elle ne l'est pas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IsKeyUp ===&lt;br /&gt;
prototype : ''IsKeyUp(int keycode);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction retourne 0 si la touche dont on passe le code en argument est pressée, et 1 si elle ne l'est pas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Fonctions de gestion du temps ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SetTimer ===&lt;br /&gt;
prototype : ''int SetTimer(int ID,int elapse,void (*hander)(void));''&lt;br /&gt;
&lt;br /&gt;
Une fonction pas si simple à utiliser mais TRES utile. Elle permet de lancer un timer qui appellera une fonction à intervalle régulier. En premier argument on passe l'ID du timer (de ''ID_USER_TIMER1'' à ''ID_USER_TIMER5''). En second argument le temps entre 2 répétitions (en millisecondes), et enfin la fonction à appeler. Attention, le passage de la fonction par pointeur s'effectue avec uniquement le nom de la fonction, sans parenthèses (un timer ne peut pas passer d'arguments).&lt;br /&gt;
&lt;br /&gt;
Si la fonction réussit, elle retourne l'ID du timer (utilité ?). Sinon elle retourne une valeur négative correspondant à un code d'erreur. Un échec survient si un paramètre est mauvais ou si le timer est utilisé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== KillTimer ===&lt;br /&gt;
prototype : ''int KillTimer(int ID);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction arrête le timer dont on donne l'ID en argument (de ''ID_USER_TIMER1'' à ''ID_USER_TIMER5''). Elle retourne l'ID en cas de succès (utilité ?), ou un code d'erreur correspondant à une valeur négative en cas d'échec (c'est-à-dire si l'ID ne correspond à aucun timer en marche).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Sleep ===&lt;br /&gt;
prototype : ''void Sleep(int millisecond);''&lt;br /&gt;
&lt;br /&gt;
Cette fonction est TRES utilisée et essentielle pour contrôler la vitesse d'exécution d'un programme. Elle met la calculatrice en pause durant le temps spécifié en argument en millisecondes. Elle ne retourne rien.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SetQuitHandler ===&lt;br /&gt;
prototype : ''void SetQuitHandler(void (*callback)(void));''&lt;br /&gt;
&lt;br /&gt;
Cette fonction définit la fonction à appeler juste avant de quitter l'add-in. C'est utile lorsque vous voulez vérifier que vous n'avez laissé aucune fuite de mémoire, ou juste dire au revoir au joueur. Attention, le passage de la fonction par pointeur s'effectue avec uniquement le nom de la fonction, sans parenthèses (on ne peut pas ici passer d'arguments). La fonction ne retourne rien.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sources et droits ==&lt;br /&gt;
&lt;br /&gt;
Cette page a été écrite par louloux sous licence libre : piochez ce que vous voulez mais mettez pas de bêtises dessus.&lt;br /&gt;
&lt;br /&gt;
La page a été écrite à partir de la documentation Casio officielle et de mes tests et connaissances personnels.&lt;br /&gt;
&lt;br /&gt;
Merci à Pierrotll pour ses éclairages par rapport à plusieurs fonctions.&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Graph 75/85/95]]&lt;/div&gt;</summary>
		<author><name>Kevkevvtt</name></author>	</entry>

	</feed>