#Opcodes ^Instruction^ ^hex^dec^Commentaire^Signature^ |exec| |00|0|Appel d'une procédure|fun[S]S| |ret| |01|1|Retour|fun[S I]I| |intb|1|02|2|push byte|fun[u0]u0| |int|4|03|3|push integer|fun[u0]u0| |nil| |04|4|push nil (0xffffffff)|fun[]I| |drop| |05|5|drop top of stack|fun[I]S| |dup| |06|6|duplicate top of stack|fun[I]S| |getlocalb|1|07|7|empiler une variable locale, dont l'index tient sur 8 bits|fun[]I| |getlocal| |08|8|empiler une variable locale, dont l'index au sommet de la pile|fun[]I| |add| |09|9|ajouter les deux valeurs au sommet de la pile|fun[I]I| |sub| |0A|10|soustraire les deux valeurs au sommet de la pile|fun[S I I]S| |mul| |0B|11|multiplier les deux valeurs au sommet de la pile|fun[I I]I| |div| |0C|12|diviser les deux valeurs au sommet de la pile|fun[I]S| |mod| |0D|13|modulo des deux valeurs au sommet de la pile|fun[I I]I| |and| |0E|14|ET logique entre les bits des deux valeurs au sommet de la pile|fun[S I S I I I]S| |or| |0F|15|OU logique entre les bits des deux valeurs au sommet de la pile|fun[]I| |eor| |10|16|OU EXCLUSIF logique entre les bits des deux valeurs au sommet de la pile|fun[S]S| |shl| |11|17|décalage vers la gauche|fun[S]S| |shr| |12|18|décalage vers la droite|fun[S]S| |neg| |13|19|changement de signe de la valeur au sommet de la pile|fun[I I]I| |not| |14|20|inversion des bits de la valeur au sommet de la pile|fun[]I| |non| |15|21|inversion booléenne|fun[]I| |eq| |16|22|test d'égalité des deux valeurs au sommet de la pile|fun[S]S| |ne| |17|23|test de différence des deux valeurs au sommet de la pile|fun[I I]I| |lt| |18|24|test d'infériorité des deux valeurs au sommet de la pile|fun[fun[]I]fun[]I| |gt| |19|25|test de supériorité des deux valeurs au sommet de la pile|fun[]I| |le| |1A|26|test "inférieur ou égal" des deux valeurs au sommet de la pile|fun[I]S| |ge| |1B|27|test "supérieur ou égal" des deux valeurs au sommet de la pile|fun[]I| |goto|2|1C|28|déplacement du pointeur programme|fun[]I| |else|2|1D|29|déplacement conditionnel du pointeur programme en fonction de la valeur au sommet de la pile|fun[I]S| |mktabb|1|1E|30|crée une table dont la taille est constante et tient sur 8 bits|fun[I I]I| |mktab| |1F|31|crée une table dont la taille est au sommet de la pile|fun[I I]I| |deftabb|1|20|32|crée une table dont la taille est constante et tient sur 8 bits, en initialisant les valeurs à partir de la pile|fun[I]S| |deftab| |21|33|crée une table dont la taille est au sommet de la pile, en initialisant les valeurs à partir de la pile|fun[I]S| |fetchb|1|22|34|empile un élément d'un tuple, dont l'index est constant et tient sur 8 bits|fun[S]S| |fetch| |23|35|empile un élément d'un tuple, dont l'index est au sommet de la pile|fun[S]S| |getglobalb|1|24|36|empiler une variable globale, dont l'index tient sur 8 bits|fun[]I| |getglobal| |25|37|empiler une variable globale, dont l'index au sommet de la pile|fun[]I| |Secho| |26|38|affichage d'une chaîne de caractères sur la sortie standard|fun[S]S| |Iecho| |27|39|affichage d'un entier en décimal sur la sortie standard|fun[u0]u0| |setlocalb|1|28|40|écrit une variable locale, dont l'index tient sur 8 bits|fun[S]S| |setlocal| |29|41|écrit une variable locale, dont l'index est dans la pile|fun[S]S| |setglobal| |2A|42|écrit une variable globale|fun[S]S| |setstructb|1|2B|43|écrit un élément d'un tuple, dont l'index est constant et tient sur 8 bits|fun[S]S| |setstruct| |2C|44|écrit un élément d'un tuple, dont l'index est donné dans la pile|fun[S]S| |hd| |2D|45|premier élément d'une liste|fun[list u0]u0| |tl| |2E|46|liste privée de son premier élément|fun[list u0]list u0| |setlocal2| |2F|47|écrit une variable locale, dont l'index est dans la pile|fun[S]S| |store| |30|48|écrit un élément d'un tuple, dont l'index est donné dans la pile|fun[I]I| |call| |31|49|call subroutine|fun[S]S| |callrb|1|32|50|call subroutine|fun[S]S| |callr| |33|51|call subroutine|fun[S]S| |first| |34|52|empile le premier élément d'un tuple|fun[S]S| |time_ms| |35|53|heure en millisecondes|fun[]I| |tabnew| |36|54|création d'une table : valeur d'initialisation, taille de la table|fun[u0 I]tab u0| |fixarg| |37|55|réglage de l'environnement (limité à 4096 octets)|fun[S]S| |abs| |38|56|valeur absolue|fun[I]I| |max| |39|57|maximum|fun[I I]I| |min| |3A|58|minimum|fun[I I]I| |rand| |3B|59|nombre aléatoire sur 16 bits|fun[]I| |srand| |3C|60|définition de la graine du générateur aléatoire|fun[I]I| |time| |3D|61|heure en secondes|fun[]I| |strnew| |3E|62|création d'une nouvelle chaîne de caractères, dont la taille est passée en argument|fun[I]S| |strset| |3F|63|changement d'un caractère d'une chaîne : chaine, index, valeur|fun[S I I]S| |strcpy| |40|64|copie d'une sous-chaîne de caractère : chaîne destination, index destination, chaîne source, index source, longeur|fun[S I S I I]S| |strcmp| |41|65|Comparaison de deux chaînes de caractères|fun[S S]I| |strfind| |42|66|recherche d'une sous-chaîne dans une chaîne : chaîne, index, sous-chaîne, index, taille ; retourne l'index dans la chaîne (nil si non trouvé)|fun[S I S I I]I| |strfindrev| |43|67|recherche inversée d'une sous-chaîne dans une chaîne : chaîne, index, sous-chaîne, index, taille ; retourne l'index dans la chaîne (nil si non trouvé)|fun[S I S I I]I| |strlen| |44|68|taille d'une chaîne de caractères|fun[S]I| |strget| |45|69|retourne le n-ième caractères d'une chaîne (entier entre 0 et 255)|fun[S I]I| |strsub| |46|70|calcul d'une sous-chaîne : chaîne source, index source, taille|fun[S I I]S| |strcat| |47|71|concaténation de deux chaînes|fun[S S]S| |tablen| |48|72|taille d'une table|fun[tab u0]I| |strcatlist| |49|73|concaténation d'une liste de chaînes|fun[list S]S| |led| |4A|74|définition de la couleur d'une led : numéro de la led, couleur rgb 24 bits|fun[I I]I| |motorset| |4B|75|réglage d'un moteur : index moteur, direction|fun[I I]I| |motorget| |4C|76|lecture de la position d'un moteur : index moteur|fun[I]I| |button2| |4D|77|lecture de l'état du bouton de tête : 0=relâché|fun[]I| |button3| |4E|78|lecture de l'état de la molette : 0 = position maxi, 255= position butée|fun[]I| |playStart| |4F|79|lancement du player audio : inutilisé, callback de remplissage du buffer audio (paramètre : nombre d'octets attendus)|fun[I fun[I]I]I| |playFeed| |50|80|remplissage du buffer audio : chaîne, index, taille. Retourne le nombre d'octets copiés dans le buffer|fun[S I I]I| |playStop| |51|81|arrêt du player audio|fun[]I| |load| |52|82|lecture de la flash : chaîne destination, index, chaîne source (="conf.bin"), index source (=0), taille|fun[S I S I I]I| |udpStart| |53|83|Démarre un serveur udp : port udp ; retourne un id de socket|fun[I]I| |udpCb| |54|84|Définit la callback udp, dont les arguments sont : id de socket, trame reçue, ip émetteur|fun[fun[I S S]I]fun[I S S]I| |udpStop| |55|85|Stoppe un serveur udp : port udp|fun[I]I| |udpSend| |56|86|Envoi d'une trame udp : id de socket, ip destinataire, port destinataire, chaîne, index, longueur|fun[I S I S I I]I| |gc| |57|87|provocation du gc|fun[]I| |tcpOpen| |58|88|Crée une connexion tcp : ip destinataire, port destinataire ; retourne un id de socket|fun[S I]I| |tcpClose| |59|89|Ferme une connexion tcp : id de socket|fun[I]I| |tcpSend| |5A|90|Envoi d'une trame tcp : id de socket, ip destinataire, port destinataire, chaîne, index, longueur ; retourne l'index du prochain octet à transmettre|fun[I S I I]I| |tcpCb| |5B|91|Définit la callback tcp, dont les arguments sont : id de socket, événement(-1 : erreur/fin, 2 : accept (dans ce cas, le troisième argument est l'id de la nouvelle socket), 0 : write, 1 : read), trame reçue|fun[fun[I I S]I]fun[I I S]I| |save| |5C|92|sauvegarde dans la flash : chaîne source, index source, chaîne destination (="conf.bin"), index destination (=0), taille|fun[S I S I I]I| |bytecode| |5D|93|chargement d'un nouveau bytecode|fun[S]S| |loopcb| |5E|94|définition de la callback principale (appelée 20 fois par seconde)|fun[fun[]I]fun[]I| |Iecholn| |5F|95|affichage d'un entier en décimal sur la sortie standard, suivie d'un retour à la ligne|fun[u0]u0| |Secholn| |60|96|affichage d'une chaîne de caractères sur la sortie standard, suivie d'un retour à la ligne|fun[S]S| |tcpListen| |61|97|Démarre un serveur tcp : port tcp ; retourne un id de socket|fun[I]I| |envget| |62|98|lecture de l'environnement|fun[]S| |envset| |63|99|réglage de l'environnement (limité à 4096 octets)|fun[S]S| |sndVol| |64|100|définition du volume du player audio|fun[I]I| |rfidGet| |65|101|lecture du tag rfid : retourne "nil" si aucun, "ERROR" si erreur, id de tag sinon|fun[]S| |playTime| |66|102|retourne le temps de décodage|fun[]I| |netCb| |67|103|Définition de la callback réseau, dont les arguments sont : trame, mac émetteur|fun[fun[S S]I]fun[S S]I| |netSend| |68|104|Envoi d'une trame réseau : chaîne source, index, taille, mac destination, xxx,xxx|fun[S I I S I I]I| |netState| |69|105|Retourne l'état de la connexion|fun[]I| |netMac| |6A|106|Retourne l'adresse mac de l'hôte (chaîne de 6 caractères)|fun[]S| |netChk| |6B|107|Calcul le checksum IP : chaîne, index, taille, checksum de départ|fun[S I I I]I| |netSetmode| |6C|108|Demande la passage dans un mode réseau particulier|fun[I S I]I| |netScan| |6D|109|Effectue un scan réseau : SSID cherché (nil : tous) ; retourne une liste [ssid mac bssid rssi channel rateset encryption]|fun[S]list[S S S I I I I]| |netAuth| |6E|110|Procédure d'authentification : résultat du scan, mode d'authentification, style d'authentification, clef|fun[[S S S I I I I] I I S][S S S I I I I]| |recStart| |6F|111|lancement de l'enregistreur audio : fréquence (8000), gain (0=automatique), callback (paramètre : échantillon enregistré)|fun[I I fun[S]I]I| |recStop| |70|112|arrêt de l'enregistreur audio|fun[]I| |recVol| |71|113|calcul du volume : chaîne, index|fun[S I]I| |netSeqAdd| |72|114|Mise à jour d'un numéro de séquence TCP : numéro initial, taille paquet|fun[S I]S| |strgetword| |73|115|Lit un mot 16 bits dans un header IP : chaîne source, index|fun[S I]I| |strputword| |74|116|Ecrit un mot 16 bits dans un header IP : chaîne source, index, valeur|fun[S I I]S| |atoi| |75|117|Conversion d'une chaîne en base 10 vers un entier|fun[S]I| |htoi| |76|118|Conversion d'une chaîne hexadécimale vers un entier|fun[S]I| |itoa| |77|119|Conversion d'un entier vers une chaîne en base 10|fun[I]S| |ctoa| |78|120|Conversion d'un code ascii vers une chaîne d'un seul caractère|fun[I]S| |itoh| |79|121|Conversion d'un entier vers une chaîne en hexadécimal|fun[I]S| |ctoh| |7A|122|Conversion d'un caractère vers une chaîne en hexadécimal de taille 2|fun[I]S| |itobin2| |7B|123|Conversion d'un entier vers une chaîne de deux caractères|fun[I]S| |listswitch| |7C|124|Recherche d'un élément quelconque dans une liste d'associations|fun[list[u0 u1] u0]u1| |listswitchstr| |7D|125|Recherche d'une chaîne dans une liste d'associations|fun[list[S u1] S]u1| |sndRefresh| |7E|126|force l'appel à la routine de gestion du chip audio|fun[]I| |sndWrite| |7F|127|Ecrit un registre du chip audio : numéro de registre, valeur|fun[I I]I| |sndRead| |80|128|Lit un registre du chip audio : numéro de registre|fun[I]I| |sndFeed| |81|129|Ecrit directement dans le buffer du chip audio : chaîne, index, taille|fun[S I I]I| |sndAmpli| |82|130|Définit l'état de l'ampli : 1=on, 0=off|fun[I]I| |corePP| |83|131|Retourne le pointeur de pile|fun[]I| |corePush| |84|132|Forcer l'empilement d'une valeur|fun[u0]u0| |corePull| |85|133|Forcer le dépilement d'une valeur|fun[I]I| |coreBit0| |86|134|Modifie le bit 0 de la valeur située au sommet de la pile|fun[u0 I]u0| |tcpEnable| |87|135|Place une socket tcp en pause : id de socket, mode (1=pause, 0=normal)|fun[I I]I| |reboot| |88|136|Force le reboot : deux valeurs magic 0x0407FE58 0x13fb6754|fun[I I]I| |strcmp| |89|137|Comparaison de deux chaînes de caractères|fun[S S]I| |adp2wav| |8A|138|Conversion adp vers wav : chaîne destination, index destination, chaîne source, index source, longueur|fun[S I S I I]S| |wav2adp| |8B|139|Conversion wav vers adp : chaîne destination, index destination, chaîne source, index source, longueur|fun[S I S I I]S| |alaw2wav| |8C|140|Conversion alaw/mulaw vers wav : chaîne destination, index destination, chaîne source, index source, longueur, type (xxx)|fun[S I S I I I]S| |wav2alaw| |8D|141|Conversion alaw/mulaw vers wav : chaîne destination, index destination, chaîne source, index source, longueur, type (xxx)|fun[S I S I I I]S| |netPmk| |8E|142|Calcul de la clef Pmk (Wpa) : ssid, clef wpa|fun[S S]S| |flashFirmware| |8F|143|Flashage du firmware : chaîne, deux valeurs magic 0x13fb6754 0x0407FE58|fun[S I I]I| |crypt| |90|144|Cryptage simple : chaîne, index, taille, clef, delta ; retourne la nouvelle clef|fun[S I I I I]I| |uncrypt| |91|145|Décryptage simple : chaîne, index, taille, clef, delta ; retourne la nouvelle clef|fun[S I I I I]I| |netRssi| |92|146|Retourne le Rssi moyen (puissance de réception)|fun[]I| |rfidGetList| |93|147|lecture d'une liste de tags rfid|fun[] list S| |rfidRead| |94|148|lecture d'un bloc de données d'un tag : id du tag, numéro du bloc ; retourne les données (chaîne de 4 octets binaires)|fun[S I]S| |rfidWrite| |95|149|écriture d'un bloc de données d'un tag : id du tag, numéro du bloc, donnée à écrire (chaîne de 4 octets) ; retourne 0 si ok|fun[S I S]I|