mirror of
https://github.com/reactos/reactos.git
synced 2024-08-04 10:30:59 +00:00
[NTVDM]: Add offset information to the BIOS Data Area, and add missing fields. See the provided links in the patch for more information.
svn path=/branches/ntvdm/; revision=60890
This commit is contained in:
parent
860c121da8
commit
e971f67673
|
@ -24,12 +24,12 @@
|
|||
|
||||
#define BIOS_SEGMENT 0xF000
|
||||
|
||||
#define BIOS_VIDEO_INTERRUPT 0x10
|
||||
#define BIOS_EQUIPMENT_INTERRUPT 0x11
|
||||
#define BIOS_MEMORY_SIZE 0x12
|
||||
#define BIOS_KBD_INTERRUPT 0x16
|
||||
#define BIOS_TIME_INTERRUPT 0x1A
|
||||
#define BIOS_SYS_TIMER_INTERRUPT 0x1C
|
||||
#define BIOS_VIDEO_INTERRUPT 0x10
|
||||
#define BIOS_EQUIPMENT_INTERRUPT 0x11
|
||||
#define BIOS_MEMORY_SIZE 0x12
|
||||
#define BIOS_KBD_INTERRUPT 0x16
|
||||
#define BIOS_TIME_INTERRUPT 0x1A
|
||||
#define BIOS_SYS_TIMER_INTERRUPT 0x1C
|
||||
|
||||
#define CONSOLE_FONT_HEIGHT 8
|
||||
#define BIOS_KBD_BUFFER_SIZE 16
|
||||
|
@ -69,54 +69,82 @@ enum
|
|||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
/*
|
||||
* BIOS Data Area at 0040:XXXX
|
||||
*
|
||||
* See: http://webpages.charter.net/danrollins/techhelp/0093.HTM
|
||||
* and: http://www.bioscentral.com/misc/bda.htm
|
||||
* for more information.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
WORD SerialPorts[4];
|
||||
WORD ParallelPorts[3];
|
||||
WORD EbdaSegment; // Sometimes, ParallelPort
|
||||
WORD EquipmentList;
|
||||
BYTE Reserved0; // Errors in PCjr infrared keyboard link
|
||||
WORD MemorySize;
|
||||
WORD Reserved1; // Scratch pad for manufacturing error tests
|
||||
WORD KeybdShiftFlags;
|
||||
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;
|
||||
BYTE ScreenRows;
|
||||
WORD CharacterHeight;
|
||||
WORD SerialPorts[4]; // 0x00
|
||||
WORD ParallelPorts[3]; // 0x08
|
||||
WORD EbdaSegment; // 0x0e - ParallelPort in PC/XT
|
||||
WORD EquipmentList; // 0x10
|
||||
BYTE Reserved0; // 0x12 - Errors in PCjr infrared keyboard link
|
||||
WORD MemorySize; // 0x13
|
||||
WORD Reserved1; // 0x15 - Scratch pad for manufacturing error tests
|
||||
WORD KeybdShiftFlags; // 0x17
|
||||
BYTE AlternateKeypad; // 0x19
|
||||
WORD KeybdBufferHead; // 0x1a
|
||||
WORD KeybdBufferTail; // 0x1c
|
||||
WORD KeybdBuffer[BIOS_KBD_BUFFER_SIZE]; // 0x1e
|
||||
BYTE DriveRecalibrate; // 0x3e
|
||||
BYTE DriveMotorStatus; // 0x3f
|
||||
BYTE MotorShutdownCounter; // 0x40
|
||||
BYTE LastDisketteOperation; // 0x41
|
||||
BYTE Reserved2[7]; // 0x42
|
||||
BYTE VideoMode; // 0x49
|
||||
WORD ScreenColumns; // 0x4a
|
||||
WORD VideoPageSize; // 0x4c
|
||||
WORD VideoPageOffset; // 0x4e
|
||||
WORD CursorPosition[BIOS_MAX_PAGES]; // 0x50
|
||||
BYTE CursorEndLine; // 0x60
|
||||
BYTE CursorStartLine; // 0x61
|
||||
BYTE VideoPage; // 0x62
|
||||
WORD CrtBasePort; // 0x63
|
||||
BYTE CrtModeControl; // 0x65
|
||||
BYTE CrtColorPaletteMask; // 0x66
|
||||
BYTE CassetteData[5]; // 0x67
|
||||
DWORD TickCounter; // 0x6c
|
||||
BYTE MidnightPassed; // 0x70
|
||||
BYTE BreakFlag; // 0x71
|
||||
WORD SoftReset; // 0x72
|
||||
BYTE LastDiskOperation; // 0x74
|
||||
BYTE NumDisks; // 0x75
|
||||
BYTE DriveControlByte; // 0x76
|
||||
BYTE DiskPortOffset; // 0x77
|
||||
BYTE LptTimeOut[4]; // 0x78
|
||||
BYTE ComTimeOut[4]; // 0x7c
|
||||
WORD KeybdBufferStart; // 0x80
|
||||
WORD KeybdBufferEnd; // 0x82
|
||||
BYTE ScreenRows; // 0x84
|
||||
WORD CharacterHeight; // 0x85
|
||||
BYTE EGAFlags[2]; // 0x87
|
||||
BYTE VGAFlags[2]; // 0x89
|
||||
DWORD Reserved3; // 0x8b
|
||||
BYTE Reserved4; // 0x8f
|
||||
BYTE Reserved5[2]; // 0x90
|
||||
BYTE Reserved6[2]; // 0x92
|
||||
BYTE Reserved7[2]; // 0x94
|
||||
WORD Reserved8; // 0x96
|
||||
DWORD Reserved9; // 0x98
|
||||
DWORD Reserved10; // 0x9c
|
||||
DWORD Reserved11[2]; // 0xa0
|
||||
DWORD EGAPtr; // 0xa8
|
||||
BYTE Reserved12[68]; // 0xac
|
||||
BYTE Reserved13[16]; // 0xf0
|
||||
|
||||
DWORD Reserved14; // 0x100
|
||||
BYTE Reserved15[12]; // 0x104
|
||||
BYTE Reserved16[17]; // 0x110
|
||||
BYTE Reserved17[15]; // 0x121
|
||||
BYTE Reserved18[3]; // 0x130
|
||||
} BIOS_DATA_AREA, *PBIOS_DATA_AREA;
|
||||
|
||||
C_ASSERT(sizeof(BIOS_DATA_AREA) == 0x133);
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
/* FUNCTIONS ******************************************************************/
|
||||
|
|
Loading…
Reference in a new issue