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
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 16
31 #define BIOS_EQUIPMENT_LIST 0x2C // HACK: Disable FPU for now
32 #define BIOS_DEFAULT_VIDEO_MODE 0x03
33 #define BIOS_MAX_PAGES 8
34 #define BIOS_PAGE_SIZE 0x1000
35 #define BIOS_MAX_VIDEO_MODE 0x13
36 #define DEFAULT_ATTRIBUTE 0x07
37 #define GRAPHICS_VIDEO_SEG 0xA000
38 #define TEXT_VIDEO_SEG 0xB800
43 SCROLL_DIRECTION_DOWN
,
44 SCROLL_DIRECTION_LEFT
,
45 SCROLL_DIRECTION_RIGHT
53 WORD ParallelPorts
[3];
63 WORD KeybdBuffer
[BIOS_KBD_BUFFER_SIZE
];
64 BYTE DriveRecalibrate
;
65 BYTE DriveMotorStatus
;
66 BYTE MotorShutdownCounter
;
67 BYTE LastDisketteOperation
;
73 WORD CursorPosition
[BIOS_MAX_PAGES
];
79 BYTE CrtColorPaletteMask
;
86 BYTE LastDiskOperation
;
88 BYTE DriveControlByte
;
92 WORD KeybdBufferStart
;
96 } BIOS_DATA_AREA
, *PBIOS_DATA_AREA
;
100 /* FUNCTIONS ******************************************************************/
102 extern PBIOS_DATA_AREA Bda
;
104 BOOLEAN
BiosInitialize(VOID
);
105 VOID
BiosCleanup(VOID
);
106 BYTE
BiosGetVideoMode(VOID
);
107 BOOLEAN
BiosSetVideoMode(BYTE ModeNumber
);
108 WORD
BiosPeekCharacter(VOID
);
109 WORD
BiosGetCharacter(VOID
);
110 VOID
BiosSetCursorPosition(BYTE Row
, BYTE Column
, BYTE Page
);
111 VOID
BiosVideoService(LPWORD Stack
);
112 VOID
BiosEquipmentService(LPWORD Stack
);
113 VOID
BiosKeyboardService(LPWORD Stack
);
114 VOID
BiosTimeService(LPWORD Stack
);
115 VOID
BiosHandleIrq(BYTE IrqNumber
, LPWORD Stack
);
116 VOID
BiosSystemTimerInterrupt(LPWORD Stack
);
117 VOID
BiosPrintCharacter(CHAR Character
, BYTE Attribute
, BYTE Page
);
118 BOOLEAN
BiosScrollWindow(
121 SMALL_RECT Rectangle
,