Over the last three months, I’ve developed an unusual little nighttime routine: after
reading bedtime stories to the kids, I hop into bed and instead of reaching for
a fiction book, I’m turning on my 14-year old
Asus eeePC 701 miniature laptop
and writing x86 assembly language. This is turning out to be an insanely good
use of my time…
My faithful eeePC 701 is a 32 bit Celeron “netbook” mini-laptop from 2007
currently running Alpine Linux and is seen here editing my very early
work-in-progress NASM port of “JonesForth”. This little computer has run more
versions of Linux and BSD than I can count! It is also warm on a cold night.
My interest in the Zig programming language has driven me into a deeper interest in “systems-level” programming and that, ultimately, seems to lead to computer architecture, instruction sets, and assembly languages.
Learning environment
For reasons I can’t explain, it just feels right to use my tiny computer with
its tiny keyboard to type tiny instructions late at night. I suppose it stands
to reason that being in a completely different environment from my normal
desktop development machines put me in a receptive learning mood.
Also, though I did install
Lynx,
this is not a great machine for modern Web
surfing (except for ratfactor.com, of course). So it’s a pretty
distraction-free device.
Since this little computer is used for nothing else, I’ve been slowly
customizing it for this one task: when I log in, my .bash_profile
script
immediately does a cd
to my assembly project directory.
I have a bunch of little cryptic one and two-letter scripts and aliases that
open my project and related documentation in Vim, or start up the GDB debugger
and run a GDB script with a breakpoint at the last thing I was working on.
These little things make it so much easier to get going when I’m tired and not
feeling like expending much effort. Now I’m at the point where grabbing the eeePC,
logging in, and opening the assembly project is automatic, like brushing my
teeth.
So, what’s this project I’m working on?
Porting JonesForth
Immediately after completing the lessons on asmtutor.com (see NASM under
Resources below), I immediately began on one of the “bucket list” projects I’d
shelved many moons ago: reading and understanding Richard WM Jones’s
JONESFORTH.
But not content to merely read it, I’ve decided to port it to NASM.
The progress has been incredibly slow because I’m new to assembly in general
and NASM specifically. JonesForth is wr