Difference between revisions of "OSWORD &FE"

From BeebWiki
Jump to: navigation, search
m (.)
(Added some Z80 disk access details.)
Line 3: Line 3:
  
 
   On entry:
 
   On entry:
     XY?0     =(send block length)
+
     XY?0   = &10 (send block length)
     XY?1     =(receive block length)
+
     XY?1   = &03 (receive block length)
     XY!2     =
+
          The rest of the block is a SCSI command block as per OSWORD &72
 +
    XY?2  = returned result, 0=ok
 +
     XY!3  = data address
 +
    XY?7  = command
 +
    XY?8  = drive number in b5-b7, sector b16-b20 in b0-b4
 +
    XY?9  = sector number b8-b15
 +
    XY?10  = sector number b0-b7
 +
    XY?11  = number of sectors or 0
 +
    XY?12  = 0
 +
     XY!13  = data length if X%?9=0
  
This is loaded by the Z80 Tube v2 client code from $.CPM.X or $.CPM.Y
+
This is loaded by the Z80 Tube v2 client code from $.CPM.X (for BBC B/B+) or $.CPM.Y
on the host filing system. The code is currently being disassembled.
+
(for Master) on the host filing system. The only commands supported are &08 (Read),
 +
&0A (Write) and &0B (Seek/Park).
 +
 
 +
* The disk layout accessed is 10 sectors per track.
 +
* There are some tests of the byte passed at XY?12.
 +
* The default code fails if called from the I/O processor with the control block at &xxFE or &xxFF due to incrementing X without carrying the overflow into Y.
 +
 
 +
The code is currently being disassembled.
  
 
==OSWORD &FE (254) - DOS Text output (80x86 DOS, unimplemented)==
 
==OSWORD &FE (254) - DOS Text output (80x86 DOS, unimplemented)==

Revision as of 12:09, 9 December 2024

OSWORD &FE (254) - Z80 MFM disk access (Z80 Tube OS)

 On entry:
   XY?0   = &10 (send block length)
   XY?1   = &03 (receive block length)
          The rest of the block is a SCSI command block as per OSWORD &72
   XY?2   = returned result, 0=ok
   XY!3   = data address
   XY?7   = command
   XY?8   = drive number in b5-b7, sector b16-b20 in b0-b4
   XY?9   = sector number b8-b15
   XY?10  = sector number b0-b7
   XY?11  = number of sectors or 0
   XY?12  = 0
   XY!13  = data length if X%?9=0

This is loaded by the Z80 Tube v2 client code from $.CPM.X (for BBC B/B+) or $.CPM.Y (for Master) on the host filing system. The only commands supported are &08 (Read), &0A (Write) and &0B (Seek/Park).

  • The disk layout accessed is 10 sectors per track.
  • There are some tests of the byte passed at XY?12.
  • The default code fails if called from the I/O processor with the control block at &xxFE or &xxFF due to incrementing X without carrying the overflow into Y.

The code is currently being disassembled.

OSWORD &FE (254) - DOS Text output (80x86 DOS, unimplemented)

The 6502 host support code in 6502.SYS installed by the 80x86 DOS just returns from OSWORD &FE.

See Also

Jgharston 14:29, 26 May 2009 (UTC) Jgharston (talk) 03:29, 20 July 2020 (CEST)