Hi. My name is David. After years (a decade?) of lurking I'm happy to finally join the community!
My first computer was a Sinclair ZX Spectrum. I spent all my time writing BASIC programs, learning from a "Building BASIC" series from a magazine. At the back of the Spectrum manual was a table of Z80 mnemonics and opcodes, with strange columns labeled "After CB" and "After ED". What did this mean? Some kind of alien language? I don't know... Then one day a magazine did a series on Z80 Machine Language. Machine Language? It held the promise to unlock the real power of the Z80, and claimed 100x speedup over BASIC. This 13 year old was hooked. I took my first steps into a new world.
Next came the Atari 800XL and its 6502. I skipped BASIC entirely, immediately buying the Atari Assembler Editor cartridge - possibly the slowest assembler in the world. Having gotten used to the many registers of the Z80, the 6502 seemed a bit of a step back, but I got to grips with it - eventually preferring its simplicity, and marveling at its speed. The custom graphics hardware of the Atari gave me lots of things to experiment with. I'd just started to dip my toe into interrupts on the Spectrum. The Atari was all about the interrupts. Display List Interrupts. Vertical Blank Interrupts. So cool. The graphics modes... the colors... Oh yeah... I was a 15 year old game programmer!! Well... not really. I dabbled, but my programs never progressed beyond a few hundred lines. Did I mention how slow the Atari Assembler Editor cartridge was?
The Atari ST (who could afford an Amiga? I mean... really?) introduced me to the 68000. From a 6502 to a 68000.... Oh my God that's one hell of an upgrade. So much to learn. So fun. The HiSoft DevPac assembler was super fast. This Atari's display system was very simple, so it was all about writing the optimal software sprites code, taking interrupts to change colors and sync to the display. I never did get into sound programming on any of these early machines. For me it was all about moving little 2D shapes around the screen.
The ST and its 68000 kept me going through university (I had a very brief affair with a 6809). My first job was building network equipment using 68000-based VME chassis. Although mostly in 'C', my 68k skills helped immensely with debugging.
Most of my professional life has been working closely with hardware engineers and chip designers. With the help of a Digilent FPGA board, I taught myself Verilog to give me a good frame of reference when talking to chip guys. It has given me an invaluable insight into the constraints these guys are up against.
In the early 2000s I picked up Nintendo GBA programming... ARM assembly. This was Atari 800XL-level fun. Sprites and cool graphics. I wrote a few simple games for myself. Held my interest for a while.
In the mid 2000s I landed at a company that uses embedded MIPS32 cores in its ASICs, and that's the fun that keeps me busy to this day. Most of my work is in 'C', and the system I work on is bespoke enough that it requires me to write more than the occasional assembler code. MIPS32 was my first practical introduction to an MMU. I used to get intimidated by kernel code that referred to virtual addresses. Used to.
A very good friend of mine once said, "PCs are arse", and he meant it. He had an Amiga and I had an ST. While we played the games of the late 80s, you couldn't find two PCs that had the same graphics hardware, and if you did find a PC it had the graphics capabilities of a ZX-81. At least that's how we saw it. Because of this I never found any interest in the x86. The 90s brought 3Dfx and the beginnings of the hardware-accelerated 3D revolution - complete with Doom and Quake and all the gib splattering first-person gore you could imagine. Glorious as a gamer, but everything was abstract. The graphics were all hidden behind APIs and drivers. From a programming standpoint, it offered me nothing. The 90s also brought 386BSD, NetBSD, FreeBSD and Linux. Now you could have UNIX on your own PC. Create 5 user accounts and send mail between them. Go 'su'. Be root! Yeah... I'm a nerd.
So PCs are not, in fact, arse. And as I type this here on my Windows 10 laptop. I am, very much, "A PC". And although I do speak Linux and from time to time may write a line or two of code that runs on an x86, I don't really "speak" x86... beyond the trivial amount one must know to inspect a crash dump.
I still have my ZX Spectrum, Atari 800XL and Atari ST. They're safe in a cupboard. In boxes I open every 3 or 4 years just to see them. I'm in the US now, so none of it works (being UK kit). But I can't let it go... Unlike my first PC, which was unceremoniously dumped in a skip as soon as I bought an upgrade. When I'm feeling nostalgic I fire up an emulator on my laptop. Bursts of nostalgia often last only minutes, but some times you just have to play Bruce Lee on the Atari 800XL.
The 6502 represents a time of discovery and play for me, when you could understand everything that was going on in a system. That's a little lie. The 15 year old me didn't understand it all. He had no idea how the tape drive worked. Or the floppy drive. Or the sound system. Or really anything in the OS. But he did understand the CPU and the graphics. And he rarely spoke about himself in the 3rd person.
I always wanted to build an computer from scratch. Not just CPU, memory and blinky LEDs though... but something with a keyboard and graphics. I've been interested in logic design my whole life, but early on I discovered something key: I don't like soldering, or plug-boarding, or wire-wrapping, or pretty much anything about practical electronics building. I can read books about logic design, transistor circuit design, pipeline microarchitecture and even VLSI fabrication all day long... but you put a soldering iron in my hand and I'm just going to back away. If soldering were a cup of tea... it would not be for me. There's probably a better way to phrase that.
I've been reading this forum for years, and I love the passion you all have for the 6502. With the availability of 6502 cores in Verilog, along with an FPGA board with a VGA connector (yay Digilent!) it's finally possible for me to put something together without, for want of a better term, getting my hands dirty. I've synthesized small systems before and had a 6809 system running for a while. But I'd like to design something myself. For the challenge. Work and family always come first, so this is, and has been, a deep background task. I make progress from time to time, but I always make time to read the forums.
So, long story short: Hello, I'm a nerd. Nice to meet you.
|