I want to play with assembly language, so I’ll need a development environment. Sure, there are always emulators, but if I’m going to do this I’m going to do this right.
This is not the Commodore 64 I used as a kid, unfortunately, but it’s a pretty good substitute from about the right year – 1984. The 64 uses a MOS 6510, which is a 6502 with a couple extra features. If you’re familiar with 80s micros, you’ve probably noticed there’s no disk drive. I’m not a purist about these things. Floppy drives are a pain. They’re prone to both electrical and mechanical failures, and the disks themselves are also showing their age. In 2012, there are better ways.
This cartridge is the 1541 Ultimate II. It’s an example of the sort of cool things people in the retrocomputing community can do when they put their minds to it. As the name implies, the 1541 Ultimate imitates a Commodore 1541 floppy disk drive – and it does a very convincing job of it, too. The disk images are stored on a 4GB SD card so, yeah, I have a C64 with 4GB of storage attached to it.
(How accurate is the 1541 Ultimate? Not only is it compatible with a lot of fast loaders and copy protection schemes, but it even imitates the sound of an actual 1541 disk drive!)
So I have a computer, and I’ve got all the (virtual) floppy disks I’ll ever need. What’s left? Well, I’m not nearly masochistic enough to poke my machine language routines into memory with BASIC, so I also need a machine language monitor or an assembler. There are a lot of choices, and some of them are still being developed today – and then there’s the whole field of cross-assemblers, which I’ll talk about one of these days.
But let’s start small. A machine language monitor lets you view a computer’s memory, start and stop programs, inspect registers, and assemble and disassemble machine code. The one I’m using in the screenshot above is included in the Maverick disk copying utility program. It’s not particularly fancy or featureful, but it’s enough to start with.
So I’ve got a working computer, plenty of space, and a basic development environment. Oh, and it also plays a mean game of Lode Runner. With that, I should be all set.