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