After getting back to working with FPGAs for a few weeks, I took a first study of the Drumulator processor core to implement it in a Terasic DE2-70 board:
Obviously, shown like this, it is neither very sexy nor impressive. But, thanks to the keyboard with serial link previously made, I was finally able to observe for the first time the operation of the heart of the machine.
That's it, the reader of vintage PAL is functional. It can read old 20-pin PALs found in vintage synthesizers or computers. This makes it possible to find the equations of these programmable circuits and thus to program more modern components such as replacement GALs, with a GAL programmer like the MiniPro.
A few weeks ago, I presented on this blog the development of a power supply mainly intended to replace those of the old machines.
After receiving virtually all components and performing the first tests, this power supply is working properly. The first measurements show that it is also very efficient and hardly heats up.
In the past, I have had to troubleshoot some Drumulator and more recently SP12. During this process it is necessary to understand the logical functioning of the machines. The problem is that among all the logic circuits, there is the presence of old PALs. These pals must be read to determine their logical equations. Unfortunately, there is no cheap pal reader to do this.
MiniPro TL866
Usually, a component programmer/reader like the MiniPro is sufficient to perform the read operation. However, this Minipro cannot read old PALs. The simplest solution is therefore to wire a breadboard connected to an Arduino like the Arduino Mega to perform the operation.
Arduino Mega.
This is what I did to retrieve the PAL informations from the Drumulators. To do well, it would have been necessary to create a printed circuit board allowing an easy re-use of this system. However, I don't find the Arduino system to be particularly relevant for this type of application, especially for reading / writing files.
As I have just made a Color Maximite 2 computer, and this system includes all the elements to operate in total autonomy, I decided to create a PAL reading interface for this system :
This board is really very simple. Once completed, it will remain to write the reading procedure program in Basic. What inspired me to use this computer is that with a processor which operates at more than 400MHz, the execution of programs written in Basic is really very fast.
In addition, adapting a program written in basic is very fast. On this system which has an integrated editor, a USB keyboard input and a VGA output, this operation is done without using a PC equipped with a compiler and programming software. It is really much more convenient.
As far as I'm concerned, I made the version of Maximite 2 presented on the picture above. This version is not very 'practical' to make because it requires a processor module available from Waveshare. Other sites offer a version where the processor is soldered directly to the motherboard. I also decided to do by myself some printed circuits board made of this version because it seems that, due to a strong demand for this Color Maximite 2, there are no more available on the 'market'.
Colour Maximite 2 Main board version without the Waveshare module.
You can find more information about the Color Maximite 2 on this site: https://geoffg.net/CMM2
About two years ago, I was able to acquire a basic EPS16 + for around $150 in perfect condition. However, as it stands, the EPS16 + is not very interesting to use.
The system and instruments are loaded using the floppy disk drive which, apart from being a slow loading system, tends to degrade over time and then break down.
The machine comes with 1MBytes of memory, which is not very important since it allows just 11s of sound at the maximum sampling rate. A little limited for the simultaneous loading of several instruments.
http://www.vintagesynth.com/
The idea, after having acquired this EPS16 +, was to try to upgrade it. However, the ensoniq company has not existed for a long time. So, how to find the necessary expansions, knowing that it is very difficult to find now.
Fortunately, there are people (like me ;-) ) who make such expansions.
Regarding the 'external' of 1MBytes and the SCSI interface, I turned to ZiN Circuits :
These boards are very easy to install and although I have not yet tested the SCSI part, the 1MByte memory is instantly recognized.
This allowed me to test the multi-timbral capabilities of the machine under good conditions. On this occasion, it was easy for me to realize that loading several instruments using the original floppy disk drive was not a very reliable solution. I have had several reading problems and it took me a long time to do this successfully.
Once this floppy drive emulator was installed it was much easier not only to load the instruments but also to save my work. In addition, the system was loaded now without any reading problem.
But, all these operations were always done in a slow way since starting from, and towards what remains a floppy drive.
There was an interesting expansion for the EPS16 + which consisted of a Flash Bank. In fact, a set of non-volatile flash chips providing a total of 1MBytes of storage for the system as well as a few 'favorite' instruments.
The very big advantage of this Flash Bank is that the loading of the system becomes automatic after switching on the EPS. The loading of the instruments which are saved there is done this time instantly. In short: a must have!
I installed this expansionvery recently, in fact, I have some photos taken during the operations.
First, the board must be mounted on the display board. The front panel already has the 'holes' which will receive the mounting elements of the board.
The expansion board holes are a bit too small (3mm it seems to me) and need to be enlarged to 4mm. Once this modification has been made, the installation of the board and the ribbon cable is carried out without problem. You can download the assembly guide directly from Tom's website : Ensoniq-Flashbank-FB-1-FB-2-Install.pdf
The red board under the Flash Bank ribbon cable is the SCSI board. Under this red board, there is therefore the 1MByte memory expansion board. Both of these were installed previously, as noted above.
Once all the boards are installed inside the EPS, it looks like this :
Some pictures of the display taken after installation :
- 1- Formatting the Flash Bank.
- 2 - Insert the OS disk. In fact, choose the system file from the floppy drive emulator.
- 3 - Transfert the OS to internal RAM.
- 4 - After this opération, the system is copied from RAM to the Flash Bank and it's done.
Once these four operations have been carried out, the System is written in Flash. When the EPS is powered on, and having taken care to have removed any system disk first, the EPS will automatically search if it finds its system in Flash and, as is the case now, loads it directly from the Flash.
Therefore, the loading of the system is almost immediate. It really changes the life and the way to use this EPS16 +.
Loading and saving instruments with this flash is also very fast. The only constraint is that once the system is written on it, there is approximately 1.5MBytes available. It's not huge, but it allows you to save the few favorite instruments of the moment.
Sometimes it happens that the power supplies of some machines need to be replaced. And sometimes I can't find the ones that suit my needs in stores or on specialized sites. So I developed my personal version.
I added some extra features that are not usually found and that can be very useful. Troubleshooting a few Drumulators and other SP12s proved this to me.
It had been a long time since I decided to create this type of PSU. But between the initial idea and the realization of the concept, it can sometimes pass some time.
This PSU should be able to deliver 2A on each output. This is what I will have to check when the prototype will be made :
The Wichit Sirichote Z80 MICROPROCESSOR KIT clone : The uPF--2.
I worked on replacing the Wichit kit with an FPGA version. During this work, I said to myself that the keyboard had to be replaced. On one hand because I think that it is impossible to work under good conditions with the original micro-switches, and on the other hand, the multiplexing has not been correctly implemented and can present big problems in the event of simultaneous pressing of several keys. No protection diode and no phantom key suppression as been placed :
The Wichit Sirichote original design.
Furthermore, I decided to recreate the keyboard as a separate part. This will allow me to develop the processor board independently. However, I also decided not to use a parallel link because it is not practical at all. I preferred to connect the keyboard with a simple serial cable to the processor board.
There are not many solutions for the choice of keys if you want something 'pro'. So I chose the Cherry type keys. For now, I have only studied the keyboard circuit. Here's what it should look like :
This kit is a very good equipment for learning the principles of digital electronics. But, in the uPF--1 version, I had some issues with downloading files using a PC. After studying the code of the monitor, I realized that the method used for sending and receiving through the serial port is not really appropriate. In addition, the maximum speed of 2400 baud is really too slow for transferring even small files between the kit and the PC.
So I wondered if it might not be interesting to study a new version of this kit, more robust and more flexible. And why not, faster too if possible.
So I started to investigate the possibility of transferring all of this kit into an FPGA circuit. The study was not easy at first, because I had to understand the code of the monitor with precision to determine the general operation of this small computer. But, it is done now :
The monitor work on the FPGA board.
Closer with a filter on the display of the FPGA board.
Next? the most difficult : implementing a real serial converter for transmission / reception with the PC, and adapting the monitor to this new component.
[08-24-2020] The new version of SDCC, the V4.0.0, has been successfully tested on the FPGA board. For the occasion I renamed this version "uPF - 2" because it will be necessary to write new parts of code to manage the hardware extensions of this FPGA version.
En période estivale, forcément, le rythme des publications à tendance à baisser. Pour autant, en ce qui concerne ce blog, ce n'est pas vraiment la raison principale de cette légère baisse d'activité.
Non. C'est plutôt que j'expérimente une solution de contrôle et d'automatisation de bâtiments. L'idée est bien évidemment de vérifier un tant soit peu ce qui se passe à l'intérieur des locaux comme l'évolution des températures et autres valeurs de ce type, mais aussi d'en commander le fonctionnement comme le démarrage ou l'arrêt de certains systèmes ou la modification de consignes de fonctionnement.
Tout ceci n'est qu'un petit exemple des possibilités qui s'avèrent pléthoriques et de plus en plus utiles en cette période de mobilité réduite.
L'idée consiste donc à trouver des matériels fiables et des systèmes de mise à disposition des informations sur page web, comme ceci par exemple :
Dans l'exemple ci-dessus, j'ai trois PLCs différents, dont celui affiché en image réalisé par moi-même, qui envoient trois mesures différentes de température. l'objectif étant de vérifier le bon fonctionnement de ces systèmes, seule la température affichée par mon PLC est pertinante. Les autres valeurs ne sont la que pour validation de la chaîne de fonctionnement des autres PLCs utilisés. En fait c'est le seul appareil permettant de connecter facilement un capteur de température 1-WIRE. Pour les autres graphiques, le premier provient d'une sonde analogique faite pour mesurer des basses températures n’excédant pas 24° et le deuxième provient d'une valeur fixée par programme donc par définition stable.
Différents protocoles sont utilisés mais l'action sur le switch (bouton du bas) se fait par abonnement à un broker MQTT.
Tout cela fonctionne parfaitement. J'en suis à tester la 'reprogrammabilité' des PLCs directement par réseau afin d'obtenir un maximum de flexibilité.
Sujet passionnant et fort utile. Le plus difficile, en fait, consiste à faire en sorte que tout ce fonctionnement n'émane pas d'une 'usine à gaz' propre à planter au moindre petit grain de sable!
Dans les semaines à venir, je vais aussi tester quelques autres capteurs d'ambiance et d'énergie et puis progresser dans l'établissement d'une passerelle sans fil plus destinée par exemple à l'agriculture afin de surveiller les paramètres climatiques. L'utilisation d'un système sans fil fiable n'est pas, la-aussi, aussi trivial que l'on pourrait le penser. Les solutions toutes faites ne sont pas obligatoirement adaptées à ce type d'utilisation. Bref, encore un vaste champ d'investigation mais ayant pratiqué divers protocoles et diverses fréquences de fonctionnement depuis bien des années, je pense avoir aujourd'hui trouvé une solution satisfaisante...
Ce sujet semble assez éloigné de mes sujet habituels que sont les synthés, l'audio ou le rétro-computing, mais bon dans la description de ce blog, il y a aussi: "etc..." ;-)
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 :