VOGONS


First post, by Jo22

User metadata
Rank l33t++
Rank
l33t++

Good morning!

To me, this was one of these nights again in which you cannot sleep and strange things come to mind.

As you may know, both the i8080 and Z80 were 8-bitters with some extras.
They had a dedicated i/o bus, some instructions could be 16-bit wide etc etc.

Now, the NEC V20/30 are "16-Bit" processors that are more or less pin compatible with
the i8088 and i8086.
They all do have an external 20-bit address bus, 16-bit registers/16-bit ALU, 16-bit data bus or a multiplexed 2x 8-bit data bus, respectively.

What I wonder now is, if the NEV V30 in "8080 emulation mode" does all its I/O in full 16-Bit, as well.

I mean if it does, wouldn't make this the V30 some sort of an imaginery i8086 equivalent to the i8080 ?
Sure, the "emulated" i8080 registers and instructions are still 8-bit mostly.
But how about the ALU ? Doesn't the V30 operate on a full 16-bit ALU all the time ?
Also, the data bus.. It's normally running non-multiplexed at full 16-bit (in contrast to i8088/V20) ?

And what about the i/o ports and the address bus ?
How is each one behaving in 8080 emulation mode ?

Please forgive my ignorance - right now I'm a bit sleepy and lazy, too. 😅

Any ideas welcome.

Best regards,
Jo22

"Time, it seems, doesn't flow. For some it's fast, for some it's slow.
In what to one race is no time at all, another race can rise and fall..." - The Minstrel

//My video channel//

Reply 1 of 1, by mkarcher

User metadata
Rank l33t
Rank
l33t

The 8080 emulation mode does not change the bus interface side of things. It runs the same kind of I/O and memory cycles as an 8088/8086 would do, so you get address/data multiplexing on the low 8 (V20) or the low 16 (V30) address bits. What the 8080 emulation mode changes is the instruction decoding. The processor basically maps 8080 instructions to their "equivalent" 8086 instructions. IIRC, addressing uses the segment registers set up by the operating system before it switched to the 8080 emulation mode, so the 64K of the virtual 8080 memory space can be located anywhere in the 1M of V20/V30 address space.

The processor doesn't try to be timing compatible to the 8080, so I guess a 16-bit LDX instruction on the V30 uses a single 16-bit memory cycle if the operand is properly aligned. A lot of 8086 features are unavailable for 8080 code, like I/O ports above 256 or 16-bit I/O port cycles. This doesn't matter, though, as the idea of the 8080 emulation mode is to be able to run CP/M application programs that don't perform direct hardware access, but call the operating system (which will escape from 8080 emulation) to perform hardware I/O.