view ddk/minivdd.h @ 0:20b4ed4eebe3

Checked in Windows 9x display minidriver for VirtualBox.
author Michal Necasek <mnecasek@yahoo.com>
date Sun, 19 Jun 2022 17:39:17 +0200
parents
children
line wrap: on
line source


/* Functions callable via VDD's API entry point, usually called by display
 * drivers.
 */
#define MINIVDD_SVC_BASE_OFFSET             0x80
#define VDD_DRIVER_REGISTER                 (0 + MINIVDD_SVC_BASE_OFFSET)
#define VDD_DRIVER_UNREGISTER               (1 + MINIVDD_SVC_BASE_OFFSET)
#define VDD_SAVE_DRIVER_STATE               (2 + MINIVDD_SVC_BASE_OFFSET)
#define VDD_REGISTER_DISPLAY_DRIVER_INFO    (3 + MINIVDD_SVC_BASE_OFFSET)
#define VDD_REGISTER_SSB_FLAGS              (4 + MINIVDD_SVC_BASE_OFFSET)
#define VDD_GET_DISPLAY_CONFIG              (5 + MINIVDD_SVC_BASE_OFFSET)
#define VDD_PRE_MODE_CHANGE                 (6 + MINIVDD_SVC_BASE_OFFSET)
#define VDD_POST_MODE_CHANGE                (7 + MINIVDD_SVC_BASE_OFFSET)
#define VDD_SET_USER_FLAGS                  (8 + MINIVDD_SVC_BASE_OFFSET)
#define VDD_SET_BUSY_FLAG_ADDR              (9 + MINIVDD_SVC_BASE_OFFSET)

/* The DISPLAYINFO structure for querying Registry information. */
typedef struct {
    WORD    diHdrSize;
    WORD    diInfoFlags;
    DWORD   diDevNodeHandle;
    char    diDriverName[16];
    WORD    diXRes;
    WORD    diYRes;
    WORD    diDPI;
    BYTE    diPlanes;
    BYTE    diBpp;
    WORD    diRefreshRateMax;
    WORD    diRefreshRateMin;
    WORD    diLowHorz;
    WORD    diHighHorz;
    WORD    diLowVert;
    WORD    diHighVert;
    DWORD   diMonitorDevNodeHandle;
    BYTE    diHorzSyncPolarity;
    BYTE    diVertSyncPolarity;
} DISPLAYINFO;

/* diInfoFlags */
#define RETURNED_DATA_IS_STALE          0x001   /* VDD couldn't read Registry, data could be old. */
#define MINIVDD_FAILED_TO_LOAD          0x002   /* MiniVDD did not load, probably bad config. */
#define MINIVDD_CHIP_ID_DIDNT_MATCH     0x004   /* ChipID mismatch, probably bad config. */
#define REGISTRY_BPP_NOT_VALID          0x008   /* BPP could not be read from Registry. */
#define REGISTRY_RESOLUTION_NOT_VALID   0x010   /* Resolution could not be read from Registry. */
#define REGISTRY_DPI_NOT_VALID          0x020   /* DPI could not be read from Registry. */
#define MONITOR_DEVNODE_NOT_ACTIVE      0x040   /* Devnode not there, no refresh rate data. */
#define MONITOR_INFO_NOT_VALID          0x080   /* Refresh rate data could not be read. */
#define MONITOR_INFO_DISABLED_BY_USER   0x100   /* Refresh rate data not valid. */
#define REFRESH_RATE_MAX_ONLY           0x200   /* Only diRefreshRateMax is valid. */
#define CARD_VDD_LOADED_OK              0x400   /* Second MiniVDD loaded fine. */

/* Funcrions callable in a mini-VDD. */
#define REGISTER_DISPLAY_DRIVER     0
#define GET_VDD_BANK                1
#define SET_VDD_BANK                2
#define RESET_BANK                  3
#define PRE_HIRES_TO_VGA            4
#define POST_HIRES_TO_VGA           5
#define PRE_VGA_TO_HIRES            6
#define POST_VGA_TO_HIRES           7
#define SAVE_REGISTERS              8
#define RESTORE_REGISTERS           9
#define MODIFY_REGISTER_STATE       10
#define ACCESS_VGA_MEMORY_MODE      11
#define ACCESS_LINEAR_MEMORY_MODE   12
#define ENABLE_TRAPS                13
#define DISABLE_TRAPS               14
#define MAKE_HARDWARE_NOT_BUSY      15
#define VIRTUALIZE_CRTC_IN          16
#define VIRTUALIZE_CRTC_OUT         17
#define VIRTUALIZE_SEQUENCER_IN     18
#define VIRTUALIZE_SEQUENCER_OUT    19
#define VIRTUALIZE_GCR_IN           20
#define VIRTUALIZE_GCR_OUT          21
#define SET_LATCH_BANK              22
#define RESET_LATCH_BANK            23
#define SAVE_LATCHES                24
#define RESTORE_LATCHES             25
#define DISPLAY_DRIVER_DISABLING    26
#define SELECT_PLANE                27
#define PRE_CRTC_MODE_CHANGE        28
#define POST_CRTC_MODE_CHANGE       29
#define VIRTUALIZE_DAC_OUT          30
#define VIRTUALIZE_DAC_IN           31
#define GET_CURRENT_BANK_WRITE      32
#define GET_CURRENT_BANK_READ       33
#define SET_BANK                    34
#define CHECK_HIRES_MODE            35
#define GET_TOTAL_VRAM_SIZE         36
#define GET_BANK_SIZE               37
#define SET_HIRES_MODE              38
#define PRE_HIRES_SAVE_RESTORE      39
#define POST_HIRES_SAVE_RESTORE     40
#define VESA_SUPPORT                41
#define GET_CHIP_ID                 42
#define CHECK_SCREEN_SWITCH_OK      43
#define VIRTUALIZE_BLTER_IO         44
#define SAVE_MESSAGE_MODE_STATE     45
#define SAVE_FORCED_PLANAR_STATE    46
#define VESA_CALL_POST_PROCESSING   47
#define PRE_INT_10_MODE_SET         48

#define NBR_MINI_VDD_FUNCTIONS      49

/* Port sizes. */
#define BYTE_LENGTHED               1
#define WORD_LENGTHED               2

/* Flag bits. */
#define GOING_TO_WINDOWS_MODE       1
#define GOING_TO_VGA_MODE           2
#define DISPLAY_DRIVER_DISABLED     4
#define IN_WINDOWS_HIRES_MODE       8