vendredi 31 mars 2023

Retro-computing : TMS1122NL

Until today, I used to post topics in no particular order. As a result, a project was sometimes scattered over long periods of time on this blog, except for my repair of the Korg T1.

I published on Facebook a few days ago a photo taken of a printed circuit board that I intend to emulate one of the first microcontrollers, namely the TMS1122, a circuit from the 4-bit TMS1000 family from Texas Instruments.

I was asked if I had a blog on the development of this circuit in order to follow the construction. Hence my decision to make dedicated articles. I will see in time if it suits the form of this blog.

So :

- 03/31-2023 'A small project around the TMS1122'.
- 05/05-2023 'What... since the last publication'.
- 06/07-2023 'What... since the last publication'. 
- 06/18-2023 'The prototype is approuved'. 

A small project around the TMS1122

Why such a project?
In fact, a very long time ago, I made a device around this circuit. It was in fact my first 'processor' based achievement, in 1983. I was so impressed by this system that I kept very good memories of it and the desire to use again the same concept for years.

But what does this TMS1122 do? 
It is quite simply a 4-output weekly programmable clock.
And that's all?
Yes, but he does it very well. Its simplicity of use is disconcerting.

Let's go, what can such a clock look like?


The image is taken from a scan of a French magazine: Electronique Pratique. It is this clock that I also made and used for years: not very sexy!

Presented like this, we realize that the device is quite bulky. We also note that the front panel has many keys plus LEDs and 7-digit displays. The 4 outputs are available on the rear face to supply power (mains) to 4 devices.

Aspects that I find a little annoying: the size; the obligation to connect the 4 devices directly to the clock case without the possibility of a remote control; the display that does not manage the seconds. This last point is important because it can be interesting to put a device in operation for only a few seconds.

The interesting aspects: a clearly readable, simple display which indicates absolutely all the necessary information. A sufficient number of buttons to manage the device without having a headache, even without instructions.

The goal of my realization is therefore to reproduce this clock but by removing the disadvantages and adding the functionalities that I think are absolutely necessary.

Of course, the TMS1122NL is no longer available today. And anyway I could not use it since it does not have the management of seconds, which I absolutely want to implement. Incredible, according to WikipediA information, about 26 million of these circuits, TMS 1000, were sold by T.I. per year, from 1974 to 1979, or 130 million! The TMS1122 being a TMS1000 version programmed to be this famous 4-output clock.

TMS1122NL, the brave!

This raises the question of processor emulation, or application emulation. In fact the question does not really arise. Even if I emulated the processor, since I don't own the application binary because it is factory-written in the circuit, I couldn't run this binary anyway. (Or else, help from a veteran of T.I. who would have the binary in question...)

It is therefore a question of recreating the operation of this TMS1122 programmed to be a clock, on a totally different system. Consequently, the question of the choice of micro-controller arises. There are a multitude of possibilities, in particular the circuits of the ARM type, which I use regularly, or others... I've used many different types all these years. This time, I decided to try the adventure on a relatively new type of processor, namely a RISC-V, In this case, a CH32V203C8T6 from WCH. It's trendy, I know...



Without further ado, here is a three-dimensional view of what I will try to achieve and make it work:



As you can see, the size of this circuit is much smaller than the bulky machine presented at the beginning of the article. Also, there only seem to be two ICs on this design. And you are not wrong. No transistors or other logic circuits either. In fact, the small integrated circuit is an integrated real-time clock. So apart from the processor and the clock circuit, there is no other active circuit on this circuit board. Compared to the original TMS1122 design, will it work?

The original design, provided by T.I.




My design:



My schematic is very different but it contains all the elements of the original application as proposed by Texas Instruments. All switches, LEDs and displays are present. And here, not only 4 7-segment displays, but 6 since it is planned to display the seconds.

At this point, I don't know if this schema is valid. I don't even know if I wired the right signals for programming the processor. I did some tests with a study board that I previously purchased, but despite the fact that I managed to program the processor of this study board the same as what I plan to do here, a doubt remains, which I have not been able to dispel with the documentation. I'll see...

A few days later!

First I mounted the whole board. I started with the processor to verify that I could access it using the programming dongle and the development environment. It has been. So I placed the rest of the components, and this is what it looks like:


On the other hand, what I had anticipated about the programming pins of the processor turned out. I use some inputs / outputs of the processor to control elements, LEDs, buttons. However, some outputs used are also dedicated to the debug port. It is therefore necessary to deactivate this function within the processor to be able to use these I/O as such. In doing so, the possibility of placing the processor in debug mode using the external dongle is deactivated. So I had to connect two switches to the board to put the processor in the right mode using a hardware RESET.
This is the reason for the 4 wires soldered to the board.

Programming the system is not very easy. To simplify the hardware to the extreme, I used very few components, so no buffers, no transistors etc... I also routed the board so that the tracks are the easiest to route, with a minimum of vias.

All this implies that everything must be managed by software. So it took me some time and some headaches. Because in fact I was also discovering this processor. The development environment does not have a graphical interface like that of STmicro to configure the hardware resources of the processor. Everything has to be done 'by hand'. On the other hand, and thanks to the many examples provided, this way of doing things allows you to know very precisely how the processor works, which is not necessarily the case when everything is 'hidden by a nice graphical interface.

Where am I today?

Well, all inputs/outputs are functional. Communication with the real-time clock works well, but it was no fun hand-programming a half-duplex SPI port on a single I/O. Basically, the SPI bus of the processor always uses two distinct I/O. The management of the keyboard works very well, which was not necessarily the case with the TMS1122 or the bounce of the switch contacts was not correctly treated: many false bounces and therefore a somewhat delicate entry of information. I also finished the behavior of the system when entering information.

It now remains for me to create the command interpreter which will have to execute either the orders directly, or place them in the database. Then to realize the scheduler of the database, which will be responsible for the realization of the programmed actions.

On to the next post...

> 05/05-2023 < What has been achieved since the last publication.

Well, database management has been completed. All the functions necessary for the final construction of the program are now established. There will probably some modifications to be made because during development, I realized that I could make some operational improvements.

I also made a front face for this application. I just received it. I must say that for a test shot, the rendering is quite correct:


I still have to find a plastic film to improve the contrast of the LED displays.

In order to keep the project small, I split the construction into two parts. The first, the one presented to you, manages the user interface as well as all the functions of the clock. However, neither the power supply nor the inputs/outputs are present. This is the subject of the second part of this clock, here:


This part will mount directly to the back of the main board. It contains everything you need for a backed up power supply as well as different types of I/O including the 'famous' relays present on the original TI concept. I added some specific inputs/outputs to make this part of the construction as flexible as possible.

I also think I can use this part in a different implementation of the TMS1122 concept, I think using a graphic display.

What remains to do to 'practically' finalize this project: the re-writing of the firmware in a stable version, the actual realization of the I/O board and its test. It still represents work.

> 06/07-2023 < What has been achieved since the last publication.


Well, I rewrote the entire system program. Indeed, the first draft consisted in checking the software feasibility corresponding to the hardware options that I had implemented.

Once this verification was validated, I first had to improve the sub-parts corresponding to the various hardware implementations. On the other hand, I also modified the general functioning, namely that absolutely everything that happens is managed by interrupts and no longer in a main loop reacting to various semaphores coming from multiple interrupts. Finally, I also added some features that are not original in the TMS1121/1122 in order to improve the general workflow.

I just have to check the general operation of the system and correct any bugs. But it will now be much simpler with the new software architecture.

In addition, I received the power supply/relay board as well as the screws necessary for the general assembly. I have not yet tested the power supply board but have already assembled the assembly to check if all the dimensions were respected.

It fits very fine :


I had planned to mount it in a Euro Rack type box. This type of rack is elegant and highlights the general appearance of the TIMER, here next to a Behringer module. Of course, in the case of mounting near a PLC box, this Timer can be mounted in a specific box.

I placed a few too many screws for my taste. I still have to check if the keyboard works as well with fewer fixing points. I also have the screen printing to be improved. All these adjustments will be made on the final version which I hope will be available within a few weeks.

I am also testing the power/driver board. It attaches to the back of the Timer board. Here is what the final assembly looks like:


The Timer is designed to work for a certain time, even in the event of a power cut. This board will also eventually receive some serial links to allow the Timer to communicate with different peripherals. I plan this for a future version. I only assembled some of the components because it is only a prototype for the moment. Everything seems to be working fine...

Even if it is a relatively simple project, I admit that it still takes time when you want to do well and you have to manage all the aspects of such a project. But hey, that's also what's interesting...

> 06/18-2023 < The prototype is approuved!


The two-way communication between the clock card and the input/output card works perfectly well. I can now check the battery status directly on the front panel.


About battery, the whole system is able to run at least three whole days on the 16550 battery, relays not activated in this case. Which is more than enough for 'normal' use of this type of equipment. From memory, the original version, equipped with the famous TMS1122NL, was just able to run about a day with two 4.5V flat batteries in series, and even then, on condition of turning off the clock displays. Whereas in the case of this new version, the displays constantly show the time.

It only remains for me to make the few adjustments that I think should be made on the printed circuit boards as well as on the front face to propose the final version of this clock.

As a reminder, this clock is extremely easy to use and in the current version, offers 4 programmable outputs over the week. 40 program steps are available, which doubles the capacity of the original TMS1122NL based clock. Once this device is really finished, I plan to study various extensions that seem interesting to me to integrate, such as temperature control and other kind of measures ...




vendredi 24 mars 2023

For TEST : a downloadable MSX cartridge

In the 1980s, there were several families of computers. Among these was the family of MSX machines. The interest of the MSX was that it was an open standard allowing the manufacture of compatible machines by a certain number of manufacturers.
This type of computer has not been used for a long time, but remains a very good gaming platform. Msx is now trying to evolve, especially with the MSX-3 initiative, but I'm not a fan of this evolution.

So, and in order to facilitate the development of applications under MSX/MSX2/MSX2+, I am trying to create a cartridge that can be downloaded from 'PC' via the USB bus.

here's what it might look like: