xref: /reactos/drivers/setup/blue/blue.h (revision ede7a20a)
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 <ntifs.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 
58 /*
59  * Color attributes for text and screen background
60  */
61 #define FOREGROUND_BLUE                 0x0001
62 #define FOREGROUND_GREEN                0x0002
63 #define FOREGROUND_RED                  0x0004
64 #define FOREGROUND_INTENSITY            0x0008
65 #define BACKGROUND_BLUE                 0x0010
66 #define BACKGROUND_GREEN                0x0020
67 #define BACKGROUND_RED                  0x0040
68 #define BACKGROUND_INTENSITY            0x0080
69 
70 typedef struct _CFHEADER
71 {
72     ULONG Signature;        // File signature 'MSCF' (CAB_SIGNATURE)
73     ULONG Reserved1;        // Reserved field
74     ULONG CabinetSize;      // Cabinet file size
75     ULONG Reserved2;        // Reserved field
76     ULONG FileTableOffset;  // Offset of first CFFILE
77     ULONG Reserved3;        // Reserved field
78     USHORT Version;          // Cabinet version (CAB_VERSION)
79     USHORT FolderCount;      // Number of folders
80     USHORT FileCount;        // Number of files
81     USHORT Flags;            // Cabinet flags (CAB_FLAG_*)
82     USHORT SetID;            // Cabinet set id
83     USHORT CabinetNumber;    // Zero-based cabinet number
84 } CFHEADER, *PCFHEADER;
85 
86 typedef struct _CFFILE
87 {
88     ULONG FileSize;         // Uncompressed file size in bytes
89     ULONG FileOffset;       // Uncompressed offset of file in the folder
90     USHORT FileControlID;    // File control ID (CAB_FILE_*)
91     USHORT FileDate;         // File date stamp, as used by DOS
92     USHORT FileTime;         // File time stamp, as used by DOS
93     USHORT Attributes;       // File attributes (CAB_ATTRIB_*)
94     /* After this is the NULL terminated filename */
95 } CFFILE, *PCFFILE;
96 
97 #define CAB_SIGNATURE      0x4643534D // "MSCF"
98 
99 #define VIDMEM_BASE        0xb8000
100 #define BITPLANE_BASE      0xa0000
101 
102 #define CRTC_COMMAND       ((PUCHAR)0x3d4)
103 #define CRTC_DATA          ((PUCHAR)0x3d5)
104 
105 #define CRTC_COLUMNS       0x01
106 #define CRTC_OVERFLOW      0x07
107 #define CRTC_ROWS          0x12
108 #define CRTC_SCANLINES     0x09
109 #define CRTC_CURSORSTART   0x0a
110 #define CRTC_CURSOREND     0x0b
111 #define CRTC_CURSORPOSHI   0x0e
112 #define CRTC_CURSORPOSLO   0x0f
113 
114 #define SEQ_COMMAND        ((PUCHAR)0x3c4)
115 #define SEQ_DATA           ((PUCHAR)0x3c5)
116 
117 #define GCT_COMMAND        ((PUCHAR)0x3ce)
118 #define GCT_DATA           ((PUCHAR)0x3cf)
119 
120 /* SEQ regs numbers*/
121 #define SEQ_RESET            0x00
122 #define SEQ_ENABLE_WRT_PLANE 0x02
123 #define SEQ_MEM_MODE         0x04
124 
125 /* GCT regs numbers */
126 #define GCT_READ_PLANE     0x04
127 #define GCT_RW_MODES       0x05
128 #define GCT_GRAPH_MODE     0x06
129 
130 #define ATTRC_WRITEREG     ((PUCHAR)0x3c0)
131 #define ATTRC_READREG      ((PUCHAR)0x3c1)
132 #define ATTRC_INPST1       ((PUCHAR)0x3da)
133 
134 #define MISC         (PUCHAR)0x3c2
135 #define SEQ          (PUCHAR)0x3c4
136 #define SEQDATA      (PUCHAR)0x3c5
137 #define CRTC         (PUCHAR)0x3d4
138 #define CRTCDATA     (PUCHAR)0x3d5
139 #define GRAPHICS     (PUCHAR)0x3ce
140 #define GRAPHICSDATA (PUCHAR)0x3cf
141 #define ATTRIB       (PUCHAR)0x3c0
142 #define STATUS       (PUCHAR)0x3da
143 #define PELMASK      (PUCHAR)0x3c6
144 #define PELINDEX     (PUCHAR)0x3c8
145 #define PELDATA      (PUCHAR)0x3c9
146 
147 VOID ScrLoadFontTable(_In_ ULONG CodePage);
148 VOID ScrSetFont(_In_ PUCHAR FontBitfield);
149 
150 #endif /* _BLUE_PCH_ */
151