Hi Wind
I wish you had asked me a year ago because I would probably have been able to give you the exact answer.
I remember experimenting with the debugger to see what worked best and went for the 0x3d page. Whether the 0x3c or 0x3d page is selected probably doesn't make any real difference because in both cases the 16k which I wanted to access outside of the linear 48k can be addressed between 0x8000..0xbfff.
At the end of the day I have some user routines which can be called to maniputale data in this address range, whereby the user doesn't actually have to know where it is.
The file system calls do work with a pointer to the physical address (when the page is switch in), which is actually in the range 0x8400..0xbfff since I reserve 1k at the beginning for parameters such as MAC address, etc.
The uTasker supports the following file system calls, which are also used by FTP, HTTP etc.:
extern unsigned char *uOpenFile(signed char *ptrfileName);
extern MAX_FILE_LENGTH uGetFileLength(signed char *ptrfileName);
extern MAX_FILE_LENGTH uGetFileData(signed char *ptrFile, MAX_FILE_LENGTH FileOffset, unsigned char *ucData, MAX_FILE_LENGTH DataLength);
extern MAX_FILE_LENGTH uFileWrite(signed char *ptrFile, unsigned char *ptrData, MAX_FILE_LENGTH DataLength);
extern int uFileClose(signed char *ptrFile);
I can't comment with detail on the other points since I never tried moving RAM and registers around, simply for the reason that I don't see the point when using the NE64 in single chip mode - especially as you point out, which may well be the case - that you loose FLASH access when doing so. I see no advantage in loosing FLASH and so am happy with the simple set up
Regs. 0..0x7ff
SRAM 0x2000..0x3fff 8k
FLASH 0x4000..0xffff 48k
"paged" File system 0x8000..0xbfff 16k
Regards