RISCOS.com

www.riscos.com Technical Support:
Programmer's Reference Manual

 

OS_Word


Introduction

The OS_Word call is very similar to the OS_Byte call. It is also used to read from, or write to, values held in RAM by RISC OS. Much of what is said in the OS_Byte chapter also applies to OS_Word.

You can add new OS_Word calls by installing a routine on the software vector that OS_Word uses - see the chapter entitled Software vectors. Alternatively you can use the Unknown OS_Word service call, although this is not such a good way to do so, and is hence deprecated - see the chapter entitled Modules.

Like OS_Byte, interrupts are disabled when most OS_Word routines are entered.

The major difference between the two calls is that an OS_Word call deals with larger amounts of data than an OS_Byte call. You therefore need to pass your data in a different way.

Parameters

OS_Word always takes two parameters. R0 is a reason code (as it is for OS_Byte). R1, however, is a pointer to a parameter block. This is an area of memory where you store parameters that you want to pass to OS_Word, and where OS_Word can store its results. The size of the parameter block varies from call to call, and is documented with each OS_Word description. Often the parameter block contains a sub-reason code, which can specify the length of the parameter block; so the size can also vary for a given reason code in R0.

Like OS_Byte, OS_Word is multi-purpose, and covers such areas as reading the time and date, setting the screen's 'palette', and reading the definition of a re-definable character.

There are far fewer OS_Words than OS_Bytes; 0 - 22 is the current range of R0 on entry. Most of these OS_Word calls are provided to ease the task of porting software from the earlier BBC and Master series computers.

Calling OS_Word

You call the OS_Word SWI in exactly the same way as any other SWI. For details see the earlier chapter An introduction to SWIs.

OS_Word and * Commands

Unlike OS_Byte, no * Command equivalent to OS_Word is provided.

SWI calls


OS_Word
(SWI &07)

General purpose call to alter status variables, and perform other actions

On entry

R0 = reason code
R1 = pointer to parameter block

On exit

R0 preserved

Interrupts

Interrupts are disabled by the OS_Word decoding routine
Interrupt status is unaltered (ie remains disabled) for most values of R0
Fast interrupts are enabled

Processor mode

Processor is in SVC mode

Re-entrancy

Not defined

Use

The action taken by this SWI depends on the reason code passed in R0. In general, OS_Word is used to either read or write a large number of status variables at once. R1 points to a parameter block, the length of which varies depending on the reason code. You should see the individual documentation of each OS_Word for full details. For an index of all OS_Word calls, see the chapter entitled Index of OS_Words

Related SWIs

OS_Byte

Related vectors

WordV

This edition Copyright © 3QD Developments Ltd 2015
Last Edit: Tue,03 Nov 2015