From 95cd4ed3e45bb56b2d4dbb0105c5070dadfdb50f Mon Sep 17 00:00:00 2001 From: Aren Date: Sat, 30 Sep 2023 22:53:47 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B0=D0=B2=20=D0=B4=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=83=D0=BF=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/6x8_slim_font.h | 267 ++++++++++++++++++++++++++++++++++++++++ include/arch.h | 4 +- include/cpu.h | 4 +- include/fb.h | 4 +- include/tool.h | 10 +- kernel/arch.cpp | 32 ++--- kernel/cpu.cpp | 30 ++--- kernel/fb.cpp | 62 +++++----- kernel/mem.cpp | 0 kernel/sys.cpp | 0 kernel/tool.cpp | 110 ++++++++--------- 11 files changed, 395 insertions(+), 128 deletions(-) create mode 100644 include/6x8_slim_font.h create mode 100644 kernel/mem.cpp create mode 100644 kernel/sys.cpp diff --git a/include/6x8_slim_font.h b/include/6x8_slim_font.h new file mode 100644 index 0000000..600c581 --- /dev/null +++ b/include/6x8_slim_font.h @@ -0,0 +1,267 @@ +// Название шрифта 6x8 Slim +// Автор шрифта Riva +// Дата и время генерации 06.06.2023 19:38:19 +// Сгенерировано matrixFont v1.1.0.52 +// Кодовая страница 1251 (ANSI - кириллица) +// https://gitlab.com/riva-lab/matrixFont + +#ifndef FONT_6X8_SLIM_H +#define FONT_6X8_SLIM_H + +#ifndef FONT_TYPE_MONOSPACED +#define FONT_TYPE_MONOSPACED 0 +#endif + +#ifndef FONT_TYPE_PROPORTIONAL +#define FONT_TYPE_PROPORTIONAL 1 +#endif + +#define FONT_6X8_SLIM_LENGTH 224 +#define FONT_6X8_SLIM_START_CHAR 32 +#define FONT_6X8_SLIM_CHAR_WIDTH 6 +#define FONT_6X8_SLIM_CHAR_HEIGHT 8 +#define FONT_6X8_SLIM_FONT_TYPE (FONT_TYPE_MONOSPACED) +#define FONT_6X8_SLIM_ARRAY_LENGTH \ + (FONT_6X8_SLIM_LENGTH * FONT_6X8_SLIM_CHAR_HEIGHT) + +static const unsigned char font_6x8_slim[FONT_6X8_SLIM_ARRAY_LENGTH] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 32 < > + 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x00, // Символ 33 + 0x05, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 34 <"> + 0x0A, 0x0A, 0x1F, 0x0A, 0x1F, 0x0A, 0x0A, 0x00, // Символ 35 <#> + 0x04, 0x1E, 0x05, 0x0E, 0x14, 0x0F, 0x04, 0x00, // Символ 36 <$> + 0x00, 0x27, 0x15, 0x0B, 0x34, 0x2A, 0x39, 0x00, // Символ 37 <%> + 0x06, 0x09, 0x05, 0x02, 0x15, 0x19, 0x0E, 0x00, // Символ 38 <&> + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 39 <'> + 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, // Символ 40 <(> + 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, // Символ 41 <)> + 0x00, 0x0A, 0x04, 0x1F, 0x04, 0x0A, 0x00, 0x00, // Символ 42 <*> + 0x00, 0x04, 0x04, 0x1F, 0x04, 0x04, 0x00, 0x00, // Символ 43 <+> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x01, // Символ 44 <,> + 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, // Символ 45 <-> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x00, // Символ 46 <.> + 0x08, 0x08, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, // Символ 47 + + // Digits / Цифры + 0x06, 0x09, 0x0D, 0x0B, 0x09, 0x09, 0x06, 0x00, // Символ 48 <0> + 0x02, 0x03, 0x02, 0x02, 0x02, 0x02, 0x07, 0x00, // Символ 49 <1> + 0x06, 0x09, 0x08, 0x06, 0x01, 0x01, 0x0F, 0x00, // Символ 50 <2> + 0x0F, 0x08, 0x06, 0x08, 0x08, 0x09, 0x06, 0x00, // Символ 51 <3> + 0x08, 0x0C, 0x0A, 0x09, 0x09, 0x1F, 0x08, 0x00, // Символ 52 <4> + 0x0F, 0x01, 0x07, 0x08, 0x08, 0x09, 0x06, 0x00, // Символ 53 <5> + 0x06, 0x09, 0x01, 0x07, 0x09, 0x09, 0x06, 0x00, // Символ 54 <6> + 0x0F, 0x08, 0x08, 0x04, 0x02, 0x01, 0x01, 0x00, // Символ 55 <7> + 0x06, 0x09, 0x09, 0x06, 0x09, 0x09, 0x06, 0x00, // Символ 56 <8> + 0x06, 0x09, 0x09, 0x0E, 0x08, 0x09, 0x06, 0x00, // Символ 57 <9> + + 0x00, 0x00, 0x03, 0x03, 0x00, 0x03, 0x03, 0x00, // Символ 58 <:> + 0x00, 0x00, 0x03, 0x03, 0x00, 0x03, 0x02, 0x01, // Символ 59 <;> + 0x00, 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, 0x00, // Символ 60 <<> + 0x00, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x00, 0x00, // Символ 61 <=> + 0x00, 0x01, 0x02, 0x04, 0x02, 0x01, 0x00, 0x00, // Символ 62 <>> + 0x0E, 0x11, 0x10, 0x08, 0x04, 0x00, 0x04, 0x00, // Символ 63 + 0x0E, 0x11, 0x1D, 0x15, 0x0D, 0x01, 0x0E, 0x00, // Символ 64 <@> + + // Roman Capitals / Латиница, прописные + 0x06, 0x09, 0x09, 0x0F, 0x09, 0x09, 0x09, 0x00, // Символ 65 + 0x07, 0x09, 0x09, 0x07, 0x09, 0x09, 0x07, 0x00, // Символ 66 + 0x06, 0x09, 0x01, 0x01, 0x01, 0x09, 0x06, 0x00, // Символ 67 + 0x07, 0x09, 0x09, 0x09, 0x09, 0x09, 0x07, 0x00, // Символ 68 + 0x0F, 0x01, 0x01, 0x07, 0x01, 0x01, 0x0F, 0x00, // Символ 69 + 0x0F, 0x01, 0x01, 0x07, 0x01, 0x01, 0x01, 0x00, // Символ 70 + 0x06, 0x09, 0x01, 0x0D, 0x09, 0x09, 0x06, 0x00, // Символ 71 + 0x09, 0x09, 0x09, 0x0F, 0x09, 0x09, 0x09, 0x00, // Символ 72 + 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07, 0x00, // Символ 73 + 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x00, // Символ 74 + 0x11, 0x09, 0x05, 0x03, 0x05, 0x09, 0x11, 0x00, // Символ 75 + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0F, 0x00, // Символ 76 + 0x11, 0x1B, 0x15, 0x11, 0x11, 0x11, 0x11, 0x00, // Символ 77 + 0x11, 0x13, 0x15, 0x19, 0x11, 0x11, 0x11, 0x00, // Символ 78 + 0x06, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, // Символ 79 + 0x07, 0x09, 0x09, 0x07, 0x01, 0x01, 0x01, 0x00, // Символ 80

+ 0x00, 0x00, 0x0E, 0x09, 0x09, 0x09, 0x0E, 0x08, // Символ 113 + 0x00, 0x00, 0x05, 0x03, 0x01, 0x01, 0x01, 0x00, // Символ 114 + 0x00, 0x00, 0x0E, 0x01, 0x06, 0x08, 0x07, 0x00, // Символ 115 + 0x02, 0x02, 0x0F, 0x02, 0x02, 0x02, 0x0C, 0x00, // Символ 116 + 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x0E, 0x00, // Символ 117 + 0x00, 0x00, 0x09, 0x09, 0x09, 0x05, 0x02, 0x00, // Символ 118 + 0x00, 0x00, 0x11, 0x11, 0x15, 0x0A, 0x0A, 0x00, // Символ 119 + 0x00, 0x00, 0x11, 0x0A, 0x04, 0x0A, 0x11, 0x00, // Символ 120 + 0x00, 0x00, 0x09, 0x09, 0x09, 0x0E, 0x08, 0x06, // Символ 121 + 0x00, 0x00, 0x0F, 0x04, 0x02, 0x01, 0x0F, 0x00, // Символ 122 + + 0x04, 0x02, 0x02, 0x01, 0x02, 0x02, 0x04, 0x00, // Символ 123 <{> + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, // Символ 124 <|> + 0x01, 0x02, 0x02, 0x04, 0x02, 0x02, 0x01, 0x00, // Символ 125 <}> + 0x00, 0x00, 0x02, 0x15, 0x08, 0x00, 0x00, 0x00, // Символ 126 <~> + 0x0F, 0x09, 0x09, 0x09, 0x09, 0x09, 0x0F, 0x00, // Символ 127 + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 128 <Ђ> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 129 <Ѓ> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x02, 0x01, // Символ 130 <‚> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 131 <ѓ> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B, 0x12, 0x09, // Символ 132 <„> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, // Символ 133 <…> + 0x02, 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, // Символ 134 <†> + 0x02, 0x07, 0x02, 0x02, 0x02, 0x02, 0x07, 0x02, // Символ 135 <‡> + 0x0C, 0x12, 0x07, 0x02, 0x07, 0x12, 0x0C, 0x00, // Символ 136 <€> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 137 <‰> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 138 <Љ> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 139 <‹> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 140 <Њ> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 141 <Ќ> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 142 <Ћ> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 143 <Џ> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 144 <ђ> + 0x02, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 145 <‘> + 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 146 <’> + 0x12, 0x09, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 147 <“> + 0x1B, 0x12, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 148 <”> + 0x00, 0x00, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, // Символ 149 <•> + 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00, // Символ 150 <–> + 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, // Символ 151 <—> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 152 <˜> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 153 <™> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 154 <љ> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 155 <›> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 156 <њ> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 157 <ќ> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 158 <ћ> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 159 <џ> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 160 < > + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 161 <Ў> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 162 <ў> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 163 <Ј> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 164 <¤> + 0x08, 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, // Символ 165 <Ґ> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 166 <¦> + 0x0E, 0x01, 0x06, 0x09, 0x09, 0x06, 0x08, 0x07, // Символ 167 <§> + 0x09, 0x00, 0x0F, 0x01, 0x07, 0x01, 0x0F, 0x00, // Символ 168 <Ё> + 0x1E, 0x21, 0x2D, 0x25, 0x2D, 0x21, 0x1E, 0x00, // Символ 169 <©> + 0x06, 0x09, 0x01, 0x07, 0x01, 0x09, 0x06, 0x00, // Символ 170 <Є> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 171 <«> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 172 <¬> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 173 <­> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 174 <®> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 175 <Ї> + 0x07, 0x05, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 176 <°> + 0x04, 0x04, 0x1F, 0x04, 0x04, 0x00, 0x1F, 0x00, // Символ 177 <±> + 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07, 0x00, // Символ 178 <І> + 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, // Символ 179 <і> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 180 <ґ> + 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x17, 0x01, // Символ 181 <µ> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 182 <¶> + 0x00, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, // Символ 183 <·> + 0x09, 0x00, 0x06, 0x09, 0x0F, 0x01, 0x0E, 0x00, // Символ 184 <ё> + 0x39, 0x2B, 0x3D, 0x09, 0x09, 0x09, 0x09, 0x00, // Символ 185 <№> + 0x00, 0x00, 0x0E, 0x01, 0x07, 0x01, 0x0E, 0x00, // Символ 186 <є> + 0x00, 0x00, 0x05, 0x0A, 0x14, 0x0A, 0x05, 0x00, // Символ 187 <»> + 0x02, 0x00, 0x03, 0x02, 0x02, 0x02, 0x02, 0x01, // Символ 188 <ј> + 0x06, 0x09, 0x01, 0x06, 0x08, 0x09, 0x06, 0x00, // Символ 189 <Ѕ> + 0x00, 0x00, 0x0E, 0x01, 0x06, 0x08, 0x07, 0x00, // Символ 190 <ѕ> + 0x05, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, // Символ 191 <ї> + + // Cyrillic Capitals / Кириллица, прописные + 0x06, 0x09, 0x09, 0x0F, 0x09, 0x09, 0x09, 0x00, // Символ 192 <А> + 0x0F, 0x01, 0x01, 0x07, 0x09, 0x09, 0x07, 0x00, // Символ 193 <Б> + 0x07, 0x09, 0x09, 0x07, 0x09, 0x09, 0x07, 0x00, // Символ 194 <В> + 0x0F, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, // Символ 195 <Г> + 0x0C, 0x0A, 0x0A, 0x0A, 0x0A, 0x1F, 0x11, 0x00, // Символ 196 <Д> + 0x0F, 0x01, 0x01, 0x07, 0x01, 0x01, 0x0F, 0x00, // Символ 197 <Е> + 0x15, 0x15, 0x15, 0x0E, 0x15, 0x15, 0x15, 0x00, // Символ 198 <Ж> + 0x06, 0x09, 0x08, 0x06, 0x08, 0x09, 0x06, 0x00, // Символ 199 <З> + 0x11, 0x11, 0x11, 0x19, 0x15, 0x13, 0x11, 0x00, // Символ 200 <И> + 0x15, 0x11, 0x11, 0x19, 0x15, 0x13, 0x11, 0x00, // Символ 201 <Й> + 0x11, 0x09, 0x05, 0x03, 0x05, 0x09, 0x11, 0x00, // Символ 202 <К> + 0x1C, 0x12, 0x12, 0x12, 0x12, 0x12, 0x11, 0x00, // Символ 203 <Л> + 0x11, 0x1B, 0x15, 0x11, 0x11, 0x11, 0x11, 0x00, // Символ 204 <М> + 0x09, 0x09, 0x09, 0x0F, 0x09, 0x09, 0x09, 0x00, // Символ 205 <Н> + 0x06, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, // Символ 206 <О> + 0x0F, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x00, // Символ 207 <П> + 0x07, 0x09, 0x09, 0x07, 0x01, 0x01, 0x01, 0x00, // Символ 208 <Р> + 0x06, 0x09, 0x01, 0x01, 0x01, 0x09, 0x06, 0x00, // Символ 209 <С> + 0x1F, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, // Символ 210 <Т> + 0x09, 0x09, 0x09, 0x0E, 0x08, 0x08, 0x06, 0x00, // Символ 211 <У> + 0x04, 0x0E, 0x15, 0x15, 0x15, 0x0E, 0x04, 0x00, // Символ 212 <Ф> + 0x11, 0x11, 0x0A, 0x04, 0x0A, 0x11, 0x11, 0x00, // Символ 213 <Х> + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x1F, 0x10, // Символ 214 <Ц> + 0x09, 0x09, 0x09, 0x0E, 0x08, 0x08, 0x08, 0x00, // Символ 215 <Ч> + 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x1F, 0x00, // Символ 216 <Ш> + 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x3F, 0x20, // Символ 217 <Щ> + 0x03, 0x02, 0x0E, 0x12, 0x12, 0x12, 0x0E, 0x00, // Символ 218 <Ъ> + 0x21, 0x21, 0x27, 0x29, 0x29, 0x29, 0x27, 0x00, // Символ 219 <Ы> + 0x01, 0x01, 0x07, 0x09, 0x09, 0x09, 0x07, 0x00, // Символ 220 <Ь> + 0x06, 0x09, 0x08, 0x0E, 0x08, 0x09, 0x06, 0x00, // Символ 221 <Э> + 0x19, 0x25, 0x25, 0x27, 0x25, 0x25, 0x19, 0x00, // Символ 222 <Ю> + 0x0E, 0x09, 0x09, 0x0E, 0x09, 0x09, 0x09, 0x00, // Символ 223 <Я> + + // Cyrillic Smalls / Кириллица, строчные + 0x00, 0x00, 0x06, 0x08, 0x0E, 0x09, 0x0E, 0x00, // Символ 224 <а> + 0x08, 0x06, 0x01, 0x07, 0x09, 0x09, 0x06, 0x00, // Символ 225 <б> + 0x00, 0x00, 0x07, 0x09, 0x07, 0x09, 0x07, 0x00, // Символ 226 <в> + 0x00, 0x00, 0x07, 0x01, 0x01, 0x01, 0x01, 0x00, // Символ 227 <г> + 0x00, 0x00, 0x0C, 0x0A, 0x0A, 0x0A, 0x1F, 0x11, // Символ 228 <д> + 0x00, 0x00, 0x06, 0x09, 0x0F, 0x01, 0x0E, 0x00, // Символ 229 <е> + 0x00, 0x00, 0x15, 0x15, 0x0E, 0x15, 0x15, 0x00, // Символ 230 <ж> + 0x00, 0x00, 0x07, 0x08, 0x06, 0x08, 0x07, 0x00, // Символ 231 <з> + 0x00, 0x00, 0x09, 0x09, 0x0D, 0x0B, 0x09, 0x00, // Символ 232 <и> + 0x06, 0x00, 0x09, 0x09, 0x0D, 0x0B, 0x09, 0x00, // Символ 233 <й> + 0x00, 0x00, 0x09, 0x05, 0x03, 0x05, 0x09, 0x00, // Символ 234 <к> + 0x00, 0x00, 0x0C, 0x0A, 0x0A, 0x0A, 0x09, 0x00, // Символ 235 <л> + 0x00, 0x00, 0x11, 0x1B, 0x15, 0x11, 0x11, 0x00, // Символ 236 <м> + 0x00, 0x00, 0x09, 0x09, 0x0F, 0x09, 0x09, 0x00, // Символ 237 <н> + 0x00, 0x00, 0x06, 0x09, 0x09, 0x09, 0x06, 0x00, // Символ 238 <о> + 0x00, 0x00, 0x0F, 0x09, 0x09, 0x09, 0x09, 0x00, // Символ 239 <п> + 0x00, 0x00, 0x07, 0x09, 0x09, 0x09, 0x07, 0x01, // Символ 240 <р> + 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x06, 0x00, // Символ 241 <с> + 0x00, 0x00, 0x1F, 0x04, 0x04, 0x04, 0x04, 0x00, // Символ 242 <т> + 0x00, 0x00, 0x09, 0x09, 0x09, 0x0E, 0x08, 0x06, // Символ 243 <у> + 0x00, 0x00, 0x0E, 0x15, 0x15, 0x15, 0x0E, 0x04, // Символ 244 <ф> + 0x00, 0x00, 0x11, 0x0A, 0x04, 0x0A, 0x11, 0x00, // Символ 245 <х> + 0x00, 0x00, 0x09, 0x09, 0x09, 0x09, 0x1F, 0x10, // Символ 246 <ц> + 0x00, 0x00, 0x09, 0x09, 0x0E, 0x08, 0x08, 0x00, // Символ 247 <ч> + 0x00, 0x00, 0x15, 0x15, 0x15, 0x15, 0x1F, 0x00, // Символ 248 <ш> + 0x00, 0x00, 0x15, 0x15, 0x15, 0x15, 0x3F, 0x20, // Символ 249 <щ> + 0x00, 0x00, 0x03, 0x0E, 0x12, 0x12, 0x0E, 0x00, // Символ 250 <ъ> + 0x00, 0x00, 0x11, 0x13, 0x15, 0x15, 0x13, 0x00, // Символ 251 <ы> + 0x00, 0x00, 0x01, 0x07, 0x09, 0x09, 0x07, 0x00, // Символ 252 <ь> + 0x00, 0x00, 0x07, 0x08, 0x0E, 0x08, 0x07, 0x00, // Символ 253 <э> + 0x00, 0x00, 0x09, 0x15, 0x17, 0x15, 0x09, 0x00, // Символ 254 <ю> + 0x00, 0x00, 0x0E, 0x09, 0x0E, 0x09, 0x09, 0x00 // Символ 255 <я> +}; + +#endif // FONT_6X8_SLIM_H \ No newline at end of file diff --git a/include/arch.h b/include/arch.h index 1ef2c66..bf31e64 100644 --- a/include/arch.h +++ b/include/arch.h @@ -1,3 +1,3 @@ -namespace arch { - void init(); +namespace arch { + void init(); } \ No newline at end of file diff --git a/include/cpu.h b/include/cpu.h index 280dba4..561ee00 100644 --- a/include/cpu.h +++ b/include/cpu.h @@ -1,3 +1,3 @@ -namespace cpu { - void init(); +namespace cpu { + void init(); } \ No newline at end of file diff --git a/include/fb.h b/include/fb.h index 000c4bc..cb8d119 100644 --- a/include/fb.h +++ b/include/fb.h @@ -1,3 +1,3 @@ -namespace fb { - void init(); +namespace fb { + void init(); } \ No newline at end of file diff --git a/include/tool.h b/include/tool.h index 68d41b7..9461a88 100644 --- a/include/tool.h +++ b/include/tool.h @@ -1,6 +1,6 @@ -#include - - -namespace tool { - void format(void (*putc)(char c), const char *format_string, va_list args); +#include + + +namespace tool { + void format(void (*putc)(char c), const char *format_string, va_list args); } \ No newline at end of file diff --git a/kernel/arch.cpp b/kernel/arch.cpp index d8f0e5b..3d5d2e0 100644 --- a/kernel/arch.cpp +++ b/kernel/arch.cpp @@ -1,17 +1,17 @@ -#include - - - -namespace arch { - static volatile struct limine_kernel_address_request kernel_address_request = { - .id = LIMINE_KERNEL_ADDRESS_REQUEST, - .revision = 0, - .response = (struct limine_kernel_address_response *)0 - }; - - struct limine_kernel_address_response *kernel_address_response; - - void init() { - kernel_address_response = kernel_address_request.response; - } +#include + + + +namespace arch { + static volatile struct limine_kernel_address_request kernel_address_request = { + .id = LIMINE_KERNEL_ADDRESS_REQUEST, + .revision = 0, + .response = (struct limine_kernel_address_response *)0 + }; + + struct limine_kernel_address_response *kernel_address_response; + + void init() { + kernel_address_response = kernel_address_request.response; + } } \ No newline at end of file diff --git a/kernel/cpu.cpp b/kernel/cpu.cpp index 3035aa1..fec6bcd 100644 --- a/kernel/cpu.cpp +++ b/kernel/cpu.cpp @@ -1,15 +1,15 @@ -#include -#include - - -namespace cpu { - static bool x87_support = false; - static bool sse_support = false; - static bool avx_support = false; - - void init() { - x87_support = false; - sse_support = false; - avx_support = false; - } -} +#include +#include + + +namespace cpu { + static bool x87_support = false; + static bool sse_support = false; + static bool avx_support = false; + + void init() { + x87_support = false; + sse_support = false; + avx_support = false; + } +} diff --git a/kernel/fb.cpp b/kernel/fb.cpp index a63c678..7196e12 100644 --- a/kernel/fb.cpp +++ b/kernel/fb.cpp @@ -1,32 +1,32 @@ -#include - - - -namespace fb { - static volatile struct limine_framebuffer_request framebuffer_request = { - .id = LIMINE_FRAMEBUFFER_REQUEST, - .revision = 0, - .response = (struct limine_framebuffer_response *)0 - }; - - struct limine_framebuffer_response *framebuffer_response; - struct limine_framebuffer *boot_framebuffer; - uint32_t *fb_addr; - uint64_t width; - uint64_t height; - uint64_t pitch; - uint16_t bpp; - - void init() { - framebuffer_response = framebuffer_request.response; - boot_framebuffer = framebuffer_response->framebuffers[0]; - fb_addr = (uint32_t*)boot_framebuffer->address; - width = boot_framebuffer->width; - height = boot_framebuffer->height; - bpp = boot_framebuffer->bpp; - - for (uint64_t i = 0; i < width * height; i++) { - fb_addr[i] = 0x0000FF; - } - } +#include + + + +namespace fb { + static volatile struct limine_framebuffer_request framebuffer_request = { + .id = LIMINE_FRAMEBUFFER_REQUEST, + .revision = 0, + .response = (struct limine_framebuffer_response *)0 + }; + + struct limine_framebuffer_response *framebuffer_response; + struct limine_framebuffer *boot_framebuffer; + uint32_t *fb_addr; + uint64_t width; + uint64_t height; + uint64_t pitch; + uint16_t bpp; + + void init() { + framebuffer_response = framebuffer_request.response; + boot_framebuffer = framebuffer_response->framebuffers[0]; + fb_addr = (uint32_t*)boot_framebuffer->address; + width = boot_framebuffer->width; + height = boot_framebuffer->height; + bpp = boot_framebuffer->bpp; + + for (uint64_t i = 0; i < width * height; i++) { + fb_addr[i] = 0x0000FF; + } + } } \ No newline at end of file diff --git a/kernel/mem.cpp b/kernel/mem.cpp new file mode 100644 index 0000000..e69de29 diff --git a/kernel/sys.cpp b/kernel/sys.cpp new file mode 100644 index 0000000..e69de29 diff --git a/kernel/tool.cpp b/kernel/tool.cpp index 8483dff..9f69e95 100644 --- a/kernel/tool.cpp +++ b/kernel/tool.cpp @@ -1,56 +1,56 @@ -#include -#include -#include - -namespace tool { - // Функция для форматированного вывода - void format(void (*putc)(char c), const char *format_string, va_list args) { - while (*format_string != '\0') { - if (*format_string == '%') { - format_string++; - if (*format_string == '\0') { - break; // Неожиданный конец строки формата - } - if (*format_string == '%') { - putc('%'); // Вывод одного символа '%' - } else if (*format_string == 'd') { - int arg = va_arg(args, int); - // Преобразование целочисленного аргумента в строку и вывод каждого символа - if (arg < 0) { - putc('-'); - arg = -arg; - } - if (arg == 0) { - putc('0'); - } else { - char buffer[10]; // Предполагаем, что максимальное число из 10 цифр - int i = 0; - - while (arg > 0) { - buffer[i++] = '0' + (arg % 10); - arg /= 10; - } - - while (i > 0) { - putc(buffer[--i]); - } - } - } else if (*format_string == 's') { - const char* arg = va_arg(args, const char*); - // Вывод каждого символа строки - while (*arg != '\0') { - putc(*arg); - arg++; - } - } else { - // Неподдерживаемый спецификатор формата - putc('?'); - } - } else { - putc(*format_string); - } - - format_string++; - } - } +#include +#include +#include + +namespace tool { + // Функция для форматированного вывода + void format(void (*putc)(char c), const char *format_string, va_list args) { + while (*format_string != '\0') { + if (*format_string == '%') { + format_string++; + if (*format_string == '\0') { + break; // Неожиданный конец строки формата + } + if (*format_string == '%') { + putc('%'); // Вывод одного символа '%' + } else if (*format_string == 'd') { + int arg = va_arg(args, int); + // Преобразование целочисленного аргумента в строку и вывод каждого символа + if (arg < 0) { + putc('-'); + arg = -arg; + } + if (arg == 0) { + putc('0'); + } else { + char buffer[10]; // Предполагаем, что максимальное число из 10 цифр + int i = 0; + + while (arg > 0) { + buffer[i++] = '0' + (arg % 10); + arg /= 10; + } + + while (i > 0) { + putc(buffer[--i]); + } + } + } else if (*format_string == 's') { + const char* arg = va_arg(args, const char*); + // Вывод каждого символа строки + while (*arg != '\0') { + putc(*arg); + arg++; + } + } else { + // Неподдерживаемый спецификатор формата + putc('?'); + } + } else { + putc(*format_string); + } + + format_string++; + } + } } \ No newline at end of file

+ 0x0E, 0x11, 0x11, 0x11, 0x15, 0x09, 0x16, 0x00, // Символ 81 + 0x07, 0x09, 0x09, 0x07, 0x09, 0x09, 0x09, 0x00, // Символ 82 + 0x0E, 0x01, 0x01, 0x06, 0x08, 0x08, 0x07, 0x00, // Символ 83 + 0x1F, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, // Символ 84 + 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x06, 0x00, // Символ 85 + 0x11, 0x11, 0x11, 0x11, 0x11, 0x0A, 0x04, 0x00, // Символ 86 + 0x11, 0x11, 0x11, 0x15, 0x15, 0x0A, 0x0A, 0x00, // Символ 87 + 0x11, 0x11, 0x0A, 0x04, 0x0A, 0x11, 0x11, 0x00, // Символ 88 + 0x11, 0x11, 0x0A, 0x04, 0x04, 0x04, 0x04, 0x00, // Символ 89 + 0x1F, 0x10, 0x08, 0x04, 0x02, 0x01, 0x1F, 0x00, // Символ 90 + + 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, // Символ 91 <[> + 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, // Символ 92 <\> + 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, // Символ 93 <]> + 0x04, 0x0A, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 94 <^> + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, // Символ 95 <_> + 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Символ 96 <`> + + // Roman Smalls / Латиница, строчные + 0x00, 0x00, 0x06, 0x08, 0x0E, 0x09, 0x0E, 0x00, // Символ 97 + 0x01, 0x01, 0x07, 0x09, 0x09, 0x09, 0x07, 0x00, // Символ 98 + 0x00, 0x00, 0x06, 0x01, 0x01, 0x01, 0x06, 0x00, // Символ 99 + 0x08, 0x08, 0x0E, 0x09, 0x09, 0x09, 0x0E, 0x00, // Символ 100 + 0x00, 0x00, 0x06, 0x09, 0x0F, 0x01, 0x0E, 0x00, // Символ 101 + 0x0C, 0x02, 0x0F, 0x02, 0x02, 0x02, 0x02, 0x00, // Символ 102 + 0x00, 0x00, 0x0E, 0x09, 0x09, 0x0E, 0x08, 0x06, // Символ 103 + 0x01, 0x01, 0x07, 0x09, 0x09, 0x09, 0x09, 0x00, // Символ 104 + 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, // Символ 105 + 0x02, 0x00, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, // Символ 106 + 0x01, 0x01, 0x09, 0x05, 0x03, 0x05, 0x09, 0x00, // Символ 107 + 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x00, // Символ 108 + 0x00, 0x00, 0x0F, 0x15, 0x15, 0x15, 0x15, 0x00, // Символ 109 + 0x00, 0x00, 0x07, 0x09, 0x09, 0x09, 0x09, 0x00, // Символ 110 + 0x00, 0x00, 0x06, 0x09, 0x09, 0x09, 0x06, 0x00, // Символ 111 + 0x00, 0x00, 0x07, 0x09, 0x09, 0x09, 0x07, 0x01, // Символ 112