vga-framebuffer 0.7.0

A text console output over a VGA compatible signal
Documentation
/// This MS-DOS CodePage 850. It offers a compromise between the box
/// characters of CodePage 437 and the accents of ISO 8859-1 / Latin-1.
#[repr(u8)]
#[derive(Copy, Clone)]
pub enum Char {
    Null,                                   // Char 000 ' ' = REPLACEMENT CHARACTER
    SOH,                                    // Char 001 '☺' = WHITE SMILING FACE
    STX,                                    // Char 002 '☻' = BLACK SMILING FACE
    ETX,                                    // Char 003 '♥' = BLACK HEART SUIT
    EOT,                                    // Char 004 '♦' = BLACK DIAMOND SUIT
    ENQ,                                    // Char 005 '♣' = BLACK CLUB SUIT
    ACK,                                    // Char 006 '♠' = BLACK SPADE SUIT
    BEL,                                    // Char 007 '•' = BULLET
    BS,                                     // Char 008 '◘' = INVERSE BULLET
    HT,                                     // Char 009 '○' = WHITE CIRCLE
    LF,                                     // Char 010 '◙' = INVERSE WHITE CIRCLE
    VT,                                     // Char 011 '♂' = MALE SIGN
    FF,                                     // Char 012 '♀' = FEMALE SIGN
    CR,                                     // Char 013 '♪' = EIGHTH NOTE
    SO,                                     // Char 014 '♫' = BEAMED EIGHTH NOTES
    SI,                                     // Char 015 '☼' = WHITE SUN WITH RAYS
    DLE,                                    // Char 016 '►' = BLACK RIGHT-POINTING ARROW
    DC1,                                    // Char 017 '◄' = BLACK LEFT-POINTING ARROW
    DC2,                                    // Char 018 '↕' = UP DOWN ARROW
    DC3,                                    // Char 019 '‼' = DOUBLE EXCLAMATION MARK
    DC4,                                    // Char 020 '¶' = PILCROW SIGN
    NAK,                                    // Char 021 '§' = SECTION SIGN
    SYN,                                    // Char 022 '▬' = BLACK RECTANGLE
    ETB,                                    // Char 023 '↨' = UP DOWN ARROW WITH BASE
    CAN,                                    // Char 024 '↑' = UPWARDS ARROW
    EM,                                     // Char 025 '↓' = DOWNWARDS ARROW
    SUB,                                    // Char 026 '→' = RIGHTWARDS ARROW
    Escape,                                 // Char 027 '←' = LEFTWARDS ARROW
    FS,                                     // Char 028 '∟' = RIGHT ANDLE
    GS,                                     // Char 029 '↔' = LEFT RIGHT ARROW
    RS,                                     // Char 030 '▲' = BLACK UP POINTING ARROW
    US,                                     // Char 031 '▼' = BLACK DOWN POINTING ARROW
    Space,                                  // Char 032 ' ' = SPACE
    ExclamationMark,                        // Char 033 '!' = EXCLAMATION MARK
    QuotationMark,                          // Char 034 '"' = QUOTATION MARK
    NumberSign,                             // Char 035 '#' = NUMBER SIGN
    DollarSign,                             // Char 036 '$' = DOLLAR SIGN
    PercentSign,                            // Char 037 '%' = PERCENT SIGN
    Ampersand,                              // Char 038 '&' = AMPERSAND
    Apostrophe,                             // Char 039 "'" = APOSTROPHE
    LeftParenthesis,                        // Char 040 '(' = LEFT PARENTHESIS
    RightParenthesis,                       // Char 041 ')' = RIGHT PARENTHESIS
    Asterisk,                               // Char 042 '*' = ASTERISK
    PlusSign,                               // Char 043 '+' = PLUS SIGN
    Comma,                                  // Char 044 ',' = COMMA
    HyphenMinus,                            // Char 045 '-' = HYPHEN-MINUS
    FullStop,                               // Char 046 '.' = FULL STOP
    Solidus,                                // Char 047 '/' = SOLIDUS
    DigitZero,                              // Char 048 '0' = DIGIT ZERO
    DigitOne,                               // Char 049 '1' = DIGIT ONE
    DigitTwo,                               // Char 050 '2' = DIGIT TWO
    DigitThree,                             // Char 051 '3' = DIGIT THREE
    DigitFour,                              // Char 052 '4' = DIGIT FOUR
    DigitFive,                              // Char 053 '5' = DIGIT FIVE
    DigitSix,                               // Char 054 '6' = DIGIT SIX
    DigitSeven,                             // Char 055 '7' = DIGIT SEVEN
    DigitEight,                             // Char 056 '8' = DIGIT EIGHT
    DigitNine,                              // Char 057 '9' = DIGIT NINE
    Colon,                                  // Char 058 ':' = COLON
    Semicolon,                              // Char 059 ';' = SEMICOLON
    LessThanSign,                           // Char 060 '<' = LESS-THAN SIGN
    EqualsSign,                             // Char 061 '=' = EQUALS SIGN
    GreaterThanSign,                        // Char 062 '>' = GREATER-THAN SIGN
    QuestionMark,                           // Char 063 '?' = QUESTION MARK
    CommercialAt,                           // Char 064 '@' = COMMERCIAL AT
    LatinCapitalLetterA,                    // Char 065 'A' = LATIN CAPITAL LETTER A
    LatinCapitalLetterB,                    // Char 066 'B' = LATIN CAPITAL LETTER B
    LatinCapitalLetterC,                    // Char 067 'C' = LATIN CAPITAL LETTER C
    LatinCapitalLetterD,                    // Char 068 'D' = LATIN CAPITAL LETTER D
    LatinCapitalLetterE,                    // Char 069 'E' = LATIN CAPITAL LETTER E
    LatinCapitalLetterF,                    // Char 070 'F' = LATIN CAPITAL LETTER F
    LatinCapitalLetterG,                    // Char 071 'G' = LATIN CAPITAL LETTER G
    LatinCapitalLetterH,                    // Char 072 'H' = LATIN CAPITAL LETTER H
    LatinCapitalLetterI,                    // Char 073 'I' = LATIN CAPITAL LETTER I
    LatinCapitalLetterJ,                    // Char 074 'J' = LATIN CAPITAL LETTER J
    LatinCapitalLetterK,                    // Char 075 'K' = LATIN CAPITAL LETTER K
    LatinCapitalLetterL,                    // Char 076 'L' = LATIN CAPITAL LETTER L
    LatinCapitalLetterM,                    // Char 077 'M' = LATIN CAPITAL LETTER M
    LatinCapitalLetterN,                    // Char 078 'N' = LATIN CAPITAL LETTER N
    LatinCapitalLetterO,                    // Char 079 'O' = LATIN CAPITAL LETTER O
    LatinCapitalLetterP,                    // Char 080 'P' = LATIN CAPITAL LETTER P
    LatinCapitalLetterQ,                    // Char 081 'Q' = LATIN CAPITAL LETTER Q
    LatinCapitalLetterR,                    // Char 082 'R' = LATIN CAPITAL LETTER R
    LatinCapitalLetterS,                    // Char 083 'S' = LATIN CAPITAL LETTER S
    LatinCapitalLetterT,                    // Char 084 'T' = LATIN CAPITAL LETTER T
    LatinCapitalLetterU,                    // Char 085 'U' = LATIN CAPITAL LETTER U
    LatinCapitalLetterV,                    // Char 086 'V' = LATIN CAPITAL LETTER V
    LatinCapitalLetterW,                    // Char 087 'W' = LATIN CAPITAL LETTER W
    LatinCapitalLetterX,                    // Char 088 'X' = LATIN CAPITAL LETTER X
    LatinCapitalLetterY,                    // Char 089 'Y' = LATIN CAPITAL LETTER Y
    LatinCapitalLetterZ,                    // Char 090 'Z' = LATIN CAPITAL LETTER Z
    LeftSquareBracket,                      // Char 091 '[' = LEFT SQUARE BRACKET
    ReverseSolidus,                         // Char 092 '\\' = REVERSE SOLIDUS
    RightSquareBracket,                     // Char 093 ']' = RIGHT SQUARE BRACKET
    CircumflexAccent,                       // Char 094 '^' = CIRCUMFLEX ACCENT
    LowLine,                                // Char 095 '_' = LOW LINE
    GraveAccent,                            // Char 096 '`' = GRAVE ACCENT
    LatinSmallLetterA,                      // Char 097 'a' = LATIN SMALL LETTER A
    LatinSmallLetterB,                      // Char 098 'b' = LATIN SMALL LETTER B
    LatinSmallLetterC,                      // Char 099 'c' = LATIN SMALL LETTER C
    LatinSmallLetterD,                      // Char 100 'd' = LATIN SMALL LETTER D
    LatinSmallLetterE,                      // Char 101 'e' = LATIN SMALL LETTER E
    LatinSmallLetterF,                      // Char 102 'f' = LATIN SMALL LETTER F
    LatinSmallLetterG,                      // Char 103 'g' = LATIN SMALL LETTER G
    LatinSmallLetterH,                      // Char 104 'h' = LATIN SMALL LETTER H
    LatinSmallLetterI,                      // Char 105 'i' = LATIN SMALL LETTER I
    LatinSmallLetterJ,                      // Char 106 'j' = LATIN SMALL LETTER J
    LatinSmallLetterK,                      // Char 107 'k' = LATIN SMALL LETTER K
    LatinSmallLetterL,                      // Char 108 'l' = LATIN SMALL LETTER L
    LatinSmallLetterM,                      // Char 109 'm' = LATIN SMALL LETTER M
    LatinSmallLetterN,                      // Char 110 'n' = LATIN SMALL LETTER N
    LatinSmallLetterO,                      // Char 111 'o' = LATIN SMALL LETTER O
    LatinSmallLetterP,                      // Char 112 'p' = LATIN SMALL LETTER P
    LatinSmallLetterQ,                      // Char 113 'q' = LATIN SMALL LETTER Q
    LatinSmallLetterR,                      // Char 114 'r' = LATIN SMALL LETTER R
    LatinSmallLetterS,                      // Char 115 's' = LATIN SMALL LETTER S
    LatinSmallLetterT,                      // Char 116 't' = LATIN SMALL LETTER T
    LatinSmallLetterU,                      // Char 117 'u' = LATIN SMALL LETTER U
    LatinSmallLetterV,                      // Char 118 'v' = LATIN SMALL LETTER V
    LatinSmallLetterW,                      // Char 119 'w' = LATIN SMALL LETTER W
    LatinSmallLetterX,                      // Char 120 'x' = LATIN SMALL LETTER X
    LatinSmallLetterY,                      // Char 121 'y' = LATIN SMALL LETTER Y
    LatinSmallLetterZ,                      // Char 122 'z' = LATIN SMALL LETTER Z
    LeftCurlyBracket,                       // Char 123 '{' = LEFT CURLY BRACKET
    VerticalLine,                           // Char 124 '|' = VERTICAL LINE
    RightCurlyBracket,                      // Char 125 '}' = RIGHT CURLY BRACKET
    Tilde,                                  // Char 126 '~' = TILDE
    Delete,                                 // Char 127 '\x7f' = DELETE
    LatinCapitalLetterCWithCedilla,         // Char 128 'Ç' = LATIN CAPITAL LETTER C WITH CEDILLA
    LatinSmallLetterUWithDiaeresis,         // Char 129 'ü' = LATIN SMALL LETTER U WITH DIAERESIS
    LatinSmallLetterEWithAcute,             // Char 130 'é' = LATIN SMALL LETTER E WITH ACUTE
    LatinSmallLetterAWithCircumflex,        // Char 131 'â' = LATIN SMALL LETTER A WITH CIRCUMFLEX
    LatinSmallLetterAWithDiaeresis,         // Char 132 'ä' = LATIN SMALL LETTER A WITH DIAERESIS
    LatinSmallLetterAWithGrave,             // Char 133 'à' = LATIN SMALL LETTER A WITH GRAVE
    LatinSmallLetterAWithRingAbove,         // Char 134 'å' = LATIN SMALL LETTER A WITH RING ABOVE
    LatinSmallLetterCWithCedilla,           // Char 135 'ç' = LATIN SMALL LETTER C WITH CEDILLA
    LatinSmallLetterEWithCircumflex,        // Char 136 'ê' = LATIN SMALL LETTER E WITH CIRCUMFLEX
    LatinSmallLetterEWithDiaeresis,         // Char 137 'ë' = LATIN SMALL LETTER E WITH DIAERESIS
    LatinSmallLetterEWithGrave,             // Char 138 'è' = LATIN SMALL LETTER E WITH GRAVE
    LatinSmallLetterIWithDiaeresis,         // Char 139 'ï' = LATIN SMALL LETTER I WITH DIAERESIS
    LatinSmallLetterIWithCircumflex,        // Char 140 'î' = LATIN SMALL LETTER I WITH CIRCUMFLEX
    LatinSmallLetterIWithGrave,             // Char 141 'ì' = LATIN SMALL LETTER I WITH GRAVE
    LatinCapitalLetterAWithDiaeresis,       // Char 142 'Ä' = LATIN CAPITAL LETTER A WITH DIAERESIS
    LatinCapitalLetterAWithRingAbove, // Char 143 'Å' = LATIN CAPITAL LETTER A WITH RING ABOVE
    LatinCapitalLetterEWithAcute,     // Char 144 'É' = LATIN CAPITAL LETTER E WITH ACUTE
    LatinSmallLetterAe,               // Char 145 'æ' = LATIN SMALL LETTER AE
    LatinCapitalLetterAe,             // Char 146 'Æ' = LATIN CAPITAL LETTER AE
    LatinSmallLetterOWithCircumflex,  // Char 147 'ô' = LATIN SMALL LETTER O WITH CIRCUMFLEX
    LatinSmallLetterOWithDiaeresis,   // Char 148 'ö' = LATIN SMALL LETTER O WITH DIAERESIS
    LatinSmallLetterOWithGrave,       // Char 149 'ò' = LATIN SMALL LETTER O WITH GRAVE
    LatinSmallLetterUWithCircumflex,  // Char 150 'û' = LATIN SMALL LETTER U WITH CIRCUMFLEX
    LatinSmallLetterUWithGrave,       // Char 151 'ù' = LATIN SMALL LETTER U WITH GRAVE
    LatinSmallLetterYWithDiaeresis,   // Char 152 'ÿ' = LATIN SMALL LETTER Y WITH DIAERESIS
    LatinCapitalLetterOWithDiaeresis, // Char 153 'Ö' = LATIN CAPITAL LETTER O WITH DIAERESIS
    LatinCapitalLetterUWithDiaeresis, // Char 154 'Ü' = LATIN CAPITAL LETTER U WITH DIAERESIS
    LatinSmallLetterOWithStroke,      // Char 155 'ø' = LATIN SMALL LETTER O WITH STROKE
    PoundSign,                        // Char 156 '£' = POUND SIGN
    LatinCapitalLetterOWithStroke,    // Char 157 'Ø' = LATIN CAPITAL LETTER O WITH STROKE
    MultiplicationSign,               // Char 158 '×' = MULTIPLICATION SIGN
    LatinSmallLetterFWithHook,        // Char 159 'ƒ' = LATIN SMALL LETTER F WITH HOOK
    LatinSmallLetterAWithAcute,       // Char 160 'á' = LATIN SMALL LETTER A WITH ACUTE
    LatinSmallLetterIWithAcute,       // Char 161 'í' = LATIN SMALL LETTER I WITH ACUTE
    LatinSmallLetterOWithAcute,       // Char 162 'ó' = LATIN SMALL LETTER O WITH ACUTE
    LatinSmallLetterUWithAcute,       // Char 163 'ú' = LATIN SMALL LETTER U WITH ACUTE
    LatinSmallLetterNWithTilde,       // Char 164 'ñ' = LATIN SMALL LETTER N WITH TILDE
    LatinCapitalLetterNWithTilde,     // Char 165 'Ñ' = LATIN CAPITAL LETTER N WITH TILDE
    FeminineOrdinalIndicator,         // Char 166 'ª' = FEMININE ORDINAL INDICATOR
    MasculineOrdinalIndicator,        // Char 167 'º' = MASCULINE ORDINAL INDICATOR
    InvertedQuestionMark,             // Char 168 '¿' = INVERTED QUESTION MARK
    RegisteredSign,                   // Char 169 '®' = REGISTERED SIGN
    NotSign,                          // Char 170 '¬' = NOT SIGN
    VulgarFractionOneHalf,            // Char 171 '½' = VULGAR FRACTION ONE HALF
    VulgarFractionOneQuarter,         // Char 172 '¼' = VULGAR FRACTION ONE QUARTER
    InvertedExclamationMark,          // Char 173 '¡' = INVERTED EXCLAMATION MARK
    LeftPointingDoubleAngleQuotationMark, // Char 174 '«' = LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
    RightPointingDoubleAngleQuotationMark, // Char 175 '»' = RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
    LightShade,                            // Char 176 '░' = LIGHT SHADE
    MediumShade,                           // Char 177 '▒' = MEDIUM SHADE
    DarkShade,                             // Char 178 '▓' = DARK SHADE
    BoxDrawingsLightVertical,              // Char 179 '│' = BOX DRAWINGS LIGHT VERTICAL
    BoxDrawingsLightVerticalAndLeft,       // Char 180 '┤' = BOX DRAWINGS LIGHT VERTICAL AND LEFT
    LatinCapitalLetterAWithAcute,          // Char 181 'Á' = LATIN CAPITAL LETTER A WITH ACUTE
    LatinCapitalLetterAWithCircumflex,     // Char 182 'Â' = LATIN CAPITAL LETTER A WITH CIRCUMFLEX
    LatinCapitalLetterAWithGrave,          // Char 183 'À' = LATIN CAPITAL LETTER A WITH GRAVE
    CopyrightSign,                         // Char 184 '©' = COPYRIGHT SIGN
    BoxDrawingsDoubleVerticalAndLeft,      // Char 185 '╣' = BOX DRAWINGS DOUBLE VERTICAL AND LEFT
    BoxDrawingsDoubleVertical,             // Char 186 '║' = BOX DRAWINGS DOUBLE VERTICAL
    BoxDrawingsDoubleDownAndLeft,          // Char 187 '╗' = BOX DRAWINGS DOUBLE DOWN AND LEFT
    BoxDrawingsDoubleUpAndLeft,            // Char 188 '╝' = BOX DRAWINGS DOUBLE UP AND LEFT
    CentSign,                              // Char 189 '¢' = CENT SIGN
    YenSign,                               // Char 190 '¥' = YEN SIGN
    BoxDrawingsLightDownAndLeft,           // Char 191 '┐' = BOX DRAWINGS LIGHT DOWN AND LEFT
    BoxDrawingsLightUpAndRight,            // Char 192 '└' = BOX DRAWINGS LIGHT UP AND RIGHT
    BoxDrawingsLightUpAndHorizontal,       // Char 193 '┴' = BOX DRAWINGS LIGHT UP AND HORIZONTAL
    BoxDrawingsLightDownAndHorizontal, // Char 194 '┬' = BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
    BoxDrawingsLightVerticalAndRight,  // Char 195 '├' = BOX DRAWINGS LIGHT VERTICAL AND RIGHT
    BoxDrawingsLightHorizontal,        // Char 196 '─' = BOX DRAWINGS LIGHT HORIZONTAL
    BoxDrawingsLightVerticalAndHorizontal, // Char 197 '┼' = BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
    LatinSmallLetterAWithTilde,            // Char 198 'ã' = LATIN SMALL LETTER A WITH TILDE
    LatinCapitalLetterAWithTilde,          // Char 199 'Ã' = LATIN CAPITAL LETTER A WITH TILDE
    BoxDrawingsDoubleUpAndRight,           // Char 200 '╚' = BOX DRAWINGS DOUBLE UP AND RIGHT
    BoxDrawingsDoubleDownAndRight,         // Char 201 '╔' = BOX DRAWINGS DOUBLE DOWN AND RIGHT
    BoxDrawingsDoubleUpAndHorizontal,      // Char 202 '╩' = BOX DRAWINGS DOUBLE UP AND HORIZONTAL
    BoxDrawingsDoubleDownAndHorizontal, // Char 203 '╦' = BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
    BoxDrawingsDoubleVerticalAndRight,  // Char 204 '╠' = BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
    BoxDrawingsDoubleHorizontal,        // Char 205 '═' = BOX DRAWINGS DOUBLE HORIZONTAL
    BoxDrawingsDoubleVerticalAndHorizontal, // Char 206 '╬' = BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
    CurrencySign,                           // Char 207 '¤' = CURRENCY SIGN
    LatinSmallLetterEth,                    // Char 208 'ð' = LATIN SMALL LETTER ETH
    LatinCapitalLetterEth,                  // Char 209 'Ð' = LATIN CAPITAL LETTER ETH
    LatinCapitalLetterEWithCircumflex, // Char 210 'Ê' = LATIN CAPITAL LETTER E WITH CIRCUMFLEX
    LatinCapitalLetterEWithDiaeresis,  // Char 211 'Ë' = LATIN CAPITAL LETTER E WITH DIAERESIS
    LatinCapitalLetterEWithGrave,      // Char 212 'È' = LATIN CAPITAL LETTER E WITH GRAVE
    LatinSmallLetterDotlessI,          // Char 213 'ı' = LATIN SMALL LETTER DOTLESS I
    LatinCapitalLetterIWithAcute,      // Char 214 'Í' = LATIN CAPITAL LETTER I WITH ACUTE
    LatinCapitalLetterIWithCircumflex, // Char 215 'Î' = LATIN CAPITAL LETTER I WITH CIRCUMFLEX
    LatinCapitalLetterIWithDiaeresis,  // Char 216 'Ï' = LATIN CAPITAL LETTER I WITH DIAERESIS
    BoxDrawingsLightUpAndLeft,         // Char 217 '┘' = BOX DRAWINGS LIGHT UP AND LEFT
    BoxDrawingsLightDownAndRight,      // Char 218 '┌' = BOX DRAWINGS LIGHT DOWN AND RIGHT
    FullBlock,                         // Char 219 '█' = FULL BLOCK
    LowerHalfBlock,                    // Char 220 '▄' = LOWER HALF BLOCK
    BrokenBar,                         // Char 221 '¦' = BROKEN BAR
    LatinCapitalLetterIWithGrave,      // Char 222 'Ì' = LATIN CAPITAL LETTER I WITH GRAVE
    UpperHalfBlock,                    // Char 223 '▀' = UPPER HALF BLOCK
    LatinCapitalLetterOWithAcute,      // Char 224 'Ó' = LATIN CAPITAL LETTER O WITH ACUTE
    LatinSmallLetterSharpS,            // Char 225 'ß' = LATIN SMALL LETTER SHARP S
    LatinCapitalLetterOWithCircumflex, // Char 226 'Ô' = LATIN CAPITAL LETTER O WITH CIRCUMFLEX
    LatinCapitalLetterOWithGrave,      // Char 227 'Ò' = LATIN CAPITAL LETTER O WITH GRAVE
    LatinSmallLetterOWithTilde,        // Char 228 'õ' = LATIN SMALL LETTER O WITH TILDE
    LatinCapitalLetterOWithTilde,      // Char 229 'Õ' = LATIN CAPITAL LETTER O WITH TILDE
    MicroSign,                         // Char 230 'µ' = MICRO SIGN
    LatinSmallLetterThorn,             // Char 231 'þ' = LATIN SMALL LETTER THORN
    LatinCapitalLetterThorn,           // Char 232 'Þ' = LATIN CAPITAL LETTER THORN
    LatinCapitalLetterUWithAcute,      // Char 233 'Ú' = LATIN CAPITAL LETTER U WITH ACUTE
    LatinCapitalLetterUWithCircumflex, // Char 234 'Û' = LATIN CAPITAL LETTER U WITH CIRCUMFLEX
    LatinCapitalLetterUWithGrave,      // Char 235 'Ù' = LATIN CAPITAL LETTER U WITH GRAVE
    LatinSmallLetterYWithAcute,        // Char 236 'ý' = LATIN SMALL LETTER Y WITH ACUTE
    LatinCapitalLetterYWithAcute,      // Char 237 'Ý' = LATIN CAPITAL LETTER Y WITH ACUTE
    Macron,                            // Char 238 '¯' = MACRON
    AcuteAccent,                       // Char 239 '´' = ACUTE ACCENT
    SoftHyphen,                        // Char 240 '­­­­­­-' = SOFT HYPHEN
    PlusMinusSign,                     // Char 241 '±' = PLUS-MINUS SIGN
    DoubleLowLine,                     // Char 242 '‗' = DOUBLE LOW LINE
    VulgarFractionThreeQuarters,       // Char 243 '¾' = VULGAR FRACTION THREE QUARTERS
    PilcrowSign,                       // Char 244 '¶' = PILCROW SIGN
    SectionSign,                       // Char 245 '§' = SECTION SIGN
    DivisionSign,                      // Char 246 '÷' = DIVISION SIGN
    Cedilla,                           // Char 247 '¸' = CEDILLA
    DegreeSign,                        // Char 248 '°' = DEGREE SIGN
    Diaeresis,                         // Char 249 '¨' = DIAERESIS
    MiddleDot,                         // Char 250 '·' = MIDDLE DOT
    SuperscriptOne,                    // Char 251 '¹' = SUPERSCRIPT ONE
    SuperscriptThree,                  // Char 252 '³' = SUPERSCRIPT THREE
    SuperscriptTwo,                    // Char 253 '²' = SUPERSCRIPT TWO
    BlackSquare,                       // Char 254 '■' = BLACK SQUARE
    NoBreakSpace,                      // Char 255 '\xa0' = NO-BREAK SPACE
}

impl ::core::default::Default for Char {
    fn default() -> Char {
        Char::Space
    }
}

impl Char {
    pub fn map_char(ch: char) -> Char {
        match ch {
            // Add more CP850 mappings here - hearts, clubs, diamonds, etc
            '\u{0000}' => Char::Null,
            '\u{0001}' => Char::SOH,
            '\u{0002}' => Char::STX,
            '\u{0003}' => Char::ETX,
            '\u{0004}' => Char::EOT,
            '\u{0005}' => Char::ENQ,
            '\u{0006}' => Char::ACK,
            '\u{0007}' => Char::BEL,
            '\u{0008}' => Char::BS,
            '\t' => Char::HT,
            '\n' => Char::LF,
            '\u{000b}' => Char::VT,
            '\u{000c}' => Char::FF,
            '\r' => Char::CR,
            '\u{000e}' => Char::SO,
            '\u{000f}' => Char::SI,
            '\u{0010}' => Char::DLE,
            '\u{0011}' => Char::DC1,
            '\u{0012}' => Char::DC2,
            '\u{0013}' => Char::DC3,
            '\u{0014}' => Char::DC4,
            '\u{0015}' => Char::NAK,
            '\u{0016}' => Char::SYN,
            '\u{0017}' => Char::ETB,
            '\u{0018}' => Char::CAN,
            '\u{0019}' => Char::EM,
            '\u{001a}' => Char::SUB,
            '\u{001b}' => Char::Escape,
            '\u{001c}' => Char::FS,
            '\u{001d}' => Char::GS,
            '\u{001e}' => Char::RS,
            '\u{001f}' => Char::US,
            ' ' => Char::Space,
            '!' => Char::ExclamationMark,
            '"' => Char::QuotationMark,
            '#' => Char::NumberSign,
            '$' => Char::DollarSign,
            '%' => Char::PercentSign,
            '&' => Char::Ampersand,
            '\'' => Char::Apostrophe,
            '(' => Char::LeftParenthesis,
            ')' => Char::RightParenthesis,
            '*' => Char::Asterisk,
            '+' => Char::PlusSign,
            ',' => Char::Comma,
            '-' => Char::HyphenMinus,
            '.' => Char::FullStop,
            '/' => Char::Solidus,
            '0' => Char::DigitZero,
            '1' => Char::DigitOne,
            '2' => Char::DigitTwo,
            '3' => Char::DigitThree,
            '4' => Char::DigitFour,
            '5' => Char::DigitFive,
            '6' => Char::DigitSix,
            '7' => Char::DigitSeven,
            '8' => Char::DigitEight,
            '9' => Char::DigitNine,
            ':' => Char::Colon,
            ';' => Char::Semicolon,
            '<' => Char::LessThanSign,
            '=' => Char::EqualsSign,
            '>' => Char::GreaterThanSign,
            '?' => Char::QuestionMark,
            '@' => Char::CommercialAt,
            'A' => Char::LatinCapitalLetterA,
            'B' => Char::LatinCapitalLetterB,
            'C' => Char::LatinCapitalLetterC,
            'D' => Char::LatinCapitalLetterD,
            'E' => Char::LatinCapitalLetterE,
            'F' => Char::LatinCapitalLetterF,
            'G' => Char::LatinCapitalLetterG,
            'H' => Char::LatinCapitalLetterH,
            'I' => Char::LatinCapitalLetterI,
            'J' => Char::LatinCapitalLetterJ,
            'K' => Char::LatinCapitalLetterK,
            'L' => Char::LatinCapitalLetterL,
            'M' => Char::LatinCapitalLetterM,
            'N' => Char::LatinCapitalLetterN,
            'O' => Char::LatinCapitalLetterO,
            'P' => Char::LatinCapitalLetterP,
            'Q' => Char::LatinCapitalLetterQ,
            'R' => Char::LatinCapitalLetterR,
            'S' => Char::LatinCapitalLetterS,
            'T' => Char::LatinCapitalLetterT,
            'U' => Char::LatinCapitalLetterU,
            'V' => Char::LatinCapitalLetterV,
            'W' => Char::LatinCapitalLetterW,
            'X' => Char::LatinCapitalLetterX,
            'Y' => Char::LatinCapitalLetterY,
            'Z' => Char::LatinCapitalLetterZ,
            '[' => Char::LeftSquareBracket,
            '\\' => Char::ReverseSolidus,
            ']' => Char::RightSquareBracket,
            '^' => Char::CircumflexAccent,
            '_' => Char::LowLine,
            '`' => Char::GraveAccent,
            'a' => Char::LatinSmallLetterA,
            'b' => Char::LatinSmallLetterB,
            'c' => Char::LatinSmallLetterC,
            'd' => Char::LatinSmallLetterD,
            'e' => Char::LatinSmallLetterE,
            'f' => Char::LatinSmallLetterF,
            'g' => Char::LatinSmallLetterG,
            'h' => Char::LatinSmallLetterH,
            'i' => Char::LatinSmallLetterI,
            'j' => Char::LatinSmallLetterJ,
            'k' => Char::LatinSmallLetterK,
            'l' => Char::LatinSmallLetterL,
            'm' => Char::LatinSmallLetterM,
            'n' => Char::LatinSmallLetterN,
            'o' => Char::LatinSmallLetterO,
            'p' => Char::LatinSmallLetterP,
            'q' => Char::LatinSmallLetterQ,
            'r' => Char::LatinSmallLetterR,
            's' => Char::LatinSmallLetterS,
            't' => Char::LatinSmallLetterT,
            'u' => Char::LatinSmallLetterU,
            'v' => Char::LatinSmallLetterV,
            'w' => Char::LatinSmallLetterW,
            'x' => Char::LatinSmallLetterX,
            'y' => Char::LatinSmallLetterY,
            'z' => Char::LatinSmallLetterZ,
            '{' => Char::LeftCurlyBracket,
            '|' => Char::VerticalLine,
            '}' => Char::RightCurlyBracket,
            '~' => Char::Tilde,
            '\u{007f}' => Char::Delete,
            'Ç' => Char::LatinCapitalLetterCWithCedilla,
            'ü' => Char::LatinSmallLetterUWithDiaeresis,
            'é' => Char::LatinSmallLetterEWithAcute,
            'â' => Char::LatinSmallLetterAWithCircumflex,
            'ä' => Char::LatinSmallLetterAWithDiaeresis,
            'à' => Char::LatinSmallLetterAWithGrave,
            'å' => Char::LatinSmallLetterAWithRingAbove,
            'ç' => Char::LatinSmallLetterCWithCedilla,
            'ê' => Char::LatinSmallLetterEWithCircumflex,
            'ë' => Char::LatinSmallLetterEWithDiaeresis,
            'è' => Char::LatinSmallLetterEWithGrave,
            'ï' => Char::LatinSmallLetterIWithDiaeresis,
            'î' => Char::LatinSmallLetterIWithCircumflex,
            'ì' => Char::LatinSmallLetterIWithGrave,
            'Ä' => Char::LatinCapitalLetterAWithDiaeresis,
            'Å' => Char::LatinCapitalLetterAWithRingAbove,
            'É' => Char::LatinCapitalLetterEWithAcute,
            'æ' => Char::LatinSmallLetterAe,
            'Æ' => Char::LatinCapitalLetterAe,
            'ô' => Char::LatinSmallLetterOWithCircumflex,
            'ö' => Char::LatinSmallLetterOWithDiaeresis,
            'ò' => Char::LatinSmallLetterOWithGrave,
            'û' => Char::LatinSmallLetterUWithCircumflex,
            'ù' => Char::LatinSmallLetterUWithGrave,
            'ÿ' => Char::LatinSmallLetterYWithDiaeresis,
            'Ö' => Char::LatinCapitalLetterOWithDiaeresis,
            'Ü' => Char::LatinCapitalLetterUWithDiaeresis,
            'ø' => Char::LatinSmallLetterOWithStroke,
            '£' => Char::PoundSign,
            'Ø' => Char::LatinCapitalLetterOWithStroke,
            '×' => Char::MultiplicationSign,
            'ƒ' => Char::LatinSmallLetterFWithHook,
            'á' => Char::LatinSmallLetterAWithAcute,
            'í' => Char::LatinSmallLetterIWithAcute,
            'ó' => Char::LatinSmallLetterOWithAcute,
            'ú' => Char::LatinSmallLetterUWithAcute,
            'ñ' => Char::LatinSmallLetterNWithTilde,
            'Ñ' => Char::LatinCapitalLetterNWithTilde,
            'ª' => Char::FeminineOrdinalIndicator,
            'º' => Char::MasculineOrdinalIndicator,
            '¿' => Char::InvertedQuestionMark,
            '®' => Char::RegisteredSign,
            '¬' => Char::NotSign,
            '½' => Char::VulgarFractionOneHalf,
            '¼' => Char::VulgarFractionOneQuarter,
            '¡' => Char::InvertedExclamationMark,
            '«' => Char::LeftPointingDoubleAngleQuotationMark,
            '»' => Char::RightPointingDoubleAngleQuotationMark,
            '' => Char::LightShade,
            '' => Char::MediumShade,
            '' => Char::DarkShade,
            '' => Char::BoxDrawingsLightVertical,
            '' => Char::BoxDrawingsLightVerticalAndLeft,
            'Á' => Char::LatinCapitalLetterAWithAcute,
            'Â' => Char::LatinCapitalLetterAWithCircumflex,
            'À' => Char::LatinCapitalLetterAWithGrave,
            '©' => Char::CopyrightSign,
            '' => Char::BoxDrawingsDoubleVerticalAndLeft,
            '' => Char::BoxDrawingsDoubleVertical,
            '' => Char::BoxDrawingsDoubleDownAndLeft,
            '' => Char::BoxDrawingsDoubleUpAndLeft,
            '¢' => Char::CentSign,
            '¥' => Char::YenSign,
            '' => Char::BoxDrawingsLightDownAndLeft,
            '' => Char::BoxDrawingsLightUpAndRight,
            '' => Char::BoxDrawingsLightUpAndHorizontal,
            '' => Char::BoxDrawingsLightDownAndHorizontal,
            '' => Char::BoxDrawingsLightVerticalAndRight,
            '' => Char::BoxDrawingsLightHorizontal,
            '' => Char::BoxDrawingsLightVerticalAndHorizontal,
            'ã' => Char::LatinSmallLetterAWithTilde,
            'Ã' => Char::LatinCapitalLetterAWithTilde,
            '' => Char::BoxDrawingsDoubleUpAndRight,
            '' => Char::BoxDrawingsDoubleDownAndRight,
            '' => Char::BoxDrawingsDoubleUpAndHorizontal,
            '' => Char::BoxDrawingsDoubleDownAndHorizontal,
            '' => Char::BoxDrawingsDoubleVerticalAndRight,
            '' => Char::BoxDrawingsDoubleHorizontal,
            '' => Char::BoxDrawingsDoubleVerticalAndHorizontal,
            '¤' => Char::CurrencySign,
            'ð' => Char::LatinSmallLetterEth,
            'Ð' => Char::LatinCapitalLetterEth,
            'Ê' => Char::LatinCapitalLetterEWithCircumflex,
            'Ë' => Char::LatinCapitalLetterEWithDiaeresis,
            'È' => Char::LatinCapitalLetterEWithGrave,
            'ı' => Char::LatinSmallLetterDotlessI,
            'Í' => Char::LatinCapitalLetterIWithAcute,
            'Î' => Char::LatinCapitalLetterIWithCircumflex,
            'Ï' => Char::LatinCapitalLetterIWithDiaeresis,
            '' => Char::BoxDrawingsLightUpAndLeft,
            '' => Char::BoxDrawingsLightDownAndRight,
            '' => Char::FullBlock,
            '' => Char::LowerHalfBlock,
            '¦' => Char::BrokenBar,
            'Ì' => Char::LatinCapitalLetterIWithGrave,
            '' => Char::UpperHalfBlock,
            'Ó' => Char::LatinCapitalLetterOWithAcute,
            'ß' => Char::LatinSmallLetterSharpS,
            'Ô' => Char::LatinCapitalLetterOWithCircumflex,
            'Ò' => Char::LatinCapitalLetterOWithGrave,
            'õ' => Char::LatinSmallLetterOWithTilde,
            'Õ' => Char::LatinCapitalLetterOWithTilde,
            'µ' => Char::MicroSign,
            'þ' => Char::LatinSmallLetterThorn,
            'Þ' => Char::LatinCapitalLetterThorn,
            'Ú' => Char::LatinCapitalLetterUWithAcute,
            'Û' => Char::LatinCapitalLetterUWithCircumflex,
            'Ù' => Char::LatinCapitalLetterUWithGrave,
            'ý' => Char::LatinSmallLetterYWithAcute,
            'Ý' => Char::LatinCapitalLetterYWithAcute,
            '¯' => Char::Macron,
            '´' => Char::AcuteAccent,
            '\u{00ad}' => Char::SoftHyphen,
            '±' => Char::PlusMinusSign,
            '' => Char::DoubleLowLine,
            '¾' => Char::VulgarFractionThreeQuarters,
            '' => Char::PilcrowSign,
            '§' => Char::SectionSign,
            '÷' => Char::DivisionSign,
            '¸' => Char::Cedilla,
            '°' => Char::DegreeSign,
            '¨' => Char::Diaeresis,
            '·' => Char::MiddleDot,
            '¹' => Char::SuperscriptOne,
            '³' => Char::SuperscriptThree,
            '²' => Char::SuperscriptTwo,
            '' => Char::BlackSquare,
            '\u{00a0}' => Char::NoBreakSpace,
            '' => Char::SOH,
            '' => Char::STX,
            '' => Char::ETX,
            '' => Char::EOT,
            '' => Char::ENQ,
            '' => Char::ACK,
            '' => Char::BEL,
            '' => Char::BS,
            '' => Char::HT,
            '' => Char::LF,
            '' => Char::VT,
            '' => Char::FF,
            '' => Char::CR,
            '' => Char::SO,
            '' => Char::SI,
            '' => Char::DLE,
            '' => Char::DC1,
            '' => Char::DC2,
            '' => Char::DC3,
            '' => Char::SYN,
            '' => Char::ETB,
            '' => Char::CAN,
            '' => Char::EM,
            '' => Char::SUB,
            '' => Char::Escape,
            '' => Char::FS,
            '' => Char::GS,
            '' => Char::RS,
            '' => Char::US,
            _ => Char::QuestionMark,
        }
    }

    /// Take a CodePage 850 byte
    pub fn from_byte(byte: u8) -> Char {
        unsafe { ::core::mem::transmute(byte) }
    }

    /// Take a CodePage 850 byte
    pub fn to_byte(self) -> u8 {
        unsafe { ::core::mem::transmute(self) }
    }
}

// End of file