Date : Sun, 29 Nov 2009 21:16:28 +0000 (GMT)
From : info@... (Sprow)
Subject: Tube - I/O processor memory questions
In article <4B12D77A.9080407@...>,
Kevin Bracey <kevin@...> wrote:
> Exactly what memory is available on the I/O processor for a language
> running on the language processor?
I'm not sure it's ever been documented more accurately that the broad brush
statements about &400-&7FF and font explosion stuff. OSHWM-HIMEM is of
course.
You may wish to study
http://www.mdfs.net/Software/Tube/BBC/Host100.lst
for the host side.
> I just found myself wanting to reset a file pointer, and apparently
> OSARGS needs its block on the I/O processor zero page! How awkward is
> that? Okay, I can transfer my file pointer across with OSWORD 6.
You don't need to bother. If it's a 6502 parasite just formulate the block
in its zero page and call OSArgs: it collects up the parameters, shoves them
down the Tube, whose host code places them graciously in the host for the
filing system to operate on. The host then collects up the result and posts
it back down the Tube which places it back in the parasite for you as though
nothing special had happened.
Other clients map to similar methods, the ARM coprocessor shifts the value
of PTR out of R2 down the Tube etc etc...
> But... Can I happily use I/O 00.8F? Are they all available to me, or has
> the Tube code got the rights to some of it it? Likewise for &400-&7FF -
> how much, if any, of that is available to me?
No. Anything that was for the language is now for the Tube host.
> I understand that all of the I/O processor's OSHWM-HIMEM is available.
> But is there any straightforward way of reading those settings from the
> language processor? Presumably if I have some service code, if it asks
> for OSHWM/HIMEM, it will get the I/O values, so I could use a user
> OSWORD to get it to ask for me.
Correct, you need something running on the host to get the right values of
host OSHWM and HIMEM. A user OSWord would do,
Sprow.