Sync with trunk r63831.
[reactos.git] / drivers / setup / blue / blue.h
1 /*
2 * PROJECT: ReactOS Setup Driver
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: drivers/setup/blue/font.h
5 * PURPOSE: Loading specific fonts into VGA
6 * PROGRAMMERS: Aleksey Bragin (aleksey@reactos.org)
7 */
8
9 #ifndef _BLUE_PCH_
10 #define _BLUE_PCH_
11
12 #include <wdm.h>
13
14 typedef struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES, *PSECURITY_ATTRIBUTES;
15
16 // Define material that normally comes from PSDK
17 // This is mandatory to prevent any inclusion of
18 // user-mode stuff.
19 typedef struct tagCOORD {
20 SHORT X;
21 SHORT Y;
22 } COORD, *PCOORD;
23
24 typedef struct tagSMALL_RECT {
25 SHORT Left;
26 SHORT Top;
27 SHORT Right;
28 SHORT Bottom;
29 } SMALL_RECT;
30
31 typedef struct tagCONSOLE_SCREEN_BUFFER_INFO {
32 COORD dwSize;
33 COORD dwCursorPosition;
34 USHORT wAttributes;
35 SMALL_RECT srWindow;
36 COORD dwMaximumWindowSize;
37 } CONSOLE_SCREEN_BUFFER_INFO, *PCONSOLE_SCREEN_BUFFER_INFO;
38
39 typedef struct tagCONSOLE_CURSOR_INFO {
40 ULONG dwSize;
41 BOOLEAN bVisible;
42 } CONSOLE_CURSOR_INFO, *PCONSOLE_CURSOR_INFO;
43
44 #define ENABLE_PROCESSED_OUTPUT 0x0001
45 #define ENABLE_WRAP_AT_EOL_OUTPUT 0x0002
46
47 #include <blue/ntddblue.h>
48 #include <ndk/inbvfuncs.h>
49
50 #define TAG_BLUE 'EULB'
51
52 typedef struct _CFHEADER
53 {
54 ULONG Signature; // File signature 'MSCF' (CAB_SIGNATURE)
55 ULONG Reserved1; // Reserved field
56 ULONG CabinetSize; // Cabinet file size
57 ULONG Reserved2; // Reserved field
58 ULONG FileTableOffset; // Offset of first CFFILE
59 ULONG Reserved3; // Reserved field
60 USHORT Version; // Cabinet version (CAB_VERSION)
61 USHORT FolderCount; // Number of folders
62 USHORT FileCount; // Number of files
63 USHORT Flags; // Cabinet flags (CAB_FLAG_*)
64 USHORT SetID; // Cabinet set id
65 USHORT CabinetNumber; // Zero-based cabinet number
66 } CFHEADER, *PCFHEADER;
67
68 typedef struct _CFFILE
69 {
70 ULONG FileSize; // Uncompressed file size in bytes
71 ULONG FileOffset; // Uncompressed offset of file in the folder
72 USHORT FileControlID; // File control ID (CAB_FILE_*)
73 USHORT FileDate; // File date stamp, as used by DOS
74 USHORT FileTime; // File time stamp, as used by DOS
75 USHORT Attributes; // File attributes (CAB_ATTRIB_*)
76 /* After this is the NULL terminated filename */
77 } CFFILE, *PCFFILE;
78
79 #define CAB_SIGNATURE 0x4643534D // "MSCF"
80
81 #define VIDMEM_BASE 0xb8000
82 #define BITPLANE_BASE 0xa0000
83
84 #define CRTC_COMMAND ((PUCHAR)0x3d4)
85 #define CRTC_DATA ((PUCHAR)0x3d5)
86
87 #define CRTC_COLUMNS 0x01
88 #define CRTC_OVERFLOW 0x07
89 #define CRTC_ROWS 0x12
90 #define CRTC_SCANLINES 0x09
91 #define CRTC_CURSORSTART 0x0a
92 #define CRTC_CURSOREND 0x0b
93 #define CRTC_CURSORPOSHI 0x0e
94 #define CRTC_CURSORPOSLO 0x0f
95
96 #define SEQ_COMMAND ((PUCHAR)0x3c4)
97 #define SEQ_DATA ((PUCHAR)0x3c5)
98
99 #define GCT_COMMAND ((PUCHAR)0x3ce)
100 #define GCT_DATA ((PUCHAR)0x3cf)
101
102 /* SEQ regs numbers*/
103 #define SEQ_RESET 0x00
104 #define SEQ_ENABLE_WRT_PLANE 0x02
105 #define SEQ_MEM_MODE 0x04
106
107 /* GCT regs numbers */
108 #define GCT_READ_PLANE 0x04
109 #define GCT_RW_MODES 0x05
110 #define GCT_GRAPH_MODE 0x06
111
112 #define ATTRC_WRITEREG ((PUCHAR)0x3c0)
113 #define ATTRC_READREG ((PUCHAR)0x3c1)
114 #define ATTRC_INPST1 ((PUCHAR)0x3da)
115
116 #define TAB_WIDTH 8
117
118 #define MAX_PATH 260
119
120 #define MISC (PUCHAR)0x3c2
121 #define SEQ (PUCHAR)0x3c4
122 #define SEQDATA (PUCHAR)0x3c5
123 #define CRTC (PUCHAR)0x3d4
124 #define CRTCDATA (PUCHAR)0x3d5
125 #define GRAPHICS (PUCHAR)0x3ce
126 #define GRAPHICSDATA (PUCHAR)0x3cf
127 #define ATTRIB (PUCHAR)0x3c0
128 #define STATUS (PUCHAR)0x3da
129 #define PELMASK (PUCHAR)0x3c6
130 #define PELINDEX (PUCHAR)0x3c8
131 #define PELDATA (PUCHAR)0x3c9
132
133 void ScrLoadFontTable(UINT32 CodePage);
134 NTSTATUS ExtractFont(UINT32 CodePage, PUCHAR FontBitField);
135
136 #endif /* _BLUE_PCH_ */