Seems crazy. But it solved a major problem at the time, allowing machines with just a few hundred KB of RAM and slow disks to efficiently edit formatted documents far larger than the available resources, something other early word processors could not do. Would we design it that way now? Of course not. Today, for the purposes of word processing, we have essentially unlimited RAM and instant disk access. So we wouldn't mess with Fast Save. (And indeed, Microsoft disabled the Fast Save option years ago to close that security gap.) The decoupling of text from formatting does, however, still have some advantages.
Thanks again, that was also really interesting!
There are lots of amazing, optimisation techniques, developed over the years. Thanks for explaining, that particular one! I enjoyed reading it.
It's sad, but some of the great optimisations in the past, are gradually being lost to time. As people retire, things get forgotten etc. There were lots of rather clever techniques developed, over the years (a long time ago). To allow huge amounts of data to be stored on reels of tape. They had clever ways of sorting huge files, with multiple passes of the tape, which overcame the (relatively) extremely small ram (probably core memory, actually), and coping with a rather slow processor, by today's standards.
The amazingly fast speed, the tape could be played/written to, with the reels, spinning round at crazy, breakneck speeds, and using these amazingly complicated mechanisms, to cope, without breaking or damaging, the somewhat delicate tape, with (probably) very valuable data on it.
These days, you would probably use lots of microcontrollers, and modern sensors, to do it. yet, it was all done with none of that, just plain mechanical and transistorised circuitry (depending on the generation of the mainframe computer, it could be all valves/tubes, or even all relays).
By coincidence, I've recently been playing about and investigating early PCs, and their software. Specifically targeting, the first/original one, i.e. an IBM 4.77MHz Intel 8088, 8 bit (external), 16 bit internal (not everyone agrees, some consider it an 8 bit, because of only having an external, 8 bits).
I was writing some (rather small, for fun), assembly code, to see how fast it runs.
Emulation only. Because I don't have an 8088 PC as such, and they generally cost a small fortune on ebay.
Occasionally, an affordable 8088 PC, does pop up. So, I will have to see.
8088 based motherboards, can be affordably purchased, and because they are more recent (the ones I was looking at), they are less work in theory), to keep running.
There are so many amazing things about those 8088's. As slow as one might think/expect them to be, there were a number of partly extreme, optimisation techniques, to get the best horse power, out of them.
As well as writing the code in 8088 assembly, they took great care into which register they used, along with which instructions they would be using.
Because, a number of such combinations, are coding into only 8 bits (a sort of tiny, 8 bit thumb (arm thumb is bigger than 8 bits, anyway) like mode, always active).
So, by clever choice of what register and instruction combinations are used/needed, for the entire section of code. Most/all of the instructions can then be 8 bits in size. This gave a considerable/significant speed improvement.
As the 8088 had no program or data cache as such.
But it did have a 6 byte, pre-fetch buffer. This was significantly less effective on the 8088, as it was so much slower (especially bus wise, as it was only 8 bits wide, rather than the much faster 8086, which was 16 bits, external bus, which could make good use of the 6 byte pre-fetch).
What has partly blown my mind (and I don't properly understand it), is a method, of creating a genuine (simple), extra second processor, and using it. On a standard 8088 IBM PC (I assume it applies to clones as well).
It re-purposed, the Dynamic Ram Refresh controller, and arranged it so that it was acting as a kind of (DMA like), simple second processor. Allowing, significance, increases, in speed, in some use cases.
Possibly, by messing with a Motorola 6845 display/graphics controller chip, which is somewhat reprogrammable, to change its functionality. The PCjr had one (apparently), I'm not sure if the original 8088 had it as well, I would have to research it.
Three part article, starts here:
https://trixter.oldskool.org/2013/01/10/optimizing-for-the-8088-and-8086-cpu-part-1/