I haven't examined the latest source code, but the last I looked, the MMU module was written much as the device was internally designed. Which is to say it could support 4 banks of internal RAM. Presumably this enables all 4 banks of internal RAM, not REU RAM. Although the MMU was internally desgined to handle 4 RAM banks, there are no I/O pins available on the chip to handle extra RAM banks. Hacks I've seen to enable extra internal RAM on real machine must use extra hardware (for example a second MMU or maybe something in the function ROM socket). So what I'm saying is this feature sounds like a neat idea, but it is compatible with absolutely nothing.
Also, the previous MMU implementation of WinVICE had some bugs. I haven't checked the 2.3 version yet to see if these bugs still exist. Anyway, I wouldn't bother playing with 'wishful' features of the MMU when the existing ones are (still?) broken.
Disclaimer I don't own an REU, so I'm not an expert here... but I have written some progs that work in VICE and reported to work by others with real hardware, so hopefully this helps...
STASH / FETCH / SWAP are real easy to use. Just issue a BANK command to set the desired C128 internal RAM bank to use, then issue STASH / FETCH / SWAP whose parameters specify the REU bank, as well as the C128 and REU addresses and byte length. The only 'gotcha' is there is a bug with BANK and REU commands in the original C128 ROMs; VICE has the new ROMs, so if all you use is VICE, then no problem.
The BASIC commands all take the same parameters:
FETCH #bytes, C128adrs, REUadrs, REUbank
STASH #bytes, C128adrs, REUadrs, REUbank
SWAP #bytes, C128adrs, REUadrs, REUbank
FETCH is used to read REU data into the C128, STASH is to write REU data from the C128 and SWAP will exchange data between the two.
So for example, to save all BASIC variable to the REU can use:
and to recall them later
In both examples, all data from $0400 (1024) to $FEFF is transfered, which amounts to 64256 bytes; this is in BANK 1 of C128... and it goes to / comes from the REU at the very start of 'bank' 1. Of course where you put the data in the REU is up to you as the programmer.
Another example to save all BASIC program area:
This saves all data from $1c00 (7168) to $FEFF (a total of 58112 bytes) into start of REU 'bank' 0.
Also important: if you are using FAST mode, the computer should be switched to SLOW mode for REU transfers.
Look under 'Settings', 'Cartridge I/O Settings', 'REU Settings...'