RISC OS Open
A fast and easily customised operating system for ARM devices
ROOL
Home | News | Software | Bugs | Bounties | Forum | Documents | Photos | Contact us
Account

FileCore_DiscOp64

Programmer's Reference Manuals
» Part 15 – SWI Calls
» FileCore
» FileCore_DiscOp64

FileCore_DiscOp64

(SWI &4054C)
Entry
R1 Reason code + Options
R2 Pointer to disc address
R3 Pointer to buffer (or scatter list)
R4 Length in bytes
R5 Pointer to alternative disc record
R6 Cache handle
R8 Pointer to Filecore instance private word
Exit
R1 Preserved
R2 Preserved, disc address pointed to is updated to point to the next byte to be transferred
R3 Pointer to next buffer location to be transferred
R4 Number of bytes not transferred
R5 Preserved ?
R6 Preserved ?
R8 Preserved ?

Use

The purpose of this call is to provide a number of low-level disc operations using the more advanced Disc Operation DiscOp64.

Reason Codes

# Hex # Action
0 &00 Verify?
1 &01 Read sectors?
2 &02 Write sectors?
3 &03 Read track/ID?
4 &04 Write/format track?
5 &05 Seek?
6 &06 Restore?
7 &07 Step in?
8 &08 Step out?
9 &09 Read sectors via cache?
15 &0F Specify Hard disc?

Options

Bit Meaning
4 Given alternative defect list
5 Given sector list?
6 Ignore escape
7 Ignore timeout
8 – 31 Reserved, must be zero)


h4. Notes

The action performed depends on the reason code value in R1.

This call is just like FileCore_DiscOp except that it attacks a number of shortcomings in old versions of FileCore:

  1. Alternative disc record pointers passed in to various SWIs currently only have a 26-bit range so will not work in 32 bit systems.
  2. FileCore_SectorDiscOp limits discs to 2^29 sectors, i.e. 256GB for drives with 512 byte sectors.

In the future, this will allow for up to 16 exbibytes (over 16 billion GB) per disc, and many more discs per filing system.

As high (top-bit set) addresses are possible in a scatter list, only negative numbers smaller or equal to than -64K (ie >= unsigned &FFFF0000) should be interpreted as the end of list marker.
This applies to any FileCore module for RISC OS 3.50 or later.

See also

  • FileCore
  • FileCore Disc Descriptor
  • FileCore Sector List
  • FileCore Error Numbers
  • FileCore_DiscOp64 Address
  • FileCore_SectorDiscOp
Revised on December 6, 2009 15:59:18 by Alan Robertson (52)? (127.0.0.1)
Edit | Back in time (1 revision) | See changes | History | Views: Print | Source | Linked from: FileCore SWI Calls, FileCore_DiscOp Address, FileCore_DiscOp64 Address, FileCore_MiscOp

Search the Wiki

Commercial use

For commercial enquiries, please contact the owners of RISC OS, Castle Technology Ltd.

ROOL Store

The official C/C++ Development kit and more here.

Donate! Why?

Help ROOL make things happen – please consider donating!

Navigation

  • Home Page
  • All Pages
  • Recently Revised
  • Authors
  • Feeds
Site design © RISC OS Open Limited 2011 except where indicated
The RISC OS Open Instiki theme is based on Insitki's default layout

Valid XHTML 1.0  |  Valid CSS

Instiki 0.19.1(MML+)
This site runs on Rails

Hosted by Arachsys