Implemented mode setting things as well as VESA additions and other
things. Cleaned up DOSMEM_BiosData handling.
diff --git a/include/miscemu.h b/include/miscemu.h
index e4596ed..712bcc8 100644
--- a/include/miscemu.h
+++ b/include/miscemu.h
@@ -14,8 +14,70 @@
extern int DOSCONF_ReadConfig(void);
/* msdos/dosmem.c */
+#pragma pack(1)
+
+typedef struct
+{
+ WORD Com1Addr; /* 00: COM1 I/O address */
+ WORD Com2Addr; /* 02: COM2 I/O address */
+ WORD Com3Addr; /* 04: COM3 I/O address */
+ WORD Com4Addr; /* 06: COM4 I/O address */
+ WORD Lpt1Addr; /* 08: LPT1 I/O address */
+ WORD Lpt2Addr; /* 0a: LPT2 I/O address */
+ WORD Lpt3Addr; /* 0c: LPT3 I/O address */
+ WORD Lpt4Addr; /* 0e: LPT4 I/O address */
+ WORD InstalledHardware; /* 10: Installed hardware flags */
+ BYTE POSTstatus; /* 12: Power-On Self Test status */
+ WORD MemSize WINE_PACKED; /* 13: Base memory size in Kb */
+ WORD unused1 WINE_PACKED; /* 15: Manufacturing test scratch pad */
+ BYTE KbdFlags1; /* 17: Keyboard flags 1 */
+ BYTE KbdFlags2; /* 18: Keyboard flags 2 */
+ BYTE unused2; /* 19: Keyboard driver workspace */
+ WORD NextKbdCharPtr; /* 1a: Next character in kbd buffer */
+ WORD FirstKbdCharPtr; /* 1c: First character in kbd buffer */
+ WORD KbdBuffer[16]; /* 1e: Keyboard buffer */
+ BYTE DisketteStatus1; /* 3e: Diskette recalibrate status */
+ BYTE DisketteStatus2; /* 3f: Diskette motor status */
+ BYTE DisketteStatus3; /* 40: Diskette motor timeout */
+ BYTE DisketteStatus4; /* 41: Diskette last operation status */
+ BYTE DiskStatus[7]; /* 42: Disk status/command bytes */
+ BYTE VideoMode; /* 49: Video mode */
+ WORD VideoColumns; /* 4a: Number of columns */
+ WORD VideoPageSize; /* 4c: Video page size in bytes */
+ WORD VideoPageStartAddr; /* 4e: Video page start address */
+ BYTE VideoCursorPos[16]; /* 50: Cursor position for 8 pages */
+ WORD VideoCursorType; /* 60: Video cursor type */
+ BYTE VideoCurPage; /* 62: Video current page */
+ WORD VideoCtrlAddr WINE_PACKED; /* 63: Video controller address */
+ BYTE VideoReg1; /* 65: Video mode select register */
+ BYTE VideoReg2; /* 66: Video CGA palette register */
+ DWORD ResetEntry WINE_PACKED; /* 67: Warm reset entry point */
+ BYTE LastIRQ; /* 6b: Last unexpected interrupt */
+ DWORD Ticks; /* 6c: Ticks since midnight */
+ BYTE TicksOverflow; /* 70: Timer overflow if past midnight */
+ BYTE CtrlBreakFlag; /* 71: Ctrl-Break flag */
+ WORD ResetFlag; /* 72: POST Reset flag */
+ BYTE DiskOpStatus; /* 74: Last hard-disk operation status */
+ BYTE NbHardDisks; /* 75: Number of hard disks */
+ BYTE DiskCtrlByte; /* 76: Disk control byte */
+ BYTE DiskIOPort; /* 77: Disk I/O port offset */
+ BYTE LptTimeout[4]; /* 78: Timeouts for parallel ports */
+ BYTE ComTimeout[4]; /* 7c: Timeouts for serial ports */
+ WORD KbdBufferStart; /* 80: Keyboard buffer start */
+ WORD KbdBufferEnd; /* 82: Keyboard buffer end */
+ BYTE RowsOnScreenMinus1; /* 84: EGA only */
+ WORD BytesPerChar WINE_PACKED; /* 85: EGA only */
+ BYTE ModeOptions; /* 87: EGA only */
+ BYTE FeatureBitsSwitches; /* 88: EGA only */
+ BYTE VGASettings; /* 89: VGA misc settings */
+ BYTE DisplayCombination; /* 8A: VGA display combinations */
+ BYTE DiskDataRate; /* 8B: Last disk data rate selected */
+} BIOSDATA;
+
extern HANDLE16 DOSMEM_BiosDataSeg;
extern HANDLE16 DOSMEM_BiosSysSeg;
+extern BIOSDATA * DOSMEM_BiosData();
+extern BYTE * DOSMEM_BiosSys();
extern DWORD DOSMEM_CollateTable;