xref: /reactos/drivers/setup/blue/blue.h (revision 845faec4)
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_ */
137