PsiFS: SWI Calls

PsiFS_Mode

PsiFS_Mode
(SWI &520C4)
Set the mode of operation

On entry:R0 =reason code
Other registers depend on reason code

On exit:Registers preserved

Interrupts:Interrupt status is undefined
Fast interrupts are enabled

Processor mode:Processor is in SVC mode

Re-entrancy:SWI is not re-entrant

Use: This call changes PsiFS's mode of operation, depending on the reason code in R0. Valid reason codes are:
ValueMeaning
0Inactive
1Remote link mode
2Printer mirror mode

These are described separately below.


Related SWIs:PsiFS_Set, PsiFS_Get

Related vectors:None

PsiFS_Mode 0
(SWI &520C4)
Set PsiFS to inactive mode

On entry:R0 =0
R1 =non-zero to disconnect immediately

On exit:Registers preserved

Use: This call closes any active connection and ends use of the configured block driver. This allows other programs to use the serial port. It is equivalent to using *PsiFSDisable.

If R1 is set to a non-zero value then PsiFS does not wait for data to be flushed, so may result in data being lost. It should only be used as a last resort.

No action is taken if the block driver is already disabled.


PsiFS_Mode 1
(SWI &520C4)
Set PsiFS to remote link mode

On entry:R0 =1

On exit:Registers preserved

Use: This call activates the configured block driver and attempts to initiate a connection to a remote SIBO or EPOC device using Psion Link Protocol. It is equivalent to using *PsiFSEnable with the -link switch.

If the block driver is already enabled then either no action is taken or an error is generated depending on whether the remote link is the current mode.


PsiFS_Mode 2
(SWI &520C4)
Set PsiFS to printer mirror mode

On entry:R0 =2
R1 =control-terminated device name (0 for default)

On exit:Registers preserved

Use: This call activates the configured block driver and starts copying any characters received over the serial link to the device specified by R1. Any valid file or output device may be specified. The default is to use printer: which allows a SIBO or EPOC device to print to the active RISC OS printer without needing a special cable. It is equivalent to using *PsiFSEnable with the -print switch.

If the block driver is already enabled then either no action is taken or an error is generated depending on whether the printer mirror is the current mode.


[Contents] [Up] Copyright © Alexander Thoukydides, 1998, 1999, 2000