Comment by flyinghamster
4 days ago
The one thing I lamented about the Apple II Plus (vs. the original with Integer BASIC) was that to make room for autostart, they had to rip out the mini-assembler in the Monitor ROM. That was the closest thing I ever saw to an assembly-language REPL before this. At least they were able to keep the disassembler.
It's common in the C64 world to use freezer cartridges that allow you to interrupt normal operation and invoke a monitor program. These typically include rudimentary assemblers and disassemblers as well. Fun and useful for patching and reverse engineering!
Btw, I've only had a rough idea of how these are actually implemented, non-maskable interrupt something-something, and never knew how they make sure that the interrupt vector points to some persistent routine that can invoke the monitor. I found this great article explaining at least how The Final Cartridge 3 does it (in the first two sections): https://www.pagetable.com/282
The Atari 8-bit computers could have a similar capability by using a product called Omnimon. Great way to look inside programs.
I remember being so confused, as a 10 y/o kid, trying to follow examples from an Apple II-era book on my public library's Apple IIe computers. I didn't understand why I couldn't get the mini assembler to work. The idea that features would be removed on future machines simply didn't occur to me. I guess I really didn't even understand that the IIe was a different machine than what the book was written for since most everything else worked as-expected.
The mini-assembler was still available from Integer BASIC on II+ and IIe. It returned to ROM for later IIe models.
It makes sense that I didn't find it. Integer BASIC didn't make sense to 10 y/o me, either. I'd started with Applesoft, since it was in ROM, and Integer BASIC seemed needless and strange. I also didn't understand why "FP" was the command to get into Applesoft.
(These are yet more examples of situations where, if I'd had a mentor, I think I would have gone much further at a younger age.)
2 replies →
Yes, I remember when this happened, it was a bummer .. but taught us the valuable lesson that the hardware manufacturer can give, but also take away. At least it kind of kicked off a tooling market ..
Incidentally, apropos onboard assemblies, in my retro collection I have a Commodore PC running an ancient DOS, and it is unique because of two reasons: it has DEBUG.com, and .. the machine is infected with one of the very early viruses of the era.
So, if you know the right path to take on boot, you can get the virus to infect things, under the debugger, and see it in action.
DEBUG.com was for me, a complete boon of a tool, so to speak, back in the day. It was just enough assembler/debugger to be able to do very effective things.
Anyway, Z80 REPL is delightful, I want a 6502 REPL now, and can't stop thinking about how to get one on the Atmos..
The BBC Micro and the Atom that came before it had an assembler built into BASIC. Just think, in the early 80s you could do inline assembly if your BASIC code wasn't fast enough...
13 year old me had a box of cassette tapes with index labels like "0 DEBUG", and "10 ASS", and "28 MEMHAK", "30 UNDEL", and so on, where the #'s were the position - on tape - of the little bundle of utilities I would auto-load as soon as I got home from school, while having dinner, etc. I spent days, dreaming of having a ROM burner to put all these things in the last (usable) 16k address space of things ..
I felt the same way.
There was another downside, that the Applesoft BASIC license gave Microsoft a hostage which they later used to kill https://en.wikipedia.org/wiki/MacBASIC. Hard to tell how much it mattered that the Mac came with no user programmability, which had been expected for PCs till then.
Wow, somehow I didn't know about this. Now I'm angry, bundling an official Macintosh BASIC on every computer would have been huuuge for young-me.