Le Tardis est équipé d'un interpréteur un peu particulier pour qu'on lui communique des dates.
Dans la version 1.0 du firmware, les programmes sont fournis sous forme d'une série de petits carrés de
couleur, représentée par le codage (rouge, vert, bleu).
Chaque carré de couleur vaut pour une des instructions suivantes : PUSH
, ADD
, MUL
, WRITE
, NOP
qui opèrent sur une structure de pile ne contenant que des entiers compris entre 0 et 255.
PUSH v
, représentée par un carré de couleur rouge (v, 0, 0)
, permet de placer
la valeur v
, qui doit être comprise entre 1 et 255, au sommet de la pile.ADD
, représentée par un carré de couleur bleu (0, 0, 230)
, permet de retirer les
deux éléments en sommet de pile, de les additionner, puis de replacer le résultat en sommet de pile.MUL
, représentée par un carré de couleur bleu (0, 0, 240)
, permet de retirer les
deux éléments en sommet de pile, de les multiplier, puis de replacer le résultat en sommet de pile.WRITE
, représentée par un carré de couleur gris clair (200, 200, 200)
, permet d'afficher
la valeur située au sommet de la pile.NOP
, représentée par un carré noir (0, 0, 0)
, ne fait rien.Toutes les opérations sont faites modulo 256.
Les carrés se lisent sur une image, de gauche à droite, puis de haut en bas, comme un livre européen.
Voici un exemple :
Ce programme représente, dans cet ordre, les instructions PUSH 12
, PUSH 134
, PUSH 60
, PUSH 7
, MUL
, ADD
, WRITE
, ADD
, WRITE
.
La pile est initialement vide, au début de l'interprétation du programme.
Après les 4 premières instructions, la pile contiendra [12, 134, 60, 7]
(le sommet de la pile est ici à droite).
Après l'opération MUL
, la pile contiendra [12, 134, 164]
(puisque (60 x 7) modulo 256 donne 164).
Après l'opération ADD
, la pile contiendra [12, 42]
(puisque (134 + 164) modulo 256 donne 42).
Puis l'opération WRITE
affiche le sommet de pile, c'est à dire 42
. Après la seconde opération ADD
, la pile ne contiendra plus
que 54
, qui sera finalement affiché par WRITE
.
Le programme de l'image précédente affiche donc : 42 54
Ces deux nombres a
et b
sont ensuite combinés pour former une année (qui peut être négative ou positive) :
année ← (256 x a + b - 10000)
. Dans l'exemple précédent, le Docteur aurait donc été envoyé en 806 (256 x 42 + 54 - 10000),
peut-être à temps pour assister au début du règne de l'empereur du Japon Heizei.
Fidèle à son habitude, le Docteur a barbouillé des carrés au hasard, histoire de ne pas trop en savoir à l'avance. Pour valider le défi, déterminez en quelle année se retrouvera le Docteur avec le programme ci-dessous, et fournissez cette année pour valider le défi :