Showing changes from revision #5 to #6:
Added | Removed | Changed
Entry | |
---|---|
R1 | 80 (&50) |
R2 | Mode Specifier (number or selector, NOT a Sprite Mode Word) |
R3 | Monitor type, or -1 for ‘unspecified’ |
R4 | Bandwidth limit (bytes/sec) 1 |
R5 | Memory limit (bytes) 1 |
Exit | |
---|---|
R1-R4 | Preserved to pass on, else: |
R1 | 0 to claim service |
R2 | Preserved |
R3 | Pointer to VIDC List |
R4 | Pointer to Mode Workspace List (if a mode number was provided in R2 on entry) |
Else zero (if a Mode Selector Block was provided on entry) |
This service is used by the kernel to look up information about a mode which the kernel does not recognise. Most significantly, it is the mechanism by which the ScreenModes module communicates mode timings to the kernel when a MDF is in use.
The kernel has several built in tables of mode timings and workspace parameters (one table per monitor type) that it will refer to if a numbered screen mode is requested. Only if the table lookup fails, or if a Mode Selector Block is used, will the kernel issue this service call to obtain the mode information.
For numbered modes, the contents of the mode workspace list must be identical no matter the monitor type selected. Only the contents of the VIDC list may differ by monitor type.
1 The R4 and R5 parameters were only added to the service call specification in RISC OS 3.5. They allow ScreenModes to filter the MDF entries by the VRAM size and memory bandwidth limit of the machine.
ScreenModes 0.33 and above (RISC OS 5.20+) ignores R4, and instead relies on GraphicsV_VetMode to check for any relevant bandwidth limits. This is because on modern systems, the video driver is in a much better position to determine any bandwidth limitations than the kernel.