#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 |