Amazing work. I am the same age às the author and also would love to tinker with old hardware. This article taught me that I can do that with emulators all the while using modern developer tools! That’s very motivating, will see if I can get started. My first computer was a PC XT 386 IIRC, maybe I can do the same kind of thing on that.
I have been continuously hacking on my first computer, received in a delicate cross-Nullabor operation in 1983, the lovely little Oric-1. It’s a 6502 ‘also-ran’ victim of the 80’s 8-bit computing war, but is still .. fascinatingly .. actively hosting new software, even today.
The retro scene is alive and well, and in many small ways, flourishing. Even the obscure platforms get new device peripherals designed for them - among other things in my retro corner, I have a remote controllable Amstrad CPC6128 with an M4 card, putting it on a network .. a couple of ZX Spectrum variants with so much storage attached, the ‘why not just put every single spectrum game on it, ever’ question just hangs in the ether .. and an original C64 and Commodore monitor rig, sitting at one end of the city waiting for a LoRa/meshtastic session, to set it up, so we can chat with the other Oric/ZX Spectrum/Amstrad/etc. systems all over the place.
Anyway, I just want to point out, there is a very thriving retro scene, so learning assembly and participating in it, in your own way, is a very stimulating hobby. Even if you are a master of all the current tooling, learning the tools of the ancients will make you appreciate just how much bloat we tolerate, needlessly.
In any case, its often surprising where 6502/z80-like systems turn up these days, too ..
Honestly, Assembly is great. It's the most closer-to-the-metal, no-nonsense, raw experience you can get. The problem is that means it's also tedious and error-prone to write, but the elegant simplicity of the abstraction is still there.
I had an Atari 1040 ST and I used to love programming it in 68000 assembler mostly using K-Seka. It really felt like programming a 32 bit CPU which was amazing after the 8 bit world that preceeded it. The instruction set was very orthogonal (other than the slightly odd split between A registers and D registers). When I graduated from 68000 assembly to ARM assembly it felt like a natural progression.
Probably my best project was a FORTH system. It used direct threading so each FORTH word was a proper assembly routine. It had primitive peephole optimization too! It was all written in 68000 assembler with K-Seka.
So if you want an assembler to learn, 68000 is a great choice. However you could learn 32 bit ARM which I came to prefer and that will still run on modern systems (at least if they have been compiled with 32 bit support or on the plentiful ARM microcontrollers).
This article is less about assembly programming and more a tour de force on retro game development for the Atari ST. The author talks about using inline assembler to optimize gfx and game rendering inner loops. Oh and the author ported Doom to the Atari ST.
Some people are drawn to assembly and that’s great. Me personally, after a course in undergrad studying MIPS assembly, I learned to appreciate what all the compiler does for us and moved on!
I want to like it but my brain is too feeble for it.
I will wait for when efficiency (as well as speed) comes from elegance in the programming language itself rather than the human mind having to cater to some fundamental archaic syntax.
I guess it would be nice to have a more entry level piece not just a more advanced stuff and a story. Still nice. But not that involved and getting into IT is more than involvement and interaction.
Wonderful article! Programming 68000 assembly is a joy. People are quick to dismiss CISC instruction sets because they mostly encounter x64 with its baggage of legacy, but 68k is something else.
Ben Eater delves into 6502 assembly with regard to his bread-board 6502 computer. I recommend anyone interested in assembly do a search (on YouTube) for his series.
I got one of his kits and assembled it while working through his YouTube series.
(I didn't, at the time, continue very far into the assembly course, but perhaps will this Winter when I am hunkered down in the Midwaste with the blizzards beating down on my home.)
Tangentially related. I want to play around with Web Assembly just to try to speed up (or perhaps parallelize) my own implementation of the "ray casting" "voxel" algorithm that the author demonstrates from the old Comanche game.
19 comments
[ 2.3 ms ] story [ 46.8 ms ] threadThe retro scene is alive and well, and in many small ways, flourishing. Even the obscure platforms get new device peripherals designed for them - among other things in my retro corner, I have a remote controllable Amstrad CPC6128 with an M4 card, putting it on a network .. a couple of ZX Spectrum variants with so much storage attached, the ‘why not just put every single spectrum game on it, ever’ question just hangs in the ether .. and an original C64 and Commodore monitor rig, sitting at one end of the city waiting for a LoRa/meshtastic session, to set it up, so we can chat with the other Oric/ZX Spectrum/Amstrad/etc. systems all over the place.
Anyway, I just want to point out, there is a very thriving retro scene, so learning assembly and participating in it, in your own way, is a very stimulating hobby. Even if you are a master of all the current tooling, learning the tools of the ancients will make you appreciate just how much bloat we tolerate, needlessly.
In any case, its often surprising where 6502/z80-like systems turn up these days, too ..
Probably my best project was a FORTH system. It used direct threading so each FORTH word was a proper assembly routine. It had primitive peephole optimization too! It was all written in 68000 assembler with K-Seka.
So if you want an assembler to learn, 68000 is a great choice. However you could learn 32 bit ARM which I came to prefer and that will still run on modern systems (at least if they have been compiled with 32 bit support or on the plentiful ARM microcontrollers).
Some people are drawn to assembly and that’s great. Me personally, after a course in undergrad studying MIPS assembly, I learned to appreciate what all the compiler does for us and moved on!
I will wait for when efficiency (as well as speed) comes from elegance in the programming language itself rather than the human mind having to cater to some fundamental archaic syntax.
https://news.ycombinator.com/item?id=45646958
I guess it would be nice to have a more entry level piece not just a more advanced stuff and a story. Still nice. But not that involved and getting into IT is more than involvement and interaction.
I got one of his kits and assembled it while working through his YouTube series.
(I didn't, at the time, continue very far into the assembly course, but perhaps will this Winter when I am hunkered down in the Midwaste with the blizzards beating down on my home.)
My straight Javascript implementation: https://github.com/EngineersNeedArt/Mooncraft2000