the urge to built an fpga-based uxn implementation...

i scribbled up some notes and invented a supervisor mode extension, which should help with two things: 1. hiding implementation details (MMIO devices, filesystem) from user-mode ROMs, while still writing those drivers in #uxn code; 2. multi-tasking between uxn instances

the major (new and untested) additions are:

- BRK, DEI, DEO, and external interrupts trap into supervisor mode
- in supervisor mode, memory consists of OS-private pages, a view into user pages, MMIO pages
- the user "chapter" (64k memory region) is configurable to different physical bases; this makes it possible to switch between tasks without copying 64k of data

@jn do you take into account extra RAM banks for System/expansion? most implementations assume 16 banks for 1 MiB

Making it OS friendly is awesome as that could be virtualized back into an emulator (I don't know a thing about FPGAs).

I like the idea of making an OS with some kind of protection.

@snufkin_vc my idea for the banks is that they will be entirely managed by the supervisor, which can keep them in RAM, compressed RAM, flash or elsewhere according to an LRU cache policy. (The same applies to main user memory of other processes than the current). Supervisor-mode code will be somewhat system-specific anyway, so it can be expected to know the local hardware constraints.
@snufkin_vc for my first implementation i'm actually targetting the RP2040, which has barely enough RAM for main memory, so it will need swapping (to flash), compression, or both