[NTVDM]
[reactos.git] / subsystems / ntvdm / bios.h
index 04cd593..99a6371 100644 (file)
@@ -18,6 +18,7 @@
 #define CONSOLE_VIDEO_MEM_END 0xBFFFF
 #define ROM_AREA_START 0xC0000
 #define ROM_AREA_END 0xFFFFF
+#define BDA_SEGMENT 0x40
 #define BIOS_PIC_MASTER_INT 0x08
 #define BIOS_PIC_SLAVE_INT 0x70
 #define BIOS_SEGMENT 0xF000
@@ -27,8 +28,8 @@
 #define BIOS_TIME_INTERRUPT 0x1A
 #define BIOS_SYS_TIMER_INTERRUPT 0x1C
 #define CONSOLE_FONT_HEIGHT 8
-#define BIOS_KBD_BUFFER_SIZE 256
-#define BIOS_EQUIPMENT_LIST 0x3C // HACK: Disable FPU for now
+#define BIOS_KBD_BUFFER_SIZE 16
+#define BIOS_EQUIPMENT_LIST 0x2C // HACK: Disable FPU for now
 #define BIOS_DEFAULT_VIDEO_MODE 0x03
 #define BIOS_MAX_PAGES 8
 #define BIOS_MAX_VIDEO_MODE 0x13
@@ -38,12 +39,62 @@ typedef struct
     DWORD Width;
     DWORD Height;
     BOOLEAN Text;
-    DWORD Colors;
+    BYTE Bpp;
     BOOLEAN Gray;
     BYTE Pages;
     WORD Segment;
 } VIDEO_MODE;
 
+#pragma pack(push, 1)
+
+typedef struct
+{
+    WORD SerialPorts[4];
+    WORD ParallelPorts[3];
+    WORD EbdaSegment;
+    WORD EquipmentList;
+    BYTE Reserved0;
+    WORD MemorySize;
+    WORD Reserved1;
+    WORD KeyboardFlags;
+    BYTE AlternateKeypad;
+    WORD KeybdBufferHead;
+    WORD KeybdBufferTail;
+    WORD KeybdBuffer[BIOS_KBD_BUFFER_SIZE];
+    BYTE DriveRecalibrate;
+    BYTE DriveMotorStatus;
+    BYTE MotorShutdownCounter;
+    BYTE LastDisketteOperation;
+    BYTE Reserved2[7];
+    BYTE VideoMode;
+    WORD ScreenColumns;
+    WORD VideoPageSize;
+    WORD VideoPageOffset;
+    WORD CursorPosition[BIOS_MAX_PAGES];
+    BYTE CursorEndLine;
+    BYTE CursorStartLine;
+    BYTE VideoPage;
+    WORD CrtBasePort;
+    BYTE CrtModeControl;
+    BYTE CrtColorPaletteMask;
+    DWORD Uptime;
+    BYTE Reserved3;
+    DWORD TickCounter;
+    BYTE MidnightPassed;
+    BYTE BreakFlag;
+    WORD SoftReset;
+    BYTE LastDiskOperation;
+    BYTE NumDisks;
+    BYTE DriveControlByte;
+    BYTE DiskPortOffset;
+    BYTE LptTimeOut[4];
+    BYTE ComTimeOut[4];
+    WORD KeybdBufferStart;
+    WORD KeybdBufferEnd;
+} BIOS_DATA_AREA, *PBIOS_DATA_AREA;
+
+#pragma pack(pop)
+
 /* FUNCTIONS ******************************************************************/
 
 BOOLEAN BiosInitialize();