Showing changes from revision #1 to #2:
Added | Removed | Changed
Entry | |
---|---|
R1 | 141 (&8D) |
R2 | Number of modes to skip |
R3 | Monitor type |
R4 | Memory bandwidth available (in bytes/sec) |
R5 | Total amount of video RAM in system (in bytes) |
R6 | Pointer to block to return data, or 0 to just count entries |
R7 | Size of block (in bytes) if R6<>0, or 0 if R6=0 |
Exit | |
---|---|
R0 | Preserved ? |
R1 | 0 to claim (further valid modes are available, but would not fit in the block), else preserved |
R2 | – (number of modes filled in) |
R3 | Preserved |
R4 | Preserved |
R5 | Preserved |
R6 | Pointer to byte after last one filled in, or preserved if 0 on entry |
R7 | Amount of unused space in block, or -(amount of space need in block) if counting |
This service is issued to enumerate the available screen modes.
Modules return information on all modes they provide that work on the specified monitor type and which require no more than the specified memory bandwidth and video memory.
OS_ScreenMode 2 provides a front-end for applications; you should use it rather than issuing this service call yourself.
By setting R6 and R7 to zero, clients can find the amount of space required to hold all the returned modes; they can then issue the call again to actually read the information. Alternatively, clients can use a fixed size buffer, and repeatedly issue the call until it is no longer claimed.
When using this method, R2 on entry – the number of modes to skip this iteration – should be set to: (previous R2 on entry) – (R2 on exit).