3 ms·
>>> ... every 3rd line is also a goto target while also still being the ordinary next line in some routine. This is also what killed the Apple II. People figur
by analog31 3y ago
>>> ... every 3rd line is also a goto target while also still being the ordinary next line in some routine.
This is also what killed the Apple II. People figured out places that they could branch into the BIOS and OS code to do weird things or bypass the time consuming parts. The result was that every byte of the code was potentially a branch target, and Apple could never change it. Even upgrading to the Apple IIe was fraught, and I made a hack for my mom with a toggle switch for choosing between the Apple II and IIe ROMs.
It's one of the reasons why Apple preferred a "closed" system for the Mac.
- Brian_K_White 3y agoThe model 100 is like that. Almost all software uses the main rom as a library of functions, and if you change almost anything in the main rom, you break almost all software. It's why a lot of software that works on the model 100, doesn't work on the practically identical Olivetti M10, Kyotronic KC-85, NEC PC-8201, and doesn't even work on the non-US versions of the model 100! All of those machines have practically identical hardware, and practically identical main roms, but, not identical. Mostly it's all the same routines just with some addresses moved around by a few bytes, and that's all it takes to break everything. To patch the main rom for y2k, you can search for a particular string of bytes to find the spot where "19" is hard coded, and edit it to "20". It's in a different spot in every different rom, but the routine it's part of is actually the same in all of them, and the same search & edit works on all of them. (ok the NEC does add something else since it also hardcodes "83" for "1983" somewhere else as part of some other routine that only the NEC has, but the part that has the "19" is the same as all the others.) The point is, that's how similar they all are. And yet software isn't portable between them. The exact same routines, not even changed, but just landing at slightly different addresses, breaks all the software.