mardi 21 janvier 2025

EMU 1 : a big small step

As a follow-up to my last post, after publishing it, I asked myself the question of whether I had actually tested my five new SIO/2s from China on the small Eazy Z80 board.

Sure, I tested them, but only on their serial port #0. Because actually at the beginning of my tests, I had not found a way to switch the console to port #1. Now that I knew how to do it, I tested these five circuits again on the small Easy Z80 board.

And there, it was a strange surprise. When I had carried out my first tests with these circuits directly on the EMU1 board and I could not get the menu of my monitor from the serial port #1, I had first thought that these circuits were fakes. It still surprised me coming from the supplier from whom I sometimes get 'unobtainable' components.

By repeating these tests on the Easy Z80 board, port #0 of each SIO works without problem. On the other hand, it is impossible to obtain anything on their port #1. I had initially done the port switch tests with the original SIO/0 of the Easy Z80 to make sure that my manipulation was correct.

That's when I thought that, statistically speaking, what I was seeing was still a bit too 'big' for there not to be a mix-up somewhere. So I tested these components directly on the Easy Z80 board without going through my SIO/2 to SIO/0 adapter. And what do you think happened? All the #1 ports of the SIO/2 started working.

Conclusion: although stamped SIO/2, the five circuits coming from China are, in fact, SIO/0s. Ah, but you could object that maybe my SIO/2 to SIO/0 adapter is not correct? In fact, yes, it is correct. I was able to test it successfully, not only with the two other SIO/2 received from Germany, but also in fact with the only spare SIO/2 that I had from the beginning. Which validates the situation at the moment, and allows me to see a little more clearly in all this mess of tests carried out on the EMU1 board and from which I could not find a way to progress in my diagnostics on this EMU.

So, the situation is as follows: 

  • The original SIO/2, present on the EMU1 motherboard has a port #0 that does not work. Therefore, I cannot test port #1 of this circuit on the Eazy Z80 board since the monitor necessarily starts on port #0. On the other hand, I know that port #1 'must' still work since I can display the monitor I created for the EMU1, as well as select the menu options.

  • The five SIO/2 circuits I received from China are actually SIO/0 and are functional.

  • I have three working SIO/2s that I was able to test on the Eazy Z80 board, namely the spare that I have had since the beginning, and the last two components purchased in Germany.

  • Testing the EMU1 using the first spare SIO/2 I had gave no results. Which made me think that this circuit was defective. Which led me to order five other SIO/2 circuits which also did not work but because port #1 is accessible as a SIO/0 and not SIO/2. Which had the effect of making me think that these five circuits were fakes, until I put into service the small Z80 'Easy Z80' board with my SIO/2 to SIO/0 adapter, allowing me to clarify the whole situation.

However, I still can't get my monitor to display on the EMU1 board with the three working SIO/2s I have.

But from now on, the situation has changed. I KNOW that the SIO/2s are functional, and that, therefore, something is happening on the EMU1 board. So, all I had to do was take out the logic analyzer, plug it into the functional SIO/2 and look at the signals submitted to it. 

I don't really like using the logic analyzer I have, I don't like its user and configuration interface. I still have trouble detecting the relevant patterns, but hey, I had no choice. I must admit that for once, I had no trouble following the entire SIO initialization phase, as well as the emission of the first characters.

I noticed two important things. The first is that apparently bit D5 always remains at '0'. and that therefore, in my initialization sequence, at least two data from the CPU are received 'false' by the SIO.
On the other hand, the transmission sequence seems to go well, even if in fact nothing circulates on the TX pin of the circuit, and stops after receiving 6 characters to transmit.

At first glance, the wrong D5 bit would set the transmission format to 6 bits long instead of 8. This should not prevent the transmission of something that would not be understood by the terminal emulator anyway, while nothing happens on the screen. And I do not see why the transmission would stop after 6 writes in the SIO, knowing that the transmission authorization bit is not affected by the D5 bit and that it seems to me that the FIFO in TX is only two bytes.

Conclusion: I have made great progress because I am no longer in total confusion. I notice abnormal phenomena on the EMU1 board when it is equipped with a SIO/2 more recent than the original one. This gives me real research leads. And first of all, determine the reason why the D5 data bit no longer provides the level necessary for it to be taken into account by the SIO. Once this problem is understood and corrected, I will be able to progress in implementing a functional SIO/2 on this board.

This promises me some more very studious evenings. Once I have resolved, quickly I hope, this problem, I will return to the subject of the Drumulator in FPGA. On this subject I have also advanced. The machine does not start correctly but I think that this comes from the way I generate the CTC interrupts.

Aucun commentaire:

Enregistrer un commentaire