31f8f7e996df03fff6c07314f512ae5539292c81
[reactos.git] / boot / freeldr / freeldr / include / arch / i386 / machxbox.h
1 /*
2 * FreeLoader
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17 */
18
19 #pragma once
20
21 #ifndef __MEMORY_H
22 #include "mm.h"
23 #endif
24
25 #define MAX_XBOX_COM_PORTS 2
26
27 #define LPC_IO_BASE 0x2E
28 #define LPC_ENTER_CONFIG_KEY 0x55
29 #define LPC_EXIT_CONFIG_KEY 0xAA
30
31 #define LPC_DEVICE_SERIAL_PORT_1 0x4
32 #define LPC_DEVICE_SERIAL_PORT_2 0x5
33
34 #define LPC_CONFIG_DEVICE_NUMBER 0x07
35 #define LPC_CONFIG_DEVICE_ACTIVATE 0x30
36 #define LPC_CONFIG_DEVICE_BASE_ADDRESS_HIGH 0x60
37 #define LPC_CONFIG_DEVICE_BASE_ADDRESS_LOW 0x61
38 #define LPC_CONFIG_DEVICE_INTERRUPT 0x70
39
40 #define NV2A_CONTROL_OFFSET 0xFD000000
41 #define NV2A_CRTC_OFFSET (0x600000 + NV2A_CONTROL_OFFSET)
42 #define NV2A_CRTC_FRAMEBUFFER_START (0x800 + NV2A_CRTC_OFFSET)
43 #define NV2A_CRTC_REGISTER_INDEX (0x13D4 + NV2A_CRTC_OFFSET)
44 #define NV2A_CRTC_REGISTER_VALUE (0x13D5 + NV2A_CRTC_OFFSET)
45 #define NV2A_RAMDAC_OFFSET (0x680000 + NV2A_CONTROL_OFFSET)
46 #define NV2A_RAMDAC_FP_HVALID_END (0x838 + NV2A_RAMDAC_OFFSET)
47 #define NV2A_RAMDAC_FP_VVALID_END (0x818 + NV2A_RAMDAC_OFFSET)
48
49 extern UCHAR XboxFont8x16[256 * 16];
50
51 VOID XboxMachInit(const char *CmdLine);
52
53 VOID XboxConsPutChar(int Ch);
54 BOOLEAN XboxConsKbHit(VOID);
55 int XboxConsGetCh(VOID);
56
57 VOID XboxVideoInit(VOID);
58 VOID XboxVideoClearScreen(UCHAR Attr);
59 VIDEODISPLAYMODE XboxVideoSetDisplayMode(char *DisplayModem, BOOLEAN Init);
60 VOID XboxVideoGetDisplaySize(PULONG Width, PULONG Height, PULONG Depth);
61 ULONG XboxVideoGetBufferSize(VOID);
62 VOID XboxVideoGetFontsFromFirmware(PULONG RomFontPointers);
63 VOID XboxVideoSetTextCursorPosition(UCHAR X, UCHAR Y);
64 VOID XboxVideoHideShowTextCursor(BOOLEAN Show);
65 VOID XboxVideoPutChar(int Ch, UCHAR Attr, unsigned X, unsigned Y);
66 VOID XboxVideoCopyOffScreenBufferToVRAM(PVOID Buffer);
67 BOOLEAN XboxVideoIsPaletteFixed(VOID);
68 VOID XboxVideoSetPaletteColor(UCHAR Color, UCHAR Red, UCHAR Green, UCHAR Blue);
69 VOID XboxVideoGetPaletteColor(UCHAR Color, UCHAR* Red, UCHAR* Green, UCHAR* Blue);
70 VOID XboxVideoSync(VOID);
71 VOID XboxVideoPrepareForReactOS(VOID);
72 VOID XboxPrepareForReactOS(VOID);
73
74 VOID XboxMemInit(VOID);
75 PFREELDR_MEMORY_DESCRIPTOR XboxMemGetMemoryMap(ULONG *MemoryMapSize);
76
77 BOOLEAN XboxDiskReadLogicalSectors(UCHAR DriveNumber, ULONGLONG SectorNumber, ULONG SectorCount, PVOID Buffer);
78 BOOLEAN XboxDiskGetDriveGeometry(UCHAR DriveNumber, PGEOMETRY DriveGeometry);
79 ULONG XboxDiskGetCacheableBlockCount(UCHAR DriveNumber);
80
81 TIMEINFO* XboxGetTime(VOID);
82
83 PCONFIGURATION_COMPONENT_DATA XboxHwDetect(VOID);
84 VOID XboxHwIdle(VOID);
85
86 VOID XboxSetLED(PCSTR Pattern);
87
88 /* EOF */