[
  {
    "path": ".github/workflows/cmake.yml",
    "content": "name: CMake\n\non:\n  # Trigger the workflow on push or pull request,\n  # but only for the main branch\n  push:\n    branches:\n      - main\n  pull_request:\n    branches:\n      - main\n\nenv:\n  # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)\n  BUILD_TYPE: Release\n  PICO_SDK_FETCH_FROM_GIT: 1\n\njobs:\n  build-firmware:\n    # The CMake configure and build commands are platform agnostic and should work equally\n    # well on Windows or Mac.  You can convert this to a matrix build if you need\n    # cross-platform coverage.\n    # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix\n    runs-on: ubuntu-latest\n    name: build-frmware\n\n    steps:\n    - uses: actions/checkout@v2\n\n    - name: Install libs\n      # Some projects don't allow in-source building, so create a separate build directory\n      # We'll use this as our working directory for all subsequent commands\n      run: sudo apt-get install -y gcc-arm-none-eabi\n\n    - name: Create Build Environment\n      shell: bash\n      run: cmake -E make_directory ${{runner.workspace}}/build\n\n    - name: Configure CMake\n      shell: bash\n      working-directory: ${{runner.workspace}}/build\n      run: cmake $GITHUB_WORKSPACE\n\n    - name: Build firmware\n      working-directory: ${{runner.workspace}}/build\n      shell: bash\n      run: cmake --build .\n\n"
  },
  {
    "path": "CMakeLists.txt",
    "content": "# Generated Cmake Pico project file\r\n#\r\n# After changing this file, empty the build folder and execute from there:  \r\n#     cmake -G \"Ninja\" ..\r\n#\r\n\r\ncmake_minimum_required(VERSION 3.13)\r\n\r\nset(CMAKE_C_STANDARD 11)\r\nset(CMAKE_CXX_STANDARD 17)\r\n\r\n# initalize pico_sdk from installed location\r\n# (note this can come from environment, CMake cache etc)\r\nset(PICO_SDK_PATH \"C:/Program Files/Raspberry Pi/Pico SDK v1.5.1/pico-sdk\")\r\n\r\n# Pull in Raspberry Pi Pico SDK (must be before project)\r\ninclude(${PICO_SDK_PATH}/external/pico_sdk_import.cmake)\r\n\r\nproject(uSDR-Pico C CXX ASM)\r\n\r\n# Initialise the Raspberry Pi Pico SDK\r\npico_sdk_init()\r\n\r\n# Add executable. Default name is the project name, version 0.1\r\n# uSDR.c\tmain loop and initialisation of the software\r\n# lcd.c\t\tLCD driver stuff; pay attention, X different HW implementations exist\r\n# si5351.c\tThe drivers for setting output frequency and phase in the SI5351 chip\r\n# dsp.c\t\tThe signal processing stuff, either timedomain or frequency domain\r\n# fix_fft.c\tThe FFT transformations in fixed point format\r\n# hmi.c\t\tAll user interaction, controlling freq, modulation, levels, etc\r\n# monitor.c\tA tty shell on a serial interface\r\n# relay.c\tSwitching for the band filter and attenuator relays\r\n# font?.c\tGraphical character fonts\r\nadd_executable(uSDR-Pico \r\n\tuSDR.c \r\n\tlcd.c \r\n\tsi5351.c \r\n\tdsp.c \r\n\tfix_fft.c \r\n\thmi.c \r\n\tmonitor.c \r\n\trelay.c\r\n\tfont7spp.c\r\n\tfont8.c\r\n\tfont16.c\r\n\tfont20.c\r\n\tfont24.c\r\n\tfontub.c\r\n\tfontubb.c\r\n\tfontAR.c\r\n\tfontGR.c\r\n\tfontSYM32.c\r\n\tfontSYM16.c\r\n)\r\n\r\ntarget_compile_options(uSDR-Pico PRIVATE -Wall)\r\npico_set_program_name(uSDR-Pico \"uSDR-Pico\")\r\npico_set_program_version(uSDR-Pico \"4.0\")\r\n\r\n# Pull in our pico_stdlib which aggregates commonly used features\r\ntarget_link_libraries(uSDR-Pico pico_stdlib)\r\n\r\n# Disable uart output, enable usb output\r\npico_enable_stdio_uart(uSDR-Pico 0)\r\npico_enable_stdio_usb(uSDR-Pico 1)\r\n\r\n# Add any user requested libraries\r\ntarget_link_libraries(uSDR-Pico\r\n        pico_stdlib\r\n\t\tpico_multicore\r\n\t\thardware_i2c\r\n\t\thardware_spi\r\n\t\thardware_pwm\r\n        hardware_gpio\r\n        hardware_timer\r\n        hardware_clocks\r\n\t\thardware_pll\r\n\t\thardware_adc\r\n\t\thardware_dma\r\n        )\r\n\t\t\r\n# create map/bin/hex/uf2 file in addition to ELF.\r\npico_add_extra_outputs(uSDR-Pico)\r\n\r\n"
  },
  {
    "path": "README.md",
    "content": "![uSDR-Pico 4](https://github.com/ArjanteMarvelde/uSDR-pico/blob/main/doc/uSDR-Pico-4.jpg)  \n\nThe new V4.0 is now available:  \n- Integrated audio on the CPU board  \n- Moved VFO to Mixer board    \n- Use discrete MMIC for LNA on RX board  \n- New low power TX board  \n- New layout BPF board  \n- Proper bus connectors for all 5 boards,  \n- Increased board size: 2\" x 3.7\", with the bus connectors this enables a cleaner stack  \n- LCD graphical display (ILI9341 based: 320x240)  \n- No more RS232, replaced with USB interface which can also be used for programming  \n- Recalculated all filters  \n\nThe V4.0 schematics are now available in KiCAD format, so open for all to adapt. In the package I included a library with some dedicated definitions. Note that there are some patches needed to make things functional. These are described in the documentation. New software to run on this upgrade is also available as a package. Please update your SDK before building.\n\nThe V4.1 SW package is also available. This version only works when the patches on the HW have been made, as described in the [V4.10](https://github.com/ArjanteMarvelde/uSDR-pico/blob/main/doc/uSDR%20-%20v4.10.pdf) documentation. \n\nStill to be done:   \n- More software updates   \n\n# uSDR-pico\nThis Git repository contains a Micro-SDR implementation, based on a RP2040 Pi Pico.  \n\nThe project is highly experimental, foremost intended to investigate how the Pico HW and SDK work with an application like this. Also, it is a platform to experiment with digital signal processing techniques. The repository contains the code for an experimental implementation of the control and signal processing for a Quadrature Sampling Detector (QSD) and - Exciter (QSE) based transceiver. \nFor completeness, the repository contains the electronic design of some modules that cover the mixing, filtering and RF amplification, as I have implemented in my prototype. See the *doc* subdirectory for full documentation.   \n\nThe ZIP files contain a consistent package, but the latest code with all the bug fixes and some new features is contained in the files in the main directory.  \nStarting with the V3.00 package **uSDR-pico** contains *two signal processing engines*, selectable with a compile switch in uSDR.h. The first engine is the  time domain processor, more or less as in V2.00, and the second engine is a new FFT-based frequency domain processor.  \nFor a more detailed description of the software and the hardware, again refer to the elaborate documentation.  \n\nThe processor platform is a Pi Pico module, with an RP2040 device. This processor has dual cores running at 125MHz each, and a very configurable I/O which eases the HW design enormously. The platform can be overclocked, but some functions seem to become unstable when pushed too far. It is one of the topics for further investigation, although performance-wise not neccessary at the moment.\nThe software is distributed over the two cores: *core0* takes care of all user I/O and control functions, while *core1* performs all of the signal processing. The *core1* functionality consists of a TX-branch and an RX-branch, each invoked by a function that is synchronized by a timer every 64usec. Hence the signal processing rythm on *core1* effectively is 15.625kHz.  \nOn *core1* the three ADC channels are continuously sampled at maximum speed in round-robin mode. Samples are therefore taken every 6usec for each channel, maximum jitter between I and Q channels is 2usec, which has a negligible effect in the audio domain.  \nFor the time domain processing the TX and RX functions are executed within every 64usec timeslot, but for the frequency domain processing the samples are collected until half an FFT buffer is filled (512 samples), and hence this happens every 32msec (in background).  \nOn *core0* the main loop takes care of user I/O, all other controls and the monitor port. There is also a LED flashing timer callback functioning as a heartbeat.\n\nThe Pico controls an Si5351A clock module to obtain the switching clock for the QSE and QSD. The module outputs two synchronous square wave clocks on ch 0 and 1, whith selectable phase difference (0, 90, 180 or 270 degrees). The clock on ch2 is free to be used for other goals. The module is controlled over one of the I2C channels.\nThe display is a standard 16x2 LCD, but with an I2C interface. The display is connected through the other I2C channel, as well as the bus expanders for controlling the various relays.\n\n## Open issues: \n- [ ] all SW to be tested on new v4.10 HW\n- [ ] add simple waterfall over the 7.8kHz FFT band, as tuning assist  \n- [ ] upgrade SDK and HW to the Pico 2 board\n- [ ] audio interface over USB  \n \n\n## Installing and using the SDK: \nForget about collecting all the tooling manually in Windows, and avoid going through the hassle of keeping all things in sync. Instead, use Ubuntu on WSL (Windows Subsystem for Linux) and use the command line interface to generate your build. You can still edit the source files in Windows e.g. with Notepad++.  \n### Ubuntu on WSL \nMake sure that virtualization is enabled in BIOS  \nopen Powershell as administrator  \n- wsl --install\n\nrestart computer  \nopen Powershell as administrator  \n- wsl.exe --list --online  \n(to see the list of distro's)  \n- wsl.exe --install [Distro]  \n(I have used *Ubuntu-24.04*)\n\nexit Powershell  \nrun ubuntu from the Start menu  \n- sudo apt update  \n- sudo apt upgrade  \n- sudo apt install cmake gcc-arm-none-eabi build-essential libnewlib-arm-none-eabi git  \n### Get SDK and other stuff \nrun ubuntu from the Start menu  \n- cd ~  \n- mkdir pico  \n- cd pico  \n- git clone -b master https://github.com/raspberrypi/pico-sdk.git  \n- cd pico-sdk  \n- git submodule update --init   \n- cd ~/pico  \n- git clone -b master https://github.com/raspberrypi/pico-examples.git  \n- cd ~  \n- nano .bashrc  \nadd to the end: *export PICO_SDK_PATH=~/pico/pico-sdk*  \n(now the *CMakeLists.txt* file no longer needs to set this)  \n- save file and exit nano  \n- exit  \n### Test with blink example  \nrun ubuntu from the Start menu  \n- cd ~/pico/pico-examples  \n- mkdir build  \n- cd build  \n- cmake ..  \n- cd blink  \n- make\n  \n### Some hints  \nIn Ubuntu the windows C:\\ is available under **/mnt/c**  \nLikewise, the Documents folder: **/mnt/c/Users/<user>/Documents**  \nUse \"explorer.exe .\" to open a windows explorer in the current directory  \n  \n## Building uSDR-pico:    \nIn ubuntu, git clone the uSDR-pico files: \"cd ~~/pico; git clone https://github.com/ArjanteMarvelde/uSDR-pico\".  \nCreate the build folder: \"mkdir ~~/pico/uSDR-pico/build\".  \nEdit **~/pico/uSDR-pico/CMakeLists.txt** to have the correct environment parameter *PICO_SDK_PATH*, but it should also take it from the environment setting. In line with above installation this will be \"~/pico/pico-sdk\".  \nNow create the build environment, \"cd ~/pico/uSDR-pico/build; cmake ..\".  \n*Note* that every time you change something in **CMakeLists.txt** (like adding another source file to the build) you will have to clean the build folder and execute cmake once more: \"cd ~/pico/uSDR-pico/build; rm -rf *; cmake ..\".   \n\nNow you have initialized the build environment and by executing **make** in the **build** folder, all SDK libraries and finally the Pi Pico loadable file **uSDR.uf2** will be created.  \n*Note that when environment errors are encountered, it may help to empty the build folder and re-issue the cmake command.*   \nRebooting the Pico while the bootsel button is pressed will open a Windows Explorer window with the Pico shown as a Mass Storage Device (e.g. drive E:). Moving **uSDR.uf2** from the build to the Pico drive is as easy as dragging and dropping this file in windows explorer.  \n  \n## Releases  \nStable packages are archived in zip files. The source files in the root folder are newest and could be used to replace files from the zip archive. There are pre-built UF2 files for three display types, which could be tried. However, there are too many differnt types and addresses, so it is better to build a fresh one for your own implementation.   \nThe PCB files have been made with Eagle 5.11, and can be modified or otherwise re-used when needed. The CAM files for each board are packaged in separate zips, these can be used as-is to order PCBs.  \n\n# Background\nThe Raspberry website contains the manuals, of which the *C-SDK description*, the *RP2040 datasheet* and the *Pico Pinout* are absolute must-reads when you start writing software.    \nFor calculating filters I have used the free software from [Iowa Hills](http://www.iowahills.com/8DownloadPage.html) (website has been down for a while, but files can be found using [Wayback Machine]( https://web.archive.org/web/20210819042054/http://www.iowahills.com/8DownloadPage.html))  \nI also used the online FIR filter calculator [T-Filter](http://t-filter.engineerjs.com/) \n\n# Copyright notice\n**The code and electronic designs as well as the implementations presented in this repository can be copied and modified freely, for non-commercial use.\nUse for commercial purposes is allowed as well, as long as a reference to this repository is included in the product.**\n\nSee also my [Wave Form Generator](https://github.com/ArjanteMarvelde/uWFG-Pico) project. \n"
  },
  {
    "path": "dsp.c",
    "content": "/*\r\n * dsp.c\r\n *\r\n * Created: Mar 2021\r\n * Author: Arjan te Marvelde\r\n * \r\n * Signal processing of RX and TX branch, to be run on the second processor core (CORE1).\r\n * \r\n * The actual DSP engine can be either FFT based in the frequency domain, or in the time domain.\r\n * In dsp.h this can be selected compile-time, by defining the environment variable DSP_FFT.\r\n *\r\n */\r\n\r\n#include \"pico/stdlib.h\"\r\n#include \"pico/multicore.h\"\r\n#include \"pico/platform.h\"\r\n#include \"pico/time.h\"\r\n#include \"pico/sem.h\"\r\n#include \"hardware/structs/bus_ctrl.h\"\r\n#include \"hardware/pwm.h\"\r\n#include \"hardware/adc.h\"\r\n#include \"hardware/dma.h\"\r\n#include \"hardware/irq.h\"\r\n#include \"hardware/timer.h\"\r\n#include \"hardware/clocks.h\"\r\n\r\n#include \"uSDR.h\"\r\n#include \"dsp.h\"\r\n#include \"hmi.h\"\r\n#include \"fix_fft.h\"\r\n\r\n\r\nvolatile bool    tx_enabled;\t\t\t\t\t\t\t\t\t\t\t\t// TX branch active\r\nvolatile int32_t dsp_overrun;\t\t\t\t\t\t\t\t\t\t\t\t// Overrun counter (could be underrun too)\r\n\r\n\r\n/* \r\n * DAC_RANGE defines PWM cycle, determining DAC resolution and PWM frequency.\r\n * DAC resolution = Vcc / DAC_RANGE\r\n * PWM frequency = Fsys / DAC_RANGE\r\n * A value of 250 means 125MHz/250=500kHz\r\n * ADC is 12 bit, so resolution is by definition 4096\r\n */\r\n#define DAC_RANGE\t256\r\n#define DAC_BIAS\t(DAC_RANGE/2)\r\n#define ADC_RANGE\t4096\r\n#define ADC_BIAS\t(ADC_RANGE/2)\r\n\r\n\r\nvolatile uint16_t dac_iq, dac_audio;\r\n\r\n\r\n/*** External Interfaces, mostly used by hmi.c ***/\r\n\r\n/*\r\n * MODE is modulation/demodulation \r\n * This setting steers the signal processing branch chosen\r\n */\r\nvolatile int dsp_mode;\r\nvoid dsp_setmode(int mode)\r\n{\r\n\tdsp_mode = mode;\r\n}\r\n\r\n\r\n/*\r\n * S-Meter is for now based on RSSI, which is in fact the signal level in the preprocessor, \r\n * in uV equivalent. The S level makes 6dB steps, i.e. factor 2 in voltage. The length of \r\n * the (I,Q) vector (amplitude) of Rx signal is taken as reference for RSSI. This covers the \r\n * whole sampled RX band, and is not specific to a particular station. To realize that, the \r\n * S value must be calculated after FFT and for the specific tuning frequency.\r\n * Returned S value is highest bit set, i.e. RSSI of 512 corresponds with S9 (S=log2(RSSI))\r\n * This value was calibrated roughly by using the sam antenna and \r\n *   comparing an IC R71-E with my uSDR HW implementation and ADC_INT=8.\r\n * +20dB means 10x the S-9 RSSI level, or >5120\r\n * +40dB means 100x the S-9 RSSI level, or >51200\r\n */\r\n#define S940\t51200\r\n#define S930\t16180\r\n#define S920\t5120\r\n#define S910\t1618\r\n#define S9\t\t512\r\n#define S8\t\t256\r\n#define S7\t\t128\r\n#define S6\t\t64\r\n#define S5\t\t32\r\n#define S4\t\t16\r\n#define S3\t\t8\r\n#define S2\t\t4\r\n#define S1\t\t2\r\n\r\n#define LSH\t\t\t\t12\t\t\t\t\t\t\t\t\t\t\t\t\t// LPF SHift coefficient for level measurement\r\nvolatile uint32_t dsp_rssi, dsp_vox;\t\t\t\t\t\t\t\t\t\t// Signal levels for IF and Audio ADC channels (fixed point 16.16)\r\nint get_sval(void)\r\n{\r\n\tuint32_t sval = GET_RSSI_LEVEL;\t\t\t\t\t\t\t\t\t\t\t// Make local copy to prevent access glitches\r\n\tif (sval>S940) return(94);\t\t\t\t\t\t\t\t\t\t\t\t// Return max 2 digits!\r\n\tif (sval>S930) return(93);\r\n\tif (sval>S920) return(92);\r\n\tif (sval>S910) return(91);\r\n\tif (sval>S9)   return(9);\r\n\tif (sval>S8)   return(8);\r\n\tif (sval>S7)   return(7);\r\n\tif (sval>S6)   return(6);\r\n\tif (sval>S5)   return(5);\r\n\tif (sval>S4)   return(4);\r\n\tif (sval>S3)   return(3);\r\n\tif (sval>S2)   return(2);\r\n\treturn(1);\r\n}\r\n\r\n/*\r\n * AGC reference level is log2(0x40) = 6, where 0x40 is the MSB of half DAC_RANGE\r\n * 1/AGC_DECAY and 1/AGC_ATTACK are multipliers before agc_gain value integrator\r\n * These values should ultimately be set by the HMI.\r\n * The time it takes to a gain change is the ( (Set time)/(signal delta) ) / samplerate\r\n * So when delta is 1, and attack is 64, the time is 64/15625 = 4msec (fast attack)\r\n * The decay time is about 100x this value\r\n * Slow attack would be about 4096\r\n */\r\n#define AGC_REF\t\t6\r\n#define AGC_DECAY\t8192\r\n#define AGC_SHORT\t64\r\n#define AGC_LONG\t4096\r\n#define AGC_DIS\t\t32766\r\n#define IFAGC_TOP\t1023\r\n#define RXAGC_TOP\t2047\r\n#define TXAGC_TOP\t2047\r\nvolatile uint16_t agc_decay  = AGC_DIS;\r\nvolatile uint16_t agc_attack = AGC_DIS;\r\n\r\nvoid dsp_setagc(int agc)\r\n{\r\n\tswitch(agc)\r\n\t{\r\n\tcase AGC_SLOW:\r\n\t\tagc_attack = AGC_LONG;\r\n\t\tagc_decay  = AGC_DECAY;\r\n\t\tbreak;\r\n\tcase AGC_FAST:\r\n\t\tagc_attack = AGC_SHORT;\r\n\t\tagc_decay  = AGC_DECAY;\r\n\t\tbreak;\r\n\tdefault:\r\n\t\tagc_attack = AGC_DIS;\r\n\t\tagc_decay  = AGC_DIS;\r\n\t\tbreak;\r\n\t}\r\n}\r\n\r\n\r\n\r\n/*\r\n * VOX LINGER is the number msec to wait before releasing TX mode\r\n * The level of detection is derived from the maximum ADC range.\r\n */\r\n#define VOX_LINGER\t\t500\t\t\t\t\t\t\t\t\t\t\t\t\t// 500msec\r\n\r\nvolatile uint16_t vox_count = 0;\t\t\t\t\t\t\t\t\t\t\t// Linger time in # of samples\r\nvolatile uint16_t vox_level = 0;\t\t\t\t\t\t\t\t\t\t\t// ADC_BIAS is maximum amplitude from ADC\r\nvolatile bool\t  vox_active;\t\t\t\t\t\t\t\t\t\t\t\t// Is set when audio energy > vox level (and not OFF)\r\nvoid dsp_setvox(int vox)\r\n{\r\n\tswitch(vox)\r\n\t{\r\n\tcase VOX_HIGH:\r\n\t\tvox_level = ADC_BIAS/2;\r\n\t\tbreak;\r\n\tcase VOX_MEDIUM:\r\n\t\tvox_level = ADC_BIAS/4;\r\n\t\tbreak;\r\n\tcase VOX_LOW:\r\n\t\tvox_level = ADC_BIAS/16;\r\n\t\tbreak;\r\n\tdefault: \r\n\t\tvox_level = 0;\r\n\t\tvox_count = 0;\r\n\t\tbreak;\r\n\t}\r\n}\r\n\r\n\r\n/*** Some handy macro's ***/\r\n\r\n#define ABS(x)\t\t( (x)<0   ? -(x) : (x) )\r\n \r\n/*\r\n * Calculation of vector length:\r\n * Z = alpha*max(i,q) + beta*min(i,q); \r\n * alpha = 1/1, beta = 3/8 (error<6.8%)\r\n * alpha = 15/16, beta = 15/32 (error<6.25%)\r\n * Better algorithm:\r\n * Z = max( max(i,q), alpha*max(i,q)+beta*min(i,q) )\r\n * alpha = 29/32, beta = 61/128 (error<2.4%)\r\n */\r\ninline uint16_t mag(int16_t i, int16_t q)\r\n{\r\n\ti = ABS(i); q = ABS(q);\r\n\tif (i>q)\r\n\t\treturn (MAX(i,((29*i/32) + (61*q/128))));\r\n\telse\r\n\t\treturn (MAX(q,((29*q/32) + (61*i/128))));\r\n}\r\n\r\n/* \r\n * Note: A simple regression IIR single pole low pass filter could be made for anti-aliasing.\r\n *  y(n) = (1-a)*y(n-1) + a*x(n) = y(n-1) + a*(x(n) - y(n-1))\r\n * in this a = T / (T + R*C)  \r\n * Example:\r\n *    T is sample period (e.g. 64usec) \r\n *    RC the desired RC time: T*(1-a)/a.\r\n *    example: a=1/256 : RC = 255*64usec = 16msec (65Hz)\r\n * Alternative faster implementation with higher accuracy\r\n *  y(n) = y(n-1) + (x(n) - y(n-1)>>b)\r\n * Here the filtered value is maintained in higher accuracy, i.e. left shifted by b bits.\r\n * Before using the value shift it back: y >> b. \r\n * Also, for RC value 1/a = 1<<b, or RC = ((1<<b)-1)*64us  (if 64us is sample interval)\r\n */\r\n\r\n\r\n\r\n/*** Include the desired DSP engine ***/\r\n\r\n#if DSP_FFT == 1\r\n#include \"dsp_fft.c\"\r\n#else\r\n#include \"dsp_tim.c\"\r\n#endif\r\n\r\n\r\n\r\n/** CORE1: DMA IRQ handler **/\r\n/*\r\n * The IRQ handling is redirected to a DMA channel\r\n * This will transfer ADC_INT samples per channel, ADC_INT maximum is 10 (would take 60usec) but safer to use 8\r\n * These are all registers used for the sample acquisition process\r\n * A sample is a value between 0..4095, in a 16 bit unsigned integer\r\n * The DC bias value is somewhere around 2048, but will depend on the analogue circuits\r\n * The DC bias value is stored left shifted (by 16 as 32bit unsigned integer), to maintain precision\r\n */\r\n \r\n// From RP2040 datasheet, DMA Status/Control register layout\r\n// 0x80000000 [31]    : AHB_ERROR (0): Logical OR of the READ_ERROR and WRITE_ERROR flags\r\n// 0x40000000 [30]    : READ_ERROR (0): If 1, the channel received a read bus error\r\n// 0x20000000 [29]    : WRITE_ERROR (0): If 1, the channel received a write bus error\r\n// 0x01000000 [24]    : BUSY (0): This flag goes high when the channel starts a new transfer sequence, and low when the...\r\n// 0x00800000 [23]    : SNIFF_EN (0): If 1, this channel's data transfers are visible to the sniff hardware, and each...\r\n// 0x00400000 [22]    : BSWAP (0): Apply byte-swap transformation to DMA data\r\n// 0x00200000 [21]    : IRQ_QUIET (0): In QUIET mode, the channel does not generate IRQs at the end of every transfer block\r\n// 0x001f8000 [20:15] : TREQ_SEL (0): Select a Transfer Request signal\r\n// 0x00007800 [14:11] : CHAIN_TO (0): When this channel completes, it will trigger the channel indicated by CHAIN_TO\r\n// 0x00000400 [10]    : RING_SEL (0): Select whether RING_SIZE applies to read or write addresses\r\n// 0x000003c0 [9:6]   : RING_SIZE (0): Size of address wrap region\r\n// 0x00000020 [5]     : INCR_WRITE (0): If 1, the write address increments with each transfer\r\n// 0x00000010 [4]     : INCR_READ (0): If 1, the read address increments with each transfer\r\n// 0x0000000c [3:2]   : DATA_SIZE (0): Set the size of each bus transfer (byte/halfword/word)\r\n// 0x00000002 [1]     : HIGH_PRIORITY (0): HIGH_PRIORITY gives a channel preferential treatment in issue scheduling: in...\r\n// 0x00000001 [0]     : EN (0): DMA Channel Enable\r\n\r\n// 0x00120027 (IRQ_QUIET=0x0, TREQ_SEL=0x24, CHAIN_TO=0, INCR_WRITE=1, INCR_READ=0, DATA_SIZE=1, HIGH_PRIORITY=1, EN=1)\t\r\n\r\n/*\r\n * The dma_handler is called when the sample buffer adc_sample[][] is full.\r\n * It only stops the ADC conversions and resets DMA interrupt flag, samples are processed in timeout dsp_callback routine.\r\n */\r\n#define CH0\t\t\t0\r\n#define DMA_CTRL0\t0x00120027\r\nvolatile int      adccnt = 0;\t\t\t\t\t\t\t\t\t\t\t\t// Sampling overflow indicator, negative when timeout is too early\r\nvoid __not_in_flash_func(dma_handler)(void)\r\n{\r\n\tadc_run(false);\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Stop freerunning ADC\r\n\tdma_hw->ints0 = 1u << CH0;\t\t\t\t\t\t\t\t\t\t\t\t// Clear the interrupt request.\r\n\tadccnt++;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// ADC overrun indicator increment\r\n\t//while (!adc_fifo_is_empty()) adc_fifo_get();\t\t\t\t\t\t\t// Empty leftovers from fifo\r\n}\r\n\r\n\r\n\r\n/** CORE1: Timer callback routine **/\r\n/*\r\n * This runs every TIM_US, i.e. 64usec, and hence this determines the effective sample rate\r\n * The ADC is free running, nr of samples is limited by the attached DMA (ADC_INT per ADC channel)\r\n * One ADC cycle takes 6usec to complete (2usec per channel), times ADC_INT. \r\n * So max ADC_INT depth is about 10, disregarding the time needed in this routine, so choose a lower value.\r\n * The ADC result is saved after processing the raw samples, so a new ADC burst can be started. \r\n * Also the DACs are written with the next output sample, either A or I&Q channels.\r\n * The timing is critical, it assumes that the ADC is finished, so:\r\n * --> do not put any other stuff in this callback routine that may affect timing!\r\n */\r\n\r\n#define ADC_INT\t\t6\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Nr of samples for integration (use 8=2^3)\r\n#define BSH\t\t\t8\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Bias SHift size for the moving average; length is  2^BSH\r\n#define DC_LEN\t\t(1<<BSH)\t\t\t\t\t\t\t\t\t\t\t\t// Length of DC level delay line (initial values: ADC_BIAS)\r\n#define SUM_BIAS\t(ADC_BIAS*DC_LEN)\t\t\t\t\t\t\t\t\t\t// Sum of samples in delay line (initially DC_LEN*ADC_BIAS)\r\n#define MED_LEN\t\t3\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Median filter length\r\nvolatile uint16_t adc_sample[ADC_INT][3];\t\t\t\t\t\t\t\t\t// ADC sample buffers, filled by DMA (one per channel)\r\nvolatile uint16_t adc_movavg[DC_LEN][3];\t\t\t\t\t\t\t\t\t// ADC DC level running average sample delay lines\r\nvolatile uint32_t adc_sumbias[3] = {SUM_BIAS, SUM_BIAS, SUM_BIAS};\t\t\t// ADC dynamic bias (DC) level, summed delay line\r\nvolatile uint16_t adc_bias[3] = {ADC_BIAS, ADC_BIAS, ADC_BIAS};\t\t\t\t// ADC dynamic bias (DC) level\r\nvolatile int16_t  adc_result[3];\t\t\t\t\t\t\t\t\t\t\t// Pre-processed sample, for each channel\r\nvolatile int      adc_k = 0;\t\t\t\t\t\t\t\t\t\t\t\t// Points into lowpass delay line\r\nvolatile uint16_t if_agc = 1, rx_agc = 1, tx_agc = 1;\t\t\t\t\t\t// Factor as level adjustment (IF, RX audio, TX audio)\r\n\r\nsemaphore_t dsp_sem;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Semaphore to trigger dsp loop\r\nrepeating_timer_t dsp_timer;\t\t\t\t\t\t\t\t\t\t\t\t// TIM_US timer\r\nbool __not_in_flash_func(dsp_callback)(repeating_timer_t *t) \t\t\t\t// Timer callback routine\r\n{\r\n\tint32_t temp;\r\n\t\r\n\t/** The call-rate of this function = resulting sample rate: S_RATE=1/TIM_US, --> 15625Hz **/\r\n\r\n\t// Integration and DC bias removal\r\n\t// Adds ADC_INT samples for each channel, after first removing DC bias\r\n\t//    this implicitly converts from unsigned to signed int \r\n\t// Summaton increases dynamic range and has implicit LPF (but it may be better to use proper filter coefficients)\r\n\tadc_result[CH_Q] = 0;\r\n\tadc_result[CH_I] = 0;\r\n\tadc_result[CH_A] = 0;\r\n\tfor (temp = 0; temp<ADC_INT; temp++)\r\n\t{\r\n\t\tadc_result[CH_Q] += (int16_t)(adc_sample[temp][CH_Q]) - adc_bias[CH_Q];\r\n\t\tadc_result[CH_I] += (int16_t)(adc_sample[temp][CH_I]) - adc_bias[CH_I];\r\n\t\tadc_result[CH_A] += (int16_t)(adc_sample[temp][CH_A]) - adc_bias[CH_A];\r\n\t}\r\n\t\r\n\t// Low pass filtering for adc_bias, based on running average.\r\n\t// Store sample history in movavg, sumbias = SUM(movavg[]), length of movavg is 2^BSH so bias = sumbias>>BSH\r\n\t// Calculate new bias / sumbias values and replace sample in movavg delay line\r\n\tadc_sumbias[CH_Q] += adc_sample[0][CH_Q] - adc_movavg[adc_k][CH_Q]; adc_bias[CH_Q] = adc_sumbias[CH_Q]>>BSH;\r\n\tadc_sumbias[CH_I] += adc_sample[0][CH_I] - adc_movavg[adc_k][CH_I]; adc_bias[CH_I] = adc_sumbias[CH_I]>>BSH;\r\n\tadc_sumbias[CH_A] += adc_sample[0][CH_A] - adc_movavg[adc_k][CH_A]; adc_bias[CH_A] = adc_sumbias[CH_A]>>BSH;\r\n\tadc_movavg[adc_k][CH_Q] = adc_sample[0][CH_Q];\r\n\tadc_movavg[adc_k][CH_I] = adc_sample[0][CH_I];\r\n\tadc_movavg[adc_k][CH_A] = adc_sample[0][CH_A];\r\n\tif (++adc_k >= DC_LEN) adc_k = 0;\r\n\r\n\t// Raw samples are no longer used, so kick-off a new ADC acquisition phase\r\n\t// Restart the ADCs and the DMA channel\r\n\tadc_select_input(0);\t\t\t\t\t\t\t\t\t\t\t\t\t// Start with ADC0\r\n\twhile (!adc_fifo_is_empty()) adc_fifo_get();\t\t\t\t\t\t\t// Empty leftovers from fifo, if any\r\n\tdma_hw->ch[CH0].read_addr = (io_rw_32)&adc_hw->fifo;\t\t\t\t\t// DMA: Read from ADC FIFO\r\n\tdma_hw->ch[CH0].write_addr = (io_rw_32)&adc_sample[0][0];\t\t\t\t// DMA: Write to sample buffer\r\n\tdma_hw->ch[CH0].transfer_count = ADC_INT * 3;\t\t\t\t\t\t\t// DMA: Nr of 16 bit words to transfer\r\n\tdma_hw->ch[CH0].ctrl_trig = DMA_CTRL0;\t\t\t\t\t\t\t\t\t// DMA: Write ctrl word while starting the DMA\r\n\tadc_run(true);\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Start the ADC too\r\n\tadccnt--;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// ADC overrun indicator decrement\t\r\n\t\r\n\t/*\r\n\t * To be done for noise suppression:\r\n\t * Add I-Q adc results to median delay line\r\n\t * Calculate amplitude and add to delay line\r\n\t * Choose median amplitude entry for further processing  \r\n\t */\r\n\t \r\n\t// Derive RSSI level from IF sample vector length\r\n\t// This value is taken through an IIR low-pass filter: \r\n\t//   y(n) = y(n-1) + (x(n) - y(n-1)>>b)\r\n\t//   RC = ((1<<b)-1)*64us\r\n\t//   Before using the value: y >> b. \r\n\t// Then determine IF AGC wrt to top level\r\n\tif (!tx_enabled)\t\r\n\t{\r\n\t\ttemp = mag(adc_result[CH_I], adc_result[CH_Q]);\t\t\t\t\t\t// Approximate amplitude, with alpha max + beta min function\r\n\t\ttemp = (MAX(1,temp));\t\t\t\t\t\t\t\t\t\t\t    // Prevent 0 level\r\n\t\ttemp = (temp<<16) - dsp_rssi;\t\t\t\t\t\t\t\t\t\t// Promote amplitude to Q16.16 and calculate delta\r\n\t\tdsp_rssi += temp>>LSH;\t\t\t\t\t\t\t\t\t\t\t\t// LPF: RC = (1<<LSH - 1) * 64usec (i.e. 0.26sec)\r\n/*** This is meant to scale the IF signal. Fairly crude mechanism, should react slower. ***/\r\n\t\tif (IFAGC_TOP/GET_RSSI_LEVEL > if_agc )\r\n\t\t\tif_agc++;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Increment factor when signal smaller than desired\r\n\t\telse\r\n\t\t\tif_agc--;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Decrement when larger\r\n\t\tif (if_agc==0) if_agc=1;\t\t\t\t\t\t\t\t\t\t\t// Should never happen\r\n\t}\r\n\t\r\n\t// Likewise, derive VOX level from Audio sample amplitude\r\n\ttemp = ABS(adc_result[CH_A]);\t\t\t\t\t\t\t\t\t\t\t// Take absolute amplitude \r\n\ttemp = (MAX(1,temp));\t\t\t\t\t\t\t\t\t\t\t\t    // Prevent 0 level\r\n\ttemp = (temp<<16) - dsp_vox;\t\t\t\t\t\t\t\t\t\t\t// Promote to fixed point format (Q16.16), calculate delta\r\n\tdsp_vox += temp>>LSH;\t\t\t\t\t\t\t\t\t\t\t\t\t// LPF: RC = (1<<LSH - 1) * 64usec\r\n\ttx_agc = TXAGC_TOP/GET_DSP_VOX;\t\t\t\t\t\t\t\t\t\t\t// Calculate scaling factor (max level/actual level)\r\n\tif (tx_agc==0) tx_agc=1;\t\t\t\t\t\t\t\t\t\t\t\t// Shouldn't ever happen\r\n\t\t\r\n#if DSP_FFT == 1\r\n\r\n\t// Copy samples from/to the FFT buffers\r\n\tif (tx_enabled)\r\n\t{\t\t\t\t\t\t\t\t\r\n\t\tA_buf[dsp_active][dsp_tick] = (int16_t)(tx_agc*adc_result[CH_A]);\t// Copy A sample to A buffer\r\n\t\tpwm_set_gpio_level(DAC_I, I_buf[dsp_active][dsp_tick] + DAC_BIAS);\t// Output I to DAC\r\n\t\tpwm_set_gpio_level(DAC_Q, Q_buf[dsp_active][dsp_tick] + DAC_BIAS);\t// Output Q to DAC\r\n\t}\r\n\telse\r\n\t{\r\n\t\tI_buf[dsp_active][dsp_tick] = (int16_t)(if_agc*adc_result[CH_I]);\t// Copy I sample to I buffer\r\n\t\tQ_buf[dsp_active][dsp_tick] = (int16_t)(if_agc*adc_result[CH_Q]);\t// Copy Q sample to Q buffer\r\n\r\n/*** ==> Need to insert RX_AGC mechanism here ***/\r\n\r\n\t\tpwm_set_gpio_level(DAC_A, A_buf[dsp_active][dsp_tick] + DAC_BIAS);\t// Output A to DAC\r\n\t}\r\n\t\r\n\t// When buffers are full, move pointer to the next and signal the DSP loop\r\n\tif (++dsp_tick >= BUFSIZE)\t\t\t\t\t\t\t\t\t\t\t\t// Increment tick and check range\r\n\t{\r\n\t\tdsp_overrun++;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Increment overrun counter\r\n\t\tdsp_tick = 0;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Reset counter\r\n\t\tif (++dsp_active > 2) dsp_active = 0;\t\t\t\t\t\t\t\t// Point to next buffer\r\n\t\tsem_release(&dsp_sem);\t\t\t\t\t\t\t\t\t\t\t\t// Signal background processing\r\n\t}\r\n\t\r\n#else\r\n\r\n\t// Copy samples from/to the right buffers\r\n\tif (tx_enabled)\r\n\t{\r\n\t\ta_sample = tx_agc * adc_result[CH_A];\t\t\t\t\t\t\t\t// Store A sample for background processing\r\n\t\tpwm_set_gpio_level(DAC_I, i_sample);\t\t\t\t\t\t\t\t// Output calculated I sample to DAC\r\n\t\tpwm_set_gpio_level(DAC_Q, q_sample);\t\t\t\t\t\t\t\t// Output calculated Q sample to DAC\r\n\t}\r\n\telse\r\n\t{\t\t\t\t\t\t\t\r\n\t\tq_sample = rx_agc * adc_result[CH_Q];\t\t\t\t\t\t\t\t// Store Q sample for background processing\r\n\t\ti_sample = rx_agc * adc_result[CH_I];\t\t\t\t\t\t\t\t// Store I sample for background processing\r\n\t\tpwm_set_gpio_level(DAC_A, a_sample);\t\t\t\t\t\t\t\t// Output calculated A sample to DAC\r\n\t}\r\n\tdsp_overrun++;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Increment overrun counter\r\n\tsem_release(&dsp_sem);\t\t\t\t\t\t\t\t\t\t\t\t\t// Signal background processing\r\n\r\n#endif\r\n\t\t\r\n\r\n\treturn true;\r\n}\r\n\r\n\r\n/** CORE1: DSP loop **/\r\n/*\r\n * Background signal processing, triggered by semaphore dsp_sem\r\n * --> In Time Domain processing this is released every sample collection slot (64 us),\r\n * --> In Frequency Domain processing this is triggered when buffers are switched (64*512 us) \r\n * This loop also initializes all signal processing variables\r\n */\r\nvoid __not_in_flash_func(dsp_loop)()\r\n{\r\n\talarm_pool_t *ap;\r\n\tint i;\r\n\t\r\n\ttx_enabled = false;\t\r\n\tvox_active = false;\r\n\t\r\n\t/* \r\n\t * Initialize DACs, \r\n\t * default mode is free running, \r\n\t * A and B pins are output \r\n\t */\r\n\tgpio_set_function(DAC_Q, GPIO_FUNC_PWM);\t\t\t\t\t\t\t\t// GP20 is PWM for Q DAC (Slice 2, Channel A)\r\n\tgpio_set_function(DAC_I, GPIO_FUNC_PWM);\t\t\t\t\t\t\t\t// GP21 is PWM for I DAC (Slice 2, Channel B)\r\n\tdac_iq = pwm_gpio_to_slice_num(DAC_Q);\t\t\t\t\t\t\t\t\t// Get PWM slice for GP20 (Same for GP21)\r\n\tpwm_set_clkdiv_int_frac (dac_iq, 1, 0);\t\t\t\t\t\t\t\t\t// clock divide by 1: full system clock\r\n\tpwm_set_wrap(dac_iq, DAC_RANGE-1);\t\t\t\t\t\t\t\t\t\t// Set cycle length; nr of counts until wrap, i.e. 125/DAC_RANGE MHz\r\n\tpwm_set_enabled(dac_iq, true); \t\t\t\t\t\t\t\t\t\t\t// Set the PWM running\r\n\t\r\n\tgpio_set_function(DAC_A, GPIO_FUNC_PWM);\t\t\t\t\t\t\t\t// GP22 is PWM for Audio DAC (Slice 3, Channel A)\r\n\tdac_audio = pwm_gpio_to_slice_num(DAC_A);\t\t\t\t\t\t\t\t// Find PWM slice for GP22\r\n\tpwm_set_clkdiv_int_frac (dac_audio, 1, 0);\t\t\t\t\t\t\t\t// clock divide by 1: full system clock\r\n\tpwm_set_wrap(dac_audio, DAC_RANGE-1);\t\t\t\t\t\t\t\t\t// Set cycle length; nr of counts until wrap, i.e. 125/DAC_RANGE MHz\r\n\tpwm_set_enabled(dac_audio, true); \t\t\t\t\t\t\t\t\t\t// Set the PWM running\r\n\r\n\t/* \r\n\t * Initialize ADCs, use in round robin mode (3 channels)\r\n\t * samples are stored in array through IRQ callback\r\n\t * Initialize ADC delay lines for DC moving average\r\n\t */\r\n\tadc_init();\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Initialize ADC to known state\r\n\tadc_gpio_init(ADC_Q);\t\t\t\t\t\t\t\t\t\t\t\t\t// ADC GPIO for Q channel\r\n\tadc_gpio_init(ADC_I);\t\t\t\t\t\t\t\t\t\t\t\t\t// ADC GPIO for I channel\r\n\tadc_gpio_init(ADC_A);\t\t\t\t\t\t\t\t\t\t\t\t\t// ADC GPIO for Audio channel\r\n\tadc_set_round_robin(0x01+0x02+0x04);\t\t\t\t\t\t\t\t\t// Sequence ADC 0-1-2 (GP 26, 27, 28) free running\r\n\tadc_select_input(0);\t\t\t\t\t\t\t\t\t\t\t\t\t// Start with ADC0\r\n\tadc_fifo_setup(true,true,3,false,false);\t\t\t\t\t\t\t\t// IRQ result, DMA req, fifo thr=3: xfer per 3 x 16 bits\r\n\tadc_set_clkdiv(0);\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Fastest clock (500 kSps)\r\n\tfor (i=0; i<DC_LEN; i++)\r\n\t{\r\n\t\tadc_movavg[i][CH_Q] = ADC_BIAS;\r\n\t\tadc_movavg[i][CH_I] = ADC_BIAS;\r\n\t\tadc_movavg[i][CH_A] = ADC_BIAS;\r\n\t}\r\n\r\n\t/*\r\n\t * Setup and start DMA channel CH0\r\n\t */\r\n\tdma_channel_set_irq0_enabled(CH0, true);\t\t\t\t\t\t\t\t// Raise IRQ line 0 when the channel finishes a block\r\n\tirq_set_exclusive_handler(DMA_IRQ_0, dma_handler);\t\t\t\t\t\t// Install IRQ handler\r\n\tirq_set_enabled(DMA_IRQ_0, true);\t\t\t\t\t\t\t\t\t\t// Enable it\r\n\tirq_set_priority(DMA_IRQ_0, PICO_HIGHEST_IRQ_PRIORITY);\t\t\t\t\t// Prevent race condition with timer\r\n\t\r\n\tdma_hw->ch[CH0].read_addr = (io_rw_32)&adc_hw->fifo;\t\t\t\t\t// Read from ADC FIFO\r\n\tdma_hw->ch[CH0].write_addr = (io_rw_32)&adc_sample[0][0];\t\t\t\t// Write to sample buffer\r\n\tdma_hw->ch[CH0].transfer_count = ADC_INT * 3;\t\t\t\t\t\t\t// Nr of 16 bit words to transfer (interrupt when done)\r\n\tdma_hw->ch[CH0].ctrl_trig = DMA_CTRL0;\t\t\t\t\t\t\t\t\t// Write ctrl word and start the DMA\r\n\r\n\tadc_run(true);\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Also start the ADC\r\n\r\n\t\r\n\t/*\r\n\t * Use alarm_pool_add_repeating_timer_us() for a core1 associated timer\r\n\t * First create an alarm pool on core1:\r\n\t * alarm_pool_t *alarm_pool_create( uint hardware_alarm_num, \r\n\t *                                  uint max_timers);\r\n\t * For the core1 alarm pool don't use the default alarm_num (usually 3) but e.g. 1\r\n\t * Timer callback signals semaphore, while loop blocks on getting it.\r\n\t * Initialize repeating timer on core1:\r\n\t * bool alarm_pool_add_repeating_timer_us( alarm_pool_t *pool, \r\n\t *                                         int64_t delay_us, \r\n\t *                                         repeating_timer_callback_t callback, \r\n\t *                                         void *user_data, \r\n\t *                                         repeating_timer_t *out);\r\n\t */\r\n\tsem_init(&dsp_sem, 0, 1);\r\n\tap = alarm_pool_create(1, 4);\r\n\talarm_pool_add_repeating_timer_us( ap, -TIM_US, dsp_callback, NULL, &dsp_timer);\r\n\r\n\tdsp_overrun = 0;\r\n\t\r\n\t// Background processing loop\r\n    while(1) \r\n\t{\r\n\t\tsem_acquire_blocking(&dsp_sem);\t\t\t\t\t\t\t\t\t\t// Wait until timer-callback releases sem\r\n\r\n\t\t// Compare actual level with set threshold\r\n\t\tif (vox_level == 0)\t\t\t\t\t\t\t\t\t\t\t\t\t// When VOX is disabled\r\n\t\t{\r\n\t\t\tvox_active = false;\t\t\t\t\t\t\t\t\t\t\t\t//  always de-activate VOX trigger\r\n\t\t\tvox_count = 0;\t\t\t\t\t\t\t\t\t\t\t\t\t//  and reset linger counter\r\n\t\t}\r\n\t\telse\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// VOX is enabled\r\n\t\t{\r\n\t\t\tif ((GET_DSP_VOX) > vox_level)\t\t\t\t\t\t\t\t\t// AND actual level > limit level\r\n\t\t\t{\r\n#if DSP_FFT == 1\r\n\t\t\t\tvox_count = (S_RATE * VOX_LINGER / 1000)/512;\t\t\t\t//  audio present, set linger counter\r\n#else\r\n\t\t\t\tvox_count = S_RATE * VOX_LINGER / 1000;\t\t\t\t\t\t//  audio present, set linger counter\r\n#endif\r\n\t\t\t\tvox_active = true;\t\t\t\t\t\t\t\t\t\t\t//  activate VOX trigger \r\n\t\t\t}\r\n\t\t\telse if (vox_active)\t\t\t\t\t\t\t\t\t\t\t// no audio but vox still active \r\n\t\t\t\tif (--vox_count==0) vox_active = false;\t\t\t\t\t\t//  deactivate VOX trigger when linger counter expires\r\n\t\t\t\t\r\n\t\t}\r\n\r\n\r\n\t\tif (tx_enabled)\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Use previous setting\r\n\t\t{\r\n\t\t\tgpio_put(GP_PTT_OUT, true); \t\t\t\t\t\t\t\t\t// Drive PTT high (active)  \r\n\t\t\ttx();\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Do TX signal processing (Freq or Time domain)\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tgpio_put(GP_PTT_OUT, false);\t\t\t\t\t\t\t\t\t// Drive PTT low (inactive)   \r\n\t\t\trx();\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Do RX signal processing (Freq or Time domain)\r\n\t\t}\r\n\t\t\r\n\t\t/** Activate transmission **/\r\n\t\ttx_enabled = vox_active || ptt_active;\t\t\t\t\t\t\t\t// VOX or PTT triggered\r\n\r\n\t\tdsp_overrun--;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Decrement overrun counter\r\n\t\t\r\n#if DSP_FFT == 1\r\n\t\tdsp_tickx = dsp_tick;\t\t\t\t\t\t\t\t\t\t\t\t// Capture how far we are in sampling a FFT buffer\r\n#endif\r\n\t}\r\n}\r\n\r\n\r\n\r\n\r\n/** CORE0: Initialize dsp context and spawn CORE1 process **/\r\nvoid dsp_init() \r\n{\r\n    bus_ctrl_hw->priority = BUSCTRL_BUS_PRIORITY_PROC1_BITS; \t\t\t\t// Set Core 1 prio on bus to high\r\n\tmulticore_launch_core1(dsp_loop);\t\t\t\t\t\t\t\t\t\t// Start processing on Core 1\r\n}\r\n\r\n\r\n\r\n\r\n"
  },
  {
    "path": "dsp.h",
    "content": "#ifndef __DSP_FFT_H__\n#define __DSP_FFT_H__\n/* \n * dsp.h\n *\n * Created: Mar 2021\n * Author: Arjan te Marvelde\n *\n * See dsp.c for more information \n *\n * HERE THE SELECTION BETWEEN TIME OR FREQUENCY DOMAIN PROCESSING IS MADE\n * DO THIS BY SETTING THE #define DSP_FFT TO 0 OR TO 1 RESPECTIVELY\n *\n */\n\n\n/* \n * Callback timeout is TIM_US, value in usec\n * The carrier offset is !=0 only in FFT case.\n */\n \n#if DSP_FFT == 1\n\n#define TIM_US\t\t   64\n#define S_RATE\t\t15625\t\t\t\t\t// 1e6/TIM_US\n#define FC_OFFSET\t 3906  \t\t\t\t\t// RX carrier in bin FFT_SIZE/4 ==> S_RATE/4\n\n#else\n\t\n#define TIM_US\t\t   64\n#define S_RATE\t\t15625\t\t\t\t\t// 1e6/TIM_US\n#define FC_OFFSET \t    0\t\t\t\t\t// Must be 0 for time-domain DSP\n\n#endif\n\n\n/** DSP module interface **/\n\nextern volatile uint32_t dsp_rssi, dsp_vox;\t// Fixed point UQ16.16\n#define GET_RSSI_LEVEL\t(uint16_t)(dsp_rssi>>16)\n#define GET_DSP_VOX\t\t(uint16_t)(dsp_vox>>16)\nint get_sval(void);\n\nextern volatile bool tx_enabled;\t\t\t// Determined by (vox_active || ptt_active)\n\n#define VOX_OFF\t\t\t0\n#define VOX_LOW\t\t\t1\n#define VOX_MEDIUM\t\t2\n#define VOX_HIGH\t\t3\nvoid dsp_setvox(int vox);\n\n#define MODE_USB\t\t0\n#define MODE_LSB\t\t1\n#define MODE_AM\t\t\t2\n#define MODE_CW\t\t\t3\nvoid dsp_setmode(int mode);\n\n#define AGC_NONE\t\t0\n#define AGC_SLOW\t\t1\n#define AGC_FAST\t\t2\nvoid dsp_setagc(int agc);\n\nvoid dsp_init();\n\n#endif\n"
  },
  {
    "path": "dsp_fft.c",
    "content": "/*\n * dsp_fft.c\n * ==>TO BE INCLUDED IN dsp.c\n *\n * Created: May 2022\n * Author: Arjan te Marvelde\n * \n * Signal processing of RX and TX branch, to be run on the second processor core (CORE1).\n * A branch has a dedicated routine that must run on set times.\n * In this case it runs when half FFT_SIZE of samples is ready to be processed.\n *\n *\n * The pace for sampling is set by a timer at 64usec (15.625 kHz)\n * The associated timer callback routine:\n * - handles data transfer to/from physical interfaces\n * - starts a new ADC conversion sequence \n * - maintains dsp_tick counter\n * - when dsp_tick == FFT_SIZE/2 (one buffer), the dsp-loop is triggered.\n *\n * The ADC functions in round-robin and fifo mode, triggering IRQ after 3 conversions (ADC[0..2])\n * The ADC FIFO IRQ handler reads the 3 samples from the fifo after stopping the ADC\n *\n * Buffer structure, built from half FFT_SIZE buffers.\n * The I, Q and A external interfaces communicate each through 3x buffers.\n * One buffer is being filled or emptied, depending on data direction.\n * The other two are swapped with the FFT signal processing buffers.\n * Since we use complex FFT, the algorithm uses 4x buffers.\n *\n * I, Q and A buffers are used as queues. RX case looks like:\n *\n *        +--+--+--+                                   +--+--+--+\n *  i --> |  |  |  |                                   |  |  |  | --> a\n *        +--+--+--+                                   +--+--+--+\n *            \\  \\  \\     +--+--+                     /  /\n *             ---------> |  |  |                    /  /\n *                        +--+--+    FFT-DSP-iFFT ------\n *             ---------> |  |  |                    \n *            /  /  /     +--+--+\n *        +--+--+--+\n *  q --> |  |  |  |\n *        +--+--+--+\n *\n * RX, when triggered by timer callback:\n * - The oldest two I and Q buffers are copied into the FFT buffers\n * - FFT is executed\n * - Signal processing is done\n * - iFFT is executed\n * - The oldest real FFT buffer is moved to the A output queue\n *\n *        +--+--+--+                                   +--+--+--+\n *  a --> |  |  |  |                                   |  |  |  | --> i\n *        +--+--+--+                                   +--+--+--+\n *            \\  \\  \\     +--+--+                     /  /\n *              --------> |  |  |                 -------\n *                        +--+--+    FFT-DSP-iFFT\n *                        |  |  |                 -------\n *                        +--+--+                     \\  \\\n *                                                     +--+--+--+\n *                                                     |  |  |  | --> q\n *                                                     +--+--+--+\n *\n * TX, when triggered by timer callback:\n * - The oldest two A buffers are copied to the real FFT buffer, the imaginary FFT buffer is nulled\n * - FFT is executed\n * - Signal processing is done\n * - iFFT is executed\n * - The oldest FFT buffers are appended to the I/Q output queues\n *\n * The bin step is the sampling frequency divided by the FFT_SIZE.\n * So for S_RATE=15625 and FFT_SIZE=1024 this step is 15625/1024=15.259 Hz\n * The Subcarrier offset (Fc) is at about half the Nyquist frequency: bin 256 or 3906 Hz\n *\n */\n\n#include \"uSDR.h\"\n#include \"dsp.h\"\n\n/*\n * FFT buffer allocation\n * Buffer size is FFT_SIZE/2 (see fix_fft.h).\n * In case FFT_SIZE of 1024, a buffer is 1kB\n *  RX:  3 buffers for I samples, 3 buffers for Q samples, 3 buffers for Audio\n *  DSP: 4 buffers for FFT, complex samples and these have to be consecutive!\n *  TX:  re-use RX buffers in reverse order\n * Total of 13kByte RAM is required.\n * Samples are 16 bit signed integer, but align buffers on 32bit boundaries\n * dsp_tick points into I, Q and A buffers, so wrap once per two FFTs\n * When tick==FFT_SIZE/2: do buffer copy\n */ \n#define BUFSIZE\t\tFFT_SIZE/2\nint16_t  I_buf[3][BUFSIZE] __attribute__((aligned(4)));\t\t\t\t\t\t// I sample queue, 3x buffer of FFT_SIZE/2\nint16_t  Q_buf[3][BUFSIZE] __attribute__((aligned(4)));\t\t\t\t\t\t// Q sample queue, 3x buffer of FFT_SIZE/2\nint16_t  A_buf[3][BUFSIZE] __attribute__((aligned(4)));\t\t\t\t\t\t// A sample queue, 3x buffer of FFT_SIZE/2\nint16_t XI_buf[FFT_SIZE]   __attribute__((aligned(4)));\t\t\t\t\t\t// Re FFT buffer, 1x buffer of FFT_SIZE\nint16_t XQ_buf[FFT_SIZE]   __attribute__((aligned(4)));\t\t\t\t\t\t// Im FFT buffer, 1x buffer of FFT_SIZE\n\n// Sample buffer indexes, updated by timer callback\nvolatile int      dsp_active = 0;\t\t\t\t\t\t\t\t\t\t\t// I, Q, A active buffer number (0..2)\nvolatile uint32_t dsp_tick   = 0;\t\t\t\t\t\t\t\t\t\t\t// Index in active buffer\nvolatile uint32_t dsp_tickx  = 0;\t\t\t\t\t\t\t\t\t\t\t// Load indicator DSP loop\n\n// Spectrum bins for a frequency\n#define BIN(f)\t\t\t(int)(((f)*FFT_SIZE+S_RATE/2)/S_RATE)\n#define BIN_FC\t\t\t  256\t\t\t\t\t\t\t\t\t\t\t\t// Use BIN_FC > BIN_3000 to avoid aliasing!\n#define BIN_100       \t    7\t\t\t\t\t\t\t\t\t\t\t\t//  110Hz bin\n#define BIN_300\t\t \t   20\t\t\t\t\t\t\t\t\t\t\t\t//  300Hz bin\n#define BIN_900\t\t \t   59\t\t\t\t\t\t\t\t\t\t\t\t//  900Hz bin\n#define BIN_3000\t\t  197\t\t\t\t\t\t\t\t\t\t\t\t// 3000Hz bin\n#define BIN_3600          236\t\t\t\t\t\t\t\t\t\t\t\t// 3600Hz bin\n\n\n/*\n * Downshift frequency with Fs/4 = Fc\n * SEE: Lyons, Understanding DSP, CHAPTER 13.1.2\n *\n * Shift center frequency back to DC by multipling time domain samples with e(-j*w*t)\n * w = 2*pi*f, where f is FC_OFFSET (3906Hz)\n * t = n*Ts, where Ts is 1/S_RATE (1/15625Hz)\n * So the exponent becomes n*2*pi*FC_OFFSET/S_RATE = n*pi/2 (since FC_OFFSET = S_RATE/4)\n * The complex offset is then cos(-n*pi/2) + j*sin(-n*pi/2) ==> (a,b) = ( 1, 0); ( 0,-1); (-1, 0); ( 0, 1); ... \n * Complex multiply: (a+jb)*(I+jQ)=(aI-bQ) + j(aQ+bI)       ==> (I,Q) = ( I, Q); ( Q,-I); (-I,-Q); (-Q, I); ...\n */\nvoid __not_in_flash_func(dsp_shift)(void) \n{\n\tint i;\n\tuint16_t x;\n\t\n\tfor (i=0; i<FFT_SIZE; i+=4)\n\t{\n\t\tx = XI_buf[i+1];\n\t\tXI_buf[i+1] = XQ_buf[i+1];\n\t\tXQ_buf[i+1] = -x;\n\t\tXI_buf[i+2] = -XI_buf[i+2];\n\t\tXQ_buf[i+2] = -XQ_buf[i+2];\n\t\tx = XI_buf[i+3];\n\t\tXI_buf[i+3] = -XQ_buf[i+3];\n\t\tXQ_buf[i+3] = x;\n\t}\n}\n\n/*\n * NOTE THAT FLTERING SHOULD REALLY BE DONE BY MULTIPLY WITH FFT OF FILTER IMPULSE RESPONSE\n * SEE: The Scientist and Engineer's Guide to Digital Signal Processing, CHAPTER 18\n *\n * This applies a bandpass filter to XI and XQ buffers\n * lowbin and highbin edges must be between 3 and FFT_SIZE/2 - 3\n * Edge is a 7 bin raised cosine flank, i.e. 100Hz wide\n * Coefficients are: 0, 0.067, 0.25, 0.5, 0.75, 0.933, 1\n *    where the edge bin is in the center of this flank\n * Note: maybe make slope less steep, e.g. 9 or 11 bins \n *   ____                      ____\n * _/USB0\\____________________/LSB0\\_\n * [-------|-------][-------|-------]\n * ^                ^               ^\n * 0                BUFSIZE         FFTSIZE\n *\n * The parameter sidebands determines whether LSB (-1) USB (+1) or DSB(0) is passed.\n */\n#define DSP_PASS_LSB\t-1\n#define DSP_PASS_USB\t 1\n#define DSP_PASS_DSB\t 0\nvoid __not_in_flash_func(dsp_bandpass)(int lowbin, int highbin, int sidebands)\n{\n\tint i, lo1, lo2, hi1, hi2;\n\t\n\tif ((lowbin<3)||(highbin>(FFT_SIZE/2-3))||(highbin-lowbin<6)) return;\n\t\n\t// Boundaries are inclusive\n\tlo1 = lowbin-2; \n\tlo2 = highbin+2;\n\thi1 = FFT_SIZE-highbin-2; \n\thi2 = FFT_SIZE-lowbin+2;\n\n\t// Null all bins excluded from passbands\n\t// Calculate filter edges as raised cosine\n\tXI_buf[0] = 0; XQ_buf[0] = 0; \t\t\t\t\t\t\t\t\t\t\t// Block DC\n\t\n\tfor (i=1; i<lo1; i++)\t\t\t\t\t\t\t\t\t\t\t\t\t// Block until low filter side\n\t\t{ XI_buf[i] = 0; XQ_buf[i] = 0; }\n\n\tif (sidebands==DSP_PASS_LSB)\n\t{\n\t\tfor (i=lo1; i<lo2; i++) \t\t\t\t\t\t\t\t\t\t\t// LSB only: block USB bins\n\t\t\t{ XI_buf[i] = 0; XQ_buf[i] = 0; }\n\t}\n\telse \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// USB or DSB: apply filter curve\n\t{\n\t\ti=lo1;\n\t\tXI_buf[i] = XI_buf[i]*0.067; XQ_buf[i] = XQ_buf[i]*0.067; i++;\n\t\tXI_buf[i] = XI_buf[i]*0.250; XQ_buf[i] = XQ_buf[i]*0.250; i++;\n\t\tXI_buf[i] = XI_buf[i]*0.500; XQ_buf[i] = XQ_buf[i]*0.500; i++;\n\t\tXI_buf[i] = XI_buf[i]*0.750; XQ_buf[i] = XQ_buf[i]*0.750; i++;\n\t\tXI_buf[i] = XI_buf[i]*0.933; XQ_buf[i] = XQ_buf[i]*0.933; \n\t\ti=lo2;\n\t\tXI_buf[i] = XI_buf[i]*0.067; XQ_buf[i] = XQ_buf[i]*0.067; i--;\n\t\tXI_buf[i] = XI_buf[i]*0.250; XQ_buf[i] = XQ_buf[i]*0.250; i--;\n\t\tXI_buf[i] = XI_buf[i]*0.500; XQ_buf[i] = XQ_buf[i]*0.500; i--;\n\t\tXI_buf[i] = XI_buf[i]*0.750; XQ_buf[i] = XQ_buf[i]*0.750; i--;\n\t\tXI_buf[i] = XI_buf[i]*0.933; XQ_buf[i] = XQ_buf[i]*0.933;\n\t}\n\tfor (i=lo2+1; i<hi1; i++)\t\t\t\t\t\t\t\t\t\t\t\t// Block unused negative freq bins\n\t\t{ XI_buf[i] = 0; XQ_buf[i] = 0; }\n\n\tif (sidebands==DSP_PASS_USB)\n\t{\n\t\tfor (i=hi1; i<hi2; i++) \t\t\t\t\t\t\t\t\t\t\t// USB only: block LSB bins\n\t\t{ XI_buf[i] = 0; XQ_buf[i] = 0; }\n\t}\n\telse\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// LSB or DSB: apply filter curve\n\t{\n\t\ti=hi1;\n\t\tXI_buf[i] = XI_buf[i]*0.067; XQ_buf[i] = XQ_buf[i]*0.067; i++;\n\t\tXI_buf[i] = XI_buf[i]*0.250; XQ_buf[i] = XQ_buf[i]*0.250; i++;\n\t\tXI_buf[i] = XI_buf[i]*0.500; XQ_buf[i] = XQ_buf[i]*0.500; i++;\n\t\tXI_buf[i] = XI_buf[i]*0.750; XQ_buf[i] = XQ_buf[i]*0.750; i++;\n\t\tXI_buf[i] = XI_buf[i]*0.933; XQ_buf[i] = XQ_buf[i]*0.933; \n\t\ti=hi2;\n\t\tXI_buf[i] = XI_buf[i]*0.067; XQ_buf[i] = XQ_buf[i]*0.067; i--;\n\t\tXI_buf[i] = XI_buf[i]*0.250; XQ_buf[i] = XQ_buf[i]*0.250; i--;\n\t\tXI_buf[i] = XI_buf[i]*0.500; XQ_buf[i] = XQ_buf[i]*0.500; i--;\n\t\tXI_buf[i] = XI_buf[i]*0.750; XQ_buf[i] = XQ_buf[i]*0.750; i--;\n\t\tXI_buf[i] = XI_buf[i]*0.933; XQ_buf[i] = XQ_buf[i]*0.933;\n\t}\n\tfor (i=hi2+1; i<FFT_SIZE; i++) \t\t\t\t\t\t\t\t\t\t\t\t// Block from high filter side\n\t\t{ XI_buf[i] = 0; XQ_buf[i] = 0; }\n}\n\n\n\n/** CORE1: RX branch **/\n/*\n * Execute RX branch signal processing\n * max time to spend is <32ms (BUFSIZE*TIM_US)\n * The pre-processed I/Q samples are passed in I_BUF and Q_BUF\n * The calculated A samples are passed in A_BUF\n */\nvolatile int scale0;\nvolatile int scale1; \nbool __not_in_flash_func(rx)(void) \n{\n\tint b;\n\tint i;\n\tint16_t *ip, *qp, *ap, *xip, *xqp;\n\tint16_t peak;\n\t\t\n\tb = dsp_active;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Point to Active sample buffer\n\t\n\t/*** Copy saved I/Q buffers to FFT filter buffer ***/\n\tif (++b > 2) b = 0;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Point to Old Saved sample buffer\n\tip = &I_buf[b][0]; xip = &XI_buf[0];\n\tqp = &Q_buf[b][0]; xqp = &XQ_buf[0];\n\tfor (i=0; i<BUFSIZE; i++)\n\t{\n\t\t*xip++ = *ip++;\n\t\t*xqp++ = *qp++;\n\t}\n\tif (++b > 2) b = 0;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Point to New Saved sample buffer\n\tip = &I_buf[b][0]; xip = &XI_buf[BUFSIZE];\n\tqp = &Q_buf[b][0]; xqp = &XQ_buf[BUFSIZE];\n\tfor (i=0; i<BUFSIZE; i++)\n\t{\n\t\t*xip++ = *ip++;\n\t\t*xqp++ = *qp++;\n\t}\n\n\t/*** Downshift time samples with FC_OFFSET ***/\n\tdsp_shift();\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// In effect Fc moves to DC\n\t\n\t/*** Execute FFT ***/\n\tscale0 = fix_fft(&XI_buf[0], &XQ_buf[0], false);\t\t\t\t\t\t// Conversion to frequency domain \n\t\n\t/*** Filter sidebands ***/\n\t// At this point positive USB0 and LSB0 surround DC\n\t// [USB0---|---USB1][LSB1---|---LSB0]\n\tswitch (dsp_mode)\n\t{\n\tcase MODE_USB:\n\t\t// [USB0---|-------][-------|-------]\n\t\tdsp_bandpass(BIN_100, BIN_3000, DSP_PASS_USB);\n\t\tbreak;\n\tcase MODE_LSB:\n\t\t// [-------|-------][-------|---LSB0]\n\t\tdsp_bandpass(BIN_100, BIN_3000, DSP_PASS_LSB);\n\t\tbreak;\n\tcase MODE_AM:\n\t\t// [USB0---|-------][-------|---LSB0]\n\t\tdsp_bandpass(BIN_100, BIN_3000, DSP_PASS_DSB);\n\t\tbreak;\n\tcase MODE_CW:\n\t\t// Bandpass CW, 600Hz\n\t\tdsp_bandpass(BIN_900-BIN_300, BIN_900+BIN_300, DSP_PASS_USB);\n\t\tbreak;\n\t}\n\n\t\n\t/*** Execute inverse FFT ***/\n\tscale1 = fix_fft(&XI_buf[0], &XQ_buf[0], true);\n\n\n\t/*** Export FFT buffer to A ***/\n\tb = dsp_active;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Assume active buffer not changed, i.e. no overruns\n\tif (++b > 2) b = 0;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Point to oldest (will be next for output)\n\tap = &A_buf[b][0]; xip = &XI_buf[BUFSIZE];\n\tfor (i=0; i<BUFSIZE; i++)\n\t{\n\t\t*ap++ = *xip++;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Copy newest results (overlap-save method)\n\t}\n\n\n\t/*** Scale down into DAC_RANGE! ***/\t\n\tpeak = 256;\n\tfor (i=0; i<BUFSIZE; i++)\t\t\t\t\t\t\t\t\t\n\t{\n\t\tA_buf[b][i] /= peak;\n\t}\n\t\t\n\treturn true;\n}\n\n\n/** CORE1: TX branch **/\n/*\n * Execute TX branch signal processing\n * max time to spend is <32ms (BUFSIZE*TIM_US)\n * The pre-processed A samples are passed in A_BUF\n * The calculated I and Q samples are passed in I_BUF and Q_BUF\n */\nbool __not_in_flash_func(tx)(void) \n{\n\tint b;\n\tint i;\n\tint16_t *ip, *qp, *ap, *xip, *xqp;\n\tint16_t peak;\n\t\t\n\tb = dsp_active;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Point to Active sample buffer\n\t\n\t/*** Copy saved A buffers to FFT buffers, NULL Im. part ***/\n\tif (++b > 2) b = 0;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Point to Old Saved sample buffer\n\tap = &A_buf[b][0]; xip = &XI_buf[0];\n\txqp = &XQ_buf[0];\n\tfor (i=0; i<BUFSIZE; i++)\n\t{\n\t\t*xip++ = *ap++;\n\t\t*xqp++ = 0;\n\t}\n\tif (++b > 2) b = 0;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Point to New Saved sample buffer\n\tap = &A_buf[b][0]; xip = &XI_buf[BUFSIZE];\n\txqp = &XQ_buf[BUFSIZE];\n\tfor (i=0; i<BUFSIZE; i++)\n\t{\n\t\t*xip++ = *ap++;\n\t\t*xqp++ = 0;\n\t}\n\n\t\n\t/*** Execute FFT ***/\n\tscale0 = fix_fft(&XI_buf[0], &XQ_buf[0], false);\t\n\t\n\t\n\t/*** Shift and filter sidebands ***/\n\tXI_buf[0] = 0; XQ_buf[0] = 0;\t\t\t\t\t\t\t\t\t\t\t// Block DC\n\tswitch (dsp_mode)\n\t{\n\tcase MODE_USB:\n\t\t// Bandpass Audio, USB only\n\t\tdsp_bandpass(BIN_100, BIN_3000, 1);\n\t\t// Shift USB up to to Fc, assumes Fc > bandwidth\n\t\tfor (i=1; i<BIN_3000; i++)\n\t\t{\n\t\t\tXI_buf[BIN_FC+i] = XI_buf[i];\n\t\t\tXQ_buf[BIN_FC+i] = XQ_buf[i];\n\t\t\tXI_buf[i] = 0;\t\n\t\t\tXQ_buf[i] = 0;\n\t\t}\n\t\tfor (i=1; i<BIN_3000; i++)\n\t\t{\n\t\t\tXI_buf[FFT_SIZE-BIN_FC-i] = XI_buf[BIN_FC+i];\n\t\t\tXQ_buf[FFT_SIZE-BIN_FC-i] = XQ_buf[BIN_FC+i];\n\t\t}\n\t\tbreak;\n\tcase MODE_LSB:\n\t\t// Bandpass Audio, LSB only\n\t\tdsp_bandpass(BIN_100, BIN_3000, -1);\n\t\t// Shift LSB up to Fc\n\t\tfor (i=1; i<BIN_3000; i++)\n\t\t{\n\t\t\tXI_buf[BIN_FC-i] = XI_buf[FFT_SIZE-i];\n\t\t\tXQ_buf[BIN_FC-i] = XQ_buf[FFT_SIZE-i];\n\t\t\tXI_buf[FFT_SIZE-i] = 0;\n\t\t\tXQ_buf[FFT_SIZE-i] = 0;\n\t\t}\n\t\tfor (i=1; i<BIN_3000; i++)\n\t\t{\n\t\t\tXI_buf[FFT_SIZE-BIN_FC+i] = XI_buf[BIN_FC-i];\n\t\t\tXQ_buf[FFT_SIZE-BIN_FC+i] = XQ_buf[BIN_FC-i];\n\t\t}\n\t\tbreak;\n\tcase MODE_AM:\n\t\t// Bandpass Audio\n\t\tdsp_bandpass(BIN_100, BIN_3000, 0);\n\t\t// Shift DSB up to Fc\n\t\tfor (i=1; i<BIN_3000; i++)\n\t\t{\n\t\t\tXI_buf[BIN_FC+i] = XI_buf[i];\n\t\t\tXQ_buf[BIN_FC+i] = XQ_buf[i];\n\t\t\tXI_buf[i] = 0;\t\n\t\t\tXQ_buf[i] = 0;\n\t\t\tXI_buf[BIN_FC-i] = XI_buf[FFT_SIZE-i];\n\t\t\tXQ_buf[BIN_FC-i] = XQ_buf[FFT_SIZE-i];\n\t\t\tXI_buf[FFT_SIZE-i] = 0;\n\t\t\tXQ_buf[FFT_SIZE-i] = 0;\n\t\t}\n\t\tfor (i=1; i<BIN_3000; i++)\n\t\t{\n\t\t\tXI_buf[FFT_SIZE-BIN_FC-i] = XI_buf[BIN_FC+i];\n\t\t\tXQ_buf[FFT_SIZE-BIN_FC-i] = XQ_buf[BIN_FC+i];\n\t\t\tXI_buf[FFT_SIZE-BIN_FC+i] = XI_buf[BIN_FC-i];\n\t\t\tXQ_buf[FFT_SIZE-BIN_FC+i] = XQ_buf[BIN_FC-i];\n\t\t}\n\t\tbreak;\n\tcase MODE_CW:\n\n\t\t// Create a carrier on 900Hz from Fc\n\n\t\tbreak;\n\t}\n\n\t\n\t/*** Execute inverse FFT ***/\n\tscale1 = fix_fft(&XI_buf[0], &XQ_buf[0], true);\n\n\n\t/*** Export FFT buffer to I and Q ***/\n\tb = dsp_active;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Assume active buffer not changed, i.e. no overruns\n\tif (++b > 2) b = 0;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Point to oldest (will be next for output)\n\tqp = &Q_buf[b][0]; xqp = &XQ_buf[BUFSIZE];\n\tip = &I_buf[b][0]; xip = &XI_buf[BUFSIZE];\n\tfor (i=0; i<BUFSIZE; i++)\n\t{\n\t\t*qp++ = *xqp++;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Copy newest results (overlap-save method)\n\t\t*ip++ = *xip++;\n\t}\n\n\n\t/*** Scale down into DAC_RANGE! ***/\t\n\tpeak = 256;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// !!! Why 256 ???\n\tfor (i=0; i<BUFSIZE; i++)\t\t\t\t\t\t\t\t\t\n\t{\n\t\tQ_buf[b][i] /= peak;\t\t\n\t\tI_buf[b][i] /= peak;\n\t}\n\n\treturn true;\n}\n\n\n\n\n\n"
  },
  {
    "path": "dsp_tim.c",
    "content": "/*\n * dsp_tim.c\n * ==>TO BE INCLUDED IN dsp.c\n *\n * Created: May 2022\n * Author: Arjan te Marvelde\n * \n * Signal processing of RX and TX branch, to be run on the second processor core.\n * Each branch has a dedicated routine that must run on set times.\n * The period is determined by reads from the inter-core fifo, by the dsp_loop() routine. \n * This fifo is written from core0 from a 16us timer callback routine (i.e. 62.5kHz)\n *\n * The RX branch:\n * - Sample I and Q QSD channels, and shift into I and Q delay line (62.5 kHz per channel)\n * - Low pass filter: Fc=4kHz\n * - Quarter rate (15.625 kHz) to improve low freq behavior of Hilbert transform\n * - Calculate 15 tap Hilbert transform on Q\n * - Demodulate, taking proper delays into account\n * - Push to Audio output DAC\n *\n * Always perform audio sampling (62.5kHz) and level detections, in case of VOX active\n *\n * The TX branch (if VOX or PTT):\n * - Low pass filter: Fc=3kHz\n * - Eight rate (7.8125 kHz) to improve low F behavior of Hilbert transform\n * - Generate Q samples by doing a Hilbert transform\n * - Push I and Q to QSE output DACs\n *\n */\n\n#include \"uSDR.h\"\n\n\nvolatile int32_t q_sample, i_sample, a_sample;\t\t\t\t\t\t\t\t// Latest processed sample values\n\n\n/* \n * Low pass FIR filters Fc=3, 7 and 15 kHz (see http://t-filter.engineerjs.com/)\n * Settings: sample rates 62500, 31250 or 15625 Hz, stopband -40dB, passband ripple 5dB\n * Note: 8 bit precision, so divide sum by 256 (this could be improved when 32bit accumulator)\n */\nint16_t lpf3_62[15] =  {  3,  3,  5,  7,  9, 10, 11, 11, 11, 10,  9,  7,  5,  3,  3};\t// Pass: 0-3000, Stop: 6000-31250\nint16_t lpf3_31[15] =  { -2, -3, -3,  1, 10, 21, 31, 35, 31, 21, 10,  1, -3, -3, -2};\t// Pass: 0-3000, Stop: 6000-15625\nint16_t lpf3_15[15] =  {  3,  4, -3,-14,-15,  6, 38, 53, 38,  6,-15,-14, -3,  4,  3};\t// Pass: 0-3000, Stop: 4500-7812\nint16_t lpf7_62[15] =  { -2, -1,  1,  7, 16, 26, 33, 36, 33, 26, 16,  7,  1, -1, -2};\t// Pass: 0-7000, Stop: 10000-31250\nint16_t lpf7_31[15] =  { -1,  4,  9,  2,-12, -2, 40, 66, 40, -2,-12,  2,  9,  4, -1};\t// Pass: 0-7000, Stop: 10000-15625\nint16_t lpf15_62[15] = { -1,  3, 12,  6,-12, -4, 40, 69, 40, -4,-12,  6, 12,  3, -1};\t// Pass: 0-15000, Stop: 20000-31250\n\n\n\n\n/** CORE1: RX Branch **/\n\n/* \n * Execute RX branch signal processing\n * max time to spend is <64us (TIM_US)\n * The pre-processed I/Q samples are passed in i_sample and q_sample\n * The calculated A sample is passed in a_sample\n */\nvolatile int32_t i_s_raw[15], q_s_raw[15];\t\t\t\t\t\t\t\t\t// Raw I/Q samples minus DC bias\nvolatile int32_t i_s[15], q_s[15];\t\t\t\t\t\t\t\t\t\t\t// Filtered I/Q samples\nbool __not_in_flash_func(rx)(void) \n{\n\tint32_t q_accu, i_accu;\n\tint32_t qh;\n\tuint16_t i;\n\t\n\t/*** SAMPLING ***/\n\t/* \n\t * Shift-in I and Q raw samples \n\t */\n\tfor (i=0; i<14; i++)\t\t\t\t\t\t\t\t\t\t\t\t\t// Store preprocessed samples in shift registers\n\t{\n\t\tq_s_raw[i] = q_s_raw[i+1];\n\t\ti_s_raw[i] = i_s_raw[i+1];\n\t}\n\tq_s_raw[14] = q_sample;\n\ti_s_raw[14] = i_sample;\n\t\n\t\n\t/*\n\t * Low pass FIR filter\n\t */\n\tq_accu = 0;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Initialize accumulators\n\ti_accu = 0;\n\tfor (i=0; i<15; i++)\t\t\t\t\t\t\t\t\t\t\t\t\t// Low pass FIR filter\n\t{\n\t\tq_accu += (int32_t)q_s_raw[i]*lpf3_15[i];\t\t\t\t\t\t\t// Fc=3kHz, at 15625 Hz sampling\t\t\n\t\ti_accu += (int32_t)i_s_raw[i]*lpf3_15[i];\t\t\t\t\t\t\t// Fc=3kHz, at 15625 Hz sampling\t\n\t}\n\tq_accu = q_accu/256;\n\ti_accu = i_accu/256;\n\t\n\tfor (i=0; i<14; i++) \t\t\t\t\t\t\t\t\t\t\t\t\t// Store filtered samples in shift registers\n\t{\n\t\tq_s[i] = q_s[i+1];\n\t\ti_s[i] = i_s[i+1];\n\t}\n\tq_s[14] = q_accu;\n\ti_s[14] = i_accu;\n\t\n\n\t/*** DEMODULATION ***/\n\tswitch (dsp_mode)\n\t{\n\tcase MODE_USB:\n\t\t/* \n\t\t * USB demodulate: I[7] - Qh,\n\t\t * Qh is Classic Hilbert transform 15 taps, 12 bits \n\t\t * (see Iowa Hills calculator)\n\t\t */\t\n\t\tq_accu = (q_s[0]-q_s[14])*315L + (q_s[2]-q_s[12])*440L + \n\t\t         (q_s[4]-q_s[10])*734L + (q_s[6]-q_s[ 8])*2202L;\n\t\tqh = q_accu / 4096L;\t\n\t\ta_sample = i_s[7] - qh;\n\t\tbreak;\n\tcase MODE_LSB:\n\t\t/* \n\t\t * LSB demodulate: I[7] + Qh,\n\t\t * Qh is Classic Hilbert transform 15 taps, 12 bits \n\t\t * (see Iowa Hills calculator)\n\t\t */\t\n\t\tq_accu = (q_s[0]-q_s[14])*315L + (q_s[2]-q_s[12])*440L + \n\t\t         (q_s[4]-q_s[10])*734L + (q_s[6]-q_s[ 8])*2202L;\n\t\tqh = q_accu / 4096L;\t\n\t\ta_sample = i_s[7] + qh;\n\t\tbreak;\n\tcase MODE_AM:\n\t\t/*\n\t\t * AM demodulate: sqrt(sqr(i)+sqr(q))\n\t\t * Approximated with mag(i,q)\n\t\t */\n\t\ta_sample = mag(i_s[7], q_s[7]);\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\t\n\t/*** AUDIO GENERATION ***/\n\n\t/*\n\t * Scale and clip output,  \n\t * Send to audio DAC output\n\t */\n\ta_sample = (a_sample/64) + DAC_BIAS;\t\t\t\t\t\t\t\t\t// -18dB and add bias level\n\tif (a_sample > DAC_RANGE)\t\t\t\t\t\t\t\t\t\t\t\t// Clip to DAC range\n\t\ta_sample = DAC_RANGE;\n\telse if (a_sample<0)\n\t\ta_sample = 0;\n\n\treturn true;\n}\n\n\n/** CORE1: TX branch **/\n/*\n * Execute TX branch signal processing, \n * max time to spend is <64us (TIM_US)\n * The pre-processed audio sample is passed in a_sample\n * The calculated I and Q samples are passed in i_sample and q_sample\n */\nvolatile int16_t a_s_raw[15]; \t\t\t\t\t\t\t\t\t\t\t\t// Raw samples, minus DC bias\nvolatile int16_t a_s[15];\t\t\t\t\t\t\t\t\t\t\t\t\t// Filtered and decimated samplesvolatile int16_t \nbool __not_in_flash_func(tx)(void) \n{\n\tint32_t a_accu, q_accu;\n\tint16_t qh;\n\tint i;\n\tuint16_t i_dac, q_dac;\n\t\t\n\t/*** RAW Audio ***/\n\tfor (i=0; i<14; i++) \t\t\t\t\t\t\t\t\t\t\t\t\t//   and store in shift register\n\t\ta_s_raw[i] = a_s_raw[i+1];\n\ta_s_raw[14] = a_sample;\n\t\n\t/*** Low pass filter ***/\n\ta_accu = 0;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Initialize accumulator\n\tfor (i=0; i<15; i++)\t\t\t\t\t\t\t\t\t\t\t\t\t// Low pass FIR filter, using raw samples\n\t\ta_accu += (int32_t)a_s_raw[i]*lpf3_15[i];\t\t\t\t\t\t\t//   Fc=3kHz, at 15.625 kHz sampling\t\t\n\t\t\n\tfor (i=0; i<14; i++) \t\t\t\t\t\t\t\t\t\t\t\t\t// Shift decimated samples\n\t\ta_s[i] = a_s[i+1];\n\ta_s[14] = a_accu / 256;\t\t\t\t\t\t\t\t\t\t\t\t\t// Store rescaled accumulator\n\n\t/*** MODULATION ***/\n\tswitch (dsp_mode)\n\t{\n\tcase 0:\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// USB\n\t\t/* \n\t\t * qh is Classic Hilbert transform 15 taps, 12 bits \n\t\t * (see Iowa Hills calculator)\n\t\t */\t\n\t\tq_accu = (a_s[0]-a_s[14])*315L + (a_s[2]-a_s[12])*440L + \n\t\t         (a_s[4]-a_s[10])*734L + (a_s[6]-a_s[ 8])*2202L;\n\t\tqh = -(q_accu / 4096L);\t\t\t\t\t\t\t\t\t\t\t\t// USB: sign is negative\n\t\tbreak;\n\tcase 1:\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// LSB\n\t\t/* \n\t\t * qh is Classic Hilbert transform 15 taps, 12 bits \n\t\t * (see Iowa Hills calculator)\n\t\t */\t\n\t\tq_accu = (a_s[0]-a_s[14])*315L + (a_s[2]-a_s[12])*440L + \n\t\t         (a_s[4]-a_s[10])*734L + (a_s[6]-a_s[ 8])*2202L;\n\t\tqh = q_accu / 4096L;\t\t\t\t\t\t\t\t\t\t\t\t// LSB: sign is positive\n\t\tbreak;\n\tcase 2:\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// AM\n\t\t/*\n\t\t * I and Q values are identical\n\t\t */\n\t\tqh = a_s[7];\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\n\t/* \n\t * Write I and Q to QSE DACs, phase is 7 samples back.\n\t * Need to multiply AC with DAC_RANGE/ADC_RANGE (appr 1/8)\n\t * Any case: clip to range\n\t */\n\ta_accu = DAC_BIAS - (qh/8);\n\tif (a_accu<0)\n\t\tq_sample = 0;\n\telse if (a_accu>(DAC_RANGE-1))\n\t\tq_sample = DAC_RANGE-1;\n\telse\n\t\tq_sample = a_accu;\n\t\n\ta_accu = DAC_BIAS + (a_s[7]/8);\n\tif (a_accu<0)\n\t\ti_sample = 0;\n\telse if (a_accu>(DAC_RANGE-1))\n\t\ti_sample = DAC_RANGE-1;\n\telse\n\t\ti_sample = a_accu;\n\t\t\n\t\n\treturn true;\n}\n\n\n\n"
  },
  {
    "path": "fix_fft.c",
    "content": "/* fix_fft.c - Fixed-point in-place DIT Fast Fourier Transform  */\n/*\n  All data are fixed-point uint16_t integers, in which -32768\n  to +32768 represent -1.0 to +1.0 respectively. Integer\n  arithmetic is used for speed, instead of the more natural\n  floating-point.\n\n  For the forward FFT (time -> freq), fixed scaling is\n  performed to prevent arithmetic overflow, and to map a 0dB\n  sine/cosine wave (i.e. amplitude = 32767) to two -6dB freq\n  coefficients. The return value is always 0.\n\n  For the inverse FFT (freq -> time), fixed scaling cannot be\n  done, as two 0dB coefficients would sum to a peak amplitude\n  of 64K, overflowing the 32k range of the fixed-point integers.\n  Thus, the fix_fft() routine performs variable scaling, and\n  returns a value which is the number of bits LEFT by which\n  the output must be shifted to get the actual amplitude\n  (i.e. if fix_fft() returns 3, each value of fr[] and fi[]\n  must be multiplied by 8 (2**3) for proper scaling.\n  Clearly, this cannot be done within fixed-point uint16_t\n  integers. In practice, if the result is to be used as a\n  filter, the scale_shift can usually be ignored, as the\n  result will be approximately correctly normalized as is.\n\n  Written by:  Tom Roberts  11/8/89\n  Made portable:  Malcolm Slaney 12/15/94 malcolm@interval.com\n  Enhanced:  Dimitrios P. Bouras  14 Jun 2006 dbouras@ieee.org\n*/\n/*\n  This implementation uses a lookup table for bit reverse sorting,\n  which adds 2kbyte to the memory footprint.\n  The iFFT range detector has been optimized.\n  The bitshifting of signed integers is undefined, so these have been\n  replaced by divisions. The compiler will optimize it.\n  The size is fixed at 1024.\n*/\n\n#include \"pico/stdlib.h\"\n#include \"pico/multicore.h\"\n#include \"pico/platform.h\"\n#include \"fix_fft.h\"\n\n\n/** Fixed point Sine lookup table, [-1, 1] == [-32768, 32767] **/\nint16_t Sine[3*FFT_SIZE/4] =\n{\n\t    0,    201,    402,    603,    804,   1005,   1206,   1406,\n\t 1607,   1808,   2009,   2209,   2410,   2610,   2811,   3011,\n\t 3211,   3411,   3611,   3811,   4011,   4210,   4409,   4608,\n\t 4807,   5006,   5205,   5403,   5601,   5799,   5997,   6195,\n\t 6392,   6589,   6786,   6982,   7179,   7375,   7571,   7766,\n\t 7961,   8156,   8351,   8545,   8739,   8932,   9126,   9319,\n\t 9511,   9703,   9895,  10087,  10278,  10469,  10659,  10849,\n\t11038,  11227,  11416,  11604,  11792,  11980,  12166,  12353,\n\t12539,  12724,  12909,  13094,  13278,  13462,  13645,  13827,\n\t14009,  14191,  14372,  14552,  14732,  14911,  15090,  15268,\n\t15446,  15623,  15799,  15975,  16150,  16325,  16499,  16672,\n\t16845,  17017,  17189,  17360,  17530,  17699,  17868,  18036,\n\t18204,  18371,  18537,  18702,  18867,  19031,  19194,  19357,\n\t19519,  19680,  19840,  20000,  20159,  20317,  20474,  20631,\n\t20787,  20942,  21096,  21249,  21402,  21554,  21705,  21855,\n\t22004,  22153,  22301,  22448,  22594,  22739,  22883,  23027,\n\t23169,  23311,  23452,  23592,  23731,  23869,  24006,  24143,\n\t24278,  24413,  24546,  24679,  24811,  24942,  25072,  25201,\n\t25329,  25456,  25582,  25707,  25831,  25954,  26077,  26198,\n\t26318,  26437,  26556,  26673,  26789,  26905,  27019,  27132,\n\t27244,  27355,  27466,  27575,  27683,  27790,  27896,  28001,\n\t28105,  28208,  28309,  28410,  28510,  28608,  28706,  28802,\n\t28897,  28992,  29085,  29177,  29268,  29358,  29446,  29534,\n\t29621,  29706,  29790,  29873,  29955,  30036,  30116,  30195,\n\t30272,  30349,  30424,  30498,  30571,  30643,  30713,  30783,\n\t30851,  30918,  30984,  31049,  31113,  31175,  31236,  31297,\n\t31356,  31413,  31470,  31525,  31580,  31633,  31684,  31735,\n\t31785,  31833,  31880,  31926,  31970,  32014,  32056,  32097,\n\t32137,  32176,  32213,  32249,  32284,  32318,  32350,  32382,\n\t32412,  32441,  32468,  32495,  32520,  32544,  32567,  32588,\n\t32609,  32628,  32646,  32662,  32678,  32692,  32705,  32717,\n\t32727,  32736,  32744,  32751,  32757,  32761,  32764,  32766,\n\t32767,  32766,  32764,  32761,  32757,  32751,  32744,  32736,\n\t32727,  32717,  32705,  32692,  32678,  32662,  32646,  32628,\n\t32609,  32588,  32567,  32544,  32520,  32495,  32468,  32441,\n\t32412,  32382,  32350,  32318,  32284,  32249,  32213,  32176,\n\t32137,  32097,  32056,  32014,  31970,  31926,  31880,  31833,\n\t31785,  31735,  31684,  31633,  31580,  31525,  31470,  31413,\n\t31356,  31297,  31236,  31175,  31113,  31049,  30984,  30918,\n\t30851,  30783,  30713,  30643,  30571,  30498,  30424,  30349,\n\t30272,  30195,  30116,  30036,  29955,  29873,  29790,  29706,\n\t29621,  29534,  29446,  29358,  29268,  29177,  29085,  28992,\n\t28897,  28802,  28706,  28608,  28510,  28410,  28309,  28208,\n\t28105,  28001,  27896,  27790,  27683,  27575,  27466,  27355,\n\t27244,  27132,  27019,  26905,  26789,  26673,  26556,  26437,\n\t26318,  26198,  26077,  25954,  25831,  25707,  25582,  25456,\n\t25329,  25201,  25072,  24942,  24811,  24679,  24546,  24413,\n\t24278,  24143,  24006,  23869,  23731,  23592,  23452,  23311,\n\t23169,  23027,  22883,  22739,  22594,  22448,  22301,  22153,\n\t22004,  21855,  21705,  21554,  21402,  21249,  21096,  20942,\n\t20787,  20631,  20474,  20317,  20159,  20000,  19840,  19680,\n\t19519,  19357,  19194,  19031,  18867,  18702,  18537,  18371,\n\t18204,  18036,  17868,  17699,  17530,  17360,  17189,  17017,\n\t16845,  16672,  16499,  16325,  16150,  15975,  15799,  15623,\n\t15446,  15268,  15090,  14911,  14732,  14552,  14372,  14191,\n\t14009,  13827,  13645,  13462,  13278,  13094,  12909,  12724,\n\t12539,  12353,  12166,  11980,  11792,  11604,  11416,  11227,\n\t11038,  10849,  10659,  10469,  10278,  10087,   9895,   9703,\n\t 9511,   9319,   9126,   8932,   8739,   8545,   8351,   8156,\n\t 7961,   7766,   7571,   7375,   7179,   6982,   6786,   6589,\n\t 6392,   6195,   5997,   5799,   5601,   5403,   5205,   5006,\n\t 4807,   4608,   4409,   4210,   4011,   3811,   3611,   3411,\n\t 3211,   3011,   2811,   2610,   2410,   2209,   2009,   1808,\n\t 1607,   1406,   1206,   1005,    804,    603,    402,    201,\n\t    0,   -201,   -402,   -603,   -804,  -1005,  -1206,  -1406,\n    -1607,  -1808,  -2009,  -2209,  -2410,  -2610,  -2811,  -3011,\n    -3211,  -3411,  -3611,  -3811,  -4011,  -4210,  -4409,  -4608,\n    -4807,  -5006,  -5205,  -5403,  -5601,  -5799,  -5997,  -6195,\n    -6392,  -6589,  -6786,  -6982,  -7179,  -7375,  -7571,  -7766,\n    -7961,  -8156,  -8351,  -8545,  -8739,  -8932,  -9126,  -9319,\n    -9511,  -9703,  -9895, -10087, -10278, -10469, -10659, -10849,\n   -11038, -11227, -11416, -11604, -11792, -11980, -12166, -12353,\n   -12539, -12724, -12909, -13094, -13278, -13462, -13645, -13827,\n   -14009, -14191, -14372, -14552, -14732, -14911, -15090, -15268,\n   -15446, -15623, -15799, -15975, -16150, -16325, -16499, -16672,\n   -16845, -17017, -17189, -17360, -17530, -17699, -17868, -18036,\n   -18204, -18371, -18537, -18702, -18867, -19031, -19194, -19357,\n   -19519, -19680, -19840, -20000, -20159, -20317, -20474, -20631,\n   -20787, -20942, -21096, -21249, -21402, -21554, -21705, -21855,\n   -22004, -22153, -22301, -22448, -22594, -22739, -22883, -23027,\n   -23169, -23311, -23452, -23592, -23731, -23869, -24006, -24143,\n   -24278, -24413, -24546, -24679, -24811, -24942, -25072, -25201,\n   -25329, -25456, -25582, -25707, -25831, -25954, -26077, -26198,\n   -26318, -26437, -26556, -26673, -26789, -26905, -27019, -27132,\n   -27244, -27355, -27466, -27575, -27683, -27790, -27896, -28001,\n   -28105, -28208, -28309, -28410, -28510, -28608, -28706, -28802,\n   -28897, -28992, -29085, -29177, -29268, -29358, -29446, -29534,\n   -29621, -29706, -29790, -29873, -29955, -30036, -30116, -30195,\n   -30272, -30349, -30424, -30498, -30571, -30643, -30713, -30783,\n   -30851, -30918, -30984, -31049, -31113, -31175, -31236, -31297,\n   -31356, -31413, -31470, -31525, -31580, -31633, -31684, -31735,\n   -31785, -31833, -31880, -31926, -31970, -32014, -32056, -32097,\n   -32137, -32176, -32213, -32249, -32284, -32318, -32350, -32382,\n   -32412, -32441, -32468, -32495, -32520, -32544, -32567, -32588,\n   -32609, -32628, -32646, -32662, -32678, -32692, -32705, -32717,\n   -32727, -32736, -32744, -32751, -32757, -32761, -32764, -32766\n};\n\n\nstatic int16_t bitrev[FFT_SIZE] =\n{\n\t0x000, 0x200, 0x100, 0x300, 0x080, 0x280, 0x180, 0x380, 0x040, 0x240, 0x140, 0x340, 0x0c0, 0x2c0, 0x1c0, 0x3c0,\n\t0x020, 0x220, 0x120, 0x320, 0x0a0, 0x2a0, 0x1a0, 0x3a0, 0x060, 0x260, 0x160, 0x360, 0x0e0, 0x2e0, 0x1e0, 0x3e0,\n\t0x010, 0x210, 0x110, 0x310, 0x090, 0x290, 0x190, 0x390, 0x050, 0x250, 0x150, 0x350, 0x0d0, 0x2d0, 0x1d0, 0x3d0,\n\t0x030, 0x230, 0x130, 0x330, 0x0b0, 0x2b0, 0x1b0, 0x3b0, 0x070, 0x270, 0x170, 0x370, 0x0f0, 0x2f0, 0x1f0, 0x3f0,\n\t0x008, 0x208, 0x108, 0x308, 0x088, 0x288, 0x188, 0x388, 0x048, 0x248, 0x148, 0x348, 0x0c8, 0x2c8, 0x1c8, 0x3c8,\n\t0x028, 0x228, 0x128, 0x328, 0x0a8, 0x2a8, 0x1a8, 0x3a8, 0x068, 0x268, 0x168, 0x368, 0x0e8, 0x2e8, 0x1e8, 0x3e8,\n\t0x018, 0x218, 0x118, 0x318, 0x098, 0x298, 0x198, 0x398, 0x058, 0x258, 0x158, 0x358, 0x0d8, 0x2d8, 0x1d8, 0x3d8,\n\t0x038, 0x238, 0x138, 0x338, 0x0b8, 0x2b8, 0x1b8, 0x3b8, 0x078, 0x278, 0x178, 0x378, 0x0f8, 0x2f8, 0x1f8, 0x3f8,\n\t0x004, 0x204, 0x104, 0x304, 0x084, 0x284, 0x184, 0x384, 0x044, 0x244, 0x144, 0x344, 0x0c4, 0x2c4, 0x1c4, 0x3c4,\n\t0x024, 0x224, 0x124, 0x324, 0x0a4, 0x2a4, 0x1a4, 0x3a4, 0x064, 0x264, 0x164, 0x364, 0x0e4, 0x2e4, 0x1e4, 0x3e4,\n\t0x014, 0x214, 0x114, 0x314, 0x094, 0x294, 0x194, 0x394, 0x054, 0x254, 0x154, 0x354, 0x0d4, 0x2d4, 0x1d4, 0x3d4,\n\t0x034, 0x234, 0x134, 0x334, 0x0b4, 0x2b4, 0x1b4, 0x3b4, 0x074, 0x274, 0x174, 0x374, 0x0f4, 0x2f4, 0x1f4, 0x3f4,\n\t0x00c, 0x20c, 0x10c, 0x30c, 0x08c, 0x28c, 0x18c, 0x38c, 0x04c, 0x24c, 0x14c, 0x34c, 0x0cc, 0x2cc, 0x1cc, 0x3cc,\n\t0x02c, 0x22c, 0x12c, 0x32c, 0x0ac, 0x2ac, 0x1ac, 0x3ac, 0x06c, 0x26c, 0x16c, 0x36c, 0x0ec, 0x2ec, 0x1ec, 0x3ec,\n\t0x01c, 0x21c, 0x11c, 0x31c, 0x09c, 0x29c, 0x19c, 0x39c, 0x05c, 0x25c, 0x15c, 0x35c, 0x0dc, 0x2dc, 0x1dc, 0x3dc,\n\t0x03c, 0x23c, 0x13c, 0x33c, 0x0bc, 0x2bc, 0x1bc, 0x3bc, 0x07c, 0x27c, 0x17c, 0x37c, 0x0fc, 0x2fc, 0x1fc, 0x3fc,\n\t0x002, 0x202, 0x102, 0x302, 0x082, 0x282, 0x182, 0x382, 0x042, 0x242, 0x142, 0x342, 0x0c2, 0x2c2, 0x1c2, 0x3c2,\n\t0x022, 0x222, 0x122, 0x322, 0x0a2, 0x2a2, 0x1a2, 0x3a2, 0x062, 0x262, 0x162, 0x362, 0x0e2, 0x2e2, 0x1e2, 0x3e2,\n\t0x012, 0x212, 0x112, 0x312, 0x092, 0x292, 0x192, 0x392, 0x052, 0x252, 0x152, 0x352, 0x0d2, 0x2d2, 0x1d2, 0x3d2,\n\t0x032, 0x232, 0x132, 0x332, 0x0b2, 0x2b2, 0x1b2, 0x3b2, 0x072, 0x272, 0x172, 0x372, 0x0f2, 0x2f2, 0x1f2, 0x3f2,\n\t0x00a, 0x20a, 0x10a, 0x30a, 0x08a, 0x28a, 0x18a, 0x38a, 0x04a, 0x24a, 0x14a, 0x34a, 0x0ca, 0x2ca, 0x1ca, 0x3ca,\n\t0x02a, 0x22a, 0x12a, 0x32a, 0x0aa, 0x2aa, 0x1aa, 0x3aa, 0x06a, 0x26a, 0x16a, 0x36a, 0x0ea, 0x2ea, 0x1ea, 0x3ea,\n\t0x01a, 0x21a, 0x11a, 0x31a, 0x09a, 0x29a, 0x19a, 0x39a, 0x05a, 0x25a, 0x15a, 0x35a, 0x0da, 0x2da, 0x1da, 0x3da,\n\t0x03a, 0x23a, 0x13a, 0x33a, 0x0ba, 0x2ba, 0x1ba, 0x3ba, 0x07a, 0x27a, 0x17a, 0x37a, 0x0fa, 0x2fa, 0x1fa, 0x3fa,\n\t0x006, 0x206, 0x106, 0x306, 0x086, 0x286, 0x186, 0x386, 0x046, 0x246, 0x146, 0x346, 0x0c6, 0x2c6, 0x1c6, 0x3c6,\n\t0x026, 0x226, 0x126, 0x326, 0x0a6, 0x2a6, 0x1a6, 0x3a6, 0x066, 0x266, 0x166, 0x366, 0x0e6, 0x2e6, 0x1e6, 0x3e6,\n\t0x016, 0x216, 0x116, 0x316, 0x096, 0x296, 0x196, 0x396, 0x056, 0x256, 0x156, 0x356, 0x0d6, 0x2d6, 0x1d6, 0x3d6,\n\t0x036, 0x236, 0x136, 0x336, 0x0b6, 0x2b6, 0x1b6, 0x3b6, 0x076, 0x276, 0x176, 0x376, 0x0f6, 0x2f6, 0x1f6, 0x3f6,\n\t0x00e, 0x20e, 0x10e, 0x30e, 0x08e, 0x28e, 0x18e, 0x38e, 0x04e, 0x24e, 0x14e, 0x34e, 0x0ce, 0x2ce, 0x1ce, 0x3ce,\n\t0x02e, 0x22e, 0x12e, 0x32e, 0x0ae, 0x2ae, 0x1ae, 0x3ae, 0x06e, 0x26e, 0x16e, 0x36e, 0x0ee, 0x2ee, 0x1ee, 0x3ee,\n\t0x01e, 0x21e, 0x11e, 0x31e, 0x09e, 0x29e, 0x19e, 0x39e, 0x05e, 0x25e, 0x15e, 0x35e, 0x0de, 0x2de, 0x1de, 0x3de,\n\t0x03e, 0x23e, 0x13e, 0x33e, 0x0be, 0x2be, 0x1be, 0x3be, 0x07e, 0x27e, 0x17e, 0x37e, 0x0fe, 0x2fe, 0x1fe, 0x3fe,\n\t0x001, 0x201, 0x101, 0x301, 0x081, 0x281, 0x181, 0x381, 0x041, 0x241, 0x141, 0x341, 0x0c1, 0x2c1, 0x1c1, 0x3c1,\n\t0x021, 0x221, 0x121, 0x321, 0x0a1, 0x2a1, 0x1a1, 0x3a1, 0x061, 0x261, 0x161, 0x361, 0x0e1, 0x2e1, 0x1e1, 0x3e1,\n\t0x011, 0x211, 0x111, 0x311, 0x091, 0x291, 0x191, 0x391, 0x051, 0x251, 0x151, 0x351, 0x0d1, 0x2d1, 0x1d1, 0x3d1,\n\t0x031, 0x231, 0x131, 0x331, 0x0b1, 0x2b1, 0x1b1, 0x3b1, 0x071, 0x271, 0x171, 0x371, 0x0f1, 0x2f1, 0x1f1, 0x3f1,\n\t0x009, 0x209, 0x109, 0x309, 0x089, 0x289, 0x189, 0x389, 0x049, 0x249, 0x149, 0x349, 0x0c9, 0x2c9, 0x1c9, 0x3c9,\n\t0x029, 0x229, 0x129, 0x329, 0x0a9, 0x2a9, 0x1a9, 0x3a9, 0x069, 0x269, 0x169, 0x369, 0x0e9, 0x2e9, 0x1e9, 0x3e9,\n\t0x019, 0x219, 0x119, 0x319, 0x099, 0x299, 0x199, 0x399, 0x059, 0x259, 0x159, 0x359, 0x0d9, 0x2d9, 0x1d9, 0x3d9,\n\t0x039, 0x239, 0x139, 0x339, 0x0b9, 0x2b9, 0x1b9, 0x3b9, 0x079, 0x279, 0x179, 0x379, 0x0f9, 0x2f9, 0x1f9, 0x3f9,\n\t0x005, 0x205, 0x105, 0x305, 0x085, 0x285, 0x185, 0x385, 0x045, 0x245, 0x145, 0x345, 0x0c5, 0x2c5, 0x1c5, 0x3c5,\n\t0x025, 0x225, 0x125, 0x325, 0x0a5, 0x2a5, 0x1a5, 0x3a5, 0x065, 0x265, 0x165, 0x365, 0x0e5, 0x2e5, 0x1e5, 0x3e5,\n\t0x015, 0x215, 0x115, 0x315, 0x095, 0x295, 0x195, 0x395, 0x055, 0x255, 0x155, 0x355, 0x0d5, 0x2d5, 0x1d5, 0x3d5,\n\t0x035, 0x235, 0x135, 0x335, 0x0b5, 0x2b5, 0x1b5, 0x3b5, 0x075, 0x275, 0x175, 0x375, 0x0f5, 0x2f5, 0x1f5, 0x3f5,\n\t0x00d, 0x20d, 0x10d, 0x30d, 0x08d, 0x28d, 0x18d, 0x38d, 0x04d, 0x24d, 0x14d, 0x34d, 0x0cd, 0x2cd, 0x1cd, 0x3cd,\n\t0x02d, 0x22d, 0x12d, 0x32d, 0x0ad, 0x2ad, 0x1ad, 0x3ad, 0x06d, 0x26d, 0x16d, 0x36d, 0x0ed, 0x2ed, 0x1ed, 0x3ed,\n\t0x01d, 0x21d, 0x11d, 0x31d, 0x09d, 0x29d, 0x19d, 0x39d, 0x05d, 0x25d, 0x15d, 0x35d, 0x0dd, 0x2dd, 0x1dd, 0x3dd,\n\t0x03d, 0x23d, 0x13d, 0x33d, 0x0bd, 0x2bd, 0x1bd, 0x3bd, 0x07d, 0x27d, 0x17d, 0x37d, 0x0fd, 0x2fd, 0x1fd, 0x3fd,\n\t0x003, 0x203, 0x103, 0x303, 0x083, 0x283, 0x183, 0x383, 0x043, 0x243, 0x143, 0x343, 0x0c3, 0x2c3, 0x1c3, 0x3c3,\n\t0x023, 0x223, 0x123, 0x323, 0x0a3, 0x2a3, 0x1a3, 0x3a3, 0x063, 0x263, 0x163, 0x363, 0x0e3, 0x2e3, 0x1e3, 0x3e3,\n\t0x013, 0x213, 0x113, 0x313, 0x093, 0x293, 0x193, 0x393, 0x053, 0x253, 0x153, 0x353, 0x0d3, 0x2d3, 0x1d3, 0x3d3,\n\t0x033, 0x233, 0x133, 0x333, 0x0b3, 0x2b3, 0x1b3, 0x3b3, 0x073, 0x273, 0x173, 0x373, 0x0f3, 0x2f3, 0x1f3, 0x3f3,\n\t0x00b, 0x20b, 0x10b, 0x30b, 0x08b, 0x28b, 0x18b, 0x38b, 0x04b, 0x24b, 0x14b, 0x34b, 0x0cb, 0x2cb, 0x1cb, 0x3cb,\n\t0x02b, 0x22b, 0x12b, 0x32b, 0x0ab, 0x2ab, 0x1ab, 0x3ab, 0x06b, 0x26b, 0x16b, 0x36b, 0x0eb, 0x2eb, 0x1eb, 0x3eb,\n\t0x01b, 0x21b, 0x11b, 0x31b, 0x09b, 0x29b, 0x19b, 0x39b, 0x05b, 0x25b, 0x15b, 0x35b, 0x0db, 0x2db, 0x1db, 0x3db,\n\t0x03b, 0x23b, 0x13b, 0x33b, 0x0bb, 0x2bb, 0x1bb, 0x3bb, 0x07b, 0x27b, 0x17b, 0x37b, 0x0fb, 0x2fb, 0x1fb, 0x3fb,\n\t0x007, 0x207, 0x107, 0x307, 0x087, 0x287, 0x187, 0x387, 0x047, 0x247, 0x147, 0x347, 0x0c7, 0x2c7, 0x1c7, 0x3c7,\n\t0x027, 0x227, 0x127, 0x327, 0x0a7, 0x2a7, 0x1a7, 0x3a7, 0x067, 0x267, 0x167, 0x367, 0x0e7, 0x2e7, 0x1e7, 0x3e7,\n\t0x017, 0x217, 0x117, 0x317, 0x097, 0x297, 0x197, 0x397, 0x057, 0x257, 0x157, 0x357, 0x0d7, 0x2d7, 0x1d7, 0x3d7,\n\t0x037, 0x237, 0x137, 0x337, 0x0b7, 0x2b7, 0x1b7, 0x3b7, 0x077, 0x277, 0x177, 0x377, 0x0f7, 0x2f7, 0x1f7, 0x3f7,\n\t0x00f, 0x20f, 0x10f, 0x30f, 0x08f, 0x28f, 0x18f, 0x38f, 0x04f, 0x24f, 0x14f, 0x34f, 0x0cf, 0x2cf, 0x1cf, 0x3cf,\n\t0x02f, 0x22f, 0x12f, 0x32f, 0x0af, 0x2af, 0x1af, 0x3af, 0x06f, 0x26f, 0x16f, 0x36f, 0x0ef, 0x2ef, 0x1ef, 0x3ef,\n\t0x01f, 0x21f, 0x11f, 0x31f, 0x09f, 0x29f, 0x19f, 0x39f, 0x05f, 0x25f, 0x15f, 0x35f, 0x0df, 0x2df, 0x1df, 0x3df,\n\t0x03f, 0x23f, 0x13f, 0x33f, 0x0bf, 0x2bf, 0x1bf, 0x3bf, 0x07f, 0x27f, 0x17f, 0x37f, 0x0ff, 0x2ff, 0x1ff, 0x3ff\n};\n\n\n/** FIX_MPY() **/\n/*\n * Assume Q(0,15) notation, 1 sign, 0 int, 15 frac bits\n */\nint16_t __not_in_flash_func(FIX_MPY)(int16_t a, int16_t b)\t\t\t\t\t// Fixed-point mpy and scaling\n{\n\tint32_t c;\n\n\tc = (int32_t)a * (int32_t)b;\t\t\t\t\t\t\t\t\t\t\t// multiply \n\tc = c + 0x4000;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// and round up\n\tc = c >> 15;\t\t\t\t\t\t\t\t\t\t\t\t\t\t    // Shift right fractional bits\n\treturn((int16_t)c);\t\t\t\t\t\t\t\t\t\t\t\t\t    // Return scaled product\n}\n\n\n/** FIX_FFT() **/\n/*\n * fr[] \ti samples [1024]\n * fi[] \tq samples [1024]\n * inverse\ttrue: iFFT\n * Note: i-FFT could also be calculated by exchanging the arrays for FFT (fxtbook.pdf 21.7)\n */\nint __not_in_flash_func(fix_fft)(int16_t *fr, int16_t *fi, bool inverse)\n{\n\tuint16_t i, j, m, k, step, scale;\n\tbool shift;\n\tint16_t qr, qi, tr, ti, wr, wi;\n\tint16_t *bp;\n\n\t/* Decimation in time: re-order samples */\n\tbp=&bitrev[0];\n\tfor (i=0; i<FFT_SIZE; i++)\n\t{\n\t\tif (*bp > i)\n\t\t{\n\t\t\ttr = fr[i]; fr[i] = fr[*bp]; fr[*bp] = tr;\n\t\t\tti = fi[i]; fi[i] = fi[*bp]; fi[*bp] = ti;\n\t\t}\n\t\tbp++;\n\t}\n\n\n\tscale = 0;\n\tstep  = 1;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Counting up: 1, 2, 4, 8, ...\n\t/* FFT Stages */\n\tfor (k=FFT_ORDER; k>0; k--)                                             // #cycles: FFT_ORDER\n\t{\n\t\t/* Scaling\n\t\t * Variable scaling, depends on current data\n\t\t * --> it seems quite CPU intensive to go through complete array\n\t\t *     FFT_ORDER times, could this be optimized?\n\t\t * If always scaling:\n\t\t * --> the main loop has log_2(FFT_SIZE) cycles,\n\t\t *     resulting in an overall factor of 1/FFT_SIZE,\n\t\t *     distributed over cycles to maximize accuracy.\n\t\t */\n        shift = false;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// No shift, unless...\n        for (i=0; i<FFT_SIZE; ++i) \t\t\t\t\t\t\t\t\t\t\t// Range test all samples\n        {\n            if ((fr[i] > 0x3fff) || (fr[i] < -0x4000) || (fi[i] > 0x3fff) || (fi[i] < -0x4000))\n            {\n                shift = true;\n                scale++;\n                break;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Bail out at first detect\n            }\n        }\n\n\t\t/* Inner loops resolving the butterflies for each stage*/\n\t\tfor (m=0; m<step; m++) \t\t\t\t\t\t\t\t\t\t\t    // #cycles: step\n\t\t{\n\t\t    // Determine wiggle factors\n\t\t\tj = m << (k-1);\t\t\t\t\t\t\t\t\t\t\t\t\t// 0 <= j < FFT_SIZE/2\n\t\t\twr = Sine[j+FFT_SIZE/4];\t\t\t\t\t\t\t\t\t\t// Real part, i.e. Cosine\n\t\t\twi = inverse ? Sine[j] : -Sine[j];\t\t\t\t\t\t\t\t// Imaginary part\n\t\t\t\n\t\t\tif (shift) { wr = wr/2; wi = wi/2; }\t\t\t\t\t\t\t// Scale factors by 1/2\n\n\t\t\tfor (i=m; i<FFT_SIZE; i+=(step*2))\t\t\t\t\t\t\t\t// #cycles: FFT_SIZE/step\n\t\t\t{\n\t\t\t\tj = i + step;                                               // re-assign j !\n\t\t\t\ttr = FIX_MPY(wr,fr[j]) - FIX_MPY(wi,fi[j]);\t\t\t\t\t// Complex multiply\n\t\t\t\tti = FIX_MPY(wr,fi[j]) + FIX_MPY(wi,fr[j]);\n\t\t\t\tqr = shift ? fr[i]/2 : fr[i]; \n\t\t\t\tqi = shift ? fi[i]/2 : fi[i]; \n\t\t\t\tfr[i] = qr + tr;\n\t\t\t\tfi[i] = qi + ti;\n\t\t\t\tfr[j] = qr - tr;\n\t\t\t\tfi[j] = qi - ti;\n\t\t\t}\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// #total: FFT_ORDER * step * FFT_SIZE/step\n\t\t}\n\t\t\n\t\tstep = step<<1;\n\t}\n\treturn scale;\n}\n\n\n#ifdef BLAH\n// int16_t contains signed fixed point representation Q(2,14)\n// 1 sign bit, 1 int bit and 14 frac bits\n// precomputed value K represents 0.5\n#define Q\t14\n#define K   (1 << (Q - 1))\n\n// a + b\nint16_t q_add(int16_t a, int16_t b)\n{\n    int32_t tmp;\n\n    tmp = (int32_t)a + (int32_t)b;\n\t\n    if (tmp > 0x7FFF) \t\t\t\t\t\t\t\t\t\t\t\t\t\t// Clip result\n\t\ttmp = 0x7FFF;\n    else if (tmp < -0x8000) \n\t\ttmp = -0x8000;\n\n    return (int16_t)tmp;\n}\n\n// a - b\nint16_t q_sub(int16_t a, int16_t b)\n{\n    return a - b;\n}\n\n// a * b\nint16_t q_mul(int16_t a, int16_t b)\n{\n    int32_t tmp;\n\n    tmp = (int32_t)a * (int32_t)b;\n    tmp += K;    \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Rounding; mid values are rounded up\n\ttmp = tmp >> Q;    \t\t\t\t\t\t\t\t\t\t\t\t\t\t// Correct by dividing by base\n\t\n\tif (tmp > 0x7FFF) \t\t\t\t\t\t\t\t\t\t\t\t\t\t// Clip result\n\t\ttmp = 0x7FFF;\n\telse if (tmp < -0x8000) \n\t\ttmp = -0x8000;\n\t\n\treturn (int16_t)tmp;\n}\n\n// a / b\nint16_t q_div(int16_t a, int16_t b)\n{\n    int32_t tmp;\n\n\ttmp = (int32_t)a << Q;\t\t\t\t\t\t\t\t\t\t\t\t\t// Pre multiply with base\n\n    if ((tmp >= 0 && b >= 0) || (tmp < 0 && b < 0))  \t\t\t\t\t\t// Rounding; mid values are rounded up \n        tmp += (b >> 2);\n    else\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//  or down...\n        tmp -= (b >> 2);\n\n    return (int16_t)(tmp / b);\n}\n#endif\n"
  },
  {
    "path": "fix_fft.h",
    "content": "#ifndef __FIX_FFT_H__\n#define __FIX_FFT_H__\n/* \n * fix_fft.h\n *\n * Created: Apr 2022\n * Author: Arjan te Marvelde\n *\n * See fix_fft.c for more information \n */\n\n#define FFT_SIZE\t1024\t\t\t\t// Use this for buffer allocations\n#define FFT_ORDER\t10\t\t\t\t\t// FFT_SIZE = 1 << FFT_ORDER\n\nint fix_fft(int16_t *fr, int16_t *fi, bool inverse);\n\n#endif\n"
  },
  {
    "path": "font16.c",
    "content": "/**\n  ******************************************************************************\n  * @file    font16.c\n  * @author  MCD Application Team\n  * @version V1.0.0\n  * @date    18-February-2014\n  * @brief   This file provides text font16 for STM32xx-EVAL's LCD driver. \n  ******************************************************************************\n  * @attention\n  *\n  * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>\n  *\n  * Redistribution and use in source and binary forms, with or without modification,\n  * are permitted provided that the following conditions are met:\n  *   1. Redistributions of source code must retain the above copyright notice,\n  *      this list of conditions and the following disclaimer.\n  *   2. Redistributions in binary form must reproduce the above copyright notice,\n  *      this list of conditions and the following disclaimer in the documentation\n  *      and/or other materials provided with the distribution.\n  *   3. Neither the name of STMicroelectronics nor the names of its contributors\n  *      may be used to endorse or promote products derived from this software\n  *      without specific prior written permission.\n  *\n  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n  *\n  ******************************************************************************\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"fonts.h\"\n// \n//  Font data for Courier New 12pt\n// \n\nconst unsigned char Font16_Table[] =\n{\n  // @0 ' ' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @32 '!' (11 pixels wide)\n  0x00, 0x00, //            \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x00, 0x00, //            \n  0x0C, 0x00, //     ##     \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @64 '\"' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x1D, 0xC0, //    ### ### \n  0x1D, 0xC0, //    ### ### \n  0x08, 0x80, //     #   #  \n  0x08, 0x80, //     #   #  \n  0x08, 0x80, //     #   #  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @96 '#' (11 pixels wide)\n  0x00, 0x00, //            \n  0x0D, 0x80, //     ## ##  \n  0x0D, 0x80, //     ## ##  \n  0x0D, 0x80, //     ## ##  \n  0x0D, 0x80, //     ## ##  \n  0x3F, 0xC0, //   ######## \n  0x1B, 0x00, //    ## ##   \n  0x3F, 0xC0, //   ######## \n  0x1B, 0x00, //    ## ##   \n  0x1B, 0x00, //    ## ##   \n  0x1B, 0x00, //    ## ##   \n  0x1B, 0x00, //    ## ##   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @128 '$' (11 pixels wide)\n  0x04, 0x00, //      #     \n  0x1F, 0x80, //    ######  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x38, 0x00, //   ###      \n  0x1E, 0x00, //    ####    \n  0x0F, 0x00, //     ####   \n  0x03, 0x80, //       ###  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x3F, 0x00, //   ######   \n  0x04, 0x00, //      #     \n  0x04, 0x00, //      #     \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @160 '%' (11 pixels wide)\n  0x00, 0x00, //            \n  0x18, 0x00, //    ##      \n  0x24, 0x00, //   #  #     \n  0x24, 0x00, //   #  #     \n  0x18, 0xC0, //    ##   ## \n  0x07, 0x80, //      ####  \n  0x1E, 0x00, //    ####    \n  0x31, 0x80, //   ##   ##  \n  0x02, 0x40, //       #  # \n  0x02, 0x40, //       #  # \n  0x01, 0x80, //        ##  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @192 '&' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x0F, 0x00, //     ####   \n  0x18, 0x00, //    ##      \n  0x18, 0x00, //    ##      \n  0x18, 0x00, //    ##      \n  0x0C, 0x00, //     ##     \n  0x1D, 0x80, //    ### ##  \n  0x37, 0x00, //   ## ###   \n  0x33, 0x00, //   ##  ##   \n  0x1D, 0x80, //    ### ##  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @224 ''' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x07, 0x00, //      ###   \n  0x07, 0x00, //      ###   \n  0x02, 0x00, //       #    \n  0x02, 0x00, //       #    \n  0x02, 0x00, //       #    \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @256 '(' (11 pixels wide)\n  0x00, 0x00, //            \n  0x03, 0x00, //       ##   \n  0x03, 0x00, //       ##   \n  0x06, 0x00, //      ##    \n  0x0E, 0x00, //     ###    \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0E, 0x00, //     ###    \n  0x06, 0x00, //      ##    \n  0x03, 0x00, //       ##   \n  0x03, 0x00, //       ##   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @288 ')' (11 pixels wide)\n  0x00, 0x00, //            \n  0x18, 0x00, //    ##      \n  0x18, 0x00, //    ##      \n  0x0C, 0x00, //     ##     \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x0C, 0x00, //     ##     \n  0x1C, 0x00, //    ###     \n  0x18, 0x00, //    ##      \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @320 '*' (11 pixels wide)\n  0x00, 0x00, //            \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x3F, 0xC0, //   ######## \n  0x3F, 0xC0, //   ######## \n  0x0F, 0x00, //     ####   \n  0x1F, 0x80, //    ######  \n  0x19, 0x80, //    ##  ##  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @352 '+' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x04, 0x00, //      #     \n  0x04, 0x00, //      #     \n  0x04, 0x00, //      #     \n  0x3F, 0x80, //   #######  \n  0x04, 0x00, //      #     \n  0x04, 0x00, //      #     \n  0x04, 0x00, //      #     \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @384 ',' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x06, 0x00, //      ##    \n  0x04, 0x00, //      #     \n  0x0C, 0x00, //     ##     \n  0x08, 0x00, //     #      \n  0x08, 0x00, //     #      \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @416 '-' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x3F, 0x80, //   #######  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @448 '.' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @480 '/' (11 pixels wide)\n  0x00, 0xC0, //         ## \n  0x00, 0xC0, //         ## \n  0x01, 0x80, //        ##  \n  0x01, 0x80, //        ##  \n  0x03, 0x00, //       ##   \n  0x03, 0x00, //       ##   \n  0x06, 0x00, //      ##    \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x18, 0x00, //    ##      \n  0x18, 0x00, //    ##      \n  0x30, 0x00, //   ##       \n  0x30, 0x00, //   ##       \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @512 '0' (11 pixels wide)\n  0x00, 0x00, //            \n  0x0E, 0x00, //     ###    \n  0x1B, 0x00, //    ## ##   \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x1B, 0x00, //    ## ##   \n  0x0E, 0x00, //     ###    \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @544 '1' (11 pixels wide)\n  0x00, 0x00, //            \n  0x06, 0x00, //      ##    \n  0x3E, 0x00, //   #####    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x3F, 0xC0, //   ######## \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @576 '2' (11 pixels wide)\n  0x00, 0x00, //            \n  0x0F, 0x00, //     ####   \n  0x19, 0x80, //    ##  ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x03, 0x00, //       ##   \n  0x06, 0x00, //      ##    \n  0x0C, 0x00, //     ##     \n  0x18, 0x00, //    ##      \n  0x30, 0x00, //   ##       \n  0x3F, 0x80, //   #######  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @608 '3' (11 pixels wide)\n  0x00, 0x00, //            \n  0x3F, 0x00, //   ######   \n  0x61, 0x80, //  ##    ##  \n  0x01, 0x80, //        ##  \n  0x03, 0x00, //       ##   \n  0x1F, 0x00, //    #####   \n  0x03, 0x80, //       ###  \n  0x01, 0x80, //        ##  \n  0x01, 0x80, //        ##  \n  0x61, 0x80, //  ##    ##  \n  0x3F, 0x00, //   ######   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @640 '4' (11 pixels wide)\n  0x00, 0x00, //            \n  0x07, 0x00, //      ###   \n  0x07, 0x00, //      ###   \n  0x0F, 0x00, //     ####   \n  0x0B, 0x00, //     # ##   \n  0x1B, 0x00, //    ## ##   \n  0x13, 0x00, //    #  ##   \n  0x33, 0x00, //   ##  ##   \n  0x3F, 0x80, //   #######  \n  0x03, 0x00, //       ##   \n  0x0F, 0x80, //     #####  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @672 '5' (11 pixels wide)\n  0x00, 0x00, //            \n  0x1F, 0x80, //    ######  \n  0x18, 0x00, //    ##      \n  0x18, 0x00, //    ##      \n  0x18, 0x00, //    ##      \n  0x1F, 0x00, //    #####   \n  0x11, 0x80, //    #   ##  \n  0x01, 0x80, //        ##  \n  0x01, 0x80, //        ##  \n  0x21, 0x80, //   #    ##  \n  0x1F, 0x00, //    #####   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @704 '6' (11 pixels wide)\n  0x00, 0x00, //            \n  0x07, 0x80, //      ####  \n  0x1C, 0x00, //    ###     \n  0x18, 0x00, //    ##      \n  0x30, 0x00, //   ##       \n  0x37, 0x00, //   ## ###   \n  0x39, 0x80, //   ###  ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x19, 0x80, //    ##  ##  \n  0x0F, 0x00, //     ####   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @736 '7' (11 pixels wide)\n  0x00, 0x00, //            \n  0x7F, 0x00, //  #######   \n  0x43, 0x00, //  #    ##   \n  0x03, 0x00, //       ##   \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @768 '8' (11 pixels wide)\n  0x00, 0x00, //            \n  0x1F, 0x00, //    #####   \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x1F, 0x00, //    #####   \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x1F, 0x00, //    #####   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @800 '9' (11 pixels wide)\n  0x00, 0x00, //            \n  0x1E, 0x00, //    ####    \n  0x33, 0x00, //   ##  ##   \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x33, 0x80, //   ##  ###  \n  0x1D, 0x80, //    ### ##  \n  0x01, 0x80, //        ##  \n  0x03, 0x00, //       ##   \n  0x07, 0x00, //      ###   \n  0x3C, 0x00, //   ####     \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @832 ':' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @864 ';' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x03, 0x00, //       ##   \n  0x03, 0x00, //       ##   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x06, 0x00, //      ##    \n  0x04, 0x00, //      #     \n  0x08, 0x00, //     #      \n  0x08, 0x00, //     #      \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @896 '<' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0xC0, //         ## \n  0x03, 0x00, //       ##   \n  0x04, 0x00, //      #     \n  0x18, 0x00, //    ##      \n  0x60, 0x00, //  ##        \n  0x18, 0x00, //    ##      \n  0x04, 0x00, //      #     \n  0x03, 0x00, //       ##   \n  0x00, 0xC0, //         ## \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @928 '=' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x7F, 0xC0, //  ######### \n  0x00, 0x00, //            \n  0x7F, 0xC0, //  ######### \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @960 '>' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x60, 0x00, //  ##        \n  0x18, 0x00, //    ##      \n  0x04, 0x00, //      #     \n  0x03, 0x00, //       ##   \n  0x00, 0xC0, //         ## \n  0x03, 0x00, //       ##   \n  0x04, 0x00, //      #     \n  0x18, 0x00, //    ##      \n  0x60, 0x00, //  ##        \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @992 '?' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x1F, 0x00, //    #####   \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x01, 0x80, //        ##  \n  0x07, 0x00, //      ###   \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x00, 0x00, //            \n  0x0C, 0x00, //     ##     \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1024 '@' (11 pixels wide)\n  0x00, 0x00, //            \n  0x0E, 0x00, //     ###    \n  0x11, 0x00, //    #   #   \n  0x21, 0x00, //   #    #   \n  0x21, 0x00, //   #    #   \n  0x27, 0x00, //   #  ###   \n  0x29, 0x00, //   # #  #   \n  0x29, 0x00, //   # #  #   \n  0x27, 0x00, //   #  ###   \n  0x20, 0x00, //   #        \n  0x11, 0x00, //    #   #   \n  0x0E, 0x00, //     ###    \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1056 'A' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x3F, 0x00, //   ######   \n  0x0F, 0x00, //     ####   \n  0x09, 0x00, //     #  #   \n  0x19, 0x80, //    ##  ##  \n  0x19, 0x80, //    ##  ##  \n  0x1F, 0x80, //    ######  \n  0x30, 0xC0, //   ##    ## \n  0x30, 0xC0, //   ##    ## \n  0x79, 0xE0, //  ####  ####\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1088 'B' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x7F, 0x00, //  #######   \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x3F, 0x00, //   ######   \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x7F, 0x00, //  #######   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1120 'C' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x1F, 0x40, //    ##### # \n  0x30, 0xC0, //   ##    ## \n  0x60, 0x40, //  ##      # \n  0x60, 0x00, //  ##        \n  0x60, 0x00, //  ##        \n  0x60, 0x00, //  ##        \n  0x60, 0x40, //  ##      # \n  0x30, 0x80, //   ##    #  \n  0x1F, 0x00, //    #####   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1152 'D' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x7F, 0x00, //  #######   \n  0x31, 0x80, //   ##   ##  \n  0x30, 0xC0, //   ##    ## \n  0x30, 0xC0, //   ##    ## \n  0x30, 0xC0, //   ##    ## \n  0x30, 0xC0, //   ##    ## \n  0x30, 0xC0, //   ##    ## \n  0x31, 0x80, //   ##   ##  \n  0x7F, 0x00, //  #######   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1184 'E' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x7F, 0x80, //  ########  \n  0x30, 0x80, //   ##    #  \n  0x30, 0x80, //   ##    #  \n  0x32, 0x00, //   ##  #    \n  0x3E, 0x00, //   #####    \n  0x32, 0x00, //   ##  #    \n  0x30, 0x80, //   ##    #  \n  0x30, 0x80, //   ##    #  \n  0x7F, 0x80, //  ########  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1216 'F' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x7F, 0xC0, //  ######### \n  0x30, 0x40, //   ##     # \n  0x30, 0x40, //   ##     # \n  0x32, 0x00, //   ##  #    \n  0x3E, 0x00, //   #####    \n  0x32, 0x00, //   ##  #    \n  0x30, 0x00, //   ##       \n  0x30, 0x00, //   ##       \n  0x7C, 0x00, //  #####     \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1248 'G' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x1E, 0x80, //    #### #  \n  0x31, 0x80, //   ##   ##  \n  0x60, 0x80, //  ##     #  \n  0x60, 0x00, //  ##        \n  0x60, 0x00, //  ##        \n  0x67, 0xC0, //  ##  ##### \n  0x61, 0x80, //  ##    ##  \n  0x31, 0x80, //   ##   ##  \n  0x1F, 0x00, //    #####   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1280 'H' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x7B, 0xC0, //  #### #### \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x3F, 0x80, //   #######  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x7B, 0xC0, //  #### #### \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1312 'I' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x3F, 0xC0, //   ######## \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x3F, 0xC0, //   ######## \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1344 'J' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x1F, 0xC0, //    ####### \n  0x03, 0x00, //       ##   \n  0x03, 0x00, //       ##   \n  0x03, 0x00, //       ##   \n  0x03, 0x00, //       ##   \n  0x63, 0x00, //  ##   ##   \n  0x63, 0x00, //  ##   ##   \n  0x63, 0x00, //  ##   ##   \n  0x3E, 0x00, //   #####    \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1376 'K' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x7B, 0xC0, //  #### #### \n  0x31, 0x80, //   ##   ##  \n  0x33, 0x00, //   ##  ##   \n  0x36, 0x00, //   ## ##    \n  0x3C, 0x00, //   ####     \n  0x3E, 0x00, //   #####    \n  0x33, 0x00, //   ##  ##   \n  0x31, 0x80, //   ##   ##  \n  0x79, 0xC0, //  ####  ### \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1408 'L' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x7E, 0x00, //  ######    \n  0x18, 0x00, //    ##      \n  0x18, 0x00, //    ##      \n  0x18, 0x00, //    ##      \n  0x18, 0x00, //    ##      \n  0x18, 0x40, //    ##    # \n  0x18, 0x40, //    ##    # \n  0x18, 0x40, //    ##    # \n  0x7F, 0xC0, //  ######### \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1440 'M' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0xE0, 0xE0, // ###     ###\n  0x60, 0xC0, //  ##     ## \n  0x71, 0xC0, //  ###   ### \n  0x7B, 0xC0, //  #### #### \n  0x6A, 0xC0, //  ## # # ## \n  0x6E, 0xC0, //  ## ### ## \n  0x64, 0xC0, //  ##  #  ## \n  0x60, 0xC0, //  ##     ## \n  0xFB, 0xE0, // ##### #####\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1472 'N' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x73, 0xC0, //  ###  #### \n  0x31, 0x80, //   ##   ##  \n  0x39, 0x80, //   ###  ##  \n  0x3D, 0x80, //   #### ##  \n  0x35, 0x80, //   ## # ##  \n  0x37, 0x80, //   ## ####  \n  0x33, 0x80, //   ##  ###  \n  0x31, 0x80, //   ##   ##  \n  0x79, 0x80, //  ####  ##  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1504 'O' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x1F, 0x00, //    #####   \n  0x31, 0x80, //   ##   ##  \n  0x60, 0xC0, //  ##     ## \n  0x60, 0xC0, //  ##     ## \n  0x60, 0xC0, //  ##     ## \n  0x60, 0xC0, //  ##     ## \n  0x60, 0xC0, //  ##     ## \n  0x31, 0x80, //   ##   ##  \n  0x1F, 0x00, //    #####   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1536 'P' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x7F, 0x00, //  #######   \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x3F, 0x00, //   ######   \n  0x30, 0x00, //   ##       \n  0x30, 0x00, //   ##       \n  0x7E, 0x00, //  ######    \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1568 'Q' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x1F, 0x00, //    #####   \n  0x31, 0x80, //   ##   ##  \n  0x60, 0xC0, //  ##     ## \n  0x60, 0xC0, //  ##     ## \n  0x60, 0xC0, //  ##     ## \n  0x60, 0xC0, //  ##     ## \n  0x60, 0xC0, //  ##     ## \n  0x31, 0x80, //   ##   ##  \n  0x1F, 0x00, //    #####   \n  0x0C, 0xC0, //     ##  ## \n  0x1F, 0x80, //    ######  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1600 'R' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x7F, 0x00, //  #######   \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x3E, 0x00, //   #####    \n  0x33, 0x00, //   ##  ##   \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x7C, 0xE0, //  #####  ###\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1632 'S' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x1F, 0x80, //    ######  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x38, 0x00, //   ###      \n  0x1F, 0x00, //    #####   \n  0x03, 0x80, //       ###  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x3F, 0x00, //   ######   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1664 'T' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x7F, 0x80, //  ########  \n  0x4C, 0x80, //  #  ##  #  \n  0x4C, 0x80, //  #  ##  #  \n  0x4C, 0x80, //  #  ##  #  \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x3F, 0x00, //   ######   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1696 'U' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x7B, 0xC0, //  #### #### \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x1F, 0x00, //    #####   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1728 'V' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x7B, 0xC0, //  #### #### \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x1B, 0x00, //    ## ##   \n  0x1B, 0x00, //    ## ##   \n  0x1B, 0x00, //    ## ##   \n  0x0A, 0x00, //     # #    \n  0x0E, 0x00, //     ###    \n  0x0E, 0x00, //     ###    \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1760 'W' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0xFB, 0xE0, // ##### #####\n  0x60, 0xC0, //  ##     ## \n  0x64, 0xC0, //  ##  #  ## \n  0x6E, 0xC0, //  ## ### ## \n  0x6E, 0xC0, //  ## ### ## \n  0x2A, 0x80, //   # # # #  \n  0x3B, 0x80, //   ### ###  \n  0x3B, 0x80, //   ### ###  \n  0x31, 0x80, //   ##   ##  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1792 'X' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x7B, 0xC0, //  #### #### \n  0x31, 0x80, //   ##   ##  \n  0x1B, 0x00, //    ## ##   \n  0x0E, 0x00, //     ###    \n  0x0E, 0x00, //     ###    \n  0x0E, 0x00, //     ###    \n  0x1B, 0x00, //    ## ##   \n  0x31, 0x80, //   ##   ##  \n  0x7B, 0xC0, //  #### #### \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1824 'Y' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x79, 0xE0, //  ####  ####\n  0x30, 0xC0, //   ##    ## \n  0x19, 0x80, //    ##  ##  \n  0x0F, 0x00, //     ####   \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x1F, 0x80, //    ######  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1856 'Z' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x3F, 0x80, //   #######  \n  0x21, 0x80, //   #    ##  \n  0x23, 0x00, //   #   ##   \n  0x06, 0x00, //      ##    \n  0x04, 0x00, //      #     \n  0x0C, 0x00, //     ##     \n  0x18, 0x80, //    ##   #  \n  0x30, 0x80, //   ##    #  \n  0x3F, 0x80, //   #######  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1888 '[' (11 pixels wide)\n  0x00, 0x00, //            \n  0x07, 0x80, //      ####  \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x07, 0x80, //      ####  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1920 '\\' (11 pixels wide)\n  0x30, 0x00, //   ##       \n  0x30, 0x00, //   ##       \n  0x18, 0x00, //    ##      \n  0x18, 0x00, //    ##      \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x06, 0x00, //      ##    \n  0x03, 0x00, //       ##   \n  0x03, 0x00, //       ##   \n  0x01, 0x80, //        ##  \n  0x01, 0x80, //        ##  \n  0x00, 0xC0, //         ## \n  0x00, 0xC0, //         ## \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1952 ']' (11 pixels wide)\n  0x00, 0x00, //            \n  0x1E, 0x00, //    ####    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x1E, 0x00, //    ####    \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @1984 '^' (11 pixels wide)\n  0x04, 0x00, //      #     \n  0x0A, 0x00, //     # #    \n  0x0A, 0x00, //     # #    \n  0x11, 0x00, //    #   #   \n  0x20, 0x80, //   #     #  \n  0x20, 0x80, //   #     #  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2016 '_' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0xFF, 0xE0, // ###########\n\n  // @2048 '`' (11 pixels wide)\n  0x08, 0x00, //     #      \n  0x04, 0x00, //      #     \n  0x02, 0x00, //       #    \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2080 'a' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x1F, 0x00, //    #####   \n  0x01, 0x80, //        ##  \n  0x01, 0x80, //        ##  \n  0x1F, 0x80, //    ######  \n  0x31, 0x80, //   ##   ##  \n  0x33, 0x80, //   ##  ###  \n  0x1D, 0xC0, //    ### ### \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2112 'b' (11 pixels wide)\n  0x00, 0x00, //            \n  0x70, 0x00, //  ###       \n  0x30, 0x00, //   ##       \n  0x30, 0x00, //   ##       \n  0x37, 0x00, //   ## ###   \n  0x39, 0x80, //   ###  ##  \n  0x30, 0xC0, //   ##    ## \n  0x30, 0xC0, //   ##    ## \n  0x30, 0xC0, //   ##    ## \n  0x39, 0x80, //   ###  ##  \n  0x77, 0x00, //  ### ###   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2144 'c' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x1E, 0x80, //    #### #  \n  0x31, 0x80, //   ##   ##  \n  0x60, 0x80, //  ##     #  \n  0x60, 0x00, //  ##        \n  0x60, 0x80, //  ##     #  \n  0x31, 0x80, //   ##   ##  \n  0x1F, 0x00, //    #####   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2176 'd' (11 pixels wide)\n  0x00, 0x00, //            \n  0x03, 0x80, //       ###  \n  0x01, 0x80, //        ##  \n  0x01, 0x80, //        ##  \n  0x1D, 0x80, //    ### ##  \n  0x33, 0x80, //   ##  ###  \n  0x61, 0x80, //  ##    ##  \n  0x61, 0x80, //  ##    ##  \n  0x61, 0x80, //  ##    ##  \n  0x33, 0x80, //   ##  ###  \n  0x1D, 0xC0, //    ### ### \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2208 'e' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x1F, 0x00, //    #####   \n  0x31, 0x80, //   ##   ##  \n  0x60, 0xC0, //  ##     ## \n  0x7F, 0xC0, //  ######### \n  0x60, 0x00, //  ##        \n  0x30, 0xC0, //   ##    ## \n  0x1F, 0x80, //    ######  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2240 'f' (11 pixels wide)\n  0x00, 0x00, //            \n  0x07, 0xE0, //      ######\n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x3F, 0x80, //   #######  \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x3F, 0x80, //   #######  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2272 'g' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x1D, 0xC0, //    ### ### \n  0x33, 0x80, //   ##  ###  \n  0x61, 0x80, //  ##    ##  \n  0x61, 0x80, //  ##    ##  \n  0x61, 0x80, //  ##    ##  \n  0x33, 0x80, //   ##  ###  \n  0x1D, 0x80, //    ### ##  \n  0x01, 0x80, //        ##  \n  0x01, 0x80, //        ##  \n  0x1F, 0x00, //    #####   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2304 'h' (11 pixels wide)\n  0x00, 0x00, //            \n  0x70, 0x00, //  ###       \n  0x30, 0x00, //   ##       \n  0x30, 0x00, //   ##       \n  0x37, 0x00, //   ## ###   \n  0x39, 0x80, //   ###  ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x7B, 0xC0, //  #### #### \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2336 'i' (11 pixels wide)\n  0x00, 0x00, //            \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x00, 0x00, //            \n  0x1E, 0x00, //    ####    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x3F, 0xC0, //   ######## \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2368 'j' (11 pixels wide)\n  0x00, 0x00, //            \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x00, 0x00, //            \n  0x3F, 0x00, //   ######   \n  0x03, 0x00, //       ##   \n  0x03, 0x00, //       ##   \n  0x03, 0x00, //       ##   \n  0x03, 0x00, //       ##   \n  0x03, 0x00, //       ##   \n  0x03, 0x00, //       ##   \n  0x03, 0x00, //       ##   \n  0x03, 0x00, //       ##   \n  0x3E, 0x00, //   #####    \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2400 'k' (11 pixels wide)\n  0x00, 0x00, //            \n  0x70, 0x00, //  ###       \n  0x30, 0x00, //   ##       \n  0x30, 0x00, //   ##       \n  0x37, 0x80, //   ## ####  \n  0x36, 0x00, //   ## ##    \n  0x3C, 0x00, //   ####     \n  0x3C, 0x00, //   ####     \n  0x36, 0x00, //   ## ##    \n  0x33, 0x00, //   ##  ##   \n  0x77, 0xC0, //  ### ##### \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2432 'l' (11 pixels wide)\n  0x00, 0x00, //            \n  0x1E, 0x00, //    ####    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x3F, 0xC0, //   ######## \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2464 'm' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x7F, 0x80, //  ########  \n  0x36, 0xC0, //   ## ## ## \n  0x36, 0xC0, //   ## ## ## \n  0x36, 0xC0, //   ## ## ## \n  0x36, 0xC0, //   ## ## ## \n  0x36, 0xC0, //   ## ## ## \n  0x76, 0xE0, //  ### ## ###\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2496 'n' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x77, 0x00, //  ### ###   \n  0x39, 0x80, //   ###  ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x7B, 0xC0, //  #### #### \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2528 'o' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x1F, 0x00, //    #####   \n  0x31, 0x80, //   ##   ##  \n  0x60, 0xC0, //  ##     ## \n  0x60, 0xC0, //  ##     ## \n  0x60, 0xC0, //  ##     ## \n  0x31, 0x80, //   ##   ##  \n  0x1F, 0x00, //    #####   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2560 'p' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x77, 0x00, //  ### ###   \n  0x39, 0x80, //   ###  ##  \n  0x30, 0xC0, //   ##    ## \n  0x30, 0xC0, //   ##    ## \n  0x30, 0xC0, //   ##    ## \n  0x39, 0x80, //   ###  ##  \n  0x37, 0x00, //   ## ###   \n  0x30, 0x00, //   ##       \n  0x30, 0x00, //   ##       \n  0x7C, 0x00, //  #####     \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2592 'q' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x1D, 0xC0, //    ### ### \n  0x33, 0x80, //   ##  ###  \n  0x61, 0x80, //  ##    ##  \n  0x61, 0x80, //  ##    ##  \n  0x61, 0x80, //  ##    ##  \n  0x33, 0x80, //   ##  ###  \n  0x1D, 0x80, //    ### ##  \n  0x01, 0x80, //        ##  \n  0x01, 0x80, //        ##  \n  0x07, 0xC0, //      ##### \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2624 'r' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x7B, 0x80, //  #### ###  \n  0x1C, 0xC0, //    ###  ## \n  0x18, 0x00, //    ##      \n  0x18, 0x00, //    ##      \n  0x18, 0x00, //    ##      \n  0x18, 0x00, //    ##      \n  0x7F, 0x00, //  #######   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2656 's' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x1F, 0x80, //    ######  \n  0x31, 0x80, //   ##   ##  \n  0x3C, 0x00, //   ####     \n  0x1F, 0x00, //    #####   \n  0x03, 0x80, //       ###  \n  0x31, 0x80, //   ##   ##  \n  0x3F, 0x00, //   ######   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2688 't' (11 pixels wide)\n  0x00, 0x00, //            \n  0x18, 0x00, //    ##      \n  0x18, 0x00, //    ##      \n  0x18, 0x00, //    ##      \n  0x7F, 0x00, //  #######   \n  0x18, 0x00, //    ##      \n  0x18, 0x00, //    ##      \n  0x18, 0x00, //    ##      \n  0x18, 0x00, //    ##      \n  0x18, 0x80, //    ##   #  \n  0x0F, 0x00, //     ####   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2720 'u' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x73, 0x80, //  ###  ###  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x33, 0x80, //   ##  ###  \n  0x1D, 0xC0, //    ### ### \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2752 'v' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x7B, 0xC0, //  #### #### \n  0x31, 0x80, //   ##   ##  \n  0x31, 0x80, //   ##   ##  \n  0x1B, 0x00, //    ## ##   \n  0x1B, 0x00, //    ## ##   \n  0x0E, 0x00, //     ###    \n  0x0E, 0x00, //     ###    \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2784 'w' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0xF1, 0xE0, // ####   ####\n  0x60, 0xC0, //  ##     ## \n  0x64, 0xC0, //  ##  #  ## \n  0x6E, 0xC0, //  ## ### ## \n  0x3B, 0x80, //   ### ###  \n  0x3B, 0x80, //   ### ###  \n  0x31, 0x80, //   ##   ##  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2816 'x' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x7B, 0xC0, //  #### #### \n  0x1B, 0x00, //    ## ##   \n  0x0E, 0x00, //     ###    \n  0x0E, 0x00, //     ###    \n  0x0E, 0x00, //     ###    \n  0x1B, 0x00, //    ## ##   \n  0x7B, 0xC0, //  #### #### \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2848 'y' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x79, 0xE0, //  ####  ####\n  0x30, 0xC0, //   ##    ## \n  0x19, 0x80, //    ##  ##  \n  0x19, 0x80, //    ##  ##  \n  0x0B, 0x00, //     # ##   \n  0x0F, 0x00, //     ####   \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x0C, 0x00, //     ##     \n  0x3E, 0x00, //   #####    \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2880 'z' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x3F, 0x80, //   #######  \n  0x21, 0x80, //   #    ##  \n  0x03, 0x00, //       ##   \n  0x0E, 0x00, //     ###    \n  0x18, 0x00, //    ##      \n  0x30, 0x80, //   ##    #  \n  0x3F, 0x80, //   #######  \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2912 '{' (11 pixels wide)\n  0x00, 0x00, //            \n  0x06, 0x00, //      ##    \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x18, 0x00, //    ##      \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x0C, 0x00, //     ##     \n  0x06, 0x00, //      ##    \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2944 '|' (11 pixels wide)\n  0x00, 0x00, //            \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @2976 '}' (11 pixels wide)\n  0x00, 0x00, //            \n  0x0C, 0x00, //     ##     \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x03, 0x00, //       ##   \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x06, 0x00, //      ##    \n  0x0C, 0x00, //     ##     \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n\n  // @3008 '~' (11 pixels wide)\n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x18, 0x00, //    ##      \n  0x24, 0x80, //   #  #  #  \n  0x03, 0x00, //       ##   \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n  0x00, 0x00, //            \n};\n\nsFONT Font16 = \n{\n  Font16_Table,\n  11,\t\t// Width\n  16,\t\t// Height\n  0x20,\t\t// First ' '\n  0x7E\t\t// Last '~'\n\n};\n\n/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\n"
  },
  {
    "path": "font20.c",
    "content": "/**\n  ******************************************************************************\n  * @file    font20.c\n  * @author  MCD Application Team\n  * @version V1.0.0\n  * @date    18-February-2014\n  * @brief   This file provides text font20 for STM32xx-EVAL's LCD driver. \n  ******************************************************************************\n  * @attention\n  *\n  * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>\n  *\n  * Redistribution and use in source and binary forms, with or without modification,\n  * are permitted provided that the following conditions are met:\n  *   1. Redistributions of source code must retain the above copyright notice,\n  *      this list of conditions and the following disclaimer.\n  *   2. Redistributions in binary form must reproduce the above copyright notice,\n  *      this list of conditions and the following disclaimer in the documentation\n  *      and/or other materials provided with the distribution.\n  *   3. Neither the name of STMicroelectronics nor the names of its contributors\n  *      may be used to endorse or promote products derived from this software\n  *      without specific prior written permission.\n  *\n  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n  *\n  ******************************************************************************\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"fonts.h\"\n\n// Character bitmaps for Courier New 15pt\nconst uint8_t Font20_Table[] =\n{\n  // @0 ' ' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @40 '!' (14 pixels wide)\n  0x00, 0x00, //               \n  0x07, 0x00, //      ###      \n  0x07, 0x00, //      ###      \n  0x07, 0x00, //      ###      \n  0x07, 0x00, //      ###      \n  0x07, 0x00, //      ###      \n  0x07, 0x00, //      ###      \n  0x07, 0x00, //      ###      \n  0x02, 0x00, //       #       \n  0x02, 0x00, //       #       \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x07, 0x00, //      ###      \n  0x07, 0x00, //      ###      \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @80 '\"' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x1C, 0xE0, //    ###  ###   \n  0x1C, 0xE0, //    ###  ###   \n  0x1C, 0xE0, //    ###  ###   \n  0x08, 0x40, //     #    #    \n  0x08, 0x40, //     #    #    \n  0x08, 0x40, //     #    #    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @120 '#' (14 pixels wide)\n  0x0C, 0xC0, //     ##  ##    \n  0x0C, 0xC0, //     ##  ##    \n  0x0C, 0xC0, //     ##  ##    \n  0x0C, 0xC0, //     ##  ##    \n  0x0C, 0xC0, //     ##  ##    \n  0x3F, 0xF0, //   ##########  \n  0x3F, 0xF0, //   ##########  \n  0x0C, 0xC0, //     ##  ##    \n  0x0C, 0xC0, //     ##  ##    \n  0x3F, 0xF0, //   ##########  \n  0x3F, 0xF0, //   ##########  \n  0x0C, 0xC0, //     ##  ##    \n  0x0C, 0xC0, //     ##  ##    \n  0x0C, 0xC0, //     ##  ##    \n  0x0C, 0xC0, //     ##  ##    \n  0x0C, 0xC0, //     ##  ##    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @160 '$' (14 pixels wide)\n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x07, 0xE0, //      ######   \n  0x0F, 0xE0, //     #######   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x00, //    ##         \n  0x1F, 0x00, //    #####      \n  0x0F, 0xC0, //     ######    \n  0x00, 0xE0, //         ###   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x1F, 0xC0, //    #######    \n  0x1F, 0x80, //    ######     \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @200 '%' (14 pixels wide)\n  0x00, 0x00, //               \n  0x1C, 0x00, //    ###        \n  0x22, 0x00, //   #   #       \n  0x22, 0x00, //   #   #       \n  0x22, 0x00, //   #   #       \n  0x1C, 0x60, //    ###   ##   \n  0x01, 0xE0, //        ####   \n  0x0F, 0x80, //     #####     \n  0x3C, 0x00, //   ####        \n  0x31, 0xC0, //   ##   ###    \n  0x02, 0x20, //       #   #   \n  0x02, 0x20, //       #   #   \n  0x02, 0x20, //       #   #   \n  0x01, 0xC0, //        ###    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @240 '&' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x03, 0xE0, //       #####   \n  0x0F, 0xE0, //     #######   \n  0x0C, 0x00, //     ##        \n  0x0C, 0x00, //     ##        \n  0x06, 0x00, //      ##       \n  0x0F, 0x30, //     ####  ##  \n  0x1F, 0xF0, //    #########  \n  0x19, 0xE0, //    ##  ####   \n  0x18, 0xC0, //    ##   ##    \n  0x1F, 0xF0, //    #########  \n  0x07, 0xB0, //      #### ##  \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @280 ''' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x03, 0x80, //       ###     \n  0x03, 0x80, //       ###     \n  0x03, 0x80, //       ###     \n  0x01, 0x00, //        #      \n  0x01, 0x00, //        #      \n  0x01, 0x00, //        #      \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @320 '(' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0xC0, //         ##    \n  0x00, 0xC0, //         ##    \n  0x01, 0x80, //        ##     \n  0x01, 0x80, //        ##     \n  0x01, 0x80, //        ##     \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x01, 0x80, //        ##     \n  0x01, 0x80, //        ##     \n  0x01, 0x80, //        ##     \n  0x00, 0xC0, //         ##    \n  0x00, 0xC0, //         ##    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @360 ')' (14 pixels wide)\n  0x00, 0x00, //               \n  0x0C, 0x00, //     ##        \n  0x0C, 0x00, //     ##        \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x0C, 0x00, //     ##        \n  0x0C, 0x00, //     ##        \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @400 '*' (14 pixels wide)\n  0x00, 0x00, //               \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x1B, 0x60, //    ## ## ##   \n  0x1F, 0xE0, //    ########   \n  0x07, 0x80, //      ####     \n  0x07, 0x80, //      ####     \n  0x0F, 0xC0, //     ######    \n  0x0C, 0xC0, //     ##  ##    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @440 '+' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x3F, 0xF0, //   ##########  \n  0x3F, 0xF0, //   ##########  \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @480 ',' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x03, 0x80, //       ###     \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x04, 0x00, //      #        \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @520 '-' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x3F, 0xE0, //   #########   \n  0x3F, 0xE0, //   #########   \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @560 '.' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x03, 0x80, //       ###     \n  0x03, 0x80, //       ###     \n  0x03, 0x80, //       ###     \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @600 '/' (14 pixels wide)\n  0x00, 0x60, //          ##   \n  0x00, 0x60, //          ##   \n  0x00, 0xC0, //         ##    \n  0x00, 0xC0, //         ##    \n  0x00, 0xC0, //         ##    \n  0x01, 0x80, //        ##     \n  0x01, 0x80, //        ##     \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x0C, 0x00, //     ##        \n  0x0C, 0x00, //     ##        \n  0x0C, 0x00, //     ##        \n  0x18, 0x00, //    ##         \n  0x18, 0x00, //    ##         \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @640 '0' (14 pixels wide)\n  0x00, 0x00, //               \n  0x0F, 0x80, //     #####     \n  0x1F, 0xC0, //    #######    \n  0x18, 0xC0, //    ##   ##    \n  0x30, 0x60, //   ##     ##   \n  0x30, 0x60, //   ##     ##   \n  0x30, 0x60, //   ##     ##   \n  0x30, 0x60, //   ##     ##   \n  0x30, 0x60, //   ##     ##   \n  0x30, 0x60, //   ##     ##   \n  0x30, 0x60, //   ##     ##   \n  0x18, 0xC0, //    ##   ##    \n  0x1F, 0xC0, //    #######    \n  0x0F, 0x80, //     #####     \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @680 '1' (14 pixels wide)\n  0x00, 0x00, //               \n  0x03, 0x00, //       ##      \n  0x1F, 0x00, //    #####      \n  0x1F, 0x00, //    #####      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x1F, 0xE0, //    ########   \n  0x1F, 0xE0, //    ########   \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @720 '2' (14 pixels wide)\n  0x00, 0x00, //               \n  0x0F, 0x80, //     #####     \n  0x1F, 0xC0, //    #######    \n  0x38, 0xE0, //   ###   ###   \n  0x30, 0x60, //   ##     ##   \n  0x00, 0x60, //          ##   \n  0x00, 0xC0, //         ##    \n  0x01, 0x80, //        ##     \n  0x03, 0x00, //       ##      \n  0x06, 0x00, //      ##       \n  0x0C, 0x00, //     ##        \n  0x18, 0x00, //    ##         \n  0x3F, 0xE0, //   #########   \n  0x3F, 0xE0, //   #########   \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @760 '3' (14 pixels wide)\n  0x00, 0x00, //               \n  0x0F, 0x80, //     #####     \n  0x3F, 0xC0, //   ########    \n  0x30, 0xE0, //   ##    ###   \n  0x00, 0x60, //          ##   \n  0x00, 0xE0, //         ###   \n  0x07, 0xC0, //      #####    \n  0x07, 0xC0, //      #####    \n  0x00, 0xE0, //         ###   \n  0x00, 0x60, //          ##   \n  0x00, 0x60, //          ##   \n  0x60, 0xE0, //  ##     ###   \n  0x7F, 0xC0, //  #########    \n  0x3F, 0x80, //   #######     \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @800 '4' (14 pixels wide)\n  0x00, 0x00, //               \n  0x01, 0xC0, //        ###    \n  0x03, 0xC0, //       ####    \n  0x03, 0xC0, //       ####    \n  0x06, 0xC0, //      ## ##    \n  0x0C, 0xC0, //     ##  ##    \n  0x0C, 0xC0, //     ##  ##    \n  0x18, 0xC0, //    ##   ##    \n  0x30, 0xC0, //   ##    ##    \n  0x3F, 0xE0, //   #########   \n  0x3F, 0xE0, //   #########   \n  0x00, 0xC0, //         ##    \n  0x03, 0xE0, //       #####   \n  0x03, 0xE0, //       #####   \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @840 '5' (14 pixels wide)\n  0x00, 0x00, //               \n  0x1F, 0xC0, //    #######    \n  0x1F, 0xC0, //    #######    \n  0x18, 0x00, //    ##         \n  0x18, 0x00, //    ##         \n  0x1F, 0x80, //    ######     \n  0x1F, 0xC0, //    #######    \n  0x18, 0xE0, //    ##   ###   \n  0x00, 0x60, //          ##   \n  0x00, 0x60, //          ##   \n  0x00, 0x60, //          ##   \n  0x30, 0xE0, //   ##    ###   \n  0x3F, 0xC0, //   ########    \n  0x1F, 0x80, //    ######     \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @880 '6' (14 pixels wide)\n  0x00, 0x00, //               \n  0x03, 0xE0, //       #####   \n  0x0F, 0xE0, //     #######   \n  0x1E, 0x00, //    ####       \n  0x18, 0x00, //    ##         \n  0x38, 0x00, //   ###         \n  0x37, 0x80, //   ## ####     \n  0x3F, 0xC0, //   ########    \n  0x38, 0xE0, //   ###   ###   \n  0x30, 0x60, //   ##     ##   \n  0x30, 0x60, //   ##     ##   \n  0x18, 0xE0, //    ##   ###   \n  0x1F, 0xC0, //    #######    \n  0x07, 0x80, //      ####     \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @920 '7' (14 pixels wide)\n  0x00, 0x00, //               \n  0x3F, 0xE0, //   #########   \n  0x3F, 0xE0, //   #########   \n  0x30, 0x60, //   ##     ##   \n  0x00, 0x60, //          ##   \n  0x00, 0xC0, //         ##    \n  0x00, 0xC0, //         ##    \n  0x00, 0xC0, //         ##    \n  0x01, 0x80, //        ##     \n  0x01, 0x80, //        ##     \n  0x01, 0x80, //        ##     \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @960 '8' (14 pixels wide)\n  0x00, 0x00, //               \n  0x0F, 0x80, //     #####     \n  0x1F, 0xC0, //    #######    \n  0x38, 0xE0, //   ###   ###   \n  0x30, 0x60, //   ##     ##   \n  0x38, 0xE0, //   ###   ###   \n  0x1F, 0xC0, //    #######    \n  0x1F, 0xC0, //    #######    \n  0x38, 0xE0, //   ###   ###   \n  0x30, 0x60, //   ##     ##   \n  0x30, 0x60, //   ##     ##   \n  0x38, 0xE0, //   ###   ###   \n  0x1F, 0xC0, //    #######    \n  0x0F, 0x80, //     #####     \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1000 '9' (14 pixels wide)\n  0x00, 0x00, //               \n  0x0F, 0x00, //     ####      \n  0x1F, 0xC0, //    #######    \n  0x38, 0xC0, //   ###   ##    \n  0x30, 0x60, //   ##     ##   \n  0x30, 0x60, //   ##     ##   \n  0x38, 0xE0, //   ###   ###   \n  0x1F, 0xE0, //    ########   \n  0x0F, 0x60, //     #### ##   \n  0x00, 0xE0, //         ###   \n  0x00, 0xC0, //         ##    \n  0x03, 0xC0, //       ####    \n  0x3F, 0x80, //   #######     \n  0x3E, 0x00, //   #####       \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1040 ':' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x03, 0x80, //       ###     \n  0x03, 0x80, //       ###     \n  0x03, 0x80, //       ###     \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x03, 0x80, //       ###     \n  0x03, 0x80, //       ###     \n  0x03, 0x80, //       ###     \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1080 ';' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x01, 0xC0, //        ###    \n  0x01, 0xC0, //        ###    \n  0x01, 0xC0, //        ###    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x03, 0x80, //       ###     \n  0x03, 0x00, //       ##      \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x04, 0x00, //      #        \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1120 '<' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x30, //           ##  \n  0x00, 0xF0, //         ####  \n  0x03, 0xC0, //       ####    \n  0x07, 0x00, //      ###      \n  0x1C, 0x00, //    ###        \n  0x78, 0x00, //  ####         \n  0x1C, 0x00, //    ###        \n  0x07, 0x00, //      ###      \n  0x03, 0xC0, //       ####    \n  0x00, 0xF0, //         ####  \n  0x00, 0x30, //           ##  \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1160 '=' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x7F, 0xF0, //  ###########  \n  0x7F, 0xF0, //  ###########  \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x7F, 0xF0, //  ###########  \n  0x7F, 0xF0, //  ###########  \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1200 '>' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x30, 0x00, //   ##          \n  0x3C, 0x00, //   ####        \n  0x0F, 0x00, //     ####      \n  0x03, 0x80, //       ###     \n  0x00, 0xE0, //         ###   \n  0x00, 0x78, //          #### \n  0x00, 0xE0, //         ###   \n  0x03, 0x80, //       ###     \n  0x0F, 0x00, //     ####      \n  0x3C, 0x00, //   ####        \n  0x30, 0x00, //   ##          \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1240 '?' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x0F, 0x80, //     #####     \n  0x1F, 0xC0, //    #######    \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x00, 0x60, //          ##   \n  0x01, 0xC0, //        ###    \n  0x03, 0x80, //       ###     \n  0x03, 0x00, //       ##      \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x07, 0x00, //      ###      \n  0x07, 0x00, //      ###      \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1280 '@' (14 pixels wide)\n  0x00, 0x00, //               \n  0x03, 0x80, //       ###     \n  0x0C, 0x80, //     ##  #     \n  0x08, 0x40, //     #    #    \n  0x10, 0x40, //    #     #    \n  0x10, 0x40, //    #     #    \n  0x11, 0xC0, //    #   ###    \n  0x12, 0x40, //    #  #  #    \n  0x12, 0x40, //    #  #  #    \n  0x12, 0x40, //    #  #  #    \n  0x11, 0xC0, //    #   ###    \n  0x10, 0x00, //    #          \n  0x08, 0x00, //     #         \n  0x08, 0x40, //     #    #    \n  0x07, 0x80, //      ####     \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1320 'A' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x1F, 0x80, //    ######     \n  0x1F, 0x80, //    ######     \n  0x03, 0x80, //       ###     \n  0x06, 0xC0, //      ## ##    \n  0x06, 0xC0, //      ## ##    \n  0x0C, 0xC0, //     ##  ##    \n  0x0C, 0x60, //     ##   ##   \n  0x1F, 0xE0, //    ########   \n  0x1F, 0xE0, //    ########   \n  0x30, 0x30, //   ##      ##  \n  0x78, 0x78, //  ####    #### \n  0x78, 0x78, //  ####    #### \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1360 'B' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x3F, 0x80, //   #######     \n  0x3F, 0xC0, //   ########    \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0xE0, //    ##   ###   \n  0x1F, 0xC0, //    #######    \n  0x1F, 0xE0, //    ########   \n  0x18, 0x70, //    ##    ###  \n  0x18, 0x30, //    ##     ##  \n  0x18, 0x30, //    ##     ##  \n  0x3F, 0xF0, //   ##########  \n  0x3F, 0xE0, //   #########   \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1400 'C' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x07, 0xB0, //      #### ##  \n  0x0F, 0xF0, //     ########  \n  0x1C, 0x70, //    ###   ###  \n  0x38, 0x30, //   ###     ##  \n  0x30, 0x00, //   ##          \n  0x30, 0x00, //   ##          \n  0x30, 0x00, //   ##          \n  0x30, 0x00, //   ##          \n  0x38, 0x30, //   ###     ##  \n  0x1C, 0x70, //    ###   ###  \n  0x0F, 0xE0, //     #######   \n  0x07, 0xC0, //      #####    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1440 'D' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x7F, 0x80, //  ########     \n  0x7F, 0xC0, //  #########    \n  0x30, 0xE0, //   ##    ###   \n  0x30, 0x70, //   ##     ###  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x70, //   ##     ###  \n  0x30, 0xE0, //   ##    ###   \n  0x7F, 0xC0, //  #########    \n  0x7F, 0x80, //  ########     \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1480 'E' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x3F, 0xF0, //   ##########  \n  0x3F, 0xF0, //   ##########  \n  0x18, 0x30, //    ##     ##  \n  0x18, 0x30, //    ##     ##  \n  0x19, 0x80, //    ##  ##     \n  0x1F, 0x80, //    ######     \n  0x1F, 0x80, //    ######     \n  0x19, 0x80, //    ##  ##     \n  0x18, 0x30, //    ##     ##  \n  0x18, 0x30, //    ##     ##  \n  0x3F, 0xF0, //   ##########  \n  0x3F, 0xF0, //   ##########  \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1520 'F' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x3F, 0xF0, //   ##########  \n  0x3F, 0xF0, //   ##########  \n  0x18, 0x30, //    ##     ##  \n  0x18, 0x30, //    ##     ##  \n  0x19, 0x80, //    ##  ##     \n  0x1F, 0x80, //    ######     \n  0x1F, 0x80, //    ######     \n  0x19, 0x80, //    ##  ##     \n  0x18, 0x00, //    ##         \n  0x18, 0x00, //    ##         \n  0x3F, 0x00, //   ######      \n  0x3F, 0x00, //   ######      \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1560 'G' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x07, 0xB0, //      #### ##  \n  0x1F, 0xF0, //    #########  \n  0x18, 0x70, //    ##    ###  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x00, //   ##          \n  0x30, 0x00, //   ##          \n  0x31, 0xF8, //   ##   ###### \n  0x31, 0xF8, //   ##   ###### \n  0x30, 0x30, //   ##      ##  \n  0x18, 0x30, //    ##     ##  \n  0x1F, 0xF0, //    #########  \n  0x07, 0xC0, //      #####    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1600 'H' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x3C, 0xF0, //   ####  ####  \n  0x3C, 0xF0, //   ####  ####  \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x1F, 0xE0, //    ########   \n  0x1F, 0xE0, //    ########   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x3C, 0xF0, //   ####  ####  \n  0x3C, 0xF0, //   ####  ####  \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1640 'I' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x1F, 0xE0, //    ########   \n  0x1F, 0xE0, //    ########   \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x1F, 0xE0, //    ########   \n  0x1F, 0xE0, //    ########   \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1680 'J' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x03, 0xF8, //       ####### \n  0x03, 0xF8, //       ####### \n  0x00, 0x60, //          ##   \n  0x00, 0x60, //          ##   \n  0x00, 0x60, //          ##   \n  0x00, 0x60, //          ##   \n  0x30, 0x60, //   ##     ##   \n  0x30, 0x60, //   ##     ##   \n  0x30, 0x60, //   ##     ##   \n  0x30, 0xE0, //   ##    ###   \n  0x3F, 0xC0, //   ########    \n  0x0F, 0x80, //     #####     \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1720 'K' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x3E, 0xF8, //   ##### ##### \n  0x3E, 0xF8, //   ##### ##### \n  0x18, 0xE0, //    ##   ###   \n  0x19, 0x80, //    ##  ##     \n  0x1B, 0x00, //    ## ##      \n  0x1F, 0x00, //    #####      \n  0x1D, 0x80, //    ### ##     \n  0x18, 0xC0, //    ##   ##    \n  0x18, 0xC0, //    ##   ##    \n  0x18, 0x60, //    ##    ##   \n  0x3E, 0x78, //   #####  #### \n  0x3E, 0x38, //   #####   ### \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1760 'L' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x3F, 0x00, //   ######      \n  0x3F, 0x00, //   ######      \n  0x0C, 0x00, //     ##        \n  0x0C, 0x00, //     ##        \n  0x0C, 0x00, //     ##        \n  0x0C, 0x00, //     ##        \n  0x0C, 0x00, //     ##        \n  0x0C, 0x30, //     ##    ##  \n  0x0C, 0x30, //     ##    ##  \n  0x0C, 0x30, //     ##    ##  \n  0x3F, 0xF0, //   ##########  \n  0x3F, 0xF0, //   ##########  \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1800 'M' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x78, 0x78, //  ####    #### \n  0x78, 0x78, //  ####    #### \n  0x38, 0x70, //   ###    ###  \n  0x3C, 0xF0, //   ####  ####  \n  0x34, 0xB0, //   ## #  # ##  \n  0x37, 0xB0, //   ## #### ##  \n  0x37, 0xB0, //   ## #### ##  \n  0x33, 0x30, //   ##  ##  ##  \n  0x33, 0x30, //   ##  ##  ##  \n  0x30, 0x30, //   ##      ##  \n  0x7C, 0xF8, //  #####  ##### \n  0x7C, 0xF8, //  #####  ##### \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1840 'N' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x39, 0xF0, //   ###  #####  \n  0x3D, 0xF0, //   #### #####  \n  0x1C, 0x60, //    ###   ##   \n  0x1E, 0x60, //    ####  ##   \n  0x1E, 0x60, //    ####  ##   \n  0x1B, 0x60, //    ## ## ##   \n  0x1B, 0x60, //    ## ## ##   \n  0x19, 0xE0, //    ##  ####   \n  0x19, 0xE0, //    ##  ####   \n  0x18, 0xE0, //    ##   ###   \n  0x3E, 0xE0, //   ##### ###   \n  0x3E, 0x60, //   #####  ##   \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1880 'O' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x07, 0x80, //      ####     \n  0x0F, 0xC0, //     ######    \n  0x1C, 0xE0, //    ###  ###   \n  0x38, 0x70, //   ###    ###  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x38, 0x70, //   ###    ###  \n  0x1C, 0xE0, //    ###  ###   \n  0x0F, 0xC0, //     ######    \n  0x07, 0x80, //      ####     \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1920 'P' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x3F, 0xC0, //   ########    \n  0x3F, 0xE0, //   #########   \n  0x18, 0x70, //    ##    ###  \n  0x18, 0x30, //    ##     ##  \n  0x18, 0x30, //    ##     ##  \n  0x18, 0x70, //    ##    ###  \n  0x1F, 0xE0, //    ########   \n  0x1F, 0xC0, //    #######    \n  0x18, 0x00, //    ##         \n  0x18, 0x00, //    ##         \n  0x3F, 0x00, //   ######      \n  0x3F, 0x00, //   ######      \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @1960 'Q' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x07, 0x80, //      ####     \n  0x0F, 0xC0, //     ######    \n  0x1C, 0xE0, //    ###  ###   \n  0x38, 0x70, //   ###    ###  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x38, 0x70, //   ###    ###  \n  0x1C, 0xE0, //    ###  ###   \n  0x0F, 0xC0, //     ######    \n  0x07, 0x80, //      ####     \n  0x07, 0xB0, //      #### ##  \n  0x0F, 0xF0, //     ########  \n  0x0C, 0xE0, //     ##  ###   \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2000 'R' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x3F, 0xC0, //   ########    \n  0x3F, 0xE0, //   #########   \n  0x18, 0x70, //    ##    ###  \n  0x18, 0x30, //    ##     ##  \n  0x18, 0x70, //    ##    ###  \n  0x1F, 0xE0, //    ########   \n  0x1F, 0xC0, //    #######    \n  0x18, 0xE0, //    ##   ###   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x70, //    ##    ###  \n  0x3E, 0x38, //   #####   ### \n  0x3E, 0x18, //   #####    ## \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2040 'S' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x0F, 0xB0, //     ##### ##  \n  0x1F, 0xF0, //    #########  \n  0x38, 0x70, //   ###    ###  \n  0x30, 0x30, //   ##      ##  \n  0x38, 0x00, //   ###         \n  0x1F, 0x80, //    ######     \n  0x07, 0xE0, //      ######   \n  0x00, 0x70, //          ###  \n  0x30, 0x30, //   ##      ##  \n  0x38, 0x70, //   ###    ###  \n  0x3F, 0xE0, //   #########   \n  0x37, 0xC0, //   ## #####    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2080 'T' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x3F, 0xF0, //   ##########  \n  0x3F, 0xF0, //   ##########  \n  0x33, 0x30, //   ##  ##  ##  \n  0x33, 0x30, //   ##  ##  ##  \n  0x33, 0x30, //   ##  ##  ##  \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x0F, 0xC0, //     ######    \n  0x0F, 0xC0, //     ######    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2120 'U' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x3C, 0xF0, //   ####  ####  \n  0x3C, 0xF0, //   ####  ####  \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x1C, 0xE0, //    ###  ###   \n  0x0F, 0xC0, //     ######    \n  0x07, 0x80, //      ####     \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2160 'V' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x78, 0xF0, //  ####   ####  \n  0x78, 0xF0, //  ####   ####  \n  0x30, 0x60, //   ##     ##   \n  0x30, 0x60, //   ##     ##   \n  0x18, 0xC0, //    ##   ##    \n  0x18, 0xC0, //    ##   ##    \n  0x0D, 0x80, //     ## ##     \n  0x0D, 0x80, //     ## ##     \n  0x0D, 0x80, //     ## ##     \n  0x07, 0x00, //      ###      \n  0x07, 0x00, //      ###      \n  0x07, 0x00, //      ###      \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2200 'W' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x7C, 0x7C, //  #####   #####\n  0x7C, 0x7C, //  #####   #####\n  0x30, 0x18, //   ##       ## \n  0x33, 0x98, //   ##  ###  ## \n  0x33, 0x98, //   ##  ###  ## \n  0x33, 0x98, //   ##  ###  ## \n  0x36, 0xD8, //   ## ## ## ## \n  0x16, 0xD0, //    # ## ## #  \n  0x1C, 0x70, //    ###   ###  \n  0x1C, 0x70, //    ###   ###  \n  0x1C, 0x70, //    ###   ###  \n  0x18, 0x30, //    ##     ##  \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2240 'X' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x78, 0xF0, //  ####   ####  \n  0x78, 0xF0, //  ####   ####  \n  0x30, 0x60, //   ##     ##   \n  0x18, 0xC0, //    ##   ##    \n  0x0D, 0x80, //     ## ##     \n  0x07, 0x00, //      ###      \n  0x07, 0x00, //      ###      \n  0x0D, 0x80, //     ## ##     \n  0x18, 0xC0, //    ##   ##    \n  0x30, 0x60, //   ##     ##   \n  0x78, 0xF0, //  ####   ####  \n  0x78, 0xF0, //  ####   ####  \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2280 'Y' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x3C, 0xF0, //   ####  ####  \n  0x3C, 0xF0, //   ####  ####  \n  0x18, 0x60, //    ##    ##   \n  0x0C, 0xC0, //     ##  ##    \n  0x07, 0x80, //      ####     \n  0x07, 0x80, //      ####     \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x0F, 0xC0, //     ######    \n  0x0F, 0xC0, //     ######    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2320 'Z' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x1F, 0xE0, //    ########   \n  0x1F, 0xE0, //    ########   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0xC0, //    ##   ##    \n  0x01, 0x80, //        ##     \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x06, 0x00, //      ##       \n  0x0C, 0x60, //     ##   ##   \n  0x18, 0x60, //    ##    ##   \n  0x1F, 0xE0, //    ########   \n  0x1F, 0xE0, //    ########   \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2360 '[' (14 pixels wide)\n  0x00, 0x00, //               \n  0x03, 0xC0, //       ####    \n  0x03, 0xC0, //       ####    \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0xC0, //       ####    \n  0x03, 0xC0, //       ####    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2400 '\\' (14 pixels wide)\n  0x18, 0x00, //    ##         \n  0x18, 0x00, //    ##         \n  0x0C, 0x00, //     ##        \n  0x0C, 0x00, //     ##        \n  0x0C, 0x00, //     ##        \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x01, 0x80, //        ##     \n  0x01, 0x80, //        ##     \n  0x00, 0xC0, //         ##    \n  0x00, 0xC0, //         ##    \n  0x00, 0xC0, //         ##    \n  0x00, 0x60, //          ##   \n  0x00, 0x60, //          ##   \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2440 ']' (14 pixels wide)\n  0x00, 0x00, //               \n  0x0F, 0x00, //     ####      \n  0x0F, 0x00, //     ####      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x0F, 0x00, //     ####      \n  0x0F, 0x00, //     ####      \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2480 '^' (14 pixels wide)\n  0x00, 0x00, //               \n  0x02, 0x00, //       #       \n  0x07, 0x00, //      ###      \n  0x0D, 0x80, //     ## ##     \n  0x18, 0xC0, //    ##   ##    \n  0x30, 0x60, //   ##     ##   \n  0x20, 0x20, //   #       #   \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2520 '_' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0xFF, 0xFC, // ##############\n  0xFF, 0xFC, // ##############\n\n  // @2560 '`' (14 pixels wide)\n  0x00, 0x00, //               \n  0x04, 0x00, //      #        \n  0x03, 0x00, //       ##      \n  0x00, 0x80, //         #     \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2600 'a' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x0F, 0xC0, //     ######    \n  0x1F, 0xE0, //    ########   \n  0x00, 0x60, //          ##   \n  0x0F, 0xE0, //     #######   \n  0x1F, 0xE0, //    ########   \n  0x38, 0x60, //   ###    ##   \n  0x30, 0xE0, //   ##    ###   \n  0x3F, 0xF0, //   ##########  \n  0x1F, 0x70, //    ##### ###  \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2640 'b' (14 pixels wide)\n  0x00, 0x00, //               \n  0x70, 0x00, //  ###          \n  0x70, 0x00, //  ###          \n  0x30, 0x00, //   ##          \n  0x30, 0x00, //   ##          \n  0x37, 0x80, //   ## ####     \n  0x3F, 0xE0, //   #########   \n  0x38, 0x60, //   ###    ##   \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x38, 0x60, //   ###    ##   \n  0x7F, 0xE0, //  ##########   \n  0x77, 0x80, //  ### ####     \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2680 'c' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x07, 0xB0, //      #### ##  \n  0x1F, 0xF0, //    #########  \n  0x18, 0x30, //    ##     ##  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x00, //   ##          \n  0x30, 0x00, //   ##          \n  0x38, 0x30, //   ###     ##  \n  0x1F, 0xF0, //    #########  \n  0x0F, 0xC0, //     ######    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2720 'd' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x70, //          ###  \n  0x00, 0x70, //          ###  \n  0x00, 0x30, //           ##  \n  0x00, 0x30, //           ##  \n  0x07, 0xB0, //      #### ##  \n  0x1F, 0xF0, //    #########  \n  0x18, 0x70, //    ##    ###  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x38, 0x70, //   ###    ###  \n  0x1F, 0xF8, //    ########## \n  0x07, 0xB8, //      #### ### \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2760 'e' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x07, 0x80, //      ####     \n  0x1F, 0xE0, //    ########   \n  0x18, 0x60, //    ##    ##   \n  0x3F, 0xF0, //   ##########  \n  0x3F, 0xF0, //   ##########  \n  0x30, 0x00, //   ##          \n  0x18, 0x30, //    ##     ##  \n  0x1F, 0xF0, //    #########  \n  0x07, 0xC0, //      #####    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2800 'f' (14 pixels wide)\n  0x00, 0x00, //               \n  0x03, 0xF0, //       ######  \n  0x07, 0xF0, //      #######  \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x1F, 0xE0, //    ########   \n  0x1F, 0xE0, //    ########   \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x1F, 0xE0, //    ########   \n  0x1F, 0xE0, //    ########   \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2840 'g' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x07, 0xB8, //      #### ### \n  0x1F, 0xF8, //    ########## \n  0x18, 0x70, //    ##    ###  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x18, 0x70, //    ##    ###  \n  0x1F, 0xF0, //    #########  \n  0x07, 0xB0, //      #### ##  \n  0x00, 0x30, //           ##  \n  0x00, 0x70, //          ###  \n  0x0F, 0xE0, //     #######   \n  0x0F, 0xC0, //     ######    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2880 'h' (14 pixels wide)\n  0x00, 0x00, //               \n  0x38, 0x00, //   ###         \n  0x38, 0x00, //   ###         \n  0x18, 0x00, //    ##         \n  0x18, 0x00, //    ##         \n  0x1B, 0xC0, //    ## ####    \n  0x1F, 0xE0, //    ########   \n  0x1C, 0x60, //    ###   ##   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x3C, 0xF0, //   ####  ####  \n  0x3C, 0xF0, //   ####  ####  \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2920 'i' (14 pixels wide)\n  0x00, 0x00, //               \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x1F, 0x00, //    #####      \n  0x1F, 0x00, //    #####      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x1F, 0xE0, //    ########   \n  0x1F, 0xE0, //    ########   \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @2960 'j' (14 pixels wide)\n  0x00, 0x00, //               \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x1F, 0xC0, //    #######    \n  0x1F, 0xC0, //    #######    \n  0x00, 0xC0, //         ##    \n  0x00, 0xC0, //         ##    \n  0x00, 0xC0, //         ##    \n  0x00, 0xC0, //         ##    \n  0x00, 0xC0, //         ##    \n  0x00, 0xC0, //         ##    \n  0x00, 0xC0, //         ##    \n  0x00, 0xC0, //         ##    \n  0x01, 0xC0, //        ###    \n  0x3F, 0x80, //   #######     \n  0x3F, 0x00, //   ######      \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3000 'k' (14 pixels wide)\n  0x00, 0x00, //               \n  0x38, 0x00, //   ###         \n  0x38, 0x00, //   ###         \n  0x18, 0x00, //    ##         \n  0x18, 0x00, //    ##         \n  0x1B, 0xE0, //    ## #####   \n  0x1B, 0xE0, //    ## #####   \n  0x1B, 0x00, //    ## ##      \n  0x1E, 0x00, //    ####       \n  0x1E, 0x00, //    ####       \n  0x1B, 0x00, //    ## ##      \n  0x19, 0x80, //    ##  ##     \n  0x39, 0xF0, //   ###  #####  \n  0x39, 0xF0, //   ###  #####  \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3040 'l' (14 pixels wide)\n  0x00, 0x00, //               \n  0x1F, 0x00, //    #####      \n  0x1F, 0x00, //    #####      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x1F, 0xE0, //    ########   \n  0x1F, 0xE0, //    ########   \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3080 'm' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x7E, 0xE0, //  ###### ###   \n  0x7F, 0xF0, //  ###########  \n  0x33, 0x30, //   ##  ##  ##  \n  0x33, 0x30, //   ##  ##  ##  \n  0x33, 0x30, //   ##  ##  ##  \n  0x33, 0x30, //   ##  ##  ##  \n  0x33, 0x30, //   ##  ##  ##  \n  0x7B, 0xB8, //  #### ### ### \n  0x7B, 0xB8, //  #### ### ### \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3120 'n' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x3B, 0xC0, //   ### ####    \n  0x3F, 0xE0, //   #########   \n  0x1C, 0x60, //    ###   ##   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x3C, 0xF0, //   ####  ####  \n  0x3C, 0xF0, //   ####  ####  \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3160 'o' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x07, 0x80, //      ####     \n  0x1F, 0xE0, //    ########   \n  0x18, 0x60, //    ##    ##   \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x18, 0x60, //    ##    ##   \n  0x1F, 0xE0, //    ########   \n  0x07, 0x80, //      ####     \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3200 'p' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x77, 0x80, //  ### ####     \n  0x7F, 0xE0, //  ##########   \n  0x38, 0x60, //   ###    ##   \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x38, 0x60, //   ###    ##   \n  0x3F, 0xE0, //   #########   \n  0x37, 0x80, //   ## ####     \n  0x30, 0x00, //   ##          \n  0x30, 0x00, //   ##          \n  0x7C, 0x00, //  #####        \n  0x7C, 0x00, //  #####        \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3240 'q' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x07, 0xB8, //      #### ### \n  0x1F, 0xF8, //    ########## \n  0x18, 0x70, //    ##    ###  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x30, 0x30, //   ##      ##  \n  0x18, 0x70, //    ##    ###  \n  0x1F, 0xF0, //    #########  \n  0x07, 0xB0, //      #### ##  \n  0x00, 0x30, //           ##  \n  0x00, 0x30, //           ##  \n  0x00, 0xF8, //         ##### \n  0x00, 0xF8, //         ##### \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3280 'r' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x3C, 0xE0, //   ####  ###   \n  0x3D, 0xF0, //   #### #####  \n  0x0F, 0x30, //     ####  ##  \n  0x0E, 0x00, //     ###       \n  0x0C, 0x00, //     ##        \n  0x0C, 0x00, //     ##        \n  0x0C, 0x00, //     ##        \n  0x3F, 0xC0, //   ########    \n  0x3F, 0xC0, //   ########    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3320 's' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x07, 0xE0, //      ######   \n  0x1F, 0xE0, //    ########   \n  0x18, 0x60, //    ##    ##   \n  0x1E, 0x00, //    ####       \n  0x0F, 0xC0, //     ######    \n  0x01, 0xE0, //        ####   \n  0x18, 0x60, //    ##    ##   \n  0x1F, 0xE0, //    ########   \n  0x1F, 0x80, //    ######     \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3360 't' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x0C, 0x00, //     ##        \n  0x0C, 0x00, //     ##        \n  0x0C, 0x00, //     ##        \n  0x3F, 0xE0, //   #########   \n  0x3F, 0xE0, //   #########   \n  0x0C, 0x00, //     ##        \n  0x0C, 0x00, //     ##        \n  0x0C, 0x00, //     ##        \n  0x0C, 0x00, //     ##        \n  0x0C, 0x30, //     ##    ##  \n  0x0F, 0xF0, //     ########  \n  0x07, 0xC0, //      #####    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3400 'u' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x38, 0xE0, //   ###   ###   \n  0x38, 0xE0, //   ###   ###   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0x60, //    ##    ##   \n  0x18, 0xE0, //    ##   ###   \n  0x1F, 0xF0, //    #########  \n  0x0F, 0x70, //     #### ###  \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3440 'v' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x78, 0xF0, //  ####   ####  \n  0x78, 0xF0, //  ####   ####  \n  0x30, 0x60, //   ##     ##   \n  0x18, 0xC0, //    ##   ##    \n  0x18, 0xC0, //    ##   ##    \n  0x0D, 0x80, //     ## ##     \n  0x0D, 0x80, //     ## ##     \n  0x07, 0x00, //      ###      \n  0x07, 0x00, //      ###      \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3480 'w' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x78, 0xF0, //  ####   ####  \n  0x78, 0xF0, //  ####   ####  \n  0x32, 0x60, //   ##  #  ##   \n  0x32, 0x60, //   ##  #  ##   \n  0x37, 0xE0, //   ## ######   \n  0x1D, 0xC0, //    ### ###    \n  0x1D, 0xC0, //    ### ###    \n  0x18, 0xC0, //    ##   ##    \n  0x18, 0xC0, //    ##   ##    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3520 'x' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x3C, 0xF0, //   ####  ####  \n  0x3C, 0xF0, //   ####  ####  \n  0x0C, 0xC0, //     ##  ##    \n  0x07, 0x80, //      ####     \n  0x03, 0x00, //       ##      \n  0x07, 0x80, //      ####     \n  0x0C, 0xC0, //     ##  ##    \n  0x3C, 0xF0, //   ####  ####  \n  0x3C, 0xF0, //   ####  ####  \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3560 'y' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x78, 0xF0, //  ####   ####  \n  0x78, 0xF0, //  ####   ####  \n  0x30, 0x60, //   ##     ##   \n  0x18, 0xC0, //    ##   ##    \n  0x18, 0xC0, //    ##   ##    \n  0x0D, 0x80, //     ## ##     \n  0x0F, 0x80, //     #####     \n  0x07, 0x00, //      ###      \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x0C, 0x00, //     ##        \n  0x7F, 0x00, //  #######      \n  0x7F, 0x00, //  #######      \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3600 'z' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x1F, 0xE0, //    ########   \n  0x1F, 0xE0, //    ########   \n  0x18, 0xC0, //    ##   ##    \n  0x01, 0x80, //        ##     \n  0x03, 0x00, //       ##      \n  0x06, 0x00, //      ##       \n  0x0C, 0x60, //     ##   ##   \n  0x1F, 0xE0, //    ########   \n  0x1F, 0xE0, //    ########   \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3640 '{' (14 pixels wide)\n  0x00, 0x00, //               \n  0x01, 0xC0, //        ###    \n  0x03, 0xC0, //       ####    \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x07, 0x00, //      ###      \n  0x0E, 0x00, //     ###       \n  0x07, 0x00, //      ###      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0xC0, //       ####    \n  0x01, 0xC0, //        ###    \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3680 '|' (14 pixels wide)\n  0x00, 0x00, //               \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x03, 0x00, //       ##      \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3720 '}' (14 pixels wide)\n  0x00, 0x00, //               \n  0x1C, 0x00, //    ###        \n  0x1E, 0x00, //    ####       \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x07, 0x00, //      ###      \n  0x03, 0x80, //       ###     \n  0x07, 0x00, //      ###      \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x06, 0x00, //      ##       \n  0x1E, 0x00, //    ####       \n  0x1C, 0x00, //    ###        \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n\n  // @3760 '~' (14 pixels wide)\n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x0E, 0x00, //     ###       \n  0x3F, 0x30, //   ######  ##  \n  0x33, 0xF0, //   ##  ######  \n  0x01, 0xE0, //        ####   \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n  0x00, 0x00, //               \n};\n\n\nsFONT Font20 = \n{\n  Font20_Table,\n  14,\t\t// Width\n  20,\t\t// Height\n  0x20,\t\t// First ' '\n  0x7E\t\t// Last '`'\n};\n\n/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\n"
  },
  {
    "path": "font24.c",
    "content": "/**\n  ******************************************************************************\n  * @file    font24.c\n  * @author  MCD Application Team\n  * @version V1.0.0\n  * @date    18-February-2014\n  * @brief   This file provides text font24 for STM32xx-EVAL's LCD driver. \n  ******************************************************************************\n  * @attention\n  *\n  * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>\n  *\n  * Redistribution and use in source and binary forms, with or without modification,\n  * are permitted provided that the following conditions are met:\n  *   1. Redistributions of source code must retain the above copyright notice,\n  *      this list of conditions and the following disclaimer.\n  *   2. Redistributions in binary form must reproduce the above copyright notice,\n  *      this list of conditions and the following disclaimer in the documentation\n  *      and/or other materials provided with the distribution.\n  *   3. Neither the name of STMicroelectronics nor the names of its contributors\n  *      may be used to endorse or promote products derived from this software\n  *      without specific prior written permission.\n  *\n  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n  *\n  ******************************************************************************\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"fonts.h\"\n\nconst uint8_t Font24_Table [] =\n{\n  // @0 ' ' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @72 '!' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x03, 0x80, 0x00, //       ###        \n  0x03, 0x80, 0x00, //       ###        \n  0x03, 0x80, 0x00, //       ###        \n  0x03, 0x80, 0x00, //       ###        \n  0x03, 0x80, 0x00, //       ###        \n  0x03, 0x80, 0x00, //       ###        \n  0x03, 0x80, 0x00, //       ###        \n  0x03, 0x80, 0x00, //       ###        \n  0x03, 0x80, 0x00, //       ###        \n  0x01, 0x00, 0x00, //        #         \n  0x01, 0x00, 0x00, //        #         \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x03, 0x80, 0x00, //       ###        \n  0x03, 0x80, 0x00, //       ###        \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @144 '\"' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x0E, 0x70, 0x00, //     ###  ###     \n  0x0E, 0x70, 0x00, //     ###  ###     \n  0x0E, 0x70, 0x00, //     ###  ###     \n  0x04, 0x20, 0x00, //      #    #      \n  0x04, 0x20, 0x00, //      #    #      \n  0x04, 0x20, 0x00, //      #    #      \n  0x04, 0x20, 0x00, //      #    #      \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @216 '#' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x06, 0x60, 0x00, //      ##  ##      \n  0x06, 0x60, 0x00, //      ##  ##      \n  0x06, 0x60, 0x00, //      ##  ##      \n  0x06, 0x60, 0x00, //      ##  ##      \n  0x06, 0x60, 0x00, //      ##  ##      \n  0x3F, 0xF8, 0x00, //   ###########    \n  0x3F, 0xF8, 0x00, //   ###########    \n  0x06, 0x60, 0x00, //      ##  ##      \n  0x0C, 0xC0, 0x00, //     ##  ##       \n  0x3F, 0xF8, 0x00, //   ###########    \n  0x3F, 0xF8, 0x00, //   ###########    \n  0x0C, 0xC0, 0x00, //     ##  ##       \n  0x0C, 0xC0, 0x00, //     ##  ##       \n  0x0C, 0xC0, 0x00, //     ##  ##       \n  0x0C, 0xC0, 0x00, //     ##  ##       \n  0x0C, 0xC0, 0x00, //     ##  ##       \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @288 '$' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x07, 0xB0, 0x00, //      #### ##     \n  0x0F, 0xF0, 0x00, //     ########     \n  0x18, 0x70, 0x00, //    ##    ###     \n  0x18, 0x70, 0x00, //    ##    ###     \n  0x1C, 0x00, 0x00, //    ###           \n  0x0F, 0x80, 0x00, //     #####        \n  0x07, 0xE0, 0x00, //      ######      \n  0x00, 0xF0, 0x00, //         ####     \n  0x18, 0x30, 0x00, //    ##     ##     \n  0x1C, 0x30, 0x00, //    ###    ##     \n  0x1C, 0x70, 0x00, //    ###   ###     \n  0x1F, 0xE0, 0x00, //    ########      \n  0x1B, 0xC0, 0x00, //    ## ####       \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @360 '%' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x07, 0x80, 0x00, //      ####        \n  0x0F, 0xC0, 0x00, //     ######       \n  0x1C, 0xE0, 0x00, //    ###  ###      \n  0x18, 0x60, 0x00, //    ##    ##      \n  0x18, 0x60, 0x00, //    ##    ##      \n  0x1C, 0xE0, 0x00, //    ###  ###      \n  0x0F, 0xF8, 0x00, //     #########    \n  0x07, 0xE0, 0x00, //      ######      \n  0x1F, 0xF0, 0x00, //    #########     \n  0x07, 0x38, 0x00, //      ###  ###    \n  0x06, 0x18, 0x00, //      ##    ##    \n  0x06, 0x18, 0x00, //      ##    ##    \n  0x07, 0x38, 0x00, //      ###  ###    \n  0x03, 0xF0, 0x00, //       ######     \n  0x01, 0xE0, 0x00, //        ####      \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @432 '&' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x03, 0xF0, 0x00, //       ######     \n  0x07, 0xF0, 0x00, //      #######     \n  0x0C, 0x60, 0x00, //     ##   ##      \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x00, 0x00, //     ##           \n  0x06, 0x00, 0x00, //      ##          \n  0x07, 0x00, 0x00, //      ###         \n  0x0F, 0x9C, 0x00, //     #####  ###   \n  0x1D, 0xFC, 0x00, //    ### #######   \n  0x18, 0xF0, 0x00, //    ##   ####     \n  0x18, 0x70, 0x00, //    ##    ###     \n  0x0F, 0xFC, 0x00, //     ##########   \n  0x07, 0xDC, 0x00, //      ##### ###   \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @504 ''' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x03, 0x80, 0x00, //       ###        \n  0x03, 0x80, 0x00, //       ###        \n  0x03, 0x80, 0x00, //       ###        \n  0x01, 0x00, 0x00, //        #         \n  0x01, 0x00, 0x00, //        #         \n  0x01, 0x00, 0x00, //        #         \n  0x01, 0x00, 0x00, //        #         \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @576 '(' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0x38, 0x00, //           ###    \n  0x00, 0x70, 0x00, //          ###     \n  0x00, 0xF0, 0x00, //         ####     \n  0x00, 0xE0, 0x00, //         ###      \n  0x00, 0xE0, 0x00, //         ###      \n  0x01, 0xC0, 0x00, //        ###       \n  0x01, 0xC0, 0x00, //        ###       \n  0x01, 0xC0, 0x00, //        ###       \n  0x01, 0xC0, 0x00, //        ###       \n  0x01, 0xC0, 0x00, //        ###       \n  0x01, 0xC0, 0x00, //        ###       \n  0x00, 0xE0, 0x00, //         ###      \n  0x00, 0xE0, 0x00, //         ###      \n  0x00, 0x70, 0x00, //          ###     \n  0x00, 0x70, 0x00, //          ###     \n  0x00, 0x38, 0x00, //           ###    \n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @648 ')' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x18, 0x00, 0x00, //    ##            \n  0x1C, 0x00, 0x00, //    ###           \n  0x0E, 0x00, 0x00, //     ###          \n  0x0E, 0x00, 0x00, //     ###          \n  0x07, 0x00, 0x00, //      ###         \n  0x07, 0x00, 0x00, //      ###         \n  0x03, 0x80, 0x00, //       ###        \n  0x03, 0x80, 0x00, //       ###        \n  0x03, 0x80, 0x00, //       ###        \n  0x03, 0x80, 0x00, //       ###        \n  0x03, 0x80, 0x00, //       ###        \n  0x03, 0x80, 0x00, //       ###        \n  0x07, 0x00, 0x00, //      ###         \n  0x07, 0x00, 0x00, //      ###         \n  0x0F, 0x00, 0x00, //     ####         \n  0x0E, 0x00, 0x00, //     ###          \n  0x1C, 0x00, 0x00, //    ###           \n  0x18, 0x00, 0x00, //    ##            \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @720 '*' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x1D, 0xB8, 0x00, //    ### ## ###    \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x07, 0xE0, 0x00, //      ######      \n  0x03, 0xC0, 0x00, //       ####       \n  0x03, 0xC0, 0x00, //       ####       \n  0x06, 0x60, 0x00, //      ##  ##      \n  0x06, 0x60, 0x00, //      ##  ##      \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @792 '+' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x3F, 0xFC, 0x00, //   ############   \n  0x3F, 0xFC, 0x00, //   ############   \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @864 ',' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0xE0, 0x00, //         ###      \n  0x00, 0xC0, 0x00, //         ##       \n  0x01, 0xC0, 0x00, //        ###       \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x03, 0x00, 0x00, //       ##         \n  0x03, 0x00, 0x00, //       ##         \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @936 '-' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @1008 '.' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x03, 0xC0, 0x00, //       ####       \n  0x03, 0xC0, 0x00, //       ####       \n  0x03, 0xC0, 0x00, //       ####       \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @1080 '/' (17 pixels wide)\n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0x38, 0x00, //           ###    \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x70, 0x00, //          ###     \n  0x00, 0x60, 0x00, //          ##      \n  0x00, 0x60, 0x00, //          ##      \n  0x00, 0xC0, 0x00, //         ##       \n  0x00, 0xC0, 0x00, //         ##       \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x03, 0x00, 0x00, //       ##         \n  0x03, 0x00, 0x00, //       ##         \n  0x06, 0x00, 0x00, //      ##          \n  0x06, 0x00, 0x00, //      ##          \n  0x0E, 0x00, 0x00, //     ###          \n  0x0C, 0x00, 0x00, //     ##           \n  0x1C, 0x00, 0x00, //    ###           \n  0x18, 0x00, 0x00, //    ##            \n  0x18, 0x00, 0x00, //    ##            \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @1152 '0' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x03, 0xC0, 0x00, //       ####       \n  0x07, 0xE0, 0x00, //      ######      \n  0x0C, 0x30, 0x00, //     ##    ##     \n  0x0C, 0x30, 0x00, //     ##    ##     \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x0C, 0x30, 0x00, //     ##    ##     \n  0x0C, 0x30, 0x00, //     ##    ##     \n  0x07, 0xE0, 0x00, //      ######      \n  0x03, 0xC0, 0x00, //       ####       \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @1224 '1' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x80, 0x00, //         #        \n  0x07, 0x80, 0x00, //      ####        \n  0x1F, 0x80, 0x00, //    ######        \n  0x1D, 0x80, 0x00, //    ### ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @1296 '2' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x07, 0xC0, 0x00, //      #####       \n  0x1F, 0xF0, 0x00, //    #########     \n  0x38, 0x30, 0x00, //   ###     ##     \n  0x30, 0x18, 0x00, //   ##       ##    \n  0x30, 0x18, 0x00, //   ##       ##    \n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x60, 0x00, //          ##      \n  0x01, 0xC0, 0x00, //        ###       \n  0x03, 0x80, 0x00, //       ###        \n  0x06, 0x00, 0x00, //      ##          \n  0x0C, 0x00, 0x00, //     ##           \n  0x18, 0x00, 0x00, //    ##            \n  0x3F, 0xF8, 0x00, //   ###########    \n  0x3F, 0xF8, 0x00, //   ###########    \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @1368 '3' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x03, 0xC0, 0x00, //       ####       \n  0x0F, 0xE0, 0x00, //     #######      \n  0x0C, 0x70, 0x00, //     ##   ###     \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x60, 0x00, //          ##      \n  0x03, 0xC0, 0x00, //       ####       \n  0x03, 0xE0, 0x00, //       #####      \n  0x00, 0x70, 0x00, //          ###     \n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0x18, 0x00, //            ##    \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x1F, 0xF0, 0x00, //    #########     \n  0x0F, 0xC0, 0x00, //     ######       \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @1440 '4' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0xE0, 0x00, //         ###      \n  0x01, 0xE0, 0x00, //        ####      \n  0x01, 0xE0, 0x00, //        ####      \n  0x03, 0x60, 0x00, //       ## ##      \n  0x06, 0x60, 0x00, //      ##  ##      \n  0x06, 0x60, 0x00, //      ##  ##      \n  0x0C, 0x60, 0x00, //     ##   ##      \n  0x0C, 0x60, 0x00, //     ##   ##      \n  0x18, 0x60, 0x00, //    ##    ##      \n  0x30, 0x60, 0x00, //   ##     ##      \n  0x3F, 0xF8, 0x00, //   ###########    \n  0x3F, 0xF8, 0x00, //   ###########    \n  0x00, 0x60, 0x00, //          ##      \n  0x03, 0xF8, 0x00, //       #######    \n  0x03, 0xF8, 0x00, //       #######    \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @1512 '5' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x1F, 0xF0, 0x00, //    #########     \n  0x1F, 0xF0, 0x00, //    #########     \n  0x18, 0x00, 0x00, //    ##            \n  0x18, 0x00, 0x00, //    ##            \n  0x18, 0x00, 0x00, //    ##            \n  0x1B, 0xC0, 0x00, //    ## ####       \n  0x1F, 0xF0, 0x00, //    #########     \n  0x1C, 0x30, 0x00, //    ###    ##     \n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0x18, 0x00, //            ##    \n  0x30, 0x30, 0x00, //   ##      ##     \n  0x3F, 0xF0, 0x00, //   ##########     \n  0x0F, 0xC0, 0x00, //     ######       \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @1584 '6' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0xF8, 0x00, //         #####    \n  0x03, 0xF8, 0x00, //       #######    \n  0x07, 0x00, 0x00, //      ###         \n  0x0E, 0x00, 0x00, //     ###          \n  0x0C, 0x00, 0x00, //     ##           \n  0x18, 0x00, 0x00, //    ##            \n  0x1B, 0xC0, 0x00, //    ## ####       \n  0x1F, 0xF0, 0x00, //    #########     \n  0x1C, 0x30, 0x00, //    ###    ##     \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x0C, 0x38, 0x00, //     ##    ###    \n  0x0F, 0xF0, 0x00, //     ########     \n  0x03, 0xE0, 0x00, //       #####      \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @1656 '7' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x70, 0x00, //          ###     \n  0x00, 0x60, 0x00, //          ##      \n  0x00, 0x60, 0x00, //          ##      \n  0x00, 0xE0, 0x00, //         ###      \n  0x00, 0xC0, 0x00, //         ##       \n  0x00, 0xC0, 0x00, //         ##       \n  0x01, 0xC0, 0x00, //        ###       \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @1728 '8' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x07, 0xE0, 0x00, //      ######      \n  0x0F, 0xF0, 0x00, //     ########     \n  0x1C, 0x38, 0x00, //    ###    ###    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x0C, 0x30, 0x00, //     ##    ##     \n  0x07, 0xE0, 0x00, //      ######      \n  0x07, 0xE0, 0x00, //      ######      \n  0x0C, 0x30, 0x00, //     ##    ##     \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x1C, 0x38, 0x00, //    ###    ###    \n  0x0F, 0xF0, 0x00, //     ########     \n  0x07, 0xE0, 0x00, //      ######      \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @1800 '9' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x07, 0xC0, 0x00, //      #####       \n  0x0F, 0xF0, 0x00, //     ########     \n  0x1C, 0x30, 0x00, //    ###    ##     \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x0C, 0x38, 0x00, //     ##    ###    \n  0x0F, 0xF8, 0x00, //     #########    \n  0x03, 0xD8, 0x00, //       #### ##    \n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x70, 0x00, //          ###     \n  0x00, 0xE0, 0x00, //         ###      \n  0x1F, 0xC0, 0x00, //    #######       \n  0x1F, 0x00, 0x00, //    #####         \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @1872 ':' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x03, 0xC0, 0x00, //       ####       \n  0x03, 0xC0, 0x00, //       ####       \n  0x03, 0xC0, 0x00, //       ####       \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x03, 0xC0, 0x00, //       ####       \n  0x03, 0xC0, 0x00, //       ####       \n  0x03, 0xC0, 0x00, //       ####       \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @1944 ';' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0xF0, 0x00, //         ####     \n  0x00, 0xF0, 0x00, //         ####     \n  0x00, 0xF0, 0x00, //         ####     \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0xE0, 0x00, //         ###      \n  0x01, 0xC0, 0x00, //        ###       \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x03, 0x00, 0x00, //       ##         \n  0x02, 0x00, 0x00, //       #          \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @2016 '<' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x1C, 0x00, //            ###   \n  0x00, 0x3C, 0x00, //           ####   \n  0x00, 0xF0, 0x00, //         ####     \n  0x03, 0xC0, 0x00, //       ####       \n  0x0F, 0x00, 0x00, //     ####         \n  0x3C, 0x00, 0x00, //   ####           \n  0xF0, 0x00, 0x00, // ####             \n  0x3C, 0x00, 0x00, //   ####           \n  0x0F, 0x00, 0x00, //     ####         \n  0x03, 0xC0, 0x00, //       ####       \n  0x00, 0xF0, 0x00, //         ####     \n  0x00, 0x3C, 0x00, //           ####   \n  0x00, 0x1C, 0x00, //            ###   \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @2088 '=' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x7F, 0xFC, 0x00, //  #############   \n  0x7F, 0xFC, 0x00, //  #############   \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x7F, 0xFC, 0x00, //  #############   \n  0x7F, 0xFC, 0x00, //  #############   \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @2160 '>' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x70, 0x00, 0x00, //  ###             \n  0x78, 0x00, 0x00, //  ####            \n  0x1E, 0x00, 0x00, //    ####          \n  0x07, 0x80, 0x00, //      ####        \n  0x01, 0xE0, 0x00, //        ####      \n  0x00, 0x78, 0x00, //          ####    \n  0x00, 0x1E, 0x00, //            ####  \n  0x00, 0x78, 0x00, //          ####    \n  0x01, 0xE0, 0x00, //        ####      \n  0x07, 0x80, 0x00, //      ####        \n  0x1E, 0x00, 0x00, //    ####          \n  0x78, 0x00, 0x00, //  ####            \n  0x70, 0x00, 0x00, //  ###             \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @2232 '?' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x07, 0xC0, 0x00, //      #####       \n  0x0F, 0xE0, 0x00, //     #######      \n  0x18, 0x70, 0x00, //    ##    ###     \n  0x18, 0x30, 0x00, //    ##     ##     \n  0x18, 0x30, 0x00, //    ##     ##     \n  0x00, 0x70, 0x00, //          ###     \n  0x00, 0xE0, 0x00, //         ###      \n  0x03, 0xC0, 0x00, //       ####       \n  0x03, 0x80, 0x00, //       ###        \n  0x03, 0x00, 0x00, //       ##         \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x07, 0x00, 0x00, //      ###         \n  0x07, 0x00, 0x00, //      ###         \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @2304 '@' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x03, 0xE0, 0x00, //       #####      \n  0x07, 0xF0, 0x00, //      #######     \n  0x0E, 0x38, 0x00, //     ###   ###    \n  0x0C, 0x18, 0x00, //     ##     ##    \n  0x18, 0x78, 0x00, //    ##    ####    \n  0x18, 0xF8, 0x00, //    ##   #####    \n  0x19, 0xD8, 0x00, //    ##  ### ##    \n  0x19, 0x98, 0x00, //    ##  ##  ##    \n  0x19, 0x98, 0x00, //    ##  ##  ##    \n  0x19, 0x98, 0x00, //    ##  ##  ##    \n  0x18, 0xF8, 0x00, //    ##   #####    \n  0x18, 0x78, 0x00, //    ##    ####    \n  0x18, 0x00, 0x00, //    ##            \n  0x0C, 0x00, 0x00, //     ##           \n  0x0E, 0x18, 0x00, //     ###    ##    \n  0x07, 0xF8, 0x00, //      ########    \n  0x03, 0xE0, 0x00, //       #####      \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @2376 'A' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x1F, 0x80, 0x00, //    ######        \n  0x1F, 0xC0, 0x00, //    #######       \n  0x01, 0xC0, 0x00, //        ###       \n  0x03, 0x60, 0x00, //       ## ##      \n  0x03, 0x60, 0x00, //       ## ##      \n  0x06, 0x30, 0x00, //      ##   ##     \n  0x06, 0x30, 0x00, //      ##   ##     \n  0x0C, 0x30, 0x00, //     ##    ##     \n  0x0F, 0xF8, 0x00, //     #########    \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0xFC, 0x7F, 0x00, // ######   ####### \n  0xFC, 0x7F, 0x00, // ######   ####### \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @2448 'B' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x7F, 0xE0, 0x00, //  ##########      \n  0x7F, 0xF0, 0x00, //  ###########     \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x1F, 0xF0, 0x00, //    #########     \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x18, 0x1C, 0x00, //    ##      ###   \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x7F, 0xF8, 0x00, //  ############    \n  0x7F, 0xF0, 0x00, //  ###########     \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @2520 'C' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x03, 0xEC, 0x00, //       ##### ##   \n  0x0F, 0xFC, 0x00, //     ##########   \n  0x1C, 0x1C, 0x00, //    ###     ###   \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0x30, 0x00, 0x00, //   ##             \n  0x30, 0x00, 0x00, //   ##             \n  0x30, 0x00, 0x00, //   ##             \n  0x30, 0x00, 0x00, //   ##             \n  0x30, 0x00, 0x00, //   ##             \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x1C, 0x1C, 0x00, //    ###     ###   \n  0x0F, 0xF8, 0x00, //     #########    \n  0x03, 0xF0, 0x00, //       ######     \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @2592 'D' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x7F, 0xC0, 0x00, //  #########       \n  0x7F, 0xF0, 0x00, //  ###########     \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x7F, 0xF0, 0x00, //  ###########     \n  0x7F, 0xE0, 0x00, //  ##########      \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @2664 'E' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x7F, 0xF8, 0x00, //  ############    \n  0x7F, 0xF8, 0x00, //  ############    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x19, 0x98, 0x00, //    ##  ##  ##    \n  0x19, 0x80, 0x00, //    ##  ##        \n  0x1F, 0x80, 0x00, //    ######        \n  0x1F, 0x80, 0x00, //    ######        \n  0x19, 0x80, 0x00, //    ##  ##        \n  0x19, 0x98, 0x00, //    ##  ##  ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x7F, 0xF8, 0x00, //  ############    \n  0x7F, 0xF8, 0x00, //  ############    \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @2736 'F' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x3F, 0xFC, 0x00, //   ############   \n  0x3F, 0xFC, 0x00, //   ############   \n  0x0C, 0x0C, 0x00, //     ##      ##   \n  0x0C, 0x0C, 0x00, //     ##      ##   \n  0x0C, 0xCC, 0x00, //     ##  ##  ##   \n  0x0C, 0xC0, 0x00, //     ##  ##       \n  0x0F, 0xC0, 0x00, //     ######       \n  0x0F, 0xC0, 0x00, //     ######       \n  0x0C, 0xC0, 0x00, //     ##  ##       \n  0x0C, 0xC0, 0x00, //     ##  ##       \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x00, 0x00, //     ##           \n  0x3F, 0xC0, 0x00, //   ########       \n  0x3F, 0xC0, 0x00, //   ########       \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @2808 'G' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x03, 0xEC, 0x00, //       ##### ##   \n  0x0F, 0xFC, 0x00, //     ##########   \n  0x1C, 0x1C, 0x00, //    ###     ###   \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0x30, 0x00, 0x00, //   ##             \n  0x30, 0x00, 0x00, //   ##             \n  0x30, 0xFE, 0x00, //   ##    #######  \n  0x30, 0xFE, 0x00, //   ##    #######  \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0x38, 0x0C, 0x00, //   ###       ##   \n  0x1C, 0x1C, 0x00, //    ###     ###   \n  0x0F, 0xFC, 0x00, //     ##########   \n  0x03, 0xF0, 0x00, //       ######     \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @2880 'H' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x7E, 0x7E, 0x00, //  ######  ######  \n  0x7E, 0x7E, 0x00, //  ######  ######  \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x7E, 0x7E, 0x00, //  ######  ######  \n  0x7E, 0x7E, 0x00, //  ######  ######  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @2952 'I' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @3024 'J' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x07, 0xFE, 0x00, //      ##########  \n  0x07, 0xFE, 0x00, //      ##########  \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x30, 0x00, //           ##     \n  0x30, 0x30, 0x00, //   ##      ##     \n  0x30, 0x30, 0x00, //   ##      ##     \n  0x30, 0x30, 0x00, //   ##      ##     \n  0x30, 0x30, 0x00, //   ##      ##     \n  0x30, 0x60, 0x00, //   ##     ##      \n  0x3F, 0xE0, 0x00, //   #########      \n  0x0F, 0x80, 0x00, //     #####        \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @3096 'K' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x7F, 0x3E, 0x00, //  #######  #####  \n  0x7F, 0x3E, 0x00, //  #######  #####  \n  0x18, 0x30, 0x00, //    ##     ##     \n  0x18, 0x60, 0x00, //    ##    ##      \n  0x18, 0xC0, 0x00, //    ##   ##       \n  0x19, 0x80, 0x00, //    ##  ##        \n  0x1B, 0x80, 0x00, //    ## ###        \n  0x1F, 0xC0, 0x00, //    #######       \n  0x1C, 0xE0, 0x00, //    ###  ###      \n  0x18, 0x70, 0x00, //    ##    ###     \n  0x18, 0x30, 0x00, //    ##     ##     \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x7F, 0x1F, 0x00, //  #######   ##### \n  0x7F, 0x1F, 0x00, //  #######   ##### \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @3168 'L' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x7F, 0x80, 0x00, //  ########        \n  0x7F, 0x80, 0x00, //  ########        \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x0C, 0x00, //     ##      ##   \n  0x0C, 0x0C, 0x00, //     ##      ##   \n  0x0C, 0x0C, 0x00, //     ##      ##   \n  0x0C, 0x0C, 0x00, //     ##      ##   \n  0x7F, 0xFC, 0x00, //  #############   \n  0x7F, 0xFC, 0x00, //  #############   \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @3240 'M' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0xF0, 0x0F, 0x00, // ####        #### \n  0xF8, 0x1F, 0x00, // #####      ##### \n  0x38, 0x1C, 0x00, //   ###      ###   \n  0x3C, 0x3C, 0x00, //   ####    ####   \n  0x3C, 0x3C, 0x00, //   ####    ####   \n  0x36, 0x6C, 0x00, //   ## ##  ## ##   \n  0x36, 0x6C, 0x00, //   ## ##  ## ##   \n  0x33, 0xCC, 0x00, //   ##  ####  ##   \n  0x33, 0xCC, 0x00, //   ##  ####  ##   \n  0x31, 0x8C, 0x00, //   ##   ##   ##   \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0xFE, 0x7F, 0x00, // #######  ####### \n  0xFE, 0x7F, 0x00, // #######  ####### \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @3312 'N' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x78, 0xFE, 0x00, //  ####   #######  \n  0x78, 0xFE, 0x00, //  ####   #######  \n  0x1C, 0x18, 0x00, //    ###     ##    \n  0x1E, 0x18, 0x00, //    ####    ##    \n  0x1F, 0x18, 0x00, //    #####   ##    \n  0x1B, 0x18, 0x00, //    ## ##   ##    \n  0x1B, 0x98, 0x00, //    ## ###  ##    \n  0x19, 0xD8, 0x00, //    ##  ### ##    \n  0x18, 0xD8, 0x00, //    ##   ## ##    \n  0x18, 0xF8, 0x00, //    ##   #####    \n  0x18, 0x78, 0x00, //    ##    ####    \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x7F, 0x18, 0x00, //  #######   ##    \n  0x7F, 0x18, 0x00, //  #######   ##    \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @3384 'O' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x03, 0xC0, 0x00, //       ####       \n  0x0F, 0xF0, 0x00, //     ########     \n  0x1C, 0x38, 0x00, //    ###    ###    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x38, 0x1C, 0x00, //   ###      ###   \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0x38, 0x1C, 0x00, //   ###      ###   \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x1C, 0x38, 0x00, //    ###    ###    \n  0x0F, 0xF0, 0x00, //     ########     \n  0x03, 0xC0, 0x00, //       ####       \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @3456 'P' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x3F, 0xF0, 0x00, //   ##########     \n  0x3F, 0xF8, 0x00, //   ###########    \n  0x0C, 0x1C, 0x00, //     ##     ###   \n  0x0C, 0x0C, 0x00, //     ##      ##   \n  0x0C, 0x0C, 0x00, //     ##      ##   \n  0x0C, 0x0C, 0x00, //     ##      ##   \n  0x0C, 0x18, 0x00, //     ##     ##    \n  0x0F, 0xF8, 0x00, //     #########    \n  0x0F, 0xE0, 0x00, //     #######      \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x00, 0x00, //     ##           \n  0x3F, 0xC0, 0x00, //   ########       \n  0x3F, 0xC0, 0x00, //   ########       \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @3528 'Q' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x03, 0xC0, 0x00, //       ####       \n  0x0F, 0xF0, 0x00, //     ########     \n  0x1C, 0x38, 0x00, //    ###    ###    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x38, 0x1C, 0x00, //   ###      ###   \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0x38, 0x1C, 0x00, //   ###      ###   \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x1C, 0x38, 0x00, //    ###    ###    \n  0x0F, 0xF0, 0x00, //     ########     \n  0x07, 0xC0, 0x00, //      #####       \n  0x07, 0xCC, 0x00, //      #####  ##   \n  0x0F, 0xFC, 0x00, //     ##########   \n  0x0C, 0x38, 0x00, //     ##    ###    \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @3600 'R' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x7F, 0xE0, 0x00, //  ##########      \n  0x7F, 0xF0, 0x00, //  ###########     \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x1F, 0xF0, 0x00, //    #########     \n  0x1F, 0xC0, 0x00, //    #######       \n  0x18, 0xE0, 0x00, //    ##   ###      \n  0x18, 0x70, 0x00, //    ##    ###     \n  0x18, 0x30, 0x00, //    ##     ##     \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x7F, 0x1E, 0x00, //  #######   ####  \n  0x7F, 0x0E, 0x00, //  #######    ###  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @3672 'S' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x07, 0xD8, 0x00, //      ##### ##    \n  0x0F, 0xF8, 0x00, //     #########    \n  0x1C, 0x38, 0x00, //    ###    ###    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x1E, 0x00, 0x00, //    ####          \n  0x0F, 0xC0, 0x00, //     ######       \n  0x03, 0xF0, 0x00, //       ######     \n  0x00, 0x78, 0x00, //          ####    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x1C, 0x38, 0x00, //    ###    ###    \n  0x1F, 0xF0, 0x00, //    #########     \n  0x1B, 0xE0, 0x00, //    ## #####      \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @3744 'T' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x3F, 0xFC, 0x00, //   ############   \n  0x3F, 0xFC, 0x00, //   ############   \n  0x31, 0x8C, 0x00, //   ##   ##   ##   \n  0x31, 0x8C, 0x00, //   ##   ##   ##   \n  0x31, 0x8C, 0x00, //   ##   ##   ##   \n  0x31, 0x8C, 0x00, //   ##   ##   ##   \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x0F, 0xF0, 0x00, //     ########     \n  0x0F, 0xF0, 0x00, //     ########     \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @3816 'U' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x7E, 0x7E, 0x00, //  ######  ######  \n  0x7E, 0x7E, 0x00, //  ######  ######  \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x0C, 0x30, 0x00, //     ##    ##     \n  0x0F, 0xF0, 0x00, //     ########     \n  0x03, 0xC0, 0x00, //       ####       \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @3888 'V' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x7F, 0x7F, 0x00, //  ####### ####### \n  0x7F, 0x7F, 0x00, //  ####### ####### \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x0C, 0x18, 0x00, //     ##     ##    \n  0x0C, 0x18, 0x00, //     ##     ##    \n  0x0C, 0x18, 0x00, //     ##     ##    \n  0x06, 0x30, 0x00, //      ##   ##     \n  0x06, 0x30, 0x00, //      ##   ##     \n  0x03, 0x60, 0x00, //       ## ##      \n  0x03, 0x60, 0x00, //       ## ##      \n  0x03, 0x60, 0x00, //       ## ##      \n  0x01, 0xC0, 0x00, //        ###       \n  0x01, 0xC0, 0x00, //        ###       \n  0x00, 0x80, 0x00, //         #        \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @3960 'W' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0xFE, 0x3F, 0x80, // #######   #######\n  0xFE, 0x3F, 0x80, // #######   #######\n  0x30, 0x06, 0x00, //   ##         ##  \n  0x30, 0x06, 0x00, //   ##         ##  \n  0x30, 0x86, 0x00, //   ##    #    ##  \n  0x19, 0xCC, 0x00, //    ##  ###  ##   \n  0x19, 0xCC, 0x00, //    ##  ###  ##   \n  0x1B, 0x6C, 0x00, //    ## ## ## ##   \n  0x1B, 0x6C, 0x00, //    ## ## ## ##   \n  0x1E, 0x7C, 0x00, //    ####  #####   \n  0x0E, 0x38, 0x00, //     ###   ###    \n  0x0E, 0x38, 0x00, //     ###   ###    \n  0x0C, 0x18, 0x00, //     ##     ##    \n  0x0C, 0x18, 0x00, //     ##     ##    \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @4032 'X' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x7E, 0x7E, 0x00, //  ######  ######  \n  0x7E, 0x7E, 0x00, //  ######  ######  \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x0C, 0x30, 0x00, //     ##    ##     \n  0x06, 0x60, 0x00, //      ##  ##      \n  0x03, 0xC0, 0x00, //       ####       \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x03, 0xC0, 0x00, //       ####       \n  0x06, 0x60, 0x00, //      ##  ##      \n  0x0C, 0x30, 0x00, //     ##    ##     \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x7E, 0x7E, 0x00, //  ######  ######  \n  0x7E, 0x7E, 0x00, //  ######  ######  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @4104 'Y' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x7C, 0x7E, 0x00, //  #####   ######  \n  0x7C, 0x7E, 0x00, //  #####   ######  \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x0C, 0x30, 0x00, //     ##    ##     \n  0x06, 0x60, 0x00, //      ##  ##      \n  0x06, 0x60, 0x00, //      ##  ##      \n  0x03, 0xC0, 0x00, //       ####       \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x0F, 0xF0, 0x00, //     ########     \n  0x0F, 0xF0, 0x00, //     ########     \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @4176 'Z' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x30, 0x00, //    ##     ##     \n  0x18, 0x60, 0x00, //    ##    ##      \n  0x18, 0xC0, 0x00, //    ##   ##       \n  0x01, 0x80, 0x00, //        ##        \n  0x03, 0x00, 0x00, //       ##         \n  0x06, 0x18, 0x00, //      ##    ##    \n  0x0C, 0x18, 0x00, //     ##     ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x30, 0x18, 0x00, //   ##       ##    \n  0x3F, 0xF8, 0x00, //   ###########    \n  0x3F, 0xF8, 0x00, //   ###########    \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @4248 '[' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x01, 0xF0, 0x00, //        #####     \n  0x01, 0xF0, 0x00, //        #####     \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0xF0, 0x00, //        #####     \n  0x01, 0xF0, 0x00, //        #####     \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @4320 '\\' (17 pixels wide)\n  0x18, 0x00, 0x00, //    ##            \n  0x18, 0x00, 0x00, //    ##            \n  0x1C, 0x00, 0x00, //    ###           \n  0x0C, 0x00, 0x00, //     ##           \n  0x0E, 0x00, 0x00, //     ###          \n  0x06, 0x00, 0x00, //      ##          \n  0x06, 0x00, 0x00, //      ##          \n  0x03, 0x00, 0x00, //       ##         \n  0x03, 0x00, 0x00, //       ##         \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x00, 0xC0, 0x00, //         ##       \n  0x00, 0xC0, 0x00, //         ##       \n  0x00, 0x60, 0x00, //          ##      \n  0x00, 0x60, 0x00, //          ##      \n  0x00, 0x70, 0x00, //          ###     \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x38, 0x00, //           ###    \n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @4392 ']' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x0F, 0x80, 0x00, //     #####        \n  0x0F, 0x80, 0x00, //     #####        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x0F, 0x80, 0x00, //     #####        \n  0x0F, 0x80, 0x00, //     #####        \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @4464 '^' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x80, 0x00, //         #        \n  0x01, 0xC0, 0x00, //        ###       \n  0x03, 0xE0, 0x00, //       #####      \n  0x07, 0x70, 0x00, //      ### ###     \n  0x06, 0x30, 0x00, //      ##   ##     \n  0x0C, 0x18, 0x00, //     ##     ##    \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x10, 0x04, 0x00, //    #         #   \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @4536 '_' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0xFF, 0xFF, 0x00, // ################ \n  0xFF, 0xFF, 0x00, // ################ \n\n  // @4608 '`' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x03, 0x00, 0x00, //       ##         \n  0x03, 0x80, 0x00, //       ###        \n  0x00, 0xE0, 0x00, //         ###      \n  0x00, 0x60, 0x00, //          ##      \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @4680 'a' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x0F, 0xC0, 0x00, //     ######       \n  0x1F, 0xE0, 0x00, //    ########      \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x30, 0x00, //           ##     \n  0x07, 0xF0, 0x00, //      #######     \n  0x1F, 0xF0, 0x00, //    #########     \n  0x38, 0x30, 0x00, //   ###     ##     \n  0x30, 0x30, 0x00, //   ##      ##     \n  0x30, 0x70, 0x00, //   ##     ###     \n  0x1F, 0xFC, 0x00, //    ###########   \n  0x0F, 0xBC, 0x00, //     ##### ####   \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @4752 'b' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x78, 0x00, 0x00, //  ####            \n  0x78, 0x00, 0x00, //  ####            \n  0x18, 0x00, 0x00, //    ##            \n  0x18, 0x00, 0x00, //    ##            \n  0x1B, 0xE0, 0x00, //    ## #####      \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x1C, 0x18, 0x00, //    ###     ##    \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x1C, 0x18, 0x00, //    ###     ##    \n  0x7F, 0xF8, 0x00, //  ############    \n  0x7B, 0xE0, 0x00, //  #### #####      \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @4824 'c' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x03, 0xEC, 0x00, //       ##### ##   \n  0x0F, 0xFC, 0x00, //     ##########   \n  0x1C, 0x1C, 0x00, //    ###     ###   \n  0x38, 0x0C, 0x00, //   ###       ##   \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0x30, 0x00, 0x00, //   ##             \n  0x30, 0x00, 0x00, //   ##             \n  0x38, 0x0C, 0x00, //   ###       ##   \n  0x1C, 0x1C, 0x00, //    ###     ###   \n  0x0F, 0xF8, 0x00, //     #########    \n  0x03, 0xF0, 0x00, //       ######     \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @4896 'd' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x78, 0x00, //          ####    \n  0x00, 0x78, 0x00, //          ####    \n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0x18, 0x00, //            ##    \n  0x07, 0xD8, 0x00, //      ##### ##    \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x30, 0x18, 0x00, //   ##       ##    \n  0x30, 0x18, 0x00, //   ##       ##    \n  0x30, 0x18, 0x00, //   ##       ##    \n  0x30, 0x18, 0x00, //   ##       ##    \n  0x30, 0x18, 0x00, //   ##       ##    \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x1F, 0xFE, 0x00, //    ############  \n  0x07, 0xDE, 0x00, //      ##### ####  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @4968 'e' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x07, 0xE0, 0x00, //      ######      \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0x3F, 0xFC, 0x00, //   ############   \n  0x3F, 0xFC, 0x00, //   ############   \n  0x30, 0x00, 0x00, //   ##             \n  0x30, 0x00, 0x00, //   ##             \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x1F, 0xFC, 0x00, //    ###########   \n  0x07, 0xF0, 0x00, //      #######     \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @5040 'f' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x01, 0xFC, 0x00, //        #######   \n  0x03, 0xFC, 0x00, //       ########   \n  0x06, 0x00, 0x00, //      ##          \n  0x06, 0x00, 0x00, //      ##          \n  0x3F, 0xF8, 0x00, //   ###########    \n  0x3F, 0xF8, 0x00, //   ###########    \n  0x06, 0x00, 0x00, //      ##          \n  0x06, 0x00, 0x00, //      ##          \n  0x06, 0x00, 0x00, //      ##          \n  0x06, 0x00, 0x00, //      ##          \n  0x06, 0x00, 0x00, //      ##          \n  0x06, 0x00, 0x00, //      ##          \n  0x06, 0x00, 0x00, //      ##          \n  0x3F, 0xF0, 0x00, //   ##########     \n  0x3F, 0xF0, 0x00, //   ##########     \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @5112 'g' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x07, 0xDE, 0x00, //      ##### ####  \n  0x1F, 0xFE, 0x00, //    ############  \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x30, 0x18, 0x00, //   ##       ##    \n  0x30, 0x18, 0x00, //   ##       ##    \n  0x30, 0x18, 0x00, //   ##       ##    \n  0x30, 0x18, 0x00, //   ##       ##    \n  0x30, 0x18, 0x00, //   ##       ##    \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x07, 0xD8, 0x00, //      ##### ##    \n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0x38, 0x00, //           ###    \n  0x0F, 0xF0, 0x00, //     ########     \n  0x0F, 0xC0, 0x00, //     ######       \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @5184 'h' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x78, 0x00, 0x00, //  ####            \n  0x78, 0x00, 0x00, //  ####            \n  0x18, 0x00, 0x00, //    ##            \n  0x18, 0x00, 0x00, //    ##            \n  0x1B, 0xE0, 0x00, //    ## #####      \n  0x1F, 0xF0, 0x00, //    #########     \n  0x1C, 0x38, 0x00, //    ###    ###    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x7E, 0x7E, 0x00, //  ######  ######  \n  0x7E, 0x7E, 0x00, //  ######  ######  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @5256 'i' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x1F, 0x80, 0x00, //    ######        \n  0x1F, 0x80, 0x00, //    ######        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x3F, 0xFC, 0x00, //   ############   \n  0x3F, 0xFC, 0x00, //   ############   \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @5328 'j' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0xC0, 0x00, //         ##       \n  0x00, 0xC0, 0x00, //         ##       \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x1F, 0xF0, 0x00, //    #########     \n  0x1F, 0xF0, 0x00, //    #########     \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x30, 0x00, //           ##     \n  0x00, 0x70, 0x00, //          ###     \n  0x1F, 0xE0, 0x00, //    ########      \n  0x1F, 0x80, 0x00, //    ######        \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @5400 'k' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x3C, 0x00, 0x00, //   ####           \n  0x3C, 0x00, 0x00, //   ####           \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0xF8, 0x00, //     ##  #####    \n  0x0C, 0xF8, 0x00, //     ##  #####    \n  0x0C, 0xC0, 0x00, //     ##  ##       \n  0x0D, 0x80, 0x00, //     ## ##        \n  0x0F, 0x80, 0x00, //     #####        \n  0x0F, 0x00, 0x00, //     ####         \n  0x0F, 0x80, 0x00, //     #####        \n  0x0D, 0xC0, 0x00, //     ## ###       \n  0x0C, 0xE0, 0x00, //     ##  ###      \n  0x3C, 0x7C, 0x00, //   ####   #####   \n  0x3C, 0x7C, 0x00, //   ####   #####   \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @5472 'l' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x1F, 0x80, 0x00, //    ######        \n  0x1F, 0x80, 0x00, //    ######        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x3F, 0xFC, 0x00, //   ############   \n  0x3F, 0xFC, 0x00, //   ############   \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @5544 'm' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0xF7, 0x78, 0x00, // #### ### ####    \n  0xFF, 0xFC, 0x00, // ##############   \n  0x39, 0xCC, 0x00, //   ###  ###  ##   \n  0x31, 0x8C, 0x00, //   ##   ##   ##   \n  0x31, 0x8C, 0x00, //   ##   ##   ##   \n  0x31, 0x8C, 0x00, //   ##   ##   ##   \n  0x31, 0x8C, 0x00, //   ##   ##   ##   \n  0x31, 0x8C, 0x00, //   ##   ##   ##   \n  0x31, 0x8C, 0x00, //   ##   ##   ##   \n  0xFD, 0xEF, 0x00, // ###### #### #### \n  0xFD, 0xEF, 0x00, // ###### #### #### \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @5616 'n' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x7B, 0xE0, 0x00, //  #### #####      \n  0x7F, 0xF0, 0x00, //  ###########     \n  0x1C, 0x38, 0x00, //    ###    ###    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x7E, 0x7E, 0x00, //  ######  ######  \n  0x7E, 0x7E, 0x00, //  ######  ######  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @5688 'o' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x03, 0xC0, 0x00, //       ####       \n  0x0F, 0xF0, 0x00, //     ########     \n  0x1C, 0x38, 0x00, //    ###    ###    \n  0x38, 0x1C, 0x00, //   ###      ###   \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0x30, 0x0C, 0x00, //   ##        ##   \n  0x38, 0x1C, 0x00, //   ###      ###   \n  0x1C, 0x38, 0x00, //    ###    ###    \n  0x0F, 0xF0, 0x00, //     ########     \n  0x03, 0xC0, 0x00, //       ####       \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @5760 'p' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x7B, 0xE0, 0x00, //  #### #####      \n  0x7F, 0xF8, 0x00, //  ############    \n  0x1C, 0x18, 0x00, //    ###     ##    \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x1C, 0x18, 0x00, //    ###     ##    \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x1B, 0xE0, 0x00, //    ## #####      \n  0x18, 0x00, 0x00, //    ##            \n  0x18, 0x00, 0x00, //    ##            \n  0x18, 0x00, 0x00, //    ##            \n  0x7F, 0x00, 0x00, //  #######         \n  0x7F, 0x00, 0x00, //  #######         \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @5832 'q' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x07, 0xDE, 0x00, //      ##### ####  \n  0x1F, 0xFE, 0x00, //    ############  \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x30, 0x18, 0x00, //   ##       ##    \n  0x30, 0x18, 0x00, //   ##       ##    \n  0x30, 0x18, 0x00, //   ##       ##    \n  0x30, 0x18, 0x00, //   ##       ##    \n  0x30, 0x18, 0x00, //   ##       ##    \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x07, 0xD8, 0x00, //      ##### ##    \n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0x18, 0x00, //            ##    \n  0x00, 0xFE, 0x00, //         #######  \n  0x00, 0xFE, 0x00, //         #######  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @5904 'r' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x3E, 0x78, 0x00, //   #####  ####    \n  0x3E, 0xFC, 0x00, //   ##### ######   \n  0x07, 0xCC, 0x00, //      #####  ##   \n  0x07, 0x00, 0x00, //      ###         \n  0x06, 0x00, 0x00, //      ##          \n  0x06, 0x00, 0x00, //      ##          \n  0x06, 0x00, 0x00, //      ##          \n  0x06, 0x00, 0x00, //      ##          \n  0x06, 0x00, 0x00, //      ##          \n  0x3F, 0xF0, 0x00, //   ##########     \n  0x3F, 0xF0, 0x00, //   ##########     \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @5976 's' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x07, 0xF8, 0x00, //      ########    \n  0x0F, 0xF8, 0x00, //     #########    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x1F, 0x80, 0x00, //    ######        \n  0x0F, 0xF0, 0x00, //     ########     \n  0x00, 0xF8, 0x00, //         #####    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x1F, 0xF0, 0x00, //    #########     \n  0x1F, 0xE0, 0x00, //    ########      \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @6048 't' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x00, 0x00, //     ##           \n  0x3F, 0xF0, 0x00, //   ##########     \n  0x3F, 0xF0, 0x00, //   ##########     \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x00, 0x00, //     ##           \n  0x0C, 0x1C, 0x00, //     ##     ###   \n  0x07, 0xFC, 0x00, //      #########   \n  0x03, 0xF0, 0x00, //       ######     \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @6120 'u' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x78, 0x78, 0x00, //  ####    ####    \n  0x78, 0x78, 0x00, //  ####    ####    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x38, 0x00, //    ##     ###    \n  0x0F, 0xFE, 0x00, //     ###########  \n  0x07, 0xDE, 0x00, //      ##### ####  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @6192 'v' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x7C, 0x3E, 0x00, //  #####    #####  \n  0x7C, 0x3E, 0x00, //  #####    #####  \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x18, 0x18, 0x00, //    ##      ##    \n  0x0C, 0x30, 0x00, //     ##    ##     \n  0x0C, 0x30, 0x00, //     ##    ##     \n  0x06, 0x60, 0x00, //      ##  ##      \n  0x06, 0x60, 0x00, //      ##  ##      \n  0x07, 0xE0, 0x00, //      ######      \n  0x03, 0xC0, 0x00, //       ####       \n  0x03, 0xC0, 0x00, //       ####       \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @6264 'w' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x78, 0x3C, 0x00, //  ####     ####   \n  0x78, 0x3C, 0x00, //  ####     ####   \n  0x31, 0x18, 0x00, //   ##   #   ##    \n  0x33, 0x98, 0x00, //   ##  ###  ##    \n  0x33, 0x98, 0x00, //   ##  ###  ##    \n  0x1A, 0xB0, 0x00, //    ## # # ##     \n  0x1E, 0xF0, 0x00, //    #### ####     \n  0x1E, 0xF0, 0x00, //    #### ####     \n  0x1C, 0x60, 0x00, //    ###   ##      \n  0x0C, 0x60, 0x00, //     ##   ##      \n  0x0C, 0x60, 0x00, //     ##   ##      \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @6336 'x' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x3E, 0x7C, 0x00, //   #####  #####   \n  0x3E, 0x7C, 0x00, //   #####  #####   \n  0x0C, 0x30, 0x00, //     ##    ##     \n  0x06, 0x60, 0x00, //      ##  ##      \n  0x03, 0xC0, 0x00, //       ####       \n  0x01, 0x80, 0x00, //        ##        \n  0x03, 0xC0, 0x00, //       ####       \n  0x06, 0x60, 0x00, //      ##  ##      \n  0x0C, 0x30, 0x00, //     ##    ##     \n  0x3E, 0x7C, 0x00, //   #####  #####   \n  0x3E, 0x7C, 0x00, //   #####  #####   \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @6408 'y' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x7E, 0x1F, 0x00, //  ######    ##### \n  0x7E, 0x1F, 0x00, //  ######    ##### \n  0x18, 0x0C, 0x00, //    ##       ##   \n  0x0C, 0x18, 0x00, //     ##     ##    \n  0x0C, 0x18, 0x00, //     ##     ##    \n  0x06, 0x30, 0x00, //      ##   ##     \n  0x06, 0x30, 0x00, //      ##   ##     \n  0x03, 0x60, 0x00, //       ## ##      \n  0x03, 0xE0, 0x00, //       #####      \n  0x01, 0xC0, 0x00, //        ###       \n  0x00, 0xC0, 0x00, //         ##       \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x03, 0x00, 0x00, //       ##         \n  0x3F, 0xC0, 0x00, //   ########       \n  0x3F, 0xC0, 0x00, //   ########       \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @6480 'z' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x18, 0x30, 0x00, //    ##     ##     \n  0x18, 0x60, 0x00, //    ##    ##      \n  0x00, 0xC0, 0x00, //         ##       \n  0x01, 0x80, 0x00, //        ##        \n  0x03, 0x00, 0x00, //       ##         \n  0x06, 0x18, 0x00, //      ##    ##    \n  0x0C, 0x18, 0x00, //     ##     ##    \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x1F, 0xF8, 0x00, //    ##########    \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @6552 '{' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0xE0, 0x00, //         ###      \n  0x01, 0xE0, 0x00, //        ####      \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x03, 0x80, 0x00, //       ###        \n  0x07, 0x00, 0x00, //      ###         \n  0x03, 0x80, 0x00, //       ###        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0xE0, 0x00, //        ####      \n  0x00, 0xE0, 0x00, //         ###      \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @6624 '|' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @6696 '}' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x07, 0x00, 0x00, //      ###         \n  0x07, 0x80, 0x00, //      ####        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0xC0, 0x00, //        ###       \n  0x00, 0xE0, 0x00, //         ###      \n  0x01, 0xC0, 0x00, //        ###       \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x01, 0x80, 0x00, //        ##        \n  0x07, 0x80, 0x00, //      ####        \n  0x07, 0x00, 0x00, //      ###         \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n\n  // @6768 '~' (17 pixels wide)\n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x0E, 0x00, 0x00, //     ###          \n  0x1F, 0x18, 0x00, //    #####   ##    \n  0x3B, 0xB8, 0x00, //   ### ### ###    \n  0x31, 0xF0, 0x00, //   ##   #####     \n  0x00, 0xE0, 0x00, //         ###      \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n  0x00, 0x00, 0x00, //                  \n};\n\nsFONT Font24 = {\n  Font24_Table,\n  17,\t\t// Width\n  24,\t\t// Height\n  0x20,\t\t// First ' '\n  0x7E\t\t// Last '~'\n};\n\n/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\n"
  },
  {
    "path": "font7spp.c",
    "content": "// font7spp.c\n// Font type    : Special (SubSet)\n// Font size    : 32x50 pixels\n\n#include \"fonts.h\"\n\nconst uint8_t Font7SPP_Table [] =\n{\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,  // . decimal point\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // Blank space (code as '/'\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x0C,0xFF,0xFE,0xF0,0x1E,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3E,0x00,0x00,0x78,0x38,0x00,0x00,0x18,0x20,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x38,0x00,0x00,0x18,0x3E,0x00,0x00,0x78,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x1E,0x00,0x00,0xF0,0x0C,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 0\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,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,  // 1\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x00,0xFF,0xFE,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x78,0x01,0xFF,0xFE,0x18,0x03,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x27,0xFF,0xFF,0xC0,0x39,0xFF,0xFF,0x00,0x3E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x0C,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 2\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x00,0xFF,0xFE,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x78,0x01,0xFF,0xFE,0x18,0x03,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 3\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x0C,0x00,0x00,0xF0,0x1E,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3E,0x00,0x00,0x78,0x39,0xFF,0xFE,0x18,0x23,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,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,  // 4\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x0C,0xFF,0xFE,0x00,0x1E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x39,0xFF,0xFE,0x00,0x23,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 5\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x0C,0xFF,0xFE,0x00,0x1E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x39,0xFF,0xFE,0x00,0x23,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xE0,0x27,0xFF,0xFF,0xC0,0x39,0xFF,0xFF,0x18,0x3E,0x00,0x00,0x78,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x1E,0x00,0x00,0xF0,0x0C,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 6\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x00,0xFF,0xFE,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,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,  // 7\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x0C,0xFF,0xFE,0xF0,0x1E,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3E,0x00,0x00,0x78,0x39,0xFF,0xFE,0x18,0x23,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x27,0xFF,0xFF,0xC0,0x39,0xFF,0xFF,0x18,0x3E,0x00,0x00,0x78,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x1E,0x00,0x00,0xF0,0x0C,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 8\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x00,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x60,0x0C,0xFF,0xFE,0xF0,0x1E,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3F,0x00,0x01,0xF8,0x3E,0x00,0x00,0x78,0x39,0xFF,0xFE,0x18,0x23,0xFF,0xFF,0x88,0x0F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x18,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF0,0x00,0xFF,0xFE,0x60,0x01,0xFF,0xFF,0x00,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 9\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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  // :\n};\n\nsFONT Font7SPP = {\n  Font7SPP_Table,\n  32,\t// Width\n  50,\t// Height\n  0x2E,\t// First char '.'\n  0x3A\t// Last char ':'\n};\n"
  },
  {
    "path": "font8.c",
    "content": "/**\n  ******************************************************************************\n  * @file    Font8.c\n  * @author  MCD Application Team\n  * @version V1.0.0\n  * @date    18-February-2014\n  * @brief   This file provides text Font8 for STM32xx-EVAL's LCD driver. \n  ******************************************************************************\n  * @attention\n  *\n  * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>\n  *\n  * Redistribution and use in source and binary forms, with or without modification,\n  * are permitted provided that the following conditions are met:\n  *   1. Redistributions of source code must retain the above copyright notice,\n  *      this list of conditions and the following disclaimer.\n  *   2. Redistributions in binary form must reproduce the above copyright notice,\n  *      this list of conditions and the following disclaimer in the documentation\n  *      and/or other materials provided with the distribution.\n  *   3. Neither the name of STMicroelectronics nor the names of its contributors\n  *      may be used to endorse or promote products derived from this software\n  *      without specific prior written permission.\n  *\n  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n  *\n  ******************************************************************************\n  */\n\n/* Includes ------------------------------------------------------------------*/\n#include \"fonts.h\"\n\n// \n//  Font data for Courier New 12pt\n// \n\nconst uint8_t Font8_Table[] =\n{\n  // @0 ' ' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n\n  // @8 '!' (5 pixels wide)\n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x00, //      \n  0x20, //   #  \n  0x00, //      \n  0x00, //      \n\n  // @16 '\"' (5 pixels wide)\n  0x50, //  # # \n  0x50, //  # # \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n\n  // @24 '#' (5 pixels wide)\n  0x28, //   # #\n  0x50, //  # # \n  0xF8, // #####\n  0x50, //  # # \n  0xF8, // #####\n  0x50, //  # # \n  0xA0, // # #  \n  0x00, //      \n\n  // @32 '$' (5 pixels wide)\n  0x20, //   #  \n  0x30, //   ## \n  0x60, //  ##  \n  0x30, //   ## \n  0x10, //    # \n  0x60, //  ##  \n  0x20, //   #  \n  0x00, //      \n\n  // @40 '%' (5 pixels wide)\n  0x20, //   #  \n  0x20, //   #  \n  0x18, //    ##\n  0x60, //  ##  \n  0x10, //    # \n  0x10, //    # \n  0x00, //      \n  0x00, //      \n\n  // @48 '&' (5 pixels wide)\n  0x00, //      \n  0x38, //   ###\n  0x20, //   #  \n  0x60, //  ##  \n  0x50, //  # # \n  0x78, //  ####\n  0x00, //      \n  0x00, //      \n\n  // @56 ''' (5 pixels wide)\n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n\n  // @64 '(' (5 pixels wide)\n  0x10, //    # \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x10, //    # \n  0x00, //      \n\n  // @72 ')' (5 pixels wide)\n  0x40, //  #   \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x40, //  #   \n  0x00, //      \n\n  // @80 '*' (5 pixels wide)\n  0x20, //   #  \n  0x70, //  ### \n  0x20, //   #  \n  0x50, //  # # \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n\n  // @88 '+' (5 pixels wide)\n  0x00, //      \n  0x20, //   #  \n  0x20, //   #  \n  0xF8, // #####\n  0x20, //   #  \n  0x20, //   #  \n  0x00, //      \n  0x00, //      \n\n  // @96 ',' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x10, //    # \n  0x20, //   #  \n  0x20, //   #  \n  0x00, //      \n\n  // @104 '-' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x70, //  ### \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n\n  // @112 '.' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x20, //   #  \n  0x00, //      \n  0x00, //      \n\n  // @120 '/' (5 pixels wide)\n  0x10, //    # \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x40, //  #   \n  0x40, //  #   \n  0x80, // #    \n  0x00, //      \n\n  // @128 '0' (5 pixels wide)\n  0x20, //   #  \n  0x50, //  # # \n  0x50, //  # # \n  0x50, //  # # \n  0x50, //  # # \n  0x20, //   #  \n  0x00, //      \n  0x00, //      \n\n  // @136 '1' (5 pixels wide)\n  0x60, //  ##  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0xF8, // #####\n  0x00, //      \n  0x00, //      \n\n  // @144 '2' (5 pixels wide)\n  0x20, //   #  \n  0x50, //  # # \n  0x20, //   #  \n  0x20, //   #  \n  0x40, //  #   \n  0x70, //  ### \n  0x00, //      \n  0x00, //      \n\n  // @152 '3' (5 pixels wide)\n  0x20, //   #  \n  0x50, //  # # \n  0x10, //    # \n  0x20, //   #  \n  0x10, //    # \n  0x60, //  ##  \n  0x00, //      \n  0x00, //      \n\n  // @160 '4' (5 pixels wide)\n  0x10, //    # \n  0x30, //   ## \n  0x50, //  # # \n  0x78, //  ####\n  0x10, //    # \n  0x38, //   ###\n  0x00, //      \n  0x00, //      \n\n  // @168 '5' (5 pixels wide)\n  0x70, //  ### \n  0x40, //  #   \n  0x60, //  ##  \n  0x10, //    # \n  0x50, //  # # \n  0x20, //   #  \n  0x00, //      \n  0x00, //      \n\n  // @176 '6' (5 pixels wide)\n  0x30, //   ## \n  0x40, //  #   \n  0x60, //  ##  \n  0x50, //  # # \n  0x50, //  # # \n  0x60, //  ##  \n  0x00, //      \n  0x00, //      \n\n  // @184 '7' (5 pixels wide)\n  0x70, //  ### \n  0x50, //  # # \n  0x10, //    # \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x00, //      \n  0x00, //      \n\n  // @192 '8' (5 pixels wide)\n  0x20, //   #  \n  0x50, //  # # \n  0x20, //   #  \n  0x50, //  # # \n  0x50, //  # # \n  0x20, //   #  \n  0x00, //      \n  0x00, //      \n\n  // @200 '9' (5 pixels wide)\n  0x30, //   ## \n  0x50, //  # # \n  0x50, //  # # \n  0x30, //   ## \n  0x10, //    # \n  0x60, //  ##  \n  0x00, //      \n  0x00, //      \n\n  // @208 ':' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0x20, //   #  \n  0x00, //      \n  0x00, //      \n  0x20, //   #  \n  0x00, //      \n  0x00, //      \n\n  // @216 ';' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0x10, //    # \n  0x00, //      \n  0x10, //    # \n  0x20, //   #  \n  0x00, //      \n  0x00, //      \n\n  // @224 '<' (5 pixels wide)\n  0x00, //      \n  0x10, //    # \n  0x20, //   #  \n  0xC0, // ##   \n  0x20, //   #  \n  0x10, //    # \n  0x00, //      \n  0x00, //      \n\n  // @232 '=' (5 pixels wide)\n  0x00, //      \n  0x70, //  ### \n  0x00, //      \n  0x70, //  ### \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n\n  // @240 '>' (5 pixels wide)\n  0x00, //      \n  0x40, //  #   \n  0x20, //   #  \n  0x18, //    ##\n  0x20, //   #  \n  0x40, //  #   \n  0x00, //      \n  0x00, //      \n\n  // @248 '?' (5 pixels wide)\n  0x20, //   #  \n  0x50, //  # # \n  0x10, //    # \n  0x20, //   #  \n  0x00, //      \n  0x20, //   #  \n  0x00, //      \n  0x00, //      \n\n  // @256 '@' (5 pixels wide)\n  0x30, //   ## \n  0x48, //  #  #\n  0x48, //  #  #\n  0x58, //  # ##\n  0x48, //  #  #\n  0x40, //  #   \n  0x38, //   ###\n  0x00, //      \n\n  // @264 'A' (5 pixels wide)\n  0x60, //  ##  \n  0x20, //   #  \n  0x50, //  # # \n  0x70, //  ### \n  0x88, // #   #\n  0xD8, // ## ##\n  0x00, //      \n  0x00, //      \n\n  // @272 'B' (5 pixels wide)\n  0xF0, // #### \n  0x48, //  #  #\n  0x70, //  ### \n  0x48, //  #  #\n  0x48, //  #  #\n  0xF0, // #### \n  0x00, //      \n  0x00, //      \n\n  // @280 'C' (5 pixels wide)\n  0x70, //  ### \n  0x50, //  # # \n  0x40, //  #   \n  0x40, //  #   \n  0x40, //  #   \n  0x30, //   ## \n  0x00, //      \n  0x00, //      \n\n  // @288 'D' (5 pixels wide)\n  0xF0, // #### \n  0x48, //  #  #\n  0x48, //  #  #\n  0x48, //  #  #\n  0x48, //  #  #\n  0xF0, // #### \n  0x00, //      \n  0x00, //      \n\n  // @296 'E' (5 pixels wide)\n  0xF8, // #####\n  0x48, //  #  #\n  0x60, //  ##  \n  0x40, //  #   \n  0x48, //  #  #\n  0xF8, // #####\n  0x00, //      \n  0x00, //      \n\n  // @304 'F' (5 pixels wide)\n  0xF8, // #####\n  0x48, //  #  #\n  0x60, //  ##  \n  0x40, //  #   \n  0x40, //  #   \n  0xE0, // ###  \n  0x00, //      \n  0x00, //      \n\n  // @312 'G' (5 pixels wide)\n  0x70, //  ### \n  0x40, //  #   \n  0x40, //  #   \n  0x58, //  # ##\n  0x50, //  # # \n  0x30, //   ## \n  0x00, //      \n  0x00, //      \n\n  // @320 'H' (5 pixels wide)\n  0xE8, // ### #\n  0x48, //  #  #\n  0x78, //  ####\n  0x48, //  #  #\n  0x48, //  #  #\n  0xE8, // ### #\n  0x00, //      \n  0x00, //      \n\n  // @328 'I' (5 pixels wide)\n  0x70, //  ### \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x70, //  ### \n  0x00, //      \n  0x00, //      \n\n  // @336 'J' (5 pixels wide)\n  0x38, //   ###\n  0x10, //    # \n  0x10, //    # \n  0x50, //  # # \n  0x50, //  # # \n  0x20, //   #  \n  0x00, //      \n  0x00, //      \n\n  // @344 'K' (5 pixels wide)\n  0xD8, // ## ##\n  0x50, //  # # \n  0x60, //  ##  \n  0x70, //  ### \n  0x50, //  # # \n  0xD8, // ## ##\n  0x00, //      \n  0x00, //      \n\n  // @352 'L' (5 pixels wide)\n  0xE0, // ###  \n  0x40, //  #   \n  0x40, //  #   \n  0x40, //  #   \n  0x48, //  #  #\n  0xF8, // #####\n  0x00, //      \n  0x00, //      \n\n  // @360 'M' (5 pixels wide)\n  0xD8, // ## ##\n  0xD8, // ## ##\n  0xD8, // ## ##\n  0xA8, // # # #\n  0x88, // #   #\n  0xD8, // ## ##\n  0x00, //      \n  0x00, //      \n\n  // @368 'N' (5 pixels wide)\n  0xD8, // ## ##\n  0x68, //  ## #\n  0x68, //  ## #\n  0x58, //  # ##\n  0x58, //  # ##\n  0xE8, // ### #\n  0x00, //      \n  0x00, //      \n\n  // @376 'O' (5 pixels wide)\n  0x30, //   ## \n  0x48, //  #  #\n  0x48, //  #  #\n  0x48, //  #  #\n  0x48, //  #  #\n  0x30, //   ## \n  0x00, //      \n  0x00, //      \n\n  // @384 'P' (5 pixels wide)\n  0xF0, // #### \n  0x48, //  #  #\n  0x48, //  #  #\n  0x70, //  ### \n  0x40, //  #   \n  0xE0, // ###  \n  0x00, //      \n  0x00, //      \n\n  // @392 'Q' (5 pixels wide)\n  0x30, //   ## \n  0x48, //  #  #\n  0x48, //  #  #\n  0x48, //  #  #\n  0x48, //  #  #\n  0x30, //   ## \n  0x18, //    ##\n  0x00, //      \n\n  // @400 'R' (5 pixels wide)\n  0xF0, // #### \n  0x48, //  #  #\n  0x48, //  #  #\n  0x70, //  ### \n  0x48, //  #  #\n  0xE8, // ### #\n  0x00, //      \n  0x00, //      \n\n  // @408 'S' (5 pixels wide)\n  0x70, //  ### \n  0x50, //  # # \n  0x20, //   #  \n  0x10, //    # \n  0x50, //  # # \n  0x70, //  ### \n  0x00, //      \n  0x00, //      \n\n  // @416 'T' (5 pixels wide)\n  0xF8, // #####\n  0xA8, // # # #\n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x70, //  ### \n  0x00, //      \n  0x00, //      \n\n  // @424 'U' (5 pixels wide)\n  0xD8, // ## ##\n  0x48, //  #  #\n  0x48, //  #  #\n  0x48, //  #  #\n  0x48, //  #  #\n  0x30, //   ## \n  0x00, //      \n  0x00, //      \n\n  // @432 'V' (5 pixels wide)\n  0xD8, // ## ##\n  0x88, // #   #\n  0x48, //  #  #\n  0x50, //  # # \n  0x50, //  # # \n  0x30, //   ## \n  0x00, //      \n  0x00, //      \n\n  // @440 'W' (5 pixels wide)\n  0xD8, // ## ##\n  0x88, // #   #\n  0xA8, // # # #\n  0xA8, // # # #\n  0xA8, // # # #\n  0x50, //  # # \n  0x00, //      \n  0x00, //      \n\n  // @448 'X' (5 pixels wide)\n  0xD8, // ## ##\n  0x50, //  # # \n  0x20, //   #  \n  0x20, //   #  \n  0x50, //  # # \n  0xD8, // ## ##\n  0x00, //      \n  0x00, //      \n\n  // @456 'Y' (5 pixels wide)\n  0xD8, // ## ##\n  0x88, // #   #\n  0x50, //  # # \n  0x20, //   #  \n  0x20, //   #  \n  0x70, //  ### \n  0x00, //      \n  0x00, //      \n\n  // @464 'Z' (5 pixels wide)\n  0x78, //  ####\n  0x48, //  #  #\n  0x10, //    # \n  0x20, //   #  \n  0x48, //  #  #\n  0x78, //  ####\n  0x00, //      \n  0x00, //      \n\n  // @472 '[' (5 pixels wide)\n  0x30, //   ## \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x30, //   ## \n  0x00, //      \n\n  // @480 '\\' (5 pixels wide)\n  0x80, // #    \n  0x40, //  #   \n  0x40, //  #   \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x10, //    # \n  0x00, //      \n\n  // @488 ']' (5 pixels wide)\n  0x60, //  ##  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x60, //  ##  \n  0x00, //      \n\n  // @496 '^' (5 pixels wide)\n  0x20, //   #  \n  0x20, //   #  \n  0x50, //  # # \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n\n  // @504 '_' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0xF8, // #####\n\n  // @512 '`' (5 pixels wide)\n  0x20, //   #  \n  0x10, //    # \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x00, //      \n\n  // @520 'a' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0x30, //   ## \n  0x10, //    # \n  0x70, //  ### \n  0x78, //  ####\n  0x00, //      \n  0x00, //      \n\n  // @528 'b' (5 pixels wide)\n  0xC0, // ##   \n  0x40, //  #   \n  0x70, //  ### \n  0x48, //  #  #\n  0x48, //  #  #\n  0xF0, // #### \n  0x00, //      \n  0x00, //      \n\n  // @536 'c' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0x70, //  ### \n  0x40, //  #   \n  0x40, //  #   \n  0x70, //  ### \n  0x00, //      \n  0x00, //      \n\n  // @544 'd' (5 pixels wide)\n  0x18, //    ##\n  0x08, //     #\n  0x38, //   ###\n  0x48, //  #  #\n  0x48, //  #  #\n  0x38, //   ###\n  0x00, //      \n  0x00, //      \n\n  // @552 'e' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0x70, //  ### \n  0x70, //  ### \n  0x40, //  #   \n  0x30, //   ## \n  0x00, //      \n  0x00, //      \n\n  // @560 'f' (5 pixels wide)\n  0x10, //    # \n  0x20, //   #  \n  0x70, //  ### \n  0x20, //   #  \n  0x20, //   #  \n  0x70, //  ### \n  0x00, //      \n  0x00, //      \n\n  // @568 'g' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0x38, //   ###\n  0x48, //  #  #\n  0x48, //  #  #\n  0x38, //   ###\n  0x08, //     #\n  0x30, //   ## \n\n  // @576 'h' (5 pixels wide)\n  0xC0, // ##   \n  0x40, //  #   \n  0x70, //  ### \n  0x48, //  #  #\n  0x48, //  #  #\n  0xE8, // ### #\n  0x00, //      \n  0x00, //      \n\n  // @584 'i' (5 pixels wide)\n  0x20, //   #  \n  0x00, //      \n  0x60, //  ##  \n  0x20, //   #  \n  0x20, //   #  \n  0x70, //  ### \n  0x00, //      \n  0x00, //      \n\n  // @592 'j' (5 pixels wide)\n  0x20, //   #  \n  0x00, //      \n  0x70, //  ### \n  0x10, //    # \n  0x10, //    # \n  0x10, //    # \n  0x10, //    # \n  0x70, //  ### \n\n  // @600 'k' (5 pixels wide)\n  0xC0, // ##   \n  0x40, //  #   \n  0x58, //  # ##\n  0x70, //  ### \n  0x50, //  # # \n  0xD8, // ## ##\n  0x00, //      \n  0x00, //      \n\n  // @608 'l' (5 pixels wide)\n  0x60, //  ##  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x70, //  ### \n  0x00, //      \n  0x00, //      \n\n  // @616 'm' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0xD0, // ## # \n  0xA8, // # # #\n  0xA8, // # # #\n  0xA8, // # # #\n  0x00, //      \n  0x00, //      \n\n  // @624 'n' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0xF0, // #### \n  0x48, //  #  #\n  0x48, //  #  #\n  0xC8, // ##  #\n  0x00, //      \n  0x00, //      \n\n  // @632 'o' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0x30, //   ## \n  0x48, //  #  #\n  0x48, //  #  #\n  0x30, //   ## \n  0x00, //      \n  0x00, //      \n\n  // @640 'p' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0xF0, // #### \n  0x48, //  #  #\n  0x48, //  #  #\n  0x70, //  ### \n  0x40, //  #   \n  0xE0, // ###  \n\n  // @648 'q' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0x38, //   ###\n  0x48, //  #  #\n  0x48, //  #  #\n  0x38, //   ###\n  0x08, //     #\n  0x18, //    ##\n\n  // @656 'r' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0x78, //  ####\n  0x20, //   #  \n  0x20, //   #  \n  0x70, //  ### \n  0x00, //      \n  0x00, //      \n\n  // @664 's' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0x30, //   ## \n  0x20, //   #  \n  0x10, //    # \n  0x60, //  ##  \n  0x00, //      \n  0x00, //      \n\n  // @672 't' (5 pixels wide)\n  0x00, //      \n  0x40, //  #   \n  0xF0, // #### \n  0x40, //  #   \n  0x48, //  #  #\n  0x30, //   ## \n  0x00, //      \n  0x00, //      \n\n  // @680 'u' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0xD8, // ## ##\n  0x48, //  #  #\n  0x48, //  #  #\n  0x38, //   ###\n  0x00, //      \n  0x00, //      \n\n  // @688 'v' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0xC8, // ##  #\n  0x48, //  #  #\n  0x30, //   ## \n  0x30, //   ## \n  0x00, //      \n  0x00, //      \n\n  // @696 'w' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0xD8, // ## ##\n  0xA8, // # # #\n  0xA8, // # # #\n  0x50, //  # # \n  0x00, //      \n  0x00, //      \n\n  // @704 'x' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0x48, //  #  #\n  0x30, //   ## \n  0x30, //   ## \n  0x48, //  #  #\n  0x00, //      \n  0x00, //      \n\n  // @712 'y' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0xD8, // ## ##\n  0x50, //  # # \n  0x50, //  # # \n  0x20, //   #  \n  0x20, //   #  \n  0x60, //  ##  \n\n  // @720 'z' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0x78, //  ####\n  0x50, //  # # \n  0x28, //   # #\n  0x78, //  ####\n  0x00, //      \n  0x00, //      \n\n  // @728 '{' (5 pixels wide)\n  0x10, //    # \n  0x20, //   #  \n  0x20, //   #  \n  0x60, //  ##  \n  0x20, //   #  \n  0x20, //   #  \n  0x10, //    # \n  0x00, //      \n\n  // @736 '|' (5 pixels wide)\n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x20, //   #  \n  0x00, //      \n\n  // @744 '}' (5 pixels wide)\n  0x40, //  #   \n  0x20, //   #  \n  0x20, //   #  \n  0x30, //   ## \n  0x20, //   #  \n  0x20, //   #  \n  0x40, //  #   \n  0x00, //      \n\n  // @752 '~' (5 pixels wide)\n  0x00, //      \n  0x00, //      \n  0x00, //      \n  0x28, //   # #\n  0x50, //  # # \n  0x00, //      \n  0x00, //      \n  0x00, //      \n};\n\nsFONT Font8 = \n{\n  Font8_Table,\n  5,\t\t// Width\n  8,\t\t// Height\n  0x20,\t\t// First ' '\n  0x7E\t\t// Last '~'\n};\n\n/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\n"
  },
  {
    "path": "fontAR.c",
    "content": "// Arial Round 16x24\n// Font type    : Full (95 characters)\n\n#include \"fonts.h\"\n\nconst uint8_t FontAR_Table [] =\n{\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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>\n0x01,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,  // !\n0x00,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,  // \"\n0x00,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,  // #\n0x01,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,  // $\n0x00,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,  // %\n0x00,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,  // &\n0x00,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,  // '\n0x00,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,  // (\n0x02,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,  // )\n0x00,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,  // *\n0x00,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,  // +\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,  // ,\n0x00,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,  // -\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,  // .\n0x00,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,  // /\n\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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,  // :\n0x00,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,  // ;\n0x00,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,  // <\n0x00,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,  // =\n0x00,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,  // >\n0x07,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,  // ?\n\n0x00,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,  // @\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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,  // [\n0x00,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>\n0x00,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,  // ]\n0x00,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,  // ^\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,  // _\n\n0x00,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,  // `\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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\n0x00,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,  // {\n0x03,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,  // |\n0x1C,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,  // }\n0x00,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,  // ~\n};\n\n\nsFONT FontAR = {\n  FontAR_Table,\n  16,\t// Width\n  24,\t// Height\n  0x20,\t// First char ' '\n  0x7E\t// Last char '~'\n};\n\n"
  },
  {
    "path": "fontGR.c",
    "content": "// Grotesk 16x32\n// Font type    : Full (95 characters)\n\n#include \"fonts.h\"\n\nconst uint8_t FontGR_Table [] =\n{\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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>\n0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // !\n0x00,0x00,0x00,0x00,0x06,0x18,0x06,0x18,0x0E,0x38,0x0E,0x38,0x1E,0x78,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,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,  // \"\n0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x8C,0x03,0x8C,0x03,0x8C,0x03,0x1C,0x03,0x18,0x03,0x18,0x3F,0xFF,0x3F,0xFF,0x3F,0xFF,0x06,0x38,0x06,0x30,0x06,0x30,0x0E,0x30,0x0C,0x70,0x0C,0x60,0xFF,0xFC,0xFF,0xFE,0xFF,0xFE,0x1C,0xE0,0x18,0xE0,0x18,0xC0,0x18,0xC0,0x38,0xC0,0x39,0xC0,0x31,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // #\n0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x03,0xF0,0x0F,0xF8,0x1F,0xFC,0x1C,0x8C,0x18,0x80,0x38,0x80,0x38,0x80,0x38,0x80,0x1C,0x80,0x1F,0x80,0x0F,0xF0,0x07,0xF8,0x01,0xFC,0x00,0x9C,0x00,0x8E,0x00,0x8E,0x00,0x8E,0x00,0x8E,0x30,0x8C,0x38,0x9C,0x3F,0xF8,0x1F,0xF0,0x01,0xC0,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,  // $\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x7F,0x00,0x77,0x00,0xE3,0x80,0xC1,0x80,0xC1,0x80,0xC1,0x80,0x63,0x82,0x7F,0x0F,0x3E,0x3E,0x1C,0xF8,0x03,0xE0,0x0F,0x80,0x3E,0x38,0x78,0x7C,0xE0,0xFE,0x01,0xC6,0x01,0x83,0x01,0x83,0x01,0x83,0x01,0xC7,0x00,0xEE,0x00,0xFC,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // %\n0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0xF0,0x0F,0xF0,0x1E,0x30,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x0E,0x00,0x0E,0x00,0x1F,0x00,0x1F,0x00,0x3B,0x87,0x71,0xC7,0x71,0xC7,0x60,0xE7,0x60,0xE7,0x60,0x76,0x60,0x7E,0x70,0x3E,0x70,0x1C,0x78,0x1C,0x3C,0x7E,0x1F,0xFE,0x0F,0xE7,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // &\n0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x03,0x80,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // '\n0x00,0x60,0x00,0xE0,0x00,0xC0,0x00,0xC0,0x01,0xC0,0x01,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x00,0x03,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x03,0x00,0x03,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x01,0x80,0x01,0xC0,0x01,0xC0,0x00,0xC0,0x00,0xE0,0x00,0x60,0x00,0x00,  // (\n0x06,0x00,0x07,0x00,0x03,0x00,0x03,0x00,0x03,0x80,0x01,0x80,0x01,0x80,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x80,0x01,0x80,0x03,0x80,0x03,0x00,0x03,0x00,0x07,0x00,0x06,0x00,0x00,0x00,  // )\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x61,0x86,0x79,0x8E,0x3D,0x9C,0x0F,0xF8,0x07,0xE0,0x03,0xC0,0x07,0xE0,0x0F,0xF8,0x3D,0xBC,0x79,0x8E,0x71,0x86,0x01,0x82,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // *\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x7F,0xFE,0x7F,0xFE,0x3F,0xFE,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // +\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x07,0x80,0x07,0x80,0x07,0x00,0x07,0x00,0x07,0x00,0x0E,0x00,  // ,\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // -\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x07,0xC0,0x07,0xC0,0x07,0xC0,0x07,0xC0,0x07,0xC0,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // .\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x1C,0x00,0x18,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x01,0xC0,0x01,0xC0,0x03,0x80,0x03,0x80,0x03,0x00,0x07,0x00,0x06,0x00,0x0E,0x00,0x0E,0x00,0x1C,0x00,0x1C,0x00,0x18,0x00,0x38,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // /\n\n0x00,0x00,0x00,0x00,0x01,0xC0,0x07,0xE0,0x0F,0xF0,0x1E,0x78,0x1C,0x38,0x1C,0x1C,0x38,0x3C,0x38,0x3C,0x38,0x7C,0x38,0x7C,0x38,0xCC,0x38,0xCE,0x39,0xCE,0x39,0x8E,0x3B,0x8E,0x3B,0x0C,0x3F,0x0C,0x3E,0x1C,0x3E,0x1C,0x3C,0x1C,0x3C,0x1C,0x1C,0x1C,0x1C,0x38,0x0E,0x78,0x0F,0xF0,0x07,0xE0,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,  // 0\n0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x07,0xE0,0x1F,0xE0,0x1F,0xE0,0x1C,0xE0,0x10,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x00,0xC0,0x0F,0xFC,0x1F,0xFE,0x0F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 1\n0x00,0x00,0x00,0x00,0x07,0xC0,0x1F,0xF0,0x3F,0xF8,0x3C,0x3C,0x30,0x1C,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x1C,0x00,0x1C,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1E,0x00,0x3C,0x00,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 2\n0x00,0x00,0x00,0x00,0x07,0xC0,0x1F,0xF0,0x3F,0xF8,0x3C,0x78,0x00,0x3C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x38,0x07,0xF0,0x07,0xE0,0x07,0xF0,0x00,0x38,0x00,0x1C,0x00,0x1C,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x1C,0x20,0x3C,0x3F,0xFC,0x3F,0xF8,0x3F,0xF0,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,  // 3\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xF0,0x00,0xF0,0x01,0xF0,0x01,0xB0,0x03,0x30,0x03,0x30,0x07,0x70,0x06,0x70,0x0E,0x70,0x0C,0x70,0x1C,0x70,0x18,0x70,0x38,0x70,0x30,0x30,0x70,0x30,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x00,0x70,0x00,0x30,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 4\n0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF8,0x1F,0xF8,0x1F,0xF8,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1F,0xC0,0x1F,0xF0,0x1F,0xF8,0x18,0x7C,0x00,0x3C,0x00,0x1C,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x1C,0x20,0x3C,0x3F,0xF8,0x3F,0xF8,0x3F,0xE0,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,  // 5\n0x00,0x00,0x00,0x00,0x01,0xF0,0x07,0xF8,0x0F,0xF8,0x0F,0x18,0x1C,0x00,0x1C,0x00,0x18,0x00,0x38,0x00,0x38,0x00,0x39,0xE0,0x33,0xF0,0x3F,0xF8,0x3E,0x3C,0x3C,0x1C,0x38,0x1C,0x38,0x0C,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0C,0x18,0x1C,0x1C,0x1C,0x1E,0x38,0x0F,0xF8,0x07,0xF0,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,  // 6\n0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFE,0x3F,0xFE,0x3F,0xFC,0x00,0x1C,0x00,0x1C,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x60,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x03,0x80,0x03,0x80,0x03,0x80,0x07,0x00,0x07,0x00,0x07,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 7\n0x00,0x00,0x00,0x00,0x03,0xC0,0x0F,0xF0,0x1F,0xF8,0x1E,0x38,0x1C,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x1C,0x1C,0x1C,0x38,0x0F,0xF0,0x07,0xE0,0x0F,0xF0,0x1E,0x78,0x1C,0x1C,0x38,0x1C,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1C,0x3C,0x1C,0x1E,0x7C,0x1F,0xF8,0x0F,0xF0,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,  // 8\n0x00,0x00,0x00,0x00,0x03,0xC0,0x0F,0xF0,0x1F,0xF0,0x1C,0x78,0x38,0x38,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x30,0x1C,0x30,0x1C,0x38,0x1C,0x38,0x1E,0x38,0x1E,0x38,0x3E,0x1E,0x7E,0x1F,0xEC,0x0F,0xCC,0x03,0x8C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x38,0x00,0x38,0x1F,0xF0,0x1F,0xF0,0x1F,0xE0,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 9\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // :\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0x80,0x07,0x80,0x07,0x80,0x07,0x00,0x07,0x00,0x00,0x00,  // ;\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x0E,0x00,0x3E,0x00,0xFC,0x03,0xF0,0x0F,0xC0,0x3F,0x00,0x7C,0x00,0x78,0x00,0x7E,0x00,0x3F,0x80,0x0F,0xE0,0x03,0xF8,0x00,0xFE,0x00,0x3E,0x00,0x0E,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // <\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x7F,0xFE,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // =\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x78,0x00,0x7E,0x00,0x3F,0x80,0x0F,0xE0,0x03,0xF8,0x00,0xFE,0x00,0x3E,0x00,0x0E,0x00,0x3E,0x00,0xFC,0x03,0xF0,0x0F,0xC0,0x3F,0x00,0x7C,0x00,0x70,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // >\n0x00,0x00,0x00,0x00,0x03,0xE0,0x0F,0xF0,0x1F,0xF8,0x1C,0x3C,0x18,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x38,0x00,0x78,0x00,0xF0,0x00,0xE0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x80,0x01,0xC0,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x80,0x03,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // ?\n\n0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF0,0x0F,0xF8,0x1E,0x3C,0x1C,0x0C,0x38,0x0E,0x30,0x06,0x70,0x06,0x60,0xF6,0x61,0xFE,0xE3,0xFE,0xC3,0x0E,0xC7,0x06,0xC6,0x06,0xC6,0x06,0xC6,0x06,0xC6,0x06,0xC7,0x06,0xC7,0x0E,0xE3,0x9E,0x63,0xFE,0x61,0xF6,0x70,0x60,0x30,0x00,0x38,0x00,0x1C,0x00,0x1E,0x00,0x0F,0xFC,0x07,0xFE,0x00,0xFC,  // @\n0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x03,0xC0,0x07,0xC0,0x07,0xC0,0x06,0xE0,0x06,0xE0,0x0E,0x60,0x0E,0x60,0x0E,0x70,0x0C,0x70,0x0C,0x70,0x1C,0x30,0x1C,0x38,0x1C,0x38,0x18,0x38,0x3F,0xF8,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x70,0x1C,0x70,0x0C,0x70,0x0E,0x70,0x0E,0xE0,0x0E,0xE0,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // A\n0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xE0,0x3F,0xF0,0x3F,0xF8,0x38,0x3C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x38,0x3F,0xF8,0x3F,0xF0,0x3F,0xF0,0x38,0x78,0x38,0x1C,0x38,0x1C,0x38,0x0C,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1C,0x38,0x3C,0x3F,0xF8,0x3F,0xF8,0x3F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // B\n0x00,0x00,0x00,0x00,0x01,0xF0,0x07,0xF8,0x0F,0xFC,0x0F,0x1C,0x1C,0x04,0x1C,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x78,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x1C,0x00,0x1E,0x0C,0x0F,0x3C,0x07,0xFC,0x03,0xF8,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,  // C\n0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xC0,0x7F,0xE0,0x7F,0xF0,0x70,0x78,0x70,0x38,0x70,0x3C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x38,0x70,0x38,0x70,0xF8,0x7F,0xF0,0x7F,0xE0,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // D\n0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x3F,0xF8,0x3F,0xFC,0x3F,0xFC,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // E\n0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFC,0x1F,0xFC,0x1F,0xFC,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1F,0xF8,0x1F,0xFC,0x1F,0xFC,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // F\n0x00,0x00,0x00,0x00,0x01,0xE0,0x07,0xF8,0x0F,0xFC,0x1E,0x1C,0x1C,0x0C,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x7C,0x70,0x7C,0x70,0x7C,0x70,0x0C,0x70,0x0C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x0C,0x1C,0x1C,0x1F,0x3C,0x0F,0xFC,0x07,0xF8,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,  // G\n0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x7F,0xFC,0x7F,0xFC,0x7F,0xFC,0x78,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x30,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // H\n0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x3F,0xF8,0x3F,0xF8,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,0x3F,0xF8,0x3F,0xF8,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // I\n0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x0F,0xF0,0x07,0xF0,0x00,0x30,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x70,0x00,0x30,0x00,0x70,0x00,0x70,0x40,0x70,0x60,0x70,0x79,0xF0,0x7F,0xE0,0x3F,0xC0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // J\n0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x0E,0x70,0x1C,0x70,0x3C,0x70,0x38,0x70,0x70,0x70,0xE0,0x71,0xE0,0x71,0xC0,0x73,0x80,0x77,0x00,0x7F,0x00,0x7F,0x80,0x7F,0x80,0x79,0xC0,0x79,0xC0,0x70,0xE0,0x70,0xE0,0x70,0x70,0x70,0x70,0x70,0x38,0x70,0x3C,0x70,0x1C,0x70,0x1E,0x70,0x0E,0x30,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // K\n0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x3F,0xFE,0x3F,0xFE,0x1F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // L\n0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x3C,0xF0,0x3C,0xF8,0x3C,0xF8,0x3C,0xF8,0x7C,0xF8,0x6C,0xEC,0x6C,0xEC,0xCC,0xEC,0xCC,0xEC,0xCC,0xE6,0xCC,0xE7,0xCC,0xE7,0x8C,0xE7,0x8C,0xE3,0x8C,0xE3,0x0C,0xE0,0x0C,0xE0,0x0C,0xE0,0x0C,0xE0,0x0C,0xE0,0x0C,0xE0,0x0C,0xE0,0x0C,0xE0,0x0C,0xE0,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // M\n0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x1C,0xF0,0x1C,0xF8,0x1C,0xF8,0x1C,0xFC,0x1C,0xFC,0x1C,0xEC,0x1C,0xEE,0x1C,0xEE,0x1C,0xE6,0x1C,0xE7,0x1C,0xE7,0x1C,0xE3,0x9C,0xE3,0x9C,0xE1,0x9C,0xE1,0xDC,0xE1,0xDC,0xE0,0xDC,0xE0,0xFC,0xE0,0xFC,0xE0,0x7C,0xE0,0x7C,0xE0,0x7C,0xE0,0x3C,0xE0,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // N\n0x00,0x00,0x00,0x00,0x03,0xC0,0x0F,0xE0,0x1F,0xF0,0x1E,0x78,0x3C,0x38,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x30,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0E,0x70,0x1E,0x70,0x1E,0x70,0x1E,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x1C,0x38,0x1E,0x78,0x0F,0xF0,0x07,0xE0,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,  // O\n\n0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x3F,0xF8,0x3F,0xFC,0x38,0x1C,0x38,0x1E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x38,0x1C,0x38,0x3C,0x3F,0xFC,0x3F,0xF8,0x3F,0xE0,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // P\n0x00,0x00,0x00,0x00,0x03,0xC0,0x0F,0xF0,0x1F,0xF0,0x1C,0x78,0x38,0x38,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0E,0x70,0x1E,0x70,0x1E,0x70,0x0E,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x38,0x1C,0x78,0x1F,0xF0,0x0F,0xE0,0x03,0xE0,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x10,  // Q\n0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xE0,0x3F,0xF0,0x3F,0xF8,0x30,0x38,0x38,0x3C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x30,0x38,0x3F,0xF8,0x3F,0xF0,0x3F,0xE0,0x3F,0xF0,0x30,0x70,0x38,0x38,0x38,0x38,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x0E,0x38,0x0E,0x38,0x0E,0x30,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // R\n0x00,0x00,0x00,0x00,0x03,0xE0,0x0F,0xF8,0x1F,0xF8,0x3C,0x38,0x38,0x08,0x38,0x00,0x30,0x00,0x70,0x00,0x70,0x00,0x38,0x00,0x3C,0x00,0x3F,0x80,0x1F,0xE0,0x0F,0xF0,0x03,0xF8,0x00,0x7C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x0C,0x00,0x1C,0x00,0x1C,0x30,0x3C,0x3C,0x78,0x3F,0xF8,0x1F,0xF0,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,  // S\n0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x7F,0xFE,0x01,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,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // T\n0x00,0x00,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,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x1E,0x78,0x1F,0xF8,0x0F,0xF0,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,  // U\n0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x0E,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x18,0x18,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x0C,0x30,0x0E,0x70,0x0E,0x70,0x0E,0x70,0x06,0x60,0x06,0x60,0x06,0x60,0x07,0xE0,0x07,0xE0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // V\n0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x07,0xE0,0x07,0xE0,0x07,0xE0,0x07,0xE0,0x07,0x60,0x06,0x61,0x86,0x63,0xC6,0x63,0xC6,0x73,0xCE,0x73,0xCE,0x73,0xCE,0x72,0xCE,0x76,0x6E,0x36,0x6C,0x36,0x6C,0x36,0x6C,0x36,0x6C,0x3E,0x7C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x1C,0x38,0x1C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // W\n0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x0E,0x38,0x0E,0x38,0x1C,0x1C,0x1C,0x1C,0x38,0x0E,0x38,0x0E,0x70,0x06,0x70,0x07,0xE0,0x03,0xE0,0x03,0xC0,0x01,0xC0,0x03,0xC0,0x03,0xE0,0x07,0xE0,0x07,0x60,0x0E,0x70,0x0E,0x30,0x1C,0x38,0x1C,0x38,0x38,0x1C,0x38,0x1C,0x70,0x0E,0x70,0x0E,0xE0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // X\n0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x0E,0x70,0x0E,0x30,0x1C,0x38,0x1C,0x38,0x18,0x1C,0x38,0x1C,0x38,0x0E,0x70,0x0E,0x70,0x06,0x60,0x07,0xE0,0x03,0xC0,0x03,0xC0,0x03,0x80,0x01,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // Y\n0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x00,0x1C,0x00,0x1C,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0x70,0x00,0xE0,0x00,0xE0,0x01,0xC0,0x01,0xC0,0x03,0x80,0x03,0x80,0x07,0x00,0x07,0x00,0x0E,0x00,0x0E,0x00,0x1C,0x00,0x1C,0x00,0x38,0x00,0x3F,0xFE,0x3F,0xFE,0x3F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // Z\n0x01,0xF8,0x01,0xF8,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xF8,0x01,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // [\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x38,0x00,0x38,0x00,0x1C,0x00,0x1C,0x00,0x0C,0x00,0x0E,0x00,0x0E,0x00,0x07,0x00,0x07,0x00,0x03,0x80,0x03,0x80,0x01,0x80,0x01,0xC0,0x01,0xC0,0x00,0xE0,0x00,0xE0,0x00,0x70,0x00,0x70,0x00,0x30,0x00,0x38,0x00,0x38,0x00,0x1C,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // <backslash>\n0x0F,0x80,0x0F,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x0F,0xC0,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // ]\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x03,0xC0,0x07,0xE0,0x07,0xF0,0x0E,0x70,0x1E,0x78,0x1C,0x38,0x38,0x1C,0x70,0x0E,0x70,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // ^\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // _\n\n0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x03,0x80,0x03,0x80,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // `\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x1F,0xE0,0x3F,0xF0,0x3C,0x78,0x30,0x38,0x00,0x18,0x00,0x1C,0x00,0x1C,0x07,0xFC,0x1F,0xFC,0x3F,0xFC,0x38,0x1C,0x30,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x3C,0x38,0x3C,0x3C,0xFC,0x3F,0xDC,0x1F,0xDC,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // a\n0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x80,0x3B,0xE0,0x3F,0xF0,0x3E,0x78,0x3C,0x38,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x0C,0x38,0x0C,0x38,0x0C,0x38,0x0C,0x38,0x0C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x3C,0x38,0x3E,0x78,0x3F,0xF0,0x3B,0xF0,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,  // b\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x03,0xF8,0x07,0xFC,0x0F,0x1C,0x1E,0x0C,0x1C,0x00,0x18,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x18,0x00,0x1C,0x00,0x1E,0x04,0x0F,0x1C,0x07,0xFC,0x03,0xF8,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,  // c\n0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x01,0x1C,0x0F,0xDC,0x1F,0xFC,0x1E,0xFC,0x38,0x3C,0x38,0x3C,0x38,0x1C,0x30,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x30,0x1C,0x30,0x1C,0x38,0x3C,0x38,0x3C,0x1C,0x7C,0x1F,0xFC,0x0F,0xDC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // d\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0xE0,0x0F,0xF0,0x1E,0x78,0x1C,0x1C,0x38,0x1C,0x38,0x0C,0x30,0x0E,0x7F,0xFE,0x7F,0xFE,0x7F,0xFC,0x70,0x00,0x70,0x00,0x30,0x00,0x38,0x00,0x38,0x00,0x1C,0x04,0x1E,0x3C,0x0F,0xFC,0x07,0xF8,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,  // e\n0x00,0x00,0x00,0x00,0x00,0xFC,0x01,0xFC,0x01,0xF8,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x3F,0xFC,0x3F,0xFC,0x1F,0xF8,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,  // f\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x0F,0xDC,0x1F,0xFC,0x1C,0x7C,0x38,0x3C,0x38,0x1C,0x30,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x30,0x1C,0x30,0x1C,0x38,0x3C,0x3C,0x3C,0x1F,0xFC,0x0F,0xDC,0x07,0x9C,0x00,0x1C,0x00,0x18,0x00,0x38,0x1C,0xF0,0x1F,0xF0,0x0F,0xC0,  // g\n0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x40,0x3B,0xF0,0x3B,0xF0,0x3F,0xF8,0x3C,0x38,0x38,0x18,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,0x38,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // h\n0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xC0,0x0F,0xC0,0x0F,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x0F,0xFC,0x1F,0xFE,0x1F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // i\n0x00,0x00,0x00,0x00,0x00,0x80,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xC0,0x1F,0xC0,0x01,0xC0,0x00,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0xC0,0x01,0xC0,0x01,0xC0,0x1F,0x80,0x3F,0x80,0x3F,0x00,  // j\n0x00,0x00,0x00,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x1C,0x1C,0x3C,0x1C,0x38,0x1C,0x70,0x1C,0xE0,0x19,0xC0,0x19,0xC0,0x1F,0x80,0x1F,0xC0,0x1F,0xC0,0x1C,0xE0,0x1C,0xE0,0x18,0x70,0x1C,0x70,0x1C,0x38,0x1C,0x1C,0x1C,0x1C,0x1C,0x0E,0x18,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // k\n0x00,0x00,0x0F,0x80,0x1F,0x80,0x1F,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,0x01,0x80,0x01,0x80,0x01,0xC0,0x01,0xC0,0x00,0xFC,0x00,0xFE,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // l\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x6F,0x78,0x7F,0xFC,0x7B,0xDC,0x73,0x8E,0x71,0x8E,0x71,0x8E,0x61,0x8E,0x71,0x8E,0x71,0x8E,0x71,0x8E,0x71,0x8E,0x71,0x8E,0x71,0x8E,0x71,0x8E,0x71,0x8E,0x71,0x8E,0x71,0x8E,0x71,0x8E,0x61,0x8E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // m\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x3B,0xF0,0x3B,0xF0,0x3F,0xF8,0x3C,0x38,0x38,0x18,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,0x38,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // n\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x07,0xE0,0x0F,0xF0,0x1E,0x78,0x3C,0x38,0x38,0x1C,0x38,0x1C,0x30,0x1C,0x30,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x0C,0x30,0x1C,0x30,0x1C,0x38,0x1C,0x38,0x1C,0x3C,0x38,0x1E,0x78,0x0F,0xF0,0x0F,0xE0,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,  // o\n\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x3B,0xF0,0x3F,0xF8,0x3E,0x38,0x3C,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x0C,0x38,0x0C,0x38,0x0C,0x38,0x0C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x3C,0x38,0x3E,0x78,0x3F,0xF0,0x3B,0xE0,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,  // p\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x0F,0xDC,0x1F,0xFC,0x1C,0x7C,0x38,0x3C,0x38,0x1C,0x30,0x1C,0x30,0x1C,0x70,0x1C,0x70,0x1C,0x70,0x1C,0x30,0x1C,0x38,0x1C,0x38,0x3C,0x38,0x3C,0x1E,0xFC,0x0F,0xFC,0x07,0x9C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x00,0x1C,  // q\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x06,0x7E,0x0E,0xFE,0x0F,0xFE,0x0F,0x82,0x0F,0x00,0x0F,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x0E,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // r\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x07,0xF0,0x0F,0xF8,0x1E,0x38,0x1C,0x08,0x18,0x00,0x18,0x00,0x1C,0x00,0x1E,0x00,0x1F,0xE0,0x0F,0xF0,0x03,0xF8,0x00,0x78,0x00,0x18,0x00,0x1C,0x00,0x18,0x10,0x38,0x1C,0x78,0x1F,0xF0,0x1F,0xE0,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,  // s\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x3F,0xF8,0x7F,0xF8,0x3F,0xF8,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x07,0x00,0x03,0x80,0x03,0xF8,0x03,0xF8,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // t\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x38,0x1C,0x18,0x1C,0x1C,0x3C,0x1E,0x7C,0x1F,0xFC,0x0F,0xDC,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // u\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x0E,0x70,0x0C,0x30,0x1C,0x38,0x1C,0x38,0x1C,0x18,0x18,0x1C,0x38,0x1C,0x38,0x1C,0x30,0x0C,0x30,0x0E,0x70,0x0E,0x70,0x06,0x60,0x06,0x60,0x07,0xE0,0x07,0xE0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // v\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0xE0,0x07,0xE0,0x07,0xE0,0x07,0x60,0x06,0x61,0x86,0x71,0x8E,0x73,0xCE,0x73,0xCE,0x33,0xCC,0x33,0xCC,0x32,0x4C,0x32,0x4C,0x3E,0x7C,0x3E,0x7C,0x1E,0x78,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // w\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x0C,0x38,0x1C,0x1C,0x38,0x1C,0x38,0x0E,0x70,0x0E,0x70,0x07,0xE0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x07,0xE0,0x06,0x60,0x0E,0x70,0x1C,0x38,0x1C,0x38,0x38,0x1C,0x38,0x1C,0x70,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // x\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x0E,0x30,0x0E,0x38,0x0C,0x38,0x1C,0x18,0x1C,0x1C,0x18,0x1C,0x38,0x0C,0x38,0x0E,0x30,0x0E,0x70,0x06,0x70,0x07,0x60,0x03,0xE0,0x03,0xE0,0x03,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x80,0x03,0x80,0x03,0x00,0x1F,0x00,0x3E,0x00,0x3C,0x00,  // y\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFC,0x1F,0xFC,0x1F,0xFC,0x00,0x38,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0xE0,0x01,0xC0,0x01,0xC0,0x03,0x80,0x07,0x00,0x07,0x00,0x0E,0x00,0x0E,0x00,0x1C,0x00,0x3F,0xF8,0x3F,0xFC,0x1F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // z\n0x00,0x78,0x00,0xFC,0x01,0xE0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x03,0x80,0x3F,0x00,0x3E,0x00,0x1F,0x00,0x03,0x80,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xE0,0x00,0xFC,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // {\n0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // |\n0x1E,0x00,0x1F,0x00,0x07,0x80,0x03,0x80,0x01,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x01,0x80,0x01,0xC0,0x01,0xC0,0x00,0xFC,0x00,0x7C,0x00,0xFC,0x01,0xC0,0x01,0xC0,0x01,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x03,0x80,0x01,0x80,0x03,0x80,0x07,0x80,0x1F,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // }\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x3E,0x00,0x3F,0x00,0x7F,0x02,0x63,0x87,0xE1,0xC7,0xC1,0xCE,0x40,0xFE,0x00,0x7C,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // ~\n};\n\nsFONT FontGR = {\n  FontGR_Table,\n  16,\t// Width\n  32,\t// Height\n  0x20,\t// First char ' '\n  0x7E\t// Last char '~'\n};\n"
  },
  {
    "path": "fontSYM16.c",
    "content": "// Various symbols 16x16\n// Font type    : Full (95 characters)\n\n#include \"fonts.h\"\n\nconst uint8_t FontSYMs_Table [] =\n{\n0x10,0x10,0x20,0x5F,\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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>\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x0F,0xE0,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x00,  // !\n0x00,0x00,0x00,0x06,0x03,0xE4,0x0F,0xF8,0x1F,0x1C,0x1C,0x2E,0x3C,0x4E,0x38,0x8E,0x39,0x8E,0x39,0x1E,0x3A,0x3C,0x1C,0x7C,0x0F,0xF8,0x13,0xE0,0x30,0x00,0x00,0x00,  // \"\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0xCC,0x0C,0xCC,0x0C,0xCC,0x00,0x00,0x00,0x00,  // #\n0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x80,0x69,0x00,0x4B,0x00,0x5A,0x00,0x36,0x00,0x04,0x00,0x0D,0x8C,0x0B,0x5A,0x12,0x52,0x12,0xD6,0x21,0x8C,0x00,0x00,0x00,0x00,  // $\n0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x18,0x33,0x30,0x63,0x60,0x63,0x40,0x66,0xC0,0x3D,0xBC,0x03,0x66,0x02,0xC6,0x06,0xC6,0x0C,0xCC,0x18,0x78,0x00,0x00,0x00,0x00,  // %\n0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xE0,0x06,0x60,0x0C,0xC0,0x0D,0xC0,0x06,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // &\n0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x30,0x00,0x30,0x00,0x70,0x01,0xC0,0x07,0x00,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // '\n0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0xC0,0x03,0x80,0x06,0x00,0x01,0xC0,0x00,0xC0,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // (\n0x00,0x00,0x00,0x00,0x01,0x80,0x03,0x80,0x1F,0xF0,0x03,0x00,0x03,0x00,0x3F,0xE0,0x07,0x00,0x06,0x00,0x0E,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // )\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x70,0x00,0x60,0x00,0x00,0x0F,0xFE,0x0F,0xFE,0x00,0x00,0x00,0xC0,0x01,0xC0,0x01,0x80,0x00,0x00,0x00,0x00,  // *\n0x00,0x00,0x00,0x00,0x00,0x30,0x00,0xE0,0x00,0xE0,0x00,0x60,0x00,0x60,0x00,0xC0,0x00,0xC0,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // +\n0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x1C,0x1C,0x3C,0x1C,0x18,0x0E,0x30,0x1E,0x78,0x03,0xC0,0x03,0xC0,0x3F,0xF8,0x03,0x00,0x07,0x00,0x07,0x00,0x00,0x00,0x00,0x00,  // ,\n0x00,0x00,0x00,0x00,0x00,0xF8,0x03,0xF8,0x03,0x00,0x03,0x80,0x07,0xF0,0x0C,0xF8,0x0E,0x18,0x0F,0x98,0x03,0xE0,0x00,0xF0,0x08,0x30,0x0F,0xF0,0x07,0xC0,0x00,0x00,  // -\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x03,0xC0,0x03,0xC0,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // .\n0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x7C,0x00,0xFC,0x01,0xD0,0x03,0xA0,0x03,0xA0,0x03,0xA0,0x03,0xA0,0x01,0xF8,0x00,0xF0,0x00,0x40,0x00,0x40,0x00,0x00,0x00,0x00,  // /\n\n0x00,0x00,0x00,0x00,0x03,0xC0,0x0F,0xF0,0x1C,0x38,0x1D,0xB8,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x39,0x9C,0x1D,0xB8,0x1C,0x38,0x0F,0xF0,0x03,0xC0,0x00,0x00,0x00,0x00,  // 0\n0x00,0x00,0x00,0x00,0x03,0xC0,0x0F,0xF0,0x1F,0x38,0x1E,0x38,0x3F,0x3C,0x3F,0x3C,0x3F,0x3C,0x3F,0x3C,0x1F,0x38,0x1F,0xF8,0x0F,0xF0,0x03,0xC0,0x00,0x00,0x00,0x00,  // 1\n0x00,0x00,0x00,0x00,0x03,0xC0,0x0F,0xF0,0x1E,0x38,0x1D,0x98,0x3F,0x9C,0x3F,0x3C,0x3E,0x7C,0x3C,0xFC,0x1C,0x18,0x1F,0xF8,0x0F,0xF0,0x03,0xC0,0x00,0x00,0x00,0x00,  // 2\n0x00,0x00,0x00,0x00,0x03,0xC0,0x0F,0xF0,0x1C,0x38,0x1F,0x98,0x3F,0x9C,0x3E,0x7C,0x3F,0x9C,0x3F,0x9C,0x1F,0x98,0x1C,0x38,0x0F,0xF0,0x03,0xC0,0x00,0x00,0x00,0x00,  // 3\n0x00,0x00,0x00,0x00,0x03,0xC0,0x0F,0xF0,0x1F,0x78,0x1E,0x78,0x3D,0x7C,0x3D,0x7C,0x3B,0x7C,0x38,0x3C,0x1F,0x78,0x1F,0x78,0x0F,0xF0,0x03,0xC0,0x00,0x00,0x00,0x00,  // 4\n0x00,0x00,0x00,0x00,0x03,0xC0,0x0F,0xF0,0x1F,0xF8,0x1C,0x38,0x3D,0xFC,0x3D,0xFC,0x3C,0x7C,0x3F,0x3C,0x1F,0x38,0x1C,0x78,0x0F,0xF0,0x03,0xC0,0x00,0x00,0x00,0x00,  // 5\n0x00,0x00,0x00,0x00,0x03,0xC0,0x0F,0xF0,0x1E,0x18,0x1C,0xF8,0x39,0xFC,0x38,0x3C,0x39,0x9C,0x39,0x9C,0x1D,0x98,0x1C,0x38,0x0F,0xF0,0x03,0xC0,0x00,0x00,0x00,0x00,  // 6\n0x00,0x00,0x00,0x00,0x03,0xC0,0x0F,0xF0,0x1F,0xF8,0x1C,0x18,0x3F,0xDC,0x3F,0xBC,0x3F,0x7C,0x3E,0xFC,0x1C,0xF8,0x1F,0xF8,0x0F,0xF0,0x03,0xC0,0x00,0x00,0x00,0x00,  // 7\n0x00,0x00,0x00,0x00,0x03,0xC0,0x0F,0xF0,0x1C,0x38,0x1B,0xD8,0x39,0xDC,0x3C,0x7C,0x3F,0x3C,0x3B,0xDC,0x1B,0xD8,0x1C,0x38,0x0F,0xF0,0x03,0xC0,0x00,0x00,0x00,0x00,  // 8\n0x00,0x00,0x00,0x00,0x03,0xE0,0x0F,0xF8,0x1C,0x3C,0x19,0xDC,0x39,0xCE,0x39,0xCE,0x3C,0x4E,0x3F,0xCE,0x1F,0x9C,0x1C,0x3C,0x0F,0xF8,0x03,0xE0,0x00,0x00,0x00,0x00,  // 9\n0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFC,0x0F,0xFC,0x0F,0xFC,0x0F,0xFC,0x0F,0xFC,0x0F,0xFC,0x0F,0xFC,0x0F,0xFC,0x0F,0xFC,0x0F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,  // :\n0x00,0x00,0x00,0x00,0x03,0xC0,0x0F,0xF0,0x1C,0x38,0x18,0x18,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x18,0x18,0x1C,0x38,0x0F,0xF0,0x03,0xC0,0x00,0x00,0x00,0x00,  // ;\n0x00,0x00,0x00,0x00,0x3F,0xFC,0x28,0x14,0x28,0x14,0x28,0x14,0x28,0x14,0x28,0x14,0x2F,0xF4,0x27,0xE4,0x24,0xE4,0x24,0xE4,0x24,0xE4,0x1F,0xFC,0x00,0x00,0x00,0x00,  // <\n0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x40,0x01,0x20,0x02,0x10,0x02,0x10,0x04,0x08,0x08,0x08,0x08,0x04,0x10,0x02,0x10,0x02,0x3F,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,  // =\n0x00,0x00,0x00,0x00,0x3F,0xFF,0x10,0x02,0x10,0x02,0x08,0x04,0x08,0x08,0x04,0x08,0x02,0x10,0x02,0x10,0x01,0x20,0x01,0x40,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,  // >\n0x00,0x00,0x00,0x04,0x00,0x1C,0x00,0x24,0x00,0xC4,0x03,0x04,0x04,0x04,0x18,0x04,0x10,0x04,0x0C,0x04,0x03,0x04,0x00,0x84,0x00,0x64,0x00,0x1C,0x00,0x04,0x00,0x00,  // ?\n\n0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x30,0x0C,0x32,0x6C,0x32,0xEC,0x33,0xCC,0x31,0x8C,0x33,0xEC,0x36,0x6C,0x36,0x0C,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,  // @\n0x00,0x00,0x00,0x02,0x3F,0xFC,0x3F,0xFC,0x30,0x1C,0x30,0x2C,0x30,0x4C,0x34,0xCC,0x3F,0x8C,0x33,0x0C,0x33,0x0C,0x30,0x0C,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,  // A\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFE,0x28,0x06,0x26,0x1A,0x23,0x62,0x26,0xB2,0x38,0x0E,0x30,0x06,0x3F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,  // B\n0x00,0x00,0x00,0x00,0x3F,0xFC,0x3F,0xFC,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x30,0x0C,0x3F,0xFC,0x3F,0xFC,0x00,0x00,0x00,0x00,  // C\n0x00,0x00,0x00,0x60,0x01,0xFC,0x02,0x06,0x04,0x00,0x08,0x00,0x3F,0xF8,0x08,0x00,0x1F,0xF8,0x08,0x00,0x0C,0x00,0x04,0x00,0x03,0x04,0x01,0xF8,0x00,0x00,0x00,0x00,  // D\n0x00,0x00,0x00,0x38,0x00,0x70,0x00,0xE0,0x00,0xC0,0x01,0x80,0x03,0x10,0x03,0xE0,0x06,0xC0,0x00,0x80,0x01,0x80,0x0B,0x00,0x0A,0x00,0x0F,0x80,0x0C,0x00,0x00,0x00,  // E\n0x00,0x00,0x00,0x00,0x1C,0x60,0x38,0xC0,0x18,0x80,0x19,0x80,0x13,0x38,0x32,0x70,0x36,0x60,0x0C,0xCC,0x08,0xFC,0x10,0x18,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,  // F\n0x00,0x00,0x00,0x00,0x0C,0x30,0x38,0x60,0x18,0x40,0x18,0x80,0x31,0xFC,0x33,0x06,0x02,0x06,0x04,0x1C,0x0C,0x70,0x18,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // G\n0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x18,0x0C,0x30,0x38,0x20,0x70,0x60,0x0C,0xDC,0x0C,0xB8,0xF9,0x30,0x03,0x66,0x02,0x7E,0x04,0x0C,0x0C,0x0C,0x00,0x00,0x00,0x00,  // H\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0xE0,0x00,0xE0,0x00,0x00,0x00,0xC0,0x01,0xC0,0x07,0x80,0x0F,0x00,0x0E,0x00,0x0E,0x10,0x07,0xF0,0x03,0xE0,0x00,0x00,  // I\n0x00,0x00,0x00,0x00,0x01,0x90,0x02,0x70,0x00,0x00,0x0C,0x60,0x1D,0xF0,0x1F,0x70,0x1E,0x70,0x1C,0xE0,0x1C,0xE0,0x38,0xE0,0x38,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,  // J\n0x00,0x00,0x07,0xC0,0x18,0x30,0x30,0x18,0x2C,0x68,0x4C,0x64,0x40,0x04,0x40,0x04,0x48,0x24,0x48,0x24,0x24,0x48,0x33,0x98,0x18,0x30,0x07,0xC0,0x00,0x00,0x00,0x00,  // K\n0x00,0x00,0x03,0xE0,0x0C,0x18,0x18,0x0C,0x16,0x34,0x26,0x32,0x20,0x02,0x21,0xC2,0x22,0x22,0x24,0x12,0x14,0x14,0x18,0x0C,0x0C,0x18,0x03,0xE0,0x00,0x00,0x00,0x00,  // L\n0x00,0x00,0x00,0x00,0x07,0xC0,0x18,0x30,0x30,0x18,0x26,0xC8,0x46,0xC4,0x40,0x04,0x40,0x04,0x4F,0xE4,0x20,0x08,0x30,0x18,0x18,0x30,0x07,0xC0,0x00,0x00,0x00,0x00,  // M\n0x00,0x00,0x00,0x00,0x01,0xE0,0x03,0xF0,0x03,0xF0,0x02,0xD0,0x01,0x20,0x00,0xC0,0x00,0xC0,0x0C,0x08,0x0F,0x38,0x00,0xC0,0x03,0x30,0x0E,0x18,0x00,0x00,0x00,0x00,  // N\n0x00,0x00,0x00,0x80,0x01,0xC0,0x03,0xE0,0x07,0xF0,0x0F,0xF8,0x1F,0xFC,0x3D,0xDE,0x31,0xC6,0x21,0xC2,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,  // O\n\n0x00,0x00,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x21,0xC2,0x31,0xC6,0x3D,0xDE,0x1F,0xFC,0x0F,0xF8,0x07,0xF0,0x03,0xE0,0x01,0xC0,0x00,0x80,  // P\n0x00,0x00,0x03,0x80,0x07,0x00,0x0E,0x00,0x1E,0x00,0x3C,0x00,0x7F,0xFE,0xFF,0xFE,0x7F,0xFE,0x3C,0x00,0x1E,0x00,0x0E,0x00,0x07,0x00,0x03,0x80,0x00,0x00,0x00,0x00,  // Q\n0x00,0x00,0x01,0xC0,0x00,0xE0,0x00,0x70,0x00,0x78,0x00,0x3C,0x7F,0xFE,0x7F,0xFF,0x7F,0xFE,0x00,0x3C,0x00,0x78,0x00,0x70,0x00,0xE0,0x01,0xC0,0x00,0x00,0x00,0x00,  // R\n0x00,0x00,0x00,0x08,0x00,0x10,0x00,0x20,0x00,0x40,0x00,0x80,0x01,0x80,0x33,0x00,0x1A,0x00,0x0E,0x00,0x0C,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // S\n0x00,0x00,0x20,0x00,0x38,0x00,0x24,0x00,0x23,0x00,0x20,0xC0,0x20,0x20,0x20,0x18,0x20,0x08,0x20,0x30,0x20,0xC0,0x21,0x00,0x26,0x00,0x38,0x00,0x20,0x00,0x00,0x00,  // T\n0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x38,0x10,0x38,0x10,0x2C,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x10,0x08,0x10,0x08,0x0C,0x30,0x03,0xC0,0x00,0x00,0x00,0x00,  // U\n0x00,0x00,0x00,0x00,0x1C,0x00,0x1C,0x00,0x1C,0x08,0x34,0x08,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x10,0x08,0x10,0x08,0x0C,0x30,0x03,0xC0,0x00,0x00,0x00,0x00,  // V\n0x00,0x00,0x00,0x00,0x1C,0x70,0x32,0x98,0x21,0x08,0x21,0x08,0x20,0x08,0x20,0x08,0x10,0x10,0x10,0x10,0x08,0x20,0x04,0x40,0x02,0x80,0x03,0x00,0x01,0x00,0x00,0x00,  // W\n0x00,0x00,0x00,0x00,0x07,0xF0,0x08,0x08,0x13,0xE4,0x24,0x12,0x24,0x02,0x24,0x02,0x24,0x02,0x24,0x12,0x23,0xE2,0x10,0x04,0x08,0x08,0x07,0xF0,0x00,0x00,0x00,0x00,  // X\n0x00,0x00,0x00,0x00,0x07,0xE0,0x08,0x10,0x17,0xC8,0x24,0x24,0x24,0x24,0x27,0xC4,0x24,0x84,0x24,0x44,0x24,0x24,0x10,0x08,0x08,0x10,0x07,0xE0,0x00,0x00,0x00,0x00,  // Y\n0x00,0x00,0x00,0x00,0x07,0xC0,0x08,0x20,0x10,0x10,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x20,0x08,0x10,0x10,0x10,0x10,0x0C,0x60,0x3E,0xF8,0x00,0x00,0x00,0x00,  // Z\n0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x02,0x80,0x02,0x80,0x02,0x80,0x03,0x00,0x02,0x00,0x02,0x00,0x06,0x00,0x02,0x00,0x02,0x80,0x03,0x80,0x00,0x00,0x00,0x00,  // [\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x70,0x09,0x88,0x08,0x88,0x09,0x88,0x06,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // <backslash>\n0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x40,0x80,0x60,0x9C,0x50,0xA2,0x48,0xA2,0x48,0xA2,0x44,0xA2,0x42,0x9C,0x41,0x80,0x40,0xBE,0x40,0x80,0x00,0x00,0x00,0x00,  // ]\n0x00,0x80,0x01,0xC0,0x01,0x40,0x02,0x20,0x04,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // ^\n0x00,0x00,0x00,0x00,0x00,0x00,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,  // _\n\n0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0xE6,0x00,0xC6,0x00,0xCE,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // `\n0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0xFE,0x01,0xC2,0x03,0x80,0x03,0x80,0x03,0xF8,0x03,0xF8,0x07,0x00,0x06,0x00,0x0F,0xFC,0x07,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,  // a\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x30,0x03,0x30,0x02,0x20,0x06,0x60,0x06,0x68,0x06,0xE8,0x07,0xB0,0x04,0x00,0x0C,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,  // b\n0x00,0x00,0x03,0xF8,0x06,0x18,0x0C,0x08,0x0C,0x00,0x1F,0xF0,0x1F,0xF0,0x08,0x00,0x1F,0xE0,0x0C,0x00,0x0C,0x08,0x07,0x18,0x03,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,  // c\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x80,0x03,0x80,0x07,0x80,0x0F,0x80,0x0F,0x80,0x07,0x80,0x03,0x80,0x01,0x80,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,  // d\n0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x03,0x00,0x03,0x80,0x03,0xC0,0x03,0xE0,0x03,0xE0,0x03,0xC0,0x03,0x80,0x03,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // e\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x07,0x80,0x0F,0xC0,0x1F,0xE0,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // f\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x1F,0xE0,0x0F,0xC0,0x07,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // g\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x06,0x30,0x0E,0x70,0x1E,0xF0,0x3F,0xF0,0x3F,0xF0,0x1E,0xF0,0x0E,0x70,0x06,0x30,0x02,0x10,0x00,0x00,0x00,0x00,  // h\n0x00,0x00,0x7F,0xFC,0x43,0x82,0x43,0xC2,0x47,0xC2,0x43,0x82,0x40,0x02,0x47,0xC2,0x43,0xC2,0x43,0xC2,0x43,0xC2,0x43,0xC2,0x43,0xC2,0x40,0x02,0x7F,0xFC,0x00,0x00,  // i\n0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x40,0x0C,0x60,0x0E,0x70,0x0F,0x78,0x0F,0xFC,0x0F,0xFC,0x0F,0x78,0x0E,0x70,0x0C,0x60,0x08,0x40,0x00,0x00,0x00,0x00,0x00,0x00,  // j\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x84,0x31,0x8C,0x33,0x9C,0x37,0xBC,0x3F,0xFC,0x3F,0xFC,0x37,0xBC,0x33,0x9C,0x31,0x8C,0x30,0x84,0x00,0x00,0x00,0x00,  // k\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x21,0x0C,0x31,0x8C,0x39,0xCC,0x3D,0xEC,0x3F,0xFC,0x3F,0xFC,0x3D,0xEC,0x39,0xCC,0x31,0x8C,0x21,0x0C,0x00,0x00,0x00,0x00,  // l\n0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0xC0,0x0C,0xC0,0x0C,0xC0,0x0C,0xC0,0x0C,0xC0,0x0C,0xC0,0x0C,0xC0,0x0C,0xC0,0x0C,0xC0,0x0C,0xC0,0x0C,0xC0,0x00,0x00,0x00,0x00,  // m\n0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFC,0x0F,0xFC,0x0F,0xFC,0x0F,0xFC,0x0F,0xFC,0x0F,0xFC,0x0F,0xFC,0x0F,0xFC,0x0F,0xFC,0x0F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,  // n\n0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x07,0xF8,0x07,0xF8,0x0F,0xFC,0x0F,0xFC,0x0F,0xFC,0x0F,0xFC,0x07,0xF8,0x07,0xF8,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,  // o\n\n0x00,0x00,0x08,0x00,0x0C,0x00,0x0E,0x00,0x0F,0x00,0x0F,0xC0,0x0F,0xC0,0x0F,0xC0,0x0F,0xC0,0x0F,0xC0,0x0F,0x00,0x0E,0x00,0x0C,0x00,0x08,0x00,0x00,0x00,0x00,0x00,  // p\n0x00,0x00,0x00,0x08,0x00,0x38,0x00,0x78,0x01,0xE8,0x03,0xC8,0x03,0x08,0x02,0x08,0x02,0x78,0x02,0xF8,0x02,0xF0,0x1E,0x00,0x3E,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,  // q\n0x00,0x00,0x04,0x20,0x1C,0x70,0x1C,0x30,0x1C,0x38,0x30,0x18,0x30,0x18,0x30,0x18,0x30,0x18,0x38,0x70,0x18,0x70,0x1C,0x70,0x08,0x40,0x00,0x00,0x00,0x00,0x00,0x00,  // r\n0x00,0x00,0x00,0x00,0x01,0x80,0x03,0x80,0x03,0x80,0x03,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x03,0x00,0x03,0x80,0x03,0x80,0x01,0x80,0x00,0x00,0x00,0x00,  // s\n0x00,0x00,0x06,0x00,0x1C,0x18,0x38,0x20,0x34,0x3A,0x6E,0x7C,0xE7,0x70,0x43,0xE0,0x01,0xC0,0x03,0xE0,0x07,0x70,0x1E,0x38,0x2C,0x1C,0x04,0x0E,0x18,0x04,0x00,0x00,  // t\n0x03,0x00,0x07,0x80,0x0F,0xC0,0x1F,0xE0,0x3F,0xF0,0x7F,0xF8,0xFF,0xFC,0xFF,0xFC,0x7F,0xF8,0x3F,0xF0,0x1F,0xE0,0x0F,0xC0,0x07,0x80,0x03,0x00,0x00,0x00,0x00,0x00,  // u\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x70,0x0F,0xF8,0x3F,0xFE,0x1C,0x1C,0x0F,0xF8,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // v\n0x00,0x00,0x00,0x00,0x03,0xE0,0x0C,0x18,0x18,0x0C,0x13,0xC4,0x22,0x22,0x22,0x22,0x22,0x22,0x23,0xC2,0x22,0x02,0x12,0x04,0x1A,0x0C,0x0C,0x18,0x03,0xE0,0x00,0x00,  // w\n0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFC,0x1F,0xFE,0x1F,0xFF,0x3F,0xFF,0x3F,0xFF,0x3F,0xFF,0x1F,0xFF,0x0F,0xFF,0x1F,0xF8,0x1C,0x00,0x38,0x00,0x00,0x00,0x00,0x00,  // x\n0x00,0x00,0x02,0x00,0x01,0x00,0x01,0xC0,0x00,0xE0,0x20,0xE0,0x30,0xE0,0xBF,0xFF,0x30,0xE0,0x20,0xE0,0x00,0xE0,0x01,0x80,0x01,0xC0,0x03,0x00,0x00,0x00,0x00,0x00,  // y\n0x00,0x00,0x00,0x00,0x78,0x00,0x4E,0x00,0xB5,0x00,0xBA,0xC0,0x89,0xB0,0x78,0x48,0x26,0x38,0x19,0x94,0x06,0x64,0x01,0xA2,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,  // z\n0x00,0x00,0x01,0x80,0x01,0x80,0x01,0x80,0x0F,0xF0,0x0F,0xF0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,  // {\n0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x78,0x00,0x3F,0x00,0x1F,0xE0,0x0F,0xFC,0x08,0x0E,0x10,0x70,0x23,0x80,0x4C,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // |\n0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x50,0x0F,0x78,0x7C,0x07,0xE0,0x03,0x80,0x07,0xE0,0x78,0x7C,0x50,0x0F,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // }\n0x00,0x00,0x00,0x80,0x00,0xC0,0x00,0xC0,0x01,0xE0,0x03,0x30,0x07,0x38,0x1E,0x1E,0x20,0x03,0x1F,0x3C,0x03,0x30,0x01,0xA0,0x00,0xC0,0x00,0xC0,0x00,0x80,0x00,0x00,  // ~\n};\n\n\nsFONT FontSYMs = {\n  FontSYMs_Table,\n  16,\t// Width\n  16,\t// Height\n  0x20,\t// First char ' '\n  0x7E\t// Last char '~'\n};"
  },
  {
    "path": "fontSYM32.c",
    "content": "// Various Symbols 32x32\n// Font type    : Full (95 characters)\n\n#include \"fonts.h\"\n\nconst uint8_t FontSYM_Table [] =\n{\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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>\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // !\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x38,0x00,0x3F,0xFC,0x78,0x00,0x7F,0xFE,0xF8,0x01,0xF8,0x1F,0xF0,0x03,0xE0,0x07,0xE0,0x03,0x80,0x07,0xC0,0x07,0x00,0x0F,0xE0,0x0F,0x00,0x1F,0xF0,0x0E,0x00,0x3E,0x70,0x0E,0x00,0x7C,0x70,0x1C,0x00,0xF8,0x38,0x1C,0x01,0xF0,0x38,0x1C,0x03,0xE0,0x38,0x1C,0x07,0xC0,0x38,0x1C,0x0F,0x80,0x38,0x1C,0x1F,0x00,0x38,0x0E,0x3E,0x00,0x70,0x0E,0x7C,0x00,0x70,0x0F,0xF8,0x00,0xF0,0x07,0xF0,0x00,0xE0,0x03,0xE0,0x01,0xC0,0x07,0xE0,0x07,0xC0,0x0F,0xF8,0x1F,0x80,0x1F,0x7F,0xFE,0x00,0x1E,0x3F,0xFC,0x00,0x1C,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // \"\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x03,0xC0,0xF0,0x0F,0x03,0xC0,0xF0,0x0F,0x03,0xC0,0xF0,0x0F,0x03,0xC0,0xF0,0x0F,0x03,0xC0,0xF0,0x0F,0x03,0xC0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // #\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x40,0x00,0x1F,0x00,0xE0,0x00,0x19,0x81,0xE0,0x00,0x19,0x81,0xC0,0x00,0x19,0x83,0xC0,0x00,0x19,0x83,0x80,0x00,0x19,0x87,0x80,0x00,0x19,0x87,0x00,0x00,0x19,0x8F,0x00,0x00,0x19,0x8E,0x00,0x00,0x0F,0x1C,0x00,0x00,0x0F,0x1C,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x71,0xE1,0xE0,0x00,0xF3,0xE3,0xE0,0x00,0xE3,0x33,0x30,0x01,0xE3,0x33,0x30,0x01,0xC3,0x33,0x30,0x03,0xC3,0x33,0x30,0x03,0x83,0x33,0x30,0x07,0x83,0x33,0x30,0x07,0x03,0x33,0x30,0x0F,0x03,0x33,0x30,0x0E,0x01,0xE1,0xE0,0x04,0x01,0xE1,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // $\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0xF0,0x07,0x00,0x01,0xF8,0x0F,0x00,0x03,0x0C,0x1E,0x00,0x03,0x0C,0x1C,0x00,0x03,0x0C,0x3C,0x00,0x03,0x0C,0x38,0x00,0x03,0x0C,0x70,0x00,0x03,0x0C,0xF0,0x00,0x01,0xF8,0xE0,0x00,0x00,0xF1,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0x80,0x00,0x00,0x07,0x80,0x00,0x00,0x0F,0x1E,0x00,0x00,0x0E,0x3F,0x00,0x00,0x1E,0x61,0x80,0x00,0x1C,0x61,0x80,0x00,0x38,0x61,0x80,0x00,0x78,0x61,0x80,0x00,0x70,0x61,0x80,0x00,0xF0,0x61,0x80,0x01,0xE0,0x3F,0x00,0x01,0xC0,0x1E,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // %\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xE0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x1C,0x18,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x07,0xF8,0x00,0x00,0x0F,0xF8,0x00,0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00,0x00,0x18,0x38,0x00,0x00,0x0F,0xF8,0x00,0x00,0x07,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // &\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x1C,0xE0,0x00,0x00,0x18,0x70,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0xC0,0x00,0x00,0x03,0x80,0x00,0x00,0x07,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x1F,0xF0,0x00,0x00,0x1F,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,  // '\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xE0,0x00,0x00,0x07,0xF0,0x00,0x00,0x0E,0x38,0x00,0x00,0x0C,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,0x00,0x0C,0x18,0x00,0x00,0x0E,0x38,0x00,0x00,0x07,0xF0,0x00,0x00,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,0x00,0x00,0x00,  // (\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x03,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xC0,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x03,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xC0,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // )\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x06,0x60,0x00,0x00,0x06,0x60,0x00,0x00,0x06,0x60,0x00,0x00,0x06,0x60,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x06,0x60,0x00,0x00,0x06,0x60,0x00,0x00,0x06,0x60,0x00,0x00,0x06,0x60,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // *\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x00,0x00,0x7F,0xF0,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0xC0,0x00,0x00,0x01,0xC0,0x00,0x0F,0x01,0x80,0x00,0x0F,0x81,0x80,0x00,0x01,0x83,0x80,0x00,0x01,0x83,0x00,0x00,0x01,0x83,0x00,0x00,0x00,0xC3,0x00,0x00,0x00,0xC7,0x00,0x00,0x00,0xC6,0x00,0x00,0x00,0xC6,0x00,0x00,0x00,0x6E,0x00,0x00,0x00,0x6C,0x00,0x00,0x00,0x6C,0x00,0x00,0x00,0x6C,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // +\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x01,0xE0,0x07,0x80,0x00,0xE0,0x07,0x00,0x00,0xF0,0x0F,0x00,0x00,0x70,0x0E,0x00,0x00,0x78,0x1E,0x00,0x00,0x38,0x1C,0x00,0x00,0x3C,0x3C,0x00,0x00,0x1C,0x38,0x00,0x00,0x0E,0x70,0x00,0x01,0xFE,0x7F,0x80,0x01,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x80,0x00,0x07,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x01,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x80,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // ,\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x0F,0xF8,0x00,0x00,0x1E,0x1C,0x00,0x00,0x3C,0x0C,0x00,0x00,0x38,0x0C,0x00,0x00,0x38,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x1F,0xF0,0x00,0x00,0x38,0x78,0x00,0x00,0x30,0x3C,0x00,0x00,0x30,0x1E,0x00,0x00,0x38,0x0E,0x00,0x00,0x3C,0x0E,0x00,0x00,0x1E,0x0E,0x00,0x00,0x0F,0x1C,0x00,0x00,0x07,0xF8,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x1E,0x00,0x00,0x18,0x0E,0x00,0x00,0x18,0x0E,0x00,0x00,0x1C,0x3C,0x00,0x00,0x0F,0xF8,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // -\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // .\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x0F,0xFE,0x00,0x00,0x3F,0xFF,0x00,0x00,0x7F,0xFF,0x80,0x00,0xF0,0xE3,0xC0,0x00,0xE0,0xE1,0xC0,0x01,0xC0,0xE1,0xC0,0x01,0x80,0xE0,0x00,0x03,0x80,0xE0,0x00,0x03,0x80,0xE0,0x00,0x03,0x80,0xE0,0x00,0x03,0x80,0xE0,0x00,0x03,0x80,0xE0,0x00,0x03,0x80,0xE0,0x00,0x03,0x80,0xE0,0x00,0x01,0xC0,0xE0,0x00,0x01,0xC0,0xE1,0xC0,0x00,0xE0,0xE1,0xC0,0x00,0xF0,0xE3,0xC0,0x00,0x7F,0xFF,0x80,0x00,0x3F,0xFF,0x00,0x00,0x0F,0xFE,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // /\n\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x3F,0xFC,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x80,0x03,0xF8,0x0F,0xC0,0x07,0xF0,0x07,0xE0,0x0F,0xE3,0xE3,0xF0,0x0F,0xE7,0xF3,0xF0,0x1F,0xC7,0xF1,0xF8,0x1F,0xC7,0xF1,0xF8,0x1F,0xC7,0xF1,0xF8,0x3F,0xC7,0xF1,0xFC,0x3F,0xC7,0xF1,0xFC,0x3F,0xC7,0xF1,0xFC,0x3F,0xC7,0xF1,0xFC,0x3F,0xC7,0xF1,0xFC,0x3F,0xC7,0xF1,0xFC,0x1F,0xC7,0xF1,0xF8,0x1F,0xC7,0xF1,0xF8,0x1F,0xC7,0xF1,0xF8,0x0F,0xE7,0xF3,0xF0,0x0F,0xF3,0xE3,0xF0,0x07,0xF0,0x07,0xE0,0x03,0xF8,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,  // 0\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x3F,0xFC,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x80,0x03,0xF8,0x3F,0xC0,0x07,0xF0,0x3F,0xE0,0x0F,0xE0,0x3F,0xF0,0x0F,0xC0,0x3F,0xF0,0x1F,0xC0,0x3F,0xF8,0x1F,0xFC,0x3F,0xF8,0x1F,0xFC,0x3F,0xF8,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x1F,0xFC,0x3F,0xF8,0x1F,0xFC,0x3F,0xF8,0x1F,0xFC,0x3F,0xF8,0x0F,0x80,0x01,0xF0,0x0F,0x80,0x01,0xF0,0x07,0x80,0x01,0xE0,0x03,0x80,0x01,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,  // 1\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x3F,0xFC,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x80,0x03,0xF0,0x1F,0xC0,0x07,0xE0,0x0F,0xE0,0x0F,0xC0,0x07,0xF0,0x0F,0xC7,0xC3,0xF0,0x1F,0xCF,0xE3,0xF8,0x1F,0xCF,0xF3,0xF8,0x1F,0xFF,0xF3,0xF8,0x3F,0xFF,0xF3,0xFC,0x3F,0xFF,0xE3,0xFC,0x3F,0xFF,0xC7,0xFC,0x3F,0xFF,0x8F,0xFC,0x3F,0xFF,0x1F,0xFC,0x3F,0xFE,0x3F,0xFC,0x1F,0xFC,0x7F,0xF8,0x1F,0xF8,0xFF,0xF8,0x1F,0xF1,0xFF,0xF8,0x0F,0xE3,0xFF,0xF0,0x0F,0xC0,0x03,0xF0,0x07,0xC0,0x03,0xE0,0x03,0xC0,0x03,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,  // 2\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x3F,0xFC,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFC,0x3F,0x80,0x03,0xF0,0x0F,0xC0,0x07,0xE0,0x07,0xE0,0x0F,0xE3,0xC3,0xF0,0x0F,0xE7,0xF1,0xF0,0x1F,0xFF,0xF1,0xF8,0x1F,0xFF,0xF1,0xF8,0x1F,0xFF,0xF1,0xF8,0x3F,0xFF,0xE3,0xFC,0x3F,0xFE,0x07,0xFC,0x3F,0xFE,0x07,0xFC,0x3F,0xFE,0x03,0xFC,0x3F,0xFF,0xE1,0xFC,0x3F,0xFF,0xF1,0xFC,0x1F,0xFF,0xF1,0xF8,0x1F,0xFF,0xF1,0xF8,0x1F,0xFF,0xF1,0xF8,0x0F,0xE7,0xF1,0xF0,0x0F,0xE3,0xC3,0xF0,0x07,0xE0,0x07,0xE0,0x03,0xF0,0x0F,0xC0,0x01,0xFC,0x1F,0x80,0x00,0xFF,0xFF,0x00,0x00,0x3F,0xFC,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 3\n0x00,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,0x8F,0xC0,0x07,0xFF,0x0F,0xE0,0x0F,0xFE,0x0F,0xF0,0x0F,0xFC,0x0F,0xF0,0x1F,0xF8,0x0F,0xF8,0x1F,0xF0,0x8F,0xF8,0x1F,0xE1,0x8F,0xF8,0x3F,0xC3,0x8F,0xFC,0x3F,0x87,0x8F,0xFC,0x3F,0x0F,0x8F,0xFC,0x3F,0x1F,0x8F,0xFC,0x3F,0x1F,0x8F,0xFC,0x3F,0x1F,0x8F,0xFC,0x1F,0x00,0x01,0xF8,0x1F,0x00,0x01,0xF8,0x1F,0x00,0x01,0xF8,0x0F,0xFF,0x8F,0xF0,0x0F,0xFF,0x8F,0xF0,0x07,0xFF,0x8F,0xE0,0x03,0xFF,0x8F,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,  // 4\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x3F,0xFC,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x80,0x03,0xC0,0x03,0xC0,0x07,0xC0,0x03,0xE0,0x0F,0xC0,0x03,0xF0,0x0F,0xC7,0xFF,0xF0,0x1F,0xC7,0xFF,0xF8,0x1F,0xC7,0xFF,0xF8,0x1F,0xC7,0xFF,0xF8,0x3F,0xC0,0x0F,0xFC,0x3F,0xC0,0x07,0xFC,0x3F,0xE0,0x03,0xFC,0x3F,0xFF,0xC3,0xFC,0x3F,0xFF,0xE3,0xFC,0x3F,0xFF,0xE3,0xFC,0x1F,0xFF,0xE3,0xF8,0x1F,0xC7,0xE3,0xF8,0x1F,0xC7,0xE3,0xF8,0x0F,0xC3,0xC3,0xF0,0x0F,0xC0,0x03,0xF0,0x07,0xE0,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,  // 5\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x3F,0xFC,0x00,0x00,0xFF,0xFF,0x00,0x01,0xF8,0x0F,0x80,0x03,0xF0,0x07,0xC0,0x07,0xE0,0x03,0xE0,0x0F,0xC7,0xE3,0xF0,0x0F,0xCF,0xF1,0xF0,0x1F,0x8F,0xF1,0xF8,0x1F,0x8F,0xFF,0xF8,0x1F,0x8F,0xFF,0xF8,0x3F,0x88,0x0F,0xFC,0x3F,0x80,0x07,0xFC,0x3F,0x83,0xC3,0xFC,0x3F,0x87,0xE3,0xFC,0x3F,0x8F,0xF1,0xFC,0x3F,0x8F,0xF1,0xFC,0x1F,0x8F,0xF1,0xF8,0x1F,0x8F,0xF1,0xF8,0x1F,0x8F,0xF1,0xF8,0x0F,0xC7,0xE1,0xF0,0x0F,0xC3,0xC3,0xF0,0x07,0xE0,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,  // 6\n0x00,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,0x07,0xC0,0x01,0xE0,0x0F,0xC0,0x01,0xF0,0x0F,0xC0,0x01,0xF0,0x1F,0xFF,0xF1,0xF8,0x1F,0xFF,0xE1,0xF8,0x1F,0xFF,0xE3,0xF8,0x3F,0xFF,0xC7,0xFC,0x3F,0xFF,0xC7,0xFC,0x3F,0xFF,0x8F,0xFC,0x3F,0xFF,0x8F,0xFC,0x3F,0xFF,0x1F,0xFC,0x3F,0xFF,0x1F,0xFC,0x1F,0xFF,0x3F,0xF8,0x1F,0xFE,0x3F,0xF8,0x1F,0xFE,0x3F,0xF8,0x0F,0xFC,0x7F,0xF0,0x0F,0xFC,0x7F,0xF0,0x07,0xF8,0xFF,0xE0,0x03,0xF8,0xFF,0xC0,0x01,0xF8,0xFF,0x80,0x00,0xFF,0xFF,0x00,0x00,0x3F,0xFC,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 7\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x3F,0xFC,0x00,0x00,0xFF,0xFF,0x00,0x01,0xF0,0x1F,0x80,0x03,0xE0,0x0F,0xC0,0x07,0xC3,0x87,0xE0,0x0F,0x87,0xC3,0xF0,0x0F,0x8F,0xE3,0xF0,0x1F,0x8F,0xE3,0xF8,0x1F,0x8F,0xE3,0xF8,0x1F,0x8F,0xE3,0xF8,0x3F,0xC7,0xC7,0xFC,0x3F,0xC3,0x8F,0xFC,0x3F,0xF0,0x1F,0xFC,0x3F,0xE0,0x0F,0xFC,0x3F,0xC3,0x87,0xFC,0x3F,0x87,0xC3,0xFC,0x1F,0x8F,0xE3,0xF8,0x1F,0x8F,0xE3,0xF8,0x1F,0x8F,0xE3,0xF8,0x0F,0x8F,0xE3,0xF0,0x0F,0x87,0xC3,0xF0,0x07,0xC3,0x87,0xE0,0x03,0xE0,0x0F,0xC0,0x01,0xF0,0x1F,0x80,0x00,0xFF,0xFF,0x00,0x00,0x3F,0xFC,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 8\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x3F,0xFC,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x80,0x03,0xF8,0x1F,0xC0,0x07,0xF0,0x0F,0xE0,0x0F,0xE3,0xC7,0xF0,0x0F,0xC7,0xE3,0xF0,0x1F,0xCF,0xF1,0xF8,0x1F,0xCF,0xF1,0xF8,0x1F,0xCF,0xF1,0xF8,0x3F,0xCF,0xF1,0xFC,0x3F,0xCF,0xF1,0xFC,0x3F,0xC7,0xE1,0xFC,0x3F,0xE3,0xC1,0xFC,0x3F,0xF0,0x01,0xFC,0x3F,0xF8,0x11,0xFC,0x1F,0xFF,0xF1,0xF8,0x1F,0xFF,0xF1,0xF8,0x1F,0xCF,0xF1,0xF8,0x0F,0xCF,0xE3,0xF0,0x0F,0xC7,0xC7,0xF0,0x07,0xE0,0x0F,0xE0,0x03,0xF0,0x1F,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,  // 9\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFE,0x00,0x3F,0xFF,0xFF,0x00,0x7F,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x01,0xFF,0xDF,0x7F,0x03,0xFF,0x8E,0x3F,0x07,0xFF,0x04,0x1F,0x0F,0xFE,0x00,0x0F,0x1F,0xFF,0x00,0x1F,0x3F,0xFF,0x80,0x3F,0x7F,0xFF,0xC0,0x7F,0x7F,0xFF,0x80,0x3F,0x3F,0xFF,0x00,0x1F,0x1F,0xFE,0x00,0x0F,0x0F,0xFF,0x04,0x1F,0x07,0xFF,0x8E,0x3F,0x03,0xFF,0xDF,0x7F,0x01,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x7F,0xFF,0xFF,0x00,0x3F,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // :\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x3F,0xFC,0x00,0x00,0x7F,0xFE,0x00,0x01,0xF8,0x1F,0x80,0x03,0xE0,0x07,0xC0,0x03,0x80,0x01,0xC0,0x07,0x00,0x00,0xE0,0x0F,0x00,0x00,0xF0,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x1C,0x00,0x00,0x38,0x1C,0x00,0x00,0x38,0x1C,0x00,0x00,0x38,0x1C,0x00,0x00,0x38,0x1C,0x00,0x00,0x38,0x1C,0x00,0x00,0x38,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0F,0x00,0x00,0xF0,0x07,0x00,0x00,0xE0,0x03,0x80,0x01,0xC0,0x03,0xE0,0x07,0xC0,0x01,0xF8,0x1F,0x80,0x00,0x7F,0xFE,0x00,0x00,0x3F,0xFC,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // ;\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x19,0xFF,0xFF,0x98,0x19,0xFF,0xFF,0x98,0x19,0x80,0x01,0x98,0x19,0x80,0x01,0x98,0x19,0xFF,0xFF,0x98,0x19,0xFF,0xFF,0x98,0x19,0x80,0x01,0x98,0x19,0x80,0x01,0x98,0x19,0xFF,0xFF,0x98,0x19,0xFF,0xFF,0x98,0x18,0x00,0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x7F,0xFE,0x18,0x18,0x7F,0xFE,0x18,0x18,0x67,0xFE,0x18,0x18,0x67,0xFE,0x18,0x18,0x67,0xFE,0x18,0x18,0x67,0xFE,0x18,0x18,0x67,0xFE,0x18,0x18,0x7F,0xFE,0x18,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // <\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x0E,0x70,0x00,0x00,0x0E,0x70,0x00,0x00,0x1C,0x38,0x00,0x00,0x1C,0x38,0x00,0x00,0x38,0x1C,0x00,0x00,0x38,0x1C,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0xE0,0x07,0x00,0x00,0xE0,0x07,0x00,0x01,0xC0,0x03,0x80,0x01,0xC0,0x03,0x80,0x03,0x80,0x01,0xC0,0x03,0x80,0x01,0xC0,0x07,0x00,0x00,0xE0,0x07,0x00,0x00,0xE0,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x1F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // =\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x07,0x00,0x00,0xE0,0x07,0x00,0x00,0xE0,0x03,0x80,0x01,0xC0,0x03,0x80,0x01,0xC0,0x01,0xC0,0x03,0x80,0x01,0xC0,0x03,0x80,0x00,0xE0,0x07,0x00,0x00,0xE0,0x07,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x38,0x1C,0x00,0x00,0x38,0x1C,0x00,0x00,0x1C,0x38,0x00,0x00,0x1C,0x38,0x00,0x00,0x0E,0x70,0x00,0x00,0x0E,0x70,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // >\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0xF8,0x00,0x00,0x03,0xF8,0x00,0x00,0x0F,0xF8,0x00,0x00,0x3F,0x38,0x00,0x00,0xFC,0x38,0x00,0x03,0xF0,0x38,0x00,0x0F,0xC0,0x38,0x00,0x3F,0x00,0x38,0x00,0xFC,0x00,0x38,0x03,0xF0,0x00,0x38,0x0F,0xC0,0x00,0x38,0x1F,0x00,0x00,0x38,0x1F,0x00,0x00,0x38,0x0F,0xC0,0x00,0x38,0x03,0xF0,0x00,0x38,0x00,0xFC,0x00,0x38,0x00,0x3F,0x00,0x38,0x00,0x0F,0xC0,0x38,0x00,0x03,0xF0,0x38,0x00,0x00,0xFC,0x38,0x00,0x00,0x3F,0x38,0x00,0x00,0x0F,0xF8,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // ?\n\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x1F,0xF0,0x00,0x00,0x1C,0xFC,0x00,0x00,0x1C,0x3F,0x00,0x00,0x1C,0x0F,0xC0,0x00,0x1C,0x03,0xF0,0x00,0x1C,0x00,0xFC,0x00,0x1C,0x00,0x3F,0x00,0x1C,0x00,0x0F,0xC0,0x1C,0x00,0x03,0xF0,0x1C,0x00,0x00,0xF8,0x1C,0x00,0x00,0xF8,0x1C,0x00,0x03,0xF0,0x1C,0x00,0x0F,0xC0,0x1C,0x00,0x3F,0x00,0x1C,0x00,0xFC,0x00,0x1C,0x03,0xF0,0x00,0x1C,0x0F,0xC0,0x00,0x1C,0x3F,0x00,0x00,0x1C,0xFC,0x00,0x00,0x1F,0xF0,0x00,0x00,0x1F,0xC0,0x00,0x00,0x1F,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // @\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0C,0x00,0x00,0x30,0x0D,0xC0,0x03,0xB0,0x0D,0xE0,0x07,0xB0,0x0D,0xF0,0x0F,0xB0,0x0C,0xF8,0x1F,0x30,0x0C,0x7C,0x3E,0x30,0x0C,0x3E,0x7C,0x30,0x0C,0x1E,0x78,0x30,0x0C,0x0F,0xF0,0x30,0x0C,0x03,0xC0,0x30,0x0C,0x03,0xC0,0x30,0x0C,0x0F,0xF0,0x30,0x0C,0x1E,0x78,0x30,0x0C,0x3E,0x7C,0x30,0x0C,0x7C,0x3E,0x30,0x0C,0xF8,0x1F,0x30,0x0D,0xF0,0x0F,0xB0,0x0D,0xE0,0x07,0xB0,0x0D,0xC0,0x03,0xB0,0x0C,0x00,0x00,0x30,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // A\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0C,0x00,0x00,0x30,0x0C,0x00,0x01,0xB0,0x0C,0x00,0x03,0x30,0x0C,0x00,0x06,0x30,0x0C,0x00,0x0E,0x30,0x0C,0x00,0x1C,0x30,0x0C,0x00,0x18,0x30,0x0C,0x00,0x38,0x30,0x0C,0x00,0x70,0x30,0x0C,0x00,0xE0,0x30,0x0C,0x01,0xC0,0x30,0x0C,0x01,0xC0,0x30,0x0C,0xC3,0x80,0x30,0x0D,0xE3,0x80,0x30,0x0C,0xE7,0x00,0x30,0x0C,0x77,0x00,0x30,0x0C,0x3E,0x00,0x30,0x0C,0x1E,0x00,0x30,0x0C,0x0C,0x00,0x30,0x0C,0x00,0x00,0x30,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // B\n0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x3E,0x00,0x00,0x7C,0x37,0x00,0x00,0xEC,0x33,0x80,0x01,0xCC,0x31,0xC0,0x03,0x8C,0x30,0xE0,0x07,0x0C,0x30,0x70,0x0E,0x0C,0x30,0x38,0x1C,0x0C,0x30,0x3C,0x3C,0x0C,0x30,0x7E,0x7E,0x0C,0x30,0xE7,0xE7,0x0C,0x31,0xC3,0xC3,0x8C,0x33,0x81,0x81,0xCC,0x37,0x00,0x00,0xEC,0x3E,0x00,0x00,0x7C,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // C\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0E,0x00,0x00,0x70,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // D\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFE,0x00,0x00,0x3F,0xFF,0x00,0x00,0x7F,0xFF,0x80,0x00,0xF0,0x03,0xC0,0x00,0xE0,0x01,0xC0,0x01,0xC0,0x01,0xC0,0x01,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x3F,0xFF,0xF0,0x00,0x3F,0xFF,0xF0,0x00,0x3F,0xFF,0xF0,0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x1F,0xFF,0x80,0x00,0x1F,0xFF,0x80,0x00,0x1F,0xFF,0x80,0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x01,0xC0,0x00,0x00,0x01,0xC0,0x01,0xC0,0x00,0xE0,0x01,0xC0,0x00,0xF0,0x03,0xC0,0x00,0x7F,0xFF,0x80,0x00,0x3F,0xFF,0x00,0x00,0x0F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // E\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF0,0x00,0x00,0x7F,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x00,0xFF,0x80,0x00,0x01,0xFF,0x00,0x00,0x03,0xFE,0x00,0x00,0x03,0xFC,0x00,0x00,0x07,0xF8,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x1F,0xC0,0x00,0x00,0x1F,0xE0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x07,0xF8,0x00,0x00,0x03,0xFC,0x00,0x00,0x01,0xFE,0x00,0x00,0x03,0xFC,0x00,0x00,0x07,0xF0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x3F,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0xF8,0x00,0x00,0x01,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x07,0x80,0x00,0x00,0x0E,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // F\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0xE0,0x00,0xE0,0x01,0xE0,0x00,0xC0,0x03,0xE0,0x01,0x80,0x03,0x60,0x03,0x80,0x00,0x60,0x07,0x00,0x00,0x60,0x06,0x00,0x00,0x60,0x0C,0x00,0x00,0x60,0x1C,0x00,0x00,0x60,0x38,0x00,0x00,0x60,0x30,0x00,0x00,0x60,0x60,0x00,0x03,0xFC,0xE1,0x80,0x03,0xFD,0xC3,0x80,0x00,0x01,0x87,0x80,0x00,0x03,0x0F,0x80,0x00,0x07,0x0D,0x80,0x00,0x0E,0x19,0x80,0x00,0x0C,0x31,0x80,0x00,0x18,0x71,0x80,0x00,0x38,0x61,0x80,0x00,0x70,0x7F,0xE0,0x00,0x60,0x7F,0xE0,0x00,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // G\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0xC0,0x01,0xC0,0x01,0xC0,0x03,0xC0,0x01,0x80,0x07,0xC0,0x03,0x00,0x06,0xC0,0x07,0x00,0x00,0xC0,0x0E,0x00,0x00,0xC0,0x0C,0x00,0x00,0xC0,0x18,0x00,0x00,0xC0,0x38,0x00,0x00,0xC0,0x70,0x00,0x00,0xC0,0x60,0x00,0x00,0xC0,0xC0,0x00,0x07,0xF9,0xC7,0x80,0x07,0xFB,0x8F,0xC0,0x00,0x03,0x1C,0xE0,0x00,0x06,0x18,0x70,0x00,0x0E,0x00,0x70,0x00,0x1C,0x00,0xE0,0x00,0x18,0x01,0xC0,0x00,0x30,0x03,0x80,0x00,0x70,0x07,0x00,0x00,0xE0,0x0E,0x00,0x00,0xC0,0x1C,0x00,0x01,0x80,0x18,0x00,0x03,0x00,0x1F,0xF0,0x03,0x00,0x1F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // H\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x60,0x01,0xFC,0x00,0xE0,0x03,0x8E,0x00,0xC0,0x03,0x06,0x01,0x80,0x00,0x06,0x03,0x80,0x00,0x06,0x07,0x00,0x00,0x3C,0x06,0x00,0x00,0x3C,0x0C,0x00,0x00,0x06,0x1C,0x00,0x00,0x06,0x38,0x00,0x03,0x06,0x30,0x00,0x03,0x8E,0x60,0x00,0x01,0xFC,0xE1,0x80,0x00,0xF9,0xC3,0x80,0x00,0x01,0x87,0x80,0x00,0x03,0x0F,0x80,0x00,0x07,0x0D,0x80,0x00,0x0E,0x19,0x80,0x00,0x0C,0x31,0x80,0x00,0x18,0x71,0x80,0x00,0x38,0x61,0x80,0x00,0x70,0x7F,0xE0,0x00,0x60,0x7F,0xE0,0x00,0xC0,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // I\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x01,0xC0,0x00,0x00,0x01,0xC0,0x00,0x00,0x01,0xC0,0x00,0x00,0x01,0xC0,0x00,0x00,0x03,0x80,0x00,0x00,0x07,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x1C,0x0C,0x00,0x00,0x1C,0x0C,0x00,0x00,0x0E,0x1C,0x00,0x00,0x07,0xF8,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // J\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x1F,0x03,0x00,0x00,0x3F,0x87,0x00,0x00,0x79,0xCF,0x00,0x00,0xF0,0xFE,0x00,0x00,0xE0,0x7C,0x00,0x00,0xC0,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF3,0xF8,0x00,0x00,0xF7,0xFC,0x00,0x00,0xFF,0xFE,0x00,0x00,0xFE,0x1F,0x00,0x00,0xFC,0x0F,0x00,0x00,0xF8,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // K\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF8,0x00,0x00,0x7F,0xFE,0x00,0x01,0xE0,0x07,0x80,0x03,0x80,0x01,0xC0,0x07,0x00,0x00,0xE0,0x0E,0x00,0x00,0x70,0x0C,0x00,0x00,0x30,0x18,0x78,0x1E,0x18,0x18,0xFC,0x3F,0x18,0x30,0xCC,0x33,0x0C,0x30,0xCC,0x33,0x0C,0x30,0xCC,0x33,0x0C,0x30,0xCC,0x33,0x0C,0x30,0xFC,0x3F,0x0C,0x30,0x78,0x1E,0x0C,0x30,0x00,0x00,0x0C,0x30,0x00,0x00,0x0C,0x31,0x80,0x01,0x8C,0x31,0xC0,0x03,0x8C,0x18,0xF0,0x0F,0x18,0x18,0x7F,0xFE,0x18,0x0C,0x1F,0xF8,0x30,0x0C,0x00,0x00,0x30,0x06,0x00,0x00,0x60,0x07,0x80,0x01,0xE0,0x01,0xE0,0x07,0x80,0x00,0x7F,0xFE,0x00,0x00,0x1F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // L\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF8,0x00,0x00,0x7F,0xFE,0x00,0x01,0xE0,0x07,0x80,0x03,0x80,0x01,0xC0,0x07,0x00,0x00,0xE0,0x0E,0x00,0x00,0x70,0x0C,0x00,0x00,0x30,0x18,0x78,0x1E,0x18,0x18,0xFC,0x3F,0x18,0x30,0xCC,0x33,0x0C,0x30,0xCC,0x33,0x0C,0x30,0xCC,0x33,0x0C,0x30,0xCC,0x33,0x0C,0x30,0xFC,0x3F,0x0C,0x30,0x78,0x1E,0x0C,0x30,0x00,0x00,0x0C,0x30,0x00,0x00,0x0C,0x30,0x1F,0xF8,0x0C,0x30,0x7F,0xFE,0x0C,0x18,0xF0,0x0F,0x18,0x19,0xC0,0x03,0x98,0x0D,0x80,0x01,0xB0,0x0C,0x00,0x00,0x30,0x06,0x00,0x00,0x60,0x07,0x80,0x01,0xE0,0x01,0xE0,0x07,0x80,0x00,0x7F,0xFE,0x00,0x00,0x1F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // M\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF8,0x00,0x00,0x7F,0xFE,0x00,0x01,0xE0,0x07,0x80,0x03,0x80,0x01,0xC0,0x07,0x00,0x00,0xE0,0x0E,0x00,0x00,0x70,0x0C,0x00,0x00,0x30,0x18,0x78,0x1E,0x18,0x18,0xFC,0x3F,0x18,0x30,0xCC,0x33,0x0C,0x30,0xCC,0x33,0x0C,0x30,0xCC,0x33,0x0C,0x30,0xCC,0x33,0x0C,0x30,0xFC,0x3F,0x0C,0x30,0x78,0x1E,0x0C,0x30,0x00,0x00,0x0C,0x30,0x00,0x00,0x0C,0x30,0x00,0x00,0x0C,0x31,0xFF,0xFF,0x8C,0x19,0xFF,0xFF,0x98,0x18,0x00,0x00,0x18,0x0C,0x00,0x00,0x30,0x0C,0x00,0x00,0x30,0x06,0x00,0x00,0x60,0x07,0x80,0x01,0xE0,0x01,0xE0,0x07,0x80,0x00,0x7F,0xFE,0x00,0x00,0x1F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // N\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x0F,0xFC,0x00,0x00,0x1F,0xFE,0x00,0x00,0x3F,0xFF,0x00,0x00,0x7F,0xFF,0x80,0x00,0x7F,0xFF,0x80,0x00,0x7F,0xFF,0x80,0x00,0x73,0xF3,0x80,0x00,0x61,0xE1,0x80,0x00,0x61,0xE1,0x80,0x00,0x73,0x33,0x80,0x00,0x3F,0x3F,0x00,0x00,0x1F,0xFE,0x00,0x00,0x0F,0xFC,0x00,0x01,0xE6,0xD9,0xE0,0x01,0xE6,0xD9,0xE0,0x00,0xE0,0x01,0xC0,0x03,0xF0,0x07,0xF0,0x03,0xFC,0x1F,0xF0,0x00,0x3F,0x7F,0x80,0x00,0x1F,0xF8,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0xC8,0x00,0x00,0x1F,0x9C,0x00,0x01,0xFE,0x3F,0xC0,0x01,0xF8,0x0F,0xC0,0x00,0x70,0x07,0x00,0x00,0xF0,0x07,0x80,0x00,0xF0,0x07,0x80,0x00,0x00,0x00,0x00,  // O\n\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x04,0x07,0xE0,0x20,0x06,0x07,0xE0,0x60,0x07,0x07,0xE0,0xE0,0x07,0x87,0xE1,0xE0,0x07,0xC7,0xE3,0xE0,0x07,0xE7,0xE7,0xE0,0x07,0xF7,0xEF,0xE0,0x07,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x80,0x00,0xFF,0xFF,0x00,0x00,0x7F,0xFE,0x00,0x00,0x3F,0xFC,0x00,0x00,0x1F,0xF8,0x00,0x00,0x0F,0xF0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // P\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x03,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x1F,0xF8,0x00,0x00,0x3F,0xFC,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xE0,0x07,0xF7,0xEF,0xE0,0x07,0xE7,0xE7,0xE0,0x07,0xC7,0xE3,0xE0,0x07,0x87,0xE1,0xE0,0x07,0x07,0xE0,0xE0,0x06,0x07,0xE0,0x60,0x04,0x07,0xE0,0x20,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // Q\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF8,0x00,0x00,0x1F,0xF0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x00,0xFF,0x80,0x00,0x01,0xFF,0x00,0x00,0x03,0xFE,0x00,0x00,0x07,0xFC,0x00,0x00,0x0F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x0F,0xFF,0xFF,0xF8,0x07,0xFC,0x00,0x00,0x03,0xFE,0x00,0x00,0x01,0xFF,0x00,0x00,0x00,0xFF,0x80,0x00,0x00,0x7F,0xC0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x1F,0xF0,0x00,0x00,0x0F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // R\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,0x00,0x00,0x0F,0xF8,0x00,0x00,0x07,0xFC,0x00,0x00,0x03,0xFE,0x00,0x00,0x01,0xFF,0x00,0x00,0x00,0xFF,0x80,0x00,0x00,0x7F,0xC0,0x00,0x00,0x3F,0xE0,0x1F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x7F,0xC0,0x00,0x00,0xFF,0x80,0x00,0x01,0xFF,0x00,0x00,0x03,0xFE,0x00,0x00,0x07,0xFC,0x00,0x00,0x0F,0xF8,0x00,0x00,0x1F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // S\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xC0,0x00,0x00,0x01,0xC0,0x00,0x00,0x03,0x80,0x00,0x00,0x07,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0xC0,0x00,0x00,0x03,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x07,0x00,0x00,0x00,0x0E,0x00,0x00,0x06,0x0C,0x00,0x00,0x07,0x1C,0x00,0x00,0x07,0xB8,0x00,0x00,0x03,0xF8,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // T\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x1F,0xF8,0x00,0x00,0x3F,0xFC,0x00,0x00,0x7F,0xFE,0x00,0x00,0xF0,0x0F,0x00,0x01,0xE0,0x07,0x80,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x83,0xC0,0x03,0xC0,0xC0,0x00,0x03,0xC0,0xE0,0x00,0x03,0xE0,0xF0,0x00,0x01,0xF0,0xF8,0x00,0x00,0xFF,0xFC,0x00,0x00,0x7F,0xFE,0x00,0x00,0x3F,0xFE,0x00,0x00,0x1F,0xFC,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // U\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xF8,0x00,0x00,0x1F,0xFC,0x00,0x00,0x3F,0xFE,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFC,0x00,0x01,0xF0,0xF8,0x00,0x03,0xE0,0xF0,0x00,0x03,0xC0,0xE0,0x00,0x03,0xC0,0xC0,0x00,0x03,0xC0,0x83,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x03,0xC0,0x01,0xE0,0x07,0x80,0x00,0xF0,0x0F,0x00,0x00,0x7F,0xFE,0x00,0x00,0x3F,0xFC,0x00,0x00,0x1F,0xF8,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // V\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x0F,0x00,0x01,0xF8,0x1F,0x80,0x03,0xFC,0x3F,0xC0,0x07,0xFE,0x7F,0xE0,0x0F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x0F,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x80,0x00,0xFF,0xFF,0x00,0x00,0x7F,0xFE,0x00,0x00,0x3F,0xFC,0x00,0x00,0x1F,0xF8,0x00,0x00,0x0F,0xF0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,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,  // W\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF8,0x00,0x00,0x7F,0xFE,0x00,0x01,0xFF,0xFF,0x80,0x03,0xC0,0x03,0xC0,0x07,0x80,0x01,0xE0,0x0F,0x07,0xF0,0xF0,0x0E,0x0F,0xF8,0x70,0x1C,0x1F,0xFC,0x38,0x18,0x3C,0x1E,0x18,0x38,0x78,0x0E,0x1C,0x38,0x70,0x0E,0x1C,0x38,0x70,0x00,0x1C,0x38,0x70,0x00,0x1C,0x38,0x70,0x00,0x1C,0x38,0x70,0x00,0x1C,0x38,0x70,0x00,0x1C,0x38,0x70,0x00,0x1C,0x38,0x70,0x0E,0x1C,0x38,0x78,0x0E,0x1C,0x18,0x3C,0x1E,0x18,0x1C,0x1F,0xFC,0x38,0x0E,0x0F,0xF8,0x70,0x0F,0x07,0xF0,0xF0,0x07,0x80,0x01,0xE0,0x03,0xC0,0x03,0xC0,0x01,0xFF,0xFF,0x80,0x00,0x7F,0xFE,0x00,0x00,0x1F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // X\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF8,0x00,0x00,0x7F,0xFE,0x00,0x01,0xFF,0xFF,0x80,0x03,0xC0,0x03,0xC0,0x07,0x80,0x01,0xE0,0x0F,0x0F,0xC0,0xF0,0x0E,0x1F,0xE0,0x70,0x1C,0x1F,0xF0,0x38,0x18,0x1C,0x78,0x18,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x78,0x1C,0x38,0x1F,0xF0,0x1C,0x38,0x1F,0xE0,0x1C,0x38,0x1F,0xF0,0x1C,0x38,0x1C,0x78,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x38,0x1C,0x18,0x1C,0x38,0x18,0x1C,0x1C,0x38,0x38,0x0E,0x1C,0x38,0x70,0x0F,0x1C,0x38,0xF0,0x07,0x80,0x01,0xE0,0x03,0xC0,0x03,0xC0,0x01,0xFF,0xFF,0x80,0x00,0x7F,0xFE,0x00,0x00,0x1F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // Y\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x3F,0xFC,0x00,0x00,0x7F,0xFE,0x00,0x01,0xFF,0xFF,0x80,0x03,0xF0,0x0F,0xC0,0x03,0xC0,0x03,0xC0,0x07,0x80,0x01,0xE0,0x07,0x80,0x01,0xE0,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x07,0x80,0x01,0xE0,0x07,0x80,0x01,0xE0,0x03,0xC0,0x03,0xC0,0x03,0xF0,0x0F,0x80,0x01,0xF8,0x1F,0x80,0x00,0x7C,0x3E,0x00,0x0F,0xFC,0x3F,0xF0,0x0F,0xFC,0x3F,0xF0,0x0F,0xFC,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // Z\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xF8,0x30,0x00,0x00,0x0C,0x30,0x07,0xC0,0x0C,0x30,0x0F,0xE0,0x0C,0x30,0x1F,0xF0,0x0C,0x30,0x1F,0xF0,0x0C,0x30,0x1F,0xF0,0x0C,0x30,0x0F,0xE0,0x0C,0x30,0x07,0xC0,0x0C,0x30,0x00,0x00,0x0C,0x30,0x1F,0xE0,0x0C,0x30,0x1F,0xE0,0x0C,0x30,0x1F,0xE0,0x0C,0x30,0x07,0xE0,0x0C,0x30,0x07,0xE0,0x0C,0x30,0x07,0xE0,0x0C,0x30,0x07,0xE0,0x0C,0x30,0x07,0xE0,0x0C,0x30,0x07,0xE0,0x0C,0x30,0x07,0xE0,0x0C,0x30,0xFF,0xFF,0x0C,0x30,0xFF,0xFF,0x0C,0x30,0xFF,0xFF,0x0C,0x30,0xFF,0xFF,0x0C,0x30,0x00,0x00,0x0C,0x3F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // [\n0x00,0x00,0x00,0x00,0x00,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,0x00,0x00,0x0F,0xE0,0x00,0x00,0x1F,0xF0,0x00,0x00,0x3C,0x78,0x00,0x00,0x38,0x38,0x00,0x00,0x38,0x38,0x00,0x00,0x38,0x38,0x00,0x00,0x3C,0x78,0x00,0x00,0x1F,0xF0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x07,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // <backslash>\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFE,0x00,0x00,0x07,0xFF,0x00,0x00,0x0F,0xFF,0x80,0x00,0x1F,0xFF,0x80,0x00,0x3F,0x07,0x80,0x00,0x3E,0x07,0x80,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x01,0xFF,0xF0,0x00,0x01,0xFF,0xF0,0x00,0x01,0xFF,0xF0,0x00,0x01,0xFF,0xF0,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3C,0x00,0x00,0x07,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // ]\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x07,0x80,0x00,0x78,0x07,0x80,0x00,0x78,0x07,0x80,0x00,0x78,0x07,0x80,0x00,0x78,0x07,0x80,0x00,0x78,0x07,0x80,0x00,0x78,0x07,0x80,0x00,0x78,0x07,0x80,0x00,0x78,0x07,0x80,0x00,0x78,0x07,0x80,0x00,0x78,0x07,0x80,0x00,0x78,0x07,0x80,0x00,0x78,0x07,0x80,0x00,0x78,0x07,0x80,0x00,0x7C,0x0F,0x80,0x00,0x7E,0x1F,0x80,0x00,0x7F,0xFF,0xE0,0x00,0x7F,0xFB,0xE0,0x00,0x7B,0xF1,0xE0,0x00,0x79,0xE0,0xE0,0x00,0x78,0x00,0x00,0x00,0x78,0x00,0x00,0x03,0xF8,0x00,0x00,0x03,0xF0,0x00,0x00,0x03,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // ^\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xF0,0x3F,0x80,0x1F,0xF8,0x3F,0xC0,0x3F,0xFC,0x3F,0xE0,0x7F,0xFC,0x3F,0xF0,0xFF,0xF8,0x00,0xF1,0xF0,0xF0,0x00,0x73,0xE0,0xE0,0x00,0x07,0xC0,0xC0,0x00,0x0F,0x80,0x80,0x00,0x1F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x7C,0x60,0x80,0x00,0xF8,0xF0,0xC0,0x01,0xF0,0xF8,0xE0,0x03,0xE0,0x7C,0xF0,0x3F,0xC0,0x3F,0xF8,0x3F,0x80,0x1F,0xFC,0x3F,0x00,0x0F,0xFC,0x3E,0x00,0x07,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // _\n\n0x00,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,0x00,0x00,0x03,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x1F,0xF8,0x00,0x00,0x3F,0xFC,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // `\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0xFC,0x00,0x00,0x01,0xFC,0x00,0x00,0x03,0xFC,0x00,0x00,0x07,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x1F,0xFC,0x00,0x00,0x3F,0xFC,0x00,0x00,0x7F,0xFC,0x00,0x00,0xFF,0xFC,0x00,0x01,0xFF,0xFC,0x00,0x01,0xFF,0xFC,0x00,0x00,0xFF,0xFC,0x00,0x00,0x7F,0xFC,0x00,0x00,0x3F,0xFC,0x00,0x00,0x1F,0xFC,0x00,0x00,0x0F,0xFC,0x00,0x00,0x07,0xFC,0x00,0x00,0x03,0xFC,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // a\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x3F,0xC0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xF0,0x00,0x00,0x3F,0xF8,0x00,0x00,0x3F,0xFC,0x00,0x00,0x3F,0xFE,0x00,0x00,0x3F,0xFF,0x00,0x00,0x3F,0xFF,0x80,0x00,0x3F,0xFF,0x80,0x00,0x3F,0xFF,0x00,0x00,0x3F,0xFE,0x00,0x00,0x3F,0xFC,0x00,0x00,0x3F,0xF8,0x00,0x00,0x3F,0xF0,0x00,0x00,0x3F,0xE0,0x00,0x00,0x3F,0xC0,0x00,0x00,0x3F,0x80,0x00,0x00,0x3F,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // b\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x00,0x00,0x03,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x1F,0xF8,0x00,0x00,0x3F,0xFC,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // c\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8,0x0F,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x80,0x00,0xFF,0xFF,0x00,0x00,0x7F,0xFE,0x00,0x00,0x3F,0xFC,0x00,0x00,0x1F,0xF8,0x00,0x00,0x0F,0xF0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,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,  // d\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x08,0x00,0x01,0x80,0x18,0x00,0x03,0x80,0x38,0x00,0x07,0x80,0x78,0x00,0x0F,0x80,0xF8,0x00,0x1F,0x81,0xF8,0x00,0x3F,0x83,0xF8,0x00,0x7F,0x87,0xF8,0x00,0xFF,0x8F,0xF8,0x01,0xFF,0x9F,0xF8,0x03,0xFF,0xBF,0xF8,0x07,0xFF,0xFF,0xF8,0x0F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xF8,0x03,0xFF,0xBF,0xF8,0x01,0xFF,0x9F,0xF8,0x00,0xFF,0x8F,0xF8,0x00,0x7F,0x87,0xF8,0x00,0x3F,0x83,0xF8,0x00,0x1F,0x81,0xF8,0x00,0x0F,0x80,0xF8,0x00,0x07,0x80,0x78,0x00,0x03,0x80,0x38,0x00,0x01,0x80,0x18,0x00,0x00,0x80,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // e\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x00,0x00,0x18,0x01,0x80,0x00,0x1C,0x01,0xC0,0x00,0x1E,0x01,0xE0,0x00,0x1F,0x01,0xF0,0x00,0x1F,0x81,0xF8,0x00,0x1F,0xC1,0xFC,0x00,0x1F,0xE1,0xFE,0x00,0x1F,0xF1,0xFF,0x00,0x1F,0xF9,0xFF,0x80,0x1F,0xFD,0xFF,0xC0,0x1F,0xFF,0xFF,0xE0,0x1F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xE0,0x1F,0xFD,0xFF,0xC0,0x1F,0xF9,0xFF,0x80,0x1F,0xF1,0xFF,0x00,0x1F,0xE1,0xFE,0x00,0x1F,0xC1,0xFC,0x00,0x1F,0x81,0xF8,0x00,0x1F,0x01,0xF0,0x00,0x1E,0x01,0xE0,0x00,0x1C,0x01,0xC0,0x00,0x18,0x01,0x80,0x00,0x10,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // f\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x80,0x08,0x38,0x01,0x80,0x18,0x38,0x03,0x80,0x38,0x38,0x07,0x80,0x78,0x38,0x0F,0x80,0xF8,0x38,0x1F,0x81,0xF8,0x38,0x3F,0x83,0xF8,0x38,0x7F,0x87,0xF8,0x38,0xFF,0x8F,0xF8,0x39,0xFF,0x9F,0xF8,0x3B,0xFF,0xBF,0xF8,0x3F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xF8,0x3B,0xFF,0xBF,0xF8,0x39,0xFF,0x9F,0xF8,0x38,0xFF,0x8F,0xF8,0x38,0x7F,0x87,0xF8,0x38,0x3F,0x83,0xF8,0x38,0x1F,0x81,0xF8,0x38,0x0F,0x80,0xF8,0x38,0x07,0x80,0x78,0x38,0x03,0x80,0x38,0x38,0x01,0x80,0x18,0x38,0x00,0x80,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // g\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x00,0x1C,0x18,0x01,0x80,0x1C,0x1C,0x01,0xC0,0x1C,0x1E,0x01,0xE0,0x1C,0x1F,0x01,0xF0,0x1C,0x1F,0x81,0xF8,0x1C,0x1F,0xC1,0xFC,0x1C,0x1F,0xE1,0xFE,0x1C,0x1F,0xF1,0xFF,0x1C,0x1F,0xF9,0xFF,0x9C,0x1F,0xFD,0xFF,0xDC,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x1F,0xFD,0xFF,0xDC,0x1F,0xF9,0xFF,0x9C,0x1F,0xF1,0xFF,0x1C,0x1F,0xE1,0xFE,0x1C,0x1F,0xC1,0xFC,0x1C,0x1F,0x81,0xF8,0x1C,0x1F,0x01,0xF0,0x1C,0x1E,0x01,0xE0,0x1C,0x1C,0x01,0xC0,0x1C,0x18,0x01,0x80,0x1C,0x10,0x01,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // h\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,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,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x7C,0x3E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // i\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // j\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x3F,0xFC,0x00,0x00,0x7F,0xFE,0x00,0x01,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x80,0x00,0x7F,0xFE,0x00,0x00,0x3F,0xFC,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // k\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x03,0xC0,0x00,0x00,0x73,0xCE,0x00,0x00,0xF3,0xCF,0x00,0x03,0xF3,0xCF,0xC0,0x07,0xF3,0xCF,0xE0,0x0F,0xC3,0xC3,0xE0,0x0F,0x03,0xC0,0xF0,0x1E,0x03,0xC0,0x78,0x1E,0x03,0xC0,0x78,0x3C,0x03,0xC0,0x3C,0x3C,0x03,0xC0,0x3C,0x3C,0x03,0xC0,0x3C,0x3C,0x03,0xC0,0x3C,0x3C,0x00,0x00,0x3C,0x3C,0x00,0x00,0x3C,0x3C,0x00,0x00,0x38,0x1E,0x00,0x00,0x78,0x1E,0x00,0x00,0x78,0x0F,0x00,0x00,0xF0,0x07,0xC0,0x03,0xE0,0x07,0xF0,0x0F,0xE0,0x03,0xFF,0xFF,0x80,0x00,0xFF,0xFF,0x00,0x00,0x3F,0xFC,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // l\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF8,0x00,0x00,0x7F,0xFE,0x00,0x01,0xFF,0xFF,0x80,0x03,0xF0,0x0F,0xC0,0x07,0xC0,0x03,0xE0,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x1E,0x00,0x18,0x78,0x1C,0x00,0x39,0xF8,0x3C,0x00,0x7F,0xFC,0x38,0x00,0xFF,0xDC,0x38,0x7F,0xFF,0x1C,0x38,0x7F,0xFC,0x1C,0x38,0x7F,0xF8,0x1C,0x38,0x7F,0xF8,0x1C,0x38,0x7F,0xF8,0x1C,0x38,0xFC,0xF8,0x1C,0x3B,0xF8,0x78,0x1C,0x3F,0xE0,0x38,0x3C,0x1F,0x80,0x18,0x38,0x1E,0x00,0x00,0x78,0x0F,0x00,0x00,0xF0,0x0F,0x00,0x00,0xF0,0x07,0xC0,0x03,0xE0,0x07,0xF0,0x0F,0xE0,0x01,0xFF,0xFF,0x80,0x00,0x7F,0xFE,0x00,0x00,0x1F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // m\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0xEE,0x00,0x00,0x03,0xEF,0x00,0x00,0x07,0xE3,0x80,0x01,0xFF,0xE1,0x80,0x01,0xFF,0xE1,0x80,0x01,0xFF,0xE1,0x80,0x01,0xFF,0xE1,0x80,0x01,0xFF,0xE3,0x80,0x00,0x03,0xEF,0x00,0x00,0x01,0xEE,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // n\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0xE0,0x00,0x00,0x70,0x70,0x00,0x00,0x7C,0x30,0x00,0x0C,0x0E,0x18,0x00,0x1C,0x07,0x18,0x00,0x3D,0xC3,0x0C,0x00,0x7D,0xE1,0x8C,0x00,0xFC,0x71,0x8C,0x3F,0xFC,0x31,0x8C,0x3F,0xFC,0x31,0x8C,0x3F,0xFC,0x31,0x8C,0x3F,0xFC,0x31,0x8C,0x3F,0xFC,0x71,0x8C,0x00,0x7D,0xE1,0x8C,0x00,0x3D,0xC3,0x0C,0x00,0x1C,0x07,0x18,0x00,0x0C,0x0E,0x18,0x00,0x00,0x7C,0x30,0x00,0x00,0x70,0x70,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0xC0,0x00,0x00,0x1F,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // o\n\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x0F,0xF8,0x00,0x01,0xFF,0xF8,0x00,0x1F,0xFF,0x18,0x00,0x3F,0xF0,0x18,0x00,0x3F,0x00,0x18,0x00,0x38,0x01,0xF8,0x00,0x38,0x1F,0xF8,0x00,0x38,0xFF,0xF8,0x00,0x3F,0xFF,0x38,0x00,0x3F,0xF0,0x38,0x00,0x3F,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x38,0x03,0xF8,0x00,0x38,0x07,0xF8,0x03,0xF8,0x0F,0xF8,0x07,0xF8,0x1F,0xF0,0x0F,0xF8,0x1F,0xE0,0x1F,0xF0,0x0F,0xC0,0x1F,0xE0,0x07,0x00,0x0F,0xC0,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // p\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0xC0,0x00,0x00,0x01,0xE0,0x00,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xF8,0x03,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xF0,0x0F,0x80,0x01,0xE0,0x1F,0x00,0x01,0xC0,0x1E,0x00,0x01,0x80,0x1E,0x00,0x01,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0x00,0x80,0x00,0x78,0x01,0x80,0x00,0x78,0x03,0x80,0x00,0xF8,0x07,0x80,0x01,0xF0,0x0F,0xFF,0xFF,0xE0,0x1F,0xFF,0xFF,0xC0,0x1F,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0x00,0x07,0x80,0x00,0x00,0x03,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // q\n0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xF8,0x3F,0x1C,0x38,0xFC,0x7E,0x1C,0x38,0x7E,0x00,0x1C,0x38,0x00,0x7E,0x3E,0x7C,0x7E,0x7E,0x7F,0xFE,0x7E,0x7E,0x7F,0xFE,0x7E,0x00,0x7F,0xFE,0x00,0x00,0x7F,0xFE,0x00,0x00,0xF8,0x1F,0x00,0x01,0xE0,0x07,0x80,0x03,0xC0,0x03,0xC0,0x07,0x83,0xC1,0xE0,0x0F,0x8F,0xF1,0xF0,0x1F,0x1F,0xF8,0xF8,0x3F,0x1F,0xF8,0xFC,0x3F,0x1F,0xF8,0xFC,0x3F,0x1F,0xF8,0xFC,0x7F,0x8F,0xF1,0xFE,0x7F,0x83,0xC1,0xFE,0x7F,0xC0,0x03,0xFE,0x7F,0xE0,0x07,0xFE,0x7F,0xF8,0x1F,0xFE,0x7F,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // r\n0x00,0x00,0x00,0x00,0x00,0x30,0x0C,0x00,0x00,0x38,0x1C,0x00,0x00,0x3C,0x3C,0x00,0x00,0x3F,0xFC,0x00,0x00,0x7F,0xFE,0x00,0x00,0x7F,0xFE,0x00,0x00,0xF8,0x1F,0x00,0x01,0xE0,0x07,0x80,0x07,0xC0,0x03,0xE0,0x3F,0x80,0x01,0xFC,0x3F,0x00,0x00,0xFC,0x1F,0x03,0xC0,0xF8,0x0E,0x07,0xE0,0x70,0x06,0x0F,0xF0,0x60,0x06,0x0F,0xF0,0x60,0x06,0x0F,0xF0,0x60,0x06,0x0F,0xF0,0x60,0x06,0x07,0xE0,0x60,0x0F,0x03,0xC0,0xF0,0x1F,0x00,0x00,0xF8,0x3F,0x80,0x01,0xFC,0x3F,0xC0,0x03,0xFC,0x03,0xE0,0x07,0xC0,0x00,0xF8,0x1F,0x00,0x00,0x7F,0xFE,0x00,0x00,0x7F,0xFE,0x00,0x00,0x3F,0xFC,0x00,0x00,0x3C,0x3C,0x00,0x00,0x38,0x1C,0x00,0x00,0x30,0x0C,0x00,0x00,0x00,0x00,0x00,  // s\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x03,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x1F,0xF8,0x00,0x00,0x3F,0xFC,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8,0x0F,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x80,0x00,0xFF,0xFF,0x00,0x00,0x7F,0xFE,0x00,0x00,0x3F,0xFC,0x00,0x00,0x1F,0xF8,0x00,0x00,0x0F,0xF0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xC0,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // t\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xC0,0x00,0x00,0x01,0xE0,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0xF8,0x00,0x10,0x00,0xFF,0x00,0x18,0x00,0xFF,0x00,0x1C,0x00,0xFC,0x00,0x1C,0x01,0xFC,0x00,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8,0x1C,0x01,0xFC,0x00,0x1C,0x00,0xFC,0x00,0x18,0x00,0xFF,0x00,0x10,0x00,0xFF,0x00,0x00,0x00,0xF8,0x00,0x00,0x01,0xF0,0x00,0x00,0x01,0xE0,0x00,0x00,0x01,0xC0,0x00,0x00,0x03,0xF0,0x00,0x00,0x07,0xF0,0x00,0x00,0x07,0x80,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // u\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x03,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xC0,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // v\n0x00,0x00,0x00,0x00,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,0x00,0x00,0x00,0x3F,0x00,0x00,0xFC,0x33,0x00,0x03,0xF8,0x33,0x80,0x0F,0xE0,0x3F,0xC0,0x3F,0xC0,0x3F,0xE0,0xFC,0x00,0x00,0xF6,0xF8,0x00,0x00,0x3F,0xE0,0x00,0x00,0x1F,0x80,0x00,0x00,0x1F,0x80,0x00,0x00,0x3F,0xE0,0x00,0x00,0xF6,0xF8,0x00,0x3F,0xE0,0x7C,0x00,0x3F,0xC0,0x3F,0xC0,0x33,0x80,0x0F,0xE0,0x33,0x00,0x03,0xF8,0x3F,0x00,0x00,0xFC,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // w\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,0x00,0xF8,0x1F,0x80,0x01,0xF8,0x1F,0xC0,0x03,0xF8,0x1F,0xE0,0x07,0xF8,0x1F,0xF0,0x0F,0xF8,0x0F,0xF8,0x1F,0xF0,0x07,0xFC,0x3F,0xE0,0x03,0xFE,0x7F,0xC0,0x01,0xFE,0x7F,0x80,0x00,0xFF,0xFF,0x00,0x00,0x7F,0xFE,0x00,0x00,0x3F,0xFC,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x3F,0xFC,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFE,0x7F,0x80,0x03,0xFE,0x7F,0xC0,0x07,0xFC,0x3F,0xE0,0x0F,0xF8,0x1F,0xF0,0x1F,0xF0,0x0F,0xF8,0x1F,0xE0,0x07,0xF8,0x1F,0xC0,0x03,0xF8,0x1F,0x80,0x01,0xF8,0x1F,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // x\n0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x03,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x1F,0xF8,0x00,0x00,0x1F,0xF8,0x00,0x7F,0xFF,0xFF,0xFE,0x3F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8,0x0F,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xC0,0x01,0xFF,0xFF,0x80,0x00,0xFF,0xFF,0x00,0x00,0x7F,0xFE,0x00,0x00,0x7F,0xFE,0x00,0x00,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x80,0x03,0xFC,0x3F,0xC0,0x03,0xF0,0x0F,0xC0,0x07,0xE0,0x07,0xE0,0x07,0x80,0x01,0xE0,0x07,0x00,0x00,0xE0,0x06,0x00,0x00,0x60,0x04,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // y\n0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0x80,0x01,0xFF,0xFF,0x00,0x01,0xFF,0xFF,0x00,0x00,0xFF,0xFE,0x00,0x00,0xF0,0x1E,0x00,0x00,0x78,0x3C,0x00,0x00,0x3C,0x78,0x00,0x00,0x1E,0xF0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x07,0xC0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x1E,0xF0,0x00,0x00,0x3C,0x78,0x00,0x00,0x78,0x3C,0x00,0x00,0xF0,0x1E,0x00,0x01,0xE0,0x0F,0x00,0x01,0xE0,0x0F,0x00,0x03,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0x80,0x03,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // z\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xFF,0x00,0x00,0x0F,0xFF,0xC0,0x00,0x0F,0x03,0xC0,0x00,0x1E,0x01,0xE0,0x00,0x1C,0x00,0xE0,0x00,0x38,0x00,0x70,0x00,0x38,0x00,0x70,0x00,0x3B,0xFF,0x70,0x00,0x3B,0xFF,0x70,0x00,0x38,0x00,0x70,0x00,0x38,0x00,0x70,0x00,0x1C,0x00,0xE0,0x00,0x1E,0x01,0xC0,0x00,0x0F,0x03,0xE0,0x00,0x0F,0xFF,0xF0,0x00,0x03,0xFE,0xF8,0x00,0x00,0xFC,0x7C,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x07,0xC0,0x00,0x00,0x03,0xE0,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // {\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x03,0xFF,0x00,0x00,0x07,0xFF,0x80,0x00,0x0F,0x03,0xC0,0x00,0x1E,0x31,0xE0,0x00,0x1C,0x30,0xE0,0x00,0x38,0x30,0x70,0x00,0x38,0x30,0x70,0x00,0x3B,0xFF,0x70,0x00,0x3B,0xFF,0x70,0x00,0x38,0x30,0x70,0x00,0x38,0x30,0x70,0x00,0x1C,0x30,0xE0,0x00,0x1E,0x31,0xC0,0x00,0x0F,0x03,0xE0,0x00,0x07,0xFF,0xF0,0x00,0x03,0xFE,0xF8,0x00,0x00,0xFC,0x7C,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x07,0xC0,0x00,0x00,0x03,0xE0,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // |\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xFC,0x30,0x00,0x00,0x0C,0x20,0x00,0x00,0x04,0x0F,0xFC,0x3F,0xF0,0x1F,0xFC,0x3F,0xF8,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0x80,0x01,0xFC,0x3F,0xC0,0x03,0xFC,0x3F,0xE0,0x07,0xFC,0x3F,0xF0,0x0F,0xFC,0x3F,0xF8,0x1F,0xFC,0x3F,0xFC,0x3F,0xFC,0x3F,0xFE,0x7F,0xFC,0x3F,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xF8,0x0F,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // }\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xF8,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // ~\n};\n\n\nsFONT FontSYM = {\n  FontSYM_Table,\n  32,\t// Width\n  32,\t// Height\n  0x20,\t// First char ' '\n  0x7E\t// Last char '~'\n};\n\n"
  },
  {
    "path": "fonts.h",
    "content": "/**\n  ******************************************************************************\n  * @file    fonts.h\n  * @author  MCD Application Team\n  * @version V1.0.0\n  * @date    18-February-2014\n  * @brief   Header for fonts.c file\n  ******************************************************************************\n  * @attention\n  *\n  * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>\n  *\n  * Redistribution and use in source and binary forms, with or without modification,\n  * are permitted provided that the following conditions are met:\n  *   1. Redistributions of source code must retain the above copyright notice,\n  *      this list of conditions and the following disclaimer.\n  *   2. Redistributions in binary form must reproduce the above copyright notice,\n  *      this list of conditions and the following disclaimer in the documentation\n  *      and/or other materials provided with the distribution.\n  *   3. Neither the name of STMicroelectronics nor the names of its contributors\n  *      may be used to endorse or promote products derived from this software\n  *      without specific prior written permission.\n  *\n  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n  *\n  ******************************************************************************\n  */\n\n/* Define to prevent recursive inclusion -------------------------------------*/\n#ifndef __FONTS_H\n#define __FONTS_H   \n#include \"pico/stdlib.h\"\n\n#define FON_MAXPIX\t32*50\n\n//ASCII\ntypedef struct _tFont\n{    \n  const uint8_t *table;\n  uint8_t\tWidth;\t\t// Width Pixels\n  uint8_t\tHeight;\t\t// Height Pixels\n  char\t\tFirst;\t\t// First Character\n  char\t\tLast;\t\t// Last Character\n} sFONT;\n\nextern sFONT Font8;\t\t// Courier 5x8\nextern sFONT Font16;\t// Courier 12x16\nextern sFONT Font20;\t// Courier 14x20\nextern sFONT Font24;\t// Courier 17x24\nextern sFONT Font7SPP;\t// 7 Segments plus\nextern sFONT FontUB;\t// Ubuntu 24x32\nextern sFONT FontUBB;\t// Ubuntu bold 24x32\nextern sFONT FontAR;\t// Arial Round 16x24\nextern sFONT FontGR;\t// Grotesk 16x32\nextern sFONT FontSYMs;\t// Various symbols 16x16\nextern sFONT FontSYM;\t// Various symbols 32x32\n\n  \n#endif /* __FONTS_H */\n \n\n/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\n"
  },
  {
    "path": "fontub.c",
    "content": "// Ubuntu 24x32\n// Font type    : Full (95 characters)\n\n#include \"fonts.h\"\n\nconst uint8_t FontUB_Table [] =\n{\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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>\n0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // !\n0x00,0x00,0x00,0x01,0xC0,0xE0,0x03,0xE1,0xF0,0x03,0xE1,0xF0,0x03,0xE1,0xF0,0x01,0xE0,0xF0,0x00,0xE0,0x70,0x01,0xC0,0xE0,0x03,0xC1,0xE0,0x0F,0x87,0xC0,0x0E,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // \"\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x70,0x00,0x38,0x70,0x00,0x70,0xE0,0x00,0x70,0xE0,0x00,0x70,0xE0,0x00,0x70,0xE0,0x0F,0xFF,0xF8,0x0F,0xFF,0xF8,0x0F,0xFF,0xF8,0x00,0xE1,0xC0,0x00,0xE1,0xC0,0x00,0xE1,0xC0,0x01,0xC3,0x80,0x01,0xC3,0x80,0x01,0xC3,0x80,0x0F,0xFF,0xF8,0x0F,0xFF,0xF8,0x0F,0xFF,0xF8,0x03,0x87,0x00,0x03,0x87,0x00,0x03,0x87,0x00,0x03,0x87,0x00,0x07,0x0E,0x00,0x07,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // #\n0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x7F,0x00,0x01,0xFF,0xC0,0x03,0xFF,0xC0,0x07,0x80,0x80,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x03,0xF8,0x00,0x01,0xFE,0x00,0x00,0x7F,0x80,0x00,0x0F,0xC0,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x02,0x01,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0x80,0x01,0xFE,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x00,0x00,  // $\n0x00,0x00,0x00,0x07,0x80,0x70,0x0F,0xC0,0xE0,0x0C,0xC0,0xE0,0x18,0x61,0xC0,0x18,0x63,0x80,0x18,0x63,0x80,0x18,0x67,0x00,0x18,0x67,0x00,0x18,0x6E,0x00,0x0C,0xDC,0x00,0x0F,0xDC,0x00,0x07,0xB8,0x00,0x00,0x3B,0xC0,0x00,0x77,0xE0,0x00,0x76,0x60,0x00,0xEC,0x30,0x01,0xCC,0x30,0x01,0xCC,0x30,0x03,0x8C,0x30,0x03,0x8C,0x30,0x07,0x0C,0x30,0x0E,0x06,0x60,0x0E,0x07,0xE0,0x1C,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // %\n0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0xFF,0x00,0x01,0xFF,0x00,0x03,0xC7,0x80,0x03,0x83,0x80,0x03,0x83,0x80,0x03,0x83,0x80,0x03,0x87,0x00,0x01,0xCF,0x00,0x01,0xFE,0x00,0x00,0xFC,0x00,0x01,0xF0,0x70,0x03,0xF8,0x70,0x03,0xBC,0x70,0x07,0x1E,0x60,0x0E,0x0F,0xE0,0x0E,0x07,0xE0,0x0E,0x03,0xC0,0x0E,0x01,0xC0,0x0F,0x03,0xE0,0x07,0x8F,0xE0,0x07,0xFF,0x70,0x03,0xFE,0x70,0x00,0xF8,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // &\n0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // '\n0x00,0x07,0x00,0x00,0x0F,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0F,0x00,0x00,0x07,0x80,0x00,0x03,0x00,0x00,0x01,0x00,  // (\n0x00,0x60,0x00,0x00,0xF0,0x00,0x00,0x78,0x00,0x00,0x3C,0x00,0x00,0x1E,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x00,0x60,0x00,0x00,0x40,0x00,  // )\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x02,0x1C,0x20,0x03,0xC9,0xE0,0x07,0xFF,0xF0,0x01,0xFF,0xC0,0x00,0x1C,0x00,0x00,0x36,0x00,0x00,0x77,0x00,0x00,0xF3,0x80,0x01,0xE3,0xC0,0x00,0xE3,0x80,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // *\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // +\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x0F,0x00,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x78,0x00,0x00,0x70,0x00,0x00,0x00,0x00,  // ,\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // -\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // .\n0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x07,0x00,0x00,  // /\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x01,0xFF,0x00,0x03,0xFF,0x80,0x03,0xC7,0x80,0x07,0x83,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x30,0xE0,0x0E,0x78,0xE0,0x0E,0x78,0xE0,0x0E,0x78,0xE0,0x0E,0x30,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x83,0xC0,0x03,0xC7,0x80,0x03,0xFF,0x80,0x01,0xFF,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 0\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x7C,0x00,0x00,0xFC,0x00,0x03,0xFC,0x00,0x07,0x9C,0x00,0x02,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x03,0xFF,0xC0,0x03,0xFF,0xC0,0x03,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 1\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x03,0xFF,0x00,0x07,0xFF,0x80,0x07,0x87,0xC0,0x02,0x03,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 2\n0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x0F,0xFF,0x00,0x0F,0xFF,0x80,0x06,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0xFF,0x00,0x00,0xFF,0x00,0x00,0xFF,0x80,0x00,0x07,0xC0,0x00,0x01,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x01,0xE0,0x04,0x03,0xC0,0x0F,0xFF,0x80,0x0F,0xFF,0x00,0x03,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 3\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x0F,0x80,0x00,0x1F,0x80,0x00,0x3F,0x80,0x00,0x3B,0x80,0x00,0x73,0x80,0x00,0xF3,0x80,0x01,0xE3,0x80,0x01,0xC3,0x80,0x03,0x83,0x80,0x03,0x83,0x80,0x07,0x03,0x80,0x0F,0x03,0x80,0x0E,0x03,0x80,0x1E,0x03,0x80,0x1F,0xFF,0xF0,0x1F,0xFF,0xF0,0x1F,0xFF,0xF0,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 4\n0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0x80,0x03,0xFF,0x80,0x03,0xFF,0x80,0x03,0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x00,0x03,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0xF0,0x00,0x07,0xFE,0x00,0x07,0xFF,0x00,0x00,0x1F,0x80,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x03,0xC0,0x0C,0x07,0x80,0x0F,0xFF,0x00,0x0F,0xFE,0x00,0x03,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 5\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x1F,0xC0,0x00,0x7F,0xC0,0x00,0xFC,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x06,0x7E,0x00,0x0F,0xFF,0x80,0x0F,0xFF,0xC0,0x0F,0x03,0xC0,0x0E,0x01,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x07,0x00,0xE0,0x07,0x01,0xC0,0x07,0xC3,0xC0,0x03,0xFF,0x80,0x01,0xFF,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 6\n0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 7\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x01,0xFF,0x00,0x03,0xFF,0x80,0x03,0xC7,0xC0,0x07,0x03,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x81,0xC0,0x03,0xC3,0x80,0x03,0xF7,0x00,0x01,0xFE,0x00,0x01,0xFF,0x80,0x03,0xCF,0xC0,0x07,0x03,0xC0,0x06,0x01,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0x01,0xE0,0x07,0x83,0xC0,0x07,0xFF,0xC0,0x03,0xFF,0x80,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 8\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x01,0xFF,0x00,0x03,0xFF,0x80,0x07,0x87,0xC0,0x07,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0x00,0xE0,0x07,0x81,0xE0,0x07,0xFF,0xE0,0x03,0xFF,0xE0,0x00,0xFE,0xE0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x7E,0x00,0x07,0xFC,0x00,0x07,0xF8,0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 9\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // :\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x3C,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x01,0xE0,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // ;\n0x00,0x00,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,0x01,0xE0,0x00,0x0F,0xE0,0x00,0x3F,0xC0,0x00,0xFE,0x00,0x03,0xF8,0x00,0x0F,0xC0,0x00,0x0F,0x00,0x00,0x0F,0xC0,0x00,0x07,0xF8,0x00,0x00,0xFE,0x00,0x00,0x3F,0xC0,0x00,0x0F,0xE0,0x00,0x01,0xE0,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // <\n0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,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,  // =\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x0F,0x00,0x00,0x0F,0xE0,0x00,0x07,0xF8,0x00,0x00,0xFE,0x00,0x00,0x3F,0x80,0x00,0x07,0xE0,0x00,0x01,0xE0,0x00,0x07,0xE0,0x00,0x3F,0xC0,0x00,0xFE,0x00,0x07,0xF8,0x00,0x0F,0xE0,0x00,0x0F,0x00,0x00,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,  // >\n0x00,0x00,0x00,0x00,0xFE,0x00,0x03,0xFF,0x80,0x03,0xFF,0xC0,0x01,0x03,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x3C,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // ?\n0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0xFF,0x80,0x01,0xFF,0xC0,0x01,0xE1,0xE0,0x03,0x80,0xE0,0x03,0x80,0x70,0x07,0x00,0x70,0x07,0x00,0x70,0x07,0x07,0xF0,0x0E,0x1F,0xF0,0x0E,0x3F,0xF0,0x0E,0x3C,0x70,0x0E,0x78,0x70,0x0E,0x70,0x70,0x0E,0x70,0x70,0x0E,0x70,0x70,0x0E,0x70,0x70,0x0E,0x78,0x70,0x0E,0x38,0x70,0x07,0x3F,0xF0,0x07,0x1F,0xF0,0x07,0x07,0xE0,0x07,0x80,0x00,0x03,0xC0,0x00,0x03,0xC0,0x00,0x01,0xF0,0x00,0x00,0xFF,0xC0,0x00,0x7F,0xC0,0x00,0x1F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,  // @\n0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00,0xFF,0x00,0x00,0xF7,0x00,0x00,0xE7,0x00,0x00,0xE7,0x00,0x01,0xE7,0x80,0x01,0xC3,0x80,0x01,0xC3,0x80,0x03,0xC3,0xC0,0x03,0xC1,0xC0,0x03,0x81,0xC0,0x03,0x81,0xC0,0x07,0x81,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x0F,0x00,0xF0,0x0E,0x00,0x70,0x0E,0x00,0x70,0x0E,0x00,0x70,0x1E,0x00,0x78,0x1C,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // A\n0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFC,0x00,0x0F,0xFF,0x00,0x0F,0xFF,0x80,0x0E,0x07,0xC0,0x0E,0x03,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x03,0x80,0x0E,0x07,0x80,0x0F,0xFF,0x00,0x0F,0xFF,0x00,0x0F,0xFF,0x80,0x0E,0x03,0xC0,0x0E,0x01,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x01,0xE0,0x0E,0x07,0xC0,0x0F,0xFF,0xC0,0x0F,0xFF,0x00,0x0F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // B\n0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0x7F,0xE0,0x01,0xFF,0xE0,0x03,0xE0,0x40,0x03,0xC0,0x00,0x07,0x80,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0F,0x00,0x00,0x07,0x00,0x00,0x07,0x80,0x00,0x03,0xC0,0x00,0x03,0xE0,0x40,0x01,0xFF,0xE0,0x00,0xFF,0xE0,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // C\n0x00,0x00,0x00,0x0F,0xF0,0x00,0x0F,0xFE,0x00,0x0F,0xFF,0x00,0x0E,0x0F,0x80,0x0E,0x03,0x80,0x0E,0x03,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x01,0xE0,0x0E,0x01,0xC0,0x0E,0x03,0xC0,0x0E,0x03,0x80,0x0E,0x0F,0x80,0x0F,0xFF,0x00,0x0F,0xFE,0x00,0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // D\n0x00,0x00,0x00,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0xFF,0x80,0x07,0xFF,0x80,0x07,0xFF,0x80,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // E\n0x00,0x00,0x00,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // F\n0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0xFF,0xC0,0x01,0xFF,0xE0,0x03,0xE0,0xC0,0x03,0xC0,0x40,0x07,0x80,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0x00,0xE0,0x07,0x00,0xE0,0x07,0x80,0xE0,0x03,0xC0,0xE0,0x03,0xE0,0xE0,0x01,0xFF,0xE0,0x00,0xFF,0xE0,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // G\n0x00,0x00,0x00,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // H\n0x00,0x00,0x00,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // I\n0x00,0x00,0x00,0x01,0xFF,0xC0,0x01,0xFF,0xC0,0x01,0xFF,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x04,0x03,0xC0,0x07,0x07,0x80,0x0F,0xFF,0x00,0x07,0xFE,0x00,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // J\n0x00,0x00,0x00,0x0E,0x01,0xE0,0x0E,0x03,0xC0,0x0E,0x03,0x80,0x0E,0x07,0x80,0x0E,0x0F,0x00,0x0E,0x0E,0x00,0x0E,0x1C,0x00,0x0E,0x3C,0x00,0x0E,0x78,0x00,0x0E,0xF0,0x00,0x0F,0xE0,0x00,0x0F,0xE0,0x00,0x0F,0xF0,0x00,0x0E,0xF8,0x00,0x0E,0x7C,0x00,0x0E,0x3E,0x00,0x0E,0x1E,0x00,0x0E,0x0F,0x00,0x0E,0x07,0x80,0x0E,0x03,0xC0,0x0E,0x03,0xC0,0x0E,0x01,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // K\n0x00,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // L\n0x00,0x00,0x00,0x03,0x00,0x60,0x03,0x80,0xF0,0x07,0x80,0xF0,0x07,0x80,0xF0,0x06,0xC1,0xB0,0x06,0xC1,0xB0,0x06,0xE3,0xB0,0x06,0x63,0x30,0x06,0x63,0x30,0x06,0x77,0x30,0x06,0x36,0x30,0x06,0x36,0x30,0x06,0x3E,0x30,0x06,0x1C,0x38,0x0E,0x1C,0x38,0x0E,0x00,0x38,0x0E,0x00,0x38,0x0E,0x00,0x38,0x0E,0x00,0x38,0x0E,0x00,0x38,0x0E,0x00,0x38,0x0E,0x00,0x38,0x0E,0x00,0x38,0x0E,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // M\n0x00,0x00,0x00,0x07,0x80,0x70,0x07,0xC0,0x70,0x07,0xC0,0x70,0x07,0xE0,0x70,0x07,0xE0,0x70,0x07,0xF0,0x70,0x07,0x70,0x70,0x07,0x70,0x70,0x07,0x38,0x70,0x07,0x38,0x70,0x07,0x1C,0x70,0x07,0x1C,0x70,0x07,0x0E,0x70,0x07,0x0E,0x70,0x07,0x06,0x70,0x07,0x07,0x70,0x07,0x07,0x70,0x07,0x03,0xF0,0x07,0x03,0xF0,0x07,0x01,0xF0,0x07,0x01,0xF0,0x07,0x00,0xF0,0x07,0x00,0xF0,0x07,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // N\n0x00,0x00,0x00,0x00,0x7C,0x00,0x01,0xFF,0x00,0x03,0xFF,0x80,0x07,0x83,0xC0,0x0F,0x01,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x1C,0x00,0xF0,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0xF0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0x01,0xE0,0x07,0x83,0xC0,0x03,0xFF,0x80,0x01,0xFF,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // O\n0x00,0x00,0x00,0x07,0xFC,0x00,0x07,0xFF,0x00,0x07,0xFF,0x80,0x07,0x03,0xC0,0x07,0x01,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x01,0xE0,0x07,0x03,0xC0,0x07,0xFF,0x80,0x07,0xFF,0x00,0x07,0xFC,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // P\n0x00,0x00,0x00,0x00,0x7C,0x00,0x01,0xFF,0x00,0x03,0xFF,0x80,0x07,0x83,0xC0,0x0F,0x01,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x1C,0x00,0xF0,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0xF0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0x01,0xE0,0x07,0x83,0xC0,0x03,0xFF,0x80,0x01,0xFF,0x00,0x00,0xFE,0x00,0x00,0x38,0x00,0x00,0x3C,0x00,0x00,0x1F,0x00,0x00,0x0F,0xE0,0x00,0x07,0xE0,0x00,0x00,0xC0,0x00,0x00,0x00,  // Q\n0x00,0x00,0x00,0x0F,0xF8,0x00,0x0F,0xFE,0x00,0x0F,0xFF,0x00,0x0E,0x07,0x80,0x0E,0x03,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x03,0x80,0x0E,0x07,0x80,0x0F,0xFF,0x00,0x0F,0xFE,0x00,0x0F,0xFC,0x00,0x0E,0x1E,0x00,0x0E,0x0E,0x00,0x0E,0x07,0x00,0x0E,0x07,0x00,0x0E,0x03,0x80,0x0E,0x03,0x80,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // R\n0x00,0x00,0x00,0x00,0x7F,0x00,0x01,0xFF,0xC0,0x03,0xFF,0xC0,0x03,0xC0,0x80,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x80,0x00,0x03,0xE0,0x00,0x01,0xF8,0x00,0x00,0xFE,0x00,0x00,0x3F,0x80,0x00,0x0F,0xC0,0x00,0x03,0xC0,0x00,0x01,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x04,0x01,0xE0,0x0F,0x03,0xC0,0x0F,0xFF,0xC0,0x07,0xFF,0x80,0x01,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // S\n0x00,0x00,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // T\n0x00,0x00,0x00,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0x01,0xE0,0x07,0x01,0xC0,0x07,0x83,0xC0,0x03,0xFF,0x80,0x01,0xFF,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // U\n0x00,0x00,0x00,0x1C,0x00,0x70,0x1C,0x00,0x70,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x03,0x83,0x80,0x03,0x83,0x80,0x03,0x83,0x80,0x03,0x87,0x80,0x01,0xC7,0x00,0x01,0xC7,0x00,0x01,0xC7,0x00,0x00,0xEE,0x00,0x00,0xEE,0x00,0x00,0xEE,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // V\n0x00,0x00,0x00,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x38,0xE0,0x0E,0x38,0xE0,0x0E,0x38,0xE0,0x0E,0x6C,0xE0,0x0E,0x6C,0xE0,0x0E,0x6C,0xE0,0x0E,0xC6,0xE0,0x0E,0xC6,0xE0,0x0E,0xC6,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x01,0xE0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // W\n0x00,0x00,0x00,0x1E,0x00,0xF0,0x0E,0x00,0xE0,0x0F,0x01,0xE0,0x07,0x01,0xC0,0x03,0x83,0x80,0x03,0x83,0x80,0x01,0xC7,0x00,0x01,0xEF,0x00,0x00,0xEE,0x00,0x00,0xFE,0x00,0x00,0x7C,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x7C,0x00,0x00,0xFE,0x00,0x00,0xEE,0x00,0x01,0xC7,0x00,0x03,0xC7,0x80,0x03,0x83,0x80,0x07,0x83,0xC0,0x07,0x01,0xC0,0x0F,0x01,0xE0,0x0E,0x00,0xE0,0x1E,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // X\n0x00,0x00,0x00,0x1C,0x00,0x70,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0x01,0xE0,0x07,0x01,0xC0,0x07,0x83,0xC0,0x03,0x83,0x80,0x03,0xC3,0x80,0x01,0xC7,0x00,0x01,0xEF,0x00,0x00,0xEE,0x00,0x00,0xFE,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // Y\n0x00,0x00,0x00,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x00,0x01,0xC0,0x00,0x03,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0F,0x00,0x00,0x0E,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x38,0x00,0x00,0x78,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xE0,0x00,0x01,0xC0,0x00,0x03,0xC0,0x00,0x03,0x80,0x00,0x07,0x80,0x00,0x07,0x00,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // Z\n0x01,0xFF,0x00,0x01,0xFF,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xFF,0x00,0x01,0xFF,0x00,  // [\n0x03,0x80,0x00,0x03,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0xE0,  // <backslash>\n0x00,0xFF,0x80,0x00,0xFF,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0xFF,0x80,0x00,0xFF,0x80,  // ]\n0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0xEE,0x00,0x00,0xEE,0x00,0x01,0xC7,0x00,0x01,0xC7,0x00,0x03,0xC7,0x80,0x03,0x83,0x80,0x07,0x83,0xC0,0x07,0x01,0xC0,0x0F,0x01,0xE0,0x02,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,  // ^\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xF8,0x3F,0xFF,0xF8,0x3F,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // _\n0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0xFE,0x00,0x01,0xC7,0x00,0x01,0x83,0x00,0x01,0x83,0x00,0x01,0x83,0x00,0x01,0xC7,0x00,0x00,0xFE,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // `\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x01,0xFF,0x80,0x01,0xFF,0xC0,0x01,0x83,0xE0,0x00,0x01,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x7F,0xE0,0x01,0xFF,0xE0,0x03,0xFF,0xE0,0x07,0xC0,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x80,0xE0,0x03,0xFF,0xE0,0x01,0xFF,0xE0,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // a\n0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x7E,0x00,0x07,0xFF,0x00,0x07,0xFF,0x80,0x07,0x83,0xC0,0x07,0x01,0xC0,0x07,0x01,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x01,0xE0,0x07,0x01,0xC0,0x07,0x07,0xC0,0x07,0xFF,0x80,0x07,0xFF,0x00,0x03,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // b\n0x00,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,0xC0,0x00,0xFF,0xE0,0x03,0xFF,0xE0,0x03,0xE0,0x40,0x07,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x07,0x80,0x00,0x03,0xE0,0x60,0x03,0xFF,0xE0,0x00,0xFF,0xE0,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // c\n0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x7E,0xE0,0x00,0xFF,0xE0,0x01,0xFF,0xE0,0x03,0xC1,0xE0,0x03,0x80,0xE0,0x07,0x80,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x80,0xE0,0x03,0x80,0xE0,0x03,0xE0,0xE0,0x01,0xFF,0xE0,0x00,0xFF,0xE0,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // d\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x01,0xFF,0x00,0x03,0xFF,0x80,0x07,0xC3,0xC0,0x07,0x01,0xC0,0x07,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0E,0x00,0x00,0x0E,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0xC0,0xC0,0x03,0xFF,0xC0,0x01,0xFF,0xC0,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // e\n0x00,0x0F,0xC0,0x00,0x3F,0xF0,0x00,0x7F,0xF0,0x00,0x78,0x30,0x00,0xF0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x0F,0xFF,0xC0,0x0F,0xFF,0xC0,0x0F,0xFF,0xC0,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // f\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x00,0x01,0xFF,0xC0,0x03,0xFF,0xC0,0x07,0x81,0xC0,0x07,0x01,0xC0,0x0F,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x0E,0x01,0xC0,0x07,0x01,0xC0,0x07,0x83,0xC0,0x03,0xFF,0xC0,0x01,0xFF,0xC0,0x00,0xFD,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x00,0x03,0xC0,0x06,0x07,0x80,0x07,0xFF,0x80,0x07,0xFF,0x00,0x03,0xFC,0x00,0x00,0x00,0x00,  // g\n0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0xFC,0x00,0x07,0xFF,0x00,0x07,0xFF,0x80,0x07,0x07,0x80,0x07,0x03,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // h\n0x00,0x00,0x00,0x00,0x60,0x00,0x00,0xF0,0x00,0x00,0xF0,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,0x0F,0xF0,0x00,0x0F,0xF0,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x70,0x00,0x00,0x78,0x20,0x00,0x3F,0xE0,0x00,0x3F,0xE0,0x00,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // i\n0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x0F,0x00,0x00,0x0F,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0x80,0x03,0xFF,0x80,0x03,0xFF,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x06,0x0F,0x00,0x0F,0xFF,0x00,0x0F,0xFE,0x00,0x03,0xF8,0x00,  // j\n0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x01,0xE0,0x07,0x03,0xC0,0x07,0x07,0x80,0x07,0x0F,0x00,0x07,0x1E,0x00,0x07,0x3C,0x00,0x07,0x78,0x00,0x07,0xF0,0x00,0x07,0xE0,0x00,0x07,0xF0,0x00,0x07,0x78,0x00,0x07,0x1C,0x00,0x07,0x0F,0x00,0x07,0x07,0x00,0x07,0x03,0x80,0x07,0x03,0xC0,0x07,0x01,0xE0,0x07,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // k\n0x07,0xF8,0x00,0x07,0xF8,0x00,0x07,0xF8,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x38,0x00,0x00,0x3C,0x10,0x00,0x1F,0xF0,0x00,0x1F,0xF0,0x00,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // l\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xE3,0xC0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0E,0x3C,0xF0,0x0E,0x1C,0x70,0x0E,0x1C,0x70,0x0E,0x1C,0x70,0x0E,0x1C,0x70,0x0E,0x1C,0x70,0x0E,0x1C,0x70,0x0E,0x1C,0x70,0x0E,0x00,0x70,0x0E,0x00,0x70,0x0E,0x00,0x70,0x0E,0x00,0x70,0x0E,0x00,0x70,0x0E,0x00,0x70,0x0E,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // m\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x03,0xFF,0x80,0x03,0xFF,0xC0,0x03,0x83,0xC0,0x03,0x81,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // n\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x01,0xFF,0x00,0x03,0xFF,0x80,0x07,0x83,0xC0,0x07,0x01,0xC0,0x0F,0x01,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x07,0x01,0xE0,0x07,0x01,0xC0,0x07,0x83,0xC0,0x03,0xFF,0x80,0x01,0xFF,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // o\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x07,0xFF,0x00,0x07,0xFF,0x80,0x07,0x07,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x01,0xE0,0x07,0x01,0xC0,0x07,0x83,0xC0,0x07,0xFF,0x80,0x07,0xFF,0x00,0x07,0x7C,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,  // p\n0x00,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,0x80,0x00,0xFF,0xE0,0x01,0xFF,0xE0,0x03,0xE0,0xE0,0x03,0x80,0xE0,0x03,0x80,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x80,0xE0,0x03,0x80,0xE0,0x03,0xC1,0xE0,0x01,0xFF,0xE0,0x00,0xFF,0xE0,0x00,0x3E,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,  // q\n0x00,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,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0x80,0x80,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // r\n0x00,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,0x00,0x01,0xFF,0x80,0x03,0xFF,0x80,0x07,0x81,0x80,0x07,0x00,0x00,0x07,0x00,0x00,0x07,0xC0,0x00,0x03,0xF0,0x00,0x01,0xFE,0x00,0x00,0x7F,0x00,0x00,0x1F,0x80,0x00,0x03,0xC0,0x00,0x01,0xC0,0x00,0x01,0xC0,0x06,0x03,0xC0,0x07,0xFF,0x80,0x07,0xFF,0x80,0x01,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // s\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xF0,0x20,0x00,0x7F,0xE0,0x00,0x7F,0xE0,0x00,0x1F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // t\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x81,0xC0,0x03,0xC1,0xC0,0x03,0xFF,0xC0,0x01,0xFF,0xC0,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // u\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x70,0x1E,0x00,0xF0,0x0E,0x00,0xE0,0x0E,0x00,0xE0,0x0F,0x01,0xE0,0x07,0x01,0xC0,0x07,0x01,0xC0,0x07,0x83,0xC0,0x03,0x83,0x80,0x03,0x83,0x80,0x03,0xC7,0x00,0x01,0xC7,0x00,0x01,0xEF,0x00,0x00,0xEE,0x00,0x00,0xFE,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // v\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x00,0x70,0x1C,0x10,0x70,0x0C,0x38,0xE0,0x0E,0x38,0xE0,0x0E,0x38,0xE0,0x0E,0x28,0xE0,0x0E,0x6C,0xE0,0x0E,0x6C,0xE0,0x06,0x44,0xC0,0x06,0xC6,0xC0,0x06,0xC7,0xC0,0x07,0x87,0xC0,0x07,0x83,0xC0,0x07,0x83,0x80,0x03,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // w\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x01,0xE0,0x0F,0x03,0xC0,0x07,0x03,0x80,0x03,0x87,0x80,0x03,0xCF,0x00,0x01,0xEE,0x00,0x00,0xFC,0x00,0x00,0x7C,0x00,0x00,0x78,0x00,0x00,0x7C,0x00,0x00,0xFE,0x00,0x01,0xEE,0x00,0x01,0xC7,0x00,0x03,0xC3,0x80,0x07,0x83,0xC0,0x0F,0x01,0xC0,0x0E,0x01,0xE0,0x1E,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // x\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x70,0x0F,0x00,0xF0,0x07,0x00,0xE0,0x07,0x00,0xE0,0x07,0x80,0xE0,0x03,0x81,0xE0,0x03,0x81,0xC0,0x03,0xC1,0xC0,0x01,0xC3,0xC0,0x01,0xC3,0x80,0x01,0xE3,0x80,0x00,0xE7,0x80,0x00,0xF7,0x80,0x00,0x77,0x00,0x00,0x7F,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x0F,0xF0,0x00,0x0F,0xF0,0x00,0x0F,0xC0,0x00,  // y\n0x00,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,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x00,0x03,0x80,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x00,0xE0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x03,0x80,0x00,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // z\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x01,0xC0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0xE0,0x00,0x00,0x70,0x00,0x00,0x7F,0x80,0x00,0x1F,0x80,  // {\n0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,  // |\n0x00,0xFC,0x00,0x00,0xFF,0x00,0x00,0x07,0x00,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x01,0xC0,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0xFF,0x00,0x00,0xFC,0x00,  // }\n0x00,0x00,0x00,0x01,0xE0,0x20,0x03,0xF0,0x30,0x07,0xFC,0x70,0x0E,0x3F,0xE0,0x0C,0x0F,0xC0,0x04,0x07,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // ~\n};\n\nsFONT FontUB = {\n  FontUB_Table,\n  24,\t// Width\n  32,\t// Height\n  0x20,\t// First char ' '\n  0x7E\t// Last char '~'\n};\n"
  },
  {
    "path": "fontubb.c",
    "content": "// Ubuntu bold 24x32\n// Font type    : Full (95 characters)\n\n#include \"fonts.h\"\n\nconst uint8_t FontUBB_Table [] =\n{\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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>\n0x00,0x00,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x1C,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // !\n0x00,0x00,0x00,0x03,0xC1,0xE0,0x07,0xE3,0xF0,0x07,0xE3,0xF0,0x07,0xE3,0xF0,0x03,0xE1,0xF0,0x00,0xE0,0x70,0x01,0xC0,0xE0,0x07,0xC1,0xE0,0x1F,0x8F,0xC0,0x1F,0x07,0x80,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // \"\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x78,0xF0,0x00,0x78,0xF0,0x00,0x78,0xF0,0x00,0xF1,0xE0,0x00,0xF1,0xE0,0x00,0xF1,0xE0,0x0F,0xFF,0xF8,0x0F,0xFF,0xF8,0x0F,0xFF,0xF8,0x0F,0xFF,0xF8,0x01,0xE3,0xC0,0x01,0xE3,0xC0,0x01,0xE3,0xC0,0x01,0xE3,0xC0,0x0F,0xFF,0xF8,0x0F,0xFF,0xF8,0x0F,0xFF,0xF8,0x0F,0xFF,0xF8,0x03,0xC7,0x80,0x03,0xC7,0x80,0x03,0xC7,0x80,0x07,0x8F,0x00,0x07,0x8F,0x00,0x07,0x8F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // #\n0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0xFF,0xC0,0x03,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xC0,0x0F,0xC0,0xC0,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0xE0,0x00,0x07,0xFC,0x00,0x07,0xFF,0x00,0x01,0xFF,0xC0,0x00,0xFF,0xE0,0x00,0x1F,0xE0,0x00,0x03,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x08,0x01,0xF0,0x0E,0x03,0xF0,0x0F,0xFF,0xE0,0x1F,0xFF,0xE0,0x1F,0xFF,0xC0,0x03,0xFF,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,  // $\n0x00,0x00,0x00,0x0F,0x80,0x70,0x1F,0xC0,0xE0,0x1F,0xC1,0xC0,0x39,0xE1,0xC0,0x38,0xE3,0x80,0x38,0xE3,0x80,0x38,0xE7,0x00,0x39,0xEE,0x00,0x1F,0xCE,0x00,0x1F,0xDC,0x00,0x0F,0xB8,0x00,0x00,0x38,0x00,0x00,0x73,0xE0,0x00,0x77,0xF0,0x00,0xE7,0xF0,0x01,0xCF,0x78,0x01,0xCE,0x38,0x03,0x8E,0x38,0x07,0x0E,0x38,0x07,0x0E,0x38,0x0E,0x0F,0x78,0x0E,0x07,0xF0,0x1C,0x07,0xF0,0x38,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // %\n0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0xFF,0x00,0x01,0xFF,0x00,0x03,0xFF,0x80,0x03,0xC7,0x80,0x03,0xC7,0x80,0x03,0xC7,0x80,0x03,0xCF,0x80,0x03,0xEF,0x00,0x01,0xFE,0x00,0x01,0xFE,0x00,0x01,0xF8,0x70,0x03,0xFC,0x70,0x07,0xFE,0x70,0x07,0xBF,0x70,0x0F,0x1F,0xF0,0x0F,0x0F,0xF0,0x0F,0x07,0xE0,0x0F,0x03,0xE0,0x0F,0x87,0xF0,0x07,0xFF,0xF0,0x07,0xFF,0xF8,0x03,0xFF,0x78,0x00,0xFC,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // &\n0x00,0x10,0x00,0x00,0x38,0x00,0x00,0x3E,0x00,0x00,0x7F,0x00,0x00,0x1F,0x80,0x00,0x0F,0x00,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // '\n0x00,0x07,0x80,0x00,0x0F,0xC0,0x00,0x1F,0x80,0x00,0x3F,0x00,0x00,0x7E,0x00,0x00,0x7C,0x00,0x00,0xFC,0x00,0x00,0xF8,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0x7C,0x00,0x00,0x7E,0x00,0x00,0x3F,0x00,0x00,0x1F,0x80,0x00,0x0F,0xC0,0x00,0x07,0x80,0x00,0x01,0x00,  // (\n0x00,0xE0,0x00,0x01,0xF8,0x00,0x00,0xFC,0x00,0x00,0x7E,0x00,0x00,0x3F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x80,0x00,0x0F,0x80,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x1F,0x00,0x00,0x3F,0x00,0x00,0x7E,0x00,0x00,0xFC,0x00,0x01,0xF8,0x00,0x00,0xF0,0x00,0x00,0x40,0x00,  // )\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x1E,0x00,0x00,0x1E,0x00,0x03,0x1E,0x30,0x03,0xDC,0xF0,0x03,0xED,0xF0,0x07,0xFF,0xF8,0x07,0xFF,0xF8,0x00,0x3F,0x00,0x00,0x7F,0x80,0x00,0xFF,0xC0,0x00,0xF3,0xC0,0x01,0xF3,0xE0,0x00,0xF3,0x80,0x00,0x61,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // *\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x0F,0xFF,0xF0,0x0F,0xFF,0xF0,0x0F,0xFF,0xF0,0x0F,0xFF,0xF0,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // +\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x1F,0x00,0x00,0x3F,0x80,0x00,0x3F,0x80,0x00,0x3F,0x80,0x00,0x1F,0x80,0x00,0x0F,0x80,0x00,0x07,0x00,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x7E,0x00,0x00,0x78,0x00,0x00,0x70,0x00,  // ,\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0x80,0x01,0xFF,0x80,0x01,0xFF,0x80,0x01,0xFF,0x80,0x01,0xFF,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,  // -\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x3E,0x00,0x00,0x7F,0x00,0x00,0x7F,0x00,0x00,0x7F,0x00,0x00,0x3E,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // .\n0x00,0x03,0xE0,0x00,0x07,0xE0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x0F,0xC0,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x3F,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x7E,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0xFC,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x03,0xF0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x07,0xE0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x0F,0x80,0x00,  // /\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x01,0xFF,0x00,0x03,0xFF,0x80,0x07,0xFF,0xC0,0x0F,0x87,0xC0,0x0F,0x03,0xE0,0x0F,0x03,0xE0,0x1E,0x01,0xE0,0x1E,0x01,0xE0,0x1E,0x31,0xF0,0x1E,0x79,0xF0,0x1E,0x79,0xF0,0x1E,0x79,0xF0,0x1E,0x31,0xF0,0x1E,0x01,0xF0,0x1E,0x01,0xE0,0x1E,0x01,0xE0,0x0F,0x03,0xE0,0x0F,0x03,0xE0,0x0F,0x87,0xC0,0x07,0xFF,0xC0,0x03,0xFF,0x80,0x01,0xFF,0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 0\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x3E,0x00,0x00,0x7E,0x00,0x01,0xFE,0x00,0x07,0xFE,0x00,0x0F,0xFE,0x00,0x07,0xFE,0x00,0x07,0xBE,0x00,0x06,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x07,0xFF,0xF0,0x07,0xFF,0xF0,0x07,0xFF,0xF0,0x07,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 1\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x07,0xFF,0x00,0x0F,0xFF,0x80,0x1F,0xFF,0xC0,0x0F,0x07,0xE0,0x04,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x07,0xC0,0x00,0x0F,0xC0,0x00,0x1F,0x80,0x00,0x3F,0x00,0x00,0x7E,0x00,0x00,0xFC,0x00,0x01,0xF8,0x00,0x03,0xE0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x0F,0x80,0x00,0x0F,0xFF,0xF0,0x0F,0xFF,0xF0,0x0F,0xFF,0xF0,0x0F,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 2\n0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFC,0x00,0x07,0xFF,0x00,0x0F,0xFF,0x80,0x07,0xFF,0x80,0x07,0x0F,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x0F,0x80,0x01,0xFF,0x80,0x01,0xFE,0x00,0x01,0xFF,0x80,0x01,0xFF,0xC0,0x00,0x0F,0xC0,0x00,0x07,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x07,0xE0,0x06,0x0F,0xC0,0x0F,0xFF,0xC0,0x0F,0xFF,0x80,0x0F,0xFF,0x00,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 3\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x0F,0xC0,0x00,0x1F,0xC0,0x00,0x3F,0xC0,0x00,0x3F,0xC0,0x00,0x7F,0xC0,0x00,0xF7,0xC0,0x01,0xF7,0xC0,0x01,0xE7,0xC0,0x03,0xC7,0xC0,0x07,0xC7,0xC0,0x07,0x87,0xC0,0x0F,0x07,0xC0,0x1F,0x07,0xC0,0x1F,0xFF,0xF8,0x1F,0xFF,0xF8,0x1F,0xFF,0xF8,0x1F,0xFF,0xF8,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 4\n0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xC0,0x03,0xFF,0xC0,0x03,0xFF,0xC0,0x03,0xFF,0xC0,0x03,0xC0,0x00,0x03,0xC0,0x00,0x03,0xC0,0x00,0x07,0xC0,0x00,0x07,0xF8,0x00,0x07,0xFE,0x00,0x07,0xFF,0x80,0x07,0xFF,0xC0,0x00,0x3F,0xC0,0x00,0x07,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x07,0xE0,0x0C,0x0F,0xC0,0x0F,0xFF,0xC0,0x1F,0xFF,0x80,0x1F,0xFF,0x00,0x07,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 5\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x1F,0xC0,0x00,0x7F,0xC0,0x00,0xFF,0xC0,0x01,0xFC,0x00,0x03,0xF0,0x00,0x03,0xE0,0x00,0x07,0xC0,0x00,0x07,0x80,0x00,0x07,0xFF,0x00,0x0F,0xFF,0x80,0x0F,0xFF,0xC0,0x0F,0xFF,0xC0,0x0F,0x87,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x07,0xC3,0xE0,0x07,0xC7,0xC0,0x07,0xFF,0xC0,0x03,0xFF,0x80,0x01,0xFF,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 6\n0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0x03,0xE0,0x00,0x07,0xC0,0x00,0x07,0x80,0x00,0x0F,0x80,0x00,0x0F,0x00,0x00,0x1F,0x00,0x00,0x1E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 7\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x03,0xFF,0x80,0x07,0xFF,0xC0,0x0F,0xFF,0xC0,0x0F,0x83,0xE0,0x0F,0x01,0xE0,0x0F,0x01,0xE0,0x0F,0x01,0xE0,0x0F,0x83,0xC0,0x0F,0xE7,0xC0,0x07,0xFF,0x80,0x01,0xFF,0x00,0x07,0xFF,0x80,0x0F,0x9F,0xC0,0x0F,0x03,0xE0,0x1E,0x01,0xF0,0x1E,0x00,0xF0,0x1E,0x00,0xF0,0x1E,0x00,0xF0,0x1F,0x83,0xF0,0x0F,0xFF,0xE0,0x0F,0xFF,0xC0,0x03,0xFF,0x80,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 8\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7C,0x00,0x01,0xFF,0x00,0x03,0xFF,0x80,0x07,0xFF,0xC0,0x07,0xC7,0xC0,0x0F,0x83,0xE0,0x0F,0x81,0xE0,0x0F,0x81,0xE0,0x0F,0x81,0xE0,0x0F,0x81,0xE0,0x0F,0xC1,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x03,0xFF,0xE0,0x00,0xFF,0xE0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0xC0,0x00,0x0F,0x80,0x00,0x7F,0x00,0x07,0xFE,0x00,0x07,0xFC,0x00,0x07,0xF0,0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // 9\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x7C,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x00,0x7C,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x7C,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x00,0x7C,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // :\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x7C,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x00,0x7C,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x7C,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x00,0x7E,0x00,0x00,0x3E,0x00,0x00,0x0C,0x00,0x00,0x1C,0x00,0x00,0x78,0x00,0x01,0xF8,0x00,0x01,0xE0,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,  // ;\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x01,0xE0,0x00,0x0F,0xF0,0x00,0x3F,0xF0,0x01,0xFF,0xE0,0x07,0xFF,0x00,0x0F,0xF8,0x00,0x0F,0xC0,0x00,0x0F,0xC0,0x00,0x0F,0xF8,0x00,0x07,0xFF,0x00,0x01,0xFF,0xE0,0x00,0x3F,0xF0,0x00,0x0F,0xF0,0x00,0x01,0xE0,0x00,0x00,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,0x00,0x00,0x00,  // <\n0x00,0x00,0x00,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,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,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,  // =\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x07,0x80,0x00,0x07,0xE0,0x00,0x0F,0xF8,0x00,0x07,0xFE,0x00,0x01,0xFF,0x80,0x00,0x7F,0xE0,0x00,0x0F,0xE0,0x00,0x03,0xE0,0x00,0x0F,0xE0,0x00,0x7F,0xE0,0x01,0xFF,0x80,0x07,0xFE,0x00,0x0F,0xF8,0x00,0x07,0xE0,0x00,0x07,0x80,0x00,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,  // >\n0x0F,0x80,0x00,0x00,0x7E,0x00,0x03,0xFF,0x80,0x03,0xFF,0xC0,0x01,0xFF,0xC0,0x01,0x87,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x07,0xE0,0x00,0x0F,0xC0,0x00,0x0F,0x80,0x00,0x1F,0x80,0x00,0x1F,0x00,0x00,0x3E,0x00,0x00,0x3C,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // ?\n0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0xFF,0x80,0x03,0xFF,0xC0,0x03,0xC3,0xE0,0x07,0x01,0xE0,0x07,0x00,0xF0,0x0E,0x00,0xF0,0x0E,0x0F,0xF0,0x0E,0x1F,0xF0,0x1C,0x3F,0xF0,0x1C,0x3F,0xF0,0x1C,0x7C,0xF0,0x1C,0x78,0xF0,0x1C,0x78,0xF0,0x1C,0x78,0xF0,0x1C,0x78,0xF0,0x1C,0x78,0xF0,0x1C,0x78,0xF0,0x1C,0x7C,0xF0,0x1E,0x3F,0xF0,0x0E,0x3F,0xF0,0x0E,0x1F,0xF0,0x0F,0x07,0xE0,0x07,0xC0,0x00,0x07,0xC0,0x00,0x03,0xE0,0x20,0x01,0xFF,0xE0,0x00,0xFF,0xE0,0x00,0x1F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,  // @\n0x00,0x00,0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x00,0xFF,0x00,0x01,0xEF,0x00,0x01,0xEF,0x00,0x01,0xEF,0x80,0x03,0xE7,0x80,0x03,0xC7,0x80,0x03,0xC7,0xC0,0x07,0xC7,0xC0,0x07,0xC3,0xC0,0x07,0x83,0xC0,0x07,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x3F,0x00,0xF8,0x3E,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // A\n0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFC,0x00,0x0F,0xFF,0x80,0x0F,0xFF,0xC0,0x0F,0xFF,0xC0,0x0F,0x87,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x87,0xC0,0x0F,0xFF,0x80,0x0F,0xFF,0x00,0x0F,0xFF,0xC0,0x0F,0xFF,0xE0,0x0F,0x83,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x83,0xF0,0x0F,0xFF,0xE0,0x0F,0xFF,0xC0,0x0F,0xFF,0x80,0x07,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // B\n0x00,0x00,0x00,0x00,0x3F,0x80,0x00,0xFF,0xE0,0x01,0xFF,0xF0,0x03,0xFF,0xF0,0x07,0xE0,0xE0,0x0F,0xC0,0x20,0x0F,0x80,0x00,0x0F,0x80,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x80,0x00,0x0F,0x80,0x00,0x0F,0xC0,0x20,0x07,0xE0,0x60,0x07,0xFF,0xF0,0x03,0xFF,0xF0,0x00,0xFF,0xE0,0x00,0x3F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // C\n0x00,0x00,0x00,0x0F,0xF8,0x00,0x0F,0xFF,0x00,0x0F,0xFF,0x80,0x0F,0xFF,0xC0,0x0F,0x8F,0xC0,0x0F,0x87,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x87,0xE0,0x0F,0x8F,0xC0,0x0F,0xFF,0xC0,0x0F,0xFF,0x80,0x0F,0xFE,0x00,0x0F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // D\n0x00,0x00,0x00,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xFF,0xF0,0x07,0xFF,0xF0,0x07,0xFF,0xF0,0x07,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // E\n0x00,0x00,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0xFF,0xC0,0x0F,0xFF,0xC0,0x0F,0xFF,0xC0,0x0F,0xFF,0xC0,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // F\n0x00,0x00,0x00,0x00,0x3F,0xF0,0x00,0xFF,0xF0,0x01,0xFF,0xE0,0x03,0xFF,0xE0,0x07,0xF0,0x60,0x0F,0xC0,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0xC1,0xF0,0x07,0xE1,0xF0,0x07,0xFF,0xF0,0x03,0xFF,0xF0,0x01,0xFF,0xF0,0x00,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // G\n0x00,0x00,0x00,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // H\n0x00,0x00,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // I\n0x00,0x00,0x00,0x03,0xFF,0xE0,0x03,0xFF,0xE0,0x03,0xFF,0xE0,0x03,0xFF,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x07,0xE0,0x07,0x0F,0xC0,0x07,0xFF,0xC0,0x0F,0xFF,0x80,0x07,0xFF,0x00,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // J\n0x00,0x00,0x00,0x0F,0x81,0xF0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x87,0xC0,0x0F,0x8F,0xC0,0x0F,0x8F,0x80,0x0F,0x9F,0x00,0x0F,0xBF,0x00,0x0F,0xFE,0x00,0x0F,0xFC,0x00,0x0F,0xFC,0x00,0x0F,0xFC,0x00,0x0F,0xFC,0x00,0x0F,0xFE,0x00,0x0F,0xFF,0x00,0x0F,0xBF,0x80,0x0F,0x9F,0x80,0x0F,0x8F,0xC0,0x0F,0x87,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x80,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // K\n0x00,0x00,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // L\n0x00,0x00,0x00,0x07,0x80,0xF0,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x07,0xE3,0xF0,0x07,0xE3,0xF0,0x07,0xE3,0xF0,0x07,0x77,0x70,0x07,0x77,0x70,0x07,0x77,0x70,0x07,0x7F,0x70,0x07,0x3E,0x70,0x0F,0x3E,0x78,0x0F,0x3E,0x78,0x0F,0xBE,0x78,0x0F,0x9C,0xF8,0x0F,0x80,0xF8,0x0F,0x80,0xF8,0x0F,0x80,0xF8,0x0F,0x80,0xF8,0x0F,0x80,0xF8,0x0F,0x80,0xF8,0x0F,0x80,0xF8,0x0F,0x80,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // M\n0x00,0x00,0x00,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x07,0xE1,0xF0,0x07,0xE1,0xF0,0x07,0xE1,0xF0,0x07,0xF1,0xF0,0x07,0xF1,0xF0,0x07,0xF9,0xF0,0x07,0xF9,0xF0,0x07,0xF9,0xF0,0x07,0xDD,0xF0,0x07,0xDD,0xF0,0x07,0xCF,0xF0,0x07,0xCF,0xF0,0x07,0xCF,0xF0,0x07,0xC7,0xF0,0x07,0xC7,0xF0,0x07,0xC7,0xF0,0x07,0xC3,0xF0,0x07,0xC3,0xF0,0x07,0xC3,0xF0,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // N\n0x00,0x00,0x00,0x00,0x7E,0x00,0x01,0xFF,0x00,0x03,0xFF,0x80,0x07,0xFF,0xC0,0x0F,0xC7,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0xC7,0xE0,0x07,0xFF,0xC0,0x03,0xFF,0x80,0x01,0xFF,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // O\n0x00,0x00,0x00,0x0F,0xFE,0x00,0x0F,0xFF,0x80,0x0F,0xFF,0xC0,0x0F,0xFF,0xE0,0x0F,0x87,0xE0,0x0F,0x83,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x83,0xF0,0x0F,0x87,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xC0,0x0F,0xFF,0x80,0x0F,0xFE,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // P\n0x00,0x00,0x00,0x00,0x7E,0x00,0x01,0xFF,0x00,0x03,0xFF,0x80,0x07,0xFF,0xC0,0x0F,0xC7,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0xC7,0xE0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x03,0xFF,0x80,0x00,0xFE,0x00,0x00,0x7C,0x00,0x00,0x3F,0x80,0x00,0x3F,0xF0,0x00,0x1F,0xE0,0x00,0x07,0xE0,0x00,0x00,0xE0,0x00,0x00,0x00,  // Q\n0x00,0x00,0x00,0x0F,0xFC,0x00,0x0F,0xFF,0x00,0x0F,0xFF,0x80,0x0F,0xFF,0xC0,0x0F,0x8F,0xC0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x8F,0xC0,0x0F,0xFF,0xC0,0x0F,0xFF,0x80,0x0F,0xFF,0x00,0x0F,0xFE,0x00,0x0F,0x9F,0x00,0x0F,0x9F,0x00,0x0F,0x8F,0x80,0x0F,0x8F,0xC0,0x0F,0x87,0xC0,0x0F,0x83,0xC0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x81,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // R\n0x00,0x00,0x00,0x00,0xFF,0x00,0x03,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0x80,0x0F,0xC0,0x80,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0xC0,0x00,0x0F,0xF0,0x00,0x07,0xFE,0x00,0x03,0xFF,0x00,0x01,0xFF,0x80,0x00,0x7F,0xC0,0x00,0x0F,0xE0,0x00,0x07,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x04,0x03,0xE0,0x07,0x07,0xE0,0x0F,0xFF,0xC0,0x0F,0xFF,0xC0,0x07,0xFF,0x80,0x01,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // S\n0x00,0x00,0x00,0x1F,0xFF,0xF0,0x1F,0xFF,0xF0,0x1F,0xFF,0xF0,0x1F,0xFF,0xF0,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // T\n0x00,0x00,0x00,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x83,0xF0,0x0F,0x83,0xE0,0x0F,0xFF,0xE0,0x07,0xFF,0xC0,0x03,0xFF,0x80,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // U\n0x00,0x00,0x00,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x0F,0x01,0xE0,0x0F,0x01,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x07,0x83,0xC0,0x07,0x83,0xC0,0x07,0x83,0xC0,0x07,0x83,0xC0,0x03,0xC7,0x80,0x03,0xC7,0x80,0x03,0xC7,0x80,0x03,0xC7,0x80,0x01,0xEF,0x00,0x01,0xEF,0x00,0x01,0xEF,0x00,0x00,0xEE,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // V\n0x00,0x00,0x00,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1E,0x39,0xF0,0x1E,0x39,0xF0,0x1E,0x7C,0xF0,0x1E,0x7C,0xF0,0x1E,0x7C,0xF0,0x0E,0xEC,0xE0,0x0E,0xEE,0xE0,0x0E,0xEE,0xE0,0x0E,0xCE,0xE0,0x0F,0xC7,0xE0,0x0F,0xC7,0xE0,0x0F,0xC7,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // W\n0x00,0x00,0x00,0x1F,0x01,0xF8,0x0F,0x01,0xF0,0x0F,0x83,0xE0,0x07,0x83,0xE0,0x07,0xC7,0xC0,0x03,0xC7,0xC0,0x03,0xEF,0x80,0x01,0xEF,0x00,0x01,0xFF,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x00,0x7C,0x00,0x00,0xFE,0x00,0x00,0xFF,0x00,0x01,0xFF,0x00,0x03,0xEF,0x80,0x03,0xEF,0x80,0x07,0xC7,0xC0,0x07,0xC7,0xC0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x3E,0x01,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // X\n0x00,0x00,0x00,0x3E,0x00,0xF8,0x1F,0x00,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x07,0x83,0xC0,0x07,0xC7,0xC0,0x03,0xC7,0x80,0x03,0xEF,0x80,0x01,0xEF,0x00,0x01,0xFF,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // Y\n0x00,0x00,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0x07,0xC0,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x3E,0x00,0x00,0x3C,0x00,0x00,0x7C,0x00,0x00,0x78,0x00,0x00,0xF8,0x00,0x01,0xF0,0x00,0x01,0xE0,0x00,0x03,0xE0,0x00,0x03,0xC0,0x00,0x07,0xC0,0x00,0x07,0x80,0x00,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // Z\n0x01,0xFF,0xC0,0x01,0xFF,0xC0,0x01,0xFF,0xC0,0x01,0xFF,0xC0,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xFF,0xC0,0x01,0xFF,0xC0,0x01,0xFF,0xC0,0x01,0xFF,0xC0,  // [\n0x03,0xE0,0x00,0x03,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x00,0xF8,  // <backslash>\n0x01,0xFF,0xC0,0x01,0xFF,0xC0,0x01,0xFF,0xC0,0x01,0xFF,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x01,0xFF,0xC0,0x01,0xFF,0xC0,0x01,0xFF,0xC0,0x01,0xFF,0xC0,  // ]\n0x00,0x00,0x00,0x00,0x7C,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x01,0xFF,0x00,0x03,0xEF,0x80,0x03,0xEF,0x80,0x07,0xC7,0xC0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x02,0x00,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // ^\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,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,0xFF,0xF8,0x3F,0xFF,0xF8,0x3F,0xFF,0xF8,0x3F,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // _\n0x00,0x3C,0x00,0x00,0xFF,0x00,0x00,0xFF,0x00,0x01,0xE7,0x80,0x01,0xC3,0x80,0x01,0xC3,0x80,0x01,0xE7,0x80,0x01,0xFF,0x00,0x00,0xFF,0x00,0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // `\n0x00,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,0x00,0x01,0xFF,0xC0,0x01,0xFF,0xE0,0x01,0xFF,0xE0,0x00,0x03,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x7F,0xF0,0x01,0xFF,0xF0,0x03,0xFF,0xF0,0x07,0xFF,0xF0,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x07,0xE1,0xF0,0x07,0xFF,0xF0,0x03,0xFF,0xF0,0x01,0xFF,0xF0,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // a\n0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0xFF,0x00,0x0F,0xFF,0x80,0x0F,0xFF,0xC0,0x0F,0xFF,0xE0,0x0F,0xC7,0xE0,0x0F,0x83,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x83,0xE0,0x0F,0x87,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xC0,0x0F,0xFF,0x80,0x03,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // b\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xC0,0x01,0xFF,0xE0,0x03,0xFF,0xE0,0x07,0xFF,0xC0,0x0F,0xE0,0x40,0x0F,0x80,0x00,0x1F,0x80,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x00,0x00,0x1F,0x80,0x00,0x0F,0x80,0x00,0x0F,0xE0,0x00,0x07,0xFF,0xE0,0x03,0xFF,0xE0,0x01,0xFF,0xE0,0x00,0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // c\n0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x00,0xFF,0xE0,0x01,0xFF,0xE0,0x03,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xC7,0xE0,0x0F,0xC3,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0xC3,0xE0,0x07,0xE3,0xE0,0x07,0xFF,0xE0,0x03,0xFF,0xE0,0x01,0xFF,0xE0,0x00,0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // d\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x00,0x01,0xFF,0x80,0x03,0xFF,0xC0,0x07,0xFF,0xE0,0x0F,0xC3,0xE0,0x0F,0x81,0xF0,0x1F,0x01,0xF0,0x1F,0xFF,0xF0,0x1F,0xFF,0xF0,0x1F,0xFF,0xF0,0x1F,0xFF,0xF0,0x1F,0x00,0x00,0x0F,0x80,0x00,0x0F,0xC0,0x40,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x01,0xFF,0xE0,0x00,0x7F,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // e\n0x00,0x1F,0xE0,0x00,0x7F,0xF8,0x00,0xFF,0xF8,0x00,0xFF,0xF0,0x01,0xF8,0x10,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x1F,0xFF,0xE0,0x1F,0xFF,0xE0,0x1F,0xFF,0xE0,0x1F,0xFF,0xE0,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // f\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x80,0x03,0xFF,0xE0,0x07,0xFF,0xE0,0x0F,0xFF,0xE0,0x0F,0xC3,0xE0,0x1F,0x83,0xE0,0x1F,0x03,0xE0,0x1F,0x03,0xE0,0x1F,0x03,0xE0,0x1F,0x03,0xE0,0x1F,0x03,0xE0,0x1F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0xFF,0xE0,0x07,0xFF,0xE0,0x03,0xFF,0xE0,0x01,0xFF,0xE0,0x00,0x03,0xE0,0x00,0x03,0xE0,0x0C,0x07,0xC0,0x0F,0xFF,0xC0,0x0F,0xFF,0x80,0x0F,0xFF,0x00,0x03,0xFC,0x00,0x00,0x00,0x00,  // g\n0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0xFE,0x00,0x0F,0xFF,0x80,0x0F,0xFF,0xC0,0x0F,0xFF,0xC0,0x0F,0x87,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // h\n0x00,0xF0,0x00,0x01,0xF8,0x00,0x01,0xF8,0x00,0x01,0xF8,0x00,0x01,0xF8,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF8,0x00,0x1F,0xF8,0x00,0x1F,0xF8,0x00,0x1F,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xFC,0x20,0x00,0x7F,0xE0,0x00,0x7F,0xF0,0x00,0x3F,0xF0,0x00,0x0F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // i\n0x00,0x07,0x80,0x00,0x0F,0xC0,0x00,0x0F,0xC0,0x00,0x0F,0xC0,0x00,0x0F,0xC0,0x00,0x07,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xC0,0x03,0xFF,0xC0,0x03,0xFF,0xC0,0x03,0xFF,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x02,0x0F,0xC0,0x07,0xFF,0x80,0x07,0xFF,0x80,0x0F,0xFF,0x00,0x01,0xFC,0x00,  // j\n0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x83,0xF0,0x0F,0x87,0xE0,0x0F,0x87,0xC0,0x0F,0x8F,0x80,0x0F,0x9F,0x00,0x0F,0xBE,0x00,0x0F,0xFC,0x00,0x0F,0xF8,0x00,0x0F,0xF8,0x00,0x0F,0xFC,0x00,0x0F,0xFE,0x00,0x0F,0x9F,0x00,0x0F,0x8F,0x80,0x0F,0x87,0xC0,0x0F,0x87,0xE0,0x0F,0x83,0xE0,0x0F,0x81,0xF0,0x0F,0x81,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // k\n0x0F,0xFC,0x00,0x0F,0xFC,0x00,0x0F,0xFC,0x00,0x0F,0xFC,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7C,0x00,0x00,0x7E,0x10,0x00,0x3F,0xF8,0x00,0x3F,0xF8,0x00,0x1F,0xF8,0x00,0x0F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // l\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF3,0xE0,0x0F,0xFF,0xF0,0x0F,0xFF,0xF0,0x0F,0xFF,0xF8,0x0F,0x3C,0xF8,0x0F,0x3C,0x78,0x0F,0x3C,0x78,0x0F,0x3C,0x78,0x0F,0x3C,0x78,0x0F,0x3C,0x78,0x0F,0x3C,0x78,0x0F,0x00,0x78,0x0F,0x00,0x78,0x0F,0x00,0x78,0x0F,0x00,0x78,0x0F,0x00,0x78,0x0F,0x00,0x78,0x0F,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // m\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0x00,0x07,0xFF,0xC0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xC3,0xF0,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // n\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0x00,0x01,0xFF,0x80,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x0F,0xC7,0xE0,0x0F,0x83,0xE0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xF0,0x0F,0x83,0xE0,0x0F,0xC7,0xE0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x01,0xFF,0x80,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // o\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFE,0x00,0x0F,0xFF,0x80,0x0F,0xFF,0xC0,0x0F,0xFF,0xE0,0x0F,0x87,0xE0,0x0F,0x83,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x83,0xF0,0x0F,0x87,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xC0,0x0F,0xFF,0x80,0x0F,0xFF,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,  // p\n0x00,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,0xC0,0x01,0xFF,0xF0,0x03,0xFF,0xF0,0x07,0xFF,0xF0,0x07,0xE1,0xF0,0x07,0xC1,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0x81,0xF0,0x0F,0xC1,0xF0,0x07,0xE3,0xF0,0x07,0xFF,0xF0,0x03,0xFF,0xF0,0x01,0xFF,0xF0,0x00,0xFF,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,  // q\n0x00,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,0xC0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xC0,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // r\n0x00,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,0x00,0x03,0xFF,0xC0,0x07,0xFF,0xC0,0x0F,0xFF,0xC0,0x0F,0x81,0x80,0x0F,0x80,0x00,0x0F,0xC0,0x00,0x07,0xF8,0x00,0x07,0xFF,0x00,0x01,0xFF,0x80,0x00,0x3F,0xC0,0x00,0x07,0xE0,0x00,0x03,0xE0,0x06,0x03,0xE0,0x0F,0xFF,0xE0,0x0F,0xFF,0xC0,0x0F,0xFF,0x80,0x01,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // s\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x1F,0xFF,0xF0,0x1F,0xFF,0xF0,0x1F,0xFF,0xF0,0x1F,0xFF,0xF0,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF0,0x00,0x01,0xF8,0x20,0x01,0xFF,0xF0,0x00,0xFF,0xF0,0x00,0x7F,0xF0,0x00,0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // t\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xE0,0x0F,0xC3,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x03,0xFF,0xE0,0x00,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // u\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x01,0xF0,0x1F,0x01,0xF0,0x1F,0x01,0xE0,0x0F,0x03,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xC0,0x07,0x87,0xC0,0x07,0x87,0xC0,0x07,0xC7,0x80,0x03,0xCF,0x80,0x03,0xCF,0x00,0x03,0xFF,0x00,0x01,0xFF,0x00,0x01,0xFE,0x00,0x00,0xFE,0x00,0x00,0xFC,0x00,0x00,0xFC,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // v\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x78,0x3C,0x00,0x78,0x3C,0x00,0x78,0x3C,0x00,0x78,0x3C,0x38,0x78,0x1C,0x3C,0x70,0x1C,0x7C,0x70,0x1C,0x7C,0x70,0x1C,0x7E,0xF0,0x1E,0xFE,0xF0,0x1E,0xEE,0xF0,0x1E,0xEE,0xF0,0x0F,0xEF,0xE0,0x0F,0xC7,0xE0,0x0F,0xC7,0xE0,0x0F,0x83,0xE0,0x0F,0x83,0xC0,0x07,0x83,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // w\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x01,0xF0,0x0F,0x83,0xE0,0x07,0x87,0xC0,0x07,0xC7,0xC0,0x03,0xEF,0x80,0x01,0xEF,0x00,0x01,0xFF,0x00,0x00,0xFE,0x00,0x00,0x7C,0x00,0x00,0xFE,0x00,0x00,0xFE,0x00,0x01,0xFF,0x00,0x03,0xEF,0x80,0x03,0xCF,0x80,0x07,0x87,0xC0,0x0F,0x83,0xE0,0x0F,0x03,0xE0,0x1F,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // x\n0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x80,0xF8,0x0F,0x80,0xF8,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x07,0xC1,0xF0,0x03,0xE1,0xE0,0x03,0xE3,0xE0,0x03,0xE3,0xE0,0x01,0xE3,0xC0,0x01,0xF3,0xC0,0x01,0xF7,0xC0,0x00,0xFF,0x80,0x00,0xFF,0x80,0x00,0x7F,0x80,0x00,0x7F,0x00,0x00,0x3F,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x04,0x7C,0x00,0x07,0xFC,0x00,0x0F,0xF8,0x00,0x0F,0xF0,0x00,0x07,0xC0,0x00,  // y\n0x00,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,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x07,0xFF,0xC0,0x00,0x0F,0x80,0x00,0x1F,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x7C,0x00,0x00,0xF8,0x00,0x00,0xF0,0x00,0x01,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x07,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // z\n0x00,0x1F,0xE0,0x00,0x7F,0xE0,0x00,0x7F,0xE0,0x00,0xFF,0xE0,0x00,0xFC,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x01,0xF8,0x00,0x0F,0xF0,0x00,0x0F,0xC0,0x00,0x0F,0xC0,0x00,0x0F,0xF0,0x00,0x01,0xF0,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xF8,0x00,0x00,0xFC,0x00,0x00,0xFF,0xE0,0x00,0x7F,0xE0,0x00,0x7F,0xE0,0x00,0x1F,0xE0,  // {\n0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,0x00,0x3E,0x00,  // |\n0x03,0xFC,0x00,0x03,0xFF,0x00,0x03,0xFF,0x00,0x03,0xFF,0x80,0x00,0x1F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0xC0,0x00,0x07,0xF8,0x00,0x01,0xF8,0x00,0x01,0xF8,0x00,0x07,0xF8,0x00,0x07,0xC0,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x0F,0x80,0x00,0x1F,0x80,0x03,0xFF,0x80,0x03,0xFF,0x00,0x03,0xFF,0x00,0x03,0xFC,0x00,  // }\n0x00,0x00,0x00,0x03,0xC0,0x60,0x07,0xF0,0x78,0x0F,0xFC,0xF8,0x0F,0xFF,0xF0,0x1E,0x3F,0xF0,0x0E,0x0F,0xE0,0x00,0x03,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,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  // ~\n};\n\nsFONT FontUBB = {\n  FontUBB_Table,\n  24,\t// Width\n  32,\t// Height\n  0x20,\t// First char ' '\n  0x7E\t// Last char '~'\n};\n\n"
  },
  {
    "path": "hmi.c",
    "content": "/*\n * hmi.c\n *\n * Created: Apr 2021\n * Author: Arjan te Marvelde\n * \n * This file contains the HMI driver, processing user inputs.\n * It will also do the logic behind these, and write feedback to the LCD.\n *\n * *** MMI controls ***\n *\n * The 4 buttons have the following functions (GP_BTN_x):\n * 0 - Enter, confirm\t[V]\t: Used to select menu items or make choices from a list\n * 1 - Escape, cancel\t[X]\t: Used to exit a (sub)menu or cancel the current action\n * 2 - Left\t\t\t\t[<]\t: Used to move left, e.g. to select a digit\n * 3 - Right\t\t\t[>]\t: Used to move right, e.g. to select a digit\n *\n * The rotary encoder (ENCA, ENCB) controls an up/down counter connected to some field. \n * It may be that the encoder has a bushbutton as well, this can be connected to GP4.\n *     ___     ___\n * ___|   |___|   |___  A\n *   ___     ___     _\n * _|   |___|   |___|   B\n *\n * Encoder channel A triggers on falling edge. \n * Depending on B level, count is incremented or decremented.\n * \n * The PTT is connected to GP_PTT_IN connects to Microphone PTT switch (active low).\n * A separate PTT output (GP_PTT_OUT) is used to signal other system components (active high).\n *\n *\n * *** Display layout ***\n *\n * TFT 320x240, divided in 4 areas:\n * +--------------------------+\n * | v USB       [||||||||||] | ---> Rx/Tx, Modulation, S-meter\n * | >  0dB   PTT   Slow      | ---> Display main settings\n * | +----------------------+ |\n * | |   1 4 0 7 4 . 0   kHz| | ---> Frequency of carrier\n * | +----------------------+ |\n * |                          | \\\n * |                          |  |-> Three menu lines: RF gain, Vox, AGC settings, etc.\n * |                          | / \n * |    [V]  [<]  [>]  [X]    | ---> Button labels (Accept, Left, Right, Cancel)\n * +--------------------------+\n *\n * In the hmi TUNE state only tuning is possible: \n *   Left '<' and Right '>' buttons to select digit, active digit is highlighted\n *   Encoder to change value, \n *   Accept 'V' button to commit change.\n *\n * Use Cancel 'X' button to enter the hmi MENU state for parameter settings.\n * In parameter settings:\n *   Encoder to change parameter value\n *   Accept to accept the shown value\n *   Left/Right to change parameter (if not accepted first, new value is discarded)\n *   Cancel to exit parameter settings\n *\n * Parameter\tValues\t\t\t\t\t\t\t\n * ------------------------------------------\n * Mode:\t\tUSB, LSB, AM, CW\t\t\t\t\n * AGC:\t\t\tFast, Slow, Off\t\t\t\t\t\n * Pre:\t\t\t+10dB, 0dB, -10dB, -20dB, -30dB\t\n * Vox:\t\t\tNoVOX, Low, Medium, High\t\t\n *\n * --to be extended--\n */\n#include <stdio.h>\n#include <string.h>\n#include \"pico/stdlib.h\"\n#include \"hardware/timer.h\"\n#include \"hardware/clocks.h\"\n#include \"hardware/gpio.h\"\n\n#include \"uSDR.h\"\n#include \"lcd.h\"\n#include \"hmi.h\"\n#include \"dsp.h\"\n#include \"si5351.h\"\n#include \"relay.h\"\n\n/*\n * Some macros\n */\n#ifndef MIN\n#define MIN(x, y)        ((x)<(y)?(x):(y))  // Get min value\n#endif\n#ifndef MAX\n#define MAX(x, y)        ((x)>(y)?(x):(y))  // Get max value\n#endif\n\n\n/*\n * GPIO masks\n */\n#define GP_MASK_IN\t((1<<GP_ENC_A)|(1<<GP_ENC_B)|(1<<GP_BTN_0)|(1<<GP_BTN_1)|(1<<GP_BTN_2)|(1<<GP_BTN_3))\n#define GP_MASK_OUT\t(1<<GP_PTT_OUT)\n\n/*\n * IRQ event flags\n */\n#define GPIO_IRQ_ALL\t\t(GPIO_IRQ_LEVEL_LOW|GPIO_IRQ_LEVEL_HIGH|GPIO_IRQ_EDGE_FALL|GPIO_IRQ_EDGE_RISE)\n#define GPIO_IRQ_EDGE_ALL\t(GPIO_IRQ_EDGE_FALL|GPIO_IRQ_EDGE_RISE)\n\n\n/*********************************************************************************************************************/\n/*** HMI control logic - Finite State Machine                                                                      ***/\n/*********************************************************************************************************************/\n\n/*\n * Events are generated by the different buttons and rotary encoder.\n * Depending on HMI state the event leads to a certain action.\n * \n * The FSM is a 2 dimensional array indexed with state and event.\n * Each element contains a function call for changing content and a pointer to the next state.\n * The function arranges all parameters for that specific state.\n *\n * Using an FSM gives more control over the HMI behavour than specifc coding.\n */\n\n// HMI State definitions\n#define HMI_S_TUN\t\t\t0\n#define HMI_S_MOD\t\t\t1\n#define HMI_S_AGC\t\t\t2\n#define HMI_S_PRE\t\t\t3\n#define HMI_S_VOX\t\t\t4\n#define HMI_NSTATES\t\t\t5\n\n// HMI Event definitions\n#define HMI_E_INC\t\t\t0\n#define HMI_E_DEC\t\t\t1\n#define HMI_E_ACC\t\t\t2\n#define HMI_E_LFT\t\t\t3\n#define HMI_E_RGT\t\t\t4\n#define HMI_E_CAN\t\t\t5\n#define HMI_NEVENTS\t\t\t6\n\n// Define FSM element\ntypedef struct\n{\n\tvoid (*f)(int event);\t\t\t\t\t\t\t\t\t\t\t\t\t// State/event function call\n\tint next_state;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Next state in FSM\n} fsm_t;\n\nint hmi_event, hmi_state;\t\t\t\t\t\t\t\t\t\t\t\t\t// Last event and state\n\nint   hmi_digit_i, hmi_digit_b;\t\t\t\t\t\t\t\t\t\t\t\t// Active tune digit and backup\nint   hmi_i_mod, hmi_b_mod;\t\t\t\t\t\t\t\t\t\t\t\t\t// MOD menu indexand backup\nint   hmi_i_agc, hmi_b_agc;\t\t\t\t\t\t\t\t\t\t\t\t\t// AGC menu index and backup\nint   hmi_i_pre, hmi_b_pre;\t\t\t\t\t\t\t\t\t\t\t\t\t// PRE menu index and backup\nint   hmi_i_vox, hmi_b_vox;\t\t\t\t\t\t\t\t\t\t\t\t\t// VOX menu index and backup\n\n\n// FSM : No operation\nvoid hmi_nop(int event){};\n\n\n// FSM : Handle events when in TUN state\nuint32_t hmi_freq;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Frequency from Tune state\nint\t\t hmi_b_bpf;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Bandpass filter backup\nint      hmi_s_bpf[5] = {REL_LPF2, REL_BPF6, REL_BPF12, REL_BPF24, REL_BPF40};\nuint32_t hmi_step[6] = {10000000, 1000000, 100000, 10000, 1000, 100};\t\t// Frequency digit increments\n#define HMI_MAXFREQ\t\t30000000\n#define HMI_MINFREQ\t\t     100\n#define HMI_MULFREQ            1\t\t\t\t\t\t\t\t\t\t\t// Factor between HMI and VFO frequency\nvoid hmi_tun(int evt)\n{\n\tif (evt == HMI_E_CAN)\t\t\t\t\t\t\t\t\t\t\t\t\t// Leave TUNE mode\n\t{\n\t\thmi_digit_b = hmi_digit_i;\t\t\t\t\t\t\t\t\t\t\t// Store tuning digit\n\t\thmi_digit_i = -1;\n\t\thmi_i_mod = hmi_b_mod;\t\t\t\t\t\t\t\t\t\t\t\t// Restore backup values\n\t\thmi_i_pre = hmi_b_pre;\n\t\thmi_i_agc = hmi_b_agc;\n\t\thmi_i_vox = hmi_b_vox;\n\t\treturn;\n\t}\n\t\t\n\tswitch (evt)\n\t{\n\tcase HMI_E_INC:\n\t\tif (hmi_freq < (HMI_MAXFREQ - hmi_step[hmi_digit_i]))\t\t\t\t// Boundary check\n\t\t\thmi_freq += hmi_step[hmi_digit_i];\t\t\t\t\t\t\t\t// Increment selected digit\n\t\tbreak;\n\tcase HMI_E_DEC:\t\n\t\tif (hmi_freq > (HMI_MINFREQ + hmi_step[hmi_digit_i]))\t\t\t\t// Boundary check\n\t\t\thmi_freq -= hmi_step[hmi_digit_i];\t\t\t\t\t\t\t\t// Decrement selected digit\n\t\tbreak;\n\tcase HMI_E_RGT:\n\t\thmi_digit_i = (hmi_digit_i<5)?hmi_digit_i+1:5;\t\t\t\t\t\t// Digit to the right\n\t\tbreak;\n\tcase HMI_E_LFT:\n\t\thmi_digit_i = (hmi_digit_i>0)?hmi_digit_i-1:0;\t\t\t\t\t\t// Digit to the left\n\t\tbreak;\n\t}\n};\n\n\n// FSM : Handle events when in MOD state\n#define HMI_NMOD\t4\nchar* hmi_d_mod[HMI_NMOD] = {\"USB\",\"LSB\",\"AM \",\"CW \"};\t\t\t\t\t\t// MOD display strings\nint   hmi_s_mod[HMI_NMOD] = {MODE_USB, MODE_LSB, MODE_AM, MODE_CW};\t\t\t// MOD target setting in dsp.c\nvoid hmi_mod(int evt)\n{\n\tswitch (evt)\n\t{\n\tcase HMI_E_ACC:\n\t\thmi_b_mod = hmi_i_mod;\t\t\t\t\t\t\t\t\t\t\t\t// Store value in backup\n\t\tdsp_setmode(hmi_s_mod[hmi_b_mod]);\t\t\t\t\t\t\t\t\t//   and acivate.\n\t\tbreak;\n\tcase HMI_E_CAN:\n\t\thmi_digit_i = hmi_digit_b;\t\t\t\t\t\t\t\t\t\t\t// Leave MENU mode, restore tune digit\n\tcase HMI_E_RGT:\n\tcase HMI_E_LFT:\n\t\thmi_i_mod = hmi_b_mod;\t\t\t\t\t\t\t\t\t\t\t\t// Restore backup value\n\t\tbreak;\n\tcase HMI_E_INC:\n\t\tif (hmi_i_mod<HMI_NMOD-1) hmi_i_mod++;\n\t\tbreak;\n\tcase HMI_E_DEC:\n\t\tif (hmi_i_mod>0) hmi_i_mod--;\n\t\tbreak;\n\t}\t\n};\n\n\n// FSM : Handle events when in AGC state\n#define HMI_NAGC\t3\nchar* hmi_d_agc[HMI_NAGC] = {\"None\",\"Slow\",\"Fast\"};\t\t\t\t\t\t\t// AGC display strings\nint   hmi_s_agc[HMI_NAGC] = {AGC_NONE, AGC_SLOW, AGC_FAST};\t\t\t\t\t// AGC target setting in dsp.c\nvoid hmi_agc(int evt)\n{\n\tswitch (evt)\n\t{\n\tcase HMI_E_ACC:\n\t\thmi_b_agc = hmi_i_agc;\t\t\t\t\t\t\t\t\t\t\t\t// Store value in backup\n\t\tdsp_setagc(hmi_s_agc[hmi_b_agc]);\t\t\t\t\t\t\t\t\t//   and activate setting.\n\t\tbreak;\n\tcase HMI_E_CAN:\n\t\thmi_digit_i = hmi_digit_b;\t\t\t\t\t\t\t\t\t\t\t// Leave MENU mode, restore tune digit\n\tcase HMI_E_RGT:\n\tcase HMI_E_LFT:\n\t\thmi_i_agc = hmi_b_agc;\t\t\t\t\t\t\t\t\t\t\t\t// Restore backup value\n\t\tbreak;\n\tcase HMI_E_INC:\n\t\tif (hmi_i_agc<HMI_NAGC-1) hmi_i_agc++;\n\t\tbreak;\n\tcase HMI_E_DEC:\n\t\tif (hmi_i_agc>0) hmi_i_agc--;\n\t\tbreak;\n\t}\t\n};\n\n\n// FSM : Handle events when in PRE state\n#define HMI_NPRE\t5\nchar* hmi_d_pre[HMI_NPRE] = {\"-30dB\",\"-20dB\",\"-10dB\",\"  0dB\",\"+10dB\"};\t\t\t\t\t\t// PRE level display strings\nint   hmi_s_pre[HMI_NPRE] = {REL_ATT_30, REL_ATT_20, REL_ATT_10, REL_ATT_00, REL_PRE_10};\t// PRE target setting in dsp.c\nvoid hmi_pre(int evt)\n{\n\tswitch (evt)\n\t{\n\tcase HMI_E_ACC:\n\t\thmi_b_pre = hmi_i_pre;\t\t\t\t\t\t\t\t\t\t\t\t// Exit with change: store value in backup\n\t\trelay_setattn(hmi_s_pre[hmi_b_pre]);\t\t\t\t\t\t\t\t//   and activate.\n\t\tbreak;\n\tcase HMI_E_CAN:\n\t\thmi_digit_i = hmi_digit_b;\t\t\t\t\t\t\t\t\t\t\t// Leave MENU mode, restore tune digit\n\tcase HMI_E_RGT:\n\tcase HMI_E_LFT:\n\t\thmi_i_pre = hmi_b_pre;\t\t\t\t\t\t\t\t\t\t\t\t// Exit without change: restore backup value\n\t\tbreak;\n\tcase HMI_E_INC:\n\t\tif (hmi_i_pre<HMI_NPRE-1) hmi_i_pre++;\n\t\tbreak;\n\tcase HMI_E_DEC:\n\t\tif (hmi_i_pre>0) hmi_i_pre--;\n\t\tbreak;\n\t}\t\n};\n\n\n// FSM : Handle events when in VOX state\n#define HMI_NVOX\t4\nchar* hmi_d_vox[HMI_NVOX] = {\"None\",\"Low\",\"Medium\",\"High\"};\t\t\t        // VOX level display strings\nint   hmi_s_vox[HMI_NVOX] = {VOX_OFF, VOX_LOW, VOX_MEDIUM, VOX_HIGH};\t\t// VOX target setting in dsp.c\nvoid  hmi_vox(int evt)\n{\n\tswitch (evt)\n\t{\n\tcase HMI_E_ACC:\n\t\thmi_b_vox = hmi_i_vox;\t\t\t\t\t\t\t\t\t\t\t\t// Exit with change: store value in backup\n\t\tdsp_setvox(hmi_s_vox[hmi_b_vox]);\t\t\t\t\t\t\t\t\t//   and activate.\n\t\tbreak;\n\tcase HMI_E_CAN:\n\t\thmi_digit_i = hmi_digit_b;\t\t\t\t\t\t\t\t\t\t\t// Leave MENU mode, restore tune digit\n\tcase HMI_E_RGT:\n\tcase HMI_E_LFT:\n\t\thmi_i_vox = hmi_b_vox;\t\t\t\t\t\t\t\t\t\t\t\t// Exit without change: restore backup value\n\t\tbreak;\n\tcase HMI_E_INC:\n\t\tif (hmi_i_vox<HMI_NVOX-1) hmi_i_vox++;\n\t\tbreak;\n\tcase HMI_E_DEC:\n\t\tif (hmi_i_vox>0) hmi_i_vox--;\n\t\tbreak;\n\t}\t\n};\n\n\n// Statemachine definition\nfsm_t hmi_fsm[HMI_NEVENTS][HMI_NSTATES] = \n{\n/*       {       TUN       },{      MOD        },{      AGC        },{      PRE        },{       VOX       } */\n/*INC*/\t{{hmi_tun,HMI_S_TUN},{hmi_mod,HMI_S_MOD},{hmi_agc,HMI_S_AGC},{hmi_pre,HMI_S_PRE},{hmi_vox,HMI_S_VOX}},\n/*DEC*/\t{{hmi_tun,HMI_S_TUN},{hmi_mod,HMI_S_MOD},{hmi_agc,HMI_S_AGC},{hmi_pre,HMI_S_PRE},{hmi_vox,HMI_S_VOX}},\n/*ACC*/\t{{hmi_tun,HMI_S_TUN},{hmi_mod,HMI_S_MOD},{hmi_agc,HMI_S_AGC},{hmi_pre,HMI_S_PRE},{hmi_vox,HMI_S_VOX}},\n/*LFT*/\t{{hmi_tun,HMI_S_TUN},{hmi_mod,HMI_S_VOX},{hmi_agc,HMI_S_MOD},{hmi_pre,HMI_S_AGC},{hmi_vox,HMI_S_PRE}},\n/*RGT*/\t{{hmi_tun,HMI_S_TUN},{hmi_mod,HMI_S_AGC},{hmi_agc,HMI_S_PRE},{hmi_pre,HMI_S_VOX},{hmi_vox,HMI_S_MOD}},\n/*CAN*/\t{{hmi_tun,HMI_S_MOD},{hmi_mod,HMI_S_TUN},{hmi_agc,HMI_S_TUN},{hmi_pre,HMI_S_TUN},{hmi_vox,HMI_S_TUN}}\n};\n\n\n// Determine event and invoke the HMI state machine\nuint32_t callcount;\nvoid hmi_callback(uint gpio, uint32_t events)\n{\n\tcallcount++;\n\t// Determine the HMI event\n\tif (!((1<<gpio)&GP_MASK_IN)) return;\t\t\t\t\t\t\t\t\t// Exit if not HMI control\n\tif (!(events&GPIO_IRQ_EDGE_FALL)) return;\t\t\t\t\t\t\t\t// Exit if not falling edge\n\tswitch (gpio)\n\t{\n\tcase GP_ENC_A:\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Encoder\n\t\thmi_event = gpio_get(GP_ENC_B)?HMI_E_DEC:HMI_E_INC;\t\t\t\t\t// Increment when low, decrement otherwise\n\t\tbreak;\n\tcase GP_BTN_3:\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Enter\n\t\thmi_event = HMI_E_ACC;\n\t\tbreak;\n\tcase GP_BTN_2:\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Left\n\t\thmi_event = HMI_E_LFT;\n\t\tbreak;\n\tcase GP_BTN_1:\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Right\n\t\thmi_event = HMI_E_RGT;\n\t\tbreak;\n\tcase GP_BTN_0:\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Cancel\n\t\thmi_event = HMI_E_CAN;\n\t\tbreak;\n\t}\n\t\n\t// Invoke HMI State Machine\n\thmi_fsm[hmi_event][hmi_state].f(hmi_event);\n\thmi_state = hmi_fsm[hmi_event][hmi_state].next_state;\n}\n\n\n/*********************************************************************************************************************/\n/*** Prepare display layout, printing areas and buttons                                                            ***/\n/*********************************************************************************************************************/\n\n/* \n * Left and right margins : 10 pix\n * Top lines   : 72 rows,   0 -  71,\tmax 2 lines of 32 pix (4, 36) or 24 pix (8, 40)\n * Freq window : 58 rows,  72 - 129,\tmax symbol height 50 pix (76)\n * Menu window : 76 rows, 130 - 205,\tmax 3 lines of 24 pix (132, 156, 180)\n * Button row  : 34 rows, 206 - 239,\tmax symbol height 32 pix\n */\n#define HMI_BGND\tBGNDCOLOR\n#define HMI_TEXT\tLGRAY\n#define HMI_HIGH\tLBLUE\n#define HMI_FREQ\tLGREEN\n#define HMI_BUTT\tWHITE\n\n// Initialize overall display layout\nvoid hmi_layout()\n{\n\tsFONT *sym = &FontSYMs;\n\t\n\t// Initialize display layout\n\tlcd_clear(   0,  0, LCD_WIDTH, LCD_HEIGHT, HMI_BGND);\t\t\t\t\t\t\t\t\t// Paint display\n\tlcd_clear(  15,  6, 94, 27, BLACK);\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Mode window\n\tlcd_clear( 115,  6, 94, 27, BLACK);\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Pre-amp window\n\tlcd_clear( 215,  6, 90, 27, BLACK);\t\t\t\t\t\t\t\t\t\t\t\t\t\t// S-meter window\n\tlcd_clear(  15, 39, 94, 27, BLACK);\t\t\t\t\t\t\t\t\t\t\t\t\t\t// \n\tlcd_clear( 115, 39, 94, 27, BLACK);\t\t\t\t\t\t\t\t\t\t\t\t\t\t// \n\tlcd_clear( 215, 39, 90, 27, BLACK);\t\t\t\t\t\t\t\t\t\t\t\t\t\t// \n\tlcd_clear(  15, 72, LCD_WIDTH-30, 58, BLACK);\t\t\t\t\t\t\t\t\t\t\t// Freq window\n\n\t// Paint 4 Buttons\n\tlcd_clear( 32, 216, 62, 23, BLACK); lcd_putxy( 56, 219, 'S', sym, HMI_BUTT, BLACK);\t\t// Enter\n\tlcd_clear( 98, 216, 62, 23, BLACK); lcd_putxy(122, 219, '?', sym, HMI_BUTT, BLACK);\t\t// Left\n\tlcd_clear(164, 216, 62, 23, BLACK); lcd_putxy(188, 219, 'T', sym, HMI_BUTT, BLACK);\t\t// Right\n\tlcd_clear(230, 216, 62, 23, BLACK); lcd_putxy(254, 219, 'r', sym, HMI_BUTT, BLACK);\t\t// Escape\n}\n\n\n// Print top line, font Arial Rounded 16x24\nvoid hmi_topline()\n{\n\tsFONT *sym = &FontSYMs;\t\t\t\t\t\t\t\t\t\t\t\t// 16x16\n\tsFONT *fs = &FontAR;\t\t\t\t\t\t\t\t\t\t\t\t// 16x24\n\tint sval;\n\t\n\t// Tx or Rx symbol & Mode\n\tlcd_putxy  ( 22, 12, (tx_enabled?'O':'P'), sym, ORANGE, BLACK);\n\tlcd_writexy( 48,  8, hmi_d_mod[hmi_b_mod], fs, HMI_TEXT, BLACK);\n\t\n\t// Current Rx pre-amp setting\n\tlcd_writexy( 120, 8, hmi_d_pre[hmi_b_pre], fs, HMI_TEXT, BLACK);\n\t\n\t// S-Meter\n\tsval = get_sval();\n\tlcd_clear( 222, 11, 4, 16, (sval> 0?LBLUE:HMI_BGND));\n\tlcd_clear( 228, 11, 4, 16, (sval> 1?LBLUE:HMI_BGND));\n\tlcd_clear( 234, 11, 4, 16, (sval> 2?LBLUE:HMI_BGND));\n\tlcd_clear( 240, 11, 4, 16, (sval> 3?LGREEN:HMI_BGND));\n\tlcd_clear( 246, 11, 4, 16, (sval> 4?LGREEN:HMI_BGND));\n\tlcd_clear( 252, 11, 4, 16, (sval> 5?LGREEN:HMI_BGND));\n\tlcd_clear( 258, 11, 4, 16, (sval> 6?YELLOW:HMI_BGND));\n\tlcd_clear( 264, 11, 4, 16, (sval> 7?YELLOW:HMI_BGND));\n\tlcd_clear( 270, 11, 4, 16, (sval> 8?YELLOW:HMI_BGND));\n\tlcd_clear( 276, 11, 4, 16, (sval>90?ORANGE:HMI_BGND));\n\tlcd_clear( 282, 11, 4, 16, (sval>91?ORANGE:HMI_BGND));\n\tlcd_clear( 288, 11, 4, 16, (sval>92?ORANGE:HMI_BGND));\n\tlcd_clear( 294, 11, 4, 16, (sval>93?ORANGE:HMI_BGND));\n\t\n\t// Second topline\n}\n\n\n// Print frequency window, 1 row 7 Segment 32x50\n// Highlight digit only when in TUNE mode\nvoid hmi_frequency(double freq, int dig)\n{\n\tsFONT *f7 = &Font7SPP;\n\tsFONT *fb = &FontGR;\n\tchar s[32];\n\tint i;\n\t\n\tsprintf(s,\"%7.1f\",(double)freq/1000.0);\t\t\t\t\t\t\t\t\t// Format is important: 12345.6\n\ts[7] = 0;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Terminate to be sure\n\tfor(i=0; i<7; i++) if (s[i]==0x20) s[i] = 0x2f;\t\t\t\t\t\t\t// Replace spaces with correct font char\n\tfor(i=0; i<5; i++) \t\t\t\t\t\t\t\t\t\t\t\t\t\t// Leading 5 digits\n\t{\n\t\tif (hmi_digit_i==i)\n\t\t\tlcd_putxy( 20+i*32,76,s[i], f7, HMI_HIGH, BLACK);\n\t\telse\n\t\t\tlcd_putxy( 20+i*32,76,s[i], f7, HMI_FREQ, BLACK);\n\t}\n\tlcd_putxy( 20+5*32,76,s[i++], f7, HMI_FREQ, BLACK);\t\t\t\t\t\t// Decimal point\n\tif (hmi_digit_i==5)\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Final digit\n\t\tlcd_putxy( 20+6*32,76,s[6], f7, HMI_HIGH, BLACK);\n\telse\n\t\tlcd_putxy( 20+6*32,76,s[6], f7, HMI_FREQ, BLACK);\n\tlcd_writexy(250,96,\"kHz\", fb, HMI_FREQ, BLACK);\t\t\t\t\t\t\t// Units\n}\n\n\n// Print menu area, 3 rows Arial Rounded 16x24\nvoid hmi_menu()\n{\n\tsFONT *fs = &FontAR;\t\t\t\t\t\t\t\t\t\t\t\t\t// 16x24\n\tchar s[18];\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Max 17 characters of 16 pix width\n\t\n\t// Prints current menu selection for the active parameter\n\t// lcd_clear( 0, 130, LCD_WIDTH, 76, HMI_BGND);\n\ts[17] = 0;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Terminate string\n\tswitch (hmi_state)\n\t{\n\t\tcase HMI_S_TUN:\n\t\t\tlcd_writexy(  20, 180 ,\"                 \" , fs, HMI_TEXT, HMI_BGND);\n\t\t\tbreak;\n\t\tcase HMI_S_MOD:\n\t\t\tlcd_writexy(  20, 180 ,\"Mode: \" , fs, HMI_TEXT, HMI_BGND);\t\t// 6 leading characters\n\t\t\tsprintf(s, \"%-11.11s\", hmi_d_mod[hmi_i_mod]);\t\t\t\t\t// Left aligned, field width 11, max chars 11\n\t\t\tlcd_writexy( 20+6*16, 180 ,s , fs, HMI_HIGH, HMI_BGND);\n\t\t\tbreak;\n\t\tcase HMI_S_AGC:\n\t\t\tlcd_writexy(  20, 180 ,\"AGC: \" , fs, HMI_TEXT, HMI_BGND);\t\t// 5 leading characters\n\t\t\tsprintf(s, \"%-12.12s\", hmi_d_agc[hmi_i_agc]);\t\t\t\t\t// Left aligned, field width 12, max chars 12\n\t\t\tlcd_writexy( 20+5*16, 180 ,s , fs, HMI_HIGH, HMI_BGND);\n\t\t\tbreak;\n\t\tcase HMI_S_PRE:\n\t\t\tlcd_writexy( 20, 180 ,\"Gain: \" , fs, HMI_TEXT, HMI_BGND);\t\t// 6 leading characters\n\t\t\tsprintf(s, \"%-11.11s\", hmi_d_pre[hmi_i_pre]);\t\t\t\t\t// Left aligned, field width 11, max chars 11\n\t\t\tlcd_writexy( 20+6*16, 180 ,s , fs, HMI_HIGH, HMI_BGND);\n\t\t\tbreak;\n\t\tcase HMI_S_VOX:\n\t\t\tlcd_writexy( 20, 180 ,\"Vox: \" , fs, HMI_TEXT, HMI_BGND);\t\t// 5 leading characters\n\t\t\tsprintf(s, \"%-12.12s\", hmi_d_vox[hmi_i_vox]);\t\t\t\t\t// Left aligned, field width 12, max chars 12\n\t\t\tlcd_writexy( 20+5*16, 180 ,s , fs, HMI_HIGH, HMI_BGND);\n\t\t\tbreak;\n\t}\n\t\n\n}\n\n\n/*********************************************************************************************************************/\n/*** HMI evaluation routine                                                                                        ***/\n/*********************************************************************************************************************/\n\n/*\n * This core routine is called on a regular basis from the main loop.\n * - Test PTT state\n * - Redraw the display, representing the current state.\n * - If a parameter was changed by HMI, activate it in system\n */\n#define PTT_DEBOUNCE\t3\t\t\t\t\t\t\t\t\t\t\t\t\t// Nr of cycles for debounce\nint ptt_state;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Debounce counter\nbool ptt_active;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Resulting state\nvoid hmi_evaluate(void)\n{\n\tint hmi_i_bpf;\n\n\t// PTT detect and debounce\n\tif (gpio_get(GP_PTT_IN))\t\t\t\t\t\t\t\t\t\t\t\t// Get PTT level\n\t{\n\t\tif (ptt_state<PTT_DEBOUNCE)\t\t\t\t\t\t\t\t\t\t\t// Increment debounce counter when high\n\t\t\tptt_state++;\n\t}\n\telse \n\t{\n\t\tif (ptt_state>0)\t\t\t\t\t\t\t\t\t\t\t\t\t// Decrement debounce counter when low\n\t\t\tptt_state--;\n\t}\n\tif (ptt_state == PTT_DEBOUNCE)\t\t\t\t\t\t\t\t\t\t\t// Reset PTT when debounced level high\n\t\tptt_active = false;\n\tif (ptt_state == 0)\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Set PTT active when debounced level low\n\t\tptt_active = true;\n\n\t// Redraw display, assuming layout is not changed\n\thmi_topline( );\n\thmi_frequency( hmi_freq, hmi_digit_i);\n\thmi_menu( );\n\t\n\t// Update frequency corresponding to latest entered values\n\tif (0<si_evaluate(0, HMI_MULFREQ*(hmi_freq-FC_OFFSET)))\t\t\t\t\t// See if VFO was updated\n\t{\n\t\tif      (hmi_freq < 2500000UL)\thmi_i_bpf = 0;\t\t\t\t\t\t// Check bandfilter setting\n\t\telse if (hmi_freq < 6000000UL)\thmi_i_bpf = 1;\n\t\telse if (hmi_freq < 12000000UL) hmi_i_bpf = 2;\n\t\telse if (hmi_freq < 24000000UL) hmi_i_bpf = 3;\n\t\telse \t\t\t\t\t\t\thmi_i_bpf = 4;\n\t\tif (hmi_i_bpf != hmi_b_bpf)\t\t\t\t\t\t\t\t\t\t\t// Force update when band changed\n\t\t{\n\t\t\thmi_b_bpf = hmi_i_bpf;\t\t\t\t\t\t\t\t\t\t\t// Save setting in backup\n\t\t\trelay_setband(hmi_s_bpf[hmi_b_bpf]);\t\t\t\t\t\t\t//   and activate.\n\t\t}\n\t}\n}\n\n\n\n/*\n * Initialize the User interface\n */\nvoid hmi_init(void)\n{\n\t/*\n\t * Notes on using GPIO interrupts: \n\t * The callback handles interrupts for all GPIOs with IRQ enabled.\n\t * Level interrupts don't seem to work properly.\n\t * For debouncing, the GPIO pins should be pulled-up and connected to gnd with 100nF.\n\t * PTT has separate debouncing logic\n\t */\n\t \n\t// Init output GPIOs\n\tgpio_init_mask(GP_MASK_OUT);\n\tgpio_set_dir_out_masked(GP_MASK_OUT);\n\t\n\t// Init input GPIOs\n\tgpio_init_mask(GP_MASK_IN|GP_PTT_IN);\n\tgpio_set_dir_in_masked(GP_MASK_IN|GP_PTT_IN);\n\t\n\t// Enable pull-ups\n\tgpio_pull_up(GP_ENC_A);\n\tgpio_pull_up(GP_ENC_B);\n\tgpio_pull_up(GP_BTN_0);\n\tgpio_pull_up(GP_BTN_1);\n\tgpio_pull_up(GP_BTN_2);\n\tgpio_pull_up(GP_BTN_3);\n\tgpio_pull_up(GP_PTT_IN);\n\t\n\t// Enable interrupt on edge detected\n\tgpio_set_irq_enabled(GP_ENC_A, GPIO_IRQ_EDGE_ALL, true);\n\tgpio_set_irq_enabled(GP_BTN_0, GPIO_IRQ_EDGE_ALL, true);\n\tgpio_set_irq_enabled(GP_BTN_1, GPIO_IRQ_EDGE_ALL, true);\n\tgpio_set_irq_enabled(GP_BTN_2, GPIO_IRQ_EDGE_ALL, true);\n\tgpio_set_irq_enabled(GP_BTN_3, GPIO_IRQ_EDGE_ALL, true);\n\t\n\t// PTT will be polled, no IRQ\n\t//gpio_set_irq_enabled(GP_PTT_IN, GPIO_IRQ_EDGE_ALL, false);\n\n\t// Install callback, one function for all GPIOs, and enable interrupt line\n\tgpio_set_irq_enabled_with_callback(GP_ENC_A, GPIO_IRQ_EDGE_ALL, true, hmi_callback);\n\t\t\n\t// Initialize frequency\n\thmi_state = HMI_S_TUN;\n\thmi_digit_i = 4;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// TUNE state: kHz active digit \n\thmi_freq  = 7074000UL;\t\t\t\t\t\t\t\t\t\t\t\t\t// Initial frequency\n\thmi_b_bpf = REL_BPF12;\t\t\t\t\t\t\t\t\t\t\t\t\t// Initial bandpass filter selection\n\n\tsi_setphase(0, PH270);\t\t\t\t\t\t\t\t\t\t\t\t\t// Set phase to 270deg (depends on mixer type)\n\tsi_evaluate(0, HMI_MULFREQ*(hmi_freq-FC_OFFSET));\t\t\t\t\t\t// Set freq to 7074 kHz (depends on mixer type)\n\t\n\t// PTT_IN debounce\n\tptt_state  = PTT_DEBOUNCE;\n\tptt_active = false;\n\t\n\t// Initialize HMI indices\n\thmi_b_mod = 0;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// USB\n\thmi_b_pre = 3;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0dB\n\thmi_b_agc = 1;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Slow\n\thmi_b_vox = 0;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Off\n\n\t// Update uSDR settings according to HMI initialisation\t\n\tdsp_setmode(hmi_s_mod[hmi_b_mod]);\n\tdsp_setvox(hmi_s_vox[hmi_b_vox]);\n\tdsp_setagc(hmi_s_agc[hmi_b_agc]);\t\n\trelay_setattn(hmi_s_pre[hmi_b_pre]);\n\trelay_setband(hmi_s_bpf[hmi_b_bpf]);\n\n\t// Force HMI refresh\n\thmi_layout();\n}\n\n"
  },
  {
    "path": "hmi.h",
    "content": "#ifndef __HMI_H__\n#define __HMI_H__\n/* \n * hmi.h\n *\n * Created: Apr 2021\n * Author: Arjan te Marvelde\n *\n * See hmi.c for more information \n */\n\nextern bool ptt_active;\n\nvoid hmi_init(void);\nvoid hmi_evaluate(void);\n\n#endif\n"
  },
  {
    "path": "lcd.c",
    "content": "/*\r\n * lcd.c\r\n *\r\n * Created: Sep 2024\r\n * Author: Arjan te Marvelde\r\n * \r\n *\r\n * This file contains the driver for a Waveshare 240x320 colour LCD display, based on a \r\n * IL9341 controller. In contrast with a 16x2 alphanumeric display, this one is graphical \r\n * and uses a SPI interface. \r\n * For alphanumeric solutions please download a previous version.\r\n\r\n   LCD_BL\t\t\t\t\t10\t\t\t// Pin 14: LCD backlight, on\r\n   LCD_RST\t\t\t\t\t11\t\t\t// Pin 15: LCD reset, on\r\n   LCD_DC\t\t\t\t\t12\t\t\t// Pin 16: LCD data/control, on\r\n   LCD_CS\t\t\t\t\t13\t\t\t// Pin 17: Not connected, do not use\r\n   LCD_CLK\t\t\t\t\t14\t\t\t// Pin 19: LCD SPI clock\r\n   LCD_MOSI\t\t\t\t\t15\t\t\t// Pin 20: LCD SPI data\r\n   \r\n * The Waveshare TFT display and the ILI9341 controller have been configured for a portrait \r\n * orientation by default. The controller contains Graphic RAM memory that refreshes the display \r\n * in a certain order determined by some settings. The writing of pixels from MCU into the GRAM\r\n * also follows a certain preset order. This writing is sequential, without specific addressing. \r\n * The default order is line (page) after line. \r\n * The order refresh and GRAM writing can be set with the Memory Access Control command (0x36). \r\n * \r\n * This command has the following bits in the data field:\r\n * 7 - MY\tRow address order, how pixels are transferred from MCU to GRAM\r\n * 6 - MX\tColumn address order, how pixels are transferred from MCU to GRAM\r\n * 5 - MV\tRow/Column swap, write columns instead of rows. This is handy when display in landscape.\r\n * 4 - ML\tVertical refresh order, how pixels are transferred from GRAM to display\r\n * 3 - BGR\tBGR color order instead of RGB\r\n * 2 - MH\tHorizontal refresh order, how pixels are transferred from GRAM to display\r\n * 1 - X\r\n * 0 - X\r\n * You need to play with bits 7, 6 and 5 to get the proper orientation. \r\n * In my case 101 worked for a 320 wide x 240 high display with origin in the upper left corner.\r\n * Changing the refresh order (ML or MH) will flip the display vertically or horizontally respectively.\r\n *\r\n * Transferring actual pixel data from MCU to GRAM can be initiated by either Memory write (0x2C) \r\n * or Memory write continue (0x3C) commands. The first command resets the page and column pointers \r\n * to the page origin, while the other command continues from the last position. \r\n */\r\n \r\n#include <stdio.h>\r\n#include <string.h>\r\n#include \"pico/stdlib.h\"\r\n#include \"hardware/spi.h\"\r\n#include \"hardware/timer.h\"\r\n#include \"hardware/clocks.h\"\r\n\r\n#include \"uSDR.h\"\r\n#include \"lcd.h\"\r\n#include \"fonts.h\"\r\n\r\n#define LCD_MASK_OUT\t\t\t((1<<LCD_BL)|(1<<LCD_RST)|(1<<LCD_DC)|(1<<LCD_CS))\r\n\r\n\r\n/** ILI9341 commands **/\r\n#define LCD_NOP\t\t\t0x00\t\t// No Operation\r\n#define LCD_RESET\t\t0x01\t\t// Software reset\r\n#define LCD_SLPON\t\t0x10\t\t// Sleep mode ON\r\n#define LCD_SLPOFF\t\t0x11\t\t// Sleep mode OFF\r\n#define LCD_PTLON\t\t0x12\t\t// Set partial mode\r\n#define LCD_NORON\t\t0x13\t\t// Set normal mode\r\n#define LCD_INVOFF\t\t0x20\t\t// Turn inverse mode OFF\r\n#define LCD_INVON\t\t0x21\t\t// Turn inverse mode ON\r\n#define LCD_GAMMASET\t0x26\t\t// Set gamma\r\n#define LCD_DISPOFF\t\t0x28\t\t// Turn display OFF\r\n#define LCD_DISPON\t\t0x29\t\t// Turn display ON\r\n\r\n#define LCD_COLSET\t\t0x2A\t\t// Set column address\r\n#define LCD_PAGSET\t\t0x2B\t\t// Set page address\r\n#define LCD_MEMWR\t\t0x2C\t\t// Memory write, after reset window start location\r\n#define LCD_COLOR\t\t0x2D\t\t// Color set\r\n#define LCD_PTLAREA\t\t0x30\t\t// Partial area set\r\n#define LCD_VERSCR\t\t0x33\t\t// Vertical scrolling area\r\n#define LCD_TEAROFF\t\t0x34\t\t// Tear effect line OFF\r\n#define LCD_TEARON\t\t0x35\t\t// Tear effect line ON\r\n#define LCD_MACTL\t\t0x36\t\t// Memory access control\r\n#define LCD_VERSCRST\t0x37\t\t// Vertical scroll start address\r\n#define LCD_IDLEOFF\t\t0x38\t\t// Idle mode off, full color range\r\n#define LCD_IDLEON\t\t0x39\t\t// Idle mode on, reduced color range\r\n#define LCD_PIXFMT\t\t0x3A\t\t// Pixel format set\r\n#define LCD_MEMWRCONT\t0x3C\t\t// Memory write, continuing from last location\r\n#define LCD_TEARSCANL\t0x44\t\t// Set tear scanline\r\n#define LCD_DISPBR\t\t0x51\t\t// Set display brightness\r\n#define LCD_CTRLDIS\t\t0x53\t\t// Write CTRL display\r\n#define LCD_ADAPBR\t\t0x55\t\t// Set adaptive brightness control\r\n#define LCD_MINBR\t\t0x5E\t\t// Set CABC minimum brightness\r\n\r\n#define LCD_RGBCTL\t\t0xB0\t\t// RGB interface signal control\r\n#define LCD_FRMCTL1\t\t0xB1\t\t// Frame control (normal mode)\r\n#define LCD_FRMCTL2\t\t0xB2\t\t// Frame control (idle mode)\r\n#define LCD_FRMCTL3\t\t0xB3\t\t// Frame control (partial mode)\r\n#define LCD_INVCTL\t\t0xB4\t\t// Display inversion control\r\n#define LCD_BLANKCTL\t0xB5\t\t// Blanking porch control\r\n#define LCD_DFUNCTL\t\t0xB6\t\t// Display function control\r\n\r\n#define LCD_PWCTL1\t\t0xC0\t\t// Power control 1\r\n#define LCD_PWCTL2\t\t0xC1\t\t// Power control 2\r\n#define LCD_VCOMCTL1\t0xC5\t\t// VCOM control 1\r\n#define LCD_VCOMCTL2\t0xC7\t\t// VCOM control 2\r\n\r\n#define LCD_PGAMCOR\t\t0xE0\t\t// Positive gamma correction\r\n#define LCD_NGAMCOR\t\t0xE1\t\t// Negative gamma correction\r\n\r\n\r\n/*\r\n * Inline definitions for SPI transfers \r\n * Set data/cmd mode and then write content\r\n * Parameters: char *x and size_t n\r\n */\r\n#define SPI_CMD(x)   { gpio_put(LCD_DC, 0); spi_write_blocking(spi1, x, 1); }\r\n#define SPI_DAT(x,n) { gpio_put(LCD_DC, 1); spi_write_blocking(spi1, x, n); }\r\n\r\n\r\n/*\r\n * Reset the ILI9341 TFT display driver\r\n */\r\nvoid lcd_reset()\r\n{\r\n\tsleep_ms(20);\r\n\tgpio_put(LCD_RST, 0);\r\n\tsleep_ms(20);\r\n\tgpio_put(LCD_RST, 1);\r\n\tsleep_ms(100);\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Let ILI9341 finish (20ms does not work!)\r\n}\r\n\r\n\r\n/*\r\n * Set window (column, page, width, height)\r\n */\r\nint lcd_window(uint16_t c, uint16_t p, uint16_t w, uint16_t  h)\r\n{\r\n\tuint8_t x[5];\r\n\t\r\n\t// Range check\r\n\tif ((c>(LCD_WIDTH-1))||(p>(LCD_HEIGHT-1))||(w>(LCD_WIDTH-c))||(h>(LCD_HEIGHT-p)))\r\n\t\treturn(-1);\r\n\t\r\n\t// Set column start and end addresses\r\n\tx[0] = LCD_COLSET;  \t\t\t   \t\t\t\t\t\t\t\t\t\t// CASET\r\n\tx[1] = (c>>8);\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Start column\r\n\tx[2] = (c&0xff);\r\n\tx[3] = ((c+w-1)>>8);\t\t\t\t\t\t\t\t\t\t\t\t\t// End column\r\n\tx[4] = ((c+w-1)&0xff); \t\r\n\tSPI_CMD(x); SPI_DAT(x+1, 4);\r\n\r\n\t// Set page start and end addresses\r\n\tx[0] = LCD_PAGSET;     \t\t\t\t\t\t\t\t\t\t\t\t\t// PASET\r\n\tx[1] = (p>>8);\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Start page\r\n\tx[2] = (p&0xff);\r\n\tx[3] = ((p+h-1)>>8);\t\t\t\t\t\t\t\t\t\t\t\t\t// End page\r\n\tx[4] = ((p+h-1)&0xff); \r\n\tSPI_CMD(x); SPI_DAT(x+1, 4);\r\n\t\r\n\tx[0] = LCD_MEMWR;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Point at window start address\r\n\tSPI_CMD(x);\r\n\t\r\n\treturn(0);\r\n}\r\n\t\r\n\t\r\n/*\r\n * Clear window with specified colour\r\n */\r\nint lcd_clear(uint16_t c, uint16_t p, uint16_t w, uint16_t h, uint16_t color)\r\n{\r\n\tuint32_t len;\r\n\tuint8_t x[2*LCD_WIDTH];\r\n\t\r\n\tif (0>lcd_window(c, p, w, h)) return(-1);\t\t\t\t\t\t\t\t// Define window\r\n\tfor (len=0; len<2*w; len+=2)\t\t\t\t\t\t\t\t\t\t\t// Define one display line\r\n\t{\r\n\t\tx[len]   = color>>8;\r\n\t\tx[len+1] = color&0xff;\r\n\t}\r\n\tlen = h;\r\n\twhile (len-->0) \t\t\t\t\t\t\t\t\t\t\t\t\t\t// Fill window\r\n\t\tSPI_DAT(x, 2*w);\r\n\t\r\n\treturn(0);\r\n}\r\n\r\n\r\n/*\r\n * Draw one character on the display\r\n * No range checks performed!\r\n */\r\nint lcd_putxy(uint16_t x, uint16_t y, char c, sFONT* f, uint16_t fgc, uint16_t bgc)\r\n{\r\n\tuint8_t pix[FON_MAXPIX*2];\t\t\t\t\t\t\t\t\t\t\t\t// Array containing all character pixels\r\n\tuint8_t *p, *q, m;\r\n\tuint32_t len;\r\n\tint i, j;\r\n\t\r\n\t/* Range check */\r\n\tif ((c<f->First) || (c>f->Last)) return(-1);\r\n\t\r\n\t/* Create window for character */\r\n\tlcd_window(x, y, f->Width, f->Height);\r\n\r\n\t/* Define parameters */\r\n\tlen = (f->Width>>3);\t\t\t\t\t\t\t\t\t\t\t\t\t// Nr of horizontal font char bytes\r\n\tif (f->Width&0x7) len++;\r\n\tlen = len*f->Height;\t\t\t\t\t\t\t\t\t\t\t\t\t// Total nr of font char bytes\r\n\tp = (uint8_t *)&(f->table[(c - f->First) * len]);\t\t\t\t\t\t// Point to first char byte in font table\r\n\tq = pix;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Point to first pixel byte\r\n\t\r\n\t/* Fill the pixel array (can be faster with n*8 Width) */\r\n\tfor (j=0; j<f->Height; j++)\t\t\t\t\t\t\t\t\t\t\t\t// For each line\r\n\t{\r\n\t\tm=0x80;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Initialize bitmask for new line\r\n\t\tfor (i=0; i<f->Width; i++)\t\t\t\t\t\t\t\t\t\t\t// For each bit\r\n\t\t{\r\n\t\t\tif (*p & m)\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Bit set?\r\n\t\t\t{\r\n\t\t\t\t*q++ = fgc>>8;\t\t\t\t\t\t\t\t\t\t\t\t// Set Foreground colour\r\n\t\t\t\t*q++ = fgc&0xff;\t\t\t\t\t\t\t\t\t\t\t//   and low byte\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\t*q++ = bgc>>8;\t\t\t\t\t\t\t\t\t\t\t\t// Set Background colour\r\n\t\t\t\t*q++ = bgc&0xff;\t\t\t\t\t\t\t\t\t\t\t//   and low byte\r\n\t\t\t}\r\n\t\t\tif (m==0x01) \t\t\t\t\t\t\t\t\t\t\t\t\t// Last bit?\r\n\t\t\t{\r\n\t\t\t\tm = 0x80;\t\t\t\t\t\t\t\t\t\t\t\t\t// Reset mask\r\n\t\t\t\tp++;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Next byte\r\n\t\t\t}\r\n\t\t\telse\r\n\t\t\t{\r\n\t\t\t\tm >>= 1;\t\t\t\t\t\t\t\t\t\t\t\t\t// Shift mask\r\n\t\t\t}\r\n\t\t}\t\r\n\t\tif (m!=0x80) p++;\t\t\t\t\t\t\t\t\t\t\t\t\t// incomplete last byte\r\n\t}\r\n\t\r\n\t/* Transfer pixels */\r\n\tlen = f->Width*f->Height*2;\t\t\t\t\t\t\t\t\t\t\t\t// Actual number of pixel bytes\r\n\tSPI_DAT(pix, len);\r\n\r\n\treturn(0);\r\n}\r\n\r\n\r\n/*\r\n * Draw a string of characters on display\r\n * String s must be null terminated\r\n * There is no range-check\r\n */\r\nint lcd_writexy(uint16_t x, uint16_t y, char *s, sFONT* f, uint16_t fgc, uint16_t bgc)\r\n{\r\n\tchar *pc;\r\n\tuint16_t xc;\r\n\t\r\n\tpc = s;\r\n\txc = x;\r\n\twhile (*pc != 0)\r\n\t{\r\n\t\tif (lcd_putxy(xc, y, *pc, f, fgc, bgc)<0) return(-1);\r\n\t\txc += f->Width;\r\n\t\tpc++;\r\n\t}\r\n\treturn(0);\r\n}\r\n\r\n\r\n/*\r\n * Initialize LCD interface and screen\r\n * Specific to ILI9143, code based on Waveshare 2.4\" driver.\r\n * Correct settings found after much experimentation...\r\n */\r\nvoid lcd_init(void)\r\n{ \r\n\tuint8_t x[64];\r\n\tuint8_t i;\r\n\t\r\n\t/* Init output GPIOs, spi is initialized in uSDR.c */\r\n\tgpio_init_mask(LCD_MASK_OUT);\t\r\n\tgpio_set_dir_out_masked (LCD_MASK_OUT);\r\n\tgpio_set_drive_strength (LCD_DC, GPIO_DRIVE_STRENGTH_8MA);\r\n\tgpio_put(LCD_RST, 1);\t\t\t\t\t\t\t\t\t\t\t\t\t// Non reset state\r\n\tgpio_put(LCD_BL, 1);\t\t\t\t\t\t\t\t\t\t\t\t\t// Backlight off\r\n\tgpio_put(LCD_DC, 1);\t\t\t\t\t\t\t\t\t\t\t\t\t// Data transfer\r\n\tgpio_put(LCD_CS, 0);\t\t\t\t\t\t\t\t\t\t\t\t\t// Chip selected\r\n\r\n\tlcd_reset();\r\n\t\r\n\tx[0] = LCD_SLPOFF; \t\t\t\t\t\t\t\t\t\t\t\t\t\t// Wake up chip\r\n\tSPI_CMD(x);\r\n\r\n\t/* Initialisation settings for Waveshare ILI9341 display          */\r\n\t/* As defined in ESP driver, need to experiment until it works... */\r\n\t\r\n\t//  0xEF, 3, 0x03, 0x80, 0x02,\r\n\tx[0] = 0xEF; x[1] = 0x03; x[2] = 0x80; x[3] = 0x02; \r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 3);\t\r\n\t\r\n\t//  0xCF, 3, 0x00, 0xC1, 0x30,\r\n\tx[0] = 0xCF; x[1] = 0x00; x[2] = 0xC1; x[3] = 0x30; \r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 3);\t\r\n\r\n\t//  0xED, 4, 0x64, 0x03, 0x12, 0x81,\r\n\tx[0] = 0xED; x[1] = 0x64; x[2] = 0x03; x[3] = 0x12;  x[4] = 0x81;\r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 4);\t\r\n\t\r\n\t//  0xE8, 3, 0x85, 0x00, 0x78,\r\n\tx[0] = 0xE8; x[1] = 0x85; x[2] = 0x00; x[3] = 0x79; \r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 3);\t\r\n\t\r\n\t//  0xCB, 5, 0x39, 0x2C, 0x00, 0x34, 0x02,\r\n\tx[0] = 0xCB; x[1] = 0x39; x[2] = 0x2C; x[3] = 0x00;  x[4] = 0x34;  x[5] = 0x02;\r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 5);\t\r\n\t\t\r\n\t//  0xF7, 1, 0x20,\r\n\tx[0] = 0xF7; x[1] = 0x20;\r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 1);\t\r\n\t\r\n\t//  0xEA, 2, 0x00, 0x00,\r\n\tx[0] = 0xEA; x[1] = 0x00; x[2] = 0x00;\r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 2);\t\r\n\r\n\r\n\t//  ILI9XXX_PWCTR1  , 1, 0x23,\r\n\tx[0] = LCD_PWCTL1; \t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0xC0 Power control 1, \r\n\tx[1] = 0x1D;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0x1D; VRH[5:0]\r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 1);\t\r\n\r\n\t//  ILI9XXX_PWCTR2  , 1, 0x10,\r\n\tx[0] = LCD_PWCTL2; \t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0xC1 Power control 2, \r\n\tx[1] = 0x12;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0x12; SAP[2:0];BT[3:0]\r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 1);\t\r\n\r\n\t//  ILI9XXX_VMCTR1  , 2, 0x3e, 0x28,\r\n\tx[0] = LCD_VCOMCTL1; \t\t\t\t\t\t\t\t\t\t\t\t\t// 0xC5 VCOM control 1\r\n\tx[1] = 0x33; \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0x33; \r\n\tx[2] = 0x3F;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0x3F;\r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 2);\t\r\n\t\r\n\t//  ILI9XXX_VMCTR2  , 1, 0x86,\r\n\tx[0] = LCD_VCOMCTL2; \t\t\t\t\t\t\t\t\t\t\t\t\t// 0xC7 VCOM control 2\r\n\tx[1] = 0x82;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0x92;\r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 1);\t\r\n\r\n\t//  ILI9XXX_PIXFMT  , 1, 0x55,\r\n\tx[0] = LCD_PIXFMT; \t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0x3A Pixel format\r\n\tx[1] = 0x55;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0x55; 16 bits per pixel, (def=0x66, 18bpp)\r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 1);\t\r\n\r\n\tx[0] = LCD_IDLEOFF; \t\t\t\t\t\t\t\t\t\t\t\t\t// 0x38 Idle mode off\r\n\tSPI_CMD(x);\t\r\n\r\n\t//  ILI9XXX_MADCTL  , 1, 0x48,\r\n\tx[0] = LCD_MACTL; \t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0x36 Memory Access Control\r\n\tx[1] = 0xE8;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0xA0; MY, MX, MV, ML, BGR, MH, (def=0x00)\r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 1);\t\r\n\r\n\t//  ILI9XXX_FRMCTR1 , 2, 0x00, 0x18,\t\t\t\r\n\tx[0] = LCD_FRMCTL1; \t\t\t\t\t\t\t\t\t\t\t\t\t// 0xB1 Frame control (normal mode)\r\n\tx[1] = 0x00;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0x00; No clock divider, def=0x00\r\n\tx[2] = 0x1B;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0x12; Frame rate 106Hz, def=0x1B (70Hz)\r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 2);\t\r\n\r\n\t//  ILI9XXX_DFUNCTR , 3, 0x08, 0x82, 0x27,\r\n\tx[0] = LCD_DFUNCTL; \t\t\t\t\t\t\t\t\t\t\t\t\t// 0xB6 Display Function Control\r\n\tx[1] = 0x08;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0x0A; def=0x0A ()\r\n\tx[2] = 0x82;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0xA2; def=0x82 ()\r\n\tx[3] = 0x27;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// none; \r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 3);\t\r\n\r\n//\tx[0] = LCD_TEARSCANL; \t\t\t\t\t\t\t\t\t\t\t\t\t// Set tear scanline\r\n//\tx[1] = 0x02;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0x02; \r\n//\tSPI_CMD(x);\tSPI_DAT(x+1, 1);\t\r\n\r\n\t//  0xF2, 1, 0x00,\r\n\tx[0] = 0xF2; \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Gamma Function Disable\r\n\tx[1] = 0x00;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0x00; \r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 1);\t\r\n\r\n\t//  ILI9XXX_GAMMASET , 1, 0x01,\r\n\tx[0] = LCD_GAMMASET; \t\t\t\t\t\t\t\t\t\t\t\t\t// Gamma curve selected\r\n\tx[1] = 0x01;\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0x01; \r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 1);\t\r\n\r\n\t//  ILI9XXX_GMCTRP1 , 15, 0x0F, 0x31, 0x2B, 0x0C, 0x0E, 0x08, 0x4E, 0xF1, \r\n\t//\t\t\t\t\t\t  0x37, 0x07, 0x10, 0x03, 0x0E, 0x09, 0x00,\r\n\tx[0] = LCD_PGAMCOR; \t\t\t\t\t\t\t\t\t\t\t\t\t// Positive gamma correction\r\n\tx[ 1] = 0x0F; x[ 2] = 0x31; x[ 3] = 0x2b; x[ 4] = 0x0c; x[ 5] = 0x0e; \r\n\tx[ 6] = 0x08; x[ 7] = 0x4e; x[ 8] = 0xf1; x[ 9] = 0x37; x[10] = 0x07; \r\n\tx[11] = 0x10; x[12] = 0x03; x[13] = 0x0e; x[14] = 0x09; x[15] = 0x00;\r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 15);\r\n\t\r\n\t//  ILI9XXX_GMCTRN1 , 15, 0x00, 0x0E, 0x14, 0x03, 0x11, 0x07, 0x31, 0xC1, \r\n\t//\t\t\t\t\t\t  0x48, 0x08, 0x0F, 0x0C, 0x31, 0x36, 0x0F,\r\n\tx[0] = LCD_NGAMCOR; \t\t\t\t\t\t\t\t\t\t\t\t\t// Negative gamma correction\r\n\tx[ 1] = 0x00; x[ 2] = 0x0e; x[ 3] = 0x14; x[ 4] = 0x03; x[ 5] = 0x11; \r\n\tx[ 6] = 0x07; x[ 7] = 0x31; x[ 8] = 0xc1; x[ 9] = 0x48; x[10] = 0x08; \r\n\tx[11] = 0x0f; x[12] = 0x0c; x[13] = 0x31; x[14] = 0x36; x[15] = 0x0f;\r\n\tSPI_CMD(x);\tSPI_DAT(x+1, 15);\r\n\r\n\tx[0] = LCD_COLOR; \t\t\t\t\t\t\t\t\t\t\t\t\t\t// Color set\r\n\tSPI_CMD(x);\r\n\tfor (i=0; i<32; i++) x[i] = i*2+1;\t\t\t\t\t\t\t\t\t\t// Red mappings 5bit -> 6bit\r\n\tSPI_DAT(x, 32)\r\n\tfor (i=0; i<64; i++) x[i] = i;\t\t\t\t\t\t\t\t\t\t\t// Green mappings 6bit -> 6bit\r\n\tSPI_DAT(x, 64)\r\n\tfor (i=0; i<32; i++) x[i] = i*2+1;\t\t\t\t\t\t\t\t\t\t// Blue mappings 5bit -> 6bit\r\n\tSPI_DAT(x, 32)\r\n\t\r\n\tx[0] = LCD_DISPON; \t\t\t\t\t\t\t\t\t\t\t\t\t\t// Display on\r\n\tSPI_CMD(x);\r\n}\r\n\r\n\r\n/*\r\n * Test routine called from serial monitor\r\n */\r\nchar lastchar;\r\nvoid lcd_test(void)\r\n{\r\n\tchar chr[64];\r\n\tuint16_t i, j, w, h;\r\n\tsFONT *f;\r\n\t\r\n\t// Dump font on display\r\n\tf = &FontUB;\r\n\tw = LCD_WIDTH/f->Width;\r\n\th = LCD_HEIGHT/f->Height;\r\n\tlcd_clear(0, 0, LCD_WIDTH, LCD_HEIGHT, BLACK);\r\n\tfor (i=0; i<h; i++)\r\n\t{\r\n\t\tfor(j=0; j<w; j++) \r\n\t\t\tchr[j] = (uint8_t)(0x20+w*i+j);\r\n\t\tlastchar = chr[j];\r\n\t\tchr[w] = 0;\r\n\t\tif (0>lcd_writexy(0, i*(f->Height), chr, f, YELLOW, DGRAY)) break;\r\n\t}\r\n\t\r\n\tsleep_ms(1000);\r\n\t\r\n\t// Dump EGA colors on display\r\n\tf = &Font16;\r\n\tw = f->Width;\r\n\th = f->Height;\r\n\tlcd_clear(0, 0, LCD_WIDTH, LCD_HEIGHT, BLACK);\r\n\ti=0;\r\n\tlcd_writexy(0, i*h, \"BLUE\"     , f, WHITE, BLACK); lcd_writexy(12*w, i*h, \"            \", f, BLUE, BLUE); i++;\r\n\tlcd_writexy(0, i*h, \"GREEN\"    , f, WHITE, BLACK); lcd_writexy(12*w, i*h, \"            \", f, GREEN, GREEN); i++;\r\n\tlcd_writexy(0, i*h, \"CYAN\"     , f, WHITE, BLACK); lcd_writexy(12*w, i*h, \"            \", f, CYAN, CYAN); i++;\r\n\tlcd_writexy(0, i*h, \"RED\"      , f, WHITE, BLACK); lcd_writexy(12*w, i*h, \"            \", f, RED, RED); i++;\r\n\tlcd_writexy(0, i*h, \"MAGENTA\"  , f, WHITE, BLACK); lcd_writexy(12*w, i*h, \"            \", f, MAGENTA, MAGENTA); i++;\r\n\tlcd_writexy(0, i*h, \"BROWN\"    , f, WHITE, BLACK); lcd_writexy(12*w, i*h, \"            \", f, BROWN, BROWN); i++;\r\n\tlcd_writexy(0, i*h, \"LGRAY\"    , f, WHITE, BLACK); lcd_writexy(12*w, i*h, \"            \", f, LGRAY, LGRAY); i++;\r\n\tlcd_writexy(0, i*h, \"DGRAY\"    , f, WHITE, BLACK); lcd_writexy(12*w, i*h, \"            \", f, DGRAY, DGRAY); i++;\r\n\tlcd_writexy(0, i*h, \"LBLUE\"    , f, WHITE, BLACK); lcd_writexy(12*w, i*h, \"            \", f, LBLUE, LBLUE); i++;\r\n\tlcd_writexy(0, i*h, \"LGREEN\"   , f, WHITE, BLACK); lcd_writexy(12*w, i*h, \"            \", f, LGREEN, LGREEN); i++;\r\n\tlcd_writexy(0, i*h, \"LCYAN\"    , f, WHITE, BLACK); lcd_writexy(12*w, i*h, \"            \", f, LCYAN, LCYAN); i++;\r\n\tlcd_writexy(0, i*h, \"ORANGE\"   , f, WHITE, BLACK); lcd_writexy(12*w, i*h, \"            \", f, ORANGE, ORANGE); i++;\r\n\tlcd_writexy(0, i*h, \"LMAGENTA\" , f, WHITE, BLACK); lcd_writexy(12*w, i*h, \"            \", f, LMAGENTA, LMAGENTA); i++;\r\n\tlcd_writexy(0, i*h, \"YELLOW\"   , f, WHITE, BLACK); lcd_writexy(12*w, i*h, \"            \", f, YELLOW, YELLOW); i++;\r\n\tlcd_writexy(0, i*h, \"WHITE\"    , f, WHITE, BLACK); lcd_writexy(12*w, i*h, \"            \", f, WHITE, WHITE); i++;\r\n}"
  },
  {
    "path": "lcd.h",
    "content": "#ifndef __LCD_H__\n#define __LCD_H__\n/* \n * lcd.h\n *\n * Created: Sep 2024\n * Author: Arjan te Marvelde\n *\n * See lcd.c for more information \n */\n \n#include \"fonts.h\"\n\n#define LCD_WIDTH  320\n#define LCD_HEIGHT 240\n\n/*\n * Colour scheme\n * Mapping of (8+8+8)bit RGB to (5+6+5)bit SPI interface:\n * uint16_t c16 = ((c24&0x00f80000)>>8) | ((c24&0x0000fc00)>>5) | ((c24&0x000000f8)>>3);\n * The 16 basic EGA colors:\n\t0\tblack\t\t\t#000000\n\t1\tblue\t\t\t#0000AA\n\t2\tgreen\t\t\t#008000\n\t3\tcyan\t\t\t#00AAAA\n\t4\tred\t\t\t\t#AA0000\n\t5\tmagenta\t\t\t#AA00AA\n\t6\tbrown\t\t\t#AA5500\n\t7\tlight gray\t\t#AAAAAA\n\t8\tdark gray\t\t#555555\n\t9\tlight blue\t\t#5555FF\n\t10\tlight green\t\t#55FF55\n\t11\tlight cyan\t\t#55FFFF\n\t12\tlight red\t\t#FF5555\n\t13\tlight magenta\t#FF55FF\n\t14\tyellow\t\t\t#FFFF55\n\t15\twhite\t\t\t#FFFFFF\n\t\n\tSee also: https://rgbcolorpicker.com/565/table\n*/\n\n#define BLACK\t\t\t0x0000\t// 00000 000000 00000\t00:00:00\n#define BLUE\t\t\t0x001f\t// 00000 000000 11111\t00:00:1F\n#define GREEN\t\t\t0x0400\t// 00000 100000 00000\t00:20:00\n#define CYAN\t\t\t0x07ff\t// 00000 111111 11111\t00:3E:1F\n#define RED\t\t\t\t0xf800\t// 11111 000000 00000\t1F:00:00\n#define MAGENTA\t\t\t0xf81f\t// 11111 000000 11111\t1F:00:1F\n#define BROWN\t\t\t0xa145\t// 10100 001010 00101\t14:06:05\n#define LGRAY\t\t\t0xd69a\t// 11010 110100 11010\t1A:34:1A\n#define DGRAY\t\t\t0xad55\t// 10101 101010 10101\t15:2A:15\n#define LBLUE\t\t\t0xa55f\t// 10101 110101 11100\t15:35:1C\n#define LGREEN\t\t\t0x9772\t// 10010 111011 10010\t12:3B:12\n#define LCYAN\t\t\t0xdfff\t// 11011 111111 11111\t1B:3F:1F\n#define ORANGE\t\t\t0xfd20\t// 11111 011001 00000\t1F:19:00\n#define LMAGENTA\t\t0xfd1f\t// 11111 101000 11111\t1F:28:1F\n#define YELLOW\t\t\t0xffe0\t// 11111 111111 00000\t1F:3F:00\n#define WHITE\t\t\t0xffff\t// 11111 111111 11111\t1F:3E:1F\n\n#define BGNDCOLOR\t\t0x3a07\n\n#define TFT_ALICEBLUE\t\t\t0xF7DF\n#define TFT_ANTIQUEWHITE\t\t0xFF5A\n#define TFT_AQUA\t\t\t\t0x07FF\n#define TFT_AQUAMARINE\t\t\t0x7FFA\n#define TFT_AZURE\t\t\t\t0xF7FF\n#define TFT_BEIGE\t\t\t\t0xF7BB\n#define TFT_BISQUE\t\t\t\t0xFF38\n#define TFT_BLACK\t\t\t\t0x0000 /*   0, 0, 0 */\n#define TFT_BLANCHEDALMOND\t\t0xFF59\n#define TFT_BLUE\t\t\t\t0x001F /*   0, 0, 255 */\n#define TFT_BLUEVIOLET\t\t\t0x895C\n#define TFT_BROWN\t\t\t\t0xA145\n#define TFT_BURLYWOOD\t\t\t0xDDD0\n#define TFT_CADETBLUE\t\t\t0x5CF4\n#define TFT_CHARTREUSE\t\t\t0x7FE0\n#define TFT_CHOCOLATE\t\t\t0xD343\n#define TFT_CORAL\t\t\t\t0xFBEA\n#define TFT_CORNFLOWERBLUE\t\t0x64BD\n#define TFT_CORNSILK\t\t\t0xFFDB\n#define TFT_CRIMSON\t\t\t\t0xD8A7\n#define TFT_CYAN\t\t\t\t0x07FF /*   0, 255, 255 */\n#define TFT_DARKBLUE\t\t\t0x0011\n#define TFT_DARKCYAN\t\t\t0x03EF /*   0, 128, 128 */\n#define TFT_DARKCYAN2\t\t\t0x0451\n#define TFT_DARKGOLDENROD\t\t0xBC21\n#define TFT_DARKGRAY\t\t\t0xAD55\n#define TFT_DARKGREEN2\t\t\t0x0320\n#define TFT_DARKGREEN\t\t\t0x03E0 /*   0, 128, 0 */\n#define TFT_DARKGREY\t\t\t0x7BEF /* 128, 128, 128 */\n#define TFT_DARKKHAKI\t\t\t0xBDAD\n#define TFT_DARKMAGENTA\t\t\t0x8811\n#define TFT_DARKOLIVEGREEN\t\t0x5345\n#define TFT_DARKORANGE\t\t\t0xFC60\n#define TFT_DARKORCHID\t\t\t0x9999\n#define TFT_DARKRED\t\t\t\t0x8800\n#define TFT_DARKSALMON\t\t\t0xECAF\n#define TFT_DARKSEAGREEN\t\t0x8DF1\n#define TFT_DARKSLATEBLUE\t\t0x49F1\n#define TFT_DARKSLATEGRAY\t\t0x2A69\n#define TFT_DARKTURQUOISE\t\t0x067A\n#define TFT_DARKVIOLET\t\t\t0x901A\n#define TFT_DEEPPINK\t\t\t0xF8B2\n#define TFT_DEEPSKYBLUE\t\t\t0x05FF\n#define TFT_DIMGRAY\t\t\t\t0x6B4D\n#define TFT_DODGERBLUE\t\t\t0x1C9F\n#define TFT_FIREBRICK\t\t\t0xB104\n#define TFT_FLORALWHITE\t\t\t0xFFDE\n#define TFT_FORESTGREEN\t\t\t0x2444\n#define TFT_FUCHSIA\t\t\t\t0xF81F\n#define TFT_GAINSBORO\t\t\t0xDEFB\n#define TFT_GHOSTWHITE\t\t\t0xFFDF\n#define TFT_GOLD\t\t\t\t0xFEA0\n#define TFT_GOLDENROD\t\t\t0xDD24\n#define TFT_GRAY\t\t\t\t0x8410\n#define TFT_GREEN2\t\t\t\t0x0400\n#define TFT_GREEN\t\t\t\t0x07E0 /*   0, 255, 0 */\n#define TFT_GREENYELLOW\t\t\t0xAFE5 /* 173, 255, 47 */\n#define TFT_HONEYDEW\t\t\t0xF7FE\n#define TFT_HOTPINK\t\t\t\t0xFB56\n#define TFT_INDIANRED\t\t\t0xCAEB\n#define TFT_INDIGO\t\t\t\t0x4810\n#define TFT_IVORY\t\t\t\t0xFFFE\n#define TFT_KHAKI\t\t\t\t0xF731\n#define TFT_LAVENDER\t\t\t0xE73F\n#define TFT_LAVENDERBLUSH\t\t0xFF9E\n#define TFT_LAWNGREEN\t\t\t0x7FE0\n#define TFT_LEMONCHIFFON\t\t0xFFD9\n#define TFT_LIGHTBLUE\t\t\t0xAEDC\n#define TFT_LIGHTCORAL\t\t\t0xF410\n#define TFT_LIGHTCYAN\t\t\t0xE7FF\n#define TFT_LIGHTGOLDENRODYELLOW\t0xFFDA\n#define TFT_LIGHTGREEN\t\t\t0x9772\n#define TFT_LIGHTGREY\t\t\t0xC618 /* 192, 192, 192 */\n#define TFT_LIGHTGREY2\t\t\t0xD69A\n#define TFT_LIGHTPINK\t\t\t0xFDB8\n#define TFT_LIGHTSALMON\t\t\t0xFD0F\n#define TFT_LIGHTSEAGREEN\t\t0x2595\n#define TFT_LIGHTSKYBLUE\t\t0x867F\n#define TFT_LIGHTSLATEGRAY\t\t0x7453\n#define TFT_LIGHTSTEELBLUE\t\t0xB63B\n#define TFT_LIGHTYELLOW\t\t\t0xFFFC\n#define TFT_LIME\t\t\t\t0x07E0\n#define TFT_LIMEGREEN\t\t\t0x3666\n#define TFT_LINEN\t\t\t\t0xFF9C\n#define TFT_MAGENTA\t\t\t\t0xF81F /* 255, 0, 255 */\n#define TFT_MAROON\t\t\t\t0x7800 /* 128, 0, 0 */\n#define TFT_MAROON2\t\t\t\t0x8000\n#define TFT_MEDIUMAQUAMARINE\t0x6675\n#define TFT_MEDIUMBLUE\t\t\t0x0019\n#define TFT_MEDIUMORCHID\t\t0xBABA\n#define TFT_MEDIUMPURPLE\t\t0x939B\n#define TFT_MEDIUMSEAGREEN\t\t0x3D8E\n#define TFT_MEDIUMSLATEBLUE\t\t0x7B5D\n#define TFT_MEDIUMSPRINGGREEN\t0x07D3\n#define TFT_MEDIUMTURQUOISE\t\t0x4E99\n#define TFT_MEDIUMVIOLETRED\t\t0xC0B0\n#define TFT_MIDNIGHTBLUE\t\t0x18CE\n#define TFT_MINTCREAM\t\t\t0xF7FF\n#define TFT_MISTYROSE\t\t\t0xFF3C\n#define TFT_MOCCASIN\t\t\t0xFF36\n#define TFT_NAVAJOWHITE\t\t\t0xFEF5\n#define TFT_NAVY\t\t\t\t0x000F /*   0, 0, 128 */\n#define TFT_NAVY2\t\t\t\t0x0010\n#define TFT_NAVY3\t\t\t\t0x0008\n#define TFT_OLDLACE\t\t\t\t0xFFBC\n#define TFT_OLIVE\t\t\t\t0x7BE0 /* 128, 128, 0 */\n#define TFT_OLIVE2\t\t\t\t0x8400\n#define TFT_OLIVEDRAB\t\t\t0x6C64\n#define TFT_ORANGE\t\t\t\t0xFD20 /* 255, 165, 0 */\n#define TFT_ORANGERED\t\t\t0xFA20\n#define TFT_ORCHID\t\t\t\t0xDB9A\n#define TFT_PALEGOLDENROD\t\t0xEF55\n#define TFT_PALEGREEN\t\t\t0x9FD3\n#define TFT_PALETURQUOISE\t\t0xAF7D\n#define TFT_PALEVIOLETRED\t\t0xDB92\n#define TFT_PAPAYAWHIP\t\t\t0xFF7A\n#define TFT_PEACHPUFF\t\t\t0xFED7\n#define TFT_PERU\t\t\t\t0xCC27\n#define TFT_PINK\t\t\t\t0xF81F\n#define TFT_PINK_2\t\t\t\t0xFE19\n#define TFT_PLUM\t\t\t\t0xDD1B\n#define TFT_POWDERBLUE\t\t\t0xB71C\n#define TFT_PURPLE\t\t\t\t0x780F /* 128, 0, 128 */\n#define TFT_PURPLE2\t\t\t\t0x8010\n#define TFT_RED\t\t\t\t\t0xF800 /* 255, 0, 0 */\n#define TFT_ROSYBROWN\t\t\t0xBC71\n#define TFT_ROYALBLUE\t\t\t0x435C\n#define TFT_SADDLEBROWN\t\t\t0x8A22\n#define TFT_SALMON\t\t\t\t0xFC0E\n#define TFT_SANDYBROWN\t\t\t0xF52C\n#define TFT_SEAGREEN\t\t\t0x2C4A\n#define TFT_SEASHELL\t\t\t0xFFBD\n#define TFT_SIENNA\t\t\t\t0xA285\n#define TFT_SILVER\t\t\t\t0xC618\n#define TFT_SKYBLUE\t\t\t\t0x867D\n#define TFT_SLATEBLUE\t\t\t0x6AD9\n#define TFT_SLATEGRAY\t\t\t0x7412\n#define TFT_SNOW\t\t\t\t0xFFDF\n#define TFT_SPRINGGREEN\t\t\t0x07EF\n#define TFT_STEELBLUE\t\t\t0x4416\n#define TFT_TAN\t\t\t\t\t0xD5B1\n#define TFT_TEAL\t\t\t\t0x0410\n#define TFT_THISTLE\t\t\t\t0xDDFB\n#define TFT_TOMATO\t\t\t\t0xFB08\n#define TFT_TURQUOISE\t\t\t0x471A\n#define TFT_VIOLET\t\t\t\t0xEC1D\n#define TFT_WHEAT\t\t\t\t0xF6F6\n#define TFT_WHITE\t\t\t\t0xFFFF /* 255, 255, 255 */\n#define TFT_WHITESMOKE\t\t\t0xF7BE\n#define TFT_YELLOW\t\t\t\t0xFFE0 /* 255, 255, 0 */\n#define TFT_YELLOWGREEN\t\t\t0x9E66\n\nvoid lcd_init(void);\nint  lcd_window(uint16_t x, uint16_t y, uint16_t w, uint16_t h);\nint  lcd_clear(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint16_t color);\nint  lcd_putxy(uint16_t x, uint16_t y, char c, sFONT* f, uint16_t fgc, uint16_t bgc);\nint  lcd_writexy(uint16_t x, uint16_t y, char *s, sFONT* f, uint16_t fgc, uint16_t bgc);\nvoid lcd_test(void);\n\n#endif\n"
  },
  {
    "path": "monitor.c",
    "content": "/*\n * monitor.c\n *\n * Created: Mar 2021\n * Author: Arjan te Marvelde\n * \n * Command shell on stdin/stdout.\n * Collects characters and parses commandstring.\n * Additional commands can easily be added.\n */ \n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include \"pico/stdlib.h\"\n#include \"pico.h\"\n#include \"pico/bootrom.h\"\n\n#include \"uSDR.h\"\n#include \"lcd.h\"\n#include \"si5351.h\"\n#include \"dsp.h\"\n#include \"relay.h\"\n#include \"monitor.h\"\n\n\n// Some special character ASCII codes\n#define BS\t\t\t  8\n#define CR\t\t\t 13\n#define LF\t\t\t 10\n#define SP\t\t\t 32\n#define DEL\t\t\t127\n\n#define CMD_LEN\t\t 80\n#define CMD_ARGS\t 16\n\n\nchar mon_cmd[CMD_LEN+1];\t\t\t\t\t\t\t// Command string buffer\nchar *argv[CMD_ARGS];\t\t\t\t\t\t\t\t// Argument pointers\nint nargs;\t\t\t\t\t\t\t\t\t\t\t// Nr of arguments\n\ntypedef struct \n{\n\tchar *cmdstr;\t\t\t\t\t\t\t\t\t// Command string\n\tint   cmdlen;\t\t\t\t\t\t\t\t\t// Command string length\n\tvoid (*cmd)(void);\t\t\t\t\t\t\t\t// Command executive\n\tchar *cmdsyn;\t\t\t\t\t\t\t\t\t// Command syntax\n\tchar *help;\t\t\t\t\t\t\t\t\t\t// Command help text\n} shell_t;\n\n\n\n\n/*** Initialisation, called at startup ***/\nvoid mon_init()\n{\n    stdio_init_all();\t\t\t\t\t\t\t\t// Initialize Standard IO\n\tmon_cmd[CMD_LEN] = '\\0';\t\t\t\t\t\t// Termination to be sure\n\tprintf(\"\\n\");\n\tprintf(\"=============\\n\");\n\tprintf(\" uSDR-Pico   \\n\");\n\tprintf(\"  PE1ATM     \\n\");\n\tprintf(\" 2021, Udjat \\n\");\n\tprintf(\"=============\\n\");\n\tprintf(\"Pico> \");\t\t\t\t\t\t\t\t// prompt\n}\n\n\n\n/*** ------------------------------------------------------------- ***/\n/*** Below the definitions of the shell commands, add where needed ***/\n/*** ------------------------------------------------------------- ***/\n\n/*\n * Reboots the Pico as a USB mass storage device, ready to be programmed\n */\nvoid mon_flash(void)\n{\n\treset_usb_boot(1<<PICO_DEFAULT_LED_PIN,0);\n}\n\n/* \n * Dumps a defined range of Si5351 registers \n */\nuint8_t si5351_reg[200];\nvoid mon_si(void)\n{\n\tint base=0, nreg=0, i;\n\n\tif (nargs>2) \n\t{\n\t\tbase = atoi(argv[1]);\n\t\tnreg = atoi(argv[2]);\n\t}\n\tif ((base<0)||(base+nreg>200)) return;\n\n\tfor (i=0; i<200; i++) si5351_reg[i] = 0xaa;\n\tsi_getreg(si5351_reg, (uint8_t)base, (uint8_t)nreg);\n\tfor (i=0; i<nreg; i++) printf(\"%03d : %02x \\n\", base+i, (int)(si5351_reg[i]));\n\tprintf(\"\\n\");\n}\n\n/* \n * Dumps the VFO registers \n */\nvfo_t m_vfo;\nvoid mon_vfo(void)\n{\n\tint i=0;\n\n\tif (nargs>1) \n\t\ti = atoi(argv[1]);\n\tif ((i<0)||(i>1)) return;\n\n\tsi_getvfo(i, &m_vfo);\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Get local copy\n\tprintf(\"Frequency: %lu\\n\", m_vfo.freq);\n\tprintf(\"Phase    : %d\\n\", (int)(m_vfo.phase));\n\tprintf(\"Ri       : %d\\n\", (int)(m_vfo.ri));\n\tprintf(\"MSi      : %d\\n\", (int)(m_vfo.msi));\n\tprintf(\"MSN      : %g\\n\\n\", m_vfo.msn);\n}\n\n\n/* \n * Dumps the entire built-in and programmed characterset on the LCD \n */\nvoid mon_lt(void)\n{\n\tint c=PICO_ERROR_TIMEOUT;\n\t\n\tprintf(\"Check LCD...\");\n\tlcd_test();\n\tprintf(\"\\n\");\n\twhile (c==PICO_ERROR_TIMEOUT)\n\t\tc = getchar_timeout_us(10L);\t\t\t\t// NOTE: this is the only SDK way to read from stdin\n\tlcd_clear(0, 0, LCD_WIDTH, LCD_HEIGHT, BLACK);\n}\n\n\n/*\n * Toggles the PTT status, overriding the HW signal\n */\nbool ptt = false;\nvoid mon_pt(void)\n{\n\tif (ptt)\n\t{\n\t\tptt = false;\n\t\tprintf(\"PTT released\\n\");\n\t}\n\telse\n\t{\n\t\tptt = true;\n\t\tprintf(\"PTT active\\n\");\n\t}\n\ttx_enabled = ptt;\n}\n\n/*\n * BPF relay read or write\n */\nvoid mon_bp(void)\n{\n\tint ret;\n\t\n\tif ((nargs > 1) && (*argv[1]=='w'))\n\t{\n\t\tif (nargs>2) \n\t\t{\n\t\t\tret = atoi(argv[2]);\n\t\t\trelay_setband(ret);\n\t\t}\n\t\tsleep_ms(1);\n\t}\n\tret = relay_getband();\n\tprintf(\"BPF relays: %02x\\n\",  ret);\n}\n\n/*\n * RX relay read or write\n */\nvoid mon_rx(void)\n{\n\tint ret;\n\t\n\tif ((nargs > 1) && (*argv[1]=='w'))\n\t{\n\t\tif (nargs>2) \n\t\t{\n\t\t\tret = atoi(argv[2]);\n\t\t\trelay_setattn(ret);\n\t\t}\n\t\tsleep_ms(1);\n\t}\n\tret = relay_getattn();\n\tprintf(\"Pre-amp relays: %02x\\n\", ret);\n}\n\n/* \n * Checks for overruns \n */\nextern volatile int32_t dsp_overrun;\nextern volatile int adccnt;\n#if DSP_FFT == 1\nextern volatile uint32_t dsp_tickx;\nextern volatile int scale0;\nextern volatile int scale1;\n#endif\nvoid mon_or(void)\n{\n\tprintf(\"ADCcnt        : %d\\n\", adccnt);\n\tprintf(\"DSP overruns  : %ld\\n\", dsp_overrun);\n#if DSP_FFT == 1\n\tprintf(\"DSP loop load : %lu%%\\n\", (100*dsp_tickx)/512);\t\n\tprintf(\"FFT scale = %d, iFFT scale = %d\\n\", scale0, scale1);\t\n#endif\n}\n\n\n/* \n * Bias and Levels \n */\nextern volatile uint16_t if_agc, rx_agc, tx_agc;\nextern volatile uint16_t adc_bias[3];\nvoid mon_adc(void)\n{\n\t// Print results\n\tprintf(\"Bias  : %u, %u, %u\\n\", adc_bias[0], adc_bias[1], adc_bias[2]);\n\tprintf(\"RSSI  : %5u\\n\", GET_RSSI_LEVEL);\n\tprintf(\"VOX   : %5u\\n\", GET_DSP_VOX);\n\tprintf(\"IF-AGC: %5u\\n\", if_agc);\n\tprintf(\"RX-AGC: %5u\\n\", rx_agc);\n\tprintf(\"TX-AGC: %5u\\n\", tx_agc);\n}\n\n\n\n/*\n * Command shell table, organize the command functions above\n */\n#define NCMD\t9\nshell_t shell[NCMD]=\n{\n\t{\"flash\", 5, &mon_flash, \"flash\", \"Reboots into USB bootloader mode\"},\n\t{\"si\",  2, &mon_si,  \"si <start> <nr of reg>\", \"Dumps Si5351 registers\"},\n\t{\"vfo\", 3, &mon_vfo, \"vfo <id>\", \"Dumps vfo[id] registers\"},\n\t{\"lt\",  2, &mon_lt,  \"lt (no parameters)\", \"LCD test, dumps characterset on LCD\"},\n\t{\"or\",  2, &mon_or,  \"or (no parameters)\", \"Returns overrun information\"},\n\t{\"pt\",  2, &mon_pt,  \"pt (no parameters)\", \"Toggles PTT status\"},\n\t{\"bp\",  2, &mon_bp,  \"bp {r|w} <value>\", \"Read or Write BPF relays\"},\n\t{\"rx\",  2, &mon_rx,  \"rx {r|w} <value>\", \"Read or Write RX relays\"},\n\t{\"adc\", 3, &mon_adc, \"adc (no parameters)\", \"Dump latest ADC readouts\"}\n};\n\n\n\n/*** ---------------------------------------- ***/\n/*** Commandstring parser and monitor process ***/\n/*** ---------------------------------------- ***/\n\n#define ISALPHANUM(c)\t(((c)>' ') && ((c)<127))\n#define ISWHITESP(c)\t(((c)!='\\0') && ((c)<=' '))\n#define ISEOL(c)        ((c)=='\\0')\n/*\n * Command line parser\n */\nvoid mon_parse(char* s)\n{\n\tchar *p;\n\tint  i;\n\n\tp = s;\t\t\t\t\t\t\t\t\t\t\t// Set to start of string\n\tnargs = 0;\n\twhile (ISWHITESP(*p)) p++;\t\t\t\t\t\t// Skip leading whitespace\n\twhile (!ISEOL(*p))\t\t\t\t\t\t\t\t// Check remaining stringlength >0 \n\t{\n\t\targv[nargs++] = p;\t\t\t\t\t\t\t// Store first valid char loc after whitespace\n\t\twhile (ISALPHANUM(*p)) p++;\t\t\t\t\t// Skip non-whitespace\n\t\twhile (ISWHITESP(*p)) p++;\t\t\t\t\t// Skip separating whitespace\n\t}\n\tif (nargs==0) return;\t\t\t\t\t\t\t// Nothing to do\n\t\n\tfor (i=0; i<NCMD; i++)\t\t\t\t\t\t\t// Lookup shell command\n\t\tif (strncmp(argv[0], shell[i].cmdstr, shell[i].cmdlen) == 0) break;\n\tif (i<NCMD)\n\t\t(*shell[i].cmd)();\t\t\t\t\t\t\t// Execute if found\n\telse\t\t\t\t\t\t\t\t\t\t\t// Unknown command\n\t{\n\t\tfor (i=0; i<NCMD; i++)\t\t\t\t\t\t// Print help if no match\n\t\t\tprintf(\"%s\\n   %s\\n\", shell[i].cmdsyn, shell[i].help);\n\t}\n}\n\n/*\n * Monitor process \n * This function collects characters from stdin until CR\n * Then the command is send to a parser and executed.\n */\nvoid mon_evaluate(void)\n{\n\tstatic int i = 0;\n\tint c = getchar_timeout_us(10L);\t\t\t\t// NOTE: this is the only SDK way to read from stdin\n\tif (c==PICO_ERROR_TIMEOUT) return;\t\t\t\t// Early bail out\n\t\n\tswitch (c)\n\t{\n\tcase CR:\t\t\t\t\t\t\t\t\t\t// CR : need to parse command string\n\t\tputchar('\\n');\t\t\t\t\t\t\t\t// Echo character, assume terminal appends CR\n\t\tmon_cmd[i] = '\\0';\t\t\t\t\t\t\t// Terminate command string\t\t\n\t\tif (i>0)\t\t\t\t\t\t\t\t\t// something to parse?\n\t\t\tmon_parse(mon_cmd);\t\t\t\t\t\t// --> process command\n\t\ti=0;\t\t\t\t\t\t\t\t\t\t// reset index\n\t\tprintf(\"Pico> \");\t\t\t\t\t\t\t// prompt\n\t\tbreak;\n\tcase LF:\n\t\tbreak;\t\t\t\t\t\t\t\t\t\t// Ignore, assume CR as terminator\n\tcase BS:\n\t\tif (i>0) i--;\t\t\t\t\t\t\t\t// One position back\n\t\tmon_cmd[i] = SP;\t\t\t\t\t\t\t// Replace with whitespace\n\t\tputchar(BS);\t\t\t\t\t\t\t\t// Erase sequence\n\t\tputchar(SP);\n\t\tputchar(BS);\n\t\tbreak;\n\tdefault:\n\t\tif ((c<32)||(c>=127)) break;\t\t\t\t// Only allow alphanumeric\n\t\tputchar((char)c);\t\t\t\t\t\t\t// Echo character\n\t\tmon_cmd[i] = (char)c;\t\t\t\t\t\t// store in command string\n\t\tif (i<CMD_LEN) i++;\t\t\t\t\t\t\t// check range and increment\n\t\tbreak;\n\t}\n}\n"
  },
  {
    "path": "monitor.h",
    "content": "#ifndef __MONITOR_H__\n#define __MONITOR_H__\n/* \n * monitor.h\n *\n * Created: Mar 2021\n * Author: Arjan te Marvelde\n *\n * See monitor.c for more information \n */\n\nvoid mon_init();\nvoid mon_evaluate(void);\n\n#endif"
  },
  {
    "path": "relay.c",
    "content": "/*\n * relay.c\n *\n * Created: Nov 2021\n * Author: Arjan te Marvelde\n * \n * Two PCF8574 expanders are on the I2C bus, one on the RX and one on the BPF board.\n * The RX (0x42) bit assignments:\n *  0x03: Enable -20dB and -10dB attenuators\tREL_ATT_30\n *  0x01: Enable -20dB attenuator\t\t\t\tREL_ATT_20\n *  0x02: Enable -10dB attenuator\t\t\t\tREL_ATT_10\n *  0x04: Enable +10dB pre-amplifier\t\t\tREL_PRE_10\n *  0x00: No attenuator or pre-amp\t\t\t\tREL_ATT_00\n *\n * The BPF (0x40) bit assignments:\n *  0x01: Enable LPF  2.5 MHz\t\t\t\t\tREL_LPF2\n *  0x02: Enable BPF  2.0 - 6.0 MHz\t\t\t\tREL_BPF6\n *  0x04: Enable BPF  5.0 -12.0 MHz\t\t\t\tREL_BPF12\n *  0x08: Enable BPF 10.0 -24.0 MHz\t\t\t\tREL_BPF24\n *  0x10: Enable BPF 20.0 -40.0 MHz\t\t\t\tREL_BPF40\n * \n */\n#include <stdio.h>\n#include <string.h>\n#include \"pico/stdlib.h\"\n#include \"hardware/i2c.h\"\n\n#include \"uSDR.h\"\n#include \"relay.h\"\n\n\n\nvoid relay_setband(int val)\n{\n\tuint8_t data[2];\n\t\n\tdata[0] = ((uint8_t)val)&0xff;\n\tif (i2c_put_data(i2c0, I2C_BPF, data, 1, false) < 0)\n\t\ti2c_put_data(i2c0, I2C_BPF, data, 1, false);\n\tsleep_ms(1);\n}\n\nint relay_getband(void)\n{\n\tuint8_t data[2];\n\tint ret;\n\t\n\tdata[0] = 0;\n\tret = i2c_get_data(i2c0, I2C_BPF, data, 1, false);\n\tif (ret<0) \n\t\tret = i2c_get_data(i2c0, I2C_BPF, data, 1, false);\n\tif (ret>=0) \n\t\tret=data[0];\n\treturn(ret);\n}\n\nvoid relay_setattn(int val)\n{\n\tuint8_t data[2];\n\t\n\tdata[0] = ((uint8_t)val)&0x07;\n\tif (i2c_put_data(i2c0, I2C_RX, data, 1, false) < 0)\n\t\ti2c_put_data(i2c0, I2C_RX, data, 1, false);\n\tsleep_ms(1);\n}\n\nint relay_getattn(void)\n{\n\tuint8_t data[2];\n\tint ret;\n\t\n\tdata[0] = 0;\n\tret = i2c_get_data(i2c0, I2C_RX, data, 1, false);\n\tif (ret<0) \n\t\tret = i2c_get_data(i2c0, I2C_RX, data, 1, false);\n\tif (ret>=0) \n\t\tret=data[0];\n\treturn(ret);\n}\n\nvoid relay_init(void)\n{ \n\trelay_setattn(REL_ATT_00);\n\tsleep_ms(1);\n\trelay_setband(REL_BPF12);\n}"
  },
  {
    "path": "relay.h",
    "content": "#ifndef __RELAY_H__\n#define __RELAY_H__\n/* \n * relay.h\n *\n * Created: Nov 2021\n * Author: Arjan te Marvelde\n *\n * See relay.c for more information \n */\n\n/* relay_setband() values */\n#define REL_LPF2\t0x01\n#define REL_BPF6\t0x02\n#define REL_BPF12\t0x04\n#define REL_BPF24\t0x08\n#define REL_BPF40\t0x10\n\n/* relay_setattn() values */\n#define REL_ATT_30\t0x06\n#define REL_ATT_20\t0x04\n#define REL_ATT_10\t0x02\n#define REL_ATT_00\t0x00\n#define REL_PRE_10\t0x01\n\nvoid relay_setband(int val);\nvoid relay_setattn(int val);\nint  relay_getband(void);\nint  relay_getattn(void);\nvoid relay_init(void);\n\n#endif\n"
  },
  {
    "path": "si5351.c",
    "content": "/*\r\n * si5351.c\r\n *\r\n * Created: Jan 2020\r\n * Author: Arjan\r\n *\r\n * Driver for the SI5351A VCO\r\n *\r\n * Provides \r\n * - VFO0, two outputs on clk0 and clk1 with configurable phase difference\r\n * - VFO1, auxiliary single output on clk2\r\n \r\n \r\n\r\nSi5351 principle of operation:\r\n==============================\r\nCrystal frequency Fxtal (usually 25MHz) is multiplied in a PLL by MSN to obtain Fvco.\r\nPLLs A and B have independent MSN values, leading to two Fvco frequencies.\r\nThe output Fout on each channel (i) can be derived from either Fvco.\r\nFvco must be between 600MHz and 900MHz, but the spec is more relaxed in reality.\r\nIn the second stage, an Fvco is divided by MSi and Ri to obtain the output frequency Fout.\r\nOnly certain values of MSi and Ri are allowed when quadrature output is required.\r\n\r\nTuning stragtegy:\r\nMSi and Ri are selected to be in the ballpark of desired frequency range.\r\nMSN is then used for tuning Fout.\r\n\r\nDetails:\r\n========\r\n\r\n             +-------+             +-------+     +------+\r\n   Fxtal --> | * MSN | -- Fvco --> | / MSi | --> | / Ri | -- Fout -->\r\n             +-------+             +-------+     +------+\r\n\r\n MSN determines:          Fvco = Fxtal * (MSN)      , where MSN = a + b/c\r\n MSi and Ri determine:    Fout = Fvco / (Ri*MSi)    , where MSi = a + b/c\t(note: different a, b and c)\r\n \r\n \r\n ---Derivation of the register values, that determine MSN and MSi---\r\n P1 = 128*a + Floor(128*b/c) - 512\t\t(P1 = calculated for MSN tuning,  P1 = 750MHz/Fout for MSi integer mode)\r\n P2 = 128*b - c*Floor(128*b/c)\t\t\t(P2 = calculated for MSN tuning,  P2 = 0 for MSi integer mode)\r\n P3 = c\t\t\t\t\t\t\t\t\t(P3 = c = 1000000 for MSN tuning, P3 = 1 for MSi integer mode)\r\n \r\n \r\n This VFO implementation assigns PLLA to VFO 0 (clk0 and clk1), and PLLB to VFO 1 (clk2)\r\n \r\n The algorithm to get from required Fout to synthesizer settings:\r\n | calculate new <MSN> from the desired <Fout>, based on the current <Ri> and <MSi>\r\n | if MSN is still inside [600/Fxtal, 900/Fxtal]\r\n | then\r\n |   just update the MSN related registers\r\n | else \r\n |   re-calculate <MSi>, <Ri> and <MSN> from desired <Fout>\r\n |   write the <MSi> and <Ri> parameter registers, including phase offset (MSi equals phase offset for 90 deg, use INV to shift 180deg more)\r\n |   write the <MSN> parameter registers\r\n |   reset PLL\r\n (this all assumes that the current settings are consistent, i.e. must be initialized at startup)\r\n\r\nCalculate MSi:\r\n\tMSi = 750MHz/(Fout*Ri)\t// Target for mid-band, i.e. Fvco=750MHz\r\n\tMSi &= 0xfe\t\t\t\t// Make it even, minimum is 4 in case of integer mode\r\n\r\nCalculate MSN:\r\n\tMSN = MSi*Ri*Fout/Fxtal (spec mandates between 24 and 36, but could be stretched)\r\n\t\r\n\t\r\nSome boundary values, assuming 600M < Fvco < 900M.\r\nWith low end 400M, Low MHz is multiplied with 2/3.\r\n------------+--------------+-----------------------+\r\nRi\t\tMSi\t:\ta\tb\tc  |    Low MHz\t  High MHz\r\n1\t\t  4\t:\t4\t0\t1  | 150.000000\t225.000000\t\r\n1\t\t126\t: 126\t0\t1  |   4.761905\t  7.142857\r\n32\t\t  4\t:\t4\t0\t1  |   4.687500\t  7.031250\r\n32\t\t126\t:  126\t0\t1  |   0.148810\t  0.223214\r\n128\t\t  4\t:\t4\t0\t1  |   1.171875\t  1.757813\r\n128\t\t126\t:  126\t0\t1  |   0.037202\t  0.055804\r\n\r\nNOTE: Phase offsets\r\nThe PHOFF is given as a multiple of 1/(4*Fvco), so when MSi == PHOFF the shift will be 90deg.\r\nIt also implies that MSi must be an integer, and Ri == 1.\r\n\r\nOnly use MSi even-integers, i.e. a=[4, 6, 8..126], b=0 and c=100000, and set INT bits in reg 22, 23. \r\nQuadrature Phase offsets (i.e. delay): \r\n- Phase offset for MS0 (reg 165) must be 0 (cos: delay = 0), \r\n- Phase offset for MS1 (reg 166) must be equal to divider MS1 for 90 deg (sin: delay = MSi / 4*Fvco),\r\n- Set INV bit (reg 17) to add 180 deg.\r\n\r\nThis implies that minimum Fout is 4.762MHz at Fvco = 600MHz. \r\nAdditional flip/flop dividers are needed to get down to 80m band frequencies, or Fvco must be tuned below spec.\r\n\r\n \r\nControl Si5351 (see AN619):\r\n===========================\r\n----+---------+---------+---------+---------+---------+---------+---------+---------+\r\n @\t|    7    |    6    |    5    |    4    |    3    |    2    |    1    |    0    |\r\n----+---------+---------+---------+---------+---------+---------+---------+---------+\r\n  0\t|SYS_INIT |  LOL_B  |  LOL_A  |   LOS   |      Reserved     |      REVID[1:0]   |\r\n  1\t|SYS_INIT |  LOS_B  |  LOL_A  |   LOS   |                Reserved               |\r\n\t|    _STKY|    _STKY|    _STKY|    _STKY|                Reserved               |\r\n  2\t|SYS_INIT |  LOS_B  |  LOL_A  |   LOS   |                Reserved               |\r\n\t|    _MASK|    _MASK|    _MASK|    _MASK|                Reserved               |\r\n  3\t|                   Reserved                      | CLK2_EN | CLK1_EN | CLK0_EN |\r\n====\r\n  9\t|                   Reserved                      |OEB_MASK2|OEB_MASK1|OEB_MASK0|\r\n====\r\n 15 |  CLKIN_DIV[2:0]   |    0    |    0    | PLLB_SRC| PLLA_SRC|    0    |    0    |\r\n 16 | CLK0_PDN| MS0_INT | MS0_SRC | CLK0_INV|   CLK0_SRC[1:0]   |   CLK0_IDRV[1:0]  |\r\n 17 | CLK1_PDN| MS1_INT | MS1_SRC | CLK1_INV|   CLK1_SRC[1:0]   |   CLK1_IDRV[1:0]  |\r\n 18 | CLK2_PDN| MS2_INT | MS2_SRC | CLK2_INV|   CLK2_SRC[1:0]   |   CLK2_IDRV[1:0]  |\r\n====\r\n 22 | Reserved| FBA_INT |                          Reserved                         |\r\n 23 | Reserved| FBB_INT |                          Reserved                         |\r\n 24 |      Reserved     |   CLK2_DIS_STATE  |   CLK1_DIS_STATE  |   CLK0_DIS_STATE  |\r\n====\r\n 26 |                                  MSNA_P3[15:8]                                |\r\n 27 |                                  MSNA_P3[7:0]                                 |\r\n 28\t|                         Reserved                          |   MSNA_P1[17:16]  |\r\n 29 |                                  MSNA_P1[15:8]                                |\r\n 30 |                                  MSNA_P1[7:0]                                 |\r\n 31 |             MSNA_P3[19:16]            |             MSNA_P2[19:16]            |\r\n 32 |                                  MSNA_P2[15:8]                                |\r\n 33 |                                  MSNA_P2[7:0]                                 |\r\n \r\n 34: Same pattern for PLLB\r\n\r\n 42 |                                  MS0_P3[15:8]                                 |\r\n 43 |                                  MS0_P3[7:0]                                  |\r\n 44 | Reserved|      R0_DIV[2:0]            |  MS0_DIVBY4[1:0]  |   MS0_P1[17:16]   |\r\n 45 |                                  MS0_P1[15:8]                                 |\r\n 46 |                                  MS0_P1[7:0]                                  |\r\n 47 |              MS0_P3[19:16]            |              MS0_P2[19:16]            |\r\n 48 |                                  MS0_P2[15:8]                                 |\r\n 49 |                                  MS0_P2[7:0]                                  |\r\n\r\n 50: Same pattern for CLK1\r\n \r\n 58: Same pattern for CLK2\r\n\r\n====\r\n165\t| Reserved|                          CLK0_PHOFF[6:0]                            |\r\n166\t| Reserved|                          CLK1_PHOFF[6:0]                            |\r\n167\t| Reserved|                          CLK2_PHOFF[6:0]                            |\r\n====\r\n177\t| PLLB_RST| Reserved| PLLA_RST|                     Reserved                    |\r\n====\r\n183\t|       XTAL_CL     |                         Reserved                          |\r\n====\r\n *\r\n */ \r\n\r\n#include <stdio.h>\r\n#include <math.h>\r\n#include \"pico/stdlib.h\"\r\n#include \"hardware/i2c.h\"\r\n#include \"hardware/timer.h\"\r\n#include \"hardware/clocks.h\"\r\n\r\n#include \"uSDR.h\"\r\n#include \"si5351.h\"\r\n\r\n\r\n// SI5351 register address definitions\r\n#define SI_CLK_OE\t\t3     \r\n#define SI_CLK0_CTL\t\t16\r\n#define SI_CLK1_CTL\t\t17\r\n#define SI_CLK2_CTL\t\t18\r\n#define SI_SYNTH_PLLA\t26\r\n#define SI_SYNTH_PLLB\t34\r\n#define SI_SYNTH_MS0\t42\r\n#define SI_SYNTH_MS1\t50\r\n#define SI_SYNTH_MS2\t58\r\n#define SI_SS_EN\t\t149\r\n#define SI_CLK0_PHOFF\t165\r\n#define SI_CLK1_PHOFF\t166\r\n#define SI_CLK2_PHOFF\t167\r\n#define SI_PLL_RESET\t177\r\n#define SI_XTAL_LOAD\t183\r\n\r\n// CLK_OE register 3 masks\r\n#define SI_CLK0_DISABLE\t0b00000001\t\t\t\t\t\t\t\t\t\t\t// Disable clock 0 output\r\n#define SI_CLK1_DISABLE\t0b00000010\t\t\t\t\t\t\t\t\t\t\t// Disable clock 1 output\r\n#define SI_CLK2_DISABLE\t0b00000100\t\t\t\t\t\t\t\t\t\t\t// Disable clock 2 output\r\n#define SI_VFO0_DISABLE\t0b00000011\t\t\t\t\t\t\t\t\t\t\t// Set bits to disable\r\n#define SI_VFO1_DISABLE\t0b00000100\t\t\t\t\t\t\t\t\t\t\t// Set bits to disable\r\n\r\n// CLKi_CTL register 16, 17, 18 values\r\n// Normally 0x4f for clk 0 and 1, 0x6f for clk 2\r\n#define SI_CLK_INT\t\t0b01000000  \t\t\t\t\t\t\t\t\t\t// Set integer mode \r\n#define SI_CLK_PLLB\t\t0b00100000\t\t\t\t\t\t\t\t\t\t\t// Select PLL B as MS source (default 0 = PLL A)\r\n#define SI_CLK_INV\t\t0b00010000\t\t\t\t\t\t\t\t\t\t\t// Invert output (i.e. phase + 180deg)\r\n#define SI_CLK_SRC\t\t0b00001100\t\t\t\t\t\t\t\t\t\t\t// Select output source: 11=MS, 00=XTAL direct\r\n#define SI_CLK_DRV\t\t0b00000011\t\t\t\t\t\t\t\t\t\t\t// Select output drive, increasingly: 2-4-6-8 mA \r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//   Play with DRV to get a nice block output\r\n#define SI_VFO0CTL\t\t0b00001101\t\t\t\t\t\t\t\t\t\t\t// nonINT, PLLA, nonINV, SRC=MS, 4mA\r\n#define SI_VFO1CTL\t\t0b00101101\t\t\t\t\t\t\t\t\t\t\t// nonINT, PLLB, nonINV, SRC=MS, 4mA\r\n\r\n// PLL_RESET register 177 values\r\n#define SI_PLLB_RST\t\t0b10001100\t\t\t\t\t\t\t\t\t\t\t// Reset PLL B\r\n#define SI_PLLA_RST\t\t0b00101100\t\t\t\t\t\t\t\t\t\t\t// Reset PLL A\r\n\r\n\r\n\r\n#define SI_XTAL_FREQ\t25001414UL\t\t\t\t\t\t\t\t\t\t\t// Replace with measured crystal frequency of XTAL for CL = 10pF (default)\r\n#define SI_MSN_LO\t\t((0.4e9)/SI_XTAL_FREQ)\t\t\t\t\t\t\t\t// Should be 600M, but 400MHz works too\r\n#define SI_MSN_HI\t\t((0.9e9)/SI_XTAL_FREQ)\r\n#define SI_VCO_LO\t\t400000000UL\t\t\t\t\t\t\t\t\t\t\t// Should be 600MHz, but 400MHz works too\r\n#define SI_VCO_HI\t\t900000000UL\r\n#define SI_PLL_C\t\t1000000UL\t\t\t\t\t\t\t\t\t\t\t// Parameter c for PLL-A and -B setting\r\n\r\n\r\nvfo_t vfo[2];\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// 0: clk0 / clk1     1: clk2\r\n\r\nint  si_getvfo(int i, vfo_t *v)\r\n{\r\n\tif ((i<0)||(i>1)) return 0;\t\t\t\t\t\t\t\t\t\t\t\t// Check VFO range\r\n\t\r\n\tv->freq = vfo[i].freq;\r\n\tv->phase = vfo[i].phase;\r\n\tv->ri = vfo[i].ri;\r\n\tv->msi = vfo[i].msi;\r\n\tv->msn = vfo[i].msn;\r\n\t\r\n\treturn 1;\r\n}\r\n\r\n\r\nvoid si_setphase(int i, uint8_t p)\r\n{\r\n\tif (i!=0) return;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Check VFO range\r\n\tif (p>3) return;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Check phase range\r\n\tvfo[i].phase = p; \t\t\t\t\t\t\t\t\t\t\t\t\t\t// Entry checks pass, so do the actual setting\r\n}\r\n\r\nvoid si_enable(int i, bool en)\r\n{\r\n\tuint8_t data[2];\r\n\t\r\n\tif ((i<0)||(i>1)) return;\t\t\t\t\t\t\t\t\t\t\t\t// Check VFO range\r\n\t\r\n\tdata[0] = SI_CLK_OE;\t\t\t\t\t\t\t\t\t\t\t\t\t// Read OE register\r\n\ti2c_put_data(i2c0, I2C_VFO, &data[0], 1, true);\r\n\ti2c_read_blocking(i2c0, I2C_VFO, &data[1], 1, false);\r\n\r\n\tif (i==0)\r\n\t\tdata[1] = (en ? data[1]&~SI_VFO0_DISABLE : data[1]|SI_VFO0_DISABLE);\t// clk0 and clk1\r\n\telse\r\n\t\tdata[1] = (en ? data[1]&~SI_VFO1_DISABLE : data[1]|SI_VFO1_DISABLE);\t// clk2\r\n\ti2c_put_data(i2c0, I2C_VFO, &data[0], 2, false);\r\n}\r\n\r\n/* \r\n * read contents of SI5351 registers, from reg to reg+len-1, output in data array \r\n */\r\nint si_getreg(uint8_t *data, uint8_t reg, uint8_t len)\r\n{\r\n\tint ret;\r\n\t\r\n\tret = i2c_put_data(i2c0, I2C_VFO, &reg, 1, true);\r\n\tif (ret<0) printf (\"I2C write error\\n\");\r\n\tret = i2c_get_data(i2c0, I2C_VFO, data, len, false);\r\n\tif (ret<0) printf (\"I2C read error\\n\");\r\n\treturn(len);\r\n}\r\n\r\n\r\n/*\r\n * Set up MSN PLL divider for vfo[i], assuming MSN has been set in vfo[i]\r\n * Optimize for speed, this may be called with short intervals\r\n * See also SiLabs AN619 section 3.2\r\n * VFO 0 refers to PLL a, VFO 1 refers to PLL B\r\n\r\n MSN = a + b/c\r\n c = 1000000\t\t\t\t\t\t\t(Fxtal/c step size)\r\n P1 = 128*a + Floor(128*b/c) - 512\r\n P2 = 128*b - c*Floor(128*b/c)\r\n P3 = c\r\n\r\n */\r\nvoid si_setmsn(int i)\r\n{\r\n\tuint8_t  data[16];\t\t\t\t\t\t\t\t\t\t\t\t\t\t// I2C trx buffer\r\n\tuint32_t P1, P2;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// MSN parameters, P3 is SI_PLL_C\r\n\tuint32_t A, B;\r\n\r\n\tif ((i<0)||(i>1)) return;\t\t\t\t\t\t\t\t\t\t\t\t// Check VFO range\r\n\t\r\n\tA  = (uint32_t)(floor(vfo[i].msn));\t\t\t\t\t\t\t\t\t\t// A is integer part of MSN\r\n\tB  = (uint32_t)((vfo[i].msn - (double)A) * SI_PLL_C);\t\t\t\t\t// B is C * fraction part of MSN (C is a constant)\r\n\tP2 = (uint32_t)(floor((double)(128 * B) / (double)SI_PLL_C));\t\t\t// use P2 for intermediate result..\r\n\tP1 = (uint32_t)(128 * A + P2 - 512);\r\n\tP2 = (uint32_t)(128 * B - SI_PLL_C * P2);\r\n\t\r\n\t// transfer PLL A or PLL B registers\r\n\tif (i==0)\r\n\t\tdata[0] = SI_SYNTH_PLLA;\r\n\telse\r\n\t\tdata[0] = SI_SYNTH_PLLB;\r\n\tdata[1] = (SI_PLL_C & 0x0000FF00) >> 8;\r\n\tdata[2] = (SI_PLL_C & 0x000000FF);\r\n\tdata[3] = (P1 & 0x00030000) >> 16;\r\n\tdata[4] = (P1 & 0x0000FF00) >> 8;\r\n\tdata[5] = (P1 & 0x000000FF);\r\n\tdata[6] = ((SI_PLL_C & 0x000F0000) >> 12) | ((P2 & 0x000F0000) >> 16);\r\n\tdata[7] = (P2 & 0x0000FF00) >> 8;\r\n\tdata[8] = (P2 & 0x000000FF);\r\n\ti2c_put_data(i2c0, I2C_VFO, data, 9, false);\r\n}\r\n\r\n/*\r\n * Set up registers with MS and R divider for vfo[i], assuming values have been set in vfo[i]\r\n * In this implementation we only use integer mode, i.e. b=0 and P3=1\r\n\r\n MSi = a + b/c\r\n c = 1, b=0\r\n P1 = 128*a - 512\r\n P2 = 0\r\n P3 = c\r\n\r\n */\r\nvoid si_setmsi(int i)\r\n{\r\n\tuint8_t data[16];\t\t\t\t\t\t\t\t\t\t\t\t\t\t// I2C trx buffer\r\n\tuint32_t P1;\r\n\tuint8_t  R;\r\n\r\n\tif ((i<0)||(i>1)) return;\t\t\t\t\t\t\t\t\t\t\t\t// Check VFO range\r\n\t\r\n\tP1 = vfo[i].msi;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Upgrade msi to uint32_t\r\n\tP1 = 128*P1-512;\r\n\tR  = vfo[i].ri;\r\n\tR  = (R&0xf0) ? ((R&0xc0)?((R&0x80)?7:6):(R&0x20)?5:4) : ((R&0x0c)?((R&0x08)?3:2):(R&0x02)?1:0); // quick log2(r)\r\n\t\r\n\tif (i==0)\r\n\t\tdata[0] = SI_SYNTH_MS0;\r\n\telse\r\n\t\tdata[0] = SI_SYNTH_MS2;\r\n\tdata[1] = 0x00;\r\n\tdata[2] = 0x01;\r\n\tdata[3] = ((P1 & 0x00030000) >> 16) | (R << 4 );\r\n\tdata[4] = (P1 & 0x0000FF00) >> 8;\r\n\tdata[5] = (P1 & 0x000000FF);\r\n\tdata[6] = 0x00;\r\n\tdata[7] = 0x00;\r\n\tdata[8] = 0x00;\r\n\ti2c_put_data(i2c0, I2C_VFO, data, 9, false);\r\n\r\n\t// If vfo[0] also set clk 1\tand phase offset, (integer mode(?) and high drive current for low phase noise).\r\n\tif (i==0)\r\n\t{\r\n\t\tdata[0] = SI_SYNTH_MS1;\t\t\t\t\t\t\t\t\t\t\t\t// Same data in synthesizer\r\n\t\ti2c_put_data(i2c0, I2C_VFO, data, 9, false);\r\n\t\t\r\n\t\tif ((vfo[0].phase==PH090)||(vfo[0].phase==PH270))\t\t\t\t\t// Phase is 90 or 270 deg?\r\n\t\t{\r\n\t\t\tdata[0] = SI_CLK1_PHOFF;\r\n\t\t\tdata[1] = vfo[0].msi;\t\t\t\t\t\t\t\t\t\t\t// offset == MSi for 90deg\r\n\t\t\ti2c_put_data(i2c0, I2C_VFO, data, 2, false);\r\n\t\t}\r\n\t\telse\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Phase is 0 or 180 deg\r\n\t\t{\r\n\t\t\tdata[0] = SI_CLK1_PHOFF;\r\n\t\t\tdata[1] = 0;\t\t\t\t\t\t\t\t\t\t\t\t\t// offset == 0 for 0deg\r\n\t\t\ti2c_put_data(i2c0, I2C_VFO, data, 2, false);\r\n\t\t}\r\n\t\tif ((vfo[0].phase==PH180)||(vfo[0].phase==PH270))\t\t\t\t\t// Phase is 180 or 270 deg?\r\n\t\t{\r\n\t\t\tdata[0] = SI_CLK0_CTL;\t\t\t\t\t\t\t\t\t\t\t// set the invert flag\r\n\t\t\tdata[1] = SI_VFO0CTL;\t\t\t\t\t\t\t\t\t\t\t// CLK0: nonINV\r\n\t\t\tdata[2] = SI_VFO0CTL | SI_CLK_INV;\t\t\t\t\t\t\t\t// CLK1: INV\r\n\t\t\ti2c_put_data(i2c0, I2C_VFO, data, 3, false);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tdata[0] = SI_CLK0_CTL;\t\t\t\t\t\t\t\t\t\t\t// set the invert flag\r\n\t\t\tdata[1] = SI_VFO0CTL;\t\t\t\t\t\t\t\t\t\t\t// CLK0: nonINV\r\n\t\t\tdata[2] = SI_VFO0CTL;\t\t\t\t\t\t\t\t\t\t\t// CLK1: nonINV\r\n\t\t\ti2c_put_data(i2c0, I2C_VFO, data, 3, false);\r\n\t\t}\r\n\r\n\t\t// Reset PLL A (use with care, this causes a click)\r\n\t\tdata[0] = SI_PLL_RESET;\r\n\t\tdata[1] = SI_PLLA_RST|SI_PLLB_RST;\r\n\t\ti2c_put_data(i2c0, I2C_VFO, data, 2, false);\r\n\t}\r\n\telse\r\n\t{\r\n\t\tdata[0] = SI_CLK2_CTL;\t\t\t\t\t\t\t\t\t\t\t\t// set the invert flag\r\n\t\tdata[1] = SI_VFO1CTL;\t\t\t\t\t\t\t\t\t\t\t\t// CLK2: nonINV\r\n\t\ti2c_put_data(i2c0, I2C_VFO, data, 2, false);\r\n\r\n\t\t// Reset PLL B (use with care, this causes a click)\r\n\t\tdata[0] = SI_PLL_RESET;\r\n\t\tdata[1] = SI_PLLA_RST|SI_PLLB_RST;\r\n\t\ti2c_put_data(i2c0, I2C_VFO, data, 2, false);\r\n\t}\t\t\r\n}\r\n\r\n\r\n/*\r\n * This function needs to be invoked at regular intervals, e.g. 10x per sec. See hmi.c\r\n * For VFO i, calculate required MSN setting, MSN = MSi*Ri*Fout/Fxtal based on required frequency\r\n *\r\n * If still in range, \r\n *\tthen just set MSN registers\r\n * else, \r\n *\trecalculate MSi and Ri as well\r\n *\tset MSN, MSi and Ri registers (implicitly resets PLL)\r\n * Returns:\r\n *  -1 range error\r\n *   0 nothing to do\r\n *   1 frequency set\r\n */\r\nint si_evaluate(int i, uint32_t freq)\r\n{\r\n\tdouble   msn;\r\n\tuint32_t fvco;\r\n\r\n\tif ((i<0)||(i>1)) return(-1);\t\t\t\t\t\t\t\t\t\t\t// Check VFO range\r\n\tif (vfo[i].freq == freq) return(0);\t\t\t\t\t\t\t\t\t\t// Nothing to do\r\n\t\r\n\t\r\n\tfvco = freq*vfo[i].msi*vfo[i].ri;\t\t\t\t\t\t\t\t\t\t// Required Fvco\r\n\tif ((fvco>=SI_VCO_LO)&&(fvco<SI_VCO_HI))\t\t\t\t\t\t\t\t// Check MSN range\r\n\t{\r\n\t\tvfo[i].msn = (double)fvco / SI_XTAL_FREQ;\t\t\t\t\t\t\t// Calculate required MSN\r\n\t\tsi_setmsn(i);\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Set registers\r\n\t}\r\n\telse\r\n\t{\r\n\t\t// Pre-scale Ri, stretch down Ri=1 range to 3MHz\r\n\t\t// Otherwise use just 32 and 128\r\n\t\tvfo[i].ri  = (freq<1000000UL)?128:((freq<3000000UL)?32 : 1);\r\n\t\t\r\n\t\t// Set MSi\r\n\t\tif ((freq < 6000000UL)&&(vfo[i].ri==1))\t\t\t\t\t\t\t\t// Handle Low end of Ri=1 range\r\n\t\t\tvfo[i].msi = (uint8_t)126;\t\t\t\t\t\t\t\t\t\t// Maximum MSi on Fvco=(4x126)MHz\r\n\t\telse\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Or calculate MSi on Fvco=750MHz\r\n\t\t\tvfo[i].msi = (uint8_t)((700000000UL / (freq * vfo[i].ri)) & 0x000000fe);\r\n\r\n\t\tmsn = (double)(vfo[i].msi); \t\t\t\t\t\t\t\t\t\t// Re-calculate MSN\r\n\t\tmsn = msn * (double)(vfo[i].ri);\r\n\t\tmsn = msn * (double)(vfo[i].freq) / SI_XTAL_FREQ;\r\n\t\tvfo[i].msn = msn;\r\n\t\t\r\n\t\tvfo[i].phase = (i==1)?PH000:PH270;\t\t\t\t\t\t\t\t\t// Hard coded phase\r\n\t\t\r\n\t\tsi_setmsn(i);\r\n\t\tsi_setmsi(i);\r\n\t}\r\n\t\r\n\tvfo[i].freq = freq;\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Adopt new freq\r\n\t\r\n\treturn(1);\r\n}\r\n\r\n\r\n/*\r\n * Initialize the Si5351 VFO registers\r\n */\r\nvoid si_init(void)\r\n{\r\n\tuint8_t data[16];\t\t\t\t\t\t\t\t\t\t\t\t\t\t// I2C trx buffer\r\n\r\n\t// Disable spread spectrum (startup state is undefined)\t\r\n\tdata[0] = SI_SS_EN;\r\n\tdata[1] = 0x00;\r\n\ti2c_put_data(i2c0, I2C_VFO, data, 2, false);\r\n\t\r\n\t// First time init of clock control registers\r\n\tdata[0] = SI_CLK0_CTL;\r\n\tdata[1] = SI_VFO0CTL;\r\n\tdata[2] = SI_VFO0CTL;\r\n\tdata[3] = SI_VFO1CTL;\r\n\ti2c_put_data(i2c0, I2C_VFO, data, 4, false);\r\n\t\t\t\r\n\t// Initialize VFO values\r\n\tvfo[0].freq  = 7074000;\r\n\tvfo[0].phase = PH270;\r\n\tvfo[0].ri    = 1;\r\n\tvfo[0].msi   = 106;\r\n\tvfo[0].msn   = ((double)vfo[0].freq*vfo[0].msi)/(double)SI_XTAL_FREQ;\r\n\t\r\n\tvfo[1].freq  = 10000000;\r\n\tvfo[1].phase = PH000;\r\n\tvfo[1].ri    = 1;\r\n\tvfo[1].msi   = 76;\r\n\tvfo[1].msn   = ((double)vfo[1].freq*vfo[1].msi)/(double)SI_XTAL_FREQ;\r\n\t\r\n\t// Commit settings\r\n\tsi_setmsn(0);\r\n\tsi_setmsi(0);\t\r\n\tsi_setmsn(1);\r\n\tsi_setmsi(1);\t\r\n\r\n\t// Enable only VFO 0 outputs\t\r\n\tsi_enable(0, true);\r\n\tsi_enable(1, false);\r\n}\r\n\r\n"
  },
  {
    "path": "si5351.h",
    "content": "#ifndef _SI5351_H\r\n#define _SI5351_H\r\n/*\r\n * si5351.h\r\n *\r\n * Created: March 2021\r\n * Author: Arjan\r\n *\r\n * Driver for Si5351A chip.\r\n * VFO 0 is a quadrature clock on outputs 0 and 1, \r\n * VFO 1 is a regular clock on output 2.\r\n *\r\n * VFO 0 allows to set frequency and phase offsets of 0-90-180-270 deg (delay clk1 wrt clk0)\r\n * VFO 1 just allows to set frequency, phase is ignored\r\n * \r\n * Use the 'set' functions to change VFO settings.\r\n * Make regular calls to the 'evaluate' function to commit the changes (if any).\r\n * To get smooth tuning, a suggested interval is 0.1sec, e.g. from a timer loop\r\n *\r\n * See si5351.c for more information \r\n *\r\n */ \r\n\r\n// Phase definitions for si_setphase()\r\n#define PH000\t0\r\n#define PH090\t1\r\n#define PH180\t2\r\n#define PH270\t3\r\n\r\ntypedef struct\r\n{\r\n\tuint32_t freq;\t\t// type can hold up to 4GHz\r\n\tuint8_t  phase;\t\t// in quarter waves (0, 1, 2, 3)\r\n\tuint8_t  ri;\t\t// Ri (1 .. 128), but should be 1 for VFO 0\r\n\tuint8_t  msi;\t\t// MSi parameter a (4, 6, 8 .. 126)\r\n\tdouble   msn;\t\t// MSN (24.0 .. 35.9999)\r\n} vfo_t;\r\n\r\n\r\nint  si_getreg(uint8_t *buffer, uint8_t reg, uint8_t len);\r\nint  si_getvfo(int i, vfo_t *v);\r\nvoid si_setphase(int i, uint8_t p);\r\nvoid si_enable(int i, bool en);\r\nvoid si_init(void);\r\nint  si_evaluate(int i, uint32_t freq);\r\n\r\n\r\n#endif /* _SI5351_H */"
  },
  {
    "path": "uSDR.c",
    "content": "/*\r\n * uSDR.c\r\n *\r\n * Created: Mar 2021\r\n * Author: Arjan te Marvelde\r\n * \r\n * The main loop of the application.\r\n * This initializes the units that do the actual work, and then loops in the background. \r\n * Other units are:\r\n * - dsp.c, containing all signal processing in RX and TX branches. This part runs on the second processor core.\r\n * - si5351.c, containing all controls for setting up the si5351 clock generator.\r\n * - lcd.c, contains all functions to put something on the LCD\r\n * - hmi.c, contains all functions that handle user inputs\r\n */\r\n\r\n#include <stdio.h>\r\n#include <string.h>\r\n#include \"pico/stdlib.h\"\r\n#include \"pico/sem.h\"\r\n#include \"hardware/i2c.h\"\r\n#include \"hardware/spi.h\"\r\n#include \"hardware/gpio.h\"\r\n#include \"hardware/timer.h\"\r\n#include \"hardware/clocks.h\"\r\n\r\n#include \"uSDR.h\"\r\n#include \"hmi.h\"\r\n#include \"lcd.h\"\r\n#include \"dsp.h\"\r\n#include \"si5351.h\"\r\n#include \"monitor.h\"\r\n#include \"relay.h\"\r\n\r\n\r\n\r\n/*\r\n * Wrappers around i2c_write_blocking() and i2c_read_blocking()\r\n * The SDK functions return too soon, potentially causing overlapping calls\r\n */\r\n\r\nint i2c_put_data(i2c_inst_t *i2c, uint8_t addr, const uint8_t *src, size_t len, bool nostop)\r\n{\r\n\tint r = i2c_write_timeout_us(i2c, addr, src, len, nostop, I2C_XACT_US(len));\r\n\t//sleep_us(I2C_LINGER_US);\r\n\treturn(r);\r\n}\r\n\r\nint i2c_get_data(i2c_inst_t *i2c, uint8_t addr, uint8_t *dst, size_t len, bool nostop)\r\n{\r\n\tint r = i2c_read_timeout_us(i2c, addr, dst, len, nostop, I2C_XACT_US(len));\r\n\t//sleep_us(I2C_LINGER_US);\r\n\treturn(r);\r\n}\r\n\r\n\r\n/* \r\n * LED TIMER definition and callback routine\r\n */\r\nstruct repeating_timer led_timer;\r\nbool led_callback(struct repeating_timer *t) \r\n{\r\n\tstatic bool led_state;\r\n\t\r\n\tgpio_put(PICO_DEFAULT_LED_PIN, led_state);\r\n\tled_state = (led_state?false:true);\r\n\treturn true;\r\n}\r\n\r\n\r\n/*\r\n * Scheduler callback function.\r\n * This executes every LOOP_MS.\r\n */\r\nsemaphore_t loop_sem;\r\nstruct repeating_timer loop_timer;\r\nbool loop_callback(struct repeating_timer *t)\r\n{\r\n\tsem_release(&loop_sem);\r\n\treturn(true);\r\n}\r\n\r\n\r\nint main()\r\n{\r\n\t/* \r\n\t * Main loop rnning on Core 0\r\n\t * Optional: increase core voltage (normally 1.1V)\r\n\t * Optional: overclock the CPU to 250MHz  (normally 125MHz)\r\n\t * Note that clk_peri (e.g. I2C) is derived from the SYS PLL\r\n\t * Note that clk_adc sampling clock is derived from the 48MHz USB PLL.\r\n\t */\r\n\t//vreg_set_voltage(VREG_VOLTAGE_1_25); sleep_ms(10);\r\n\t//set_sys_clock_khz(250000, false); sleep_ms(10);\r\n\t\r\n\t/* \r\n\t * Initialize LED pin output \r\n\t */\r\n\tgpio_init(PICO_DEFAULT_LED_PIN);\r\n\tgpio_set_dir(PICO_DEFAULT_LED_PIN, GPIO_OUT);\r\n\tgpio_put(PICO_DEFAULT_LED_PIN, true);\t\t\t\t\t\t\t\t\t// Set LED on\r\n\tadd_repeating_timer_ms(-LED_MS, led_callback, NULL, &led_timer);\r\n\r\n\t/*\r\n\t * i2c0 is used for the si5351 and expander interfaces\r\n\t * spi1 is used for the LCD interface\r\n\t * Do not invoke i2c functions from interrupt handlers!\r\n\t */\r\n\ti2c_init(i2c0, I2C0_CLOCK);\t\t\t\t\t\t\t\t\t\t\t\t// i2c0 initialisation \r\n\tgpio_set_function(I2C0_SDA, GPIO_FUNC_I2C);\r\n\tgpio_set_function(I2C0_SCL, GPIO_FUNC_I2C);\r\n\tgpio_pull_up(I2C0_SDA);\r\n\tgpio_pull_up(I2C0_SCL);\r\n\t\r\n\tspi_init(spi1, SPI1_CLOCK);\t\t\t\t\t\t\t\t\t\t\t\t// spi1 initialisation at 40 MHz\r\n\tgpio_set_function(LCD_CLK, GPIO_FUNC_SPI);\r\n\tgpio_set_function(LCD_MOSI, GPIO_FUNC_SPI);\r\n\tspi_set_format(spi1, 8, SPI_CPOL_0, SPI_CPHA_0, SPI_MSB_FIRST);\t\t\t// 8 bit transfer, clock idle low, clock rising edge\r\n\t\r\n\r\n\t/* Initialize the SW units */\r\n\tsi_enable(0, false);\t\t\t\t\t\t\t\t\t\t\t\t\t// Disable VFO\r\n\tmon_init();\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Monitor shell on stdio\r\n\tlcd_init();\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// LCD output unit\r\n\thmi_init();\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// HMI user inputs\r\n\tsi_init();\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// VFO control unit\r\n\tdsp_init();\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Signal processing unit\r\n\trelay_init();\r\n\t\r\n\t/* A simple round-robin scheduler */\r\n\tsem_init(&loop_sem, 1, 1) ;\t\r\n\tadd_repeating_timer_ms(-LOOP_MS, loop_callback, NULL, &loop_timer);\r\n\twhile (1) \t\t\t\t\t\t\t\t\t\t\r\n\t{\r\n\t\tsem_acquire_blocking(&loop_sem);\t\t\t\t\t\t\t\t\t// Wait until timer callback releases sem\r\n\t\thmi_evaluate();\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Refresh HMI (and VFO, BPF, etc)\r\n\t\tmon_evaluate();\t\t\t\t\t\t\t\t\t\t\t\t\t\t// Check monitor input\r\n\t}\r\n\r\n    return 0;\r\n}\r\n"
  },
  {
    "path": "uSDR.h",
    "content": "#ifndef __USDR_H__\n#define __USDR_H__\n/* \n * uSDR.h\n *\n * Created: Aug 2022\n * Author: Arjan te Marvelde\n *\n * This file contains the system-wide definitions and platform services.\n *\n */\n\n#include \"hardware/i2c.h\"\n\n\n\n\n#define DSP_FFT\t\t\t\t\t1\t\t\t\t\t\t\t\t\t\t\t// Set this to 1 when FFT engine must be used\n#define CH_I\t\t\t\t\t0\t\t\t\t\t\t\t\t\t\t\t// I channel index for ADC, DAC, etc\n#define CH_Q\t\t\t\t\t1\t\t\t\t\t\t\t\t\t\t\t// Q channel index for ADC, DAC, etc\n#define CH_A\t\t\t\t\t2\t\t\t\t\t\t\t\t\t\t\t// A channel index for ADC, DAC, etc\n\n\n/* GPIO assignments and pinning*/\n\n#define GP_AUX0\t\t\t\t\t0\t\t\t\t\t\t\t\t\t\t\t// Pin  1: Auxiliary 0\n#define GP_AUX1\t\t\t\t\t1\t\t\t\t\t\t\t\t\t\t\t// Pin  2: Auxiliary 1\n\n#define GP_AUX2\t\t\t\t\t2\t\t\t\t\t\t\t\t\t\t\t// Pin  4: Auxiliary 2\n#define GP_AUX3\t\t\t\t\t3\t\t\t\t\t\t\t\t\t\t\t// Pin  5: Auxiliary 3\n#define GP_ENC_A\t\t\t\t4\t\t\t\t\t\t\t\t\t\t\t// Pin  6: Encoder channel A\n#define GP_ENC_B\t\t\t\t5\t\t\t\t\t\t\t\t\t\t\t// Pin  7: Encoder channel B\n\n#define GP_BTN_0\t\t\t\t6\t\t\t\t\t\t\t\t\t\t\t// Pin  9: Cancel\n#define GP_BTN_1\t\t\t\t7\t\t\t\t\t\t\t\t\t\t\t// Pin 10: Right move\n#define GP_BTN_2\t\t\t\t8\t\t\t\t\t\t\t\t\t\t\t// Pin 11: Left move\n#define GP_BTN_3\t\t\t\t9\t\t\t\t\t\t\t\t\t\t\t// Pin 12: Accept\n\n#define LCD_BL\t\t\t\t\t10\t\t\t\t\t\t\t\t\t\t\t// Pin 14: LCD backlight, on\n#define LCD_RST\t\t\t\t\t11\t\t\t\t\t\t\t\t\t\t\t// Pin 15: LCD reset, on\n#define LCD_DC\t\t\t\t\t12\t\t\t\t\t\t\t\t\t\t\t// Pin 16: LCD data/control, on\n#define LCD_CS\t\t\t\t\t13\t\t\t\t\t\t\t\t\t\t\t// Pin 17: LCD Chip select (NC, always low)\n\n#define LCD_CLK\t\t\t\t\t14\t\t\t\t\t\t\t\t\t\t\t// Pin 19: LCD SPI clock\n#define LCD_MOSI\t\t\t\t15\t\t\t\t\t\t\t\t\t\t\t// Pin 20: LCD SPI data\n\n#define I2C0_SDA\t\t\t\t16\t\t\t\t\t\t\t\t\t\t\t// Pin 21: I2C channel 0 - data\n#define I2C0_SCL\t\t\t\t17\t\t\t\t\t\t\t\t\t\t\t// Pin 22: I2C channel 0 - clock\n\n#define GP_PTT_OUT\t\t\t\t18\t\t\t\t\t\t\t\t\t\t\t// Pin 24: Output PTT to bus, TX=1, RX=0\n#define GP_PTT_IN\t\t\t\t19\t\t\t\t\t\t\t\t\t\t\t// Pin 25: Input PTT from Mic, TX=0, RX=1\n#define DAC_Q\t\t\t\t\t20\t\t\t\t\t\t\t\t\t\t\t// Pin 26: PWM DAC Q channel\n#define DAC_I\t\t\t\t\t21\t\t\t\t\t\t\t\t\t\t\t// Pin 27: PWM DAC I channel\n\n#define DAC_A\t\t\t\t\t22\t\t\t\t\t\t\t\t\t\t\t// Pin 29: PWM DAC A channel\n#define PICO_RESET\t\t\t\t-1\t\t\t\t\t\t\t\t\t\t\t// Pin 30: CPU Reset, no SW use\n#define ADC_I\t\t\t\t\t26\t\t\t\t\t\t\t\t\t\t\t// Pin 31: ADC 0, Q channel\n#define ADC_Q\t\t\t\t\t27\t\t\t\t\t\t\t\t\t\t\t// Pin 32: ADC 1, I channel\n\n#define ADC_A\t\t\t\t\t28\t\t\t\t\t\t\t\t\t\t\t// Pin 34: ADC 2, A channel\n#define PICO_ADCREF\t\t\t\t-1\t\t\t\t\t\t\t\t\t\t\t// Pin 35: ADC reference voltage, no SW use\n#define PICO_3V3OUT\t\t\t\t-1\t\t\t\t\t\t\t\t\t\t\t// Pin 36: 3V3 supply output, no SW use\n#define PICO_3V3EN\t\t\t\t-1\t\t\t\t\t\t\t\t\t\t\t// Pin 37: 3V3 enable input, no SW use\n\n#define PICO_VSYS\t\t\t\t-1\t\t\t\t\t\t\t\t\t\t\t// Pin 39: Vcc (5V) PSU input, no SW use\n#define PICO_VBUS\t\t\t\t-1\t\t\t\t\t\t\t\t\t\t\t// Pin 40: Vcc internal, no SW use\n\n\n\n/* Timer values */\n\n#define LED_MS\t\t\t\t\t1000\t\t\t\t\t\t\t\t\t\t// LED flashing, half cycle duration\n#define LOOP_MS\t\t\t\t\t100\t\t\t\t\t\t\t\t\t\t\t// Core 0 main loop timer (see also uSDR.c)\n\n\n/* I2C addresses */\n\n#define I2C_RX\t\t\t\t\t0x21\t\t\t\t\t\t\t\t\t\t// Expander on Rx board\n#define I2C_BPF\t\t\t\t\t0x20\t\t\t\t\t\t\t\t\t\t// Expander on Filter board\n#define I2C_VFO\t\t\t\t\t0x60\t\t\t\t\t\t\t\t\t\t// Si5351A\n\n\n/* I2C settings and wrapper functions (blocking write and read) */\n#define I2C0_CLOCK\t\t\t\t(100*1000)\t\t\t\t\t\t\t\t\t// Clock on i2c bus: 100kHz, cycle=10usec\n#define I2C_XACT_US(x)\t\t\t((uint)(x)+1)*10*10*2\t\t\t\t\t\t// Transaction time: 10 bits * cycle * length\nint i2c_put_data(i2c_inst_t *i2c, uint8_t addr, const uint8_t *src, size_t len, bool nostop);\nint i2c_get_data(i2c_inst_t *i2c, uint8_t addr, uint8_t *dst, size_t len, bool nostop);\n\n/* SPI settings */\n#define SPI1_CLOCK\t\t\t\t(40*1000*1000)\t\t\t\t\t\t\t\t// Clock on spi1 interface: 40MHz\n\n/* LCD type selection (see also lcd.c) */\n\n#define LCD_1804\t\t\t0\t\t\t\t\t\t\t\t\t\t\t\t// Type 0: Seeed / Grove\n#define LCD_8574_ADA\t\t1\t\t\t\t\t\t\t\t\t\t\t\t// Type 1: Adafruit I2C backpack\n#define LCD_8574_GEN\t\t2\t\t\t\t\t\t\t\t\t\t\t\t// Type 2: Generic I2C backpack\n#define LCD_IL9341\t\t\t3\t\t\t\t\t\t\t\t\t\t\t\t// Type 3: Graphical 320x240\n#define LCD_TYPE\t\t\tLCD_IL9341\t\t\t\t\t\t\t\t\t\t// Active selection\n\n\n\n#endif\n"
  }
]