Après avoir passé une commande pour le module processeur à base de STM32H7 chez Waveshare ainsi qu'une autre commande pour le circuit imprimé directement chez l'éditeur de la revue australienne Silicon Chip, j'ai reçu ces deux éléments de base quelques jours plus tard :
Il n'y a plus maintenant qu'à se procurer l'ensemble des autres composants à placer sur le circuit imprimé principal pour être en mesure de démarrer la construction de cet ordinateur fort prometteur.
Parce que, comme il est indiqué sur la couverture du magazine ci-dessus, il s'agit d'un ordinateur que l'on peut monter soi-même, certes, mais surtout que l'on peut programmer soi-même. Même s'il s'agit du langage Basic qui est utilisé ici, la puissance de ce langage adapté à ce type de matériel (j'en sais quelque chose, j'ai eu l'occasion de tester les versions précédentes sur des processeurs pourtant moins rapide) offre un potentiel d'expériences incroyables, notamment dans l'univers de l'embarqué.
Avec ce type de matériel, nous sommes loin de la culture de l'ignorance perpétuelle telle qu'imposée depuis des décennies par microsoft (à son unique bénéfice), mais bien d'un matériel en mesure de servir le potentiel créatif de tout un chacun. Au jeune qui souhaiterait se lancer dans l'aventure, qu'il ignore les programmes archaïques et propagandistes de l'Education Nationale, et qu'il commence donc par quelque chose d'un peu plus sérieux et utile que ça :
Exemple de robot et de son langage de (non) programmation associé que l'on retrouve aujourd'hui dans les programmes de l'Education Nationale.
Au début des années 80, il existait le langage Logo, utilisable sur une base matérielle présentée sous la forme d'une tortue :
J'ai du mal à imaginer les générations de programmeurs de talent qui ont fait de la france la première puissance informatique mondiale. Bien au contraire, mis à part quelques ingénieurs de haute volée officiant dans des domaines extrêmement pointus tel que l'avionique, le pays est devenue une colonie numérique, occupée par les puissances étrangères jusqu'à aujourd'hui majoritairement américaines, très prochainement Chinoises!
Heureusement, en ce qui me concerne j'ai débuté en assembleur sur Z80 puis en basic sur ZX81. Cela n'inscrit pas du tout dans l'esprit le même rapport à la machine. Cela ne m'a pas réussi professionnellement, mais au moins cela me permet d'appréhender le monde technologique qui m'entoure ainsi que la propagande désastreuse et bien évidemment mensongère dont en font les politiques intellectuellement corrompus!
La saga des Micromite/Maximite a commencé il y a maintenant neuf ans, en 2011. Ce n'est que quelques années plus tard, en 2014 c'est à dire quasiment au tout début de ce blog que j'en ai parlé, en septembre 2014.
A cette époque, il existait le Maxite de base et le Maximite couleur :
Le Maximite monochrome.
Le Maximite couleur.
Plus tard, sont arrivés les Micromite, plus dépouillés mais toujours avec la même puissance de traitement. J'avais d'ailleurs réalisé une carte d'étude permettant un emploi aisé de ce type de processeur :
La caractéristique principale de la famille Micromite/Maximite est d'utiliser le langage BASIC comme moyen de programmation. Certes, cela peut faire sourire puisqu'il s'agit d'un langage quasiment oublié pour cause d'obsolescence programmée, de manque de performance et de mauvaise réputation puisque associé irrémédiablement aux machines du début des années 80.
Impossible en effet de prendre au sérieux un langage de programmation collant aux touches du ZX80 :
Source Wikipedia.
De mon avis personnel, le langage Basic n'est ni meilleur ni pire que n'importe quel autre langage. Le PHP ressemble à mon sens exactement au Basic... en pire! Il est juste particulièrement adapté à certaines situations.
Basic est particulièrement intéressant pour l'apprentissage de la programmation. Il est rapide à comprendre et à maîtriser et permet donc une mise en situation rapide. Il peut être totalement 'non structuré', ce qui permet une mise en évidence immédiate de l’intérêt de structurer son source et par la-même ses pensées. Et surtout, il permet de passer rapidement d'une idée à un prototype en autorisant des tests d' algorithmes sans devoir partir sur du matériel compliqué et des langages comme l'assembleur ou le C++, et sans avoir à tenter de pénétrer les arcanes insondables de la programmation sous Windows.
Evidemment, Basic implémenté sur une 'petite' machine sera forcément interprété, donc lent. Oui mais... Dès la fin des années 80, des processeurs rapides permettaient déjà une exécution plus véloce des programmes écrits par exemple sur un Intel 8052AH Basic :
en remplaçant ce circuit par un équivalent Dallas environ 10 fois plus rapide à 33MHz:
Ces solutions ne permettaient cependant pas l'écriture de gros programmes du au fait de sévères limitations matérielles : peu d'entrées/sorties, pas de sortie vidéo, pas de sortie son etc... Hormis le Visual Basic proposé par Microsoft sous Windows, dès le début des années 90 ce langage était définitivement abandonné.
L'utilisation de processeur de type PIC permetta à Geoff Graham de proposer en 2011 son 'fameux' Maximite. L'appareil était équipé d'un port d’extension permettant la connexion de diverses interfaces, d'une sortie vidéo certes limitée mais permettant la-aussi une interactivité facilité avec l'utilisateur, ainsi qu'un port clavier de type PS2. Cette 'machine' ne peut s'apparenter aux Arduinos qui restent des matériels embarqués nécessitant un ordinateur sur lequel est installé le système de développement et les outils de téléchargement du programme vers la carte. De plus, Arduino se programme en C++ édulcoré (la majorité des caractéristiques objets du langage est passée sous silence). Sauf pour ceux désireux de développer une librairie particulière qui devront se conformer à sa mise à disposition sous forme de classe.
A l'époque, j'avais effectué un rapide test de performances du Basic interprété fonctionnant sur un PIC32MX à 40MHz par rapport à un SHARP PC1500A, une machine considérée comme professionnelle à l'époque.
2 200FF en 1984 soit 335€ ou dit autrement, plus d'un demi SMIC en 1984 (~550€)
Une simple boucle comptant de 0 à 100 000. J'avais obtenue ce résultat...
Le Basic du Micromite était donc environ 130 fois plus rapide que celui du SHARP.
Bien que les Micromites/Maximites n'aient pas vraiment rencontré de succès dans nos contrées, j'avais cependant nourri quelques espoirs de voir la machine décoller avec l'annonce par Microchip d'un successeur au PIC32MX, à savoir le PIC32MZ. Ce successeur de la famille MX offrait un nombre plus important de périphériques et surtout une vitesse d'exécution plus élevée.
Mais hélas, depuis 2015 il ne se passait plus grand chose autour de ce système, hormis la publication de nouvelles versions du Basic.
Et puis, il y a quelques jours de cela est apparu l'annonce du Color Maximite 2. Cette fois, la machine est basée sur un processeur ARM et les caractéristiques sont impressionnantes (informations source) :
Processor
32-bit ARM Cortex-M7 at up to 480MHz with 2MB
of flash. 1MB on-chip RAM plus 8MB off-chip RAM for BASIC variable storage
and video pages.
BASIC
Built in full featured BASIC interpreter with
double precision floating point, 64-bit integers and string variables, long
variable names, arrays of floats, integers or strings with multiple
dimensions, extensive string handling and user defined subroutines and
functions
Program Editor
Full screen editor includes colour coded
syntax, search and copy, cut and paste.
Memory
516KB for the BASIC program, enough for large
complex programs (typically 25,000 lines or more). 5MB RAM for
variables, arrays and buffers
Speed
Typically executes programs at 270,000 lines
per second.
Display
Colour VGA output with VGA standard timing.
VGA Resolutions
800 x 600 (default), 640 x 400, 320 x 200, 480
x 432 and 240 x 216
The last two emulate the resolutions available on the original Colour
Maximite.
Graphics Colours
8-bit (256 colours; default), 12-bit (4096
colours plus 16 levels of transparency) or 16-bit (65,536 colours).
Keyboard
Standard USB keyboard with either US or UK
layout. Can be a wireless keyboard (USB).
Storage
SD Cards up to 128GB formatted in FAT16, FAT32
or exFAT
Graphics
Set pixels, draw lines, boxes, circles,
etc. Features include BLIT, Sprites, multiple video layers (with
transparency). Rotate and scale images.
Images
Load images in BMP, JPG, PNG and GIF
(including animated) formats. Images can be loaded anywhere on the
screen and be scaled and rotated.
Audio
Stereo audio output for amplified speakers.
Can play WAV, FLAC and MP3 files, computer generated music (MOD format),
robot speech and sound effects as well as generate precise sine wave tones
Compatibility
Generally compatible with the Maximite and
original Colour Maximite. Special legacy mode for older graphics
commands.
Games
Extensive features for creating computer
games. These include multiple video planes, support for Blits and Sprites,
the ability to create computer generated music, sound effects and computer
generated speech.
Nunchuk
Full support for up to three Nunchuk games
controllers with one connected via the front panel..
External I/O
Twenty eight input/output pins with 12 capable
of analog input. Connector is compatible with RPi Hats. Built in
support for an IR remote control and temperature and humidity sensors.
Protocols
Communications protocols supported include
I2C, asynchronous serial, RS232, IEEE 485, SPI and 1-Wire.
Remote Console
Supports serial over USB protocol so a desktop
PC or laptop can access the BASIC console for entering and running programs.
PC Integration
Programs can be easily transferred from
another computer (Windows, Mac or Linux) using the SD card, XModem protocol
or by streaming the program over the serial console input.
Clock
Battery backed clock will keep the correct
time with the power disconnected.
Firmware Updates
The firmware can be updated via USB with a
desktop or laptop computer running Windows, MacOS or Linux.
Power
5 volts at approx 220mA typical (from a USB
port or charger).
Tout cela, proposé sur une carte aux dimensions somme toute réduites :
La particularité de cette 'première' version du Color Maximmite 2, consiste en l'utilisation d'un module processeur disponible chez WaveShare. L'avantage de cette solution est de permettre un montage plus facile de la machine. Souder un tel processeur requiert en effet un minimum de savoir faire et d'expérience en composants cms.
Il est bien évidemment très intéressant de tester une telle machine. Je ne la possède hélas pas pour le moment. Je prévois cependant d'en monter un exemplaire rapidement. Cet ordinateur compacte et puissant possède tous les attributs nécessaires à la mise en place d'un banc de tests automatisé tel celui que j'ai du développer sous Windows pour la qualification du convertisseur CV/Gate précédemment évoqué sur ce blog.
Cette machine ne possède absolument pas d'environnement fenêtré et donc aucun dispositif de pointage. Il me faudra donc faire avec cette limitation. C'est le seul point un peu négatif que je vois. Il est vrai que pouvoir pointer un élément sur l'écran pour en changer la valeur est une fonctionalité bien pratique. Peut-être que l'utilisation du port joystick permettra de palier ce manque.
En attendant, voici quelques vidéos que j'ai pu trouver sur Internet au sujet de cette nouvelle version du Maximite :