<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>
Date   : Tue, 25 May 2004 15:29:52 +0200 (BST)
From   : Johan Heuseveldt <johan@...>
Subject: Re: Tube / Master Coprocessor question

Hi Mike,

On Mon 24 May, Mike Tomlinson wrote:
> In article <40B120C0.6010807@...>, Richard Gellman
> <splodge@...> writes
> 
> >To get the data into the I/O processor, you'll probably need to load it 
> >in and send the data back to the other CPU. You can then use OS 
> >functions to instruct the IO processor to run specific code.

You can always over rule these addresses.

> Just to mention, in case it's of use, that the various filing systems
> use 6 bytes for the load and execute addresses, i.e. *info $.FILE might

??? Those are 6 nibbles (or is it nybbles)

And not even that, as the most significant &FF 'byte' - or two nibbles -
isn't 8 bits, but two bits only: it is expanded from two to eight bits.
So isn't a nibble either, only half a nibble.

> give:
> 
> $.FILE  L       FF0E00    FF802B    0005EC  021

They actually mean:
                FFFF0E00  FFFF802B
> 
> filename      load      exec        length
                                              startsector

Most likely it is truncated to a three bytes notation for cosmetic reasons;
fitting the screen in 40 character mode.

> The above is a BASIC program which will load and run in the I/O processor.
> 
> The lower 4 bytes form the actual address; if the upper 2 bytes are FF,

There are no lower 4 bytes. The total /is/ four bytes.
You've mixed bytes and nibbles!

> the code is loaded/run in the  I/O processor, if they're 00, it's
> loaded/run in the second processor.  Can't recall offhand what values
> other than FF or 00 mean, if anything (my AUG's in the loft.)

Allmost right!

If the upper two bytes contains &FFFF, then the I/O Processor is referenced
specificly. Any other value are assumed to be the language processor. If it
were only &0000, than a larger memory than 64 Kbyte wasn't possible for the
CoPro, leaving anything in between undefined.

DFS is 18 bits, instead of 32. You must extend bits 17 and 16 to a two bytes
value, being the high two bytes of the 32 bits new value. I suppose the
trigger is the value of bit 17 (the 18th bit).

  value of bit 17   valus of the two high bytes of 32 bits
  --------------------------------------------------------
  0                 0000 0000 0000 000x
  1                 1111 1111 1111 111x

  N.B. x = original value of bit 16 (17th bit)


greetings,
Johan

-- 
Johan Heuseveldt <johan@...              >
  aka  waarland

  The best place is a Riscy place
 
If God had intended us to fly, he would never
have given us railways. - Michael Flanders
<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>