“Mini” Z80 Computer from HAL Laboratory

艾米心amihart
10 min readJan 21, 2021

HAL Laboratory, the company who created Kirby, Smash Bros, and the Mother series, also created a “mini” Z80 computer. This computer is a “mini” version of a much older computer from the late 1970s and early 1980s in Japan called the Sharp MZ-80C.

Like other “mini” devices to come out recently, like Nintendo’s miniaturized NES or SNES, or the various miniaturized Genesis consoles Sega has put out, this thing does not contain original hardware, but is a more modern board with an inhouse emulator.

This may look like a normal computer, but don’t let the photo deceive you. This thing is small. It is shorter than the Nintendo Switch. The keyboard, cassette tape slot, and screen are all for show. They do not actually work. This is merely a case that surrounds a Raspberry Pi model 1 A+, with an HDMI-out and a single USB port for the keyboard.

HAL Laboratory did not make this computer on their own, but in conjunction with another company called SmileBoom. The company SmileBoom has a series of these computers they refer to as “PasocomMini,” or literally “mini personal computer.” This is the first of two in the series so far, and seems to be much less common.

The board they put in this computer to emulate the games is quite interesting. In fact, it is something you might even recognize.

Yep. It is literally a Raspberry Pi. Honestly, I find it incredibly interesting that such a big company like HAL would be using Pis as the main boards of hardware they release. That’s pretty neat. It also has some other implications. Notice the tiny head of the microSD card sticking out the center-left of the board. That means the software is removable and you can quite easily plug it into the computer.

Of course, if you’re a big company, you don’t want that. You want your software to remain under lock and key. Doing a little fiddling, I found that they attempt to lock the software to each individual board by checking the board’s information from /proc/cpuinfo and also verifying that none of the boot files such as /etc/rc.local haven’t been tampered with. Pointless check as any file can be spoofed to whatever you want in Linux with a single command! Especially since you can just take out the SD card and put it in another computer, you can just add the command to the boot script. Wasn’t very difficult to circumvent that and get it booting on any Pi.

Anyways, let’s put that aside. If you do not recognize what this “mini” computer is supposed to be — if the design is not something you recognize — do not worry. The computer resembles an old Japanese computer which never was released in the US. Specifically, it is meant to resemble a computer called the Sharp MZ-80C.

source: old-computers.com

This was part of a line of computers starting with the MZ-80K released by the Sharp Corporation in 1978. Why did HAL feel the need to make a miniaturized version of this old obscure Japanese computer? No idea. But I’m not complaining. I am a big fan of computers based on the Z80 architecture, and I have never seen an MZ-80C. This miniaturized version does not come simply with fixed preloaded games, but allows you to load new software through the SD card. Meaning, you can actually load new software on it, both from the internet, or maybe something you code yourself. This offers me a neat opportunity to learn how the MZ-80C computers worked and how to write software for them.

I’m not one of those people to be upset by it running an emulator and not real Z80 hardware. Expecting them to release Z80 computers in [current year] would be silly. It is still a computer put together with the specific purpose of running Z80 software and some old computer games, and for me that is still pretty cool!

Before we take a look at the emulator, let’s take a look at an original MZ-80C. Well, I don’t know of anyone who has an original MZ-80C, but there is a person with an MZ-80A, an earlier version, and tons of YouTube videos on it.

On most older computers, as well as many modern ones, the computer does not boot to a graphical user interface, but to a command-line interface. Usually this interface took BASIC commands on older computers, or in later computers (such as DOS or modern Linux computers) takes shell commands. This interface, however, does neither, and is much more simplistic. From the video above, we can see the shell is just called “MONITOR” with some code, probably designating what version it is.

source: the video above

Usually, any command-line interface will begin with some message telling you the name or version of the interface you are working with, and who made it. Notice what this interface says, “MONITOR SA-1510.” Let’s compare this to what the PasocomMini MZ-80C says when it boots.

The MZ-80C emulator is not just running an operating system they ripped from the older computers, but they apparently made their own! Very cool.

If you are a bit astute, you may have noticed that a command-line interface is also shown on the very first image I posted. There is a “monitor” displayed on the fake screen of the computer. Let’s get a closer look at that.

It would appear that the “MONITOR” had different versions for the different models of the computer. I would assume SP-1002 is the one used in the MZ-80C, and the reason the first one i showed is SA-1510 is because that came from someone using an MZ-80A computer. The HAL Monitor is completely unique to this mini MZ-80C computer.

This game comes with several preloaded games, but also the SD card is not encrypted. You can simply remove it and put it in your computer and load in ROMs, put it back in the device and boot it and play them. I’m honestly not aware of many MZ-80C emulators, this is a pretty obscure computer to emulate so having a very high-quality emulator for this computer to play around with is very nice. You might think since the card is not unecrpy

Since this is a Z80 emulator, I should also be able to write my own software for it. Using the very helpful resource MZ-80A Secrets, I managed to get C code compiled using the Small Device C Compiler which runs in the emulator. Playing around with this has taught me a bit about how the MZ-80C computers work and how to code for them.

The computer does come with several preloaded games. I have never heard of any of them. Interestingly enough, one seems to be made by HAL themselves. Is this the reason why HAL made a “mini” version of this computer? To bring back one of the first computers they sold games for? Interesting if so.

Anyways, in the MONITOR, you just type “LD” to load a game. I assume back in the day that would load it from the tape drive, but of course, there is none, so typing LD actually causes a menu to appear showing the games on your SD card.

For some reason, a mouse cursor appears. There is only one USB port on this device. Why a mouse cursor? You need to get a USB hub to even use the mouse. You can see I’ve already loaded this thing with software. Notice how it says “LOAD-ADDRESS”? This tells you where the game gets loaded into RAM. Some software loads automatically, some you have to start it manually by typing the letter G followed by the address. This tells the computer to jump to that memory location.

This game here you control some sort of spacecraft and have to land it on a planet. It’s called “Jupiter” which makes very little sense since you could not be landing a spacecraft on Jupiter… but the interesting thing here is it is made by HAL! They even put it in the game. If you are a fan of HAL, did you even know they made this game? I did not.

This game Zeldis says it was programmed by “Y. Suzuki.” As in, Yoshiki Suzuki? The legend? That guy worked on many Kirby and Smash games as well. Very cool! I had never heard of a lot of this before trying out this computer.

Since we can also load our own software on here, I tried loading BASIC as well. It works quite well, and I’m always impressed by seeing how such old computers could run scripting languages. It must’ve been coded very efficiently.

You might wonder how the emulator’s menus look and feel. I haven’t showed it yet. And that’s because there really isn’t any. The computer actually doesn’t boot up into the emulator. It boots up into this menu.

Here we first see SmileBoom’s influence over the development of this device. You see “SmileBASIC for PasocomMini”? SmileBASIC is a scripting language that SmileBoom made. If you haven’t heard of this language, it’s a scripting language centered around game-development, and has been released exclusively on game consoles. You could get it from the online store on the DSi, 3DS, Wii U, and Nintendo Switch. The store is down for the DSi version and the Wii U version is Japanese only.

What is this scripting language doing on this computer? It seems SmileBoom had a bit of fun here. They made the whole interface to control the emulator centered around their scripting language. Want to reset the emulator? Use the “emureset” command. Want to pause the emulator? Use the “emustop” command.

I find this computer to actually be an excellent too to learning how Z80 computers work, since you can write scripts to manipulate the entire emulator programmatically, and there is even an instruction for disassembling code at specific memory addresses. They even added commands to this version of the scripting language to control the GPIO pins on the Pi.

I’m not going to talk much about SmileBASIC here, but it’s a great scripting language and can do quite a bit. The fact this language is on here means you don’t just have an emulator box here, you can also just use the Pi as a Pi, you code games or whatever software you want and even connect them to external peripherals which you can program as well.

SmileBoom would later go onto release this SmileBASIC Pi version as standalone software called “SmileBASIC-R” which adds even further commands such as internet-related stuff.

I will talk more about SmileBASIC-R in a future post. It is one of my favorite bits of software made for the Pi yet the whole thing is to be found here as a separate mode on this emulator machine. SmileBASIC and the MZ-80C emulator also run concurrently, so you could have code running beside the emulator at the same time. I could imagine even utilizing the GPIO pins.

There is a lot of potential here. I have spent probably over 100 hours coding SmileBASIC on this thing. What did I do with it? I tried to learn the Z80 instruction set. I wrote code to load instructions into the emulator and fill the registers with random values and then see how it affects them, and then write unit-tests to compare these random tests to my variations.

I managed to duplicate most very instruction and now have my own Z80 virtual machine, which I will post about later, which I’ve since ported to C and JavaScript.

This computer is phenomenal if your goal is to learn Z80! It is also a really neat collector’s item if you like HAL as a company.

--

--