







Emulate ZX Spectrum on emulated Commodore 64 on emulated DOS on emulated Windows on Linux



Caution: if you can find anything even remotely productive to do with your time, please do not attempt the following. It is a total waste of ten minutes of your time for the sole purpose of geeking out.



All the required software packages are free, so at least you won't be wasting any money.



Definitions:



ZX Spectrum is an 8-bit computer released in 1982:







Photo: Bill Bertram

Commodore 64 is an 8-bit computer released in 1982:







Windows is a horrible, expensive operating system by Microsoft:







Linux is a great, free operating system:







An emulator is a program that allows one system (eg. Windows) to run programs built for another system (eg. ZX Spectrum). It is mainly used to play old 8-bit games on today's PCs. In other words, a complete waste of time.



What we will do is emulate Windows on a Linux system. Then we will run a DOS emulator under Windows. Then we will run a Commodore 64 emulator in this emulated DOS environment. Finally, we will run a ZX Spectrum emulator on the emulated Commodore machine.



Of course you could emulate Spectrum directly on your current platform, so what is the purpose of the exercise? I have no clue. The voices in my head said that four layers of emulation are so much cooler.

It's like the "dream in a dream" thing in "Inception", right? No? Too bad, we'll do it anyway.



Let's begin!



1. Linux: lubuntu.net



Download and install any Linux distribution. If you're running a different operating system (eg. Windows), you can still install Linux alongside this system and choose which OS you want to use every time you boot your computer.



2. WINE (Windows "emulator" for Linux): www.winehq.org



Download and install the package. No configuration is necessary. Once Wine is installed, you will see it in your menu. Now you can run Windows executables directly in Linux.







3. DOSBox (DOS Emulator for Windows): www.dosbox.com



Download and install. This will create a DOSBox entry in the Wine menu. Don't run it yet.







4. Commodore 64 emulator for DOS problemkaputt.de/c64.htm



Download the "No$C64" emulator (or any other C64 emulator for DOS) and unpack it in your home/user/.wine/drive_c folder. No$C64 is just one DOS executable file.







5. ZX Spectrum emulator ftp://ftp.nvg.ntnu.no/pub/sinclair/emulators/spectrum/c64/c642spec.zip



This is just one file in the Commodore .P00 format. Unpack it in the same folder as the emulator.



6. Run DOSBox.



7. Mount the virtual C: drive (it really points to .wine/drive_c/) as DOSBox's C: drive - type in:

mount c c:\

DOSBox will tell you it's not recommended, but we're still doing it to keep things short and simple.



switch to the C: drive and run the C64 emulator:



c:

no$c64



Your screen should look like this:







8. Your virtual C64 is now humming along at breathtaking one thousand cycles per second (1MHz) and greeting you with the most user-unfriendly screen ever:







Hit F12 to open the disc menu:







Doubleclick the "--> .." (two dots) to go up one folder. Doubleclick on "Spectrum.P00" to run the Spectrum emulator.







Your brand new ZX Spectrum welcomes you with a frivolous splash screen. Take some time to appreciate it, then hit any key:







You can now run Basic programs on your Spectrum! Hit F7 for help.

Congratulations! Your life is now complete.









Disclaimer: WINE means 'Wine Is Not an Emulator" (it does not create a virtual emulated machine but translates calls on-the-fly), so the statement about four layers of emulation is really a lie. To make things worse, the ZX Spectrum emulator for C64 only emulates Basic, not machine code. But that's ok, because it all looks the same and the whole exercise is pointless anyway.







Tutorial: fractal images in Excel - only 16 lines of code



Microsoft and Windows are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. Linux is a Registered Trademark of Linus Torvalds.