Showing changes from revision #2 to #3:
Added | Removed | Changed
Entry | |
---|---|
R0 | DAG: |
0 = Set start address of current video display | |
1 = Set start address of total video buffer | |
2 = Set end address (exclusive) of total video buffer | |
3 = Set start address of VDU buffer (i.e. as set by OS_Byte 112) | |
All other values reserved | |
R1 | Physical address for given DAG |
R4 | Bits 0-23: 6 (reason code) |
Bits 24-31: Display number |
Exit | |
---|---|
R4 | 0 |
- | All other registers preserved |
The kernel issues this call when it requires the driver to update the DAG (“DMA address generator”) registers of the display hardware. The appropriate driver should respond by performing the requested action and setting R4 to 0 to claim the call.
The OS has a video buffer which is >= total display size, and may be using bank switching (several display buffers) or hardware scroll within the total video buffer.
Video drivers should respond differently depending on whether hardware scroll is supported or not. (The OS will already know this from GraphicsV 8).
Only DAG=0 is significant, and the end address of the current display is implied by the size of the current mode. Calls with DAG=1,2 should be ignored.
DAG=0 again defines display start. DAG=2 defines the last address (exclusive) that should be displayed before wrapping back (if reached within display size), and DAG=1 defines the address to which accesses should wrap back.
The default claimant of this call is the kernel. If the call is left unclaimed, and the call was for display 0, the kernel will claim it by setting R4 to 0 and call HAL_Video_SetDAG?HAL_VideoSetDAG.