These two posts have inter-related topics, so I'll reply to both once....
Curiosity, not specifically in topic, but, maybe.
Can the Z380 work with "virutal Z80s"? Like, more than one? ... Just wondering if the Z380 had anything similar, or is it more like the 65816, which is pretty much in "either or" mode.
This is actually right on topic, because this is a capability I would be interested in myself. Unfortunately, Z380 is an 'either-or' processor, although that can be on an instruction-by-instruction basis for certain aspects. The Z380 has four modes selected by two bits: the first bit is 'Native/Extended' and the second bit is 'Word/LongWord' and together these give four modes: Native/Word, Native/LongWord, Extended/Word, Extended/LongWord. Native mode is Z80/Z180 compatible, where only the lower 16 bits of addresses for executing code and vectoring interrupts are used (PC and SP specifically will have their top 16 bits forced to all zeroes). Extended mode allows code to be executed anywhere in the 32-bit address space; the ramifications of a 32-bit Program Counter and 32-bit Interrupt vector capability are far-ranging, much like ADL mode on eZ80. A single instruction switches from Native to Extended, but a RESET is required to switch back. The reason for this is explained better in the Z380 User Manual than I can summarize here.
Word mode causes data operations that operate on 'words' to be 16-bits, compatible with Z80/Z180. LongWord changes this behavior to operate on 32 bits.
These subjects are dealt with in the
Z380 User Manual first on page 5 (PDF page numbering), and then in Chapter 3 on pages 23 through 25.
In an a nutshell, no virtual Z80 mode like the V86 mode introduced by the Intel i386. There were early rumors and docs that eZ80180 was going to do a V80 mode and have a fully-functional MMU, but none of the currently-available eZ80's (eZ80F91, F92, F93, and L92 as well as eZ80190) have those capabilities.
...
2) It handles the whole networking stack with minimal code on the TRS80 itself.
It's also handling the WD1010 emulation. That is a significantly complex thing. As far as networking stack goes, any of a number of chips used on boards that typically get used by Arduino shields, such as the line of WizNET chips, can do the TCP/IP offload. The WD1010 emulation is another story.
With a fast Z380 and extra memory it should be relatively straightforward to do a driver to run in the main processor.
There are some TCP/IP stacks that will build on eZ80; it shouldn't be hard to get those to run on Z380. The hard part is getting an LS-DOS to run in the Extended mode. I'm planning on starting simpler than that, with the Z380 in Native/Word mode and work my way up from there, step by step. If I can make the individual steps small enough, I can eventually get up the ladder and get hardware built and out.
LSDOS already allows for more than 3 swappable banks; you could allocate some "extra" banks for tx/rx buffers. Which raises the question - I'm assuming you'll support bank switching; how do you plan to do it and how much memory will you provide - I'd be happy with something like 512K which I think is the max LSDOS handles.
LS-DOS allows banks 0-7 in stock trim. Since the upper 32K of the lower 64K is bank 0, you have the second 64K as banks 1 and 2, the third 64K as banks 3 and 4, the fourth 64K as banks 5 and 6, and then the lower 32K of the fifth 64K as bank 7. This is 288K.
Yes, I plan to implement Model 4P-compatible bank-switching (a simple MMU, in reality), with a port to select which 64K is mapped to the second 64K in a 128K 4P memory map. This is compatible with a lot of software already. I plan to also have a bit better MMU capability, but since the Z380 does not have an MMU of any kind (short of the really oddball chip select registers) it could be anything. I'm going to start simple: 4P-compatible plus a port to select which 64K to map.
PS: Yes I just glossed over a big amount of effort by . . . "someone" to write said driver and make it work.
While I don't have a TCP/IP driver, I DO have an @BANK driver that I wrote back in the late 80's/early 90's for the the 80Micro 320K mod; with minor modifications it can work with any memory expansion that uses a similar banking technique. My driver expands the supported memory capability to 1MB+32K using a 32-bit BAR and BUR (see page 7-10 (PDF page 85) of the Programmer's Guide to TRSDOS/LS-DOS 6 for details on @BANK and the BAR/BUR); BAR and BUR could in theory be expanded up to 256 bits, but that would be the LS-DOS limit due to the bank number needing to fit in one byte (LBANK$). 256 banks yields a machine with 8MB+32K.
Writing a good TCP/IP stack, on the other hand, is hard work. Better to use already well-tested code; otherwise it'll never get done.