PicoCalc/Code/FUZIX/fuzix1.1.patch
2025-04-06 23:08:27 +08:00

3027 lines
197 KiB
Diff
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

diff --git a/Kernel/dev/devsd.h b/Kernel/dev/devsd.h
index 4cc9df7a8..2ea26cb6a 100644
--- a/Kernel/dev/devsd.h
+++ b/Kernel/dev/devsd.h
@@ -48,6 +48,9 @@ uint_fast8_t sd_spi_receive_byte(void);
bool sd_spi_receive_sector(void);
bool sd_spi_transmit_sector(void);
+void lock_mutex();
+void unlock_mutex();
+
uint_fast8_t sd_spi_try_release(void);
/* for platforms which support multiple SD cards */
diff --git a/Kernel/platform/platform-rpipico/CMakeLists.txt b/Kernel/platform/platform-rpipico/CMakeLists.txt
index 0081014c4..794f85357 100644
--- a/Kernel/platform/platform-rpipico/CMakeLists.txt
+++ b/Kernel/platform/platform-rpipico/CMakeLists.txt
@@ -7,11 +7,13 @@ project(fuzix C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_BUILD_TYPE Debug)
set(PICO_COPY_TO_RAM 1)
+option(TOTALMEM "specify how much TOTALMEM is present" 0)
add_compile_definitions(
PICO_HEAP_SIZE=0x0
PICO_NO_BINARY_INFO=1
PICO_TIME_DEFAULT_ALARM_POOL_DISABLED
+ TOTALMEM=${TOTALMEM}
)
pico_sdk_init()
@@ -28,6 +30,8 @@ add_executable(fuzix
devices.c
devflash.c
devsdspi.c
+ lcdspi.c
+ i2ckbd.c
devtty.c
elf.c
main.c
@@ -81,6 +85,7 @@ target_link_libraries(fuzix
pico_multicore
hardware_flash
hardware_spi
+ hardware_i2c
tinyusb_device
)
diff --git a/Kernel/platform/platform-rpipico/Makefile b/Kernel/platform/platform-rpipico/Makefile
index 1f1fdd280..463882cf4 100644
--- a/Kernel/platform/platform-rpipico/Makefile
+++ b/Kernel/platform/platform-rpipico/Makefile
@@ -8,6 +8,19 @@ ifndef SUBTARGET
SUBTARGET=pico # set default subtarget
endif
+ifeq ($(SUBTARGET),pico)
+TOTALMEM=160
+endif
+ifeq ($(SUBTARGET),pico_w)
+TOTALMEM=160
+endif
+ifeq ($(SUBTARGET),pico2)
+TOTALMEM=320
+endif
+ifeq ($(SUBTARGET),pico2_w)
+TOTALMEM=320
+endif
+
PICOTOOLFLAGS= --family rp2040
ifeq (${SUBTARGET}, pico2)
PICOTOOLFLAGS= --family data
@@ -29,7 +42,7 @@ build/fuzix.elf: ../../version.c build/Makefile
build/Makefile: CMakeLists.txt $(wildcard ../../*.[chS]) $(wildcard ../../*/*.[chS])
mkdir -p build
- (cd build && cmake -DPICO_BOARD=${SUBTARGET} ..)
+ (cd build && VERBOSE=1 cmake -DPICO_BOARD=${SUBTARGET} -DTOTALMEM=${TOTALMEM} ..)
image:: world
./update-flash.sh
diff --git a/Kernel/platform/platform-rpipico/config.h b/Kernel/platform/platform-rpipico/config.h
index e7260099d..a04331090 100644
--- a/Kernel/platform/platform-rpipico/config.h
+++ b/Kernel/platform/platform-rpipico/config.h
@@ -9,10 +9,15 @@
* RX GPIO 12
* CS GPIO 13
* CONFIG_MAKER_PI
- * SCK GPIO 10
- * TX GPIO 11
- * RX GPIO 12
- * CS GPIO 15
+ * SCK GPIO 10
+ * TX GPIO 11
+ * RX GPIO 12
+ * CS GPIO 15
+ * CONFIG_PICOCALC
+ * SCK GPIO 18
+ * TX GPIO 19
+ * RX GPIO 16
+ * CS GPIO 17
* If Undefined
* SCK GPIO 2
* TX GPIO 3
@@ -20,8 +25,8 @@
* CS GPIO 5
*/
-#define CONFIG_RC2040
-
+//#define CONFIG_RC2040
+#define CONFIG_PICOCALC
/* We have a GPIO interface */
#define CONFIG_DEV_GPIO
/* Enable to make ^Z dump the inode table for debug */
@@ -65,14 +70,16 @@
#undef CONFIG_FONT8X8
/* Built in NAND flash. Warning, it's unstable. */
-#define CONFIG_PICO_FLASH
+//#define CONFIG_PICO_FLASH
/* Program layout */
#define UDATA_BLKS 3
#define UDATA_SIZE (UDATA_BLKS << BLKSHIFT)
-#define TOTALMEM 160
+#if TOTALMEM == 0
+#error TOTALMEM should have been defined via cmake
+#endif
#define NETMEM 0
#ifdef CONFIG_NET
@@ -124,7 +131,8 @@ extern uint8_t progbase[USERMEM];
#define DEV_UART_1_CTS_PIN 8
#define DEV_UART_1_RTS_PIN 9
#define NUM_DEV_TTY_USB 4 /* min 1 max 4. */
-#define NUM_DEV_TTY (NUM_DEV_TTY_UART + NUM_DEV_TTY_USB)
+#define NUM_DEV_TTY_LCD 1
+#define NUM_DEV_TTY (NUM_DEV_TTY_UART + NUM_DEV_TTY_USB + NUM_DEV_TTY_LCD)
#define DEV_USB_DETECT_TIMEOUT 5000 /* (ms) Total timeout time to detect USB host connection*/
#define DEV_USB_INIT_TIMEOUT 2000 /* (ms) Total timeout to try not swallow messages */
@@ -140,10 +148,15 @@ extern uint8_t progbase[USERMEM];
#define swap_map(x) ((uint8_t*)(x))
/* Prevent name clashes wish the Pico SDK */
+#define BOOTDEVICENAMES "hd#"
+
+#define BOOTDEVICE 2
#define MANGLED 1
#include "mangle.h"
+#define DEBUG
+
#endif
// vim: sw=4 ts=4 et
diff --git a/Kernel/platform/platform-rpipico/devices.c b/Kernel/platform/platform-rpipico/devices.c
index 569b99a14..7af51932d 100644
--- a/Kernel/platform/platform-rpipico/devices.c
+++ b/Kernel/platform/platform-rpipico/devices.c
@@ -10,6 +10,8 @@
#include "globals.h"
#include "picosdk.h"
#include <hardware/irq.h>
+#include <hardware/structs/timer.h>
+#include <pico/multicore.h>
#include "core1.h"
struct devsw dev_tab[] = /* The device driver switch table */
@@ -88,4 +90,3 @@ void device_init(void)
}
/* vim: sw=4 ts=4 et: */
-
diff --git a/Kernel/platform/platform-rpipico/devsdspi.c b/Kernel/platform/platform-rpipico/devsdspi.c
index e1b7d7c7a..68ff77b74 100644
--- a/Kernel/platform/platform-rpipico/devsdspi.c
+++ b/Kernel/platform/platform-rpipico/devsdspi.c
@@ -9,10 +9,10 @@
#include "picosdk.h"
#include "globals.h"
#include "config.h"
+#include "lcdspi.h"
#include <hardware/spi.h>
#ifdef CONFIG_RC2040
-
/* RC2040 board */
/* Pico SPI GPIO connected to SD SPI1 */
#define Pico_SD_SCK 14
@@ -33,15 +33,24 @@
#define Pico_SD_SPI_MOD spi1
+#elif defined(CONFIG_PICOCALC)
+//#define SD_USE_PIO 1
+//picocalc
+#ifdef SD_USE_PIO
+
+#define Pico_SD_SCK 2//
+#define Pico_SD_TX 3 // MOSI
+#define Pico_SD_RX 20 // MISO
+#define Pico_SD_CS 6 // SD_CS
+
#else
-/* Pico SPI GPIO connected to SD SPIO - David Given's Arrangement */
-#define Pico_SD_SCK 2
-#define Pico_SD_TX 3
-#define Pico_SD_RX 4
-#define Pico_SD_CS 5
+#define Pico_SD_SCK 18 //
+#define Pico_SD_TX 19 // MOSI
+#define Pico_SD_RX 16 // MISO
+#define Pico_SD_CS 17 // SD_CS
-//Pico spi0 or spi1 must match GPIO pins used above.
+#endif
#define Pico_SD_SPI_MOD spi0
#endif
@@ -79,6 +88,8 @@ void sd_spi_clock(bool go_fast)
void sd_spi_raise_cs(void)
{
gpio_put(Pico_SD_CS, true);
+ //nop;nop;nop;nop;nop;
+ //HW1SwapSPI(0xFF);
}
void sd_spi_lower_cs(void)
diff --git a/Kernel/platform/platform-rpipico/devtty.c b/Kernel/platform/platform-rpipico/devtty.c
index d816db50c..00217ae93 100644
--- a/Kernel/platform/platform-rpipico/devtty.c
+++ b/Kernel/platform/platform-rpipico/devtty.c
@@ -9,6 +9,8 @@
#include <pico/multicore.h>
#include "core1.h"
#include "devtty.h"
+#include "lcdspi.h"
+#include "i2ckbd.h"
uint8_t ttybuf[TTYSIZ * NUM_DEV_TTY];
@@ -24,10 +26,11 @@ void no_setup(uint_fast8_t minor, uint_fast8_t devn, uint_fast8_t flags)
used(flags);
}
-struct ttydriver ttydrivers[2] =
- {
- {rawuart_putc, rawuart_ready, rawuart_sleeping, rawuart_getc, rawuart_setup},
- {usbconsole_putc, usbconsole_ready, usbconsole_sleeping, usbconsole_getc, no_setup},
+struct ttydriver ttydrivers[3] =
+{
+ { rawuart_putc, rawuart_ready, rawuart_sleeping, rawuart_getc, rawuart_setup },
+ { usbconsole_putc, usbconsole_ready, usbconsole_sleeping, usbconsole_getc, no_setup },
+ {lcd_putc,lcd_ready,lcd_sleeping,lcd_getc,no_setup},
};
static void devtty_defconfig(uint8_t drv, int count, int minor)
@@ -52,6 +55,9 @@ static void devtty_defconfig(uint8_t drv, int count, int minor)
/* To be called right after startup to be able to print boot messages */
void devtty_early_init(void)
{
+ init_i2c_kbd();
+ lcd_init();// init spi lcd
+ lcd_clear();
rawuart_early_init();
core1_init();
devtty_init();
@@ -90,6 +96,7 @@ void devtty_init(void)
{
devtty_defconfig(TTYDRV_USB, NUM_DEV_TTY_USB, 1);
devtty_defconfig(TTYDRV_UART, NUM_DEV_TTY_UART, 1 + NUM_DEV_TTY_USB);
+ devtty_defconfig(TTYDRV_LCD, NUM_DEV_TTY_LCD, 2 + NUM_DEV_TTY_USB);
until = delayed_by_ms(get_absolute_time(), DEV_USB_INIT_TIMEOUT);
while (absolute_time_diff_us(get_absolute_time(), until) > 0)
{
@@ -99,9 +106,10 @@ void devtty_init(void)
}
else
{
- devtty_defconfig(TTYDRV_UART, NUM_DEV_TTY_UART, 1);
- devtty_defconfig(TTYDRV_USB, NUM_DEV_TTY_USB, 1 + NUM_DEV_TTY_UART);
- kprintf("devtty: %s as default tty\n", "uart");
+ devtty_defconfig(TTYDRV_UART, NUM_DEV_TTY_UART, 2);
+ devtty_defconfig(TTYDRV_LCD, NUM_DEV_TTY_LCD, 1);
+ devtty_defconfig(TTYDRV_UART, NUM_DEV_TTY_USB, 3 );
+ kprintf("devtty: %s as default tty\n", "lcd");
}
ttymap_count = NUM_DEV_TTY;
}
diff --git a/Kernel/platform/platform-rpipico/devtty.h b/Kernel/platform/platform-rpipico/devtty.h
index 5dd94c5a4..95674d271 100644
--- a/Kernel/platform/platform-rpipico/devtty.h
+++ b/Kernel/platform/platform-rpipico/devtty.h
@@ -21,6 +21,7 @@ struct ttymap
#define TTYDRV_UART 0
#define TTYDRV_USB 1
+#define TTYDRV_LCD 2
extern int ttymap_count;
extern struct ttymap ttymap[NUM_DEV_TTY+1];
diff --git a/Kernel/platform/platform-rpipico/fonts/ArialNumFontPlus.h b/Kernel/platform/platform-rpipico/fonts/ArialNumFontPlus.h
new file mode 100644
index 000000000..979c3f48e
--- /dev/null
+++ b/Kernel/platform/platform-rpipico/fonts/ArialNumFontPlus.h
@@ -0,0 +1,22 @@
+// ArialNumFontPlus.c
+// Font type : Special (SubSet)
+// Font size : 32x50 pixels
+// Memory usage : 2204 bytes
+
+ #define PROGMEM
+ #define fontdatatype const unsigned char
+
+fontdatatype ArialNumFontPlus[2204] PROGMEM={
+0x20,0x32,0x30,0x0B,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x1F,0xF8,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x00,0x03,0xF8,0x1F,0x80,0x03,0xF0,0x0F,0xC0,0x07,0xE0,0x07,0xC0,0x07,0xC0,0x03,0xE0,0x0F,0xC0,0x03,0xE0,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x01,0xF0,0x1F,0x80,0x01,0xF0,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x3F,0x00,0x00,0xFC,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3F,0x00,0x00,0x7C,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x01,0xF0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x03,0xE0,0x07,0xC0,0x03,0xF0,0x0F,0xC0,0x01,0xF8,0x1F,0x80,0x00,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x7F,0xFC,0x00,0x00,0x1F,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0 neu
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x03,0xF0,0x00,0x00,0x07,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x1F,0xF0,0x00,0x00,0x3F,0xF0,0x00,0x00,0x7F,0xF0,0x00,0x01,0xFF,0xF0,0x00,0x03,0xFD,0xF0,0x00,0x0F,0xF1,0xF0,0x00,0x0F,0xE1,0xF0,0x00,0x0F,0x81,0xF0,0x00,0x0F,0x01,0xF0,0x00,0x0C,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //1 neu
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x7F,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xE0,0x07,0xE0,0x0F,0xF0,0x0F,0xC0,0x03,0xF0,0x0F,0x80,0x01,0xF0,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x3E,0x00,0x00,0xF8,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x03,0xF0,0x00,0x00,0x07,0xF0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x1F,0xC0,0x00,0x00,0x3F,0x80,0x00,0x00,0x7F,0x00,0x00,0x00,0xFE,0x00,0x00,0x01,0xFC,0x00,0x00,0x03,0xF8,0x00,0x00,0x07,0xF0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x1F,0xC0,0x00,0x00,0x3F,0x80,0x00,0x00,0x7F,0x00,0x00,0x00,0xFE,0x00,0x00,0x01,0xFC,0x00,0x00,0x03,0xF8,0x00,0x00,0x07,0xF0,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x0F,0x80,0x00,0x00,0x1F,0x80,0x00,0x00,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 2 neu
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x3F,0xFC,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x03,0xE0,0x1F,0xC0,0x07,0xC0,0x0F,0xC0,0x07,0x80,0x07,0xE0,0x0F,0x80,0x03,0xE0,0x0F,0x00,0x03,0xE0,0x0F,0x00,0x03,0xF0,0x0F,0x00,0x01,0xF0,0x00,0x00,0x03,0xF0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x1F,0xC0,0x00,0x00,0x3F,0x80,0x00,0x07,0xFF,0x00,0x00,0x07,0xFF,0x00,0x00,0x07,0xFF,0x00,0x00,0x07,0xFF,0x80,0x00,0x00,0x1F,0xC0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x01,0xF8,0x0F,0x80,0x01,0xF8,0x0F,0x80,0x03,0xF0,0x0F,0xC0,0x07,0xF0,0x07,0xE0,0x0F,0xE0,0x03,0xFC,0x3F,0xC0,0x01,0xFF,0xFF,0x80,0x00,0xFF,0xFF,0x00,0x00,0x7F,0xFC,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 3 neu
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0xFF,0x00,0x00,0x01,0xFF,0x00,0x00,0x01,0xFF,0x00,0x00,0x03,0xFF,0x00,0x00,0x07,0xDF,0x00,0x00,0x07,0xDF,0x00,0x00,0x0F,0x9F,0x00,0x00,0x0F,0x9F,0x00,0x00,0x1F,0x1F,0x00,0x00,0x3E,0x1F,0x00,0x00,0x7E,0x1F,0x00,0x00,0x7C,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x01,0xF0,0x1F,0x00,0x03,0xE0,0x1F,0x00,0x03,0xE0,0x1F,0x00,0x07,0xC0,0x1F,0x00,0x07,0xC0,0x1F,0x00,0x0F,0x80,0x1F,0x00,0x1F,0x80,0x1F,0x00,0x1F,0x00,0x1F,0x00,0x3E,0x00,0x1F,0x00,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //4 neu
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xF0,0x03,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x07,0xC0,0x00,0x00,0x07,0xC0,0x00,0x00,0x07,0xC0,0x00,0x00,0x07,0xC0,0x00,0x00,0x07,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0xF0,0x00,0x0F,0x8F,0xFE,0x00,0x0F,0xBF,0xFF,0x80,0x0F,0xFF,0xFF,0xC0,0x0F,0xFF,0xFF,0xE0,0x1F,0xFF,0x07,0xF0,0x1F,0xE0,0x03,0xF0,0x1F,0xC0,0x01,0xF8,0x1F,0x00,0x00,0xF8,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x3F,0x00,0x00,0xF8,0x3F,0x00,0x00,0xF8,0x3F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF0,0x1F,0x00,0x01,0xF0,0x1F,0x80,0x03,0xE0,0x0F,0xC0,0x07,0xE0,0x07,0xE0,0x1F,0xC0,0x03,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0x00,0x01,0xFF,0xFE,0x00,0x00,0x7F,0xF8,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 5 neu
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x3F,0xFE,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0xC0,0x07,0xE0,0x07,0xE0,0x07,0xC0,0x03,0xF0,0x0F,0xC0,0x01,0xF0,0x0F,0x80,0x00,0xF8,0x1F,0x80,0x00,0xF8,0x1F,0x80,0x00,0xF8,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x03,0xF0,0x00,0x3F,0x1F,0xFC,0x00,0x3F,0x7F,0xFE,0x00,0x3F,0xFF,0xFF,0x80,0x3F,0xFF,0xFF,0xC0,0x3F,0xF8,0x0F,0xE0,0x3F,0xE0,0x03,0xF0,0x3F,0xE0,0x03,0xF0,0x3F,0xC0,0x01,0xF8,0x3F,0x80,0x00,0xF8,0x3F,0x80,0x00,0xF8,0x3F,0x00,0x00,0x7C,0x3F,0x00,0x00,0x7C,0x3F,0x00,0x00,0x7C,0x3F,0x00,0x00,0x7C,0x3F,0x00,0x00,0x7C,0x3F,0x00,0x00,0x7C,0x1F,0x00,0x00,0x7C,0x1F,0x80,0x00,0x78,0x1F,0x80,0x00,0xF8,0x1F,0x80,0x00,0xF8,0x0F,0x80,0x00,0xF8,0x0F,0xC0,0x01,0xF0,0x07,0xF0,0x03,0xF0,0x03,0xF8,0x0F,0xE0,0x01,0xFF,0xFF,0xC0,0x00,0xFF,0xFF,0x80,0x00,0x7F,0xFF,0x00,0x00,0x1F,0xFC,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 6 neu
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x07,0xC0,0x00,0x00,0x0F,0x80,0x00,0x00,0x1F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x07,0xC0,0x00,0x00,0x07,0xC0,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 7 neu
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x80,0x03,0xF8,0x1F,0xC0,0x07,0xE0,0x07,0xE0,0x07,0xC0,0x03,0xE0,0x0F,0xC0,0x03,0xF0,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x01,0xF0,0x07,0xC0,0x03,0xE0,0x07,0xC0,0x03,0xE0,0x03,0xE0,0x07,0xC0,0x01,0xF0,0x07,0x80,0x00,0xFC,0x3F,0x00,0x00,0x7F,0xFF,0x00,0x00,0x3F,0xFC,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0xC0,0x07,0xF0,0x0F,0xE0,0x0F,0xC0,0x03,0xF0,0x0F,0x80,0x01,0xF0,0x1F,0x80,0x01,0xF8,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x1F,0x00,0x00,0xF8,0x1F,0x00,0x00,0xF8,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x03,0xF0,0x07,0xC0,0x07,0xE0,0x03,0xF0,0x0F,0xC0,0x01,0xFF,0xFF,0x80,0x00,0xFF,0xFF,0x00,0x00,0x3F,0xFC,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 8 neu
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x3F,0xFC,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0xC0,0x03,0xF8,0x1F,0xE0,0x07,0xE0,0x07,0xE0,0x07,0xE0,0x07,0xF0,0x0F,0xC0,0x03,0xF0,0x0F,0xC0,0x03,0xF8,0x1F,0x80,0x01,0xF8,0x1F,0x80,0x01,0xF8,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x00,0x00,0xFC,0x1F,0x80,0x01,0xFC,0x1F,0x80,0x01,0xFC,0x0F,0xC0,0x03,0xFC,0x0F,0xC0,0x03,0xFC,0x07,0xE0,0x07,0xFC,0x07,0xE0,0x07,0xFC,0x03,0xF8,0x1F,0xFC,0x01,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFC,0x00,0xFF,0xFE,0xFC,0x00,0x7F,0xF8,0xFC,0x00,0x1F,0xE0,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF0,0x1F,0x00,0x03,0xF0,0x1F,0x80,0x07,0xE0,0x0F,0xC0,0x0F,0xE0,0x0F,0xE0,0x3F,0xC0,0x07,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0x00,0x01,0xFF,0xFE,0x00,0x00,0xFF,0xF8,0x00,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 9 neu
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0xF0,0x00,0x00,0x03,0xF8,0x00,0x00,0x03,0xF8,0x00,0x00,0x03,0xF8,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0xF0,0x00,0x00,0x03,0xF8,0x00,0x00,0x03,0xF8,0x00,0x00,0x03,0xF8,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // :
+};
diff --git a/Kernel/platform/platform-rpipico/fonts/Fnt_10x16.h b/Kernel/platform/platform-rpipico/fonts/Fnt_10x16.h
new file mode 100644
index 000000000..af2ea8d91
--- /dev/null
+++ b/Kernel/platform/platform-rpipico/fonts/Fnt_10x16.h
@@ -0,0 +1,233 @@
+// Fnt_10x16.c
+// Font type : Full (224 characters)
+// Font size : 10x16 pixels
+// Memory usage : 4484 bytes
+
+//const unsigned char Fnt_10x16[4564] = {
+ const unsigned char Fnt_10x16[4484] ={
+ 0x0A,0x10,0x20,0xE0,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(32)
+ 0x00,0x00,0x00,0x80,0x20,0x08,0x02,0x00,0x80,0x20,0x08,0x00,0x00,0x80,0x20,0x00,0x00,0x00,0x00,0x00, // Chr$(33) !
+ 0x00,0x04,0x81,0x20,0x48,0x12,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(34) "
+ 0x00,0x00,0x00,0x00,0x88,0x22,0x1F,0xC2,0x20,0x88,0x22,0x1F,0xC2,0x20,0x88,0x00,0x00,0x00,0x00,0x00, // Chr$(35) #
+ 0x00,0x02,0x00,0x80,0xF8,0x49,0x12,0x04,0x00,0xF8,0x01,0x02,0x44,0x90,0xF8,0x08,0x02,0x00,0x00,0x00, // Chr$(36) $
+ 0x00,0x00,0x00,0x00,0xC0,0x79,0x0C,0x80,0x40,0x20,0x10,0x09,0x84,0xF0,0x18,0x00,0x00,0x00,0x00,0x00, // Chr$(37) %
+ 0x00,0x00,0x01,0x80,0x90,0x24,0x09,0x01,0x90,0x94,0x42,0x10,0x84,0x20,0xF4,0x00,0x00,0x00,0x00,0x00, // Chr$(38) &
+ 0x00,0x01,0x00,0x40,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(39) '
+ 0x00,0x00,0x00,0x40,0x20,0x10,0x04,0x01,0x00,0x40,0x10,0x04,0x00,0x80,0x10,0x00,0x00,0x00,0x00,0x00, // Chr$(40) (
+ 0x00,0x00,0x01,0x00,0x20,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x80,0x40,0x00,0x00,0x00,0x00,0x00, // Chr$(41) )
+ 0x00,0x00,0x00,0x00,0x00,0x08,0x0A,0x81,0xC1,0xFC,0x1C,0x0A,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(42) *
+ 0x00,0x00,0x00,0x00,0x00,0x08,0x02,0x00,0x81,0xFC,0x08,0x02,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(43) +
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x10,0x04,0x02,0x00,0x00,0x00, // Chr$(44) ,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(45) -
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x30,0x00,0x00,0x00,0x00,0x00, // Chr$(46) .
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(47) /
+ 0x00,0x00,0x01,0xC0,0x88,0x41,0x10,0x44,0x91,0x24,0x41,0x10,0x42,0x20,0x70,0x00,0x00,0x00,0x00,0x00, // Chr$(48) 0
+ 0x00,0x00,0x00,0x80,0x60,0x28,0x02,0x00,0x80,0x20,0x08,0x02,0x00,0x80,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(49) 1
+ 0x00,0x00,0x03,0xE1,0x04,0x01,0x00,0x40,0x20,0x10,0x08,0x04,0x02,0x01,0xFC,0x00,0x00,0x00,0x00,0x00, // Chr$(50) 2
+ 0x00,0x00,0x03,0xE1,0x04,0x01,0x00,0x41,0xE0,0x04,0x01,0x00,0x44,0x10,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(51) 3
+ 0x00,0x00,0x00,0x20,0x18,0x0A,0x04,0x82,0x21,0x08,0x7F,0x00,0x80,0x20,0x08,0x00,0x00,0x00,0x00,0x00, // Chr$(52) 4
+ 0x00,0x00,0x07,0xF1,0x00,0x40,0x10,0x07,0xE1,0x04,0x01,0x00,0x44,0x10,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(53) 5
+ 0x00,0x00,0x03,0xE1,0x00,0x40,0x10,0x07,0xE1,0x04,0x41,0x10,0x44,0x10,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(54) 6
+ 0x00,0x00,0x07,0xF0,0x04,0x01,0x00,0x80,0x40,0x20,0x08,0x02,0x00,0x80,0x20,0x00,0x00,0x00,0x00,0x00, // Chr$(55) 7
+ 0x00,0x00,0x03,0xE1,0x04,0x41,0x08,0x83,0xE1,0x04,0x41,0x10,0x44,0x10,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(56) 8
+ 0x00,0x00,0x03,0xE1,0x04,0x41,0x10,0x44,0x10,0xFC,0x01,0x00,0x40,0x10,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(57) 9
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x80,0x00,0x00,0x00,0x00,0x80,0x20,0x00,0x00,0x00,0x00,0x00, // Chr$(58) :
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x40,0x00,0x00,0x00,0x00,0x40,0x10,0x04,0x02,0x00,0x00,0x00, // Chr$(59) ;
+ 0x00,0x00,0x00,0x00,0x08,0x04,0x02,0x01,0x00,0x80,0x10,0x02,0x00,0x40,0x08,0x00,0x00,0x00,0x00,0x00, // Chr$(60) <
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(61) =
+ 0x00,0x00,0x00,0x00,0x80,0x10,0x02,0x00,0x40,0x08,0x04,0x02,0x01,0x00,0x80,0x00,0x00,0x00,0x00,0x00, // Chr$(62) >
+ 0x00,0x00,0x03,0xE1,0x04,0x41,0x00,0x40,0x60,0x20,0x08,0x00,0x00,0x80,0x20,0x00,0x00,0x00,0x00,0x00, // Chr$(63) ?
+ 0x00,0x00,0x03,0xE1,0x04,0x41,0x17,0x45,0x51,0x54,0x4E,0x10,0x04,0x00,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(64) @
+ 0x00,0x00,0x01,0xC0,0x88,0x41,0x10,0x44,0x11,0xFC,0x41,0x10,0x44,0x11,0x04,0x00,0x00,0x00,0x00,0x00, // Chr$(65) A
+ 0x00,0x00,0x07,0xE1,0x04,0x41,0x10,0x47,0xE1,0x04,0x41,0x10,0x44,0x11,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(66) B
+ 0x00,0x00,0x03,0xE1,0x04,0x40,0x10,0x04,0x01,0x00,0x40,0x10,0x44,0x10,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(67) C
+ 0x00,0x00,0x07,0xC1,0x08,0x41,0x10,0x44,0x11,0x04,0x41,0x10,0x44,0x21,0xF0,0x00,0x00,0x00,0x00,0x00, // Chr$(68) D
+ 0x00,0x00,0x07,0xF1,0x00,0x40,0x10,0x07,0xE1,0x00,0x40,0x10,0x04,0x01,0xFC,0x00,0x00,0x00,0x00,0x00, // Chr$(69) E
+ 0x00,0x00,0x07,0xF1,0x00,0x40,0x10,0x07,0xE1,0x00,0x40,0x10,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(70) F
+ 0x00,0x00,0x03,0xE1,0x04,0x40,0x10,0x04,0xF1,0x04,0x41,0x10,0x44,0x10,0xFC,0x00,0x00,0x00,0x00,0x00, // Chr$(71) G
+ 0x00,0x00,0x04,0x11,0x04,0x41,0x10,0x47,0xF1,0x04,0x41,0x10,0x44,0x11,0x04,0x00,0x00,0x00,0x00,0x00, // Chr$(72) H
+ 0x00,0x00,0x03,0xE0,0x20,0x08,0x02,0x00,0x80,0x20,0x08,0x02,0x00,0x80,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(73) I
+ 0x00,0x00,0x01,0xF0,0x08,0x02,0x00,0x80,0x20,0x08,0x02,0x00,0x84,0x20,0xF0,0x00,0x00,0x00,0x00,0x00, // Chr$(74) J
+ 0x00,0x00,0x04,0x21,0x10,0x48,0x14,0x06,0x01,0x40,0x48,0x11,0x04,0x21,0x04,0x00,0x00,0x00,0x00,0x00, // Chr$(75) K
+ 0x00,0x00,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0xFC,0x00,0x00,0x00,0x00,0x00, // Chr$(76) L
+ 0x00,0x00,0x04,0x11,0x8C,0x55,0x12,0x44,0x91,0x04,0x41,0x10,0x44,0x11,0x04,0x00,0x00,0x00,0x00,0x00, // Chr$(77) M
+ 0x00,0x00,0x04,0x11,0x84,0x51,0x12,0x44,0x51,0x0C,0x41,0x10,0x44,0x11,0x04,0x00,0x00,0x00,0x00,0x00, // Chr$(78) N
+ 0x00,0x00,0x03,0xE1,0x04,0x41,0x10,0x44,0x11,0x04,0x41,0x10,0x44,0x10,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(79) O
+ 0x00,0x00,0x07,0xE1,0x04,0x41,0x10,0x47,0xE1,0x00,0x40,0x10,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(80) P
+ 0x00,0x00,0x03,0xE1,0x04,0x41,0x10,0x44,0x11,0x04,0x49,0x12,0x44,0x90,0xF8,0x04,0x00,0x80,0x00,0x00, // Chr$(81) Q
+ 0x00,0x00,0x07,0xE1,0x04,0x41,0x10,0x47,0xE1,0x08,0x41,0x10,0x44,0x11,0x04,0x00,0x00,0x00,0x00,0x00, // Chr$(82) R
+ 0x00,0x00,0x03,0xE1,0x04,0x40,0x0C,0x01,0x80,0x18,0x01,0x10,0x44,0x10,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(83) S
+ 0x00,0x00,0x07,0xF0,0x20,0x08,0x02,0x00,0x80,0x20,0x08,0x02,0x00,0x80,0x20,0x00,0x00,0x00,0x00,0x00, // Chr$(84) T
+ 0x00,0x00,0x04,0x11,0x04,0x41,0x10,0x44,0x11,0x04,0x41,0x10,0x44,0x10,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(85) U
+ 0x00,0x00,0x04,0x11,0x04,0x41,0x10,0x44,0x11,0x04,0x41,0x08,0x81,0x40,0x20,0x00,0x00,0x00,0x00,0x00, // Chr$(86) V
+ 0x00,0x00,0x04,0x11,0x04,0x41,0x10,0x44,0x11,0x24,0x49,0x12,0x45,0x50,0x88,0x00,0x00,0x00,0x00,0x00, // Chr$(87) W
+ 0x00,0x00,0x04,0x11,0x04,0x22,0x05,0x00,0x80,0x50,0x22,0x10,0x44,0x11,0x04,0x00,0x00,0x00,0x00,0x00, // Chr$(88) X
+ 0x00,0x00,0x04,0x11,0x04,0x41,0x08,0x81,0x40,0x20,0x08,0x02,0x00,0x80,0x20,0x00,0x00,0x00,0x00,0x00, // Chr$(89) Y
+ 0x00,0x00,0x07,0xF0,0x04,0x02,0x01,0x00,0x80,0x40,0x20,0x10,0x04,0x01,0xFC,0x00,0x00,0x00,0x00,0x00, // Chr$(90) Z
+ 0x00,0x00,0x01,0xC0,0x40,0x10,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x70,0x00,0x00,0x00,0x00,0x00, // Chr$(91) [
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x02,0x00,0x40,0x08,0x01,0x00,0x20,0x04,0x00,0x00,0x00,0x00,0x00, // Chr$(92) backslash
+ 0x00,0x00,0x01,0xC0,0x10,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x70,0x00,0x00,0x00,0x00,0x00, // Chr$(93) ]
+ 0x08,0x05,0x02,0x21,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(94) ^
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00, // Chr$(95) _
+ 0x00,0x07,0x02,0x20,0x88,0x22,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(96) `
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x20,0x08,0x3E,0x10,0x84,0x20,0xFC,0x00,0x00,0x00,0x00,0x00, // Chr$(97) a
+ 0x00,0x00,0x04,0x01,0x00,0x40,0x17,0x86,0x11,0x04,0x41,0x10,0x44,0x11,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(98) b
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x84,0x11,0x00,0x40,0x10,0x04,0x10,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(99) c
+ 0x00,0x00,0x00,0x10,0x04,0x01,0x0F,0x44,0x31,0x04,0x41,0x10,0x44,0x10,0xFC,0x00,0x00,0x00,0x00,0x00, // Chr$(100) d
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x84,0x11,0x04,0x7F,0x10,0x04,0x00,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(101) e
+ 0x00,0x00,0x00,0x70,0x20,0x08,0x0F,0x80,0x80,0x20,0x08,0x02,0x00,0x80,0x20,0x00,0x00,0x00,0x00,0x00, // Chr$(102) f
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC4,0x11,0x04,0x41,0x10,0x44,0x30,0xF4,0x01,0x00,0x43,0xE0,0x00, // Chr$(103) g
+ 0x00,0x00,0x04,0x01,0x00,0x40,0x17,0x86,0x11,0x04,0x41,0x10,0x44,0x11,0x04,0x00,0x00,0x00,0x00,0x00, // Chr$(104) h
+ 0x00,0x00,0x00,0x80,0x20,0x00,0x0E,0x00,0x80,0x20,0x08,0x02,0x00,0x80,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(105) i
+ 0x00,0x00,0x00,0x20,0x08,0x00,0x03,0x80,0x20,0x08,0x02,0x00,0x80,0x20,0x08,0x02,0x00,0x81,0xC0,0x00, // Chr$(106) j
+ 0x00,0x00,0x04,0x01,0x00,0x40,0x10,0xC4,0xC1,0xC0,0x48,0x11,0x04,0x21,0x04,0x00,0x00,0x00,0x00,0x00, // Chr$(107) k
+ 0x00,0x00,0x03,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x38,0x00,0x00,0x00,0x00,0x00, // Chr$(108) l
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0x84,0x91,0x24,0x49,0x12,0x44,0x91,0x24,0x00,0x00,0x00,0x00,0x00, // Chr$(109) m
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x17,0x86,0x11,0x04,0x41,0x10,0x44,0x11,0x04,0x00,0x00,0x00,0x00,0x00, // Chr$(110) n
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x84,0x11,0x04,0x41,0x10,0x44,0x10,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(111) o
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x17,0x86,0x11,0x04,0x41,0x10,0x46,0x11,0x78,0x40,0x10,0x04,0x00,0x00, // Chr$(112) p
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC4,0x11,0x04,0x41,0x10,0x44,0x30,0xF4,0x01,0x00,0x40,0x10,0x00, // Chr$(113) q
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x17,0x86,0x11,0x00,0x40,0x10,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(114) r
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC4,0x01,0x00,0x3E,0x00,0x40,0x11,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(115) s
+ 0x00,0x00,0x00,0x00,0x20,0x08,0x0F,0xC0,0x80,0x20,0x08,0x02,0x00,0x80,0x1C,0x00,0x00,0x00,0x00,0x00, // Chr$(116) t
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x44,0x11,0x04,0x41,0x10,0x44,0x30,0xF4,0x00,0x00,0x00,0x00,0x00, // Chr$(117) u
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x44,0x11,0x04,0x41,0x08,0x81,0x40,0x20,0x00,0x00,0x00,0x00,0x00, // Chr$(118) v
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x44,0x11,0x04,0x49,0x12,0x44,0x90,0xD8,0x00,0x00,0x00,0x00,0x00, // Chr$(119) w
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x42,0x20,0x50,0x08,0x05,0x02,0x21,0x04,0x00,0x00,0x00,0x00,0x00, // Chr$(120) x
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x44,0x11,0x04,0x41,0x10,0x44,0x30,0xF4,0x01,0x00,0x43,0xE0,0x00, // Chr$(121) y
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xC0,0x20,0x10,0x08,0x04,0x02,0x01,0xFC,0x00,0x00,0x00,0x00,0x00, // Chr$(122) z
+ 0x00,0x00,0x00,0x60,0x20,0x08,0x02,0x03,0x00,0x20,0x08,0x02,0x00,0x80,0x18,0x00,0x00,0x00,0x00,0x00, // Chr$(123) {
+ 0x00,0x02,0x00,0x80,0x20,0x08,0x02,0x00,0x80,0x20,0x08,0x02,0x00,0x80,0x20,0x08,0x02,0x00,0x80,0x00, // Chr$(124) |
+ 0x00,0x00,0x03,0x00,0x20,0x08,0x02,0x00,0x60,0x20,0x08,0x02,0x00,0x80,0xC0,0x00,0x00,0x00,0x00,0x00, // Chr$(125) }
+ 0x00,0x00,0x03,0x11,0x24,0x46,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(126) ~
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x01,0x40,0x88,0x41,0x10,0x44,0x11,0xFC,0x00,0x00,0x00,0x00,0x00, // Chr$(127)
+ 0x00,0x00,0x0F,0xFE,0x01,0x80,0x60,0x18,0x06,0x01,0x80,0x60,0x18,0x06,0x01,0xFF,0xC0,0x00,0x00,0x00, // Chr$(128)
+ 0x00,0x00,0x0F,0xFE,0x01,0x80,0x60,0x58,0x16,0x09,0x94,0x62,0x18,0x06,0x01,0xFF,0xC0,0x00,0x00,0x00, // Chr$(129)
+ 0x00,0x00,0x0F,0xFE,0x01,0xA1,0x64,0x98,0xC6,0x31,0x8C,0x64,0x9A,0x16,0x01,0xFF,0xC0,0x00,0x00,0x00, // Chr$(130)
+ 0x00,0x00,0x0F,0xFE,0x01,0x80,0x60,0x18,0xC6,0x31,0x8C,0x60,0x18,0x06,0x01,0xFF,0xC0,0x00,0x00,0x00, // Chr$(131)
+ 0x00,0x00,0x0F,0xFE,0x01,0x80,0x60,0x18,0x06,0x01,0x80,0x6F,0xD8,0x06,0x01,0xFF,0xC0,0x00,0x00,0x00, // Chr$(132)
+ 0x00,0x00,0x0F,0xFE,0x01,0x8C,0x63,0x18,0xC6,0x31,0x8C,0x60,0x18,0xC6,0x01,0xFF,0xC0,0x00,0x00,0x00, // Chr$(133)
+ 0x00,0x00,0x0F,0xFE,0x01,0x8C,0x64,0x98,0x26,0x11,0x84,0x60,0x18,0x46,0x01,0xFF,0xC0,0x00,0x00,0x00, // Chr$(134)
+ 0x00,0x00,0x03,0xE1,0xFC,0x7F,0x1A,0xC7,0xF1,0xFC,0x63,0x1D,0xC7,0xF0,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(135)
+ 0x00,0x00,0x03,0xE1,0x04,0x41,0x15,0x44,0x11,0x04,0x5D,0x12,0x44,0x10,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(136)
+ 0x00,0x00,0x00,0x00,0x00,0x08,0x07,0x03,0xE1,0xFC,0x3E,0x07,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(137)
+ 0x00,0x00,0x00,0x00,0x00,0x1C,0x07,0x01,0xC1,0xDC,0x77,0x1D,0xC0,0x80,0x70,0x00,0x00,0x00,0x00,0x00, // Chr$(138)
+ 0x00,0x00,0x00,0x00,0x00,0x08,0x07,0x03,0xE1,0xFC,0x7F,0x0A,0x80,0x80,0x70,0x00,0x00,0x00,0x00,0x00, // Chr$(139)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x87,0xF1,0xFC,0x3E,0x07,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(140)
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x7C,0xCF,0x7B,0xDE,0xF3,0x3E,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, // Chr$(141)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x78,0x1E,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(142)
+ 0x00,0x00,0x00,0xF0,0x24,0x0F,0x02,0x00,0x80,0x20,0x08,0x1E,0x07,0x81,0xC0,0x00,0x00,0x00,0x00,0x00, // Chr$(143)
+ 0x00,0x00,0x00,0x80,0x70,0x2A,0x12,0x40,0x80,0x20,0x49,0x0A,0x81,0xC0,0x20,0x00,0x00,0x00,0x00,0x00, // Chr$(144)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x82,0x11,0xFE,0x21,0x04,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(145)
+ 0x00,0x00,0x00,0x80,0x70,0x2A,0x12,0x40,0x80,0x20,0x08,0x02,0x00,0x80,0x20,0x00,0x00,0x00,0x00,0x00, // Chr$(146)
+ 0x00,0x00,0x00,0x80,0x20,0x08,0x02,0x00,0x80,0x20,0x49,0x0A,0x81,0xC0,0x20,0x00,0x00,0x00,0x00,0x00, // Chr$(147)
+ 0x00,0x00,0x00,0x00,0x00,0x08,0x01,0x00,0x21,0xFC,0x02,0x01,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(148)
+ 0x00,0x00,0x00,0x00,0x00,0x08,0x04,0x02,0x01,0xFC,0x20,0x04,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(149)
+ 0x00,0x00,0x00,0x80,0x20,0x2A,0x12,0x44,0x91,0x24,0x49,0x10,0x44,0x10,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(150)
+ 0x00,0x07,0x82,0x11,0x02,0x5E,0x93,0x24,0xC8,0xB4,0x1E,0x00,0x01,0xE0,0x00,0x1E,0x00,0x00,0x00,0x00, // Chr$(151)
+ 0x00,0x03,0x00,0xC0,0x00,0x1E,0x07,0x81,0xE0,0x78,0x0C,0x03,0x00,0xC0,0x30,0x0C,0x00,0x00,0x00,0x00, // Chr$(152)
+ 0x00,0x1F,0x04,0x61,0x7C,0x47,0x9D,0xE4,0x19,0xEA,0x7A,0x9E,0xA7,0x99,0xFE,0x00,0x00,0x00,0x00,0x00, // Chr$(153)
+ 0x00,0x03,0x01,0x20,0x84,0x21,0x08,0x42,0x10,0xFC,0x3F,0x04,0x81,0x20,0x48,0x12,0x00,0x00,0x00,0x00, // Chr$(154)
+ 0x00,0x03,0x01,0xE0,0xFC,0x3F,0x0F,0xC3,0xF0,0xFC,0x3F,0x04,0x81,0x20,0x48,0x12,0x00,0x00,0x00,0x00, // Chr$(155)
+ 0x00,0x00,0x01,0x00,0xC8,0x71,0x1D,0x27,0x29,0xCA,0x74,0x9C,0x43,0x20,0x40,0x00,0x00,0x00,0x00,0x00, // Chr$(156)
+ 0x00,0x00,0x03,0xF1,0x2C,0x4B,0x12,0xC4,0xB0,0xEC,0x0B,0x02,0xC0,0xB0,0x2C,0x00,0x00,0x00,0x00,0x00, // Chr$(157)
+ 0x00,0x00,0x03,0xF0,0x88,0x24,0x0D,0xC1,0x20,0x50,0x28,0x0C,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(158)
+ 0x00,0x00,0x00,0x00,0x42,0x1B,0x03,0xC1,0xE1,0xFC,0x0D,0x82,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(159)
+ 0x00,0x00,0x01,0xE0,0x84,0x40,0x94,0xA5,0x29,0x4A,0x52,0x90,0x22,0x10,0x78,0x00,0x00,0x00,0x00,0x00, // Chr$(160)
+ 0x00,0x00,0x01,0xE0,0x84,0x48,0x93,0x24,0xE9,0x32,0x48,0x90,0x22,0x10,0x78,0x00,0x00,0x00,0x00,0x00, // Chr$(161)
+ 0x00,0x00,0x01,0xE0,0x84,0x40,0x97,0xA5,0xE9,0x7A,0x5E,0x90,0x22,0x10,0x78,0x00,0x00,0x00,0x00,0x00, // Chr$(162)
+ 0x00,0x00,0x00,0x00,0xE0,0x44,0x11,0x04,0x40,0xF0,0x06,0x00,0xC0,0x18,0x02,0x00,0x00,0x00,0x00,0x00, // Chr$(163)
+ 0x00,0x00,0x00,0x60,0x20,0x10,0x0F,0x81,0x00,0x40,0x3E,0x04,0x00,0x80,0x18,0x00,0x00,0x00,0x00,0x00, // Chr$(164)
+ 0x00,0x00,0x00,0xD0,0x4C,0x21,0x10,0x22,0x10,0x84,0x21,0x08,0x42,0x10,0xFC,0x00,0x00,0x00,0x00,0x00, // Chr$(165)
+ 0x00,0x00,0x01,0xE0,0x48,0x7F,0x88,0x42,0x10,0x84,0x21,0x08,0x42,0x10,0xFC,0x00,0x00,0x00,0x00,0x00, // Chr$(166)
+ 0x00,0x00,0x01,0xC1,0x8C,0x41,0x20,0x28,0x0B,0x06,0xC1,0x90,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(167)
+ 0x00,0x00,0x0F,0xFE,0x01,0x80,0x60,0x18,0x06,0x01,0x80,0x7F,0xF0,0xC0,0x30,0x1E,0x00,0x00,0x00,0x00, // Chr$(168)
+ 0x00,0x00,0x00,0xC0,0x78,0x1E,0x07,0x81,0xE0,0x78,0x0C,0x03,0x00,0x00,0x30,0x0C,0x00,0x00,0x00,0x00, // Chr$(169)
+ 0x00,0x05,0x02,0xB0,0x82,0x41,0x9F,0xC0,0x60,0x20,0x08,0x04,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(170)
+ 0x00,0x00,0x01,0x80,0x90,0x24,0x09,0x02,0x50,0x64,0x01,0x00,0x40,0x10,0x04,0x00,0x00,0x00,0x00,0x00, // Chr$(171)
+ 0x00,0x03,0x01,0x20,0xCC,0x6D,0x8C,0xC0,0xC0,0x30,0x1C,0x03,0x01,0xC0,0x30,0x1C,0x00,0x00,0x00,0x00, // Chr$(172)
+ 0x00,0x3F,0xF0,0x03,0xFF,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x3F,0xF0,0x03,0xFF, // Chr$(173)
+ 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, // Chr$(174)
+ 0xCC,0xF3,0x33,0x30,0xCC,0xCC,0xF3,0x33,0x30,0xCC,0xCC,0xF3,0x33,0x30,0xCC,0xCC,0xF3,0x33,0x30,0xCC, // Chr$(175)
+ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, // Chr$(176)
+ 0xAA,0x95,0x5A,0xA9,0x55,0xAA,0x95,0x5A,0xA9,0x55,0xAA,0x95,0x5A,0xA9,0x55,0xAA,0x95,0x5A,0xA9,0x55, // Chr$(177)
+ 0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0xEE, // Chr$(178)
+ 0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10, // Chr$(179)
+ 0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x43,0xF0,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10, // Chr$(180)
+ 0x04,0x01,0x00,0x40,0x10,0x04,0x3F,0x00,0x43,0xF0,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10, // Chr$(181)
+ 0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x23,0xC8,0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x20,0x48, // Chr$(182)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF8,0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x20,0x48, // Chr$(183)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x43,0xF0,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10, // Chr$(184)
+ 0x12,0x04,0x81,0x20,0x48,0x12,0x3C,0x80,0x23,0xC8,0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x20,0x48, // Chr$(185)
+ 0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x20,0x48, // Chr$(186)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x80,0x23,0xC8,0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x20,0x48, // Chr$(187)
+ 0x12,0x04,0x81,0x20,0x48,0x12,0x3C,0x80,0x23,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(188)
+ 0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x23,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(189)
+ 0x04,0x01,0x00,0x40,0x10,0x04,0x3F,0x00,0x43,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(190)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF0,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10, // Chr$(191)
+ 0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(192)
+ 0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x43,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(193)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10, // Chr$(194)
+ 0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x1F,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10, // Chr$(195)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(196)
+ 0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x43,0xFF,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10, // Chr$(197)
+ 0x04,0x01,0x00,0x40,0x10,0x04,0x01,0xF0,0x40,0x1F,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10, // Chr$(198)
+ 0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x20,0x4F,0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x20,0x48, // Chr$(199)
+ 0x12,0x04,0x81,0x20,0x48,0x12,0x04,0xF1,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(200)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF1,0x00,0x4F,0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x20,0x48, // Chr$(201)
+ 0x12,0x04,0x81,0x20,0x48,0x12,0x3C,0xF0,0x03,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(202)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x03,0xCF,0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x20,0x48, // Chr$(203)
+ 0x12,0x04,0x81,0x20,0x48,0x12,0x04,0xF1,0x00,0x4F,0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x20,0x48, // Chr$(204)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x03,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(205)
+ 0x12,0x04,0x81,0x20,0x48,0x12,0x3C,0xF0,0x03,0xCF,0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x20,0x48, // Chr$(206)
+ 0x04,0x01,0x00,0x40,0x10,0x04,0x3F,0xF0,0x03,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(207)
+ 0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x23,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(208)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x03,0xFF,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10, // Chr$(209)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x20,0x48, // Chr$(210)
+ 0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x20,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(211)
+ 0x04,0x01,0x00,0x40,0x10,0x04,0x01,0xF0,0x40,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(212)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xF0,0x40,0x1F,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10, // Chr$(213)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x20,0x48, // Chr$(214)
+ 0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x23,0xFF,0x12,0x04,0x81,0x20,0x48,0x12,0x04,0x81,0x20,0x48, // Chr$(215)
+ 0x04,0x01,0x00,0x40,0x10,0x04,0x3F,0xF0,0x43,0xFF,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10, // Chr$(216)
+ 0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x43,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(217)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10, // Chr$(218)
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, // Chr$(219)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, // Chr$(220)
+ 0x1E,0x07,0x81,0xE0,0x78,0x1E,0x07,0x81,0xE0,0x78,0x1E,0x07,0x81,0xE0,0x78,0x1E,0x07,0x81,0xE0,0x78, // Chr$(221)
+ 0x07,0xC1,0xF0,0x7C,0x1F,0x07,0xC1,0xF0,0x7C,0x1F,0x07,0xC1,0xF0,0x7C,0x1F,0x07,0xC1,0xF0,0x7C,0x1F, // Chr$(222)
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(223)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x84,0x41,0x10,0x44,0x11,0x04,0x40,0xEC,0x00,0x00,0x00,0x00,0x00, // Chr$(224)
+ 0x00,0x00,0x01,0xC0,0x88,0x42,0x10,0x84,0xC1,0x08,0x41,0x10,0x44,0x11,0x38,0x40,0x10,0x00,0x00,0x00, // Chr$(225)
+ 0x00,0x00,0x07,0xF1,0x00,0x40,0x10,0x04,0x01,0x00,0x40,0x10,0x04,0x01,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(226)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xC2,0x20,0x88,0x22,0x08,0x82,0x20,0x84,0x00,0x00,0x00,0x00,0x00, // Chr$(227)
+ 0x00,0x00,0x07,0xF0,0x80,0x10,0x02,0x00,0x40,0x20,0x10,0x08,0x04,0x01,0xFC,0x00,0x00,0x00,0x00,0x00, // Chr$(228)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC4,0x41,0x08,0x42,0x10,0x84,0x20,0xF0,0x00,0x00,0x00,0x00,0x00, // Chr$(229)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x84,0x21,0x08,0x42,0x10,0x86,0x21,0x74,0x40,0x10,0x04,0x00,0x00, // Chr$(230)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC4,0x80,0x20,0x08,0x02,0x00,0x80,0x18,0x00,0x00,0x00,0x00,0x00, // Chr$(231)
+ 0x00,0x00,0x03,0xF0,0x00,0x1E,0x08,0x42,0x10,0x84,0x21,0x07,0x80,0x00,0xFC,0x00,0x00,0x00,0x00,0x00, // Chr$(232)
+ 0x00,0x00,0x01,0xC0,0x88,0x41,0x10,0x47,0xF1,0x04,0x41,0x10,0x42,0x20,0x70,0x00,0x00,0x00,0x00,0x00, // Chr$(233)
+ 0x00,0x00,0x01,0xC0,0x88,0x41,0x10,0x44,0x11,0x04,0x41,0x08,0x81,0x41,0xDC,0x00,0x00,0x00,0x00,0x00, // Chr$(234)
+ 0x00,0x00,0x03,0xE0,0x80,0x10,0x02,0x03,0xC1,0x08,0x41,0x10,0x44,0x10,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(235)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0x84,0x91,0x24,0x49,0x0D,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(236)
+ 0x00,0x00,0x00,0x00,0x04,0x02,0x0D,0x84,0xD1,0x24,0x59,0x0D,0x82,0x01,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(237)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x84,0x11,0x00,0x3C,0x10,0x04,0x10,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(238)
+ 0x00,0x00,0x00,0x00,0xF8,0x41,0x10,0x44,0x11,0x04,0x41,0x10,0x44,0x11,0x04,0x00,0x00,0x00,0x00,0x00, // Chr$(239)
+ 0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x01,0xFC,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(240)
+ 0x00,0x00,0x00,0x80,0x20,0x08,0x1F,0xC0,0x80,0x20,0x08,0x00,0x07,0xF0,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(241)
+ 0x00,0x00,0x00,0x00,0x40,0x08,0x01,0x00,0x20,0x10,0x08,0x04,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(242)
+ 0x00,0x00,0x00,0x00,0x10,0x08,0x04,0x02,0x00,0x40,0x08,0x01,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00, // Chr$(243)
+ 0x00,0x08,0x02,0x00,0x84,0x22,0x09,0x00,0x80,0x40,0x20,0x03,0x80,0x10,0x08,0x04,0x03,0xC0,0x00,0x00, // Chr$(244)
+ 0x00,0x08,0x02,0x00,0x80,0x21,0x08,0x80,0x40,0x20,0x11,0x08,0xC0,0x50,0x3C,0x01,0x00,0x40,0x00,0x00, // Chr$(245)
+ 0x00,0x00,0x00,0x00,0x00,0x08,0x02,0x00,0x01,0xFC,0x00,0x02,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(246)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x42,0x60,0x00,0x19,0x09,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(247)
+ 0x00,0x04,0x01,0x00,0x40,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(248)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(249)
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(250)
+ 0x00,0x01,0xC0,0x40,0x10,0x04,0x01,0x00,0x40,0x10,0x64,0x05,0x00,0xC0,0x10,0x00,0x00,0x00,0x00,0x00, // Chr$(251)
+ 0x00,0x0B,0x81,0x10,0x44,0x11,0x04,0x41,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(252)
+ 0x00,0x03,0x01,0x20,0x08,0x04,0x02,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(253)
+ 0x00,0x00,0x00,0x00,0x00,0x3F,0x0F,0xC3,0xF0,0xFC,0x3F,0x0F,0xC3,0xF0,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(254)
+ 0x00,0x00,0x00,0x81,0x24,0x3E,0x08,0x84,0x11,0x04,0x41,0x08,0x83,0xE1,0x24,0x08,0x00,0x00,0x00,0x00 // Chr$(255)
+ };
diff --git a/Kernel/platform/platform-rpipico/fonts/Font_8x6.h b/Kernel/platform/platform-rpipico/fonts/Font_8x6.h
new file mode 100644
index 000000000..b6c3460e3
--- /dev/null
+++ b/Kernel/platform/platform-rpipico/fonts/Font_8x6.h
@@ -0,0 +1,105 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+const unsigned char F_6x8_LE[580] = {
+ 0x06,0x08,0x20,0x60,
+ 0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(32)
+ 0x20,0x82,0x08,0x00,0x82,0x00, // Chr$(33) !
+ 0x51,0x45,0x00,0x00,0x00,0x00, // Chr$(34) "
+ 0x51,0x4F,0x94,0xF9,0x45,0x00, // Chr$(35) #
+ 0x21,0xEA,0x1C,0x2B,0xC2,0x00, // Chr$(36) $
+ 0x00,0x69,0x90,0x20,0x4C,0xB0, // Chr$(37) %
+ 0x62,0x4A,0x10,0xAA,0x46,0x80, // Chr$(38) &
+ 0x60,0x84,0x00,0x00,0x00,0x00, // Chr$(39) '
+ 0x10,0x84,0x10,0x40,0x81,0x00, // Chr$(40) (
+ 0x40,0x81,0x04,0x10,0x84,0x00, // Chr$(41) )
+ 0x00,0x8A,0x9C,0xA8,0x80,0x00, // Chr$(42) *
+ 0x00,0x82,0x3E,0x20,0x80,0x00, // Chr$(43) +
+ 0x00,0x00,0x00,0x30,0x42,0x00, // Chr$(44) ,
+ 0x00,0x00,0x3E,0x00,0x00,0x00, // Chr$(45) -
+ 0x00,0x00,0x00,0x01,0x86,0x00, // Chr$(46) .
+ 0x00,0x21,0x08,0x42,0x00,0x00, // Chr$(47) /
+ 0x72,0x29,0xAA,0xCA,0x27,0x00, // Chr$(48) 0
+ 0x21,0x82,0x08,0x20,0x87,0x00, // Chr$(49) 1
+ 0x72,0x20,0x84,0x21,0x0F,0x80, // Chr$(50) 2
+ 0xF8,0x42,0x04,0x0A,0x27,0x00, // Chr$(51) 3
+ 0x10,0xC5,0x24,0xF8,0x41,0x00, // Chr$(52) 4
+ 0xFA,0x0F,0x02,0x0A,0x27,0x00, // Chr$(53) 5
+ 0x31,0x08,0x3C,0x8A,0x27,0x00, // Chr$(54) 6
+ 0xF8,0x21,0x08,0x41,0x04,0x00, // Chr$(55) 7
+ 0x72,0x28,0x9C,0x8A,0x27,0x00, // Chr$(56) 8
+ 0x72,0x28,0x9E,0x08,0x27,0x00, // Chr$(57) 9
+ 0x01,0x86,0x00,0x61,0x80,0x00, // Chr$(58) :
+ 0x01,0x86,0x00,0x60,0x84,0x00, // Chr$(59) ;
+ 0x10,0x84,0x20,0x40,0x81,0x00, // Chr$(60) <
+ 0x00,0x0F,0x80,0xF8,0x00,0x00, // Chr$(61) =
+ 0x40,0x81,0x02,0x10,0x84,0x00, // Chr$(62) >
+ 0x72,0x20,0x84,0x20,0x02,0x00, // Chr$(63) ?
+ 0x72,0x20,0x9A,0xBA,0x27,0x00, // Chr$(64) @
+ 0x72,0x28,0xA2,0xFA,0x28,0x80, // Chr$(65) A
+ 0xF2,0x28,0xBC,0x8A,0x2F,0x00, // Chr$(66) B
+ 0x72,0x28,0x20,0x82,0x27,0x00, // Chr$(67) C
+ 0xE2,0x48,0xA2,0x8A,0x4E,0x00, // Chr$(68) D
+ 0xFA,0x08,0x3C,0x82,0x0F,0x80, // Chr$(69) E
+ 0xFA,0x08,0x3C,0x82,0x08,0x00, // Chr$(70) F
+ 0x72,0x28,0x2E,0x8A,0x27,0x80, // Chr$(71) G
+ 0x8A,0x28,0xBE,0x8A,0x28,0x80, // Chr$(72) H
+ 0x70,0x82,0x08,0x20,0x87,0x00, // Chr$(73) I
+ 0x38,0x41,0x04,0x12,0x46,0x00, // Chr$(74) J
+ 0x8A,0x4A,0x30,0xA2,0x48,0x80, // Chr$(75) K
+ 0x82,0x08,0x20,0x82,0x0F,0x80, // Chr$(76) L
+ 0x8B,0x6A,0xAA,0x8A,0x28,0x80, // Chr$(77) M
+ 0x8A,0x2C,0xAA,0x9A,0x28,0x80, // Chr$(78) N
+ 0x72,0x28,0xA2,0x8A,0x27,0x00, // Chr$(79) O
+ 0xF2,0x28,0xBC,0x82,0x08,0x00, // Chr$(80) P
+ 0x72,0x28,0xA2,0xAA,0x46,0x80, // Chr$(81) Q
+ 0xF2,0x28,0xBC,0xA2,0x48,0x80, // Chr$(82) R
+ 0x7A,0x08,0x1C,0x08,0x2F,0x00, // Chr$(83) S
+ 0xF8,0x82,0x08,0x20,0x82,0x00, // Chr$(84) T
+ 0x8A,0x28,0xA2,0x8A,0x27,0x00, // Chr$(85) U
+ 0x8A,0x28,0xA2,0x89,0x42,0x00, // Chr$(86) V
+ 0x8A,0x28,0xAA,0xAA,0xA5,0x00, // Chr$(87) W
+ 0x8A,0x25,0x08,0x52,0x28,0x80, // Chr$(88) X
+ 0x8A,0x28,0x94,0x20,0x82,0x00, // Chr$(89) Y
+ 0xF8,0x21,0x08,0x42,0x0F,0x80, // Chr$(90) Z
+ 0x71,0x04,0x10,0x41,0x07,0x00, // Chr$(91) [
+ 0x02,0x04,0x08,0x10,0x20,0x00, // Chr$(92) backslash
+ 0x70,0x41,0x04,0x10,0x47,0x00, // Chr$(93) ]
+ 0x21,0x48,0x80,0x00,0x00,0x00, // Chr$(94) ^
+ 0x00,0x00,0x00,0x00,0x0F,0x80, // Chr$(95) _
+ 0x00,0xC4,0x8C,0x00,0x00,0x00, // Chr$(96) `
+ 0x00,0x07,0x02,0x7A,0x27,0x80, // Chr$(97) a
+ 0x82,0x0B,0x32,0x8A,0x2F,0x00, // Chr$(98) b
+ 0x00,0x07,0x20,0x82,0x27,0x00, // Chr$(99) c
+ 0x08,0x26,0xA6,0x8A,0x27,0x80, // Chr$(100) d
+ 0x00,0x07,0x22,0xFA,0x07,0x00, // Chr$(101) e
+ 0x31,0x24,0x38,0x41,0x04,0x00, // Chr$(102) f
+ 0x01,0xE8,0xA2,0x78,0x27,0x00, // Chr$(103) g
+ 0x82,0x0B,0x32,0x8A,0x28,0x80, // Chr$(104) h
+ 0x20,0x06,0x08,0x20,0x87,0x00, // Chr$(105) i
+ 0x10,0x03,0x04,0x12,0x46,0x00, // Chr$(106) j
+ 0x82,0x09,0x28,0xC2,0x89,0x00, // Chr$(107) k
+ 0x60,0x82,0x08,0x20,0x87,0x00, // Chr$(108) l
+ 0x00,0x0D,0x2A,0xAA,0x28,0x80, // Chr$(109) m
+ 0x00,0x0B,0x32,0x8A,0x28,0x80, // Chr$(110) n
+ 0x00,0x07,0x22,0x8A,0x27,0x00, // Chr$(111) o
+ 0x00,0x0F,0x22,0xF2,0x08,0x00, // Chr$(112) p
+ 0x00,0x06,0xA6,0x78,0x20,0x80, // Chr$(113) q
+ 0x00,0x0B,0x32,0x82,0x08,0x00, // Chr$(114) r
+ 0x00,0x07,0x20,0x70,0x2F,0x00, // Chr$(115) s
+ 0x41,0x0E,0x10,0x41,0x23,0x00, // Chr$(116) t
+ 0x00,0x08,0xA2,0x8A,0x66,0x80, // Chr$(117) u
+ 0x00,0x08,0xA2,0x89,0x42,0x00, // Chr$(118) v
+ 0x00,0x08,0xA2,0xAA,0xA5,0x00, // Chr$(119) w
+ 0x00,0x08,0x94,0x21,0x48,0x80, // Chr$(120) x
+ 0x00,0x08,0xA2,0x78,0x27,0x00, // Chr$(121) y
+ 0x00,0x0F,0x84,0x21,0x0F,0x80, // Chr$(122) z
+ 0x10,0x82,0x10,0x40,0x82,0x04, // Chr$(123) {
+ 0x20,0x82,0x00,0x20,0x82,0x00, // Chr$(124) |
+ 0x20,0x41,0x02,0x08,0x41,0x08, // Chr$(125) }
+ 0x00,0x04,0xAA,0x90,0x00,0x00, // Chr$(126) ~
+ 0x00,0x02,0x14,0x8B,0xE0,0x00 // Chr$(127)
+};
diff --git a/Kernel/platform/platform-rpipico/fonts/Hom_16x24_LE.h b/Kernel/platform/platform-rpipico/fonts/Hom_16x24_LE.h
new file mode 100644
index 000000000..085e93b27
--- /dev/null
+++ b/Kernel/platform/platform-rpipico/fonts/Hom_16x24_LE.h
@@ -0,0 +1,111 @@
+// Hom_16x24_LE.c
+// Font type : Full (95 characters)
+// Font size : 16x24 pixels
+// Memory usage : 4564 bytes
+#ifndef Hom_16x24_LE_h
+#define Hom_16x24_LE_h
+
+const unsigned char Hom_16x24_LE[4564] = {
+0x10,0x18,0x20,0x5F,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // <space>
+0x01,0x80,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x01,0x80,0x03,0xC0,0x03,0xC0,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // !
+0x00,0x00,0x00,0x00,0x06,0x30,0x06,0x30,0x0C,0x60,0x0C,0x60,0x0E,0x70,0x0E,0x70,0x06,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // "
+0x00,0x00,0x00,0x00,0x03,0x18,0x03,0x18,0x07,0x38,0x07,0x38,0x3F,0xFC,0x3F,0xFC,0x06,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x60,0x3F,0xFC,0x3F,0xFC,0x1C,0xE0,0x1C,0xE0,0x1C,0xC0,0x18,0xC0,0x18,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // #
+0x01,0x80,0x01,0x80,0x07,0xC0,0x1F,0xF0,0x1F,0xF8,0x3D,0xB8,0x39,0xB8,0x39,0x98,0x3D,0x80,0x1F,0x80,0x0F,0xF0,0x03,0xF8,0x01,0xBC,0x31,0x9C,0x39,0x9C,0x39,0x9C,0x3D,0xB8,0x1F,0xF8,0x07,0xE0,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00, // $
+0x00,0x00,0x78,0x10,0xF8,0x30,0xCC,0x20,0xCC,0x60,0xCC,0x40,0xCC,0xC0,0xCC,0x80,0x79,0x80,0x01,0x3C,0x03,0x66,0x02,0x66,0x06,0x66,0x0C,0x66,0x0C,0x66,0x18,0x3C,0x10,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // %
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x0F,0xC0,0x1C,0xE0,0x1C,0xE0,0x1C,0xE0,0x0F,0xC0,0x07,0x00,0x1F,0x08,0x3B,0x9C,0x71,0xD8,0x71,0xF8,0x70,0xF0,0x78,0xFC,0x3F,0xDE,0x0F,0x8C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // &
+0x00,0xE0,0x00,0xC0,0x01,0xC0,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // '
+0x00,0x40,0x00,0xC0,0x01,0xC0,0x01,0x80,0x03,0x80,0x03,0x80,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x03,0x80,0x03,0x80,0x01,0x80,0x01,0xC0,0x00,0xC0,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // (
+0x02,0x00,0x03,0x00,0x03,0x80,0x01,0x80,0x01,0xC0,0x01,0xC0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x01,0xC0,0x01,0xC0,0x01,0x80,0x03,0x80,0x03,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // )
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x06,0xD8,0x07,0xF8,0x00,0xC0,0x01,0xE0,0x03,0x30,0x03,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // *
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x1F,0xF8,0x1F,0xF8,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // +
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x80,0x03,0x80,0x01,0x80,0x01,0x80,0x03,0x00,0x00,0x00,0x00,0x00, // ,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .
+0x00,0x30,0x00,0x70,0x00,0x70,0x00,0x60,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x00,0x07,0x00,0x07,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // /
+
+0x00,0x00,0x07,0xE0,0x0F,0xF0,0x1F,0xF8,0x1C,0x38,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x1C,0x38,0x1F,0xF8,0x0F,0xF0,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 0
+0x00,0x00,0x00,0x60,0x00,0xE0,0x01,0xE0,0x03,0xE0,0x07,0xE0,0x1F,0xE0,0x1C,0xE0,0x18,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 1
+0x00,0x00,0x07,0xE0,0x1F,0xF8,0x1F,0xF8,0x3C,0x3C,0x38,0x1C,0x38,0x1C,0x00,0x1C,0x00,0x38,0x00,0x78,0x00,0xF0,0x03,0xE0,0x07,0x80,0x0F,0x00,0x1E,0x00,0x3C,0x00,0x3F,0xF8,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 2
+0x00,0x00,0x07,0xE0,0x0F,0xF0,0x1F,0xF8,0x3C,0x78,0x38,0x38,0x00,0x38,0x00,0x78,0x01,0xF0,0x01,0xF0,0x00,0xF8,0x00,0x3C,0x30,0x1C,0x38,0x1C,0x38,0x3C,0x3C,0x78,0x1F,0xF8,0x0F,0xF0,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 3
+0x00,0x00,0x00,0x60,0x00,0xF0,0x00,0xF0,0x01,0xF0,0x03,0xF0,0x03,0x70,0x07,0x70,0x0E,0x70,0x0C,0x70,0x1C,0x70,0x38,0x70,0x38,0x70,0x3F,0xFC,0x3F,0xFC,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 4
+0x00,0x00,0x1F,0xFC,0x1F,0xFC,0x1F,0xF8,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1F,0xE0,0x1F,0xF0,0x1F,0xF8,0x1C,0x3C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x38,0x1C,0x3C,0x38,0x3F,0xF8,0x1F,0xF0,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 5
+0x00,0x00,0x03,0xE0,0x0F,0xF0,0x1F,0xF8,0x1C,0x38,0x3C,0x18,0x38,0x00,0x38,0x00,0x3B,0xE0,0x3F,0xF0,0x3F,0xF8,0x3C,0x3C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x1C,0x3C,0x1F,0xF8,0x0F,0xF0,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 6
+0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x1F,0xFC,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0xE0,0x01,0xC0,0x01,0xC0,0x03,0x80,0x03,0x80,0x03,0x80,0x07,0x80,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 7
+0x00,0x00,0x07,0xE0,0x0F,0xF0,0x1F,0xF8,0x1E,0x78,0x1C,0x38,0x1C,0x38,0x1E,0x78,0x0F,0xF0,0x0F,0xF0,0x1C,0x38,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x3C,0x3C,0x1F,0xF8,0x0F,0xF0,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 8
+0x00,0x00,0x07,0xC0,0x0F,0xF0,0x1F,0xF8,0x3C,0x38,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x3C,0x3C,0x1F,0xFC,0x0F,0xFC,0x07,0xDC,0x00,0x1C,0x00,0x1C,0x18,0x3C,0x1C,0x38,0x1F,0xF8,0x0F,0xF0,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // 9
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // :
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x80,0x03,0x80,0x01,0x80,0x01,0x80,0x03,0x00,0x02,0x00,0x00,0x00, // ;
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x38,0x00,0xF8,0x03,0xF8,0x0F,0xC0,0x1F,0x00,0x1C,0x00,0x1F,0x00,0x0F,0xC0,0x03,0xF8,0x00,0xF8,0x00,0x38,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // <
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // =
+0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x1C,0x00,0x1F,0x00,0x1F,0xC0,0x03,0xF0,0x00,0xF8,0x00,0x38,0x00,0xF8,0x03,0xF0,0x1F,0xC0,0x1F,0x00,0x1C,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // >
+0x07,0xC0,0x0F,0xF0,0x1F,0xF0,0x3C,0x78,0x38,0x38,0x38,0x38,0x30,0x38,0x00,0x70,0x00,0xF0,0x01,0xE0,0x03,0xC0,0x03,0x80,0x03,0x80,0x01,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ?
+
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0x0F,0xF8,0x1C,0x1C,0x10,0x04,0x23,0xB6,0x27,0xF2,0x4C,0x72,0x5C,0x62,0x58,0x62,0x58,0x62,0x58,0x64,0x58,0xEC,0x6F,0xF8,0x27,0x70,0x30,0x06,0x18,0x0C,0x0F,0xFC,0x03,0xF0,0x00,0x00,0x00,0x00, // @
+0x00,0x00,0x00,0x00,0x01,0x80,0x03,0xC0,0x03,0xC0,0x07,0xE0,0x07,0xE0,0x0E,0x60,0x0E,0x70,0x0E,0x70,0x1C,0x78,0x1C,0x38,0x1C,0x38,0x3F,0xFC,0x3F,0xFC,0x38,0x1C,0x70,0x0E,0x70,0x0E,0x60,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // A
+0x00,0x00,0x00,0x00,0x3F,0xE0,0x3F,0xF0,0x38,0x78,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x3F,0xF0,0x3F,0xF0,0x38,0x38,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x3C,0x3F,0xF8,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // B
+0x00,0x00,0x00,0x00,0x07,0xE0,0x0F,0xF0,0x1E,0x78,0x3C,0x3C,0x38,0x1C,0x78,0x0C,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x0C,0x70,0x0C,0x38,0x1C,0x3C,0x3C,0x1E,0x78,0x0F,0xF0,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // C
+0x00,0x00,0x00,0x00,0x3F,0xC0,0x3F,0xF0,0x38,0xF0,0x38,0x78,0x38,0x38,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x38,0x38,0x78,0x38,0xF0,0x3F,0xF0,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // D
+0x00,0x00,0x00,0x00,0x1F,0xFC,0x1F,0xFC,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1F,0xF8,0x1F,0xF8,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1F,0xFC,0x1F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // E
+0x00,0x00,0x00,0x00,0x0F,0xFC,0x0F,0xFC,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0F,0xF8,0x0F,0xF8,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // F
+0x00,0x00,0x00,0x00,0x03,0xE0,0x0F,0xF8,0x1C,0x3C,0x38,0x1C,0x38,0x0E,0x70,0x0C,0x70,0x00,0x70,0x00,0x70,0xFE,0x70,0xFE,0x70,0x0E,0x70,0x0E,0x38,0x0E,0x38,0x0E,0x1C,0x3E,0x0F,0xFC,0x03,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // G
+0x00,0x00,0x00,0x00,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x3F,0xFC,0x3F,0xFC,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // H
+0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // I
+0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x70,0xE0,0x70,0xE0,0x70,0xE0,0x79,0xE0,0x3F,0xC0,0x3F,0xC0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // J
+0x00,0x00,0x00,0x00,0x38,0x0C,0x38,0x1C,0x38,0x3C,0x38,0x78,0x38,0xF0,0x39,0xE0,0x3B,0xC0,0x3F,0xC0,0x3F,0xE0,0x3E,0xF0,0x3C,0x70,0x38,0x78,0x38,0x3C,0x38,0x3C,0x38,0x1E,0x38,0x0E,0x38,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // K
+0x00,0x00,0x00,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1F,0xF8,0x1F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // L
+0x00,0x00,0x00,0x00,0xF8,0x1F,0xF8,0x1F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xEC,0x37,0xEE,0x77,0xEE,0x77,0xEE,0x77,0xE6,0x67,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE3,0xC7,0xE3,0xC7,0xE3,0xC7,0xE1,0x87,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // M
+0x00,0x00,0x00,0x00,0x18,0x1C,0x3C,0x1C,0x3C,0x1C,0x3E,0x1C,0x3E,0x1C,0x3F,0x1C,0x3B,0x1C,0x3B,0x9C,0x39,0x9C,0x39,0xDC,0x38,0xDC,0x38,0xFC,0x38,0x7C,0x38,0x7C,0x38,0x3C,0x38,0x3C,0x38,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // N
+0x00,0x00,0x00,0x00,0x07,0xE0,0x0F,0xF0,0x1F,0xF8,0x3C,0x3C,0x38,0x1C,0x78,0x1E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x78,0x1E,0x38,0x1C,0x3C,0x3C,0x1F,0xF8,0x0F,0xF0,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // O
+
+0x00,0x00,0x00,0x00,0x3F,0xF0,0x3F,0xF8,0x38,0x3C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x38,0x3F,0xF8,0x3F,0xE0,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // P
+0x00,0x00,0x00,0x00,0x07,0xE0,0x0F,0xF0,0x1F,0xF8,0x3C,0x3C,0x38,0x1C,0x78,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x79,0x9E,0x38,0xFC,0x3C,0x7C,0x1F,0xF8,0x0F,0xFE,0x07,0xEF,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Q
+0x00,0x00,0x00,0x00,0x3F,0xF8,0x3F,0xFC,0x38,0x1E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1E,0x3F,0xFC,0x3F,0xF0,0x38,0xE0,0x38,0x70,0x38,0x78,0x38,0x3C,0x38,0x3C,0x38,0x1E,0x38,0x0E,0x38,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // R
+0x00,0x00,0x00,0x00,0x07,0xE0,0x1F,0xF0,0x1C,0x38,0x38,0x38,0x38,0x18,0x3C,0x00,0x3F,0x00,0x1F,0xE0,0x0F,0xF8,0x01,0xF8,0x00,0x3C,0x30,0x1C,0x38,0x1C,0x38,0x1C,0x3C,0x38,0x1F,0xF8,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // S
+0x00,0x00,0x00,0x00,0x7F,0xFC,0x7F,0xFC,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // T
+0x00,0x00,0x00,0x00,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x3C,0x38,0x1F,0xF8,0x0F,0xF0,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // U
+0x00,0x00,0x00,0x00,0x38,0x06,0x38,0x0E,0x38,0x0E,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x0E,0x18,0x0E,0x38,0x0E,0x38,0x0E,0x30,0x07,0x70,0x07,0x70,0x07,0x60,0x03,0xE0,0x03,0xE0,0x03,0xC0,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // V
+0x00,0x00,0x00,0x00,0xC1,0x83,0xC3,0xC3,0xE3,0xC7,0xE3,0xC7,0xE3,0xC7,0x63,0xC6,0x66,0x66,0x66,0x66,0x76,0x6E,0x76,0x6E,0x36,0x6C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x1C,0x38,0x18,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // W
+0x00,0x00,0x00,0x00,0x30,0x0C,0x38,0x1E,0x3C,0x1C,0x1C,0x3C,0x1E,0x78,0x0F,0xF0,0x07,0xF0,0x07,0xE0,0x03,0xC0,0x07,0xE0,0x0F,0xF0,0x1F,0xF8,0x1E,0x78,0x3C,0x3C,0x78,0x1E,0x78,0x1E,0x70,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // X
+0x00,0x00,0x00,0x00,0x30,0x18,0x78,0x1C,0x38,0x38,0x3C,0x38,0x1C,0x70,0x1E,0xF0,0x0E,0xE0,0x07,0xC0,0x07,0xC0,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Y
+0x00,0x00,0x00,0x00,0x3F,0xF8,0x3F,0xF8,0x00,0x78,0x00,0x78,0x00,0xF0,0x01,0xF0,0x01,0xE0,0x03,0xC0,0x07,0x80,0x07,0x80,0x0F,0x00,0x1E,0x00,0x1E,0x00,0x3C,0x00,0x78,0x00,0x7F,0xFC,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Z
+0x00,0x00,0x01,0xE0,0x01,0xE0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0xE0,0x01,0xE0,0x00,0x00,0x00,0x00, // [
+0x00,0x00,0x00,0x00,0x0C,0x00,0x1E,0x00,0x0E,0x00,0x0F,0x00,0x07,0x00,0x07,0x00,0x07,0x80,0x03,0x80,0x03,0x80,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xF0,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // <backslash>
+0x00,0x00,0x0F,0x80,0x0F,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x0F,0x80,0x0F,0x80,0x00,0x00,0x00,0x00, // ]
+0x00,0x00,0x00,0x00,0x03,0x80,0x07,0x80,0x07,0x80,0x07,0xC0,0x0E,0xC0,0x0C,0xE0,0x1C,0xE0,0x1C,0x60,0x38,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ^
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // _
+
+0x00,0x00,0x00,0x00,0x1C,0x00,0x3E,0x00,0x63,0x00,0x63,0x00,0x63,0x00,0x3E,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // `
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x1F,0xE0,0x18,0x70,0x10,0x70,0x00,0xF0,0x0F,0xF0,0x1E,0x70,0x38,0x70,0x38,0x70,0x38,0xF0,0x1F,0xF0,0x0E,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // a
+0x00,0x00,0x00,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1D,0xF0,0x1F,0xF8,0x1E,0x38,0x1E,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1C,0x1E,0x1C,0x1E,0x38,0x1F,0xF8,0x1D,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // b
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x0F,0xF0,0x1C,0x70,0x3C,0x38,0x38,0x10,0x38,0x00,0x38,0x00,0x38,0x10,0x3C,0x38,0x1C,0x78,0x0F,0xF0,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // c
+0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x0F,0xB8,0x1F,0xF8,0x1C,0x78,0x38,0x78,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x78,0x1C,0x78,0x1F,0xF8,0x07,0xB8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // d
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x0F,0xE0,0x1C,0x70,0x38,0x38,0x38,0x38,0x3F,0xF8,0x3F,0xF0,0x38,0x00,0x38,0x10,0x1C,0x38,0x0F,0xF0,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // e
+0x00,0x00,0x00,0x00,0x03,0xE0,0x07,0xE0,0x07,0x00,0x07,0x00,0x07,0x00,0x1F,0xC0,0x1F,0xC0,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // f
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xB8,0x1F,0xF8,0x1C,0x78,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x1C,0x78,0x1F,0xF8,0x07,0xB8,0x10,0x38,0x38,0x38,0x1C,0x70,0x1F,0xF0,0x07,0xC0, // g
+0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x3B,0xC0,0x3F,0xE0,0x3C,0xF0,0x38,0x70,0x38,0x70,0x38,0x70,0x38,0x70,0x38,0x70,0x38,0x70,0x38,0x70,0x38,0x70,0x38,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // h
+0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // i
+0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x1F,0x80,0x1F,0x00, // j
+0x00,0x00,0x00,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x18,0x0E,0x38,0x0E,0x70,0x0E,0xE0,0x0F,0xC0,0x0F,0xE0,0x0F,0x70,0x0E,0x70,0x0E,0x38,0x0E,0x38,0x0E,0x1C,0x0E,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // k
+0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // l
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEF,0x9E,0xFF,0xFF,0xF1,0xE7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0xE1,0xC7,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // m
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1D,0xE0,0x1F,0xF0,0x1E,0x78,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // n
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0x1F,0xC0,0x38,0xE0,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x70,0x38,0xE0,0x1F,0xC0,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // o
+
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0xC0,0x3F,0xF0,0x3C,0x70,0x3C,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x3C,0x38,0x3C,0x70,0x3F,0xF0,0x3B,0xC0,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00, // p
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xB8,0x1F,0xF8,0x1C,0x78,0x38,0x78,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x38,0x78,0x1C,0x78,0x1F,0xF8,0x07,0xB8,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38, // q
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0xE0,0x0F,0xF0,0x0F,0x10,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x0F,0xF0,0x1C,0x70,0x1C,0x30,0x1F,0x00,0x0F,0xE0,0x03,0xF0,0x00,0x78,0x1C,0x38,0x1E,0x38,0x0F,0xF0,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // s
+0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x07,0xE0,0x0F,0xE0,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0xF0,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // t
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1E,0x78,0x0F,0xF8,0x07,0xB8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // u
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x1C,0x38,0x1C,0x38,0x0C,0x30,0x0E,0x70,0x0E,0x70,0x06,0x60,0x07,0xE0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // v
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC1,0x83,0xE3,0xC7,0xE3,0xC7,0x63,0xC6,0x67,0xE6,0x76,0x6E,0x36,0x6C,0x36,0x6C,0x3E,0x7C,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // w
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x38,0x3C,0x78,0x1E,0xF0,0x0F,0xE0,0x07,0xC0,0x07,0xC0,0x0F,0xE0,0x0E,0xE0,0x1E,0xF0,0x3C,0x78,0x38,0x38,0x30,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // x
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x1C,0x38,0x1C,0x38,0x0C,0x30,0x0E,0x70,0x0E,0x70,0x06,0x60,0x07,0x60,0x07,0xE0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x01,0x80,0x03,0x80,0x03,0x80,0x1F,0x00,0x1E,0x00, // y
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x3F,0xF8,0x00,0x78,0x00,0xF0,0x01,0xE0,0x03,0xC0,0x07,0x80,0x07,0x00,0x0E,0x00,0x1E,0x00,0x3F,0xF8,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // z
+0x00,0x70,0x00,0xF0,0x01,0xF0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x03,0x80,0x07,0x80,0x07,0x80,0x03,0x80,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xF0,0x00,0xF0,0x00,0x70,0x00,0x00,0x00,0x00, // {
+0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00, // |
+0x1C,0x00,0x1E,0x00,0x1F,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x03,0x80,0x03,0xC0,0x03,0xC0,0x03,0x80,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x1F,0x00,0x1E,0x00,0x1C,0x00,0x00,0x00,0x00,0x00, // }
+0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x08,0x3F,0xF8,0x3F,0xF8,0x20,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ~
+};
+#endif
diff --git a/Kernel/platform/platform-rpipico/fonts/Inconsola.h b/Kernel/platform/platform-rpipico/fonts/Inconsola.h
new file mode 100644
index 000000000..0de089480
--- /dev/null
+++ b/Kernel/platform/platform-rpipico/fonts/Inconsola.h
@@ -0,0 +1,292 @@
+// Inconsola2.c
+// Font type : Full (95 characters)
+// Font size : 24x32 pixels
+// Memory usage : 9124 bytes
+const int Inconsola[2281] = {
+0x5F202018,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x3C000018,0x003C0000,0x00003C00,0x3C00003C,0x003C0000,0x00001C00,0x1800001C,
+0x00180000,0x00001800,0x18000018,0x00180000,0x00001800,0x18000018,0x00000000,0x00000000,
+0x18000000,0x003C0000,0x00003C00,0x0000003C,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xE10180C0,0xE0E101E0,0x00E0F101,0x6000E0E0,0xC0E000E0,0x01C0C100,0x03038081,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xE1000000,0x80E10080,0x0080C100,0xC30080C3,0x00C30080,0x1FF0FF0F,0xC301F0FF,
+0x00C30100,0x01008301,0x87010087,0x00860100,0x1FE0FF1F,0x8601E0FF,0x00860300,0x03000603,
+0x0E030006,0x000E0300,0x00000C03,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x18000000,0x00180000,0x0100FE00,0x9B0380FF,0xC01807E0,0x07801807,0x18070018,
+0x00980300,0x0000F803,0x7F0000FC,0xC01F0000,0x00C01900,0x1800E018,0x60180060,0x06601804,
+0x190FE018,0x80FF03C0,0x0000FF01,0x18000018,0x00180000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xC0010000,0x70E00700,0x0E607007,0x300CE030,0x80310CC0,0x0680330E,0xE7070073,
+0x00C60300,0x00000E00,0x1C00000C,0x00180000,0x00003000,0x6300E071,0x38E600F0,0x0118C600,
+0x860118C6,0x38860318,0x06F00303,0x0000E001,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xFC010020,0x00FE0300,0x03008E03,0x07070006,0x00060300,0x03008603,0xDC01008E,
+0x00F80000,0x0300F000,0xB80700F0,0x601C0740,0x0E701C0E,0x070CE00E,0xC0031CC0,0x0E80030C,
+0x1E0FC007,0xF0FC07E0,0x0060F803,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x3C000018,0x003C0000,0x00003C00,0x0C00001C,0x00180000,0x00001800,0x60000030,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000100,0x0F000007,0x001C0080,0x00003800,0x70000070,0x00E00000,0x0100C000,0xC00100C0,
+0x00800100,0x03008001,0x80030080,0x00800300,0x03008003,0x80010080,0x00800100,0x0100C001,
+0xE00000C0,0x00E00000,0x00007000,0x38000078,0x001C0000,0x00000F00,0x03008007,0x00000000,
+0x00008000,0xF00000E0,0x00780000,0x00001C00,0x0700000E,0x00070000,0x00800300,0x01008003,
+0xC00100C0,0x00C00000,0x0000C000,0xE00000C0,0x00E00000,0x0000C000,0xC00100C0,0x00C00100,
+0x03008001,0x80030080,0x00000700,0x1E00000E,0x003C0000,0x00007800,0xC00000F0,0x00800000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x001C0000,0x00001C00,0x1C04001C,
+0x70180710,0x01F0C907,0x3C00C0FF,0x003C0000,0x00007600,0xE3000063,0xC0C10180,0x00C08103,
+0x00008080,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x1C000000,0x001C0000,0x00001C00,0x1C00001C,
+0x001C0000,0x07001C00,0xFF07F0FF,0x001C00F0,0x00001C00,0x1C00001C,0x001C0000,0x00001C00,
+0x0000001C,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00060000,0x00000F00,
+0x0F00000F,0x00070000,0x00000300,0x06000006,0x000C0000,0x00001800,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x03000000,0xFF03E0FF,0x000000E0,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x1E00000C,0x001E0000,0x00001E00,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00004000,0xE00000E0,0x00C00000,0x0100C001,0x80030080,0x00000300,0x07000007,
+0x000E0000,0x00000E00,0x1C00001C,0x00380000,0x00003800,0x70000030,0x00600000,0x0000E000,
+0xC00100C0,0x00800100,0x03008003,0x00070080,0x00000100,0x00000000,0x00000000,0x00000000,
+0x00000000,0xFC000010,0x00FE0100,0x0300C703,0x01078083,0xC0010680,0x0EC00306,0x0E0EC007,
+0xE01C0EC0,0x0CE0180C,0x700EE038,0xE0E00EE0,0x0FC0C00E,0x8007C0C0,0xC00107C0,0x03800107,
+0xC7038083,0x00FE0000,0x00007C00,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x0E000000,0x003E0000,0x0000FE01,0x060000C6,0x00060000,0x00000600,0x06000006,
+0x00060000,0x00000600,0x06000006,0x00060000,0x00000600,0x06000006,0x00060000,0x00000600,
+0x06000006,0x00060000,0x00000600,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xFE000010,0x00FF0100,0x07808703,0x0102C001,0xC00100C0,0x00C00000,0x0100C001,
+0x800300C0,0x00800300,0x0E000007,0x001C0000,0x00003800,0xE0000070,0x00C00100,0x03008003,
+0x00070080,0xC0FF0720,0x00C0FF07,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xFC000000,0x00FF0300,0x02000707,0x01008003,0x80010080,0x00800100,0x07008003,
+0x001E0000,0x00007C00,0x0700007F,0x80030080,0x00C00100,0x0100C001,0xC00100C0,0x02C00102,
+0x87078003,0x00FF0380,0x0000FC01,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x07000000,0x000F0000,0x00000F00,0x3F00001F,0x00370000,0x00006700,0xC7000067,
+0x00C70100,0x03008701,0x07070007,0x00070600,0x0FE0FF0F,0xFF0FE0FF,0x000700E0,0x00000700,
+0x07000007,0x00070000,0x00000700,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xFF030000,0xC0FF03C0,0x03000003,0x00030000,0x00000300,0x07000003,0xFE070000,
+0x00FF0700,0x07808707,0x0100C001,0xC00000C0,0x00E00000,0x0000E000,0xC00000E0,0x0EC00102,
+0x8707C001,0x00FF0380,0x0000FE01,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x7F000008,0xC0FF0000,0x0380C101,0x00038080,0x00000700,0x06000007,0x3E060000,
+0x00FF0600,0x0780C707,0x01078081,0xC00006C0,0x06C00006,0x0006C000,0xC00007C0,0x03C00103,
+0xC301C081,0x00FF0080,0x00007E00,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xFF070000,0xC0FF07C0,0x00C00100,0x03008003,0x00030080,0x00000700,0x0E000007,
+0x000E0000,0x00000C00,0x1C00001C,0x00380000,0x00003800,0x70000038,0x00700000,0x00007000,
+0xE00000E0,0x00E00000,0x0000C001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xFE000018,0x00FF0100,0x03808303,0x01078001,0xC00107C0,0x03C00103,0xC7018083,
+0x00FE0000,0x01007C00,0xC70300FF,0x80030780,0x06C00107,0x000EC000,0xC0000EE0,0x07C00006,
+0x8307C001,0x80FF0380,0x0000FE00,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xFE000010,0x00FF0100,0x07808703,0x01078003,0xC00106C0,0x06C00006,0x0006C000,
+0xC00007C0,0x03C00107,0xFE03C083,0xC0FC00C0,0x00C02000,0x0100C001,0xC00100C0,0x02800300,
+0x0F038003,0x00FE0700,0x0000F801,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00001800,0x3C00003C,0x003C0000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00001800,0x3C00003C,0x003C0000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000C00,0x1E00001E,0x001E0000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000C00,0x1E00001E,0x001E0000,0x00000E00,
+0x0C000006,0x000C0000,0x00001800,0x00000030,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00002000,0xE00300E0,0x00800F00,0xF800003E,
+0x00E00300,0x1E00800F,0x001E0000,0x00800F00,0x0000E003,0x7C0000F0,0x001F0000,0x00C00700,
+0x0000E001,0x200000E0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x07F0FF07,0x0000F0FF,
+0x00000000,0x00000000,0x00000000,0xF0FF0700,0x07F0FF07,0x0000F0FF,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x08000000,0x000E0000,0x00800F00,0x0000E003,0x3E0000F8,
+0x000F0000,0x00C00300,0x0000E000,0xC00300E0,0x00800F00,0x7800003E,0x00F00100,0x1F00C007,
+0x001C0000,0x00001800,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x3E000000,0x80FF0000,0x07C0FF01,0x0003C081,0xE00001E0,0x00E00000,0x0000E000,
+0xE00100E0,0x00C00300,0x07008007,0x000E0000,0x00000C00,0x1C00000C,0x001C0000,0x00000000,
+0x00000000,0x000C0000,0x00001E00,0x1E00001E,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x1C000000,0x00FF0000,0x0380E701,0x0007C081,0x600006E0,0x0C60000E,0x1F0CE003,
+0x603C1CE0,0x1860701C,0x60186060,0x60601C60,0x1CE0701C,0x3F0CE079,0x000E0CE0,0x0700000E,
+0x80030000,0xC0C00300,0x00C0FF00,0x0000807F,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x30000020,0x00300000,0x00003000,0x78000078,0x00780000,0x0000FC00,0xCE0000CC,
+0x00860100,0x01008601,0x03030087,0x80030300,0x0780FF03,0x010680FF,0xC0010EC0,0x0CC0000E,
+0x001CE000,0x70001CE0,0x00700018,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xFE0F0000,0x00FF0F00,0x0C80070C,0x010CC001,0xC0000CC0,0x0CC0010C,0x030CC001,
+0x00FF0F80,0x0F00FE0F,0x030C80FF,0xC0010CC0,0x0CE0000C,0x000CE000,0xE0000CE0,0x0CE0000C,
+0x070CC001,0x80FF0FC0,0x0000FC0F,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x7F000008,0xC0FF0100,0x07E0C103,0x0007E080,0x00000E70,0x0E00000E,0x000C0000,
+0x00000C00,0x0C00000C,0x000C0000,0x00000C00,0x0E00000C,0x000E0000,0x00000700,0x03400007,
+0xC103E080,0x80FF00C0,0x00007F00,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xFC0F0000,0x00FF0F00,0x0C800F0C,0x010C8003,0xC0010CC0,0x0CE0000C,0x000CE000,
+0xE0000CE0,0x0CE0000C,0x000C6000,0xE0000C60,0x0CE0000C,0x000CE000,0xC0010CC0,0x0CC0010C,
+0x0F0C8003,0x00FE0F00,0x0000F80F,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xFF0F0000,0xE0FF0FE0,0x0E00000E,0x000E0000,0x00000E00,0x0E00000E,0x000E0000,
+0x00000E00,0x0F00FF0F,0x000E00FF,0x00000E00,0x0E00000E,0x000E0000,0x00000E00,0x0E00000E,
+0x000E0000,0xC0FF0F00,0x00C0FF0F,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xFF070000,0xC0FF07C0,0x07000007,0x00070000,0x00000700,0x07000007,0x00070000,
+0x00FF0700,0x0700FF07,0x000700FF,0x00000700,0x07000007,0x00070000,0x00000700,0x07000007,
+0x00070000,0x00000700,0x00000007,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x7F000004,0xC0FF0080,0x03E0E001,0x80037080,0x00000720,0x06000007,0x00060000,
+0x00000600,0x0E00000E,0x030E0000,0xF0030EF0,0x06300006,0x00073000,0x30000730,0x03308003,
+0xE00130C0,0xE0FF00F0,0x00803F00,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x000E0000,0xE0000EE0,0x0EE0000E,0x000EE000,0xE0000EE0,0x0EE0000E,0x000EE000,
+0xE0000EE0,0x0FE0FF0F,0x000EE0FF,0xE0000EE0,0x0EE0000E,0x000EE000,0xE0000EE0,0x0EE0000E,
+0x000EE000,0xE0000EE0,0x00E0000E,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xFF070000,0x80FF0780,0x00003000,0x30000030,0x00300000,0x00003000,0x30000030,
+0x00300000,0x00003000,0x30000030,0x00300000,0x00003000,0x30000030,0x00300000,0x00003000,
+0x30000030,0x80FF0700,0x0080FF07,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xFF000000,0xE0FF00E0,0x00000700,0x07000007,0x00070000,0x00000700,0x07000007,
+0x00070000,0x00000700,0x07000007,0x00070000,0x00000700,0x06000007,0x00060000,0x04000E00,
+0x1C0F000E,0x00F80700,0x0000F803,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x02000000,0x010CA000,0x80030CC0,0x0C80070C,0x0E0C0007,0x001C0C00,0x0C00380C,0xE00C0070,
+0x00C00D00,0x0F00E00F,0x700E00E0,0x00380C00,0x0C003C0C,0x0E0C001C,0x000F0C00,0x0C00070C,
+0x010C8003,0xE0010CC0,0x00F0000C,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00070000,0x00000700,0x07000007,0x00070000,0x00000700,0x07000007,0x00070000,
+0x00000700,0x07000007,0x00070000,0x00000700,0x07000007,0x00070000,0x00000700,0x07000007,
+0x00070000,0xE0FF0700,0x00E0FF07,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x000C0000,0xE0000E60,0x0FE0000E,0x010FE001,0xE0830FE0,0x0D60830F,0xC60C60C7,
+0x60EE0C60,0x0C606C0C,0x380C6078,0x60300C60,0x0C60100C,0x000C6000,0x60000C60,0x0C60000C,
+0x000C6000,0x60000C60,0x0060000C,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x000E0000,0xE0000EE0,0x0FE0000F,0x800FE080,0xE0C00DE0,0x0CE0C00D,0x600CE0E0,
+0xE0700CE0,0x0CE0380C,0x1C0CE038,0xE01C0CE0,0x0CE00E0C,0x070CE00E,0xE0030CE0,0x0CE0030C,
+0x010CE001,0xE0000CE0,0x00E0000C,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xFE000000,0x80FF0100,0x07808303,0x000EC001,0xE0000EC0,0x1CE0000C,0x001C6000,
+0x70001C60,0x1C70001C,0x001C7000,0x70001C70,0x0C60001C,0x000E6000,0xE0000EE0,0x07C00107,
+0xC703C081,0x00FF0180,0x0000FE00,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xFF0F0000,0x80FF0F00,0x0EC0030E,0x000EC001,0xE0000EE0,0x0EE0000E,0x000EE000,
+0xC0010EE0,0x0F80FF0F,0xFC0F00FF,0x00000E00,0x0E00000E,0x000E0000,0x00000E00,0x0E00000E,
+0x000E0000,0x00000E00,0x0000000E,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x7F000008,0xC0FF0000,0x03C0C101,0x0007E080,0x70000760,0x0E700006,0x000E3000,
+0x38000E30,0x0E38000E,0x000E3800,0x38000E38,0x0630000E,0x00073000,0x70000730,0x03600003,
+0xE301E080,0x80FF00C0,0x00007E00,0x0C00001C,0x000E0000,0x00F00F00,0x0000F007,0x00000000,
+0x00000000,0xFF0F0000,0x80FF0F00,0x0EC0030E,0x000EC001,0xE0000EE0,0x0EE0000E,0x010EE000,
+0xC0030EC0,0x0F80FF0F,0xFC0F00FF,0x000C0E00,0x0E000E0E,0x070E0007,0x80030E00,0x0E80030E,
+0x010EC001,0xE0000EC0,0x00E0000E,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x7F000000,0xC0FF0080,0x03E0C001,0x80036080,0x00800340,0x03008003,0xE0010080,
+0x00F80000,0x00007E00,0x0700801F,0xE00100C0,0x00F00000,0x00007000,0x70000070,0x07700002,
+0xC107E000,0xC0FF01E0,0x0000FF00,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xFF0F0000,0xF0FF0FF0,0x00001800,0x18000018,0x00180000,0x00001800,0x18000018,
+0x00180000,0x00001800,0x18000018,0x00180000,0x00001800,0x18000018,0x00180000,0x00001800,
+0x18000018,0x00180000,0x00001800,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x000E0000,0x60000C60,0x0C60000C,0x000C6000,0x60000C60,0x0C60000C,0x000C6000,
+0x60000C60,0x0C60000C,0x000C6000,0x60000C60,0x0C60000C,0x000E6000,0xE0000EE0,0x07E0000E,
+0x8307C001,0x80FF03C0,0x0000FE00,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x001C0000,0x60000C70,0x0EE0000E,0x0006E000,0xC00107C0,0x03C00107,0x81038001,
+0x80830380,0x01008301,0xC70100C3,0x00C60000,0x0000E600,0x6C0000EE,0x007C0000,0x00007C00,
+0x38000038,0x00380000,0x00001000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00180000,0x30101830,0x1C30101C,0x181C3018,0x60380C70,0x0C603C0C,0x6C0C603C,
+0x606C0E60,0x06606E0E,0xC606C066,0xC0C606C0,0x07C0C706,0x8307C083,0x808307C0,0x03808303,
+0x01038001,0x80010380,0x00800103,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x000E2000,0xC00107C0,0x03800107,0x83038083,0x00C70100,0x0000CE01,0x7C0000EE,
+0x007C0000,0x00003800,0x7C000038,0x007C0000,0x0000EE00,0xC70100CE,0x80830300,0x07808303,
+0x0107C001,0xE0000EC0,0x00F0000E,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x000F0800,0x70000730,0x03608003,0xC001E080,0xC0C101C0,0x00C0E100,0x730080E3,
+0x00770080,0x00003F00,0x1E00003E,0x001C0000,0x00001C00,0x1C00001C,0x001C0000,0x00001C00,
+0x1C00001C,0x001C0000,0x00001C00,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xFF0F0000,0xE0FF0FE0,0x00C00100,0x0300C001,0x00030080,0x00000700,0x0E00000E,
+0x001C0000,0x00003800,0x70000038,0x00700000,0x0100E000,0xC00100C0,0x00800300,0x07008003,
+0x000E0000,0xE0FF0F10,0x00E0FF0F,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x03000000,0xFF0380FF,0x00000380,0x03000003,0x00030000,0x00000300,0x03000003,0x00030000,
+0x00000300,0x03000003,0x00030000,0x00000300,0x03000003,0x00030000,0x00000300,0x03000003,
+0x00030000,0x00000300,0x03000003,0x00030000,0x80FF0300,0x0080FF03,0x00000000,0x00000000,
+0x00000000,0x80030080,0x00C00100,0x0000C001,0xE00000E0,0x00700000,0x00007000,0x38000038,
+0x00180000,0x00001C00,0x0E00000C,0x00060000,0x00000700,0x03000007,0x80030080,0x00C00100,
+0x0000C001,0xE00000E0,0x00600000,0x00007000,0x20000030,0x00000000,0x00000000,0x00000000,
+0x01000000,0xFF01C0FF,0xC00100C0,0x00C00100,0x0100C001,0xC00100C0,0x00C00100,0x0100C001,
+0xC00100C0,0x00C00100,0x0100C001,0xC00100C0,0x00C00100,0x0100C001,0xC00100C0,0x00C00100,
+0x0100C001,0xC00100C0,0x00C00100,0x0100C001,0xC0FF01C0,0x00C0FF01,0x00000000,0x00000000,
+0x00000000,0x08000000,0x001C0000,0x00001E00,0x7700003E,0x00630000,0x0080E300,0x810180C1,
+0x808003C0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x0F000000,0xFF0FF0FF,0x000000F0,0x00000000,0x00000000,0x00000000,
+0x00000000,0x3C000000,0x00FE0000,0x0100C701,0x83010083,0x00830100,0x01008301,0xFE0000C7,
+0x007C0000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00080000,0x03007F00,0x8101C0FF,
+0xE00001E0,0x00600000,0x00006000,0xE03F0060,0x03E0FF01,0x000760C0,0x60000760,0x07E00007,
+0x8307E001,0x60FF03E0,0x0060FC01,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00070000,0x00000700,0x07000007,0x00070000,0x00040700,0x07003F07,0xC107C07F,
+0xE08007C0,0x07F00007,0x00077000,0x70000770,0x07700007,0x00077000,0x70000770,0x07E08007,
+0xC307E080,0x807F07C0,0x00003F06,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x0300FF00,0x830780FF,
+0x800007C0,0x0C80000E,0x001C0000,0x00001C00,0x1C00001C,0x001C0000,0x00000E00,0x0700000E,
+0xC3078001,0x80FF03C0,0x0000FE00,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0xC00000C0,0x00C00000,0x0000C000,0xC02000C0,0x03C0FC01,0x8307C0FE,
+0xC00107C0,0x0EC0010E,0x000EC001,0xC0000CC0,0x0EC0000C,0x010EC000,0xC0010EC0,0x07C0010E,
+0x8707C003,0xC0FE03C0,0x00E0FC00,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00100000,0x0100FE00,0x830300FF,
+0xC0010780,0x0EC00006,0x000EC000,0xE0FF0FE0,0x0EE0FF0F,0x000E0000,0x00000E00,0x07000006,
+0xC1038000,0x80FF01C0,0x0000FF00,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x0F000000,0xE03F00C0,0x00707800,0xE0002070,0x00E00020,0x0000E000,0xE00000E0,
+0x00FF0F00,0x0000FF0F,0xE00000E0,0x00E00000,0x0000E000,0xE00000E0,0x00E00000,0x0000E000,
+0xE00000E0,0x00E00000,0x0000E000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x20300000,0x03F0FC01,0x0707F0DF,
+0x00030600,0x0E80030E,0x03068003,0x00070700,0x03008F07,0xF80300FE,0x00000700,0x07000006,
+0xFF070000,0xC0FF0300,0x0CE00106,0x000CE000,0xE0001C60,0x0FC0010E,0xFF0380FF,0x00000000,
+0x00000000,0x00070000,0x00000600,0x06000006,0x00060000,0x00000600,0x06000006,0x3F060004,
+0x807F0600,0x07C0C306,0x0107C081,0xC00007C0,0x06C00006,0x0006C000,0xC00006C0,0x06C00006,
+0x0006C000,0xC00006C0,0x00C00006,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x38000010,0x00380000,0x00003800,0x00000000,0x00000000,0x03000000,0xF80300F8,
+0x00380000,0x00003800,0x38000038,0x00380000,0x00003800,0x38000038,0x00380000,0x00003800,
+0x38000038,0x80FF0300,0x0080FF03,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x01008000,0xC00100C0,0x00C00100,0x00000000,0x00000000,0x00C07F00,0x0100C07F,
+0xC00100C0,0x00C00100,0x0100C001,0xC00100C0,0x00C00100,0x0100C001,0xC00100C0,0x00C00100,
+0x0100C001,0xC00100C0,0x00C00100,0x0301C001,0x80870380,0x0000FF03,0x100000FE,0x00000000,
+0x00000000,0x000F0000,0x00000E00,0x0E00000E,0x000E0000,0x00000E00,0x0E00000E,0x030EE001,
+0x00070E80,0x0E000E0E,0x380E001C,0x00700E00,0x0F00F00F,0x3C0F00B8,0x001E0E00,0x0E000E0E,
+0x030E0007,0xC0030E80,0x00E0010E,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0xF8070000,0x00F80700,0x00003800,0x38000038,0x00380000,0x00003800,0x38000038,
+0x00380000,0x00003800,0x38000038,0x00380000,0x00003800,0x38000038,0x00380000,0x00003800,
+0x38000038,0xC0FF0F00,0x00C0FF0F,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x40200000,0x0FF0F90E,0x1E0F70FB,
+0x381C0E30,0x0E381C0E,0x1C0E381C,0x381C0E38,0x0E381C0E,0x1C0E381C,0x381C0E38,0x0E381C0E,
+0x1C0E381C,0x381C0E38,0x00381C0E,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00040000,0x03801F03,0x6103C03F,
+0xE0C003E0,0x03E08003,0x0003E080,0x60000360,0x03600003,0x00036000,0x60000360,0x03600003,
+0x00036000,0x60000360,0x00600003,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00100000,0x0100FE00,0x830300FF,
+0xC0010780,0x0EE0010E,0x000EE000,0xE0000CE0,0x0E60000C,0x000EE000,0xE0000EE0,0x07E0000F,
+0x8303C001,0x00FF0180,0x0000FE00,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00080000,0x0E007F0E,0x830F80FF,
+0xC0010FC0,0x0EE0000E,0x000EE000,0xE0000EE0,0x0E60000E,0x000EE000,0xE0000EE0,0x0FE0000E,
+0x830FC001,0x80FF0E80,0x0E007E0E,0x000E0000,0x00000E00,0x0E00000E,0x000E0000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00080000,0x01707E00,0xC10370FF,
+0xF08003F0,0x07F00007,0x00077000,0x70000670,0x07700006,0x00077000,0xF0000770,0x03F00007,
+0xC303F081,0x70FF01F0,0x00707E00,0x00007000,0x70000070,0x00700000,0x00007000,0x00000070,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00040000,0x06803F07,0xE006C07F,
+0x80C007C0,0x07008007,0x00070000,0x00000700,0x06000006,0x00060000,0x00000600,0x06000006,
+0x00060000,0x00000600,0x00000006,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00100000,0x0100FF00,0x810380FF,
+0x800007C0,0x03800007,0xE0030080,0x00FC0100,0x00007F00,0x0300C00F,0xC00100C0,0x06C00004,
+0x830FC001,0x80FF03C0,0x0000FE01,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00700000,0x00007000,0x60000070,0x00600000,0x0780FF07,0x600080FF,
+0x00600000,0x00006000,0xE00000E0,0x00E00000,0x0000E000,0xE00000E0,0x00E00000,0x0000E000,
+0x78004070,0xE07F00C0,0x00803F00,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x0EC0000E,0x000EC000,
+0xC0000EC0,0x0EC0000E,0x000EC000,0xC0000EC0,0x0EC0000E,0x000EC000,0xC0010EC0,0x07C00107,
+0x8707C003,0xC0FC03C0,0x00E0F801,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x07700007,0x00037000,
+0x60800360,0x01E08003,0xC001C0C0,0xC0C101C0,0x0080E100,0x630080E3,0x00770000,0x00007600,
+0x3E00003E,0x001C0000,0x00003C00,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x18300018,0x38183010,
+0x60381C70,0x0C60380C,0x6C0C603C,0x606C0C60,0x06606C0E,0xC6064066,0xC0C606C0,0x07C0C707,
+0x8303C083,0x808303C0,0x00808103,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x03E00007,0xC101C081,
+0x80C301C0,0x0000E700,0x3E000077,0x003C0000,0x00001C00,0x7E00003E,0x00770000,0x0180E300,
+0x8101C0C1,0xE08003C0,0x00700007,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xE0000E00,0x07E0000E,0x0007C000,
+0xC00103C0,0x03808103,0xC3018081,0x00C30180,0x0000C700,0xE60000E7,0x007E0000,0x00007C00,
+0x3C00003C,0x00380000,0x00003800,0x70000030,0x00600800,0x0F00E01F,0x000200C0,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x07C0FF07,0x0300C0FF,
+0x80070080,0x00000700,0x1C00000E,0x00380000,0x00007800,0xE0000070,0x00C00100,0x07008003,
+0x000F0080,0xE0FF0F20,0x00E0FF0F,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x1F00C007,0x003C00C0,0x00003000,0x70000070,0x00700000,0x00007000,0x70000070,
+0x00700000,0x00006000,0xC00700E0,0x00800700,0x0000C003,0x600000E0,0x00700000,0x00007000,
+0x70000070,0x00700000,0x00007000,0x70000070,0x00780000,0x00003C00,0x0700C01F,0x000000C0,
+0x00000000,0x1C00001C,0x001C0000,0x00001C00,0x1C00001C,0x001C0000,0x00001C00,0x1C00001C,
+0x001C0000,0x00001C00,0x1C00001C,0x001C0000,0x00001C00,0x1C00001C,0x001C0000,0x00001C00,
+0x1C00001C,0x001C0000,0x00001C00,0x1C00001C,0x001C0000,0x00001C00,0x1C00001C,0x00000000,
+0x01000000,0xFE0100F8,0x000F0000,0x00000700,0x03000003,0x80030080,0x00800300,0x03008003,
+0x80030080,0x00800300,0x0000C001,0x780000F8,0x00E00000,0x03008001,0x80030080,0x00800300,
+0x03008003,0x80030080,0x00800300,0x03008003,0x00070080,0x01000F00,0xF80100FE,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+0x00000000,0x00000000,0xE0030000,0x70F80720,0x0CE03F0E,0x0700C00F,0x00000000,0x00000000,
+0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,
+};
diff --git a/Kernel/platform/platform-rpipico/fonts/Misc_12x20_LE.h b/Kernel/platform/platform-rpipico/fonts/Misc_12x20_LE.h
new file mode 100644
index 000000000..b8460e61a
--- /dev/null
+++ b/Kernel/platform/platform-rpipico/fonts/Misc_12x20_LE.h
@@ -0,0 +1,106 @@
+// Misc_12x20_LE.c
+// Font type : Full (95 characters)
+// Font size : 12x20 pixels
+// Memory usage : 2854 bytes
+#ifndef Misc_12x20_LE_h
+#define Misc_12x20_LE_h
+
+const unsigned char Misc_12x20_LE[2854] = {
+0x0C,0x14,0x20,0x5F,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, //
+0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x60,0x06,0x00,0x60,0x06,0x00,0x60,0x02,0x00,0x20,0x00,0x00,0x00,0x06,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00, // !
+0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0xC0,0xCC,0x0C,0xC0,0x44,0x04,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // "
+0x00,0x00,0x00,0x00,0x00,0x48,0x04,0x80,0x48,0x04,0x80,0x48,0x1F,0xC0,0x90,0x09,0x00,0x90,0x3F,0x80,0x90,0x09,0x00,0x90,0x09,0x00,0x90,0x00,0x00,0x00, // #
+0x00,0x00,0x00,0x00,0x00,0x20,0x02,0x00,0xE8,0x11,0x81,0x08,0x10,0x00,0xC0,0x03,0x00,0x08,0x10,0x81,0x88,0x17,0x00,0x20,0x02,0x00,0x20,0x00,0x00,0x00, // $
+0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x01,0x10,0x11,0x01,0x10,0x0E,0x60,0x38,0x0C,0x03,0x38,0x04,0x40,0x44,0x04,0x40,0x38,0x00,0x00,0x00,0x00,0x00,0x00, // %
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x80,0x08,0x00,0x80,0x04,0x00,0xE8,0x11,0x01,0x10,0x13,0x00,0xCC,0x00,0x00,0x00,0x00,0x00,0x00, // &
+0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x30,0x06,0x00,0x40,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // '
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x10,0x01,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x10,0x01,0x00,0x08,0x00,0x00,0x00, // (
+0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x40,0x04,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x40,0x04,0x00,0x80,0x00,0x00,0x00, // )
+0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x20,0x02,0x01,0xFC,0x02,0x00,0x50,0x08,0x80,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // *
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x20,0x02,0x00,0x20,0x3F,0xE0,0x20,0x02,0x00,0x20,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // +
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x30,0x06,0x00,0x40,0x08,0x00,0x00, // ,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00, // .
+0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x40,0x08,0x00,0x80,0x10,0x01,0x00,0x20,0x02,0x00,0x40,0x04,0x00,0x80,0x08,0x01,0x00,0x10,0x02,0x00,0x20,0x00,0x00, //
+0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x88,0x10,0x41,0x04,0x10,0x41,0x04,0x10,0x41,0x04,0x10,0x41,0x04,0x08,0x80,0x70,0x00,0x00,0x00,0x00,0x00,0x00, // 0
+0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x01,0xA0,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x00, // 1
+0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x88,0x10,0x41,0x04,0x00,0x40,0x08,0x01,0x00,0x20,0x04,0x00,0x84,0x10,0x43,0xFC,0x00,0x00,0x00,0x00,0x00,0x00, // 2
+0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x01,0x08,0x00,0x40,0x04,0x00,0x80,0x70,0x00,0x80,0x04,0x00,0x40,0x04,0x10,0x80,0xF0,0x00,0x00,0x00,0x00,0x00,0x00, // 3
+0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x28,0x02,0x80,0x48,0x04,0x80,0x88,0x08,0x81,0x08,0x1F,0xC0,0x08,0x00,0x80,0x3C,0x00,0x00,0x00,0x00,0x00,0x00, // 4
+0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x81,0x00,0x10,0x01,0x00,0x17,0x01,0x88,0x00,0x40,0x04,0x00,0x40,0x04,0x30,0x80,0xF0,0x00,0x00,0x00,0x00,0x00,0x00, // 5
+0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0xC0,0x08,0x01,0x00,0x10,0x01,0x70,0x18,0x81,0x04,0x10,0x41,0x04,0x08,0x80,0x70,0x00,0x00,0x00,0x00,0x00,0x00, // 6
+0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xC1,0x04,0x00,0x40,0x04,0x00,0x80,0x08,0x00,0x80,0x08,0x01,0x00,0x10,0x01,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00, // 7
+0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x88,0x10,0x41,0x04,0x08,0x80,0x70,0x08,0x81,0x04,0x10,0x41,0x04,0x08,0x80,0x70,0x00,0x00,0x00,0x00,0x00,0x00, // 8
+0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x88,0x10,0x41,0x04,0x10,0x40,0x8C,0x07,0x40,0x04,0x00,0x40,0x08,0x01,0x80,0xE0,0x00,0x00,0x00,0x00,0x00,0x00, // 9
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00, // :
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x60,0x0C,0x00,0x80,0x10,0x00,0x00, // ;
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x18,0x06,0x01,0x80,0x60,0x01,0x80,0x06,0x00,0x18,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // <
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFE,0x00,0x00,0x00,0x3F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // =
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x01,0x80,0x06,0x00,0x18,0x00,0x60,0x18,0x06,0x01,0x80,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // >
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x10,0x41,0x04,0x00,0x40,0x04,0x03,0x80,0x20,0x02,0x00,0x00,0x03,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00, // ?
+0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x88,0x10,0x41,0x04,0x11,0xC1,0x24,0x12,0x41,0x24,0x11,0xE1,0x00,0x10,0x00,0x86,0x07,0x80,0x00,0x00,0x00,0x00, // @
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x02,0x00,0x50,0x05,0x00,0x88,0x08,0x81,0x04,0x1F,0xC2,0x02,0x20,0x27,0x8F,0x00,0x00,0x00,0x00,0x00,0x00, // A
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF0,0x10,0x81,0x04,0x10,0x41,0x08,0x1F,0x81,0x04,0x10,0x21,0x02,0x10,0x43,0xF8,0x00,0x00,0x00,0x00,0x00,0x00, // B
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7A,0x18,0x61,0x02,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x01,0x02,0x18,0x40,0x78,0x00,0x00,0x00,0x00,0x00,0x00, // C
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF0,0x10,0xC1,0x04,0x10,0x21,0x02,0x10,0x21,0x02,0x10,0x21,0x04,0x10,0xC3,0xF0,0x00,0x00,0x00,0x00,0x00,0x00, // D
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFC,0x10,0x41,0x04,0x10,0x41,0x20,0x1E,0x01,0x20,0x10,0x41,0x04,0x10,0x43,0xFC,0x00,0x00,0x00,0x00,0x00,0x00, // E
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFC,0x10,0x41,0x04,0x10,0x41,0x20,0x1E,0x01,0x20,0x10,0x01,0x00,0x10,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, // F
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7A,0x18,0x61,0x02,0x20,0x02,0x00,0x20,0x02,0x0F,0x20,0x21,0x02,0x18,0x40,0x78,0x00,0x00,0x00,0x00,0x00,0x00, // G
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x8E,0x10,0x41,0x04,0x10,0x41,0x04,0x1F,0xC1,0x04,0x10,0x41,0x04,0x10,0x43,0x8E,0x00,0x00,0x00,0x00,0x00,0x00, // H
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFC,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x00, // I
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x80,0x08,0x00,0x80,0x08,0x00,0x82,0x08,0x20,0x82,0x08,0x11,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00, // J
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xCF,0x10,0x41,0x08,0x11,0x01,0x20,0x16,0x01,0x90,0x10,0x81,0x08,0x10,0x43,0xC7,0x00,0x00,0x00,0x00,0x00,0x00, // K
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0x08,0x00,0x80,0x08,0x00,0x80,0x08,0x00,0x80,0x08,0x20,0x82,0x08,0x23,0xFE,0x00,0x00,0x00,0x00,0x00,0x00, // L
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x07,0x30,0x62,0x8A,0x28,0xA2,0x52,0x25,0x22,0x22,0x22,0x22,0x02,0x20,0x27,0x8F,0x00,0x00,0x00,0x00,0x00,0x00, // M
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x9E,0x18,0x41,0x44,0x14,0x41,0x24,0x12,0x41,0x14,0x11,0x41,0x0C,0x10,0xC3,0xC4,0x00,0x00,0x00,0x00,0x00,0x00, // N
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x18,0xC1,0x04,0x20,0x22,0x02,0x20,0x22,0x02,0x20,0x21,0x04,0x18,0xC0,0x70,0x00,0x00,0x00,0x00,0x00,0x00, // O
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF8,0x10,0x41,0x02,0x10,0x21,0x04,0x1F,0x81,0x00,0x10,0x01,0x00,0x10,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00, // P
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x18,0xC1,0x04,0x20,0x22,0x02,0x20,0x22,0x02,0x20,0x21,0x04,0x18,0xC0,0x70,0x0E,0x21,0x1C,0x00,0x00,0x00, // Q
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF8,0x10,0x41,0x02,0x10,0x21,0x04,0x1F,0x81,0x10,0x10,0x81,0x08,0x10,0x43,0xC3,0x00,0x00,0x00,0x00,0x00,0x00, // R
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF4,0x10,0xC2,0x04,0x20,0x01,0x00,0x0F,0x00,0x08,0x00,0x42,0x04,0x30,0x82,0xF0,0x00,0x00,0x00,0x00,0x00,0x00, // S
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFE,0x22,0x22,0x22,0x22,0x20,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00, // T
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x9E,0x20,0x42,0x04,0x20,0x42,0x04,0x20,0x42,0x04,0x20,0x42,0x04,0x10,0x80,0xF0,0x00,0x00,0x00,0x00,0x00,0x00, // U
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x8F,0x20,0x22,0x02,0x10,0x41,0x04,0x08,0x80,0x88,0x05,0x00,0x50,0x02,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00, // V
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x8F,0x20,0x22,0x22,0x22,0x22,0x22,0x15,0x41,0x54,0x15,0x41,0x54,0x08,0x80,0x88,0x00,0x00,0x00,0x00,0x00,0x00, // W
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x8E,0x10,0x40,0x88,0x08,0x80,0x50,0x02,0x00,0x50,0x08,0x80,0x88,0x10,0x43,0x8E,0x00,0x00,0x00,0x00,0x00,0x00, // X
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x8E,0x10,0x40,0x88,0x08,0x80,0x50,0x05,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00, // Y
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFC,0x10,0x41,0x04,0x00,0x80,0x10,0x02,0x00,0x40,0x08,0x01,0x04,0x10,0x41,0xFC,0x00,0x00,0x00,0x00,0x00,0x00, // Z
+0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x03,0x80,0x00, // [
+0x00,0x00,0x00,0x00,0x01,0x00,0x10,0x00,0x80,0x08,0x00,0x40,0x04,0x00,0x20,0x02,0x00,0x10,0x01,0x00,0x08,0x00,0x80,0x04,0x00,0x40,0x02,0x00,0x20,0x00, // backslash
+0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x0E,0x00,0x00, // ]
+0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x50,0x08,0x81,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ^
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF, // _
+0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x88,0x08,0x80,0x88,0x08,0x80,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // `
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x01,0x08,0x00,0x81,0xF8,0x20,0x82,0x08,0x21,0x81,0xEE,0x00,0x00,0x00,0x00,0x00,0x00, // a
+0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x01,0x00,0x10,0x01,0x00,0x17,0x81,0x84,0x10,0x21,0x02,0x10,0x21,0x02,0x18,0x43,0x78,0x00,0x00,0x00,0x00,0x00,0x00, // b
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x41,0x0C,0x20,0x42,0x00,0x20,0x02,0x00,0x10,0xC0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00, // c
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x04,0x00,0x40,0x04,0x0F,0x41,0x0C,0x20,0x42,0x04,0x20,0x42,0x04,0x10,0xC0,0xF6,0x00,0x00,0x00,0x00,0x00,0x00, // d
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x01,0x08,0x20,0x43,0xFC,0x20,0x02,0x00,0x10,0xC0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00, // e
+0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x20,0x04,0x00,0x40,0x1F,0xC0,0x40,0x04,0x00,0x40,0x04,0x00,0x40,0x04,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x00, // f
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x61,0x0C,0x20,0x42,0x04,0x20,0x42,0x04,0x10,0xC0,0xF4,0x00,0x40,0x04,0x00,0x81,0xF0, // g
+0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x01,0x00,0x10,0x01,0x00,0x17,0x81,0x84,0x10,0x41,0x04,0x10,0x41,0x04,0x10,0x43,0x8E,0x00,0x00,0x00,0x00,0x00,0x00, // h
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x02,0x00,0x00,0x0E,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x00, // i
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x00,0x00,0x1F,0x80,0x08,0x00,0x80,0x08,0x00,0x80,0x08,0x00,0x80,0x08,0x00,0x80,0x08,0x01,0x01,0xE0, // j
+0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x01,0x00,0x10,0x01,0x00,0x13,0xC1,0x10,0x12,0x01,0xC0,0x12,0x01,0x10,0x10,0x83,0x1E,0x00,0x00,0x00,0x00,0x00,0x00, // k
+0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x00, // l
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0xC3,0x32,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x27,0x33,0x00,0x00,0x00,0x00,0x00,0x00, // m
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x81,0x84,0x10,0x41,0x04,0x10,0x41,0x04,0x10,0x43,0x8E,0x00,0x00,0x00,0x00,0x00,0x00, // n
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x01,0x08,0x20,0x42,0x04,0x20,0x42,0x04,0x10,0x80,0xF0,0x00,0x00,0x00,0x00,0x00,0x00, // o
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x81,0x84,0x10,0x21,0x02,0x10,0x21,0x02,0x18,0x41,0x78,0x10,0x01,0x00,0x10,0x03,0xC0, // p
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x61,0x0C,0x20,0x42,0x04,0x20,0x42,0x04,0x10,0xC0,0xF4,0x00,0x40,0x04,0x00,0x40,0x1E, // q
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3B,0x80,0xC4,0x08,0x00,0x80,0x08,0x00,0x80,0x08,0x03,0xF8,0x00,0x00,0x00,0x00,0x00,0x00, // r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x41,0x0C,0x10,0x40,0xE0,0x01,0x81,0x04,0x18,0x41,0x78,0x00,0x00,0x00,0x00,0x00,0x00, // s
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x04,0x00,0x40,0x1F,0xC0,0x40,0x04,0x00,0x40,0x04,0x00,0x40,0x04,0x20,0x3C,0x00,0x00,0x00,0x00,0x00,0x00, // t
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0xC1,0x04,0x10,0x41,0x04,0x10,0x41,0x04,0x10,0xC0,0xF6,0x00,0x00,0x00,0x00,0x00,0x00, // u
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xE1,0x04,0x08,0x80,0x88,0x05,0x00,0x50,0x02,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00, // v
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xE1,0x04,0x12,0x41,0x24,0x15,0x41,0x54,0x08,0x80,0x88,0x00,0x00,0x00,0x00,0x00,0x00, // w
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x39,0xC1,0x08,0x09,0x00,0x60,0x06,0x00,0x90,0x10,0x83,0x9C,0x00,0x00,0x00,0x00,0x00,0x00, // x
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0xE1,0x04,0x10,0x40,0x88,0x08,0x80,0x50,0x05,0x00,0x20,0x02,0x00,0x40,0x04,0x03,0xE0, // y
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xC1,0x04,0x10,0x80,0x10,0x02,0x00,0x44,0x08,0x41,0xFC,0x00,0x00,0x00,0x00,0x00,0x00, // z
+0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0xC0,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x01,0x80,0x00, // {
+0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x00, // |
+0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x18,0x02,0x00,0x20,0x02,0x00,0x20,0x02,0x00,0x20,0x0C,0x00,0x00, // }
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x26,0x40,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ~
+};
+#endif
diff --git a/Kernel/platform/platform-rpipico/fonts/arial_bold.h b/Kernel/platform/platform-rpipico/fonts/arial_bold.h
new file mode 100644
index 000000000..14a5799fd
--- /dev/null
+++ b/Kernel/platform/platform-rpipico/fonts/arial_bold.h
@@ -0,0 +1,111 @@
+// arial_bold.c
+// Font type : Full (95 characters)
+// Font size : 16x16 pixels
+// Memory usage : 3044 bytes
+// Submitted by : MBWK
+
+
+
+const unsigned char arial_bold[3044] ={
+0x10,0x10,0x20,0x5F,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // <space>
+0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00, // !
+0x00,0x00,0x00,0x00,0x06,0x60,0x06,0x60,0x06,0x60,0x06,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // "
+0x00,0x00,0x00,0x00,0x03,0x60,0x03,0x60,0x06,0xC0,0x3F,0xF0,0x3F,0xF0,0x06,0xC0,0x0D,0x80,0x3F,0xF0,0x3F,0xF0,0x0D,0x80,0x1B,0x00,0x1B,0x00,0x00,0x00,0x00,0x00, // #
+0x00,0x00,0x01,0x00,0x03,0x80,0x07,0xC0,0x0D,0x60,0x0D,0x00,0x0F,0x00,0x07,0x80,0x03,0xC0,0x01,0xE0,0x0D,0x60,0x0D,0x60,0x07,0xC0,0x03,0x80,0x01,0x00,0x00,0x00, // $
+0x00,0x00,0x00,0x00,0x3C,0x18,0x66,0x30,0x66,0x30,0x66,0x60,0x66,0xC0,0x3C,0xC0,0x01,0x9E,0x01,0xB3,0x03,0x33,0x03,0x33,0x06,0x33,0x0C,0x1E,0x00,0x00,0x00,0x00, // %
+0x00,0x00,0x00,0x00,0x07,0xC0,0x0F,0xE0,0x0C,0x60,0x0C,0x60,0x07,0xC0,0x07,0x80,0x0D,0x90,0x19,0xD8,0x18,0xF0,0x18,0x78,0x0F,0xFC,0x07,0x88,0x00,0x00,0x00,0x00, // &
+0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // '
+0x00,0x00,0x01,0x80,0x03,0x00,0x03,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x03,0x00,0x03,0x00,0x01,0x80,0x00,0x00,0x00,0x00, // (
+0x00,0x00,0x06,0x00,0x03,0x00,0x03,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x03,0x00,0x03,0x00,0x06,0x00,0x00,0x00,0x00,0x00, // )
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x33,0x98,0x3F,0xF8,0x07,0xC0,0x07,0xC0,0x0E,0xE0,0x1C,0x70,0x04,0x40,0x00,0x00,0x00,0x00,0x00,0x00, // *
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x07,0xF8,0x07,0xF8,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, // +
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x01,0x00,0x01,0x00,0x02,0x00,0x00,0x00, // ,
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // -
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // .
+0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00, // /
+
+0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xE0,0x0E,0x70,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0E,0x70,0x07,0xE0,0x03,0xC0,0x00,0x00,0x00,0x00, // 0
+0x00,0x00,0x00,0x00,0x01,0x80,0x03,0x80,0x07,0x80,0x0D,0x80,0x09,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00, // 1
+0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xE0,0x0E,0x30,0x0C,0x30,0x00,0x30,0x00,0x60,0x00,0xE0,0x01,0xC0,0x03,0x80,0x06,0x00,0x0F,0xF0,0x0F,0xF0,0x00,0x00,0x00,0x00, // 2
+0x00,0x00,0x00,0x00,0x03,0xE0,0x07,0xF0,0x0E,0x30,0x00,0x30,0x01,0xE0,0x01,0xE0,0x00,0x70,0x00,0x30,0x0C,0x30,0x0E,0x70,0x07,0xE0,0x03,0xC0,0x00,0x00,0x00,0x00, // 3
+0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xE0,0x00,0xE0,0x01,0xE0,0x03,0x60,0x03,0x60,0x06,0x60,0x0C,0x60,0x0F,0xF0,0x0F,0xF0,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00, // 4
+0x00,0x00,0x00,0x00,0x07,0xE0,0x07,0xE0,0x06,0x00,0x0C,0x00,0x0F,0xC0,0x0F,0xE0,0x0C,0x70,0x00,0x30,0x0C,0x30,0x0E,0x70,0x07,0xE0,0x03,0xC0,0x00,0x00,0x00,0x00, // 5
+0x00,0x00,0x00,0x00,0x03,0xE0,0x07,0xF0,0x06,0x30,0x0C,0x00,0x0D,0xC0,0x0F,0xE0,0x0E,0x70,0x0C,0x30,0x0C,0x30,0x06,0x30,0x07,0xE0,0x03,0xC0,0x00,0x00,0x00,0x00, // 6
+0x00,0x00,0x00,0x00,0x0F,0xF0,0x0F,0xF0,0x00,0x60,0x00,0xC0,0x00,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x03,0x80,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00, // 7
+0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xE0,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x07,0xE0,0x07,0xE0,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x07,0xE0,0x03,0xC0,0x00,0x00,0x00,0x00, // 8
+0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xE0,0x0C,0x60,0x0C,0x30,0x0C,0x30,0x0E,0x70,0x07,0xF0,0x03,0xB0,0x00,0x30,0x0C,0x60,0x0F,0xE0,0x07,0xC0,0x00,0x00,0x00,0x00, // 9
+0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // :
+0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x00,0x80,0x00,0x80,0x01,0x00,0x00,0x00, // ;
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0xE0,0x03,0xC0,0x0F,0x00,0x1C,0x00,0x0F,0x00,0x03,0xC0,0x00,0xE0,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00, // <
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,0x1F,0xF0,0x00,0x00,0x00,0x00,0x1F,0xF0,0x1F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // =
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x0E,0x00,0x07,0x80,0x01,0xE0,0x00,0x70,0x01,0xE0,0x07,0x80,0x0E,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // >
+0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xE0,0x0E,0x30,0x0C,0x30,0x00,0x70,0x00,0xE0,0x01,0xC0,0x01,0x80,0x01,0x80,0x00,0x00,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00, // ?
+
+0x00,0x00,0x07,0xC0,0x0C,0x30,0x13,0x78,0x17,0xE8,0x2C,0xC8,0x2C,0xC8,0x2C,0xC8,0x2F,0xD0,0x26,0xE0,0x10,0x08,0x08,0x10,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00, // @
+0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x0C,0x60,0x0C,0x60,0x0F,0xE0,0x1F,0xF0,0x18,0x30,0x18,0x30,0x30,0x18,0x00,0x00,0x00,0x00, // A
+0x00,0x00,0x00,0x00,0x1F,0xE0,0x1F,0xF0,0x18,0x30,0x18,0x30,0x18,0x30,0x1F,0xE0,0x1F,0xF0,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0xF0,0x1F,0xE0,0x00,0x00,0x00,0x00, // B
+0x00,0x00,0x00,0x00,0x03,0xE0,0x0F,0xF0,0x0C,0x38,0x1C,0x10,0x18,0x00,0x18,0x00,0x18,0x00,0x18,0x00,0x1C,0x10,0x0C,0x38,0x0F,0xF0,0x03,0xE0,0x00,0x00,0x00,0x00, // C
+0x00,0x00,0x00,0x00,0x1F,0xC0,0x1F,0xF0,0x18,0x30,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x30,0x1F,0xF0,0x1F,0xC0,0x00,0x00,0x00,0x00, // D
+0x00,0x00,0x00,0x00,0x0F,0xF8,0x0F,0xF8,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0F,0xF8,0x0F,0xF8,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0F,0xF8,0x0F,0xF8,0x00,0x00,0x00,0x00, // E
+0x00,0x00,0x00,0x00,0x0F,0xF0,0x0F,0xF0,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0F,0xE0,0x0F,0xE0,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00, // F
+0x00,0x00,0x00,0x00,0x07,0xE0,0x1F,0xF0,0x18,0x38,0x38,0x10,0x30,0x00,0x30,0x00,0x30,0xF8,0x30,0xF8,0x38,0x18,0x18,0x38,0x1F,0xF8,0x07,0xE0,0x00,0x00,0x00,0x00, // G
+0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1F,0xF8,0x1F,0xF8,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00, // H
+0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00, // I
+0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x0C,0x30,0x0E,0x70,0x07,0xE0,0x03,0xC0,0x00,0x00,0x00,0x00, // J
+0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x30,0x18,0x60,0x18,0xC0,0x19,0x80,0x1B,0xC0,0x1E,0xC0,0x1C,0x60,0x18,0x70,0x18,0x30,0x18,0x18,0x18,0x18,0x00,0x00,0x00,0x00, // K
+0x00,0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0F,0xF0,0x0F,0xF0,0x00,0x00,0x00,0x00, // L
+0x00,0x00,0x00,0x00,0x38,0x38,0x38,0x38,0x3C,0x78,0x3C,0x78,0x34,0x58,0x36,0xD8,0x36,0xD8,0x36,0xD8,0x33,0x98,0x33,0x98,0x33,0x98,0x31,0x18,0x00,0x00,0x00,0x00, // M
+0x00,0x00,0x00,0x00,0x18,0x18,0x1C,0x18,0x1E,0x18,0x1E,0x18,0x1B,0x18,0x19,0x98,0x19,0x98,0x18,0xD8,0x18,0x78,0x18,0x78,0x18,0x38,0x18,0x18,0x00,0x00,0x00,0x00, // N
+0x00,0x00,0x00,0x00,0x07,0xC0,0x1F,0xF0,0x18,0x30,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x18,0x30,0x1F,0xF0,0x07,0xC0,0x00,0x00,0x00,0x00, // O
+
+0x00,0x00,0x00,0x00,0x0F,0xE0,0x0F,0xF0,0x0C,0x38,0x0C,0x18,0x0C,0x38,0x0F,0xF0,0x0F,0xE0,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00, // P
+0x00,0x00,0x00,0x00,0x07,0xC0,0x1F,0xF0,0x18,0x30,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x31,0xB8,0x18,0xF0,0x1F,0xF0,0x07,0xB0,0x00,0x18,0x00,0x00, // Q
+0x00,0x00,0x00,0x00,0x1F,0xE0,0x1F,0xF0,0x18,0x38,0x18,0x18,0x18,0x38,0x1F,0xF0,0x1F,0xC0,0x18,0xE0,0x18,0x70,0x18,0x30,0x18,0x38,0x18,0x1C,0x00,0x00,0x00,0x00, // R
+0x00,0x00,0x00,0x00,0x03,0xE0,0x07,0xF0,0x0E,0x38,0x0C,0x18,0x0F,0x00,0x07,0xE0,0x01,0xF0,0x00,0x38,0x0C,0x18,0x0E,0x38,0x07,0xF0,0x03,0xE0,0x00,0x00,0x00,0x00, // S
+0x00,0x00,0x00,0x00,0x1F,0xF8,0x1F,0xF8,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00, // T
+0x00,0x00,0x00,0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x1C,0x38,0x0F,0xF0,0x07,0xE0,0x00,0x00,0x00,0x00, // U
+0x00,0x00,0x00,0x00,0x30,0x18,0x18,0x30,0x18,0x30,0x18,0x30,0x0C,0x60,0x0C,0x60,0x0E,0xE0,0x06,0xC0,0x06,0xC0,0x03,0x80,0x03,0x80,0x03,0x80,0x00,0x00,0x00,0x00, // V
+0x00,0x00,0x00,0x00,0x31,0xC6,0x31,0xC6,0x31,0xC6,0x1B,0x6C,0x1B,0x6C,0x1B,0x6C,0x1B,0x6C,0x1B,0x6C,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x00,0x00,0x00,0x00, // W
+0x00,0x00,0x00,0x00,0x18,0x30,0x1C,0x70,0x0C,0x60,0x06,0xC0,0x07,0xC0,0x03,0x80,0x03,0x80,0x07,0xC0,0x06,0xC0,0x0C,0x60,0x1C,0x70,0x18,0x30,0x00,0x00,0x00,0x00, // X
+0x00,0x00,0x00,0x00,0x18,0x18,0x1C,0x38,0x0C,0x30,0x06,0x60,0x06,0x60,0x03,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00, // Y
+0x00,0x00,0x00,0x00,0x07,0xF8,0x07,0xF8,0x00,0x30,0x00,0x60,0x00,0xE0,0x00,0xC0,0x01,0x80,0x03,0x80,0x03,0x00,0x06,0x00,0x0F,0xF8,0x0F,0xF8,0x00,0x00,0x00,0x00, // Z
+0x00,0x00,0x03,0xC0,0x03,0xC0,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0xC0,0x03,0xC0,0x00,0x00, // [
+0x00,0x00,0x00,0x00,0x03,0x00,0x03,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00, // <backslash>
+0x00,0x00,0x03,0xC0,0x03,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x03,0xC0,0x03,0xC0,0x00,0x00, // ]
+0x00,0x00,0x01,0x80,0x03,0xC0,0x03,0xC0,0x06,0x60,0x06,0x60,0x06,0x60,0x0C,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ^
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x00,0x00, // _
+
+0x00,0x00,0x00,0x00,0x01,0x80,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // `
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x0F,0xE0,0x0C,0x60,0x01,0xE0,0x07,0xE0,0x0E,0x60,0x0C,0x60,0x0F,0xE0,0x07,0xB0,0x00,0x00,0x00,0x00,0x00,0x00, // a
+0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0D,0xC0,0x0F,0xE0,0x0E,0x70,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0E,0x70,0x0F,0xE0,0x0D,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, // b
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xE0,0x0E,0x60,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0E,0x60,0x07,0xE0,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, // c
+0x00,0x00,0x00,0x30,0x00,0x30,0x00,0x30,0x03,0xB0,0x07,0xF0,0x0E,0x70,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0E,0x70,0x07,0xF0,0x03,0xB0,0x00,0x00,0x00,0x00,0x00,0x00, // d
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x07,0xC0,0x0C,0x60,0x0F,0xE0,0x0F,0xE0,0x0C,0x00,0x0E,0x60,0x07,0xC0,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00, // e
+0x00,0x00,0x03,0xC0,0x07,0xC0,0x06,0x00,0x0F,0x80,0x0F,0x80,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // f
+0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x60,0x0F,0xE0,0x1C,0xE0,0x18,0x60,0x18,0x60,0x18,0x60,0x1C,0xE0,0x0F,0xE0,0x07,0x60,0x18,0x60,0x1F,0xE0,0x0F,0xC0,0x00,0x00, // g
+0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0D,0xE0,0x0F,0xF0,0x0E,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x00,0x00,0x00,0x00,0x00,0x00, // h
+0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00, // i
+0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x07,0x80,0x07,0x00, // j
+0x00,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x60,0x0C,0xC0,0x0D,0x80,0x0F,0x80,0x0F,0xC0,0x0E,0xC0,0x0C,0xC0,0x0C,0x60,0x0C,0x60,0x00,0x00,0x00,0x00,0x00,0x00, // k
+0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00, // l
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x37,0x38,0x3F,0xFC,0x39,0xCC,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x31,0x8C,0x00,0x00,0x00,0x00,0x00,0x00, // m
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0xE0,0x0F,0xF0,0x0E,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x00,0x00,0x00,0x00,0x00,0x00, // n
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xE0,0x0E,0x70,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0E,0x70,0x07,0xE0,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, // o
+
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0D,0xC0,0x0F,0xE0,0x0E,0x70,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0E,0x70,0x0F,0xE0,0x0D,0xC0,0x0C,0x00,0x0C,0x00,0x0C,0x00, // p
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xB0,0x07,0xF0,0x0E,0x70,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0E,0x70,0x07,0xF0,0x03,0xB0,0x00,0x30,0x00,0x30,0x00,0x30, // q
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x70,0x03,0xF0,0x03,0x80,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // r
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x0F,0xE0,0x0C,0x60,0x0F,0x00,0x07,0xC0,0x00,0xE0,0x0C,0x60,0x0F,0xE0,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, // s
+0x00,0x00,0x01,0x00,0x03,0x00,0x03,0x00,0x07,0xC0,0x07,0xC0,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0xC0,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, // t
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x70,0x0F,0xF0,0x07,0xB0,0x00,0x00,0x00,0x00,0x00,0x00, // u
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x30,0x06,0x30,0x06,0x30,0x03,0x60,0x03,0x60,0x03,0x60,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00, // v
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0xC6,0x31,0xC6,0x19,0xCC,0x1B,0x6C,0x1B,0x6C,0x1B,0x6C,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x00,0x00,0x00,0x00,0x00,0x00, // w
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x30,0x07,0x70,0x03,0x60,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x03,0x60,0x07,0x70,0x06,0x30,0x00,0x00,0x00,0x00,0x00,0x00, // x
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x18,0x0C,0x18,0x06,0x30,0x06,0x30,0x03,0x60,0x03,0x60,0x03,0xE0,0x01,0xC0,0x01,0xC0,0x01,0x80,0x07,0x80,0x07,0x00, // y
+0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF8,0x03,0xF8,0x00,0x30,0x00,0x70,0x00,0xE0,0x01,0xC0,0x01,0x80,0x03,0xF8,0x03,0xF8,0x00,0x00,0x00,0x00,0x00,0x00, // z
+0x01,0xC0,0x03,0xC0,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x0E,0x00,0x0E,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0x00,0x03,0xC0,0x01,0xC0,0x00,0x00, // {
+0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80, // |
+0x03,0x80,0x03,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x70,0x00,0x70,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x03,0xC0,0x03,0x80,0x00,0x00, // }
+0x00,0x00,0x00,0x00,0x07,0x88,0x0F,0xF8,0x08,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // ~
+};
diff --git a/Kernel/platform/platform-rpipico/fonts/font1.h b/Kernel/platform/platform-rpipico/fonts/font1.h
new file mode 100644
index 000000000..749ad8809
--- /dev/null
+++ b/Kernel/platform/platform-rpipico/fonts/font1.h
@@ -0,0 +1,233 @@
+// font1.c
+// Font type : Full (223 characters)
+// Font size : 8x12 pixels
+// Memory usage : 2680 bytes
+// Font adapted from: http://www.rinkydinkelectronics.com/r_fonts.php
+
+const unsigned char font1[] ={
+ 0x08,0x0C,0x20,0xE0,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(32)
+ 0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x10,0x10,0x00,0x00, // Chr$(33) !
+ 0x00,0x24,0x24,0x24,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(34) "
+ 0x00,0x24,0x24,0x7E,0x24,0x24,0x24,0x7E,0x24,0x24,0x00,0x00, // Chr$(35) #
+ 0x00,0x10,0x3C,0x52,0x50,0x3C,0x12,0x52,0x3C,0x10,0x00,0x00, // Chr$(36) $
+ 0x00,0x00,0x62,0x62,0x04,0x08,0x10,0x20,0x46,0x46,0x00,0x00, // Chr$(37) %
+ 0x00,0x00,0x38,0x44,0x44,0x38,0x4A,0x44,0x4C,0x3A,0x00,0x00, // Chr$(38) &
+ 0x00,0x08,0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(39) '
+ 0x00,0x0C,0x10,0x20,0x20,0x20,0x20,0x20,0x20,0x10,0x0C,0x00, // Chr$(40) (
+ 0x00,0x30,0x08,0x04,0x04,0x04,0x04,0x04,0x04,0x08,0x30,0x00, // Chr$(41) )
+ 0x00,0x42,0x24,0x18,0x7E,0x18,0x24,0x42,0x00,0x00,0x00,0x00, // Chr$(42) *
+ 0x00,0x00,0x00,0x10,0x10,0x7C,0x10,0x10,0x00,0x00,0x00,0x00, // Chr$(43) +
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x08,0x10,0x00, // Chr$(44) ,
+ 0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(45) -
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00, // Chr$(46) .
+ 0x00,0x02,0x02,0x04,0x04,0x08,0x10,0x20,0x20,0x40,0x40,0x00, // Chr$(47) /
+ 0x00,0x3C,0x46,0x4E,0x4A,0x5A,0x52,0x72,0x62,0x3C,0x00,0x00, // Chr$(48) 0
+ 0x00,0x10,0x30,0x50,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00, // Chr$(49) 1
+ 0x00,0x3C,0x42,0x02,0x02,0x04,0x08,0x10,0x20,0x7E,0x00,0x00, // Chr$(50) 2
+ 0x00,0x3C,0x42,0x02,0x02,0x1C,0x02,0x02,0x42,0x3C,0x00,0x00, // Chr$(51) 3
+ 0x00,0x04,0x44,0x44,0x44,0x7E,0x04,0x04,0x04,0x04,0x00,0x00, // Chr$(52) 4
+ 0x00,0x7E,0x40,0x40,0x7C,0x02,0x02,0x02,0x42,0x3C,0x00,0x00, // Chr$(53) 5
+ 0x00,0x18,0x20,0x40,0x40,0x7C,0x42,0x42,0x42,0x3C,0x00,0x00, // Chr$(54) 6
+ 0x00,0x7E,0x42,0x02,0x02,0x04,0x08,0x10,0x10,0x10,0x00,0x00, // Chr$(55) 7
+ 0x00,0x3C,0x42,0x42,0x42,0x3C,0x42,0x42,0x42,0x3C,0x00,0x00, // Chr$(56) 8
+ 0x00,0x3C,0x42,0x42,0x42,0x3E,0x02,0x04,0x08,0x30,0x00,0x00, // Chr$(57) 9
+ 0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00,0x00,0x00, // Chr$(58) :
+ 0x00,0x00,0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x08,0x10,0x00, // Chr$(59) ;
+ 0x00,0x04,0x08,0x10,0x20,0x40,0x20,0x10,0x08,0x04,0x00,0x00, // Chr$(60) <
+ 0x00,0x00,0x00,0x00,0x7E,0x00,0x7E,0x00,0x00,0x00,0x00,0x00, // Chr$(61) =
+ 0x00,0x20,0x10,0x08,0x04,0x02,0x04,0x08,0x10,0x20,0x00,0x00, // Chr$(62) >
+ 0x00,0x3C,0x42,0x02,0x06,0x08,0x10,0x10,0x00,0x10,0x10,0x00, // Chr$(63) ?
+ 0x00,0x3C,0x42,0x42,0x5E,0x56,0x5C,0x40,0x40,0x3C,0x00,0x00, // Chr$(64) @
+ 0x00,0x18,0x24,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x00,0x00, // Chr$(65) A
+ 0x00,0x7C,0x42,0x42,0x42,0x7C,0x42,0x42,0x42,0x7C,0x00,0x00, // Chr$(66) B
+ 0x00,0x3C,0x42,0x40,0x40,0x40,0x40,0x40,0x42,0x3C,0x00,0x00, // Chr$(67) C
+ 0x00,0x78,0x44,0x42,0x42,0x42,0x42,0x42,0x44,0x78,0x00,0x00, // Chr$(68) D
+ 0x00,0x7E,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x7E,0x00,0x00, // Chr$(69) E
+ 0x00,0x7E,0x40,0x40,0x40,0x78,0x40,0x40,0x40,0x40,0x00,0x00, // Chr$(70) F
+ 0x00,0x3C,0x42,0x40,0x40,0x40,0x4E,0x42,0x42,0x3E,0x00,0x00, // Chr$(71) G
+ 0x00,0x42,0x42,0x42,0x42,0x7E,0x42,0x42,0x42,0x42,0x00,0x00, // Chr$(72) H
+ 0x00,0x7C,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x7C,0x00,0x00, // Chr$(73) I
+ 0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x42,0x42,0x3C,0x00,0x00, // Chr$(74) J
+ 0x00,0x42,0x44,0x48,0x50,0x60,0x50,0x48,0x44,0x42,0x00,0x00, // Chr$(75) K
+ 0x00,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x7E,0x00,0x00, // Chr$(76) L
+ 0x00,0x42,0x66,0x66,0x5A,0x42,0x42,0x42,0x42,0x42,0x00,0x00, // Chr$(77) M
+ 0x00,0x42,0x62,0x62,0x52,0x5A,0x4A,0x46,0x46,0x42,0x00,0x00, // Chr$(78) N
+ 0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00, // Chr$(79) O
+ 0x00,0x7C,0x42,0x42,0x42,0x7C,0x40,0x40,0x40,0x40,0x00,0x00, // Chr$(80) P
+ 0x00,0x3C,0x42,0x42,0x42,0x42,0x42,0x4A,0x44,0x3A,0x00,0x00, // Chr$(81) Q
+ 0x00,0x7C,0x42,0x42,0x42,0x7C,0x48,0x44,0x42,0x42,0x00,0x00, // Chr$(82) R
+ 0x00,0x3C,0x42,0x40,0x60,0x18,0x04,0x02,0x42,0x3C,0x00,0x00, // Chr$(83) S
+ 0x00,0x7E,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00, // Chr$(84) T
+ 0x00,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00, // Chr$(85) U
+ 0x00,0x42,0x42,0x42,0x42,0x42,0x42,0x24,0x24,0x18,0x00,0x00, // Chr$(86) V
+ 0x00,0x42,0x42,0x42,0x42,0x42,0x5A,0x24,0x24,0x24,0x00,0x00, // Chr$(87) W
+ 0x00,0x42,0x42,0x24,0x24,0x18,0x24,0x24,0x42,0x42,0x00,0x00, // Chr$(88) X
+ 0x00,0x44,0x44,0x44,0x44,0x38,0x10,0x10,0x10,0x10,0x00,0x00, // Chr$(89) Y
+ 0x00,0x7E,0x02,0x02,0x04,0x18,0x20,0x40,0x40,0x7E,0x00,0x00, // Chr$(90) Z
+ 0x00,0x3C,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3C,0x00,0x00, // Chr$(91) [
+ 0x00,0x40,0x40,0x20,0x20,0x10,0x08,0x04,0x04,0x02,0x02,0x00, // Chr$(92) backslash
+ 0x00,0x3C,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x3C,0x00,0x00, // Chr$(93) ]
+ 0x00,0x10,0x28,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(94) ^
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00, // Chr$(95) _
+ 0x00,0x18,0x24,0x24,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(96) `
+ 0x00,0x00,0x00,0x00,0x3C,0x02,0x3E,0x42,0x42,0x3E,0x00,0x00, // Chr$(97) a
+ 0x00,0x40,0x40,0x40,0x7C,0x42,0x42,0x42,0x42,0x7C,0x00,0x00, // Chr$(98) b
+ 0x00,0x00,0x00,0x00,0x3C,0x40,0x40,0x40,0x40,0x3C,0x00,0x00, // Chr$(99) c
+ 0x00,0x02,0x02,0x02,0x3E,0x42,0x42,0x42,0x42,0x3E,0x00,0x00, // Chr$(100) d
+ 0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x7C,0x40,0x3C,0x00,0x00, // Chr$(101) e
+ 0x00,0x00,0x1C,0x20,0x20,0x7C,0x20,0x20,0x20,0x20,0x00,0x00, // Chr$(102) f
+ 0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x3E,0x02,0x3C,0x00, // Chr$(103) g
+ 0x00,0x40,0x40,0x40,0x7C,0x42,0x42,0x42,0x42,0x42,0x00,0x00, // Chr$(104) h
+ 0x00,0x00,0x10,0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x00,0x00, // Chr$(105) i
+ 0x00,0x00,0x04,0x00,0x04,0x04,0x04,0x04,0x04,0x44,0x38,0x00, // Chr$(106) j
+ 0x00,0x40,0x40,0x40,0x44,0x48,0x70,0x50,0x48,0x44,0x00,0x00, // Chr$(107) k
+ 0x00,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x00,0x00, // Chr$(108) l
+ 0x00,0x00,0x00,0x00,0x74,0x4A,0x4A,0x42,0x42,0x42,0x00,0x00, // Chr$(109) m
+ 0x00,0x00,0x00,0x00,0x78,0x44,0x44,0x44,0x44,0x44,0x00,0x00, // Chr$(110) n
+ 0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x3C,0x00,0x00, // Chr$(111) o
+ 0x00,0x00,0x00,0x00,0x7C,0x42,0x42,0x42,0x7C,0x40,0x40,0x00, // Chr$(112) p
+ 0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x42,0x42,0x3C,0x06,0x00, // Chr$(113) q
+ 0x00,0x00,0x00,0x00,0x3C,0x42,0x42,0x40,0x40,0x40,0x00,0x00, // Chr$(114) r
+ 0x00,0x00,0x00,0x00,0x1E,0x20,0x1C,0x02,0x02,0x3C,0x00,0x00, // Chr$(115) s
+ 0x00,0x00,0x00,0x10,0x7C,0x10,0x10,0x10,0x10,0x08,0x00,0x00, // Chr$(116) t
+ 0x00,0x00,0x00,0x00,0x42,0x42,0x42,0x42,0x42,0x3C,0x00,0x00, // Chr$(117) u
+ 0x00,0x00,0x00,0x00,0x42,0x42,0x42,0x42,0x24,0x18,0x00,0x00, // Chr$(118) v
+ 0x00,0x00,0x00,0x00,0x42,0x42,0x42,0x5A,0x24,0x24,0x00,0x00, // Chr$(119) w
+ 0x00,0x00,0x00,0x00,0x42,0x24,0x18,0x18,0x24,0x42,0x00,0x00, // Chr$(120) x
+ 0x00,0x00,0x00,0x00,0x42,0x42,0x42,0x3E,0x02,0x42,0x3C,0x00, // Chr$(121) y
+ 0x00,0x00,0x00,0x00,0x7E,0x04,0x08,0x10,0x20,0x7E,0x00,0x00, // Chr$(122) z
+ 0x00,0x1C,0x20,0x10,0x10,0x60,0x10,0x10,0x20,0x1C,0x00,0x00, // Chr$(123) {
+ 0x00,0x10,0x10,0x10,0x10,0x00,0x10,0x10,0x10,0x10,0x00,0x00, // Chr$(124) |
+ 0x00,0x38,0x04,0x08,0x08,0x06,0x08,0x08,0x04,0x38,0x00,0x00, // Chr$(125) }
+ 0x00,0x22,0x5A,0x44,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(126) ~
+ 0x00,0x00,0x00,0x00,0x18,0x24,0x42,0x42,0x7E,0x00,0x00,0x00, // Chr$(127) 
+ 0x00,0xFF,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0x81,0xFF,0x00, // Chr$(128) €
+ 0x00,0xFF,0x81,0x81,0x85,0x85,0xA9,0x91,0x81,0x81,0xFF,0x00, // Chr$(129) 
+ 0x00,0xFF,0x81,0xA5,0xA5,0x99,0x99,0xA5,0xA5,0x81,0xFF,0x00, // Chr$(130)
+ 0x00,0xFF,0x81,0x81,0x81,0x99,0x99,0x81,0x81,0x81,0xFF,0x00, // Chr$(131) ƒ
+ 0x00,0xFF,0x81,0x81,0x81,0x81,0x81,0xBD,0x81,0x81,0xFF,0x00, // Chr$(132) „
+ 0x00,0xFF,0x81,0x99,0x99,0x99,0x99,0x81,0x99,0x81,0xFF,0x00, // Chr$(133) …
+ 0x00,0xFF,0x81,0x99,0xA5,0x89,0x89,0x81,0x89,0x81,0xFF,0x00, // Chr$(134) †
+ 0x00,0x3E,0x7F,0x7F,0x6B,0x7F,0x6B,0x77,0x7F,0x3E,0x00,0x00, // Chr$(135) ‡
+ 0x00,0x3E,0x63,0x41,0x55,0x41,0x55,0x49,0x63,0x3E,0x00,0x00, // Chr$(136) ˆ
+ 0x00,0x00,0x08,0x1C,0x3E,0x7F,0x7F,0x3E,0x1C,0x08,0x00,0x00, // Chr$(137) ‰
+ 0x00,0x00,0x00,0x18,0x18,0x66,0x66,0x18,0x18,0x3C,0x00,0x00, // Chr$(138) Š
+ 0x00,0x00,0x00,0x18,0x3C,0x7E,0x7E,0x18,0x18,0x3C,0x00,0x00, // Chr$(139)
+ 0x00,0x00,0x36,0x3E,0x7F,0x7F,0x7F,0x3E,0x1C,0x08,0x00,0x00, // Chr$(140) Œ
+ 0xFF,0xFF,0xC3,0x81,0x99,0xBD,0xBD,0x99,0x81,0xC3,0xFF,0xFF, // Chr$(141) 
+ 0x00,0x00,0x00,0x00,0x18,0x3C,0x3C,0x18,0x00,0x00,0x00,0x00, // Chr$(142) Ž
+ 0x00,0x1F,0x19,0x1F,0x18,0x18,0x18,0x38,0x78,0x30,0x00,0x00, // Chr$(143) 
+ 0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00,0x00, // Chr$(144) 
+ 0x00,0x00,0x00,0x24,0x66,0xFF,0xFF,0x66,0x24,0x00,0x00,0x00, // Chr$(145)
+ 0x00,0x18,0x3C,0x7E,0x18,0x18,0x18,0x18,0x18,0x18,0x00,0x00, // Chr$(146)
+ 0x00,0x18,0x18,0x18,0x18,0x18,0x18,0x7E,0x3C,0x18,0x00,0x00, // Chr$(147) “
+ 0x00,0x00,0x00,0x08,0x0C,0xFE,0xFE,0x0C,0x08,0x00,0x00,0x00, // Chr$(148) ”
+ 0x00,0x00,0x00,0x10,0x30,0x7F,0x7F,0x30,0x10,0x00,0x00,0x00, // Chr$(149) •
+ 0x00,0x00,0x08,0x2A,0x49,0x49,0x49,0x41,0x41,0x3E,0x00,0x00, // Chr$(150)
+ 0x1C,0x22,0x41,0x5D,0x49,0x2A,0x1C,0x00,0x1C,0x00,0x1C,0x00, // Chr$(151) —
+ 0x18,0x18,0x00,0x3C,0x3C,0x3C,0x18,0x18,0x18,0x18,0x00,0x00, // Chr$(152) ˜
+ 0xF8,0x8C,0xBE,0x8F,0xE3,0x85,0xF5,0xF5,0xF3,0xFF,0x00,0x00, // Chr$(153) ™
+ 0x00,0x18,0x24,0x42,0x42,0x42,0x7E,0x7E,0x24,0x24,0x24,0x24, // Chr$(154) š
+ 0x00,0x18,0x3C,0x7E,0x7E,0x7E,0x7E,0x7E,0x24,0x24,0x24,0x24, // Chr$(155)
+ 0x00,0x20,0x64,0xE2,0xE9,0xE5,0xE9,0xE2,0x64,0x20,0x00,0x00, // Chr$(156) œ
+ 0x00,0x3F,0x4B,0x4B,0x4B,0x3B,0x0B,0x0B,0x0B,0x0B,0x00,0x00, // Chr$(157) 
+ 0x00,0x7E,0x44,0x48,0x6E,0x24,0x28,0x50,0x60,0x40,0x00,0x00, // Chr$(158) ž
+ 0x00,0x00,0x21,0x36,0x1E,0x3C,0xFE,0x1B,0x10,0x10,0x00,0x00, // Chr$(159) Ÿ
+ 0x00,0x3C,0x42,0x81,0xA5,0xA5,0xA5,0x81,0x42,0x3C,0x00,0x00, // Chr$(160)  
+ 0x00,0x3C,0x42,0x91,0x99,0x9D,0x99,0x91,0x42,0x3C,0x00,0x00, // Chr$(161) ¡
+ 0x00,0x3C,0x42,0x81,0xBD,0xBD,0xBD,0x81,0x42,0x3C,0x00,0x00, // Chr$(162) ¢
+ 0x00,0x00,0x38,0x44,0x44,0x44,0x3C,0x06,0x03,0x01,0x00,0x00, // Chr$(163) £
+ 0x00,0x0C,0x10,0x20,0x7C,0x20,0x20,0x7C,0x20,0x10,0x0C,0x00, // Chr$(164) ¤
+ 0x00,0x00,0x1A,0x26,0x42,0x81,0x42,0x42,0x42,0x7E,0x00,0x00, // Chr$(165) ¥
+ 0x00,0x00,0x3C,0x24,0xFF,0x42,0x42,0x42,0x42,0x7E,0x00,0x00, // Chr$(166) ¦
+ 0x00,0x18,0x66,0x42,0x81,0xC3,0xC3,0x42,0x00,0x00,0x00,0x00, // Chr$(167) §
+ 0x00,0x00,0xFF,0x81,0x81,0x81,0x81,0xFF,0x18,0x3C,0x00,0x00, // Chr$(168) ¨
+ 0x00,0x18,0x3C,0x3C,0x3C,0x3C,0x18,0x00,0x18,0x18,0x00,0x00, // Chr$(169) ©
+ 0x28,0x56,0x41,0x83,0xFE,0x0C,0x10,0x10,0x20,0x00,0x00,0x00, // Chr$(170) ª
+ 0x00,0x30,0x48,0x48,0x48,0x4A,0x32,0x02,0x02,0x02,0x02,0x00, // Chr$(171) «
+ 0x18,0x24,0x66,0x5A,0x66,0x18,0x38,0x18,0x38,0x18,0x38,0x00, // Chr$(172) ¬
+ 0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF,0x00,0xFF, // Chr$(173) ­
+ 0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55, // Chr$(174) ®
+ 0xCC,0xCC,0x33,0x33,0xCC,0xCC,0x33,0x33,0xCC,0xCC,0x33,0x33, // Chr$(175) ¯
+ 0x24,0x92,0x49,0x24,0x92,0x49,0x24,0x92,0x49,0x24,0x92,0x49, // Chr$(176) °
+ 0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA,0x55,0xAA, // Chr$(177) ±
+ 0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6,0x6D,0xDB,0xB6, // Chr$(178) ²
+ 0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x18, // Chr$(179) ³
+ 0x18,0x18,0x18,0x18,0x18,0xF8,0x18,0x18,0x18,0x18,0x18,0x18, // Chr$(180) ´
+ 0x18,0x18,0x18,0x18,0xF8,0x18,0x18,0xF8,0x18,0x18,0x18,0x18, // Chr$(181) µ
+ 0x66,0x66,0x66,0x66,0x66,0xE6,0x66,0x66,0x66,0x66,0x66,0x66, // Chr$(182) ¶
+ 0x00,0x00,0x00,0x00,0x00,0xFE,0x66,0x66,0x66,0x66,0x66,0x66, // Chr$(183) ·
+ 0x00,0x00,0x00,0x00,0xF8,0x18,0x18,0xF8,0x18,0x18,0x18,0x18, // Chr$(184) ¸
+ 0x66,0x66,0x66,0x66,0xE6,0x06,0x06,0xE6,0x66,0x66,0x66,0x66, // Chr$(185) ¹
+ 0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66,0x66, // Chr$(186) º
+ 0x00,0x00,0x00,0x00,0xFE,0x06,0x06,0xE6,0x66,0x66,0x66,0x66, // Chr$(187) »
+ 0x66,0x66,0x66,0x66,0xE6,0x06,0x06,0xFE,0x00,0x00,0x00,0x00, // Chr$(188) ¼
+ 0x66,0x66,0x66,0x66,0x66,0xFE,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(189) ½
+ 0x18,0x18,0x18,0x18,0xF8,0x18,0x18,0xF8,0x00,0x00,0x00,0x00, // Chr$(190) ¾
+ 0x00,0x00,0x00,0x00,0x00,0xF8,0x18,0x18,0x18,0x18,0x18,0x18, // Chr$(191) ¿
+ 0x18,0x18,0x18,0x18,0x18,0x1F,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(192) À
+ 0x18,0x18,0x18,0x18,0x18,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(193) Á
+ 0x00,0x00,0x00,0x00,0x00,0xFF,0x18,0x18,0x18,0x18,0x18,0x18, // Chr$(194) Â
+ 0x18,0x18,0x18,0x18,0x18,0x1F,0x18,0x18,0x18,0x18,0x18,0x18, // Chr$(195) Ã
+ 0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(196) Ä
+ 0x18,0x18,0x18,0x18,0x18,0xFF,0x18,0x18,0x18,0x18,0x18,0x18, // Chr$(197) Å
+ 0x18,0x18,0x18,0x18,0x1F,0x18,0x18,0x1F,0x18,0x18,0x18,0x18, // Chr$(198) Æ
+ 0x66,0x66,0x66,0x66,0x66,0x67,0x66,0x66,0x66,0x66,0x66,0x66, // Chr$(199) Ç
+ 0x66,0x66,0x66,0x66,0x67,0x60,0x60,0x7F,0x00,0x00,0x00,0x00, // Chr$(200) È
+ 0x00,0x00,0x00,0x00,0x7F,0x60,0x60,0x67,0x66,0x66,0x66,0x66, // Chr$(201) É
+ 0x66,0x66,0x66,0x66,0xE7,0x00,0x00,0xFF,0x00,0x00,0x00,0x00, // Chr$(202) Ê
+ 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xE7,0x66,0x66,0x66,0x66, // Chr$(203) Ë
+ 0x66,0x66,0x66,0x66,0x67,0x60,0x60,0x67,0x66,0x66,0x66,0x66, // Chr$(204) Ì
+ 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00, // Chr$(205) Í
+ 0x66,0x66,0x66,0x66,0xE7,0x00,0x00,0xE7,0x66,0x66,0x66,0x66, // Chr$(206) Î
+ 0x18,0x18,0x18,0x18,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00, // Chr$(207) Ï
+ 0x66,0x66,0x66,0x66,0x66,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(208) Ð
+ 0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0xFF,0x18,0x18,0x18,0x18, // Chr$(209) Ñ
+ 0x00,0x00,0x00,0x00,0x00,0xFF,0x66,0x66,0x66,0x66,0x66,0x66, // Chr$(210) Ò
+ 0x66,0x66,0x66,0x66,0x66,0x7F,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(211) Ó
+ 0x18,0x18,0x18,0x18,0x1F,0x18,0x18,0x1F,0x00,0x00,0x00,0x00, // Chr$(212) Ô
+ 0x00,0x00,0x00,0x00,0x1F,0x18,0x18,0x1F,0x18,0x18,0x18,0x18, // Chr$(213) Õ
+ 0x00,0x00,0x00,0x00,0x00,0x7F,0x66,0x66,0x66,0x66,0x66,0x66, // Chr$(214) Ö
+ 0x66,0x66,0x66,0x66,0x66,0xE7,0x66,0x66,0x66,0x66,0x66,0x66, // Chr$(215) ×
+ 0x18,0x18,0x18,0x18,0xFF,0x00,0x00,0xFF,0x18,0x18,0x18,0x18, // Chr$(216) Ø
+ 0x18,0x18,0x18,0x18,0x18,0xF8,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(217) Ù
+ 0x00,0x00,0x00,0x00,0x00,0x1F,0x18,0x18,0x18,0x18,0x18,0x18, // Chr$(218) Ú
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, // Chr$(219) Û
+ 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, // Chr$(220) Ü
+ 0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0,0xF0, // Chr$(221) Ý
+ 0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F,0x0F, // Chr$(222) Þ
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(223) ß
+ 0x00,0x00,0x00,0x00,0x3A,0x44,0x44,0x44,0x44,0x3A,0x00,0x00, // Chr$(224) à
+ 0x00,0x38,0x44,0x44,0x58,0x44,0x44,0x44,0x78,0x40,0x40,0x00, // Chr$(225) á
+ 0x00,0x00,0x7E,0x42,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00, // Chr$(226) â
+ 0x00,0x00,0x00,0x00,0x7C,0x28,0x28,0x28,0x28,0x68,0x00,0x00, // Chr$(227) ã
+ 0x00,0x7E,0x42,0x20,0x10,0x08,0x10,0x20,0x42,0x7E,0x00,0x00, // Chr$(228) ä
+ 0x00,0x00,0x00,0x00,0x3E,0x48,0x44,0x44,0x44,0x38,0x00,0x00, // Chr$(229) å
+ 0x00,0x00,0x00,0x24,0x24,0x24,0x24,0x3C,0x42,0x40,0x80,0x00, // Chr$(230) æ
+ 0x00,0x00,0x00,0x00,0x44,0xA8,0x10,0x10,0x10,0x10,0x00,0x00, // Chr$(231) ç
+ 0x00,0x00,0x7C,0x00,0x38,0x44,0x44,0x44,0x38,0x00,0x7C,0x00, // Chr$(232) è
+ 0x00,0x00,0x18,0x24,0x42,0x42,0x7E,0x42,0x42,0x24,0x18,0x00, // Chr$(233) é
+ 0x00,0x00,0x00,0x38,0x44,0x44,0x44,0x6C,0x28,0x6C,0x00,0x00, // Chr$(234) ê
+ 0x00,0x00,0x00,0x1C,0x20,0x38,0x44,0x44,0x44,0x38,0x00,0x00, // Chr$(235) ë
+ 0x00,0x00,0x00,0x00,0x00,0x6C,0x92,0x92,0x6C,0x00,0x00,0x00, // Chr$(236) ì
+ 0x00,0x00,0x00,0x00,0x02,0x6C,0x9A,0xB2,0x6C,0x80,0x00,0x00, // Chr$(237) í
+ 0x00,0x18,0x20,0x40,0x40,0x78,0x40,0x40,0x20,0x18,0x00,0x00, // Chr$(238) î
+ 0x00,0x00,0x00,0x00,0x38,0x44,0x44,0x44,0x44,0x44,0x00,0x00, // Chr$(239) ï
+ 0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x00, // Chr$(240) ð
+ 0x00,0x00,0x10,0x10,0x7C,0x10,0x10,0x00,0x7C,0x00,0x00,0x00, // Chr$(241) ñ
+ 0x00,0x20,0x10,0x08,0x04,0x08,0x10,0x20,0x00,0x7E,0x00,0x00, // Chr$(242) ò
+ 0x00,0x04,0x08,0x10,0x20,0x10,0x08,0x04,0x00,0x7E,0x00,0x00, // Chr$(243) ó
+ 0x40,0x41,0x42,0x44,0x48,0x10,0x26,0x49,0x02,0x04,0x0F,0x00, // Chr$(244) ô
+ 0x40,0x41,0x42,0x44,0x48,0x12,0x26,0x4A,0x0F,0x02,0x02,0x00, // Chr$(245) õ
+ 0x00,0x00,0x18,0x18,0x00,0x7E,0x00,0x18,0x18,0x00,0x00,0x00, // Chr$(246) ö
+ 0x00,0x00,0x22,0x52,0x4C,0x00,0x22,0x52,0x4C,0x00,0x00,0x00, // Chr$(247) ÷
+ 0x00,0x20,0x10,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(248) ø
+ 0x00,0x00,0x00,0x00,0x1C,0x1C,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(249) ù
+ 0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(250) ú
+ 0x00,0x00,0x0E,0x08,0x08,0x08,0x08,0x48,0x28,0x18,0x08,0x00, // Chr$(251) û
+ 0x00,0x3C,0x12,0x12,0x12,0x12,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(252) ü
+ 0x00,0x18,0x24,0x08,0x10,0x3C,0x00,0x00,0x00,0x00,0x00,0x00, // Chr$(253) ý
+ 0x00,0x00,0x00,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x00,0x00,0x00, // Chr$(254) þ
+ 0x00,0x00,0x10,0x54,0x28,0xC6,0x28,0x54,0x10,0x00,0x00,0x00 // Chr$(255) ÿ
+};
diff --git a/Kernel/platform/platform-rpipico/fonts/smallfont.h b/Kernel/platform/platform-rpipico/fonts/smallfont.h
new file mode 100644
index 000000000..76c12f026
--- /dev/null
+++ b/Kernel/platform/platform-rpipico/fonts/smallfont.h
@@ -0,0 +1,20 @@
+// ArialNumFontPlus.c
+// Font type : Special (SubSet)
+// Font size : 32x50 pixels
+// Memory usage : 2204 bytes
+
+ #define PROGMEM
+
+
+const uint32_t TinyFont[] ={
+0x60200604,
+0x44000000, 0x00A04040, 0xA0AEAE00, 0x82406C6C, 0xEACC2048, 0x00004460, 0x84204424, 0xE4A48044,
+0x00E404A0, 0x00800400, 0x040000E0, 0x00480240, 0x4CE0AAEA, 0x48C24044, 0xC062C2E0, 0xE820E2AA,
+0xEA68E0E2, 0x8048E2E0, 0xEAE0EAEA, 0x0404C0E2, 0x80040400, 0x0E208424, 0x2484000E, 0x4040E280,
+0x4A60E84A, 0xCACAA0EA, 0x608868C0, 0xE8C0AACA, 0xE8E8E0E8, 0x60EA6880, 0xE4A0EAAA, 0x2A22E044,
+0xA0CAAA40, 0xAEE08888, 0xEEAEA0EA, 0x40AA4AA0, 0x4A80C8CA, 0xECCA60AE, 0xC04268A0, 0xAA4044E4,
+0xA4AA60AA, 0xA0EEAA40, 0xAAA04AAA, 0x48E24044, 0xE088E8E0, 0xE2004208, 0x004AE022, 0xF0000000,
+0x0C000084, 0xAA8CE06A, 0x608806C0, 0x0660AA26, 0xE42460AC, 0x24AE0640, 0x40A0CA88, 0x22204044,
+0xA0CC8AA4, 0x0EE044C4, 0xAA0CA0EE, 0x40AA04A0, 0x06C8AA0C, 0x880662AA, 0xC0C60680, 0x0A60444E,
+0xAE0A60AA, 0xE0AE0A40, 0x0AA0440A, 0x6C0E24A6, 0x608464E0, 0xC4400444, 0x006CC024, 0xE0EEEE00
+};
\ No newline at end of file
diff --git a/Kernel/platform/platform-rpipico/i2ckbd.c b/Kernel/platform/platform-rpipico/i2ckbd.c
new file mode 100644
index 000000000..6133f2d9a
--- /dev/null
+++ b/Kernel/platform/platform-rpipico/i2ckbd.c
@@ -0,0 +1,98 @@
+#include <stdio.h>
+#include <pico/stdio.h>
+#include "i2ckbd.h"
+
+static uint8_t i2c_inited = 0;
+static uint8_t keycheck = 0;
+
+void init_i2c_kbd(){
+ gpio_set_function(I2C_KBD_SCL, GPIO_FUNC_I2C);
+ gpio_set_function(I2C_KBD_SDA, GPIO_FUNC_I2C);
+ i2c_init(I2C_KBD_MOD, I2C_KBD_SPEED);
+ gpio_pull_up(I2C_KBD_SCL);
+ gpio_pull_up(I2C_KBD_SDA);
+
+ i2c_inited = 1;
+ keycheck = 0;
+}
+int write_i2c_kbd(){
+ int retval;
+ unsigned char msg[2];
+ msg[0] = 0x09;
+
+ if(i2c_inited == 0) return -1;
+
+ retval = i2c_write_timeout_us(I2C_KBD_MOD, I2C_KBD_ADDR, msg, 1, false, 500000);
+ if ( retval == PICO_ERROR_GENERIC || retval == PICO_ERROR_TIMEOUT) {
+ printf( "i2c write error\n");
+ return -1;
+ }
+ return 0;
+}
+
+int read_i2c_kbd(){
+ int retval;
+ static int ctrlheld=0;
+ uint16_t buff = 0;
+ unsigned char msg[2];
+ int c = -1;
+ msg[0] = 0x09;
+
+ if(i2c_inited == 0) return -1;
+
+ if(keycheck == 0){
+ retval = write_i2c_kbd();
+ keycheck = 1;
+ return retval;
+ }else {
+ retval = i2c_read_timeout_us(I2C_KBD_MOD, I2C_KBD_ADDR, (unsigned char *) &buff, 2, false, 500000);
+ if (retval == PICO_ERROR_GENERIC || retval == PICO_ERROR_TIMEOUT) {
+ printf("i2c read error read\n");
+ return -1;
+ }
+ keycheck = 0;
+ }
+ if(buff!=0) {
+ if (buff == 0xA503)ctrlheld = 0;
+ else if (buff == 0xA502) {
+ ctrlheld = 1;
+ }else if((buff & 0xff)==1) {//pressed
+ c = buff >> 8;
+ int realc = -1;
+ switch (c) {
+ case 0xA1:
+ case 0xA2:
+ case 0xA3:
+ case 0xA4:
+ case 0xA5:
+ realc = -1;//skip shift alt ctrl keys
+ break;
+ default:
+ realc = c;
+ break;
+ }
+ c = realc;
+ if(c>='a' && c<='z' && ctrlheld)c=c-'a'+1;
+ }
+ return c;
+ }
+ return -1;
+}
+
+int I2C_Send_RegData(int i2caddr,int reg,char command){
+ int retval;
+ unsigned char I2C_Send_Buffer[2];
+ I2C_Send_Buffer[0]=reg;
+ I2C_Send_Buffer[1]=command;
+ uint8_t I2C_Sendlen=2;
+ uint16_t I2C_Timeout=1000;
+
+ retval=i2c_write_timeout_us(I2C_KBD_MOD, (uint8_t)i2caddr, (uint8_t *)I2C_Send_Buffer, I2C_Sendlen,false, I2C_Timeout*1000);
+
+ if ( retval == PICO_ERROR_GENERIC || retval == PICO_ERROR_TIMEOUT) {
+ printf( "I2C_Send_RegData write error\n");
+ return -1;
+ }
+ return 0;
+}
+
diff --git a/Kernel/platform/platform-rpipico/i2ckbd.h b/Kernel/platform/platform-rpipico/i2ckbd.h
new file mode 100644
index 000000000..2319360c4
--- /dev/null
+++ b/Kernel/platform/platform-rpipico/i2ckbd.h
@@ -0,0 +1,21 @@
+#ifndef I2C_KEYBOARD_H
+#define I2C_KEYBOARD_H
+#include <pico/stdlib.h>
+#include <pico/platform.h>
+#include <hardware/gpio.h>
+#include <hardware/i2c.h>
+
+#define I2C_KBD_MOD i2c1
+#define I2C_KBD_SDA 6
+#define I2C_KBD_SCL 7
+
+#define I2C_KBD_SPEED 400000 // if dual i2c, then the speed of keyboard i2c should be 10khz
+
+#define I2C_KBD_ADDR 0x1F
+
+void init_i2c_kbd();
+int read_i2c_kbd();
+int write_i2c_kbd();
+int I2C_Send_RegData(int i2caddr,int reg,char command);
+
+#endif
\ No newline at end of file
diff --git a/Kernel/platform/platform-rpipico/lcdspi.c b/Kernel/platform/platform-rpipico/lcdspi.c
new file mode 100644
index 000000000..13c859204
--- /dev/null
+++ b/Kernel/platform/platform-rpipico/lcdspi.c
@@ -0,0 +1,929 @@
+#include <kernel.h>
+#include <kdata.h>
+#include <printf.h>
+#include <timer.h>
+
+#include <stdbool.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <blkdev.h>
+
+#include "picosdk.h"
+#include "config.h"
+#include <hardware/spi.h>
+#include "hardware/timer.h"
+#include <ctype.h>
+#include "lcdspi.h"
+#include "i2ckbd.h"
+#include "pico/multicore.h"
+////////////////////**************************************fonts
+#define FONT_TABLE_SIZE 16
+
+#include "fonts/font1.h"
+#include "fonts/Misc_12x20_LE.h"
+#include "fonts/Hom_16x24_LE.h"
+#include "fonts/Fnt_10x16.h"
+#include "fonts/Inconsola.h"
+#include "fonts/ArialNumFontPlus.h"
+#include "fonts/Font_8x6.h"
+#include "fonts/arial_bold.h"
+#include "fonts/smallfont.h"
+
+unsigned char *FontTable[FONT_TABLE_SIZE] = {(unsigned char *) font1,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+};
+
+static short gui_font;
+static int gui_fcolour;
+static int gui_bcolour;
+static short CurrentX = 0, CurrentY = 0; // the current default position for the next char to be written
+static short gui_font_width, gui_font_height;
+static short HRes = 0;
+static short VRes = 0;
+static char S_Height;
+static char S_Width;
+
+#ifdef HARDWARE_SCROLL
+short offsetY = 0;
+#endif
+unsigned char LCDBuffer[320 * 3] = {0};// 1440 = 480*3, 320*3 = 960
+
+void __not_in_flash_func(spi_write_fast)(spi_inst_t *spi, const uint8_t *src, size_t len) {
+ // Write to TX FIFO whilst ignoring RX, then clean up afterward. When RX
+ // is full, PL022 inhibits RX pushes, and sets a sticky flag on
+ // push-on-full, but continues shifting. Safe if SSPIMSC_RORIM is not set.
+ for (size_t i = 0; i < len; ++i) {
+ while (!spi_is_writable(spi))
+ tight_loop_contents();
+ spi_get_hw(spi)->dr = (uint32_t) src[i];
+ }
+}
+
+void __not_in_flash_func(spi_finish)(spi_inst_t *spi) {
+ // Drain RX FIFO, then wait for shifting to finish (which may be *after*
+ // TX FIFO drains), then drain RX FIFO again
+ while (spi_is_readable(spi))
+ (void) spi_get_hw(spi)->dr;
+ while (spi_get_hw(spi)->sr & SPI_SSPSR_BSY_BITS)
+ tight_loop_contents();
+ while (spi_is_readable(spi))
+ (void) spi_get_hw(spi)->dr;
+
+ // Don't leave overrun flag set
+ spi_get_hw(spi)->icr = SPI_SSPICR_RORIC_BITS;
+}
+
+int GetFontWidth(int fnt) {
+ return FontTable[fnt >> 4][0] * (fnt & 0b1111);
+}
+
+int GetFontHeight(int fnt) {
+ return FontTable[fnt >> 4][1] * (fnt & 0b1111);
+}
+
+void init_fonts() {
+ FontTable[0] = (unsigned char *) font1;
+
+}
+
+void SetFont(int fnt) {
+ if (FontTable[fnt >> 4] == NULL) panic("Invalid font number,max is 15");
+ gui_font_width = FontTable[fnt >> 4][0] * (fnt & 0b1111);
+ gui_font_height = FontTable[fnt >> 4][1] * (fnt & 0b1111);
+
+
+ S_Height = VRes / gui_font_height;
+ S_Width = HRes / gui_font_width;
+
+ gui_font = fnt;
+
+}
+
+void DefineRegionSPI(int xstart, int ystart, int xend, int yend, int rw) {
+ unsigned char coord[4];
+ lcd_spi_lower_cs();
+ gpio_put(Pico_LCD_DC, 0);//gpio_put(Pico_LCD_DC,0);
+ HWSendSPI(&(uint8_t) {ILI9341_COLADDRSET}, 1);
+ gpio_put(Pico_LCD_DC, 1);
+ coord[0] = xstart >> 8;
+ coord[1] = xstart;
+ coord[2] = xend >> 8;
+ coord[3] = xend;
+ HWSendSPI(coord, 4);// HAL_SPI_Transmit(&hspi3,coord,4,500);
+ gpio_put(Pico_LCD_DC, 0);
+ HWSendSPI(&(uint8_t) {ILI9341_PAGEADDRSET}, 1);
+ gpio_put(Pico_LCD_DC, 1);
+ coord[0] = ystart >> 8;
+ coord[1] = ystart;
+ coord[2] = yend >> 8;
+ coord[3] = yend;
+ HWSendSPI(coord, 4);// HAL_SPI_Transmit(&hspi3,coord,4,500);
+ gpio_put(Pico_LCD_DC, 0);
+ if (rw) {
+ HWSendSPI(&(uint8_t) {ILI9341_MEMORYWRITE}, 1);
+ } else {
+ HWSendSPI(&(uint8_t) {ILI9341_RAMRD}, 1);
+ }
+ gpio_put(Pico_LCD_DC, 1);
+}
+
+void ReadBufferSPI(int x1, int y1, int x2, int y2, unsigned char *p) {
+ int r, N, t;
+ unsigned char h, l;
+// PInt(x1);PIntComma(y1);PIntComma(x2);PIntComma(y2);PRet();
+ // make sure the coordinates are kept within the display area
+ if (x2 <= x1) {
+ t = x1;
+ x1 = x2;
+ x2 = t;
+ }
+ if (y2 <= y1) {
+ t = y1;
+ y1 = y2;
+ y2 = t;
+ }
+ if (x1 < 0) x1 = 0;
+ if (x1 >= HRes) x1 = HRes - 1;
+ if (x2 < 0) x2 = 0;
+ if (x2 >= HRes) x2 = HRes - 1;
+ if (y1 < 0) y1 = 0;
+ if (y1 >= VRes) y1 = VRes - 1;
+ if (y2 < 0) y2 = 0;
+ if (y2 >= VRes) y2 = VRes - 1;
+ N = (x2 - x1 + 1) * (y2 - y1 + 1) * 3;
+
+ DefineRegionSPI(x1, y1, x2, y2, 0);
+
+ //spi_init(Pico_LCD_SPI_MOD, 6000000);
+ spi_set_baudrate(Pico_LCD_SPI_MOD, 6000000);
+ //spi_read_data_len(p, 1);
+ HWReadSPI((uint8_t *) p, 1);
+ r = 0;
+ HWReadSPI((uint8_t *) p, N);
+ gpio_put(Pico_LCD_DC, 0);
+ lcd_spi_raise_cs();
+ spi_set_baudrate(Pico_LCD_SPI_MOD, LCD_SPI_SPEED);
+ r = 0;
+
+ while (N) {
+ h = (uint8_t) p[r + 2];
+ l = (uint8_t) p[r];
+ p[r] = h;//(h & 0xF8);
+ p[r + 2] = l;//(l & 0xF8);
+ r += 3;
+ N -= 3;
+ }
+}
+
+void DrawBufferSPI(int x1, int y1, int x2, int y2, unsigned char *p) {
+ union colourmap {
+ char rgbbytes[4];
+ unsigned int rgb;
+ } c;
+ unsigned char q[3];
+ int i, t;
+ if (x2 <= x1) {
+ t = x1;
+ x1 = x2;
+ x2 = t;
+ }
+ if (y2 <= y1) {
+ t = y1;
+ y1 = y2;
+ y2 = t;
+ }
+ if (x1 < 0) x1 = 0;
+ if (x1 >= HRes) x1 = HRes - 1;
+ if (x2 < 0) x2 = 0;
+ if (x2 >= HRes) x2 = HRes - 1;
+ if (y1 < 0) y1 = 0;
+ if (y1 >= VRes) y1 = VRes - 1;
+ if (y2 < 0) y2 = 0;
+ if (y2 >= VRes) y2 = VRes - 1;
+ i = (x2 - x1 + 1) * (y2 - y1 + 1);
+ DefineRegionSPI(x1, y1, x2, y2, 1);
+ while (i--) {
+ c.rgbbytes[0] = *p++; //this order swaps the bytes to match the .BMP file
+ c.rgbbytes[1] = *p++;
+ c.rgbbytes[2] = *p++;
+ // convert the colours to 565 format
+ // convert the colours to 565 format
+#ifdef ILI9488
+ q[0] = c.rgbbytes[2];
+ q[1] = c.rgbbytes[1];
+ q[2] = c.rgbbytes[0];
+#endif
+ HWSendSPI(q, 3);
+ }
+ lcd_spi_raise_cs();
+
+}
+
+//Print the bitmap of a char on the video output
+// x, y - the top left of the char
+// width, height - size of the char's bitmap
+// scale - how much to scale the bitmap
+// fc, bc - foreground and background colour
+// bitmap - pointer to the bitmap
+void DrawBitmapSPI(int x1, int y1, int width, int height, int scale, int fc, int bc, unsigned char *bitmap) {
+ int i, j, k, m, n;
+ char f[3], b[3];
+ int vertCoord, horizCoord, XStart, XEnd, YEnd;
+ char *p = 0;
+ union colourmap {
+ char rgbbytes[4];
+ unsigned int rgb;
+ } c;
+#ifdef HARDWARE_SCROLL
+ y1 += offsetY; y1 = y1 %LCD_REAL_HEIGHT;
+#endif
+ if (x1 >= HRes || y1 >= VRes || x1 + width * scale < 0 || y1 + height * scale < 0)return;
+ // adjust when part of the bitmap is outside the displayable coordinates
+ vertCoord = y1;
+ if (y1 < 0) y1 = 0; // the y coord is above the top of the screen
+ XStart = x1;
+ if (XStart < 0) XStart = 0; // the x coord is to the left of the left marginn
+ XEnd = x1 + (width * scale) - 1;
+ if (XEnd >= HRes) XEnd = HRes - 1; // the width of the bitmap will extend beyond the right margin
+ YEnd = y1 + (height * scale) - 1;
+ if (YEnd >= VRes) YEnd = VRes - 1;// the height of the bitmap will extend beyond the bottom margin
+
+#ifdef ILI9488
+ // convert the colours to 565 format
+ f[0] = (fc >> 16);
+ f[1] = (fc >> 8) & 0xFF;
+ f[2] = (fc & 0xFF);
+ b[0] = (bc >> 16);
+ b[1] = (bc >> 8) & 0xFF;
+ b[2] = (bc & 0xFF);
+
+#endif
+ //printf("DrawBitmapSPI-> XStart %d, y1 %d, XEnd %d, YEnd %d\n",XStart,y1,XEnd,YEnd);
+ DefineRegionSPI(XStart, y1, XEnd, YEnd, 1);
+
+ n = 0;
+ for (i = 0; i < height; i++) { // step thru the font scan line by line
+ for (j = 0; j < scale; j++) { // repeat lines to scale the font
+ if (vertCoord++ < 0) continue; // we are above the top of the screen
+ if (vertCoord > VRes) { // we have extended beyond the bottom of the screen
+ lcd_spi_raise_cs(); //set CS high
+ return;
+ }
+ horizCoord = x1;
+ for (k = 0; k < width; k++) { // step through each bit in a scan line
+ for (m = 0; m < scale; m++) { // repeat pixels to scale in the x axis
+ if (horizCoord++ < 0) continue; // we have not reached the left margin
+ if (horizCoord > HRes) continue; // we are beyond the right margin
+ if ((bitmap[((i * width) + k) / 8] >> (((height * width) - ((i * width) + k) - 1) % 8)) & 1) {
+ HWSendSPI((uint8_t *) &f, 3);
+ } else {
+ if (bc == -1) {
+ c.rgbbytes[0] = p[n];
+ c.rgbbytes[1] = p[n + 1];
+ c.rgbbytes[2] = p[n + 2];
+#ifdef ILI9488
+ b[0] = c.rgbbytes[2];
+ b[1] = c.rgbbytes[1];
+ b[2] = c.rgbbytes[0];
+#endif
+ }
+ HWSendSPI((uint8_t *) &b, 3);
+ }
+ n += 3;
+ }
+ }
+ }
+ }
+ lcd_spi_raise_cs(); //set CS high
+
+}
+
+// Draw a filled rectangle with hardware scroll
+// auto split y2 coord over LCD_REAL_HEIGHT rect to be two rects
+// all the Y coordinates should be circled
+// x1, y1, x2, y2 - the coordinates
+// c - the colour
+// finish -- whether should finish the spi and disable LCD_CS
+void DrawRectangleSPI(int x1, int y1, int x2, int y2, int c) {
+ // convert the colours to 565 format
+ unsigned char col[3];
+ if (x1 == x2 && y1 == y2) {
+ if (x1 < 0) return;
+ if (x1 >= HRes) return;
+ if(y1 < 0) {y1 = LCD_REAL_HEIGHT+y1;}
+ if(y1 >= VRes) {y1 = y1 % LCD_REAL_HEIGHT;}
+ y1 += offsetY;
+ y1 = y1 % LCD_REAL_HEIGHT;
+ y2 = y1;
+ DefineRegionSPI(x1, y1, x2, y2, 1);
+#ifdef ILI9488
+ col[0] = (c >> 16);
+ col[1] = (c >> 8) & 0xFF;
+ col[2] = (c & 0xFF);
+#endif
+ HWSendSPI(col, 3);
+ } else {
+ int i, t, y;
+ unsigned char *p;
+ // make sure the coordinates are kept within the display area
+ if (x2 <= x1) {
+ t = x1;
+ x1 = x2;
+ x2 = t;
+ }
+ if (y2 <= y1) {
+ t = y1;
+ y1 = y2;
+ y2 = t;
+ }
+ if (x1 < 0) x1 = 0;
+ if (x1 >= HRes) x1 = HRes - 1;
+ if (x2 < 0) x2 = 0;
+ if (x2 >= HRes) x2 = HRes - 1;
+
+ y1 += offsetY;
+ y2 += offsetY;
+
+ if (y2 >= VRes) {
+ if(y1 < VRes){ // 分割
+ int ov_y = y2 - VRes;
+ DrawRectangleSPI(x1, 0, x2, ov_y, c);
+ y2 = VRes - 1;
+ }else{
+ y1 = y1 % LCD_REAL_HEIGHT;
+ y2 = y2 % LCD_REAL_HEIGHT;
+ }
+ }
+
+ if (y1 < 0) { y1 = VRes + y1; }
+ if (y1 >= VRes) { y1 = y1 % LCD_REAL_HEIGHT;}
+ if (y2 < 0) { y2 = VRes + y2;}
+
+
+ DefineRegionSPI(x1, y1, x2, y2, 1);
+#ifdef ILI9488
+ i = x2 - x1 + 1;
+ i *= 3;
+ p = LCDBuffer;
+ col[0] = (c >> 16);
+ col[1] = (c >> 8) & 0xFF;
+ col[2] = (c & 0xFF);
+ for (t = 0; t < i; t += 3) {
+ p[t] = col[0];
+ p[t + 1] = col[1];
+ p[t + 2] = col[2];
+ }
+ for (y = y1; y <= y2; y++) {
+ spi_write_fast(Pico_LCD_SPI_MOD, p, i);
+ }
+#endif
+ }
+
+ spi_finish(Pico_LCD_SPI_MOD);
+ lcd_spi_raise_cs();
+
+}
+
+/******************************************************************************************
+ Print a char on the LCD display
+ Any characters not in the font will print as a space.
+ The char is printed at the current location defined by CurrentX and CurrentY
+*****************************************************************************************/
+void GUIPrintChar(int fnt, int fc, int bc, char c, int orientation) {
+ unsigned char *p, *fp, *np = NULL;
+ int modx, mody, scale = fnt & 0b1111;
+ int height, width;
+
+ // to get the +, - and = chars for font 6 we fudge them by scaling up font 1
+ if ((fnt & 0xf0) == 0x50 && (c == '-' || c == '+' || c == '=')) {
+ fp = (unsigned char *) FontTable[0];
+ //scale = scale * 4;
+ } else
+ fp = (unsigned char *) FontTable[fnt >> 4];
+
+ height = fp[1];
+ width = fp[0];
+ modx = mody = 0;
+ //printf("fp %d, c %d ,height %d width %d\n",fp,c, height,width);
+
+ if (c >= fp[2] && c < fp[2] + fp[3]) {
+ p = fp + 4 + (int) (((c - fp[2]) * height * width) / 8);
+ //printf("p = %d\n",p);
+ np = p;
+
+ DrawBitmapSPI(CurrentX + modx, CurrentY+mody,width, height, scale, fc, bc, np);
+ } else {
+ DrawRectangleSPI(CurrentX + modx, CurrentY+mody, CurrentX + modx + (width * scale),
+ mody + (height * scale), bc);
+ }
+
+ if (orientation == ORIENT_NORMAL) CurrentX += width * scale;
+
+}
+#ifdef HARDWARE_SCROLL
+void setScrollArea(uint16_t topFixedArea, uint16_t bottomFixedArea) {
+
+ spi_write_command(0x33); // Vertical HWScroll definition
+ spi_write_data(topFixedArea >> 8);
+ spi_write_data(topFixedArea);
+ spi_write_data(LCD_REAL_HEIGHT >> 8);
+ spi_write_data(LCD_REAL_HEIGHT & 0xff);
+ spi_write_data(bottomFixedArea >> 8);
+ spi_write_data(bottomFixedArea);
+
+}
+
+void HWScroll(uint16_t pixels) {
+ spi_write_command(0x37); // Vertical scrolling start address
+ spi_write_data(pixels >> 8);
+ spi_write_data(pixels & 0xFF);
+}
+
+#else
+unsigned char scrollbuff[LCD_WIDTH*3];
+#endif
+
+
+void ScrollLCDSPI(int lines) {
+ if (lines == 0)return;
+#ifdef HARDWARE_SCROLL
+ if (lines > 0) {
+ HWScroll(offsetY);
+ }
+
+ spi_finish(Pico_LCD_SPI_MOD);
+ lcd_spi_raise_cs();
+#else
+
+ if (lines >= 0) {
+ for (int i = 0; i < VRes - lines; i++) {
+ ReadBufferSPI(0, i + lines, HRes - 1, i + lines, scrollbuff);
+ DrawBufferSPI(0, i, HRes - 1, i, scrollbuff);
+ }
+ DrawRectangleSPI(0, VRes - lines, HRes - 1, VRes - 1, gui_bcolour); // erase the lines to be scrolled off
+ } else {
+ lines = -lines;
+ for (int i = VRes - 1; i >= lines; i--) {
+ ReadBufferSPI(0, i - lines, HRes - 1, i - lines, scrollbuff);
+ DrawBufferSPI(0, i, HRes - 1, i, scrollbuff);
+ }
+ DrawRectangleSPI(0, 0, HRes - 1, lines - 1, gui_bcolour); // erase the lines introduced at the top
+ }
+#endif
+
+}
+
+void DisplayPutC(char c) {
+ // if it is printable and it is going to take us off the right hand end of the screen do a CRLF
+ if (c >= FontTable[gui_font >> 4][2] && c < FontTable[gui_font >> 4][2] + FontTable[gui_font >> 4][3]) {
+ if (CurrentX + gui_font_width > HRes) {
+ DisplayPutC('\r');
+ DisplayPutC('\n');
+ }
+ }
+
+ // handle the standard control chars
+ switch (c) {
+ case '\b':
+ CurrentX -= gui_font_width;
+ //if (CurrentX < 0) CurrentX = 0;
+ if (CurrentX < 0) { //Go to end of previous line
+ CurrentY -= gui_font_height; //Go up one line
+ if (CurrentY < 0) CurrentY = 0;
+ CurrentX = (S_Width - 1) * gui_font_width; //go to last character
+ }
+ return;
+ case '\r':
+ CurrentX = 0;
+ return;
+ case '\n':
+ CurrentY += gui_font_height;
+ if (CurrentY + gui_font_height >= LCD_HEIGHT) {
+#ifdef HARDWARE_SCROLL
+ int lines= 0;
+ lines = CurrentY + gui_font_height - LCD_HEIGHT;
+
+ DrawRectangleSPI(CurrentX,CurrentY,CurrentX+HRes,CurrentY + lines,BLACK);
+ offsetY += lines;
+ if(offsetY >= LCD_REAL_HEIGHT){
+ offsetY -= LCD_REAL_HEIGHT;
+ }
+ ScrollLCDSPI(lines);
+ CurrentY -= lines;
+#else
+ ScrollLCDSPI(CurrentY + gui_font_height - VRes);
+ CurrentY -= (CurrentY + gui_font_height - VRes);
+#endif
+ }
+ return;
+ case '\t':
+ do {
+ DisplayPutC(' ');
+ } while ((CurrentX / gui_font_width) % 2);// 2 3 4 8
+ return;
+ }
+ GUIPrintChar(gui_font, gui_fcolour, gui_bcolour, c, ORIENT_NORMAL);// print it
+}
+
+///////=----------------------------------------===//////
+void lcd_clear() {
+ DrawRectangleSPI(0, 0, HRes - 1, VRes - 1, BLACK);
+}
+
+void lcd_putc(uint8_t devn, uint8_t c) {
+ DisplayPutC(c);
+}
+
+int lcd_getc(uint8_t devn){
+ //i2c keyboard
+ int c = read_i2c_kbd();
+ return c;
+}
+void lcd_sleeping(uint8_t devn){
+
+}
+ttyready_t lcd_ready(uint8_t devn){
+ return TTY_READY_NOW;
+}
+
+unsigned char __not_in_flash_func(HW1SwapSPI)(unsigned char data_out){
+ unsigned char data_in=0;
+ spi_write_read_blocking(spi1,&data_out,&data_in,1);
+ return data_in;
+}
+
+void HWReadSPI(unsigned char *buff, int cnt) {
+ spi_read_blocking(Pico_LCD_SPI_MOD, 0xff, buff, cnt);
+}
+
+void HWSendSPI(const unsigned char *buff, int cnt) {
+
+ spi_write_blocking(Pico_LCD_SPI_MOD, buff, cnt);
+
+}
+
+
+void PinSetBit(int pin, unsigned int offset) {
+ switch (offset) {
+ case LATCLR:
+ gpio_set_pulls(pin, false, false);
+ gpio_pull_down(pin);
+ gpio_put(pin, 0);
+ return;
+ case LATSET:
+ gpio_set_pulls(pin, false, false);
+ gpio_pull_up(pin);
+ gpio_put(pin, 1);
+ return;
+ case LATINV:
+ gpio_xor_mask(1 << pin);
+ return;
+ case TRISSET:
+ gpio_set_dir(pin, GPIO_IN);
+ sleep_us(2);
+ return;
+ case TRISCLR:
+ gpio_set_dir(pin, GPIO_OUT);
+ gpio_set_drive_strength(pin, GPIO_DRIVE_STRENGTH_12MA);
+ sleep_us(2);
+ return;
+ case CNPUSET:
+ gpio_set_pulls(pin, true, false);
+ return;
+ case CNPDSET:
+ gpio_set_pulls(pin, false, true);
+ return;
+ case CNPUCLR:
+ case CNPDCLR:
+ gpio_set_pulls(pin, false, false);
+ return;
+ case ODCCLR:
+ gpio_set_dir(pin, GPIO_OUT);
+ gpio_put(pin, 0);
+ sleep_us(2);
+ return;
+ case ODCSET:
+ gpio_set_pulls(pin, true, false);
+ gpio_set_dir(pin, GPIO_IN);
+ sleep_us(2);
+ return;
+ case ANSELCLR:
+ gpio_set_function(pin, GPIO_FUNC_SIO);
+ gpio_set_dir(pin, GPIO_IN);
+ return;
+ default:
+ break;
+ //printf("Unknown PinSetBit command");
+ }
+}
+
+//important for read lcd memory
+void ResetController(void) {
+ PinSetBit(Pico_LCD_RST, LATSET);
+ sleep_us(10000);
+ PinSetBit(Pico_LCD_RST, LATCLR);
+ sleep_us(10000);
+ PinSetBit(Pico_LCD_RST, LATSET);
+ sleep_us(200000);
+}
+
+
+void pico_lcd_init() {
+#ifdef ILI9488
+ ResetController();
+
+ HRes = 320;
+#ifdef HARDWARE_SCROLL
+ VRes = 480; //logic vertical height
+#else
+ VRes = 320;
+#endif
+#if defined(CONFIG_PICOCALC)
+ spi_write_command(0xF0);
+ spi_write_data(0xC3);
+ spi_write_command(0xF0);
+ spi_write_data(0x96);
+ spi_write_command(TFT_MADCTL);
+ spi_write_data(0x48);
+ spi_write_command(0x3A);
+ spi_write_data(0x06);
+ spi_write_command(0xB4);
+ spi_write_data(0x00);
+ //spi_write_command(0xB6); //RGB Control
+ //spi_write_data(0x8A);
+ //spi_write_data(0x07);
+ //spi_write_data(0x27); //320 Gates
+ spi_write_command(0xB7);
+ spi_write_data(0xC6);
+ spi_write_command(0xB9);
+ spi_write_data(0x02);
+ spi_write_data(0xE0);
+ spi_write_command(0xC0);
+ spi_write_data(0x80);
+ spi_write_data(0x06);
+ spi_write_command(0xC1);
+ spi_write_data(0x15);
+ spi_write_command(0xC2);
+ spi_write_data(0xA7);
+ spi_write_command(0xC5);//VCOM
+ spi_write_data(0x04);
+ spi_write_command(0xE8);
+ spi_write_data(0x40);
+ spi_write_data(0x8A);
+ spi_write_data(0x00);
+ spi_write_data(0x00);
+ spi_write_data(0x29);
+ spi_write_data(0x19);
+ spi_write_data(0xAA);
+ spi_write_data(0x33);
+ spi_write_command(0xE0);
+ spi_write_data(0xF0);
+ spi_write_data(0x06);
+ spi_write_data(0x0F);
+ spi_write_data(0x05);
+ spi_write_data(0x04);
+ spi_write_data(0x20);
+ spi_write_data(0x37);
+ spi_write_data(0x33);
+ spi_write_data(0x4C);
+ spi_write_data(0x37);
+ spi_write_data(0x13);
+ spi_write_data(0x14);
+ spi_write_data(0x2B);
+ spi_write_data(0x31);
+ spi_write_command(0xE1);
+ spi_write_data(0xF0);
+ spi_write_data(0x11);
+ spi_write_data(0x1B);
+ spi_write_data(0x11);
+ spi_write_data(0x0F);
+ spi_write_data(0x0A);
+ spi_write_data(0x37);
+ spi_write_data(0x43);
+ spi_write_data(0x4C);
+ spi_write_data(0x37);
+ spi_write_data(0x13);
+ spi_write_data(0x13);
+ spi_write_data(0x2C);
+ spi_write_data(0x32);
+ spi_write_command(0xF0);
+ spi_write_data(0x3C);
+ spi_write_command(0xF0);
+ spi_write_data(0x69);
+ spi_write_command(0x35);
+ spi_write_data(0x00);
+ spi_write_command(TFT_SLPOUT);
+ sleep_ms(120); //ms
+ spi_write_command(TFT_DISPON);
+ sleep_ms(20);
+ spi_write_command(TFT_INVON);
+ spi_write_command(0x2A);
+ spi_write_data(0x00);
+ spi_write_data(0x00);
+ spi_write_data(0x01);
+ spi_write_data(0x3F);
+ spi_write_command(0x2B);
+ spi_write_data(0x00);
+ spi_write_data(0x00);
+ spi_write_data(0x01);
+ spi_write_data(0x3F);
+ spi_write_command(0x2C);
+#else
+ spi_write_command(0xE0); // Positive Gamma Control
+ spi_write_data(0x00);
+ spi_write_data(0x03);
+ spi_write_data(0x09);
+ spi_write_data(0x08);
+ spi_write_data(0x16);
+ spi_write_data(0x0A);
+ spi_write_data(0x3F);
+ spi_write_data(0x78);
+ spi_write_data(0x4C);
+ spi_write_data(0x09);
+ spi_write_data(0x0A);
+ spi_write_data(0x08);
+ spi_write_data(0x16);
+ spi_write_data(0x1A);
+ spi_write_data(0x0F);
+
+ spi_write_command(0XE1); // Negative Gamma Control
+ spi_write_data(0x00);
+ spi_write_data(0x16);
+ spi_write_data(0x19);
+ spi_write_data(0x03);
+ spi_write_data(0x0F);
+ spi_write_data(0x05);
+ spi_write_data(0x32);
+ spi_write_data(0x45);
+ spi_write_data(0x46);
+ spi_write_data(0x04);
+ spi_write_data(0x0E);
+ spi_write_data(0x0D);
+ spi_write_data(0x35);
+ spi_write_data(0x37);
+ spi_write_data(0x0F);
+
+ spi_write_command(0XC0); // Power Control 1
+ spi_write_data(0x17);
+ spi_write_data(0x15);
+
+ spi_write_command(0xC1); // Power Control 2
+ spi_write_data(0x41);
+
+ spi_write_command(0xC5); // VCOM Control
+ spi_write_data(0x00);
+ spi_write_data(0x12);
+ spi_write_data(0x80);
+
+ spi_write_command(TFT_MADCTL); // Memory Access Control
+ spi_write_data(0x48); // MX, BGR
+
+ spi_write_command(0x3A); // Pixel Interface Format
+ spi_write_data(0x66); // 18 bit colour for SPI
+
+ spi_write_command(0xB0); // Interface Mode Control
+ spi_write_data(0x00);
+
+ spi_write_command(0xB1); // Frame Rate Control
+ spi_write_data(0xA0);
+
+ spi_write_command(TFT_INVON);
+
+ spi_write_command(0xB4); // Display Inversion Control
+ spi_write_data(0x02);
+
+ spi_write_command(0xB6); // Display Function Control
+ spi_write_data(0x02);
+ spi_write_data(0x02);
+ spi_write_data(0x3B);
+
+ spi_write_command(0xB7); // Entry Mode Set
+ spi_write_data(0xC6);
+ spi_write_command(0xE9);
+ spi_write_data(0x00);
+
+ spi_write_command(0xF7); // Adjust Control 3
+ spi_write_data(0xA9);
+ spi_write_data(0x51);
+ spi_write_data(0x2C);
+ spi_write_data(0x82);
+
+ spi_write_command(TFT_SLPOUT); //Exit Sleep
+ sleep_ms(120);
+
+ spi_write_command(TFT_DISPON); //Display on
+ sleep_ms(120);
+
+ spi_write_command(TFT_MADCTL);
+ spi_write_cd(ILI9341_MEMCONTROL, 1, ILI9341_Portrait);
+#endif
+ setScrollArea(0,0);
+#endif
+}
+
+void lcd_spi_raise_cs(void) {
+ gpio_put(Pico_LCD_CS, 1);
+}
+
+void lcd_spi_lower_cs(void) {
+
+ gpio_put(Pico_LCD_CS, 0);
+
+}
+
+void spi_write_data(unsigned char data) {
+ gpio_put(Pico_LCD_DC, 1);
+ lcd_spi_lower_cs();
+ HWSendSPI(&data, 1);
+ lcd_spi_raise_cs();
+}
+
+void spi_write_data24(uint32_t data) {
+ uint8_t data_array[3];
+ data_array[0] = data >> 16;
+ data_array[1] = (data >> 8) & 0xFF;
+ data_array[2] = data & 0xFF;
+
+
+ gpio_put(Pico_LCD_DC, 1); // Data mode
+ gpio_put(Pico_LCD_CS, 0);
+ spi_write_blocking(Pico_LCD_SPI_MOD, data_array, 3);
+ gpio_put(Pico_LCD_CS, 1);
+}
+
+void spi_write_command(unsigned char data) {
+ gpio_put(Pico_LCD_DC, 0);
+ gpio_put(Pico_LCD_CS, 0);
+
+ spi_write_blocking(Pico_LCD_SPI_MOD, &data, 1);
+
+ gpio_put(Pico_LCD_CS, 1);
+}
+
+void spi_write_cd(unsigned char command, int data, ...) {
+ int i;
+ va_list ap;
+ va_start(ap, data);
+ spi_write_command(command);
+ for (i = 0; i < data; i++) spi_write_data((char) va_arg(ap, int));
+ va_end(ap);
+}
+
+void lcd_spi_init() {
+ // 初始化 GPIO
+ gpio_init(Pico_LCD_SCK);
+ gpio_init(Pico_LCD_TX);
+ gpio_init(Pico_LCD_RX);
+ gpio_init(Pico_LCD_CS);
+ gpio_init(Pico_LCD_DC);
+ gpio_init(Pico_LCD_RST);
+
+ gpio_set_dir(Pico_LCD_SCK, GPIO_OUT);
+ gpio_set_dir(Pico_LCD_TX, GPIO_OUT);
+ //gpio_set_dir(Pico_LCD_RX, GPIO_IN);
+ gpio_set_dir(Pico_LCD_CS, GPIO_OUT);
+ gpio_set_dir(Pico_LCD_DC, GPIO_OUT);
+ gpio_set_dir(Pico_LCD_RST, GPIO_OUT);
+
+ // 初始化 SPI
+ spi_init(Pico_LCD_SPI_MOD, LCD_SPI_SPEED);
+ gpio_set_function(Pico_LCD_SCK, GPIO_FUNC_SPI);
+ gpio_set_function(Pico_LCD_TX, GPIO_FUNC_SPI);
+ gpio_set_function(Pico_LCD_RX, GPIO_FUNC_SPI);
+ gpio_set_input_hysteresis_enabled(Pico_LCD_RX, true);
+
+ gpio_put(Pico_LCD_CS, 1);
+ gpio_put(Pico_LCD_RST, 1);
+}
+
+void setBacklight(int level){//STM32: i2c reg is REG_ID_BKL(0x05)
+ //level is 0-100%
+ level*=255;
+ level/=100;
+ I2C_Send_RegData(I2C_KBD_ADDR,0x05,(uint8_t)level);
+}
+
+void lcd_init() {
+
+ lcd_spi_init();
+ pico_lcd_init();
+ init_fonts();
+ SetFont(0x01);
+ gui_fcolour = GREEN;
+ gui_bcolour = BLACK;
+
+}
diff --git a/Kernel/platform/platform-rpipico/lcdspi.h b/Kernel/platform/platform-rpipico/lcdspi.h
new file mode 100644
index 000000000..255142786
--- /dev/null
+++ b/Kernel/platform/platform-rpipico/lcdspi.h
@@ -0,0 +1,134 @@
+#ifndef LCDSPI_H
+#define LCDSPI_H
+#include "pico/multicore.h"
+#include <hardware/spi.h>
+#include "devtty.h"
+//#define LCD_SPI_SPEED 6000000
+#define LCD_SPI_SPEED 25000000
+//#define LCD_SPI_SPEED 50000000
+
+#define Pico_LCD_SCK 10 //
+#define Pico_LCD_TX 11 // MOSI
+#define Pico_LCD_RX 12 // MISO
+#define Pico_LCD_CS 13 //
+#define Pico_LCD_DC 14
+#define Pico_LCD_RST 15
+
+#define ILI9488 1
+#define HARDWARE_SCROLL 1 //use 0x33 0x37 to do vertical scrolling
+#ifdef ILI9488
+#define LCD_WIDTH 320
+#define LCD_HEIGHT 320
+#define LCD_REAL_HEIGHT 480 // ILI9488 real height is 480
+#endif
+
+#define PIXFMT_BGR 1
+
+#define TFT_SLPOUT 0x11
+#define TFT_INVOFF 0x20
+#define TFT_INVON 0x21
+
+#define TFT_DISPOFF 0x28
+#define TFT_DISPON 0x29
+#define TFT_MADCTL 0x36
+
+#define ILI9341_MEMCONTROL 0x36
+#define ILI9341_MADCTL_MX 0x40
+#define ILI9341_MADCTL_BGR 0x08
+
+#define ILI9341_COLADDRSET 0x2A
+#define ILI9341_PAGEADDRSET 0x2B
+#define ILI9341_MEMORYWRITE 0x2C
+#define ILI9341_RAMRD 0x2E
+
+#define ILI9341_Portrait ILI9341_MADCTL_MX | ILI9341_MADCTL_BGR
+
+#define ORIENT_NORMAL 0
+
+#define RGB(red, green, blue) (unsigned int) (((red & 0b11111111) << 16) | ((green & 0b11111111) << 8) | (blue & 0b11111111))
+#define WHITE RGB(255, 255, 255) //0b1111
+#define YELLOW RGB(255, 255, 0) //0b1110
+#define LILAC RGB(255, 128, 255) //0b1101
+#define BROWN RGB(255, 128, 0) //0b1100
+#define FUCHSIA RGB(255, 64, 255) //0b1011
+#define RUST RGB(255, 64, 0) //0b1010
+#define MAGENTA RGB(255, 0, 255) //0b1001
+#define RED RGB(255, 0, 0) //0b1000
+#define CYAN RGB(0, 255, 255) //0b0111
+#define GREEN RGB(0, 255, 0) //0b0110
+#define CERULEAN RGB(0, 128, 255) //0b0101
+#define MIDGREEN RGB(0, 128, 0) //0b0100
+#define COBALT RGB(0, 64, 255) //0b0011
+#define MYRTLE RGB(0, 64, 0) //0b0010
+#define BLUE RGB(0, 0, 255) //0b0001
+#define BLACK RGB(0, 0, 0) //0b0000
+#define BROWN RGB(255, 128, 0)
+#define GRAY RGB(128, 128, 128)
+#define LITEGRAY RGB(210, 210, 210)
+#define ORANGE RGB(0xff, 0xA5, 0)
+#define PINK RGB(0xFF, 0xA0, 0xAB)
+#define GOLD RGB(0xFF, 0xD7, 0x00)
+#define SALMON RGB(0xFA, 0x80, 0x72)
+#define BEIGE RGB(0xF5, 0xF5, 0xDC)
+
+//Pico spi0 or spi1 must match GPIO pins used above.
+#define Pico_LCD_SPI_MOD spi1
+#define nop asm("NOP")
+//xmit_byte_multi == HW1SendSPI
+
+
+#define PORTCLR 1
+#define PORTSET 2
+#define PORTINV 3
+#define LAT 4
+#define LATCLR 5
+#define LATSET 6
+#define LATINV 7
+#define ODC 8
+#define ODCCLR 9
+#define ODCSET 10
+#define CNPU 12
+#define CNPUCLR 13
+#define CNPUSET 14
+#define CNPUINV 15
+#define CNPD 16
+#define CNPDCLR 17
+#define CNPDSET 18
+
+#define ANSELCLR -7
+#define ANSELSET -6
+#define ANSELINV -5
+#define TRIS -4
+#define TRISCLR -3
+#define TRISSET -2
+
+extern void __not_in_flash_func(spi_write_fast)(spi_inst_t *spi, const uint8_t *src, size_t len);
+extern void __not_in_flash_func(spi_finish)(spi_inst_t *spi);
+extern void HWReadSPI(unsigned char *buff, int cnt);
+extern void HWSendSPI(const unsigned char *buff, int cnt);
+extern unsigned char __not_in_flash_func(HW1SwapSPI)(unsigned char data_out);
+
+extern void lcd_spi_raise_cs(void);
+extern void lcd_spi_lower_cs(void);
+extern void spi_write_data(unsigned char data);
+extern void spi_write_command(unsigned char data);
+extern void spi_write_cd(unsigned char command, int data, ...);
+extern void spi_write_data24(uint32_t data);
+
+extern void spi_draw_pixel(uint16_t x, uint16_t y, uint16_t color) ;
+extern void lcd_putc(uint8_t devn, uint8_t c);
+extern int lcd_getc(uint8_t devn);
+extern void lcd_sleeping(uint8_t devn);
+extern ttyready_t lcd_ready(uint8_t devn);
+
+extern void lcd_spi_init();
+extern void lcd_init();
+extern void lcd_clear();
+extern void ResetController(void);
+extern void PinSetBit(int pin, unsigned int offset);
+
+void setBacklight(int level);
+void setScrollArea(uint16_t topFixedArea, uint16_t bottomFixedArea);
+void HWScroll(uint16_t pixels);
+
+#endif
diff --git a/Kernel/platform/platform-rpipico/picosdk.h b/Kernel/platform/platform-rpipico/picosdk.h
index e5fd3c9d5..6ae8a3c9c 100644
--- a/Kernel/platform/platform-rpipico/picosdk.h
+++ b/Kernel/platform/platform-rpipico/picosdk.h
@@ -1,9 +1,11 @@
#define MANGLED 0
#include "mangle.h"
+#include <pico/stdlib.h>
+#include <pico/platform.h>
#include <hardware/gpio.h>
#include <hardware/regs/addressmap.h>
-#include "pico/stdlib.h"
+#include "hardware/sync.h"
#define MANGLED 1
#include "mangle.h"
diff --git a/Kernel/start.c b/Kernel/start.c
index 0c8112c7d..d96cb7638 100644
--- a/Kernel/start.c
+++ b/Kernel/start.c
@@ -283,9 +283,14 @@ static char bootline[64];
uint16_t get_root_dev(void)
{
uint16_t rd = BAD_ROOT_DEV;
-
+
if (cmdline && *cmdline){
+ kputs(cmdline);
+#ifdef DEBUG
+ kprintf("cmdline: %s\n",cmdline);
+#endif
rd = bootdevice(cmdline);
+
}
cmdline = NULL; /* ignore cmdline if get_root_dev() is called again */
diff --git a/README.md b/README.md
index 78d522661..4a7e3d905 100644
--- a/README.md
+++ b/README.md
@@ -1,122 +1,60 @@
-** ENGINEERING WORK IN PROGRESS **
+# FUZIX on PicoCalc
-The Z80 side of the tree is currently moving to the new compiler including
-work on the compiler, linker and kernel. Thus some bits of it require you
-have absolutely bleeding edge pieces all around. I would suggest avoiding
-working on this tree for Z80 stuff right now. Non Z80 should be just fine.
+This repo is a fork of the upstream FUZIX project.
+It maintains a small patchset that enables FUZIX
+to boot on a PicoCalc device.
-**FuzixOS**: Because Small Is Beautiful
-
-This is the initial public tree for the FuzixOS project. It is not yet useful although you can build and boot it and run
-test application code. A lot of work is needed on the utilities and libraries.
-
-# FUZIX
-
-FUZIX is a fusion of various elements from the assorted UZI forks and
-branches beaten together into some kind of semi-coherent platform and then
-extended from V7 to somewhere in the SYS3 to SYS5.x world with bits of POSIX
-thrown in for good measure. Various learnings and tricks from ELKS and from
-OMU also got blended in
-
-# Pre-built images
-
-Some pre-built filesystems are now available on www.fuzix.org, and other
-images should follow in time.
-
-# Supporting Fuzix
-
-As this gets asked a bit. The best way to support Fuzix is to contribute
-code and/or docs. It's really an art project in computing.
-
-If you want to spend money then please just buy a homeless person a pizza or a
-coat or something like that. If you are changing electricity suppliers in the
-UK to Octopus then signing up through this link gets both of us £50. Not an
-endorsement, Octopus merely suck less than other UK energy suppliers.
-
-https://share.octopus.energy/amber-calf-514
-
-## Tools
-
-For the 6800, 8080, 8085, Z80 and Z180 the code is now built with the Fuzix C
-Compiler and Bintools which are also in github. See instructions for
-building them. Some kernels still need the customised SDCC 3.8 from from
-this github. 65C816 and Z8 are a work in progress moving to this compiler.
-
-6502 is currently built with cc65 and a distribution version should work.
-
-6303/6803 are built with CC6303 (again in this github)
-
-6809 is built with lwtools and the including gcc fork.
-
-Other targets use gcc variants. See the target specific information.
-
-## What does FUZIX have over UZI
-
-* Support for multiple processes in banked memory (as per UZI180) but
- with Minix style chmem and efficient use of bank allocations.
-* Support for multiple processes via hard disk or non mappable RAM
- drive switching (as per UZI, UZIX).
-* Support for "real" swapping combined with banked memory.
-* Proper sane off_t and lseek
-* Normal dev_t
-* 30 character filenames
-* Proper sane time_t
-* System 5 signals
-* Posix termios (does all the original UZI tty did but much can be added)
-* Blocking on carrier for terminals
-* Optimisations to avoid bogus uarea copying compared to UZI180
-* More modern system call API: 3 argument open, mkdir, rmdir, rename,
- chroot (with correct .. semantics), fchdir, fchmod, fchown, fstat,
- fcntl, setpgrp, sighold and friends, waitpid, setpgrp, nice
- O_NDELAY, O_CLOEXEC, F_SETFL, F_DUPFD etc
-* Address validation checks on all syscall copies
-* Builds with a modern ANSI C compiler (SDCC)
-* Kernel boots to userspace on 6303, 6502, 65C816, 6800, 68000, 6803, 6809, 68HC11, 8080, 8085, arm32, esp8266, MSP430 (bitrotted) and eZ80/Z80/Z180
-* Core code can be built for 6303, 6502, 65C816, 68000, 6800, 6803, 6809, 68HC11, 8080, 8085, 8086, arm32, esp8266, MSP430, pdp11, rabbit r2k/r3k and eZ80/Z80/Z180 so should be far more portable
-* Core architecture designed to support building and maintaining
- multiple target machines without forking each one
-* Helpers to make many bits of implementation wrappers to core code
-* Lots more bugs right now
-
-## What does UZI have over FUZIX
-
-* Can run in 64K of RAM (32K kernel/32K user). FUZIX needs
- banked ROM or similar to pull this off. If you have banked
- ROM then our kernel footprint in RAM is about 8K plus userspace
- plus any framebuffers and similar overhead. On a 6809 it's just
- about possible to run in a straight 64K
-
-## What do the UZI branches have that FUZIX has not yet integrated
-
-* Symbolic links (UZIX)
-* Various clever fusions of syscalls that may save a few bytes
- (UZIX)
-* setprio (UZIX)
-* Rather crude loadable drivers (UZIX)
-* Use of __naked and __asm for Z80 specific bits to avoid more
- .S files than are needed (UMZIX)
-
-Plus OMU has a really clever function passing trick for open/creat and
-friends, while UMZIX has a neat unified "make anything" function.
-
-## What Key Features Are Missing Still
-
-* ptrace, most of ulimit
-* root reserved disk blocks
-* banked executables
-* TCP/IP (in progress)
-* select/poll() (in progress)
-* Support for > 32MB filesystems (but first figure out how to fsck
- a giant fs on a slow 8bit micro!)
-* Smarter scheduler
-* Optimisations for disk block/inode allocator (2.11BSD)
-
-## Tool Issues
-
-* 6809 gcc and cc65 don't have long long 64bit (for sane time_t)
-* None of the above have an O88 style common sequence compressor
-* CC65 can't handle larger objects on stack, and lacks float support
-* We need a 'proper' 65C816 C compiler
-
-[travis-image]: https://travis-ci.org/EtchedPixels/FUZIX.png?branch=master
-[travis-url]: https://travis-ci.org/EtchedPixels/FUZIX
+It currently builds and publishes images for
+the pico2 and pico_w.
+
+The patchset was originally taken from https://github.com/clockworkpi/PicoCalc
+
+## Downloads
+
+[Download](https://github.com/wez/FUZIX/releases/tag/clockworkpi-continuous)
+
+## Installation
+
+* Attach a USB cable to the pico
+* Hold down the bootsel button and power cycle the pico
+* Copy the fuzix.uf2 to RP mount point
+
+To update the filesystem image on your SD card, you can use dd to put it on
+the second partition:
+
+```console
+$ dd if=filesystem.img of=/dev/sdb2 oflag=direct bs=8192 status=progress
+```
+
+Make sure to change the `of` to match your device and ensure that you
+are writing it to the correct device! You will typically need root
+privileges to perform that dd command.
+
+See [the PicoCalc repo for more information](https://github.com/clockworkpi/PicoCalc/tree/master/Bin/PicoCalc%20SD#flashing-the-fuzix-32mb-image)
+
+## Iterating
+
+I (@wez) am by no means an expert of FUZIX, but I've found the following things
+useful when iterating on building stuff in here:
+
+* You can use `picoctl flash` to reset into flash mode, which saves some hassle
+ if you want to update the kernel image
+* To clean and rebuild the kernel image, without cmake over-aggressively caching things, use:
+
+```console
+$ make -C Kernel/platform/platform-rpipico/ clean
+$ make TARGET=rpipico SUBTARGET=pico2_w diskimage
+```
+
+## Customizing your filesystem image
+
+* You probably want to `echo "stty erase '^?'" > .profile` to make
+ delete/backspace work over the serial console
+* If you add an additional partition to your SD card, you can enable swap on it; the maximum size that can be used is 2048kB; you can create a partition larger than that size, but you can only use 2048kB or 4096 blocks of it. The following command will use that size:
+
+```console
+$ swapon /dev/hda3 4096
+```
+
+You can put that command into `/etc/rc` using `levee` as an editor; it is
+similar to `vi`.