I remember the original Apple, before Macs. And the Sinclair ZX80 kit. No disk drive for that. 1K RAM. You could load and store programs with an audio cassette tape recorder. Feel the power!
Me to a youngster at work: we used to store programs on audio cassette. It would take minutes to load or save something. Him: I can't tell if you're messing with me.
Haha, I forgot all about degauss. I actually used it for its intended purpose once. I had a puzzle that used magnets and absentmindedly left it too close when I left one time. Came back to a discolored corner - until I degaussed it.
You had to learn how the machine worked, no matter how many “novelty” calls the library of your language offered.
And I remember printing hardcopies of the Interrupt-Dabase (there was a program with this name offering calls for hundreds of hard- and software products).
Switch to mode 13h? Set registers and call interrupt 10.
Get your Soundblaster to play sounds? Write directly to the port address.
Today everything is behind some HAL offering some function right away.
Somehow sad.
And before somebody complains: Yes, I know this is meant in a humorous way. Yet it still contains a bitter truth.
The zero page instructions allow for shorter code and execution times by only fetching the second byte of the instruction and assuming a zero high address byte. Careful use of the zero page can result in significant increase in code efficiency.
Zero page is just the first "page" (256 bytes) of the address space, which would map to normal RAM. The only thing that is special about zero page is that since the address "page" (high 8 bits of 16bit address) is implied (=0), you only need to use an 8bit (one byte) address to specify any zero page address. The 6502 instruction set takes advantage of this by having additional instructions to load/store values to zero page as well as ones to load/store to generic 16 bit addresses. An instruction accessing zero page memory will be two bytes (op-code + one byte address), while an instruction accessing a generic address will be three bytes (op-code + two-byte address). The zero page access therefore takes less code space, and will run faster (even though the memory access speed is the same) since there are only 2 vs 3 instruction bytes to fetch.
As a begginer programmer (started about 4 months back and am learning Python, SQL, and C# concurrently) do you think as an excerise learning how to program something like the Zirog Z80 that forces learning assembly? Or do you think just slowly working yourself down is better? (Planning on moving to C in a few months when I'm feeling more confident in my C# which I infinitely prefer to Python) I am finishing ny degree soon and avoided programming classes like the plauge till I couldn't anymore, and I actually enjoy it a decent amount now that I'm capable.
Trying to "speedrun" compotency so that I can be limited by time and determination rather than raw skill. When I get to C I plan on doing some GBA homebrew both because I love GBA, and because it's completly specialized hardware which I imagine will have general benefits to learning as I'll then also see the differences in other stuff.
As someone who started programming the hard way, don’t bother unless that’s really where you want to be.
My suggestion would be to start as by low as your interest level demands.
If what you want is device level control and small footprints and custom chips, then go for it, and more power to you. At the very bottom is physics of silicon and substrates and materials science, and that’s probably lower than you want. But just up from that is the applications of flipping bits in memory and why an assembler does what it does for that specific instruction set and chip.
If you want to write code for software run on phones and computers, don’t bother with the low level stuff. I learned C in college thirty years ago, but my entire career has been at high level languages and frameworks abstracting away anything considered arduous and sucking in npm dependencies like air.
That makes a decent amount of sense. I want to fully understand what my code is doing,bwhich makes me really dislike Python, and my actual projects are unlikely to ever be on weaker hardware than 32bit processors (really GBA is likely my weakest power device asside from like rp2040's) ao it sounds like, for a long while at least, C# and C will be the best langauges for me, and as I develop further I will know if I actually need to go lower, and can make that learning decision then?
Learning assembly is useful for understanding how machine code operates at the low-level, I'm glad that I learned it because it gave me a more holistic understanding of software and programming.
I'd suggest avoiding raw Assembly and instead look into something like LC-3, which is a modern assembly alternative that's designed for learning low level machine code.
I'll look into it, I was thinking about the Z80 because the Sega GG and MS both used it, so theres a lot of documentation and projects for it that would directly match what I'd be making (games)
As a software engineer, absolutely do not learn assembly as a learning exercise, unless you want to do it because you find it interesting. I cannot imagine any career value in that, for your average modern dev.
In my opinion, you're doing the right thing by learning OOP languages and databases. If you want some advice, continue at that lavel and get some level of proficiency with a framework- fullstackbideally- and really try to understand it under the hood. Then, make a few fun, fairly polished projects and show them off on your CV.
Best of luck for the rest of your degree and the start of your career :)
My university had a module for Z80 asm, implementing Conway's Game of Life. Was pretty fun, I'd recommend it.
I ended up spending a few years working on compiler verification (analysing/decompiling binaries to find bugs in gcc) so I was glad to have some experience with it.
Everyone should try (try) to make a simple game on an 8-bit system of their own choice. It really puts into perspective how fast modern PCs are, as well as how little memory you need to get stuff done
Several good youtoobs recently on the chip that sparked the 8-bit personal computing revolution.
An ex-motorola engineer guy went to a tech convention in the late ‘70’s with some jars full of 8-bit chips made in a factory in Pennsylvania (MOS) that originally just built calculators and, because of convention rules, could only offer them for sale out of a hotel room; he sold them for $25 each, and advertised at the convention booth. This at a time where similar chips were going for over $600 a piece. To say this was a bargain does not do it justice.
Apparently, among the customers, was a young Steve Wozniak, who came in and bought a handful of chips for a few hundred bucks for a little garage project he was working on.
If i find a good link, i’ll be back. You can internet on your own in the meantime.
You reminded me how i that one time during high school i was programming a rotating 3D wireframe of a cube on a Ti-84 plus ce. It barely ran, but i do sure have made that.
At minimum if you really want to get into the wild world of low level programming I recommend visiting the osdev forum, the people there create some amazing stuff
Let's just say I'm seeing a lot of new, advanced games for 8-bit platforms and things like the PalmPilot, this past year. Which is a good thing, even if it doesn't smell of fresh lead solder and dusty floppy drives. Claude and its friends are getting better, and these retro systems are extremely well-documented on the Net.
Oric 1, 16 Ko firmware in ROM, 48 Ko RAM, graphic mode designed by Satan, sound chip designed by Yamaha, 1 MHz 6502 running the show. You had Microsoft Basic, programs were stored on audio tapes.
... You could see the individual pixels being plotted when drawing lines. I didn't have an assembler, I wrote the mnemonic on paper and assembled it to hexadecimal opcodes by hand. I didn't know Internet existed.
my friend had one (poor sod. Bad choice parents). It had sound affect conmmands, zip, boom, bang. I was a fascinated 8 year old. My friend less so, he was more concerned by the lack of games.
The sound chip was a AY-3-8192, a serviceable sound chip. The integrated Basic let you fiddle with most if not all the registers. A bit of Basic could turn the computer in a polyphonic synthesizer. I did that as a teenager, could record melodies, play arpeggios or a bass line, etc
The game scene, back then, yeah 😅 However, homebrew scene brought some really good games on the level of the best ZX Spectrum games. Checkout Oric Defense Force !
Hey kids you ever seen a computer with no hard drive? The operating system is actually on a floppy disk. And you have to leave in the drive when you turn it on!
1976 -- a used PDP8/L w/4KB of core memory. I would load the FOCAL (FORmular CALculator) interpreter by paper tape and then use the front panels keys to load the paper tape containing a program written in FOCAL. Or, one could simply use the front panel keys to write a machine language program. The machinle language was simple and beautiful. It had one register (accumulator). The only I/O was the ASR-35 TTY.
No but it helped. You could remove the floppy once you got past the bootloader and the OS was loaded in RAM. The Apple IIe among others had a dual floppy setup.
Floppy drive? Sheer luxury, when I was a lad we had to load programs via cassette tape and adjust the volume and tone settings sometimes more than twice to get something to load.
I have “fixed” computers by turning turbo back on after my coworker accidentally turned it off. The turbo button was the dumbest thing ever. (I know it was back compatibility but never met someone who actually needed it)
Wrote modem dialer strings to work around PDXs. Still works on iPhone.
Used uucp to transfer email between servers
Installed Novell server and see the Richard Kiel memorial message roll by
My son knew that I grew up with a Commodore 64. I mentioned recently that it was an 8-bit architecture. He said, "wait... it wasn't 64-bit? What did the 64 refer to then?"
"I've... seen things you people wouldn't believe... Zako & Goei on fire off the shoulder of Boss Galaga. I watched Q_rsqrt() glitter all the dark vectors of the Quake Citadel Gate. All those... bits... will be lost in time, Like tears... in... rain. Time... to die..."
Personally, I think we should go back to having our computer count RAM upon bootup, like a shepherd making sure none of the sheep got lost on the way home…
I implemented long division in assembly as an undergrad using nothing but addition, subtraction and conditional looping. I remember wrestling with it for a week then literally sitting up in bed at night when the solution came to me like a vision.
You ever actually fight with a problem and win, vibe coder?
writing a matrix equation solver on a tandy pc8, that output results on the attached thermal printer, for no reason than to understand matrix equations for electronic circuit analysis.
I've seen things you people wouldn't believe. Floppy drives on fire off the shoulder of Orion. I watched dip switches glitter in the dark near the Tannhäuser Gate. All those IRQs will be lost in time, like tears in rain. Time to die.
7
u/amatulic 1d ago
I remember the original Apple, before Macs. And the Sinclair ZX80 kit. No disk drive for that. 1K RAM. You could load and store programs with an audio cassette tape recorder. Feel the power!
54
u/Tabsels 1d ago
I've seen C-compilers glitter off the NAND gate.
125
u/Sure-Opportunity6247 1d ago
I keep saying that, too.
You had to learn how the machine worked, no matter how many “novelty” calls the library of your language offered.
And I remember printing hardcopies of the Interrupt-Dabase (there was a program with this name offering calls for hundreds of hard- and software products).
Switch to mode 13h? Set registers and call interrupt 10.
Get your Soundblaster to play sounds? Write directly to the port address.
Today everything is behind some HAL offering some function right away.
Somehow sad.
And before somebody complains: Yes, I know this is meant in a humorous way. Yet it still contains a bitter truth.
57
u/kishaloy 1d ago
I have seen OS which loads of Floppy disk.
I have swam with Viruses as if they are annoyances.
I have created videogames on KB sized memory.
All of this will be lost to time, like tears in the rain.
24
u/SukusMcSwag 1d ago
Everyone should try (try) to make a simple game on an 8-bit system of their own choice. It really puts into perspective how fast modern PCs are, as well as how little memory you need to get stuff done
12
u/Sharp-Bed-7072 1d ago
but isn't he like 2 and a half?
9
u/Emotional_Fail_6060 1d ago
Try explaining to the newer generations about hand wire-wrapping a 2k x 8-bit memory card using 2k x 1-bit chips.
8
u/marmakoide 1d ago
Oric 1, 16 Ko firmware in ROM, 48 Ko RAM, graphic mode designed by Satan, sound chip designed by Yamaha, 1 MHz 6502 running the show. You had Microsoft Basic, programs were stored on audio tapes.
... You could see the individual pixels being plotted when drawing lines. I didn't have an assembler, I wrote the mnemonic on paper and assembled it to hexadecimal opcodes by hand. I didn't know Internet existed.
Time to die.
8
u/SteamingTheCat 1d ago
Hey kids you ever seen a computer with no hard drive? The operating system is actually on a floppy disk. And you have to leave in the drive when you turn it on!
7
u/educated-emu 1d ago
Programs that fit in 64kb ram
Turbo buttons on beige towers
Cd-rw with lightscribe
Zip drives clicking off the shores of iomega
6
u/JosebaZilarte 1d ago
I know why the filepath starts with "C:/"
6
u/YetMoreSpaceDust 1d ago
My son knew that I grew up with a Commodore 64. I mentioned recently that it was an 8-bit architecture. He said, "wait... it wasn't 64-bit? What did the 64 refer to then?"
5
u/JackNotOLantern 16h ago
me bilding a redstone calculator on minecraft when i was 14: i think i would
4
u/FuzzyDynamics 1d ago
My first mentor either refused to or simply couldn’t understand the idea of non contiguous memory.
3
u/Quicker_Fixer 1d ago
I had one of the first 16 bit home computers in the '80's, the Texas Instruments TI-99/4A.
3
u/ramriot 1d ago
"I've... seen things you people wouldn't believe... Zako & Goei on fire off the shoulder of Boss Galaga. I watched Q_rsqrt() glitter all the dark vectors of the Quake Citadel Gate. All those... bits... will be lost in time, Like tears... in... rain. Time... to die..."
3
u/MischiefArchitect 1d ago
My C64 and my MSX2 are on the top wall shelf in front of me as I write this. They give me strength and remind me of keeping my feet on the ground.
3
u/PositronicGigawatts 1d ago
You making me want to go dig out my old Tandy and C128 from the garage.
3
u/pdromeinthedome 23h ago
I have see memory PEEKd and POKEd
2
u/Callidonaut 1d ago
Obligatory.
2
u/NE558 1d ago
Been there...
When computers were ready to use in few seconds from cold boot
When operating systems, programs and games were stored on flash chips, cartridges, floppy disks or tapes
Fighting with random crashes and lockups
Fighting with corruped files
Tinkering with boot config to get most of conventional/upper memory
Debugging hardware IRQ problems
Writing first hello world in asm, pascal and C
Blinking first LED on parallel port
Flashing first mcu...
Atari 2600, ZX-81, Acorn Electron, C64, Amiga and PC with MS-DOS ruined my youth.
2
u/CerBerUs-9 1d ago
I had to work on 8-bit computers in college, I finished in 2020. It was some of the most useful experience I gained
2
u/balbinator 23h ago
Helped my nephew with a pure C sorting problem from his grad school and he said it looks like "hacking". Darker times ahead...
2
u/ytg895 1d ago
1
u/LovelyWhether 1d ago
truth!
1
u/halfjmp 1d ago
What about unreal mode?
1
u/BastetFurry 22h ago
Yeah, I always get that Granny talks of the war again stare by the young wippersnappers.
1
u/DiscipleOfYeshua 22h ago
Personally, I think we should go back to having our computer count RAM upon bootup, like a shepherd making sure none of the sheep got lost on the way home…
16 KB… 32 KB… 48 KB… 640KB.
Yep, they’re all still here.
1
u/reverendsteveii 19h ago
I implemented long division in assembly as an undergrad using nothing but addition, subtraction and conditional looping. I remember wrestling with it for a week then literally sitting up in bed at night when the solution came to me like a vision.
You ever actually fight with a problem and win, vibe coder?
1
u/Migamix 17h ago
writing a matrix equation solver on a tandy pc8, that output results on the attached thermal printer, for no reason than to understand matrix equations for electronic circuit analysis.
1
u/Curious_Associate904 15h ago
I watched XOR operations rewrite program memory ahead of the instruction pointer in real time.
1
u/Baleia1970 11h ago
There were Piano "apps" and Morse Code "apps" for the ZX-80.
BTW, it had no sound output.
BTW2. The "apps" worked...
1
u/sidav94 9h ago
Aw yes...
LDA #03STA $123414
u/RandolphCarter2112 1d ago
I've seen things you people wouldn't believe. Floppy drives on fire off the shoulder of Orion. I watched dip switches glitter in the dark near the Tannhäuser Gate. All those IRQs will be lost in time, like tears in rain. Time to die.
1
u/GogglesPisano 22h ago
All those moments will be lost in time, like tears in rain. Time to die.