2 * COPYRIGHT: GPL - See COPYING in the top level directory
3 * PROJECT: ReactOS Virtual DOS Machine
5 * PURPOSE: VDM BIOS (header file)
6 * PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
12 /* INCLUDES *******************************************************************/
16 /* DEFINES ********************************************************************/
18 #define ROM_AREA_START 0xE0000
19 #define ROM_AREA_END 0xFFFFF
20 #define BDA_SEGMENT 0x40
22 #define BIOS_PIC_MASTER_INT 0x08
23 #define BIOS_PIC_SLAVE_INT 0x70
25 #define BIOS_SEGMENT 0xF000
27 #define BIOS_VIDEO_INTERRUPT 0x10
28 #define BIOS_EQUIPMENT_INTERRUPT 0x11
29 #define BIOS_KBD_INTERRUPT 0x16
30 #define BIOS_TIME_INTERRUPT 0x1A
31 #define BIOS_SYS_TIMER_INTERRUPT 0x1C
33 #define CONSOLE_FONT_HEIGHT 8
34 #define BIOS_KBD_BUFFER_SIZE 16
35 #define BIOS_EQUIPMENT_LIST 0x2C // HACK: Disable FPU for now
36 #define BIOS_DEFAULT_VIDEO_MODE 0x03
37 #define BIOS_MAX_PAGES 8
38 #define BIOS_PAGE_SIZE 0x1000
39 #define BIOS_MAX_VIDEO_MODE 0x13
40 #define DEFAULT_ATTRIBUTE 0x07
41 #define GRAPHICS_VIDEO_SEG 0xA000
42 #define TEXT_VIDEO_SEG 0xB800
44 #define BDA_KBDFLAG_RSHIFT (1 << 0)
45 #define BDA_KBDFLAG_LSHIFT (1 << 1)
46 #define BDA_KBDFLAG_CTRL (1 << 2)
47 #define BDA_KBDFLAG_ALT (1 << 3)
48 #define BDA_KBDFLAG_SCROLL_ON (1 << 4)
49 #define BDA_KBDFLAG_NUMLOCK_ON (1 << 5)
50 #define BDA_KBDFLAG_CAPSLOCK_ON (1 << 6)
51 #define BDA_KBDFLAG_INSERT_ON (1 << 7)
52 #define BDA_KBDFLAG_RALT (1 << 8)
53 #define BDA_KBDFLAG_LALT (1 << 9)
54 #define BDA_KBDFLAG_SYSRQ (1 << 10)
55 #define BDA_KBDFLAG_PAUSE (1 << 11)
56 #define BDA_KBDFLAG_SCROLL (1 << 12)
57 #define BDA_KBDFLAG_NUMLOCK (1 << 13)
58 #define BDA_KBDFLAG_CAPSLOCK (1 << 14)
59 #define BDA_KBDFLAG_INSERT (1 << 15)
64 SCROLL_DIRECTION_DOWN
,
65 SCROLL_DIRECTION_LEFT
,
66 SCROLL_DIRECTION_RIGHT
74 WORD ParallelPorts
[3];
75 WORD EbdaSegment
; // Sometimes, ParallelPort
77 BYTE Reserved0
; // Errors in PCjr infrared keyboard link
79 WORD Reserved1
; // Scratch pad for manufacturing error tests
84 WORD KeybdBuffer
[BIOS_KBD_BUFFER_SIZE
];
85 BYTE DriveRecalibrate
;
86 BYTE DriveMotorStatus
;
87 BYTE MotorShutdownCounter
;
88 BYTE LastDisketteOperation
;
94 WORD CursorPosition
[BIOS_MAX_PAGES
];
100 BYTE CrtColorPaletteMask
;
107 BYTE LastDiskOperation
;
109 BYTE DriveControlByte
;
113 WORD KeybdBufferStart
;
116 WORD CharacterHeight
;
117 } BIOS_DATA_AREA
, *PBIOS_DATA_AREA
;
121 /* FUNCTIONS ******************************************************************/
123 extern PBIOS_DATA_AREA Bda
;
125 BOOLEAN
BiosInitialize(VOID
);
126 VOID
BiosCleanup(VOID
);
127 BYTE
BiosGetVideoMode(VOID
);
128 BOOLEAN
BiosSetVideoMode(BYTE ModeNumber
);
129 WORD
BiosPeekCharacter(VOID
);
130 WORD
BiosGetCharacter(VOID
);
131 VOID
BiosSetCursorPosition(BYTE Row
, BYTE Column
, BYTE Page
);
132 VOID
BiosVideoService(LPWORD Stack
);
133 VOID
BiosEquipmentService(LPWORD Stack
);
134 VOID
BiosKeyboardService(LPWORD Stack
);
135 VOID
BiosTimeService(LPWORD Stack
);
136 VOID
BiosHandleIrq(BYTE IrqNumber
, LPWORD Stack
);
137 VOID
BiosSystemTimerInterrupt(LPWORD Stack
);
138 VOID
BiosPrintCharacter(CHAR Character
, BYTE Attribute
, BYTE Page
);
139 BOOLEAN
BiosScrollWindow(
142 SMALL_RECT Rectangle
,