Affichage des articles dont le libellé est MSX. Afficher tous les articles
Affichage des articles dont le libellé est MSX. Afficher tous les articles

mardi 26 mars 2024

A MSX flash cartridge downloadable from USB.

 

We have to be honest, developing quality equipment is not easy. Downloading a cartridge directly via the USB port from your PC to the MSX computer without any manipulation to do is a good idea.

But we must recognize that it is not done like that! I had to overcome hardware problems, software problems, implementation and component supply problems, etc. etc. 

Fortunately, most difficulties come from not having in-depth knowledge of the issues encountered. This is the study side of 'study and development'. We're getting there but it takes time.

So, after a certain number of prototypes, more and more functional, I am now arriving at the 'final touches'.

What is it about? In fact, with the idea of ​​making the loading and restarting process of the MSX computer automatic, just after copying/pasting a ROM file, you have to... restart the computer.

In 'real' life, a computer requires a power off/on sequence to restart on a new cartridge. This is not very practical. So I had the idea of ​​equipping my cartridge with a RESET signal output for the MSX computer.

Subsequently, it did not pose a problem for me to locate the right place on the OMEGA board to force the reset of the MSX computer.

But... that's not the case for everyone. And truth be told, I don't know many people who want to open up their MSX computer to solder somewhere a 'wire' from the outside.

In fact, you have to 'simulate' the action of the ON/OFF button on the computer. Again, there is no question of 'fiddling' with the computer switch. A relatively simple solution therefore consists of making a remote controllable electrical outlet. Obviously, there can be no question of connecting the MSX cartridge to an electrical outlet in any way.

A possible and elegant solution to this problem is to use an HF link. There is no question here of using a complicated or expensive module but rather a basic 'thing' capable of just remote control something.

After some research, I came across these modules:



I ran some link tests. It works really well. So, and as the emission module is very small, I decided to integrate it into my cartridge. In the end it gives this:


All I have to do now is have a few copies of this new version of the cartridge made. Of course, you will also have to make the 'famous' electrical outlet. I have some ideas for making such a socket 'easily' and very simple to operate, while still being safe to use.

Well, I have the impression of building a castle, but, even if it sometimes happens to have difficulty moving forward in the face of difficulties, it is clear that the subject is progressing and that it works better and better, which provides some satisfaction! 

vendredi 2 février 2024

Commander X16, MSX, 8-bit Microcomputers

Since I am of a 'certain' age, I can say that for me, computing stopped somewhere between the end of the 80s and the beginning of the 90s. And yet, I worked in the 'either-called' IT field for almost 40 years. I stuck with boring IT all these years :-(

I obviously started with 8 bits, unfortunately I entered 'professional' mode at the time when 16 bits (Atari, Amiga) were starting to emerge. I found these machines fantastic compared to the IBM 'dung' and other compatible machines of the time.

I must say that for me, the computer cannot be seen as an object of mass manipulation as is the case today, but as an object allowing the expression of a certain art, and must therefore be to this service, and not the other way around.

OK, this being written...

I've long thought that 16-bit recreations would eventually create an alternative market. Actually no. A few FPGA creations from Atari STs or Amigas and then, nothing very concrete.

On the importance of community! A few years ago, I became interested in the MSX standard. Because it was the only architecture resembling a sort of 'standard', used in the world and open enough to allow a single person to create thanks to and with this type of machine. 

So I made a copy of Sergey Kiselev's MSX Omega computer. And, one thing led to another, I found myself creating material around this machine.


I also watched with great interest the videos of The 8-Bit Guy aka David Murray and his concept of a dream computer.

Wikipedia

After several years of questions, controversies and prototypes, an electronic board is finally available. At the time of these lines, this is the second version :


So I received a small package containing an order placed at the end of last year.

The content contains the bare minimum:


I must admit that I did not expect to order a PS2 keyboard and mouse more than 30 years later!

As for the motherboard, I must say that it is absolutely professional quality. I remember the first PC and PC-XT motherboard. This has nothing to do with. And I love the three ISA type connectors allowing the construction of various expansion boards.

In my opinion, this is what is missing from the MSX standard. But that can change ;-)

The Commander X16 is a machine in the spirit of the Commodore 64/128 based on 6502. The MSX is based on Z80. I think I'm going to stop at these two machines, it already represents a lot of work developing on these two platforms!

There is also the AgonLight machine, but I must say that it interests me less. It doesn't really have any means of extension. I find it too closed, but that's my personal opinion. If a new version is developed with what I consider to be the bare minimum, I might be interested in it.


In this post, I have only touched on the subject. These three machines involve the efforts of many people. I thank them here for their inspiring 'work'.

mercredi 6 décembre 2023

A flash cartridge downloadable from USB, a few days later.

As I indicated in my previous post, I had almost reached the end of creating my USB downloadable cartridge, but unfortunately, the USB protocol generates periodic activity on the USB bus, which is disrupts operation of my cartridge. This involves unplugging the USB cable once the download is complete. This was not the objective that I had set for myself, namely to leave the cartridge connected to the PC while being used in an MSX computer.

So I had to find a solution. In fact it is very simple, use two processors on the card. The first manages USB communication, the second manages loading the cartridge and providing data to the MSX bus.

Yes, two processors. As the entire software aspect is already developed, all I will have to do is manage the communication between these two processors to finalize the project. As in any case the cost of the additional processor is comparable to that of a DIP FLASH, this solution is not that 'absurd'.

And the result of my thoughts is this:


I must say that the result is quite clean. I still have to check the placement of the notches because on the previous version, I realized that the insertion into the case was slightly forcing.

Ah yes, I also added the possibility of choosing the slot in which this cartridge should operate. Like this, the 'concept' is complete.

vendredi 1 décembre 2023

A flash cartridge downloadable from USB.

Everyone knows the cartridge system of microcomputers from the 80s. The MSX, a machine from that era, is no exception to the rule.

When you don't know anything about this type of machine, and when you finally get one, the first thing that comes to your mind is to see how it works. And so to do this, insert a cartridge, if possible of games, obviously!


This is when the problems start. How to do today when MSX has been commercially dead for more than 30 years. How to find such cartridges. It is of course possible to find them on the second-hand market. But buying 10 cartridges to test 10 games, well, that's not really viable.

The idea came very quickly to see if it was not possible to have a cartridge that could be refilled on demand, by SD card or USB device.

The Carnivore 2 cartridge, which also offers extras, uses a FLASH card to operate. You have to be able to find a compatible flash card, which is not always easy. I was never able to use the one I bought. The FPGA was poorly soldered and the cartridge quickly became unstable.


Straight into the trash :-(

There is the MegaFlashROM_SCC+_SD. It's the only one I managed to use. But to use it, there is a whole procedure to follow which is boring. And if you don't do this every day, you will have to find the documentation each time to successfully re-initialize the cartridge and copy your new game into it. The least we can say is that this solution is not practical at all. In addition, you have to use utilities that are provided in the cartridge while understanding what you are doing. And when you don't know anything about MSX, it's not engaging!


There is also the solution using a USB device like a key. For this, the rookie-drive-nx cartridge seems ideal. But also, after reading the documentation, I have never been able to get a USB device to be accepted by this cartridge: frustrating.


There is also the SD 512 but given the price of my three previous purchases, I decided I was going to discontinue the charges. So I haven't tested it.


Because, in fact, my goal was to test as easily as possible an MSX board that I had just built, Sergey Kiselev's OMEGA computer.


I had been dying to get my Omega board working for a while now. Because I don't want to spend more on a specific keyboard, I took the time to develop a USB keyboard converter to the OMEGA computer. 


I have also made the result of my work freely available on Github at this address: https://github.com/sillycony/USB-keyboard-to-OMEGA-converter.

So... I was looking for a solution to make this machine execute something in a simple way. This is how the idea of ​​creating a cartridge that can be downloaded via USB came to me.

I don't know if this is the easiest solution at the moment because I'm in the design phase and it's not yet finished despite several previous prototypes.

But I know that once finished, the cartridge will be very easy to use. Simply insert it into the cartridge port of the MSX machine while also connecting it to the USB port of your PC. Dragging and dropping your binary file onto the cartridge, which will be seen as a USB key, will be enough to make the ROM for the MSX available in a few seconds.

If the final solution for my cartridge is not ready yet, I am posting about it now because I have almost achieved what I wanted.


But why is the current beta version not satisfactory?

Well it's very simple: because the USB protocol imposes regular requests from the host to the device to check its proper functioning. And it happens every few seconds.

And? Well, the response process requires the processor on the cartridge to respond ;-). And that takes time. Even if the processor used is fast, while it responds to the USB request, it cannot respond to computer access via the cartridge bus. Result: the MSX computer crashes! But, when the USB cable is unplugged, everything works as expected, as shown in the picture above.

I even planned the automatic RESET of the MSX computer while loading a new binary, so that it then restarts on its own on the new game, or new application. It works very well.

I therefore need to dissociate the USB bus management function from that of the MSX bus management. Because I don't use a FLASH strictly speaking, but the flash contained inside the processor. 'Small capacity' flashes in DIP housing and parallel addressing are becoming more and more difficult to find and more and more expensive. 

So I don't have this problem with a processor equipped with the desired amount of Flash. In addition, it makes routing the printed circuit easier.

The final cartridge diagram looks like this:


I know, it's difficult to read. It's just a screenshot. But we can notice two big circuits there. These are the two processors used. The one on the right is in charge of the USB port, the one on the left is in charge of storing the binary of the cartridge and presenting it to the MSX bus. 

This will cost a little more to produce than expected, but as the two processors are the same models, I will be able to take advantage of the quantity order to reduce the final price.

The software is ready and validated. All I have to do is implement each processor with its part and add a small communication protocol between them. The most 'tricky' part consists of creating a new printed circuit board with more components. But I think I can use the design of the current cartridge to facilitate this new implementation.

I must say that this is now the second project that I have carried out with a professional type process with all that this implies of prototyping, extensive testing taking into consideration a whole bunch of parameters including price, ease of realization, reliability etc etc...

I must say that it is a very enriching experience... When I think of what the type of job I had at the French university was, just a few months ago... What mediocrity!

mardi 28 février 2023

MSX Omega board : first game!

Difficult start to the year. I haven't published much in 2023. But here's a little new that delights me: I was finally able to launch and play a game with my Omega board.

The Omega board :


I didn't have a keyboard at the time, and given the cost of building this board, I decided to use a standard USB keyboard. So I made an adapter to connect a cheap commercial keyboard to the Omega:


The results of using this adapter were satisfying, but I didn't know why I couldn't use the Omega board correctly. And then someone gave me a new BIOS that was visibly better suited. From that moment, I was able to use the MEGAFLASHROM SCC+ SD cartridge to install the Galaga game on it.

Why Galaga? because a user of my USB keyboard adapter project (https://github.com/sillycony/USB-keyboard-to-OMEGA-converter) told me some problems with Galaga. So I solved these problems and tried this game with my corrections.

The system being fixed and tested for 'small' USB converter bugs:


There you go, the game works perfectly. Maybe I'll make a little video, but before that, I'd have to improve at this game where I'm particularly bad!


Champagne: first time I run a 'real' game on my 'own' computer!
Little video of the game. It's obvious, I'm not an inter galactic champion ;-)


Small note anyway. You have to know a lot of little things to successfully operate such a system. Nothing complicated but the documentation is fragmented. You often have to try to put the pieces together to understand how it all works. This is what I 'reproach' the most to this type of system. Too bad, because it's really fun to work with.

UPDATE 03-07-2023

As I have to perform various tests on several games in order to fine-tune the operation of the USB keyboard converter, I realized that this requires somewhat tedious cartridge loading manipulations. I am therefore in the process of preparing a somewhat particular type of cartridge which will be very easy and quick to use. I say no more for the moment. If you are interested in a simple and easily reloadable cartridge, let me know in the comments, indicating a price that seems 'reasonable' to you.

mardi 12 avril 2022

Drumulator in FPGA & OMEGA MSX computer.

THE DRUMULATOR

I continue the experiments of recreating the audio outputs of the Drumulator.

At this stage, I know that I am able to read all the Drumulator sounds correctly with the digital/analog converter used, once the data has been passed through the decompression table to the µLAW standard.

But, for the moment I reproduce the sound directly at the output of the audio converter. I now have to test on the one hand the individual volume adjustment part then the sample&hold outputs, in order to verify that the reproduction is going well on all the outputs.

It's a bit complicated because in order to minimize the need for board routing, I opted for serial interfaces for all the commands. Originally, the interfaces are of the parallel bus type with all that this implies of buffer circuits and bus locking.

And above all, I like to condense ;-)


Apart from the analog converter and the serial control circuit, I use the same components as those present in the Drumulator, just to preserve as much as possible the sound signature of this machine.

THE MSX OMEGA

This morning I received a package directly from Poland. Even if I blurred some information on my home address, I note that the French postal service still retains within it, some real clairvoyant eyes. I doubt that it happened correctly in the machine-reading system... Long live to the world of real people!


And what's beautiful inside this 'survivor' package? 


Everything you need to build a great case for the OMEGA board. All I have to do is find the few screws needed to fix the board to the bottom of the case. Interesting thing: I find that my USB to OMEGA keyboard conversion interface fits perfectly inside the box without any problem. I should even have room to attach a USB connector to the front panel. From the cutout informations, I thought my interface wasn't going to fit inside. In fact, it does it very well and I'm very satisfied!


The difference in this version is that there is no cutout for the Omega keyboard as originally planned since I am replacing it with a USB keyboard. I indeed thought that it was not going to be practical to type on the keyboard placed in the high position. I was right. It will be much more practical with a 'normal' keyboard.

So, I'm thinking about building a cartridge to easily develop software for the Omega. I know that there are many solutions, including the one that consists of using a ROM cartridge of the MSXROM512 type from Raphnet, on which we place an EPROM emulator to easily upload the code, once validated in the emulator,


but I am going to try to develop a cartridge that can be loaded natively via a USB port and also equipped with a serial port. 

Because in fact, I'm not very 'games' with computers but rather communication. I would love to connect this Omega somehow to the NET.

Many thanks to Krzysztof Odachowski for the realization of this enclosure...

vendredi 8 avril 2022

Drumulator in FPGA & MSX news &...

It's been a few weeks since I posted anything. However, I worked on four simultaneous subjects.

  • Troubleshooting the CSQ600.
  • The development of the MIDI switch.
  • The finalization of the USB keyboard converter for Omega.
  • The test of the audio output of my future Drumulator. 

CSQ-600: 


Unfortunately, I couldn't get the machine to work. However, I installed a new processor, but the result is strictly identical to that of the original processor. I just managed to have a different start of the machine by replacing the original oscillator with a signal generator. The result is insufficient for me to get an idea of ​​the problem for now. After a few days of intense investigation, I momentarily put the subject on hold.


MIDI SWITCH :


I made some progress on the subject. I mounted a module with four RJ45 inputs/outputs as well as a small conversion 'pod' to MIDI IN/OUT. I'm currently stuck because I can't get my hands on the small processor used on the PODs. Fortunately, I recently found availability for this processor and ordered a few copies. I am awaiting delivery.

USB KEYBOARD CONVERTER :


I am pleased to announce that the development of this interface is finished. I finalized the code for 'AZERTY' and 'QWERTY' type keyboards. As a reminder, this converter allows you to connect a standard USB keyboard to the MSX OMEGA microcomputer. Also, I'm waiting for some components to manufacture a few copies that I will make available for sale for those who wish to go through this solution rather than building the OMEGA keyboard entirely.

The Omega computer

AUDIO OUTPUT FOR MY FPGA DRUMULATOR :



I completely coded the processor part as well as the waveform sequencer in VHDL. The goal is to fit as many logic elements of a Drumulator as possible within an FPGA. So I still had to study the audio output. 

The problem is of course, that the kind of digital to analog converter used in the Drumulator is absolutely no longer available. The solution adopted therefore consisted in using an available 12-bit converter, and in coding the system making it possible to reproduce the logarithmic transfer function of the original converter.

For this, I started to mount a copy of my analog output prototype:

Quick & dirty test plateform but sound very good!

To do my tests, I used a development board from STmicro equipped with a fairly powerful STM32 processor. This kind of board associated with the ST development software is really ideal. Once the system was set up, I encoded a square signal at 1KHz using Audacity which I exported in µ-LAW format to the development board. The result gives what was expected:



For this kind of test, low precision required and low frequency, the (toy) FNIRSI-1014D is ideal because it does not generate any fan noise. This allows you to leave it on for hours without wanting to throw it out the window at the end of the day ;-).

Finally, I replaced the sinusoid definition file with the one from the copy of the original Drumulator ROM to see the scrolling of all the sounds of the machine, given that I scan the whole 64K of ROM.

In fact I obtained the same result as that obtained by testing the waveform sequencer implemented within an FPGA, by directly sending the addresses to the ROMs present on the motherboard of the Drumulator test:


Basically, I have 'proof' of all the important parts of the Drumulator working. It only remains for me to test the analog output filters, knowing that there are recent components to replace the old SSM present in this section of the Drumulator. Each part works 'in its own corner'. Now it's all about putting it all together on a large prototype board.

I left my job with the madmen of the French national education since a few weeks, and life is much more pleasant now. I develop what I like, at my speed... Peace for ALL!


mardi 30 novembre 2021

MSX, CANIVORE & various thoughts on the MSX standard and amateur work

Several months ago, I started building an MSX compatible computer board. This is Sergey Kiselev's OMEGA project


I have no complaints about this project. Apart from the difficulty of supplying certain components and possible assembly errors, the computer works as soon as it is switched on.

I have already had the opportunity to discuss the cost of producing such a project. This is why I did not realized the keyboard proposed in this project, but rather a USB adapter allowing the use of a standard keyboard at low cost.


In order to put this computer into real operation, I therefore obtained a CARNIVORE 2 cartridge which provides, among other things, access to a storage medium in the form of a FLASH card:


And now is the time for things to get complicated!

At first, I tried to run the cartridge with a flash card that I had. Despite my best efforts, and although the cartridge menus were displayed, the flash card was never taken into account. So I ended up looking for a possible compatibility problem with my flash card. The flash card that I have and that works on my PC :


You can find a list of compatible flash cards here: https://sysadminmosaic.ru/en/msx/carnivore2/qvl_list. I was indeed able to find this type of card in the list:


So I began to suspect the operation of the CARNIVORE cartridge. The first approach is to redo the welds. In order not to damage anything, I therefore used a hot air iron. I am used to work with this type of material so no problem. The result was the inability to start the cartridge itself.

So this time I visually inspected the cartridge and this is what I discovered:


From what I have been able to observe, it seems obvious to me that under these conditions the access to the memories of the cartridge, and therefore to the program in ROM seems highly compromised. 

This is the original placement of the component. I absolutely did not touch the legs of the FPGA. The fact that the cartridge started when I got it seems have been a miracle. In the current situation, it is not possible to properly realign the pins of the FPGA. The only solution would be to remove this component and replace it with an FPGA with the pins correctly aligned. This problem only exists on one of the four sides of the component.

Well, the Cyclone II series FPGAs are no longer manufactured. And moreover it seems very difficult today to obtain such circuits!

Which brings me, after having worked for several months on this MSX board, to the following thoughts:

  • Personal creations always come up against the problem of the case. Which one for OMEGA?
  • Two cartridge ports, at the time it was probably perfect, but today?
  • Operating mode selection by pressing specific keys at start-up: boring and outdated!
  • C-bios is not a system. It just offers the minimum API to run some cartridges.
  • Difficulty finding a version of the system corresponding to the needs.
  • Slowness of this type of machine. More efficient solutions are possible ...
  • Video resolution is really minimal ...
  • Lack of structured, up-to-date and relevant documentation...
  • Use of bad technical solutions for some realization. In the case of CARNIVORE, fpga, resistance adaptations to voltage differences etc...
  • Etc...

While this type of machine could, if updated, provide real pleasures of use and programming, it is clear that entering the MSX world from scratch is not a trivial task. And yet, this type of machine can provide real development potential but still requires a flattening of the concept I think.

Don't make me say what I didn't say: making an OMEGA board and even starting it is a real pleasure. So far I haven't managed to start any application, and that's really annoying. 

But hey, that makes it possible to think of modifications allowing to improve the situation ...

vendredi 5 novembre 2021

Keyboard for OMEGA MSX Computer : it works!

It took me much less time than expected to be able to interact with the OMEGA board:

Before testing my USB to keyboard adapter board, I had tested the reception of codes from the USB keyboard. So I knew it was working. But I still didn't know how MSX BIOS scans the matrix keyboard.

After a few attempts and oscilloscope tests, I was able to send 'things' to OMEGA. But obviously not the right codes. After having researched the official codes of the MSX keyboards, I realized that the BIOS installed on OMEGA manages the Japanese keyboard! Why not!...

My first goal being to be able to type a little Basic program and run it, I decided to code the essential characters. First, the alphabet:


I am totally amazed at how easy it was to turn on my USB / OMEGA keyboard interface. I didn't have any issues with the design of the board, everything worked right from the start. Coding the software of the small STM32G0 processor was really very easy with the STmicro IDE.

For now, the coding is more of the quick and dirty type but it works very well!

On the way to my first "Hello World" program ;-)