randy482 wrote:
> ...But as I see it @50mhz how long would
> it take to copy 16K from one 64K block to
> another to emulate bank switching?...
Yes. When the OS is requested to switch user pages, just copy the common block forward every time it switches. A block copy operating in 50Mhz, 16MB mode is hard to beat. Doing anything else has diminishing return for the effort or cost.
> ...Yes you get 24 bit addressing but can't
> run z80 code, so no CP/M or MP/M...
If you design an eZ80 single board computer, you'll need to write a kernel to run its modern resources.
That kernel can easily manage multiple users in their own 64KB blocks, by time-slicing their access to the processor. An eZ80 timer determines how long the user's environment runs and when that timer interrupts and invokes the kernel, it cuts in and freezes that user-space environment until it runs again, and loads the next assigned user-space and runs it until the next timer interval expires.
***So even if the kernel runs in 16MB mode, it can support several users (or background tasks) running Z80 code with CP/M or MP/M in various 64KB blocks.
That's Legacy Z80++.
Note that the kernel would be intercepting all the BIOS calls from the active user-space and doing the single board computer resource work as necessary for that eZ80 board. No direct user-space access to devices, ports etc would occur. That's necessary if you have several users vying for resources. The BIOS bridge to the kernel would buffer incoming and outgoing information until it can be delivered.
There would be no need to write a BIOS, the kernel just intercepts all access to either the space it would have occupied or just the jump entry points itself. It does that by overwriting the BIOS after it is loaded. Its replaced with something that invokes a high level vectored interrupt to the kernel which can then recover the source address and z80 registers to identify the intercepted BIOS access and settings, and call its own kernel routines instead.
Interestingly, the kernel might have to make CP/M 2.2 think a USB memory stick is just another floppy disk. As long as your legacy OS doesn't know any better, its happy. But the kernel has to know what OS is running, so it can identify virtualized BDOS diskette traversals, into its real meaning and present a version of the eZ80 resources in a way the OS expects a diskette/floppy drive to respond.
Traversing to a floppy the directory track? As long as the kernel knows the OS version running, it can make its system resources look like a floppy drive but with instantaneous seek times. The kernel keeps track of the virtual floppy's track, head, selections and creates sector images the OS expects, but there are no real-world delays.
Ultimately, the better solution is to simply create a new OS that can *look* like any legacy OS you want to run in Z80 mode.
Jay_in_Dallas
--