Yes, it's true. I'm starting to fall in love with assembler - mainly on retro systems. My latest assembler "acquisition" is 6809 programming on the Vectrex. Compared to assembler on the ZX Spectrum it's quite easy and one I'd recommend starting with. If you want to have a go here are a few links to get you started:
Start here: http://www.playvectrex.com/designit/christumber/tutorial.htm
Then do this: http://www.playvectrex.com/designit/chrissalo/toc.htm
A word of warning though, the original as9 program is pretty fiddly to use. It hates it if your program isn't tabbed and when that had been solved, thanks to help from twitter, it assembled but wouldn't produce the .s19 file, with no explanation as to why. I then found as09_142 which, again, was a pain in the ass (didn't like opcodes or memory locations in caps - I'd just stick to lowercase for everything) but did assemble, however, instead of this command:
I needed to write:
So how did this start and why the Spectrum? Well, I grew up with the ZX Spectrum and when SpeccyJam came around I practically jumped at the chance to code like my heroes from my childhood. Besides, the rules never said that I couldn't write in assembler, so I did. In fact, out of 30 entries, 5 of us coded on the Spectrum, the rest used modern tools.
My entry? You can find it here, it's not the best, but hey, first time and all that. I even went so far as to start to write an infographic on it, but I haven't finished it yet for two reasons, one is time and the other is that every time I look at it I get stuck on what next to explain about it.
Learning the Spectrum's blend of Z80 assembler took much longer than the Vectrex - a few books and a couple of weeks worth of reading before diving into it. Comparatively, learning Vectrex from the above two links, took about a day. Although, I have yet to come up with a small game as a test of what I've learned so far. I have a few ideas and a "big" project to do with it but at the moment I'm looking small beforehand.
As for how it started? I've been wanting to reverse engineer a couple of DOS programs for a while, namely Daggerfall and X-Wing. But I couldn't start on Daggerfall without starting on Arena first as that was the precursor and it'd make things easier in the long run. I had a very basic understanding of x86 assembler from back in the Uni days, so I added to it with more books on the subject and other research from the net. The Arena reverse engineering project has been started as I've unpacked the exe, put it through IDA Pro and it's a slog to get though with my limited understanding of assembler, especially on the x86 platform. So with me learning these other assembler platforms, I'm hoping that it'll give me a better grasp on how assembler works in it's entirety and it should help me return to x86 assembly and finish those projects.
I do have a couple more systems I'd like to learn assembler for and that's the Amiga/Mega Drive (best thing about these two is that they both use the Motorola 68000 so once I start on one, the other gets somewhat easier to jump onto) and the GP2X/Pandora, although mainly on the GP2X side as I came up with an idea that I still want to do.
05/10/2019To The Missing
It looks like a giant PS2 :D