- Cobbling Prototyping -
In the previous blog entry, I talked about old computers, how the user input and output evolved, and why I decided to build my own terminal. I wrote how I remembered the FabGL library, how it did SVGA, had an AnsiTerminal as example, and how Just4Fun made a serial terminal using that FabGL library. I then set out my goals and stretch goals, tools to be used, and just started.
![]() |
| Ancient Dutch wisdom: "He who saves something, has something" |
The first thing I wanted to do was to cobble together prototype something that would resemble the LILYGO VGA32 board. When I work on prototype projects, I always try to see if I can make reusable components. From an old project, I had a board that combined a 5V power supply with an RS-232 level converter (MAX232). And from another (FPGA) project, I had a board that would take 5V from a USB and provide 5V and 3.3V supplies, PS2 keyboard and mouse ports, and R2-R networks connected to a VGA connector for VGA output.
Basically I was already halfway with those boards, I should only have to add the ESP32.
The only problem left would be how to program the ESP32. But for that, I have a nifty little programmer that can program ESP8266's and ESP32's (top right). I purchased it on Marktplaats from a guy who designed and sold it himself. But I don't have the documentation anymore, don't remember the guy's name, can't find his designs online, and basically every time have to fiddle with the buttons and switches until I find the right settings for it to work. But it's convenient nonetheless and never lets me down.
Cobbling (prototyping?)
So I had a bunch of devices that should in theory be able to become an RS-232 terminal. Let's program the ESP32 and tie everything together!
Tying everything together in one go is not the easiest thing to get right the first time, so I did it in a few steps. First I programmed the ESP32 and connected it to GND, 3.3V power and the VGA DAC, just to get some visual confirmation that things are working. And it showed video immediately, it was working!
The second step was to connect the keyboard and mouse. And after making a small mistake with connecting Mouse DAT to the wrong GPIO, both worked too! I of course already knew that the VGA/PS2 board was working, as I had used it in an FPGA project, so I probably shouldn't have been too surprised.
The third step was to connect the RS-232 port and see if that would work. I had to find a computer that supports RS-232 first, and remembered that I have a Synertek SYM-1. Perfect as a test subject, as it supports RS-232 with +12V and -12V, exactly what I want. In my previous post I wrote about the Minato 1866. But the SYM-1 is a just much nicer test subject, so there you go.
I connected it, and... unfortunately nothing happened. No sign of life from the SYM-1. I took out the oscilloscope, and that told me that serial data was indeed being sent to the SYM-1, but the SYM-1 didn't reply anything. Puzzling. It didn't look as if I had misconnected anything, so it should work. Maybe the SYM-1 was broken? Or something else?
![]() |
| The complete setup with SYM-1 |
Well, I dug up the SYM-1's manual, RTF'ed it, and understood the problem. Operator error... The SYM-1 does automatic baud detection when it starts up, and you have to type a capital Q (binary 01010001) before it responds. Moreover, the SYM-1 only supports up to 2400 baud, and I was trying at 9600. It is that old (1978).
![]() |
| Closer look at the cobbled together parts |
So, in to FabGL's settings and change the baud rate to 2400. Reboot everyone and type a Q. And there it was: the '.' from the monitor! Digging deep in my memory, I remembered that BASIC was sitting at address C000, so a quick 'g c000' command brought up BASIC. Everything was working!
So far for the prototype. I didn't really doubt that the FabGL library would work, to be honest. But what the prototype did tell me is that the design is really not so critical. Even cobbled together like this, it works quite reliably. The VGA output is quite crisp, for a software solution, and even my (also cobbled together) little TFT screen can sync and reproduce the colors reliably.
Have a look at a close-up of the LCD screen.
![]() |
| Close-up of the LCD screen |
Conclusion
It was a great success. In one session, I had created a serial terminal that satisfied already 4 of my requirements. And I had skillfully avoided the Perfection Trap. 😅
But that still left me with 9 non-satisfied requirements , so no rest yet.
In the next post, I will write a little about the relay circuit that I intended to use.
Cheers!
Peter




Reacties
Een reactie posten