====== Optimizing 640 K-worth Of Memory ====== | **Field** | Computers | | **Went Obsolete** | Intel's 386 processor, and Windows 95 (mostly). Mac users felt similar pains until OS-X. | | **Made Obsolete By** | The 286's protected mode, cheap ram | | **Knowledge Assumed** | Editing system files, DOS extenders | There are two sides to this, for the programmer and user. On the user's side, you have to be careful how much you demand of the one (1) application you're using. Don't load too large a picture, long a text, complex a level, or the program could foolishly run out of memory. You may want to install little resident utilities to make the OS more useful, such as support for CD-Roms, or a hotkey revealed calendar. The [[TSRs.html|TSRs]] and OS extensions all bite away at your 640k, you're carefully considered startup disk will have to be trimmed back for the most demanding programs. In addition, some items could be loaded in "higher" memory and some in lower memory, so load order was important. In DOS, the idea was to load himem.sys and then load [[TSRs.html|TSRs]] and device drivers in a particular order, using the config.sys and autoexec.bat files. Sometimes there were configuration utilities which helped produce a good load order, but in many cases the memory location, allocation, and load order were tweaked by hand. For programmers, there's a whole wonderful world of manual memory management. You can use fake paging techniques like overlays, where chunks of your code live in separate files on disk, and get read into memory only just as they are used, and then discarded for the next overlay. You could break the workflow into separate programs that simply don't need to work simultaneously. You could even badger the user into buying an accessory card with enough memory to play a full song! | **When useful** | When this skill could still be used in the real world | Embedded systems - that means any programming for devices that are not called computers - still have tight memory requirements. Fax machines, microwave ovens, barcode readers, DVD players; if you're writing the programs for one of these, 640K still feels like a luxury. As for real computers, there are still a LOT of legacy systems stuck in businesses. Many companies are dependent on some custom written, missing source code program. Even if they can move it to a modern system, the cost, including downtime, testing, more testing, and inevitable new bugs are worse than just dragging things out a little longer. Then enter a description of the skill, and include a photo using the 'attach' link in the header for this page(Insert picture of Lotus on an XT?).