On 12/9/2005 at 2:20 PM Allison wrote:
What I never figured out for sure was if the 8080 used
current segment
or not. the differnce is the 8080 emulation would then be capable of
running as if there were N many (available ram/64k) differnt ram
areas making a banked 8080 possible. then again I never really looked at
that seriously enough to implement.
Well, now that was the very interesting part of the V20 emulation. The
segment for the code to be emulated was taken from CS as one might expect.
However, DS specified the segment base for data accesses. So, in theory,
you could have an 8080 program with 64K of code and 64K of data. The 8080
SP was loaded from BP. Interrupts autmatically switched back to X86 mode
and then back to emulation when the RETI was executed. You were warned
however, not to change modes in an ISR, because it would produce
"unexpected results" (whatever they were; I never tried).
The V20 and V30 had an emulation bug that would cause nasty things to
happen if the stack pointer were too close to IP. JRT Pascal had a
peculiar subroutine calling sequence that did just that, so JRT Pascal
(that pile of stinking garbage) was probably one of the first apps that
pointed out problems in emulation.
NEC took the 8086 architecture into some interesting chips. The V53 had
page-translation buffer that would allow 16M of addressing without having
to go to the screwy 80286 segmented protection mode. And it was very fast.
Now, the NEC Dataflow processor were pretty strange...
Cheers,
Chuck