SwapSlowFast swaps the first two entries in the memory list provided these are both fastmemory regions. So running it on a machine without two fastmemory regions will do nothing. The operation is atomic (Forbid/Permit pair) and should therefore be completely secure. So if you've some 32bits memory followed by some 16bits fast, You might use the following sequence; SwapSlowFast << Put 16bits up front AddBuffers SwapSlowFast << Put 32bits back up front To cause AddBuffers to allocate (if available) 16 bits memory. Should also work for SlowFastMemory in the older 500/2000s. Come to think of it, this thing is a kind of reversible "FastMemFirst". This program is pure, and may be made resident.