Summary: Playing with an MSX computer
At the end of March 2020, during my periodic visit at a
store (a Japanese chain selling, among other things, used electronic stuff and video games),
I stumbled upon an MSX computer built by Sony, the HB-10 Model. It was not tested, but its overall condition did
was not too bad and the price seemed reasonable so I decided to buy it.
The Sony HB-10 I bought
I do not know anything about MSX computers. I think those were very uncommon where I grew up in Canada. I suspect
that those computers were mostly popular in Japan and Europe... In any case, I am curious and the
Retro Challenge Retry
is a perfect excuse to spend time
learning how to use this Sony HB-10 as well as familiarise myself with the MSX ecosystem.
Once I'll have this MSX up and running (hopefully without too much complications) my first objective
will be to play a game which was recently completed by a developer I follow on Twitter
This new MSX game really looks fun and is called
. Here are a few screenshots:
No missing keys, but does needs a good cleaning.. I'll take care of that later.
Traces of rust on the connectors, in particular the RF output (which I certainly won't use).
Otherwise, everything looks fine inside, only a bit of dust.
Powering it up!
I bought this computer without cables and without the power brick. The power brick was missing, and according
to the store, this was actually the reason why this computer was sold as untested. So I was on my own.
The label under the computer indicates voltage requirements of 6V DC and 16 AC...
I did not have an appropriate power source on hand. So I began thinking: This computer most likely
works at 5v internally... could I simply inject 5v DC? Why does this machine also requires 16v AC? Of what
use is it?
To answer this question, I consulted a service manual I found on archive.org. It was not exactly
the correct manual, I have the HB-10 (Japanese version) while the manual is for the
HB-10P (Europe) and HB-10B (UK). But according to
this page about the HB-10 series
the msg.org wiki, the main differences are only the keyboard layout and the AV output connector.
From what I could see, the input power is used as such:
- 6V DC: Sent to the 5V voltage regulator.
- 16V AC: Used to make 12V and -12V DC using 7812 et 7912 voltage regulators.
- 12V: Sent to the cassette connector and to the cartridge slots.
- -12V: Sent to the cartridge slots.
I could not locate a place where the +12/-12 voltages were used internally. I think I will use the
cassette port, but I will most likely connect it to my PC sound card. I do not think I'll use the 12v output
from this port. As for cartridges, I don't own any yet. I suspect most game cartridges only use 5v though.
Power input circuit and regulators
The conclusion: At least for now, I only need 5v since I will not be using the +12/-12 voltages, and the raw 6V input
only goes to the 5v regulator. In the future I will do something cleaner, but for now, I simply soldered an USB cable
directly to the regulator pins 2 and 3...
USB cable soldered to regulator
I connected the computer to a Sony PVM (same brand, most appropriate) and connected the USB cable... And this computer
appears to work perfectly! Yay!
The keyboard works perfectly well too! For fun I wrote a quick Hello, World! program in BASIC.
I was lucky this time, no repairs were required! Yet, I am a bit disappointed, some motherboard debugging,
CPU or memory replacement (soldered components) would have been fun too...
Next step: Play Uchūsen Gamma!
Uchūsen Gamma is distributed as a ROM (cartridge) file and CAS (cassette) file. My plan was to load the game through
the cassette port by connecting it to my PC sound card. But this requires an appropriate cable! Since I did not have
the correct type of DIN connector, I did not build a cable. I just used two pieces of wire to make the connection. The
correct parts are on their way...
Audio plug and wires
Wires inserted in the DIN connector
To convert the .CAS file to sound, I used the MSX CAS Packager
to convert the .CAS to a .WAV file.
I loaded the file in VLC, typed
on the MSX and pressed PLAY
in VLC. A few seconds
later, the words "Found:ugamma" appeared on the screen. Very good sign!
But it was too early to celebrate. A few seconds later...
Oh no! I tought Uchūsen Gamma was a game for MSX systems with 16k of RAM... It turns out that I did not read correctly. The
cassette version requires 64k... It makes sense, if the game code is not in ROM, it must be loaded somewhere right?
Ok, so my MSX computer only has 16k. In the HB-10 series, the model I have (the Japanese model) is the only one with only 16k. All
other models have 64k. That's too bad... There is only one thing to do then: Adding more memory and trying again!
According to the MSX wiki page about the
, the Japanese HB-10 computer has 16k of RAM in SLOT 0
and all other models have 64k in SLOT 3.
I will try two techniques to add memory to my HB-10:
- I will build a memory expansion cartridge. Simply installing it in one of the two cartridge slots will add 64k of RAM
to the system.
- I will also attempt a motherboard modification to have 64k on-board.
All the components I need to try both techniques are ordered and should be here at the end of the month.
I have good hopes for the motherboard modification. At the moment, there are two TMS4416 (IC10 and IC11) RAM chips
installed, but there are interesting markings on the PCB: 4416(N) and 4464(P). I think that N refers to NTSC and P
to PAL. In the context of the HB-10, knowing that it was sold in Japan and Europe, NTSC = Japan and PAL = Europe. And
Europe implies 64k of RAM! So the plan is simple: Replace the two TMS4416 chips by a pair of TMS4464 chips and perform
whatever additional modifications are required. For instance, looking at the PCB, I can see other optional components
identified by (N) and (P), for instance R61 and C43.
I do not have the service manual for the Japanese model, but I have the European version from archive.org. This memory
circuit schematic will certainly be a big help to understand the required changes!
The part I was waiting for to build a cassette cable, a 8-pin DIN connector, finally arrived!
Much cleaner than inserting small wires in the DIN connector as I had to do before. Also much more reliable!
BASIC 10-liners and KansasEncoder
While I'm still waiting for parts to extend my MSX memory, I tought it would be fun to try
a few games from the annual
Basic 10 liner contest
While those are by definition relatively short and compact programs, I'm not typing them in. Instead,
I load them through the cassette port!
To convert them to sound, I found a nice little tool which runs in a web browser:
KansasEncoder for MSX
. It's a simple matter
of cut-and-pasting the program in the textarea and pressing play. After typing
on the MSX of course!
As an example, here is a fun little game from the 2019 contest (it won 8th place):
First I copy ther code from GitHub...
Ballistic Challenge code on GitHub
I paste it in KansasEncoder...
The code in KansasEncoder
on the MSS, press Play in KansasEncoder, and a few moments later...
Tada! It's running on my MSX computer!
Here is another game that isn't bad at all for 10 lines: SuperFish (This one won 4th place in 2019)
The game in KansasEncoder
Running on my MSX!
64KB Expansion cartridge
I finally received all the parts to build a 64kB memory expansion cartridge for my 16k MSX. I designed a small PCB using a 128KB SRAM
chip. The reason why I used an oversized chip is that I wanted to use only new parts, and the choice of small SRAM chips is a bit limited
in this age...
Ok so, here is the schematic:
I tried to follow the MSX Hardware design guidelines I found
on the MSX Wiki at
where possible or applicable (as far as I could tell)
to my situation. In particular, I made sure the SRAM chip I chose was TTL compatible
and I routed all the cartridge pins to a header footprint to help with future experiments
Printed circuit board
The PCB is sized to fit Konami style cartridge shells.
PCB assembled and installed
Need more RAM too?
Ready to use 64 kB RAM expansions are available from the
My first test was to check how much free RAM BASIC reports at startup. Excellent, the free
memory increased from 12431 to 28815 bytes!
Only 28815 bytes free when I just added 64kB of RAM? This is perfectly normal. The CPU can only
access 64kB, and 32kB are used for the BIOS and BASIC ROM. BASIC uses a bit of the remaining 32768 bytes
of RAM so in the end only 28815 bytes are free.
See also the MSX Wiki:
I have 64kB of memory, but BASIC only reports 28xxx Bytes free
Since BASIC only touches 32kB of memory, I then used a small tool designed to scan system
slots and report what it finds: TINY SLOT CHECKER by Tiny-yarou.
I downloaded it and the zip file contained many different versions of the tool, including a cassette
version in .WAV format, exactly what I needed. So I could use the cassette cable I built and VLC to play
the wave file.
Testing with Tiny Slot Checker
Sure enough, Tiny Slot Checker found RAM in slot 1 (the left cartridge slot), as this is where I had
inserted my memory cartridge. Slot 0 page 3 is the 16kb of RAM built into the machine, and this is where
the tool is running from. Unfortunately the memory version of Tiny Slot Checker (unlike the cartridge version) cannot
inspect page 3, whci explains the blanks...
Ideally I would have liked to use something specifically designed to test memory, but I did not
find one in cassette format... so there was only one thing left to do:
Have another go at loading Uchūsen Gamma
Now that I have at least 64k of memory it should work!
And indeed, after a few moments, instead of an insufficient memory error message, a loading
screen appeared! And a few minutes later, the game started!
Finally, the game runs!
I still hope to replace my cartridge by a built-in memory upgrade, where I will try replacing the two 4416 RAM chips by
a pair of 4464 chips (plus other required modifications). Sounds like so much fun!
But meanwhile, I will play some games, and I think I will make a joystick adapter...
End of RC2020/04 and continuation
Ok, so I tried modifying my computer to permanently install 64k of RAM by replacing the two 4416 chips by a pair of 4464 and relocating
several jumper wires and resistors, according to the (P) and (N) labels on the motherboard, but unfortunately I could not get it to work. And
then the RetroChallenge ended.
But I have not stopped experimenting with my MSX system and will keep adding sections below.
64k (48k) Cartridge ROM PCB
Loading games through the cassette port can be time consuming. For instance, whenever I feel like playing Uchūsen Gamma,
I must wait 5 long minutes to load the game! To solve this, I decided to build a simple cartridge PCB for accomodating
a 64k EPROM. As for my memory expansion cartridge, the size of the PCB and the hole location is compatible with
Konami style shells.
And here is the schematic:
As you can see, it is straightforward wiring using the SLTSL (Slot select) signal. The slot where the PCB
is inserted is therefore fully occupied by the EPROM. Of course, it is likely that a maximum of 48k will ever
be usable, since at least one 16k page of RAM will normally be required. (I have a few ideas for programming techniques
where this limitation could be overcome, but I don't know if there is software that does this)
When programming a ROM file smaller than 48k, 16k for instance, the file must be programmed in page 1, i.e. from 4000 to 7FFF. EPROMs
smaller than 64k can also be used, 32k for instance, but mirroring will occur (pages 0 and 2 will access the same data, and so will
slots 1 and 3).
The table below shows how a rom file should be programmed depending on its size and the EPROM size:
| ||16k ROM File ||32k ROM File ||48k ROM File ||64k ROM File |
|32k EPROM ||4000-7FFF ||File 0000-3FFF -> EPROM 4000-7FFF |
File 4000-7FFF -> EPROM 0000-3FFF
|- ||- |
|64k EPROM ||4000-7FFF ||4000-BFFF ||0000-BFFF ||0000-FFFF (not tested) |
There could be exceptions. So far I have not done a lot of tests.
The case of programming a 32k ROM file in a 32k EPROM is a bit complicated. If the file contents is meant to be placed in pages 1 and 2, programming
the ROM directly (from address 0000 to 7FFF) is not correct. The content meant for page 1 would appear in pages 0 and 2, and the content for page 2 in
pages 1 and 3 - In other words, the pages would be in the wrong order! To solve this, one must either prepare the rom file by swapping the two 16k blocks,
or program the EPROM in two steps, configuring the source file address and destination EPROM address to program at each step. This is what I
did when I tested Cold Blood.
Here are the games/tools as well as the (E)EPROM flash chips I have used so far:
|Game/tool ||File size ||Chip used ||Programming notes |
||48k ||64k OTP EPROM (Atmel AT27C512R) ||0000-BFFF |
|Tiny slot checker
||16k ||32k EEPROM (Winbond W27E257) ||4000-7FFF |
||32k ||32k EEPROM (Winbond W27E257) ||File 0000-3FFF -> EEPROM 4000-7FFF |
File 4000-7FFF -> EEPROM 0000-3FFF
||32k ||64k EPROM (TMS27C512) ||4000-BFFF |
Here are a few pictures showing example uses:
With AT27C512R EPROM
With a socket
With an EEPROM in socket
This PCB is for sale at
Playing games using the keyboard works fine, but I prefer using a gamepad or joystick. My MSX has two joystick ports
on the right side. Those ports use the familiar 9-pin DE-9 style connectors, as seen on the Atari 2600, Commodore 64, Sega Master System,
Megadrive, and many others.
I connected a Sega Master System controller to see what would happen, and it seemed to work perfectly at first. But I soon
realized that something was wrong: Only one button was working!
A few moments later, I had 3 pinout tables in front of me and I was comparing how SMS, Megadrive and MSX controller ports are wired:
|1||Up ||Up ||Up |
|2||Down ||Down ||Down |
|3||Left ||Left ||0 / Left |
|4||Right ||Right ||0 / Right |
|5||+5v || ||+5v |
|6||Button 1 ||Button 1 ||Button A / Button B |
|7||Button 2 || ||SELECT |
|8||Output (OUT) ||GND ||GND |
|9||GND ||Button 2 ||Button C |
So SMS controllers expect a GND on pin 8, but on MSX, pin 8 is a software-controllable output. By default, this output
is set to a logic low level (more or less equivalent to GND), this is why my SMS controller partially worked. However,
there is no way button 2 would work, being wired to pin 9, which happens to be GND on MSX.
So I built a simple adapter which connects GND and Button 2 to the right places, according to the table below:
|SMS||MSX ||Function |
|1 ||1 ||Up |
|2 ||2 ||Down |
|3 ||3 ||Left |
|4 || ||Right |
|5 ||5* ||5 volt power (used by Megadrive controllers) |
|6 ||6 ||Button 1 |
|7 || ||Not wired |
|8 ||9 ||GND |
|9 ||7 ||Button 2 |
I did consider wiring MSX pin 8 (OUT) to the SELECT input (pin 7) for Megadrive controllers. But the signal
OUT being low by default, the left/right directions would not have worked, and the usable buttons would have
been Start and A.
I could have used an inverter, as is done by the JoyMega
some games and tools may have been able to use the additional buttons present on Megadrive controllers. But all I wanted
was a controller with two working buttons and a good D-pad, so I went with this simple wiring-only adapter.
The adapter I built
In use: SMS controller on a Sony HB-10 computer
Looking for a ready-made adapter?
As I often do, I built several and they are for sale at