It's been said many times here before, but Woz's "annus mirabilis" from March 1975 to April 1977 when at just 26yo, he designed, implemented and launched the hardware, kernel, sound and color output as well as a BASIC interpreter (and much more) for the Apple I and II is one of history's greatest technological achievements. It was a tour de force of talent which is astounding to this day.
And Ben Eater has taught me more about how computer hardware and software work at the lowest level than any other resource I've come across in my 25 years in the tech industry. Truly inspiring.
Even as a high schooler playing with Integer BASIC on the Apple II back then, there was a Woz aura with that device.
I got started on a TRS-80 Model 1, which was interesting… but when the Apple II showed up, it was just different and set me on a journey that I’m still on.
Same. With me, I started on an Apple after a brief look at a TRS-80 a neighbor had.
The Apple was just itching to be explored.
Still have one. Still use it on occasion too. Last major use was to play through Nox Archaist. 8 bit RPG programmed with modern sensibilities in mind. Too much fun.
The Apple 1 ROM is quite a tight piece of coding. Just 256 bytes which implements basic console IO, and memory editing in hex. And still two bytes left over. Legend is Woz wrote it directly in machine language. One version with lots of comments: https://github.com/jefftranter/6502/blob/master/asm/wozmon/w...
You can see a classic assembly language space optimizing trick at PRBYTE. It first prints the upper half of the byte in hex with call to the PRHEX procedure, then falls through to PRHEX again to print the second half.
Indeed, an assembler, and a computer to run it on, were luxuries in those days. I'll bet a lot of early code was hand assembled. It wasn't too hard on 8 bit machines. I coded on grid paper. In reality, all it took was a few dozen lines of code and I was simultaneously hooked on coding, and motivated to earn enough money to buy a computer of my own.
In addition to having access to computers, even just being able to get a copy of any software and do anything with it were a bit of a hurdle if you had started at the chip level.
I've done that too. The real fun start when you expand it with bigger memory, add a stack pointer, make the ALU a bit more capable by swapping in different chips, etc. Very rewarding project. Like doing nand2tetris, it completely demystifies computers to many programmers.
It also gives you RSI issues from bending solid core wires if you're not careful. Take breaks! :-)
And you can stuff it in a frame and have some cool wall deco! I eventually added a boot loader and "punch card reader" to mine which works with some photo diodes. I print out a programming strip on an ink jet and can slide it through the reader to load a program. When I have geeky visitors I give them a program to load.
Ben Eater may just be one of the greatest educators of his generation. There's going to be so many good old engineers 20 years from now who trace it all back to his videos.
> It also gives you RSI issues from bending solid core wires if you're not careful. Take breaks! :-)
Too late :D
> And you can stuff it in a frame and have some cool wall deco!
Right, i have already got a ground plane to mount it on. Do you have a glass/acrylic plate on your frame like this https://monster6502.com/ ?
> I eventually added a boot loader and "punch card reader" to mine which works with some photo diodes. I print out a programming strip on an ink jet and can slide it through the reader to load a program. When I have geeky visitors I give them a program to load.
That idea is really cool, maybe i'll try that too in the future! I have thought about adding a diy discrete UART of some sort. Oh and upgrade it to an SAP-3 in the future.
Woz's software is fun to read if you like 6502 assembly. Wozmon and Apple II Integer BASIC are great, but my favorite is Sweet16. It's a 6502 program that implements a virtual 16-bit CPU in about 300 bytes. It's a step between the tedious 8-bit limitations of the 6502 and and a fully interpreted environment like BASIC and was part of the Apple II ROMs. Nobody really wanted a slower ML or a more difficult, faster BASIC but it's a brilliant bit of code.
Great tutorial on using Wozmon! I recently built a complete Apple 1 in Scratch. It runs Wozmon and I also included Steve Wozniaks' original Integer BASIC, which used to be loaded from cassette tape.
https://scratch.mit.edu/projects/646921021/
And Ben Eater has taught me more about how computer hardware and software work at the lowest level than any other resource I've come across in my 25 years in the tech industry. Truly inspiring.