8cda3ec426179ea86fd2152be2f71532eeb85869
[reactos.git] / subsystems / ntvdm / bios.h
1 /*
2 * COPYRIGHT: GPL - See COPYING in the top level directory
3 * PROJECT: ReactOS Virtual DOS Machine
4 * FILE: bios.h
5 * PURPOSE: VDM BIOS (header file)
6 * PROGRAMMERS: Aleksandar Andrejevic <theflash AT sdf DOT lonestar DOT org>
7 */
8
9 #ifndef _BIOS_H_
10 #define _BIOS_H_
11
12 /* INCLUDES *******************************************************************/
13
14 #include "ntvdm.h"
15
16 /* DEFINES ********************************************************************/
17
18 #define CONSOLE_VIDEO_MEM_END 0xBFFFF
19 #define ROM_AREA_START 0xC0000
20 #define ROM_AREA_END 0xFFFFF
21 #define BIOS_PIC_MASTER_INT 0x08
22 #define BIOS_PIC_SLAVE_INT 0x70
23 #define BIOS_SEGMENT 0xF000
24 #define BIOS_VIDEO_INTERRUPT 0x10
25 #define BIOS_EQUIPMENT_INTERRUPT 0x11
26 #define BIOS_KBD_INTERRUPT 0x16
27 #define BIOS_TIME_INTERRUPT 0x1A
28 #define BIOS_SYS_TIMER_INTERRUPT 0x1C
29 #define CONSOLE_FONT_HEIGHT 8
30 #define BIOS_KBD_BUFFER_SIZE 256
31 #define BIOS_EQUIPMENT_LIST 0x3C // HACK: Disable FPU for now
32 #define BIOS_DEFAULT_VIDEO_MODE 0x03
33 #define BIOS_MAX_PAGES 8
34 #define BIOS_MAX_VIDEO_MODE 0x13
35
36 typedef struct
37 {
38 DWORD Width;
39 DWORD Height;
40 BOOLEAN Text;
41 BYTE Bpp;
42 BOOLEAN Gray;
43 BYTE Pages;
44 WORD Segment;
45 } VIDEO_MODE;
46
47 /* FUNCTIONS ******************************************************************/
48
49 BOOLEAN BiosInitialize();
50 VOID BiosCleanup();
51 VOID BiosUpdateConsole(ULONG StartAddress, ULONG EndAddress);
52 VOID BiosUpdateVideoMemory(ULONG StartAddress, ULONG EndAddress);
53 inline DWORD BiosGetVideoMemoryStart();
54 inline VOID BiosVerticalRefresh();
55 WORD BiosPeekCharacter();
56 WORD BiosGetCharacter();
57 VOID BiosVideoService();
58 VOID BiosEquipmentService();
59 VOID BiosKeyboardService();
60 VOID BiosTimeService();
61 VOID BiosHandleIrq(BYTE IrqNumber);
62 VOID BiosSystemTimerInterrupt();
63
64 #endif