Software Interrupts (SWIs)

Software Interrupt (SWI) calls are the primary mechanism that RISC OS software communicates with the operating system. The ROM-based operating system defines hundreds of SWIs, divided into Modules, to perform all sorts of common tasks such as printing a string to the screen or defining a window template.

ROBE implements SWIs in native Java code. This allows them to be implemented more efficiently than by emulating RISC OS Module code, and counters the slowness of the ARM emulation. A typical application will spend more of its time executing SWIs than it wil executing its own code as most of the CPU-intensive tasks such as outline font rendering are delegated to SWIs.

This page contains a list of SWIs and their current implementation status in ROBE. Unlisted SWIs have not been implemented at all.

Please submit any additions or corrections to robe@tapina.com.

SWIStatusDetails
DDEUtils_GetClComplete
DDEUtils_GetCLSizeComplete
DDEUtils_PrefixComplete?Sets current directory using system "cd".
Font_ListFontsPartialRISC OS 2 compatible-mode only.
FPEmulator_VersionCompleteAlways returns 400
Hourglass_OffPlaceholder
Hourglass_OnPlaceholder
Hourglass_SmashPlaceholder
MessageTrans_FileInfoCompleteAlways returns 4 bytes as size.
MessageTrans_LookupPartialDoes not handle wildcard tokens.
MessageTrans_OpenFilePartialDoes not handle wildcard tokens.
OS_Args 2Complete
OS_Byte 0Complete
OS_CallASWIR12Complete
OS_ChangeDynamicAreaPartialOnly changes user dynamic areas.
OS_ChangeEnvironmentPartialCannot change the environment
OS_CLIPartialOnly *Copy processed.
OS_ConvertCardinal4Complete
OS_ConvertHex4Complete
OS_CRCComplete
OS_DynamicArea 0Complete
OS_DynamicArea 2Complete
OS_EnterOSPlaceholderDoes nothing.
OS_ExitComplete
OS_File 1Complete
OS_File 8Complete
OS_File 10Complete
OS_File 16Complete
OS_File 17PartialPaths not supported
OS_FindPartialPaths not supported
OS_FSControl 37PartialPaths not supported
OS_GBPB 4PartialNew file pointer not returned in R4
OS_GBPB 11PartialMatch patterns ignored
OS_GetEnvPartialRam limit always returned as 1MB
OS_GenerateErrorComplete
OS_GSTransPartialConvert control codes and strip quotes flags ignored
OS_IntOffCompleteJust changes the status flag
OS_IntOnCompleteJust changes the status flag
OS_Module 6Complete
OS_Module 7Complete
OS_Module 18PartialDoes not handle instantiations or return private word.
OS_NewLineComplete
OS_PlatformFeaturesComplete
OS_ReadCComplete
OS_ReadMemMapInfoCompleteAlways assumes a 16MB machine
OS_ReadModeVariablePartialOnly for current mode; as for OS_ReadVduVariables
OS_ReadMonotonicTimeCompleteReturns time since application start
OS_ReadUnsignedPartialRestriction on terminator not supported
OS_ReadVarValPartialAll variables return as strings.
OS_ReadVduVariablesPartialVariables 3, 4, 5, 9, 11 and 12 supported.
OS_SetVarValPartialAll variables set as strings, deleting not supported.
OS_ScreenMode 1PlaceholderAlways returns 21.
OS_SpriteOp 10Complete
OS_SpriteOp 11Complete
OS_SpriteOp 40Complete
OS_Write0Complete
OS_WriteCComplete
OS_WriteEnvComplete
SharedCLibrary_LibInitAPCS_32CompleteSame as APCS_R (!)
SharedCLibrary_LibInitAPCS_RComplete
SharedUnixLibrary_RegisterUpCallPlaceholderIgnored
SharedUnixLibrary_DeRegisterUpCallPlaceholderIgnored
SharedUnixLibrary_SetValueCountPlaceholderIgnored
TaskManager_EnumerateTasksComplete
TaskManager_TaskNameFromHandleComplete
TaskWindow_TaskInfo 0PartialAlways returns 0
Territory_CharacterPropertyTablePartialCharacter directionality not supported
Territory_ConvertDateAndTimeCompleteCannot convert %ST, or %CE without %YR
Territory_LowerCaseTableComplete
Territory_UpperCaseTableComplete
Toolbox_InitialisePlaceholderThrows error - not implemented.
Wimp_CloseTemplateComplete
Wimp_CreateIconPartialOnly sprite icons from the Wimp sprite area in the icon bar
Wimp_CreateWindowPartialDoesn't handle user sprite areas
Wimp_DeleteIconComplete
Wimp_GetCaretPositionPlaceholderAlways returns 'caret off'
Wimp_GetIconStateComplete
Wimp_GetWindowStateComplete
Wimp_InitialisePartialMessage filter list ignored
Wimp_LoadTemplatePartialDoesn't handle user sprite areas
Wimp_OpenTemplateComplete
Wimp_ReadPaletteComplete
Wimp_ReadSysInfo 2Complete
Wimp_ReadSysInfo 2Complete
Wimp_ReadSysInfo 3Complete
Wimp_ReadSysInfo 5Complete
Wimp_SetExtentComplete
Wimp_SetIconStateComplete
Wimp_SlotSizeCompleteCannot change slot size of Java VM
Wimp_SpriteOp 10Complete
Wimp_SpriteOp 11Complete
Wimp_SpriteOp 40Complete
Wimp_WhichIconComplete