9#ifndef MAXOS_CONSOLE_VESABOOTCONSOLE_H
10#define MAXOS_CONSOLE_VESABOOTCONSOLE_H
14#include <libcommon/colour.h>
15#include <libcommon/mem.h>
25namespace MaxOS::console {
27 const static uint8_t AMIGA_FONT[2048] = {
28 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
29 0x7E, 0x81, 0xA5, 0x81, 0xBD, 0x99, 0x81, 0x7E,
30 0x7E, 0xFF, 0xDB, 0xFF, 0xC3, 0xE7, 0xFF, 0x7E,
31 0x6C, 0xFE, 0xFE, 0xFE, 0x7C, 0x38, 0x10, 0x00,
32 0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x10, 0x00,
33 0x38, 0x7C, 0x38, 0xFE, 0xFE, 0x92, 0x10, 0x7C,
34 0x00, 0x10, 0x38, 0x7C, 0xFE, 0x7C, 0x38, 0x7C,
35 0x00, 0x00, 0x18, 0x3C, 0x3C, 0x18, 0x00, 0x00,
36 0xFF, 0xFF, 0xE7, 0xC3, 0xC3, 0xE7, 0xFF, 0xFF,
37 0x00, 0x3C, 0x66, 0x42, 0x42, 0x66, 0x3C, 0x00,
38 0xFF, 0xC3, 0x99, 0xBD, 0xBD, 0x99, 0xC3, 0xFF,
39 0x0F, 0x07, 0x0F, 0x7D, 0xCC, 0xCC, 0xCC, 0x78,
40 0x3C, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x7E, 0x18,
41 0x3F, 0x33, 0x3F, 0x30, 0x30, 0x70, 0xF0, 0xE0,
42 0x7F, 0x63, 0x7F, 0x63, 0x63, 0x67, 0xE6, 0xC0,
43 0x99, 0x5A, 0x3C, 0xE7, 0xE7, 0x3C, 0x5A, 0x99,
44 0x80, 0xE0, 0xF8, 0xFE, 0xF8, 0xE0, 0x80, 0x00,
45 0x02, 0x0E, 0x3E, 0xFE, 0x3E, 0x0E, 0x02, 0x00,
46 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x7E, 0x3C, 0x18,
47 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x66, 0x00,
48 0x7F, 0xDB, 0xDB, 0x7B, 0x1B, 0x1B, 0x1B, 0x00,
49 0x3E, 0x63, 0x38, 0x6C, 0x6C, 0x38, 0x86, 0xFC,
50 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x7E, 0x00,
51 0x18, 0x3C, 0x7E, 0x18, 0x7E, 0x3C, 0x18, 0xFF,
52 0x18, 0x3C, 0x7E, 0x18, 0x18, 0x18, 0x18, 0x00,
53 0x18, 0x18, 0x18, 0x18, 0x7E, 0x3C, 0x18, 0x00,
54 0x00, 0x18, 0x0C, 0xFE, 0x0C, 0x18, 0x00, 0x00,
55 0x00, 0x30, 0x60, 0xFE, 0x60, 0x30, 0x00, 0x00,
56 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xFE, 0x00, 0x00,
57 0x00, 0x24, 0x66, 0xFF, 0x66, 0x24, 0x00, 0x00,
58 0x00, 0x18, 0x3C, 0x7E, 0xFF, 0xFF, 0x00, 0x00,
59 0x00, 0xFF, 0xFF, 0x7E, 0x3C, 0x18, 0x00, 0x00,
60 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
61 0x18, 0x3C, 0x3C, 0x18, 0x18, 0x00, 0x18, 0x00,
62 0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00, 0x00, 0x00,
63 0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0x00,
64 0x18, 0x7E, 0xC0, 0x7C, 0x06, 0xFC, 0x18, 0x00,
65 0x00, 0xC6, 0xCC, 0x18, 0x30, 0x66, 0xC6, 0x00,
66 0x38, 0x6C, 0x38, 0x76, 0xDC, 0xCC, 0x76, 0x00,
67 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00,
68 0x18, 0x30, 0x60, 0x60, 0x60, 0x30, 0x18, 0x00,
69 0x60, 0x30, 0x18, 0x18, 0x18, 0x30, 0x60, 0x00,
70 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00,
71 0x00, 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x00,
72 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30,
73 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x00,
74 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00,
75 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0x80, 0x00,
76 0x7C, 0xCE, 0xDE, 0xF6, 0xE6, 0xC6, 0x7C, 0x00,
77 0x30, 0x70, 0x30, 0x30, 0x30, 0x30, 0xFC, 0x00,
78 0x78, 0xCC, 0x0C, 0x38, 0x60, 0xCC, 0xFC, 0x00,
79 0x78, 0xCC, 0x0C, 0x38, 0x0C, 0xCC, 0x78, 0x00,
80 0x1C, 0x3C, 0x6C, 0xCC, 0xFE, 0x0C, 0x1E, 0x00,
81 0xFC, 0xC0, 0xF8, 0x0C, 0x0C, 0xCC, 0x78, 0x00,
82 0x38, 0x60, 0xC0, 0xF8, 0xCC, 0xCC, 0x78, 0x00,
83 0xFC, 0xCC, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x00,
84 0x78, 0xCC, 0xCC, 0x78, 0xCC, 0xCC, 0x78, 0x00,
85 0x78, 0xCC, 0xCC, 0x7C, 0x0C, 0x18, 0x70, 0x00,
86 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x00,
87 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x30,
88 0x18, 0x30, 0x60, 0xC0, 0x60, 0x30, 0x18, 0x00,
89 0x00, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00, 0x00,
90 0x60, 0x30, 0x18, 0x0C, 0x18, 0x30, 0x60, 0x00,
91 0x3C, 0x66, 0x0C, 0x18, 0x18, 0x00, 0x18, 0x00,
92 0x7C, 0xC6, 0xDE, 0xDE, 0xDC, 0xC0, 0x7C, 0x00,
93 0x30, 0x78, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, 0x00,
94 0xFC, 0x66, 0x66, 0x7C, 0x66, 0x66, 0xFC, 0x00,
95 0x3C, 0x66, 0xC0, 0xC0, 0xC0, 0x66, 0x3C, 0x00,
96 0xF8, 0x6C, 0x66, 0x66, 0x66, 0x6C, 0xF8, 0x00,
97 0xFE, 0x62, 0x68, 0x78, 0x68, 0x62, 0xFE, 0x00,
98 0xFE, 0x62, 0x68, 0x78, 0x68, 0x60, 0xF0, 0x00,
99 0x3C, 0x66, 0xC0, 0xC0, 0xCE, 0x66, 0x3A, 0x00,
100 0xCC, 0xCC, 0xCC, 0xFC, 0xCC, 0xCC, 0xCC, 0x00,
101 0x78, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00,
102 0x1E, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78, 0x00,
103 0xE6, 0x66, 0x6C, 0x78, 0x6C, 0x66, 0xE6, 0x00,
104 0xF0, 0x60, 0x60, 0x60, 0x62, 0x66, 0xFE, 0x00,
105 0xC6, 0xEE, 0xFE, 0xFE, 0xD6, 0xC6, 0xC6, 0x00,
106 0xC6, 0xE6, 0xF6, 0xDE, 0xCE, 0xC6, 0xC6, 0x00,
107 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x00,
108 0xFC, 0x66, 0x66, 0x7C, 0x60, 0x60, 0xF0, 0x00,
109 0x7C, 0xC6, 0xC6, 0xC6, 0xD6, 0x7C, 0x0E, 0x00,
110 0xFC, 0x66, 0x66, 0x7C, 0x6C, 0x66, 0xE6, 0x00,
111 0x7C, 0xC6, 0xE0, 0x78, 0x0E, 0xC6, 0x7C, 0x00,
112 0xFC, 0xB4, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00,
113 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xFC, 0x00,
114 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x00,
115 0xC6, 0xC6, 0xC6, 0xC6, 0xD6, 0xFE, 0x6C, 0x00,
116 0xC6, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0xC6, 0x00,
117 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x30, 0x78, 0x00,
118 0xFE, 0xC6, 0x8C, 0x18, 0x32, 0x66, 0xFE, 0x00,
119 0x78, 0x60, 0x60, 0x60, 0x60, 0x60, 0x78, 0x00,
120 0xC0, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x02, 0x00,
121 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x00,
122 0x10, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00,
123 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
124 0x30, 0x30, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
125 0x00, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00,
126 0xE0, 0x60, 0x60, 0x7C, 0x66, 0x66, 0xDC, 0x00,
127 0x00, 0x00, 0x78, 0xCC, 0xC0, 0xCC, 0x78, 0x00,
128 0x1C, 0x0C, 0x0C, 0x7C, 0xCC, 0xCC, 0x76, 0x00,
129 0x00, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00,
130 0x38, 0x6C, 0x64, 0xF0, 0x60, 0x60, 0xF0, 0x00,
131 0x00, 0x00, 0x76, 0xCC, 0xCC, 0x7C, 0x0C, 0xF8,
132 0xE0, 0x60, 0x6C, 0x76, 0x66, 0x66, 0xE6, 0x00,
133 0x30, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00,
134 0x0C, 0x00, 0x1C, 0x0C, 0x0C, 0xCC, 0xCC, 0x78,
135 0xE0, 0x60, 0x66, 0x6C, 0x78, 0x6C, 0xE6, 0x00,
136 0x70, 0x30, 0x30, 0x30, 0x30, 0x30, 0x78, 0x00,
137 0x00, 0x00, 0xCC, 0xFE, 0xFE, 0xD6, 0xD6, 0x00,
138 0x00, 0x00, 0xB8, 0xCC, 0xCC, 0xCC, 0xCC, 0x00,
139 0x00, 0x00, 0x78, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
140 0x00, 0x00, 0xDC, 0x66, 0x66, 0x7C, 0x60, 0xF0,
141 0x00, 0x00, 0x76, 0xCC, 0xCC, 0x7C, 0x0C, 0x1E,
142 0x00, 0x00, 0xDC, 0x76, 0x62, 0x60, 0xF0, 0x00,
143 0x00, 0x00, 0x7C, 0xC0, 0x70, 0x1C, 0xF8, 0x00,
144 0x10, 0x30, 0xFC, 0x30, 0x30, 0x34, 0x18, 0x00,
145 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00,
146 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x30, 0x00,
147 0x00, 0x00, 0xC6, 0xC6, 0xD6, 0xFE, 0x6C, 0x00,
148 0x00, 0x00, 0xC6, 0x6C, 0x38, 0x6C, 0xC6, 0x00,
149 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0x7C, 0x0C, 0xF8,
150 0x00, 0x00, 0xFC, 0x98, 0x30, 0x64, 0xFC, 0x00,
151 0x1C, 0x30, 0x30, 0xE0, 0x30, 0x30, 0x1C, 0x00,
152 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x18, 0x00,
153 0xE0, 0x30, 0x30, 0x1C, 0x30, 0x30, 0xE0, 0x00,
154 0x76, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
155 0x00, 0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xFE, 0x00,
156 0x7C, 0xC6, 0xC0, 0xC6, 0x7C, 0x0C, 0x06, 0x7C,
157 0x00, 0xCC, 0x00, 0xCC, 0xCC, 0xCC, 0x76, 0x00,
158 0x1C, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00,
159 0x7E, 0x81, 0x3C, 0x06, 0x3E, 0x66, 0x3B, 0x00,
160 0xCC, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00,
161 0xE0, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00,
162 0x30, 0x30, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00,
163 0x00, 0x00, 0x7C, 0xC6, 0xC0, 0x78, 0x0C, 0x38,
164 0x7E, 0x81, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0x00,
165 0xCC, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00,
166 0xE0, 0x00, 0x78, 0xCC, 0xFC, 0xC0, 0x78, 0x00,
167 0xCC, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00,
168 0x7C, 0x82, 0x38, 0x18, 0x18, 0x18, 0x3C, 0x00,
169 0xE0, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00,
170 0xC6, 0x10, 0x7C, 0xC6, 0xFE, 0xC6, 0xC6, 0x00,
171 0x30, 0x30, 0x00, 0x78, 0xCC, 0xFC, 0xCC, 0x00,
172 0x1C, 0x00, 0xFC, 0x60, 0x78, 0x60, 0xFC, 0x00,
173 0x00, 0x00, 0x7F, 0x0C, 0x7F, 0xCC, 0x7F, 0x00,
174 0x3E, 0x6C, 0xCC, 0xFE, 0xCC, 0xCC, 0xCE, 0x00,
175 0x78, 0x84, 0x00, 0x78, 0xCC, 0xCC, 0x78, 0x00,
176 0x00, 0xCC, 0x00, 0x78, 0xCC, 0xCC, 0x78, 0x00,
177 0x00, 0xE0, 0x00, 0x78, 0xCC, 0xCC, 0x78, 0x00,
178 0x78, 0x84, 0x00, 0xCC, 0xCC, 0xCC, 0x76, 0x00,
179 0x00, 0xE0, 0x00, 0xCC, 0xCC, 0xCC, 0x76, 0x00,
180 0x00, 0xCC, 0x00, 0xCC, 0xCC, 0x7C, 0x0C, 0xF8,
181 0xC3, 0x18, 0x3C, 0x66, 0x66, 0x3C, 0x18, 0x00,
182 0xCC, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x00,
183 0x18, 0x18, 0x7E, 0xC0, 0xC0, 0x7E, 0x18, 0x18,
184 0x38, 0x6C, 0x64, 0xF0, 0x60, 0xE6, 0xFC, 0x00,
185 0xCC, 0xCC, 0x78, 0x30, 0xFC, 0x30, 0xFC, 0x30,
186 0xF8, 0xCC, 0xCC, 0xFA, 0xC6, 0xCF, 0xC6, 0xC3,
187 0x0E, 0x1B, 0x18, 0x3C, 0x18, 0x18, 0xD8, 0x70,
188 0x1C, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0x76, 0x00,
189 0x38, 0x00, 0x70, 0x30, 0x30, 0x30, 0x78, 0x00,
190 0x00, 0x1C, 0x00, 0x78, 0xCC, 0xCC, 0x78, 0x00,
191 0x00, 0x1C, 0x00, 0xCC, 0xCC, 0xCC, 0x76, 0x00,
192 0x00, 0xF8, 0x00, 0xB8, 0xCC, 0xCC, 0xCC, 0x00,
193 0xFC, 0x00, 0xCC, 0xEC, 0xFC, 0xDC, 0xCC, 0x00,
194 0x3C, 0x6C, 0x6C, 0x3E, 0x00, 0x7E, 0x00, 0x00,
195 0x38, 0x6C, 0x6C, 0x38, 0x00, 0x7C, 0x00, 0x00,
196 0x18, 0x00, 0x18, 0x18, 0x30, 0x66, 0x3C, 0x00,
197 0x00, 0x00, 0x00, 0xFC, 0xC0, 0xC0, 0x00, 0x00,
198 0x00, 0x00, 0x00, 0xFC, 0x0C, 0x0C, 0x00, 0x00,
199 0xC6, 0xCC, 0xD8, 0x36, 0x6B, 0xC2, 0x84, 0x0F,
200 0xC3, 0xC6, 0xCC, 0xDB, 0x37, 0x6D, 0xCF, 0x03,
201 0x18, 0x00, 0x18, 0x18, 0x3C, 0x3C, 0x18, 0x00,
202 0x00, 0x33, 0x66, 0xCC, 0x66, 0x33, 0x00, 0x00,
203 0x00, 0xCC, 0x66, 0x33, 0x66, 0xCC, 0x00, 0x00,
204 0x22, 0x88, 0x22, 0x88, 0x22, 0x88, 0x22, 0x88,
205 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA,
206 0xDB, 0xF6, 0xDB, 0x6F, 0xDB, 0x7E, 0xD7, 0xED,
207 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
208 0x18, 0x18, 0x18, 0x18, 0xF8, 0x18, 0x18, 0x18,
209 0x18, 0x18, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18,
210 0x36, 0x36, 0x36, 0x36, 0xF6, 0x36, 0x36, 0x36,
211 0x00, 0x00, 0x00, 0x00, 0xFE, 0x36, 0x36, 0x36,
212 0x00, 0x00, 0xF8, 0x18, 0xF8, 0x18, 0x18, 0x18,
213 0x36, 0x36, 0xF6, 0x06, 0xF6, 0x36, 0x36, 0x36,
214 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36,
215 0x00, 0x00, 0xFE, 0x06, 0xF6, 0x36, 0x36, 0x36,
216 0x36, 0x36, 0xF6, 0x06, 0xFE, 0x00, 0x00, 0x00,
217 0x36, 0x36, 0x36, 0x36, 0xFE, 0x00, 0x00, 0x00,
218 0x18, 0x18, 0xF8, 0x18, 0xF8, 0x00, 0x00, 0x00,
219 0x00, 0x00, 0x00, 0x00, 0xF8, 0x18, 0x18, 0x18,
220 0x18, 0x18, 0x18, 0x18, 0x1F, 0x00, 0x00, 0x00,
221 0x18, 0x18, 0x18, 0x18, 0xFF, 0x00, 0x00, 0x00,
222 0x00, 0x00, 0x00, 0x00, 0xFF, 0x18, 0x18, 0x18,
223 0x18, 0x18, 0x18, 0x18, 0x1F, 0x18, 0x18, 0x18,
224 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00,
225 0x18, 0x18, 0x18, 0x18, 0xFF, 0x18, 0x18, 0x18,
226 0x18, 0x18, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18,
227 0x36, 0x36, 0x36, 0x36, 0x37, 0x36, 0x36, 0x36,
228 0x36, 0x36, 0x37, 0x30, 0x3F, 0x00, 0x00, 0x00,
229 0x00, 0x00, 0x3F, 0x30, 0x37, 0x36, 0x36, 0x36,
230 0x36, 0x36, 0xF7, 0x00, 0xFF, 0x00, 0x00, 0x00,
231 0x00, 0x00, 0xFF, 0x00, 0xF7, 0x36, 0x36, 0x36,
232 0x36, 0x36, 0x37, 0x30, 0x37, 0x36, 0x36, 0x36,
233 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00,
234 0x36, 0x36, 0xF7, 0x00, 0xF7, 0x36, 0x36, 0x36,
235 0x18, 0x18, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00,
236 0x36, 0x36, 0x36, 0x36, 0xFF, 0x00, 0x00, 0x00,
237 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x18, 0x18, 0x18,
238 0x00, 0x00, 0x00, 0x00, 0xFF, 0x36, 0x36, 0x36,
239 0x36, 0x36, 0x36, 0x36, 0x3F, 0x00, 0x00, 0x00,
240 0x18, 0x18, 0x1F, 0x18, 0x1F, 0x00, 0x00, 0x00,
241 0x00, 0x00, 0x1F, 0x18, 0x1F, 0x18, 0x18, 0x18,
242 0x00, 0x00, 0x00, 0x00, 0x3F, 0x36, 0x36, 0x36,
243 0x36, 0x36, 0x36, 0x36, 0xFF, 0x36, 0x36, 0x36,
244 0x18, 0x18, 0xFF, 0x18, 0xFF, 0x18, 0x18, 0x18,
245 0x18, 0x18, 0x18, 0x18, 0xF8, 0x00, 0x00, 0x00,
246 0x00, 0x00, 0x00, 0x00, 0x1F, 0x18, 0x18, 0x18,
247 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
248 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
249 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
250 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
251 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
252 0x00, 0x00, 0x76, 0xDC, 0xC8, 0xDC, 0x76, 0x00,
253 0x00, 0x78, 0xCC, 0xF8, 0xCC, 0xF8, 0xC0, 0xC0,
254 0x00, 0xFC, 0xCC, 0xC0, 0xC0, 0xC0, 0xC0, 0x00,
255 0x00, 0x00, 0xFE, 0x6C, 0x6C, 0x6C, 0x6C, 0x00,
256 0xFC, 0xCC, 0x60, 0x30, 0x60, 0xCC, 0xFC, 0x00,
257 0x00, 0x00, 0x7E, 0xD8, 0xD8, 0xD8, 0x70, 0x00,
258 0x00, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x60, 0xC0,
259 0x00, 0x76, 0xDC, 0x18, 0x18, 0x18, 0x18, 0x00,
260 0xFC, 0x30, 0x78, 0xCC, 0xCC, 0x78, 0x30, 0xFC,
261 0x38, 0x6C, 0xC6, 0xFE, 0xC6, 0x6C, 0x38, 0x00,
262 0x38, 0x6C, 0xC6, 0xC6, 0x6C, 0x6C, 0xEE, 0x00,
263 0x1C, 0x30, 0x18, 0x7C, 0xCC, 0xCC, 0x78, 0x00,
264 0x00, 0x00, 0x7E, 0xDB, 0xDB, 0x7E, 0x00, 0x00,
265 0x06, 0x0C, 0x7E, 0xDB, 0xDB, 0x7E, 0x60, 0xC0,
266 0x38, 0x60, 0xC0, 0xF8, 0xC0, 0x60, 0x38, 0x00,
267 0x78, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x00,
268 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x7E, 0x00, 0x00,
269 0x18, 0x18, 0x7E, 0x18, 0x18, 0x00, 0x7E, 0x00,
270 0x60, 0x30, 0x18, 0x30, 0x60, 0x00, 0xFC, 0x00,
271 0x18, 0x30, 0x60, 0x30, 0x18, 0x00, 0xFC, 0x00,
272 0x0E, 0x1B, 0x1B, 0x18, 0x18, 0x18, 0x18, 0x18,
273 0x18, 0x18, 0x18, 0x18, 0x18, 0xD8, 0xD8, 0x70,
274 0x18, 0x18, 0x00, 0x7E, 0x00, 0x18, 0x18, 0x00,
275 0x00, 0x76, 0xDC, 0x00, 0x76, 0xDC, 0x00, 0x00,
276 0x38, 0x6C, 0x6C, 0x38, 0x00, 0x00, 0x00, 0x00,
277 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00,
278 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00,
279 0x0F, 0x0C, 0x0C, 0x0C, 0xEC, 0x6C, 0x3C, 0x1C,
280 0x58, 0x6C, 0x6C, 0x6C, 0x6C, 0x00, 0x00, 0x00,
281 0x70, 0x98, 0x30, 0x60, 0xF8, 0x00, 0x00, 0x00,
282 0x00, 0x00, 0x3C, 0x3C, 0x3C, 0x3C, 0x00, 0x00,
283 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
298 uint16_t* m_video_memory_meta;
301 uint8_t ansi_code_length = -1;
302 char ansi_code[8] =
"0000000";
304 common::ConsoleColour m_foreground_color = common::ConsoleColour::Uninitialised;
305 common::ConsoleColour m_background_color = common::ConsoleColour::Uninitialised;
308 uint8_t m_framebuffer_bpp;
309 uint16_t m_framebuffer_pitch;
310 uint64_t* m_framebuffer_address;
311 size_t m_framebuffer_size;
313 static void put_pixel(uint32_t x, uint32_t y, uint32_t col);
319 uint16_t
width()
final;
329 void scroll_up(uint16_t left, uint16_t top, uint16_t
width, uint16_t
height, common::ConsoleColour foreground, common::ConsoleColour background,
char fill)
final;
335 static void print_logo(
bool is_panic =
false);
A console that is a subsection of another console, limited by a width and height.
A stream that can be used to write to a console.
Abstract class for a console, allows for the printing of characters and strings with colours.
virtual void scroll_up()
Scroll the entire console up by 1 line.
Handles the printing of characters and strings to the screen using a framebuffer.
static void update_progress_bar(uint8_t percentage)
Updates the progress bar.
void set_background_color(uint16_t x, uint16_t y, common::ConsoleColour) final
Sets the background color at the specified location.
void put_character(uint16_t x, uint16_t y, char) final
Places a character at the specified location.
common::ConsoleColour get_foreground_color(uint16_t x, uint16_t y) final
Gets the foreground color at the specified location.
void set_foreground_color(uint16_t x, uint16_t y, common::ConsoleColour) final
Sets the foreground color at the specified location.
uint16_t height() final
Gets the height of the console.
common::ConsoleColour get_background_color(uint16_t x, uint16_t y) final
Gets the background color at the specified location.
void finish() const
Cleans up the boot console.
uint16_t width() final
Gets the width of the console.
char get_character(uint16_t x, uint16_t y) final
Gets the character at the specified location.
static void print_logo(bool is_panic=false)
Prints the logo to the center of the screen.
ConsoleStream * cout
The boot console output stream.
Defines a Console class for handling text-based console output with colour support.
Defines Central Processing Unit (CPU) structures and functions for managing CPU state and features.
constexpr uint8_t FONT_PADDING
How many vertical pixels to add to the top and bottom of the font to prevent squishing.
constexpr uint8_t FONT_HEIGHT
How many pixels tall the font is.
constexpr uint8_t FONT_WIDTH
How many pixels wide the font is.
Defines a GraphicsContext class for drawing pixels, lines, rectangles and circles to the screen.
GIMP generated header file for the kernel logo.
GIMP generated logo header for kernel panic screen.
Defines a MemoryManager class for handling memory allocation and deallocation.
A tag containing information about the framebuffer.