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.
SWI | Status | Details |
---|---|---|
DDEUtils_GetCl | Complete | |
DDEUtils_GetCLSize | Complete | |
DDEUtils_Prefix | Complete? | Sets current directory using system "cd". |
Font_ListFonts | Partial | RISC OS 2 compatible-mode only. |
FPEmulator_Version | Complete | Always returns 400 |
Hourglass_Off | Placeholder | |
Hourglass_On | Placeholder | |
Hourglass_Smash | Placeholder | |
MessageTrans_FileInfo | Complete | Always returns 4 bytes as size. |
MessageTrans_Lookup | Partial | Does not handle wildcard tokens. |
MessageTrans_OpenFile | Partial | Does not handle wildcard tokens. |
OS_Args 2 | Complete | |
OS_Byte 0 | Complete | |
OS_CallASWIR12 | Complete | |
OS_ChangeDynamicArea | Partial | Only changes user dynamic areas. |
OS_ChangeEnvironment | Partial | Cannot change the environment |
OS_CLI | Partial | Only *Copy processed. |
OS_ConvertCardinal4 | Complete | |
OS_ConvertHex4 | Complete | |
OS_CRC | Complete | |
OS_DynamicArea 0 | Complete | |
OS_DynamicArea 2 | Complete | |
OS_EnterOS | Placeholder | Does nothing. |
OS_Exit | Complete | |
OS_File 1 | Complete | |
OS_File 8 | Complete | |
OS_File 10 | Complete | |
OS_File 16 | Complete | |
OS_File 17 | Partial | Paths not supported |
OS_Find | Partial | Paths not supported |
OS_FSControl 37 | Partial | Paths not supported |
OS_GBPB 4 | Partial | New file pointer not returned in R4 |
OS_GBPB 11 | Partial | Match patterns ignored |
OS_GetEnv | Partial | Ram limit always returned as 1MB |
OS_GenerateError | Complete | |
OS_GSTrans | Partial | Convert control codes and strip quotes flags ignored |
OS_IntOff | Complete | Just changes the status flag |
OS_IntOn | Complete | Just changes the status flag |
OS_Module 6 | Complete | |
OS_Module 7 | Complete | |
OS_Module 18 | Partial | Does not handle instantiations or return private word. |
OS_NewLine | Complete | |
OS_PlatformFeatures | Complete | |
OS_ReadC | Complete | |
OS_ReadMemMapInfo | Complete | Always assumes a 16MB machine |
OS_ReadModeVariable | Partial | Only for current mode; as for OS_ReadVduVariables |
OS_ReadMonotonicTime | Complete | Returns time since application start |
OS_ReadUnsigned | Partial | Restriction on terminator not supported |
OS_ReadVarVal | Partial | All variables return as strings. |
OS_ReadVduVariables | Partial | Variables 3, 4, 5, 9, 11 and 12 supported. |
OS_SetVarVal | Partial | All variables set as strings, deleting not supported. |
OS_ScreenMode 1 | Placeholder | Always returns 21. |
OS_SpriteOp 10 | Complete | |
OS_SpriteOp 11 | Complete | |
OS_SpriteOp 40 | Complete | |
OS_Write0 | Complete | |
OS_WriteC | Complete | |
OS_WriteEnv | Complete | |
SharedCLibrary_LibInitAPCS_32 | Complete | Same as APCS_R (!) |
SharedCLibrary_LibInitAPCS_R | Complete | |
SharedUnixLibrary_RegisterUpCall | Placeholder | Ignored |
SharedUnixLibrary_DeRegisterUpCall | Placeholder | Ignored |
SharedUnixLibrary_SetValueCount | Placeholder | Ignored |
TaskManager_EnumerateTasks | Complete | |
TaskManager_TaskNameFromHandle | Complete | |
TaskWindow_TaskInfo 0 | Partial | Always returns 0 |
Territory_CharacterPropertyTable | Partial | Character directionality not supported |
Territory_ConvertDateAndTime | Complete | Cannot convert %ST, or %CE without %YR |
Territory_LowerCaseTable | Complete | |
Territory_UpperCaseTable | Complete | |
Toolbox_Initialise | Placeholder | Throws error - not implemented. |
Wimp_CloseTemplate | Complete | |
Wimp_CreateIcon | Partial | Only sprite icons from the Wimp sprite area in the icon bar |
Wimp_CreateWindow | Partial | Doesn't handle user sprite areas |
Wimp_DeleteIcon | Complete | |
Wimp_GetCaretPosition | Placeholder | Always returns 'caret off' |
Wimp_GetIconState | Complete | |
Wimp_GetWindowState | Complete | |
Wimp_Initialise | Partial | Message filter list ignored |
Wimp_LoadTemplate | Partial | Doesn't handle user sprite areas |
Wimp_OpenTemplate | Complete | |
Wimp_ReadPalette | Complete | |
Wimp_ReadSysInfo 2 | Complete | |
Wimp_ReadSysInfo 2 | Complete | |
Wimp_ReadSysInfo 3 | Complete | |
Wimp_ReadSysInfo 5 | Complete | |
Wimp_SetExtent | Complete | |
Wimp_SetIconState | Complete | |
Wimp_SlotSize | Complete | Cannot change slot size of Java VM |
Wimp_SpriteOp 10 | Complete | |
Wimp_SpriteOp 11 | Complete | |
Wimp_SpriteOp 40 | Complete | |
Wimp_WhichIcon | Complete |