Doing preemptive multitasking (with hardware memory protection, more or less) was actually not too hard on the 130XE (and the variants that added more RAM... I had mine up to 320K at one point, and some people even had 1 or 2 MB).<p>The extra RAM on those machines appeared in 16K banks that could be switched in and out by setting a control register.<p>Code in one 16K bank was totally isolated from code in other banks. Obviously code that wasn&#x27;t located in that part of the address space could access anything that was in the currently switched-in bank, but there was no way for one bank to directly access another.<p>I wrote a primitive multitasking kernel (nowhere near as elaborate as this) using a C package that simulated a 16 bit machine by using multiple bytes of Page 0 as pseudo-registers. You just had to save those off before switching banks and jumping back to the other task.<p>It actually worked reasonably well, but not fast enough to be practical.<p>Yeah, I&#x27;m old.