Le système de repérage des cordonnées spatiotemporelles du Tardis a été mis à jour depuis le vieillissant firmware 1.0.
Le principe reste le même, mais on dispose d'un peu plus d'instructions :
PUSH, ADD, MUL, WRITE, NOP, POP, SWAP, CMPSWAP, MOVE qui
opèrent sur une structure composée de deux piles ne contenant que des
entiers compris entre 0 et 255. Un pointeur indique à chaque instant sur quelle
pile on opère (le pointeur peut désigner l'une ou l'autre des deux piles).
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.POP, représentée par un carré bleu (0, 0, 220), retire la
valeur en sommet de pile.SWAP, représentée par un carré vert
(0, 255, 0), bascule le pointeur de pile sur l'autre pile.CMPSWAP, représentée par un carré jaune (255, 255, 0),
bascule le pointeur de pile sur l'autre pile à condition que le sommet de la pile
actuelle soit pair, et ne fait rien dans le cas contraire.MOVE, représentée par un carré bleu (0, 0, 210),
déplace au sommet de la pile actuelle, la valeur située au sommet de l'autre pile.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 :

Les piles (on les appelle ici A et B) sont initialement vides, et le
pointeur de pile est initialement sur A. Le programme précédent représente les
instructions : PUSH 12, PUSH 134, CMPSWAP, PUSH 7, MOVE, ADD,
WRITE, SWAP, MOVE, ADD, WRITE, NOP
A contient [12, 134] et la
pile B est vide, le pointeur de pile est sur A ;CMPSWAP, puisque 134 est pair, le pointeur de pile passe sur la pile
B ;PUSH 7, la pile B contient maintenant [7], la pile A contient
toujours [12, 134], le pointeur est sur B ;MOVE, le sommet de la pile A passe sur la pile B, la pile A
contient maintenant [12], la pile B contient [7, 134] ;ADD, la pile B contient [141] ;WRITE écrit 141 ;SWAP, le pointeur de pile repasse sur A ;MOVE déplace le sommet de la pile B sur A, B est maintenant vide, et
A contient [12, 141] ;ADD, la pile A contient 153 ;153 est écrite.Le programme précédent affiche donc 141 153.
Dans la version 2.0 du firmware, le programme ne doit pas simplement donner les instructions de l'année. Précisément, le programme doit écrire :
a et b (l'année vaudra (256 x a + b) - 10
000 comme dans la version 1.0 du firmware ;Il y aura donc 10 entiers entre 0 et 255.
Par exemple, si le programme produit les nombres :
1 46 34 1 0 23 19 3 46 247, alors le Tardis devrait apparaître aux alentours
de 46°34' (soit 46.57°) de latitude Nord (car on a un 1 au début), et 0°23'
(soit 0.38°) de longitude Est (car le quatrième nombre est un 1), c'est à dire
pas loin d'ici, si vous êtes en train de participer à c0d1ngUP. Et le Tardis
devrait faire son apparition le 19 mars (19 3) 2023 (46 x 256 + 247 - 10 000).
Restez sur le qui-vive...
Pour son prochain voyage, le Docteur a vraiment choisi des valeurs au hasard, et voici le programme qu'il compte fournir au Tardis :

Pour valider le défi, donnez la ville de destination et l'année (en
chiffres). Dans l'exemple précédent (1 46 34 1 0 23 19 3 46 247), il aurait fallu indiquer Poitiers 2023.
Ne donnez pas les coordonnées géographique ou l'horaire, simplement la ville et
l'année.
