<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>
Date   : Sat, 01 Sep 2007 00:57:12 +0100
From   : splodge@... (Richard Gellman)
Subject: Watford Electronics Adder Eprom Programmer

Alex Taylor wrote:
> On 31 Aug 2007 01:02:01 +0100, Jonathan Graham Harston
> <jgh@...> wrote:
>
>   
>> It doesn't emulate an Arc doing anything. It emulates a 6502
>> second processor. What it is plugged into (virtual or otherwise)
>> is irrelevant.
>>     
>
> Now this is probably my ignorance caused by never having had the
> luxury of owning any kind of Tube hardware, but can you explain this
> further?
>
> As in, I was thinking of my description as being what I think of as
> the result of running the program. For example, if I start !65Tube on
> one of my A3000s, it's then as if I'd plugged a 6502 copro into that
> same A3000. Is this thinking wrong?
>   
Yes and no.

The TUBE is in defintion an abstract interface. At the electronic level 
its a bridge between two processing systems wherein data is passed 
between them via a series of registers accessible by both systems.

What is actually *on* each side, or an emulation of each side could 
really be anything. An emulation of a second processor system can simply 
respond to data being passed from the second processor by passing back 
the expected data. In this case there would be no I/O processor 
emulation as such, more a translation of what the code in the second 
processor is expecting to work into native processing.

The effect would appear that the emulated system is a second processor 
connected to an Arc, but it is only the second processor system that is 
emulated.

In case my blatherings still make little sense, a wee example:

Consider a program in a 6502 second processor emulation that wants to go 
to Mode 7. It sends the VDU sequence of 22,7 to the OSWRCH routine at 
&FFEE. This routine is a "wrapper" of sorts, and sends the VDU sequence 
to the TUBE. The emulation sees this happening, looks at the sequence 
thats been sent, and sees a request for Mode 7. It doesn't emulate an 
I/O processor going to mode 7, but rather switches the native hardware 
instead (or to the Arc's poor approximation of teletext). It then places 
data in the TUBE for the second processor to read back that equates to 
"job done".

If you look at the BeebEm emulator, it emulates both sides of the TUBE, 
so both a BBC Micro and a second processor are emulated and pass data 
between each other. This makes less "native" work for the emulator (as 
far as TUBE emulation is concerned) and makes for a fuller emulation.

I would also like to comment on the suggestion that "What it is plugged 
into is irrelevant". This is not necessarily true. While the standard 
implementation of the TUBE is for passing operating system calls, 
anything that expects to be able to drop code into the I/O processor for 
execution will fail completely on a "call emulator" that has no memory 
or code emulation (does the copro version of Elite do this?).

I was myself always under the imrpession that !65Tube emulates both 
sides. If the I/O processor is indeed a call emulator, then does this 
mean there are programs that will not work correctly in !65Tube? (I 
anticipate a yes here given !65Host's abilities....)

-- Richard
<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>