OSWORD &FA

From BeebWiki
Revision as of 10:53, 17 December 2024 by Jgharston (talk | contribs) (Slight formatting changes.)
Jump to: navigation, search
OSWORD &FA (250) Data transfer over Tube

This OSWORD call is installed by the 80x86 Tube client.

 On entry:
   XY?0     =&0D or &0E (send block length)
   XY?1     =&10 (receive block length)
   XY!2     =I/O processor address
   XY+6..7  =80x86 offset address
   XY+8..9  =80x86 segment address
   XY+10..11=data length, &0000=nothing to transfer
   XY?12    =function
   XY?13    =memory access control if XY?0=&0E.

The functions are the same as the Tube values:

  • 0 - write to I/O as single bytes
  • 1 - read from I/O as single bytes
  • 2 - write to I/O as byte pairs
  • 3 - read from I/O as byte pairs
  • 6 - write to I/O as groups of 256 bytes
  • 7 - read from I/O as groups of 256 bytes

If the memory access control byte is not used the I/O address at XY!2 accesses the main I/O memory and whichever ROM happens to be paged in when the call is made - usually the current language. If the memory access control byte is used, its format is:

  • b0-b3=ROM number
  • b4 =0 use specified ROM, b4=1 use current ROM
  • b5 =0 use main memory, b5=1 use screen memory
  • b6 =1 ignore b5 and use shadow memory
  • b7 unused.

See also

Jgharston 14:26, 26 May 2009 (UTC) Jgharston 00:05, 31 January 2016 (UTC) Jgharston (talk) 10:53, 17 December 2024 (CET)