The BASIC print+goto loop might have been my first ever program too (in the 80s) but one thing for sure for me: it was definitely not “Hello, World”. I and others filled the screen with any number of silly things, random words, jokes and juvenile phrases, whatever, but for some reason, “Hello, World!” was a C thing, and I remember seeing it for the first time in a C class in high school, and then much more often in college.
I have memories of ‘poke’ as well. On the Atari 800 you could poke memory to change the keystroke repeat rate and delay before repeat started, so obviously we would turn down the delay to zero and turn up the repeat to max (it was maybe 60 characters per second), so anyone trying to type couldn’t hit the keys quickly enough to avoid repeating. You’d have to power-cycle the machine to fix it, so it was hilarious to 11 year old me.
Similar to his description of ‘poke’, but different mechanism - using debug.com on an IBM PC jr to edit the Ultimate III save files, and give myself maximum money and lives.
I think my second BASIC program was the "guess a number" one -- that seemed really popular in intro basic programming things in the 80s also since it showed keyboard input and conditionals and was, uh, fun-adjacent.
The reason that "Hello, World" is a C thing is that C is the source of the tradition around that phrase. In Kernighan and Richie's "The C Programming Language" printing "Hello, World" is the very first exercise.
It's actually a B thing
<a href="https://news.ycombinator.com/item?id=27048024">https://news.ycombinator.com/item?id=27048024
Interestingly enough, in the linked text, B is referred as a "language", follow by "the generated code is quite good", presumably referring to the resulting Assembly code.
I disagree as that doesn’t introduce using the B environment with a Hello, world program which is the whole point. After K&R it was the canonical first program.
In C, the classic hello world example gets to demonstrate compilation and defining functions. In BASIC, `10 print "Hello, world"` does neither, so it's not a very interesting storytelling step. Hence, the introductory materials for the two end up chunked differently.
and struggled to type this without errors into computers in department stores. I must have read this code somewhere and needed to see it working for myself.
I remember discovering ? as a shortcut for PRINT on the C64. That was when software development as a profession really started looking like a good choice to young me.
In high school, my friend and I were demonstrating to Fred the magic powers of our IMSAI 8080 with ye olde:
10 PRINT "FRED IS A GEEK"
20 GOTO 10
To wit my friend and I would giggle and taunt.
Undaunted, Fred took a look around, found the power button, and turned the machine off. Yes, that power button next to the "DO NOT TURN OFF" sign.
As the monitor and LEDs faded to black, the giggling stopped and my friend and I stood aghast at Fred's treachery.
Fred left, and we were tasked with restarting the machine, getting to the monitor, keying in the hex code of the cassette loader, and reloading BASIC from cassette.
On my Spectrum I came up with:
10 GOTO 20
20 GOTO 10
It would start the Spectrum's "loading screen" border which would then scroll infinitely.
At some point I also opened it up to see what it looked like on the inside, but I managed to damage the keyboard in the process. Thereafter whenever I wanted to play a game (via joystick) I would have to use a piece of wire to manually select the rows/columns of the matching keys to enter the load command.
dahart · · focus · HN ↗
I have memories of ‘poke’ as well. On the Atari 800 you could poke memory to change the keystroke repeat rate and delay before repeat started, so obviously we would turn down the delay to zero and turn up the repeat to max (it was maybe 60 characters per second), so anyone trying to type couldn’t hit the keys quickly enough to avoid repeating. You’d have to power-cycle the machine to fix it, so it was hilarious to 11 year old me.
Similar to his description of ‘poke’, but different mechanism - using debug.com on an IBM PC jr to edit the Ultimate III save files, and give myself maximum money and lives.
Good times!
dgacmu · · focus · HN ↗
I think my second BASIC program was the "guess a number" one -- that seemed really popular in intro basic programming things in the 80s also since it showed keyboard input and conditionals and was, uh, fun-adjacent.
mcherm · · focus · HN ↗
gabrielsroka · · focus · HN ↗
bojan · · focus · HN ↗
NetMageSCW · · focus · HN ↗
guelo · · focus · HN ↗
andsoitis · · focus · HN ↗
codazoda · · focus · HN ↗
The first one runs on an ESP32 that I plan to use as a watch. The software works, I just need to finish the 3D printed case.
The second runs on an RP2350 connected to my living room TV via an HDMI cord.
I have so much appreciation for these old machines I grew up with.
yencabulator · · focus · HN ↗
chihuahua · · focus · HN ↗
dotancohen · · focus · HN ↗
whartung · · focus · HN ↗
Undaunted, Fred took a look around, found the power button, and turned the machine off. Yes, that power button next to the "DO NOT TURN OFF" sign.
As the monitor and LEDs faded to black, the giggling stopped and my friend and I stood aghast at Fred's treachery.
Fred left, and we were tasked with restarting the machine, getting to the monitor, keying in the hex code of the cassette loader, and reloading BASIC from cassette.
Got it to work on our second try!
tc43 · · focus · HN ↗
animal531 · · focus · HN ↗
It would start the Spectrum's "loading screen" border which would then scroll infinitely.
At some point I also opened it up to see what it looked like on the inside, but I managed to damage the keyboard in the process. Thereafter whenever I wanted to play a game (via joystick) I would have to use a piece of wire to manually select the rows/columns of the matching keys to enter the load command.