Introduction
When I was a child, my father bought us our first computer. It was an Acorn Atom. I remember it had no storage, so when we wanted to play a game, we had to enter the code for the game from a printed listing in a magazine or a book and run the game. Errors were tackled by a checksum which was printed next to each line. The computer had 1k of memory. After saving up some money, we could buy a memory expansion. That was just another chip. This chip had to be soldered on the old one (with the exception of one pin, which had to be soldered somewhere else, with a wire). After that our memory was doubled to 2k!
The next computer that came into our house was an MSX. I think it was a Toshiba HX-10 MSX 1. We loved the games on that platform. In the beginning it was mostly games like Road Fighter, Athletic Land and Penguin Adventure and Yie-Ar Kung-Fu, but later the games got better, especially the Konami ones, with games like Knightmare, Maze of Galious and Metal Gear. That last one we could play because we got an MSX2.

Later, we bought a Philips MSX with a disk-drive, so we could play the newer generation of JRPG’s. At this time, games like Dragonslayer 4, 6, Ys series and XAK series came out by new game developers like Falcom and MicroCabin. At first, we played these games completely in Japanese, not knowing what was going on, but later, custom English translations appeared.

Next to playing games, i also got interested in software development. I learned coding my first instructions in MSX basic. First the famous “10 print “jasper”; 20 goto 10″ to fill the screen with my name, but later i did more with graphics in the graphical screens. I created some simple games like a slot machine, but never got further than that. The BASIC language was just too slow to create real responsive games. I wanted to learn Machine Code. In fact, that was a kind of a fascination for me at the time. I could not comprehend how people could come up with these ‘poke’ commands which would enable a cheat in a game! Unfortunately, for me, it was just too complicated to get into. Also, I was about 18 years old at the time so other interests were stepping up.
Second attempt
Now we are 25 years later. And of those 25 years I have worked 20 years as a software developer. All these years I have worked in ‘higher level’ languages, which greatly abstract what the computer really needs to do to get those instructions done. I know deep under the hood, still everything is accomplished by executing Machine Code commands, very similar to the commands in the MSX at the time. So I decided to try to have another go at figuring out how this works after all these years. The heart of the MSX computers is the Z80 microprocessor, made originally by Zilog. In fact, I named my ‘company’ (I work independently in the IT, but needed a company name for legal registration) “Z80 IT” as a tribute to the processor that started it all. The processor itself is very well documented online, so I will not elaborate any further.

For this little project, I decided to take a game as a starting point, and see whether I could figure out how things work by debugging. I always think these hands-on approaches work better that reading books and starting from scratch. Also, with the emulators nowadays it is a lot easier to emulate and debug an MSX machine with an executing game. I decided to take one of my favorite games “Dragonslayer 6” as the subject. I use “BlueMSX” as the emulator. I suggest you download the emulator and the game now, if you don’t have it already, and play the game for a few hours. Use ALT-F7 and ALT-F8 to save and load your current machine state often. And when you’re done, safe the state once more.
The emulator can be found here:
http://bluemsx.msxblue.com/download.html
The game can be found here:
https://download.file-hunter.com/Games/MSX2/DSK/
Download: Dragon Slayer VI – The Legend of Heroes (1990)(Falcom)(en)
In the next blog, I will show how the debugger works, how values are stored and we will change our first memory value to cheat ourselves rich!
A very nicely written introduction! The MSX (and DS6) hold a special place in my heart too.
Please keep the updates coming!
Die geheugenuitbreiding kochten we bij een speciaalzaak in Den Haag (met de trein erheen). Het erop gespldeerde geheugen werd een piggy bag genoemd. Een mooie tijd.