PART 7: MEMORY LANE
RAM cram can be a thing of the past
A powerful desktop shell can be a hungry one, too. It could require a lot of memory, depending on how it is set up. In one installation I configured, NeoDesk 4 was running in 15-bit color mode (more than 32,000 colors visible at once) on a Falcon and displaying a large background picture; it had 400 to 450 icons, and booted up with six desktop windows open, each of them full of files and folders. I probably don't have to add that this NeoDesk 4 setup took a lot more memory than the setup I use on my ST, which has no extra icons, boots up with no desktop windows open and has only a simple desktop pattern.
But this is one of the strengths of NeoDesk 4. It can be large and impressive or lean and mean. NeoDesk 4 does this many ways.
First, NeoDesk 4 can be set up like my ST instead of my friend's Falcon. You can choose to leave out extra icons and desktop pictures, and you can keep extra desktop windows closed when you do not need them. (A desktop window that displays 100 or more files consumes extra memory. Add four or five of them at the same time and memory consumption rises quite a bit -- needlessly, in most cases.)
Second, NeoDesk 4 lets the user specify how much memory it should take, in two separate approaches. You can limit NeoDesk to a specific maximum amount of memory or you can tell it to take a minimum at all times. (You can also set no limits, which is the preferred way for those with four or more megabytes of RAM.) This may be confusing, so I'll try to explain.
The first approach, which limits the total amount of memory, keeps NeoDesk 4 from using memory that may be needed for applications that do not behave properly when run under a shell such as NeoDesk. Behavior such as this is also influenced by the version of TOS that NeoDesk 4 is running under. Applications that are well behaved in terms of memory usage normally won't have a problem with NeoDesk 4's preferred setting, which is to let it take all the memory it needs.
The second approach, which specifies a precise amount of memory that NeoDesk 4 should always occupy, may work better than the others if your Atari's RAM tends to become fragmented over a long period of time. (If you reboot often, fragmentation probably can be ignored. But if you regularly run your computer for weeks at a time without rebooting, you may want to begin checking on the amount of fragmentation.) Many of the operations NeoDesk 4 performs require extra memory from the operating system's pool of RAM, and this memory is always released back to the operating system later. But in a multitasking system (and within NeoDesk alone, which always is able to multitask its file and disk operations even without Geneva), the operating system may be supplying memory to more than one process at a time. Because there is no way to know whether these operations will return their blocks of RAM in the same order they obtained them, there is no way to control possible fragmentation of RAM in these situations. (There are ways to defragment RAM in some operating systems, but none that have been implemented on Ataris so far.)
This second approach, setting NeoDesk 4's memory consumption to a specific minimum figure, prevents NeoDesk 4 from asking for extra memory during desktop operations and keeps it from shrinking its memory consumption during idle time, and this is what can help reduce fragmentation. In a typical desktop file-copying operation, NeoDesk 4 will otherwise try to appropriate nearly all available memory, using RAM as a copying buffer.
There are no hard and fast rules for the memory settings. If you choose to limit NeoDesk's memory, try settings that are quite low and see if NeoDesk complains. (If NeoDesk runs out of memory for its own operations, it will alert you to that.) You may notice that file-copying and -moving operations are slower, especially when NeoDesk 4 is dealing with a lot of small files or a few very large files. This could be an acceptable tradeoff, especially in light of NeoDesk 4's ability to do file operations in the background. Since you are able to continue other tasks during these functions, you may not care if they run slowly.