Affichage des articles dont le libellé est C-Micromite. Afficher tous les articles
Affichage des articles dont le libellé est C-Micromite. Afficher tous les articles

jeudi 2 juillet 2020

Color Maximite 2

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 :







Intéressant, n'est-il pas?


mercredi 26 juillet 2017

Micromite la boite à outils....

Est-il possible d'effectuer des tests sur différents composants, qu'ils soient équipés de bus série I2c ou SPI, encore plus facilement qu'avec une carte Arduino?

La réponse est oui et tient en deux mots : Micromite et Basic.

Étonnamment, alors que l'environnement de développement Arduino à connu un succès énorme auprès des 'bricoleurs' divers et variés, des solutions alternatives comme Micromite ne sont jamais mentionnées. Est-ce du au fait que le langage de programmation utilisé est le Basic?

Micromite est basé sur des processeurs puissants de chez Microchip, en l’occurrence des circuits PI32MX. Un des circuits couramment utilisé est le PIC32MX170F256. Il s'agit d'un processeur en boîtier de type DIP qui permet la réalisation de cartes de développement très compactes et faciles à réaliser :


Quand même, ce 'petit' processeur fonctionne à 40MHz, possède 256Ko de flash et 64Ko de RAM. Micromite se sert de la Flash pour enregistrer de façon pérenne le programme en basic et propose plus de 50Ko restant en RAM pour le stockage de données 'volatiles'. Inutile de dire que cela permet de faire déjà beaucoup de choses.

Le Basic développé par Geoff Graham est compatible MMBasic, est très rapide et en est à la version 5.04.05 :

J'ai effectué la mise à jour en version 5.04.04 il y a à peine quelques semaines, je pourrais donc recommencer l'opération pour passer en version 4.04.05, disponible depuis quelques jours sur le site de Geoff : http://geoffg.net/micromite.html. Preuve que le suivi du projet est correctement effectué!

La carte que j'ai développé pour ce système permet d'y raccorder le programmateur PicKIT 3 :


Et donc d'effectuer très simplement la mise à jour du firware de l'interpréteur Basic.

Pourquoi évoquer ce type de système aujourd'hui? Tout simplement parce qu'avec l'engouement actuel pour le rétro-computing, il me semblait opportun de rappeler que nombre de micro-ordinateurs de la belle époque n'étaient programmable qu'en Basic. Avec des puissance qui n'avaient rien à voir avec ce que propose Micromite. Evidemment, ici il n'y a pas d'écran ou faire défiler de jolies animations. Non, ce type de système est plutôt prévu pour du contrôle/commande, et il le fait particulièrement bien. Noter que l'interpréteur connaît une instruction pour démarrer directement le programme Basic à la mise sous tension.

Si cela vous interpelle, je vous invite à aller sur le site de Geoff consulter le manuel de son Micromite. Les possibilités de cet interpréteur sont tout bonnement stupéfiantes! Toutes les ressources sont libres...

Enjoy!