Minitel 1B (Alcatel Telic) : Documents techniques

Le microcontrôleur 8051/8052 (de A. Oumnad, en français).
Je retiens qu’il y a la possibilité de shunter la ROM interne du 8052 et de rechercher des instructions dans une EEPROM externe (broche 31 : EA External Access). D’ailleurs sur la carte-mère du Minitel, il y a 32 broches prévues pour une extension (CO06).
Atmel 8051 Microcontrollers Hardware Manual
8051 Microcontroller Instruction Set

Le processeur graphique (EF9345) est le même que celui du Matra Alice 32k, Matra Alice 90, Philips VG5000.
Processeur semi-graphique EF9345 (datasheet)

Remarque : Sous Debian 10, on trouve dans les dépots MCU 8051 IDE qui est un environnement de développement intégré pour les microcontrôleurs basés sur le 8051. Pour l’installer : sudo apt-get install mcu8051ide.

Cours / Tutoriels :
Cours-TP 8051 (de Christian Dupaty)

Le clavier du Minitel 1B (Alcatel Telic)

Pour accéder à l’intérieur du clavier, j’ai coupé au cuter les morceaux de plastique sertis :

Une fois qu’on a appuyé sur une touche, le retour de celle-ci à sa position initiale se fait grâce à un aimant en forme de rondelle :

Le mapping du clavier (fait par MortalKastor) :

Le câblage sur la carte mère :
Composants : Texas Instruments SN74LS156N / MHS Intel P8052AH
Le 74LS156 permet de faire un décodeur 3 vers 8.

Correspondance entre les repères sur la nappe (0..F) et ceux sur le connecteur (1..17), ce qui permet de déterminer les lignes et colonnes de la matrice du clavier :

On en déduit la matrice du clavier du Minitel 1B :

Puissance 4 en Python : Nouvelle compétition

L’objectif était de mettre au point une intelligence artificielle (IA) la meilleure possible pour jouer à Puissance 4, sans descendre en profondeur dans un arbre comme avec l’algorithme minimax ou alpha-bêta. Je pense être très près du but avec IA15 bien que l’IA en question soit encore facile à battre pour un humain. Va désormais venir le temps des arbres, puis de l’apprentissage…

Présentation des IA :

Codage de la stratégie :

H veut dire Hasard
P veut dire Poids des cases (il y a plus de possibilités d’alignements pour certaines cases)
AX veut dire Alignement de X pions (l’IA essaye d’aligner X pions ; les alignements « troués » de 2 ou 3 pions sont pris en compte)
BX veut dire Blocage de X pions (l’IA essaye d’empêcher l’adversaire d’aligner X pions ; les alignements « troués » de 2 ou 3 pions sont pris en compte)

Le codage des IA en compétition est :

IA0 : Priorité H
IA1 : Priorité PH
IA12 : Priorités A4PH / A3PH / A2PH / PH
IA13 : Priorités B4PH / B3PH / B2PH / PH
IA14 : Priorités A4PH / B4PH / A3PH / B3PH / A2PH / B2PH / PH
IA15 : Priorités A4PH / B4PH / A3PH / B3PH / B2PH / A2PH / PH
IA16 : Priorités A4PH / B4PH / B3PH / A3PH / A2PH / B2PH / PH
IA17 : Priorités A4PH / B4PH / B3PH / A3PH / B2PH / A2PH / PH
IA18 : Priorités A4PH / B4PH / A2PH / B2PH / PH
IA19 : Priorités A4PH / B4PH / B2PH / A2PH / PH
IA20 : Priorités A4PH / B4PH / B3PH / B2PH / A3PH / A2PH / PH

Présentation des résultats :

Sur 1 million de parties, les résultats bruts sont :

IA0 / IA0 / Nulles : 499 231 / 498 300 / 2 469
IA1 / IA0 / Nulles : 878 716 / 121 257 / 27
IA12 / IA0 / Nulles : 970 480 / 29 520 / 0
IA13 / IA0 / Nulles : 967 884 / 18 236 / 13 880
IA14 / IA0 / Nulles : 996 952 / 3 034 / 14
IA15 / IA0 / Nulles : 995 524 / 4 369 / 107
IA16 / IA0 / Nulles : 993 656 / 6 191 / 153
IA17 / IA0 / Nulles : 993 568 / 5 938 / 494
IA18 / IA0 / Nulles : 992 092 / 7 886 / 22
IA19 / IA0 / Nulles : 988 123 / 11 735 / 142
IA20 / IA0 / Nulles : 991 937 / 7 195 / 868

IA15 / IA0 / Nulles : 995 524 / 4 369 / 107
IA15 / IA1 / Nulles : 979 122 / 0 / 20 878
IA15 / IA12 / Nulles : 1 000 000 / 0 / 0
IA15 / IA13 / Nulles : 724 198 / 266 561 / 9 241
IA15 / IA14 / Nulles : 1 000 000 / 0 / 0
IA15 / IA15 / Nulles : 500 000 / 500 000 / 0
IA15 / IA16 / Nulles : 1 000 000 / 0 / 0
IA15 / IA17 / Nulles : 1 000 000 / 0 / 0
IA15 / IA18 / Nulles : 771 989 / 228 011 / 0
IA15 / IA19 / Nulles : 746 678 / 0 / 253 322
IA15 / IA20 / Nulles : 723 979 / 266 779 / 9 242

Commentaires :

Si on compare IA14 et IA15, il n’y a qu’une seule inversion dans le codage de la stratégie : on passe de A2PH / B2PH pour IA14 à B2PH / A2PH pour IA15 et l’effet est radical : IA15 écrase IA14. De même, si on compare IA15 et IA17, on passe de A3PH / B3PH pour IA15 à B3PH / A3PH pour IA17 et l’effet est radical : IA17 est écrasée par IA15.

Code source sur GitHub.

Puissance 4 en Python : Les alignements « troués » sont désormais pris en compte

Je viens de reprendre mon travail sur Puissance 4 après 9 mois d’interruption. La mise à jour qui intègre cette fois les alignements « troués » est sur GitHub. Une nouvelle compétition entre IA sera lancée très bientôt.

J’ai rajouté 9 nouvelles IA avec les correspondances suivantes :
IA12 (alignements troués) / IA2 (alignements pleins)
IA13 (alignements troués) / IA3 (alignements pleins)
IA14 (alignements troués) / IA4 (alignements pleins)
IA15 (alignements troués) / IA5 (alignements pleins)
IA16 (alignements troués) / IA6 (alignements pleins)
IA17 (alignements troués) / IA7 (alignements pleins)
IA18 (alignements troués) / IA8 (alignements pleins)
IA19 (alignements troués) / IA9 (alignements pleins)
IA20 (alignements troués) / IA10 (alignements pleins)

Sur 1 000 parties, IA20 contre IA10 (la meilleure jusqu’ici) donne 957 victoires à IA20, 0 victoires à IA10 et 43 parties nulles. Dans la suite, je laisserai donc tomber les stratégies basées sur les alignements pleins.

Calculatrice NumWorks et Debian 10

Sous Debian 10, pour mettre à jour la calculatrice NumWorks, il faut au préalable installer sur son ordinateur le fichier 50-numworks-calculator.rules dans le répertoire /etc/udev/rules.d/.

Dans la console, on tape :
wget https://workshop.numworks.com/files/drivers/linux/50-numworks-calculator.rules
sudo mv 50-numworks-calculator.rules /etc/udev/rules.d

La mise à jour se fait depuis le Workshop.