Description du langage .inc
Commentaire: commence par un caractère % jusqu'à la fin de la ligne Ligne vide: non traitée Espace: réduit à un espace entre les mots clés. Include: %% include file.inc Type: Numérique: entier 32 bits signé (123, -40, 0x12bc) Caractère: 'a', '\033', '\x1b', '\u20ac' (0 à 0x1fffff) bool: type retourné par les opérateurs logiques booléens les mots clés "true" et "false" ne sont pas définis par défaut, mais on peut les définir avec l'expression suivante: /true 0 0 eq def /false 0 0 ne def Chaîne UTF-8 (pointeur): "test\n" (Notation: \uXXXX ou \UXXXXXXXX Chaîne: pointeur Tableau: pointeur [ element1 element2 element3 ] Note: lors de l'instanciation d'un tableau, il faut libérer la mémoire avec free Astuce: "[" retourne le pointeur vers le premier élément. /unTableau [ obj1 obj2 obj3 ] def unTableau free Le programme doit retourner une pile vide ou la valeur booléene true en haut de la pile. Évènements (callback): KeyEvent Called if a key is pressed. MenuInit Should draw boot menu. InfoBoxInit Show message box (e.g. error messages). InfoBoxDone Hide message box. ProgressInit Initialize kernel load progress bar (syslinux/isolinux only). ProgressDone Hide progress bar. ProgressUpdate Advance progress bar. PasswordInit Show password dialog. PasswordDone Hide password dialog. Timeout Timeout counter; called every 18.3th second until timeout occurs. Timer Called every 18.3th second regardless of timeout. Définition de code: { code } Interprète le code jusqu'à l'accolade fermante, et ensuite exécute le code. Macro/constante Nom: commence par un /, suivi de n'importe quoi sauf un espace. Assignation hexadécimal: /nomMacro 0x0000001b def /nomMacro 0x020c def numérique: /nomMacro 0 def Array: [ var1 var2 var3 ] Incompris: /CapsLock { 0x417 cvp getbyte 0x40 and 0 ne } def /bootloader sysconfig getbyte def /lilo bootloader 0 eq def /syslinux bootloader 1 eq def /grub bootloader 2 eq def /boot_failsafe sysconfig 3 add getbyte def /bootdrive sysconfig 5 add getbyte def /mediatype sysconfig 2 add getbyte def /biosmem sysconfig 20 add getdword def /sectorsize 1 sysconfig 1 add getbyte 20 min % max. 1 MB dup 0 eq { pop 9 } if shl def /getinfo { 2 shl sysconfig 12 add exch add getdword } def /true 0 0 eq def /false 0 0 ne def /.value { t_int settype } def /.undef 0 t_none settype def /.end 0 t_end settype def macros: /nomfonction { code } def correspondance C: #define nomfonction code Structure: Liste de fonctions: int 64bit : retourne 1 si la machine est 64 bits int (var1 var2 and) : retourne le résultat d'un "et binaire" avec var1 et var2. int (var1 var2 shr) : retourne le "shift right" de var2 (entier) bits bool(var1 var2 eq) : retourne vrai si var1 est égal à var2 bool(var1 var2 ne) : retourne vrai si var1 n'est pas égal à var2 var1 var1 (var1 dup) : duplique la variable de tête de la pile (TOS) var1 var2 var3 put : assigne la valeur "var3" dans l'indice var2 du tableau var1 et retourne le tableau. // C: var1[var2] = var3; var1 var2 get : retourne la valeur du tableau var1 à l'indice var2 // C: var1[var2] var1 var2 rot : var2 var1 varTableau free : désalloue un tableau assigné par une définition [] Liste de fonctions internes: ptr (int1 _readsector) : retourne un pointeur vers un buffer static à la position int1. Condition: var1 { code1 } if : exécute "code1" si var1 est vrai. var1 { code1 } { code2 } elseif : exécute "code1" si var1 est vrai, sinon exécute "code2". Boucle: arg1 arg2 { "code1" } forall : exécute pour tous les arguments avant les instructions "code1" { } loop : boucle tant que "exit" n'est pas appelé