STARTFONT 2.1 COMMENT $Id$ COMMENT Send bug reports to Markus Kuhn FONT -Misc-Fixed-Medium-R-Normal--9-90-75-75-C-60-ISO10646-1 SIZE 9 75 75 FONTBOUNDINGBOX 6 9 0 -2 STARTPROPERTIES 22 FONTNAME_REGISTRY "" FOUNDRY "Misc" FAMILY_NAME "Fixed" WEIGHT_NAME "Medium" SLANT "R" SETWIDTH_NAME "Normal" ADD_STYLE_NAME "" PIXEL_SIZE 9 POINT_SIZE 90 RESOLUTION_X 75 RESOLUTION_Y 75 SPACING "C" AVERAGE_WIDTH 60 CHARSET_REGISTRY "ISO10646" CHARSET_ENCODING "1" FONT_ASCENT 7 FONT_DESCENT 2 DEFAULT_CHAR 0 COPYRIGHT "Public domain font. Share and enjoy." _XMBDFED_INFO "Edited with xmbdfed 4.5." CAP_HEIGHT 6 X_HEIGHT 4 ENDPROPERTIES CHARS 1295 STARTCHAR char0 ENCODING 0 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 28 40 08 40 08 50 00 00 ENDCHAR STARTCHAR space ENCODING 32 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR exclam ENCODING 33 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 20 20 20 20 00 20 00 00 ENDCHAR STARTCHAR quotedbl ENCODING 34 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 50 50 00 00 00 00 00 ENDCHAR STARTCHAR numbersign ENCODING 35 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 50 F8 50 F8 50 50 00 ENDCHAR STARTCHAR dollar ENCODING 36 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 20 70 A8 A0 70 28 A8 70 20 ENDCHAR STARTCHAR percent ENCODING 37 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 40 A8 48 10 20 48 54 08 00 ENDCHAR STARTCHAR ampersand ENCODING 38 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 60 90 90 60 98 90 68 00 ENDCHAR STARTCHAR quotesingle ENCODING 39 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 20 20 20 00 00 00 00 00 ENDCHAR STARTCHAR parenleft ENCODING 40 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 20 20 20 20 20 10 00 ENDCHAR STARTCHAR parenright ENCODING 41 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 20 10 10 10 10 10 20 00 ENDCHAR STARTCHAR asterisk ENCODING 42 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 88 50 F8 50 88 00 00 ENDCHAR STARTCHAR plus ENCODING 43 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 20 20 F8 20 20 00 00 ENDCHAR STARTCHAR comma ENCODING 44 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 00 30 10 10 20 ENDCHAR STARTCHAR hyphen ENCODING 45 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 F8 00 00 00 00 ENDCHAR STARTCHAR period ENCODING 46 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 00 30 30 00 00 ENDCHAR STARTCHAR slash ENCODING 47 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 08 08 10 20 40 40 00 00 ENDCHAR STARTCHAR zero ENCODING 48 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 30 48 48 48 48 30 00 00 ENDCHAR STARTCHAR one ENCODING 49 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 20 60 20 20 20 70 00 00 ENDCHAR STARTCHAR two ENCODING 50 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 30 48 08 10 20 78 00 00 ENDCHAR STARTCHAR three ENCODING 51 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 78 10 30 08 08 70 00 00 ENDCHAR STARTCHAR four ENCODING 52 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 30 50 90 F8 10 00 00 ENDCHAR STARTCHAR five ENCODING 53 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 78 40 70 08 08 70 00 00 ENDCHAR STARTCHAR six ENCODING 54 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 30 40 70 48 48 30 00 00 ENDCHAR STARTCHAR seven ENCODING 55 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 78 08 08 10 20 20 00 00 ENDCHAR STARTCHAR eight ENCODING 56 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 30 48 30 48 48 30 00 00 ENDCHAR STARTCHAR nine ENCODING 57 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 30 48 48 38 08 30 00 00 ENDCHAR STARTCHAR colon ENCODING 58 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 30 30 00 30 30 00 00 ENDCHAR STARTCHAR semicolon ENCODING 59 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 30 30 00 30 10 10 20 ENDCHAR STARTCHAR less ENCODING 60 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 18 60 80 60 18 00 00 ENDCHAR STARTCHAR equal ENCODING 61 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 F8 00 F8 00 00 00 ENDCHAR STARTCHAR greater ENCODING 62 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 C0 30 08 30 C0 00 00 ENDCHAR STARTCHAR question ENCODING 63 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 30 48 08 30 20 00 20 00 00 ENDCHAR STARTCHAR at ENCODING 64 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 70 90 A8 B0 80 70 00 00 ENDCHAR STARTCHAR A ENCODING 65 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 20 50 88 F8 88 88 00 00 ENDCHAR STARTCHAR B ENCODING 66 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 F0 88 F0 88 88 F0 00 00 ENDCHAR STARTCHAR C ENCODING 67 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 30 48 40 40 48 30 00 00 ENDCHAR STARTCHAR D ENCODING 68 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 70 48 48 48 48 70 00 00 ENDCHAR STARTCHAR E ENCODING 69 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 78 40 70 40 40 78 00 00 ENDCHAR STARTCHAR F ENCODING 70 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 78 40 70 40 40 40 00 00 ENDCHAR STARTCHAR G ENCODING 71 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 30 48 40 58 48 30 00 00 ENDCHAR STARTCHAR H ENCODING 72 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 48 48 78 48 48 48 00 00 ENDCHAR STARTCHAR I ENCODING 73 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 70 20 20 20 20 70 00 00 ENDCHAR STARTCHAR J ENCODING 74 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 38 10 10 10 90 60 00 00 ENDCHAR STARTCHAR K ENCODING 75 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 48 50 60 50 48 48 00 00 ENDCHAR STARTCHAR L ENCODING 76 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 40 40 40 40 78 00 00 ENDCHAR STARTCHAR M ENCODING 77 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 88 D8 A8 A8 88 88 00 00 ENDCHAR STARTCHAR N ENCODING 78 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 48 68 58 48 48 48 00 00 ENDCHAR STARTCHAR O ENCODING 79 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 70 88 88 88 88 70 00 00 ENDCHAR STARTCHAR P ENCODING 80 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 70 48 48 70 40 40 00 00 ENDCHAR STARTCHAR Q ENCODING 81 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 30 48 48 68 58 30 08 00 ENDCHAR STARTCHAR R ENCODING 82 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 70 48 48 70 48 48 00 00 ENDCHAR STARTCHAR S ENCODING 83 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 30 48 20 10 48 30 00 00 ENDCHAR STARTCHAR T ENCODING 84 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 F8 20 20 20 20 20 00 00 ENDCHAR STARTCHAR U ENCODING 85 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 48 48 48 48 48 30 00 00 ENDCHAR STARTCHAR V ENCODING 86 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 48 48 48 78 30 30 00 00 ENDCHAR STARTCHAR W ENCODING 87 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 88 88 A8 A8 D8 88 00 00 ENDCHAR STARTCHAR X ENCODING 88 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 88 50 20 20 50 88 00 00 ENDCHAR STARTCHAR Y ENCODING 89 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 88 88 50 20 20 20 00 00 ENDCHAR STARTCHAR Z ENCODING 90 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 78 08 10 20 40 78 00 00 ENDCHAR STARTCHAR bracketleft ENCODING 91 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 70 40 40 40 40 70 00 00 ENDCHAR STARTCHAR backslash ENCODING 92 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 40 20 10 08 08 00 00 ENDCHAR STARTCHAR bracketright ENCODING 93 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 70 10 10 10 10 70 00 00 ENDCHAR STARTCHAR asciicircum ENCODING 94 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 20 50 88 00 00 00 00 00 ENDCHAR STARTCHAR underscore ENCODING 95 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 00 00 00 00 F8 ENDCHAR STARTCHAR grave ENCODING 96 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 20 10 00 00 00 00 00 00 ENDCHAR STARTCHAR a ENCODING 97 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 38 48 48 38 00 00 ENDCHAR STARTCHAR b ENCODING 98 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 40 70 48 48 70 00 00 ENDCHAR STARTCHAR c ENCODING 99 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 38 40 40 38 00 00 ENDCHAR STARTCHAR d ENCODING 100 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 08 08 38 48 48 38 00 00 ENDCHAR STARTCHAR e ENCODING 101 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 30 58 60 38 00 00 ENDCHAR STARTCHAR f ENCODING 102 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 28 20 70 20 20 00 00 ENDCHAR STARTCHAR g ENCODING 103 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 30 48 48 38 08 30 ENDCHAR STARTCHAR h ENCODING 104 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 40 70 48 48 48 00 00 ENDCHAR STARTCHAR i ENCODING 105 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 20 00 60 20 20 70 00 00 ENDCHAR STARTCHAR j ENCODING 106 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 30 10 10 10 50 20 ENDCHAR STARTCHAR k ENCODING 107 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 40 50 60 50 48 00 00 ENDCHAR STARTCHAR l ENCODING 108 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 60 20 20 20 20 70 00 00 ENDCHAR STARTCHAR m ENCODING 109 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 D0 A8 A8 88 00 00 ENDCHAR STARTCHAR n ENCODING 110 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 70 48 48 48 00 00 ENDCHAR STARTCHAR o ENCODING 111 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 30 48 48 30 00 00 ENDCHAR STARTCHAR p ENCODING 112 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 70 48 48 70 40 40 ENDCHAR STARTCHAR q ENCODING 113 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 38 48 48 38 08 08 ENDCHAR STARTCHAR r ENCODING 114 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 50 68 40 40 00 00 ENDCHAR STARTCHAR s ENCODING 115 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 38 60 18 70 00 00 ENDCHAR STARTCHAR t ENCODING 116 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 20 20 70 20 28 10 00 00 ENDCHAR STARTCHAR u ENCODING 117 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 48 48 48 38 00 00 ENDCHAR STARTCHAR v ENCODING 118 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 48 48 30 30 00 00 ENDCHAR STARTCHAR w ENCODING 119 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 88 A8 A8 50 00 00 ENDCHAR STARTCHAR x ENCODING 120 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 48 30 30 48 00 00 ENDCHAR STARTCHAR y ENCODING 121 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 48 48 48 38 48 30 ENDCHAR STARTCHAR z ENCODING 122 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 78 10 20 78 00 00 ENDCHAR STARTCHAR braceleft ENCODING 123 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 10 20 20 40 20 20 10 00 00 ENDCHAR STARTCHAR bar ENCODING 124 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 20 20 20 20 20 20 20 00 ENDCHAR STARTCHAR braceright ENCODING 125 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 40 20 20 10 20 20 40 00 00 ENDCHAR STARTCHAR asciitilde ENCODING 126 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 28 50 00 00 00 00 00 ENDCHAR STARTCHAR space ENCODING 160 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 00 00 00 00 00 ENDCHAR STARTCHAR exclamdown ENCODING 161 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 20 00 20 20 20 20 00 00 ENDCHAR STARTCHAR cent ENCODING 162 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 10 38 50 50 38 10 00 ENDCHAR STARTCHAR sterling ENCODING 163 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 30 48 40 F0 40 40 F8 00 ENDCHAR STARTCHAR currency ENCODING 164 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 A8 50 88 50 A8 00 00 ENDCHAR STARTCHAR yen ENCODING 165 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 88 50 F8 20 F8 20 00 00 ENDCHAR STARTCHAR brokenbar ENCODING 166 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 20 20 20 00 20 20 20 00 ENDCHAR STARTCHAR section ENCODING 167 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 38 40 30 48 30 08 70 00 ENDCHAR STARTCHAR dieresis ENCODING 168 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 00 00 00 00 00 00 ENDCHAR STARTCHAR copyright ENCODING 169 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 78 84 94 A4 94 84 78 00 00 ENDCHAR STARTCHAR ordfeminine ENCODING 170 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 30 50 30 00 70 00 00 00 ENDCHAR STARTCHAR guillemotleft ENCODING 171 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 28 50 A0 50 28 00 00 ENDCHAR STARTCHAR logicalnot ENCODING 172 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 78 08 08 00 00 ENDCHAR STARTCHAR hyphen ENCODING 173 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 78 00 00 00 00 ENDCHAR STARTCHAR registered ENCODING 174 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 78 84 B4 A4 A4 84 78 00 00 ENDCHAR STARTCHAR macron ENCODING 175 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 78 00 00 00 00 00 00 00 ENDCHAR STARTCHAR degree ENCODING 176 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 30 48 30 00 00 00 00 ENDCHAR STARTCHAR plusminus ENCODING 177 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 20 20 F8 20 20 00 F8 00 ENDCHAR STARTCHAR twosuperior ENCODING 178 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 20 50 10 20 70 00 00 00 ENDCHAR STARTCHAR threesuperior ENCODING 179 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 60 10 20 10 60 00 00 00 ENDCHAR STARTCHAR acute ENCODING 180 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 20 00 00 00 00 00 00 ENDCHAR STARTCHAR mu ENCODING 181 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 48 48 58 68 40 00 ENDCHAR STARTCHAR paragraph ENCODING 182 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 78 E8 E8 68 28 28 00 00 ENDCHAR STARTCHAR periodcentered ENCODING 183 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 20 00 00 00 00 ENDCHAR STARTCHAR cedilla ENCODING 184 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 00 00 00 10 20 ENDCHAR STARTCHAR onesuperior ENCODING 185 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 20 60 20 20 70 00 00 00 ENDCHAR STARTCHAR ordmasculine ENCODING 186 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 20 50 20 00 70 00 00 00 ENDCHAR STARTCHAR guillemotright ENCODING 187 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 A0 50 28 50 A0 00 00 ENDCHAR STARTCHAR onequarter ENCODING 188 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 40 C0 40 50 70 30 78 10 00 ENDCHAR STARTCHAR onehalf ENCODING 189 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 40 C0 40 50 68 08 10 38 00 ENDCHAR STARTCHAR threequarters ENCODING 190 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP C0 20 40 30 F0 30 78 10 00 ENDCHAR STARTCHAR questiondown ENCODING 191 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 10 00 10 30 40 48 30 00 00 ENDCHAR STARTCHAR Agrave ENCODING 192 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 40 20 20 50 70 88 88 00 00 ENDCHAR STARTCHAR Aacute ENCODING 193 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 10 20 20 50 70 88 88 00 00 ENDCHAR STARTCHAR Acircumflex ENCODING 194 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 20 50 20 50 70 88 88 00 00 ENDCHAR STARTCHAR Atilde ENCODING 195 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 28 50 20 50 70 88 88 00 00 ENDCHAR STARTCHAR Adieresis ENCODING 196 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 50 00 20 50 70 88 88 00 00 ENDCHAR STARTCHAR Aring ENCODING 197 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 20 50 20 50 70 88 88 00 00 ENDCHAR STARTCHAR AE ENCODING 198 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 78 A0 F0 A0 A0 B8 00 00 ENDCHAR STARTCHAR Ccedilla ENCODING 199 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 30 48 40 40 48 30 10 20 ENDCHAR STARTCHAR Egrave ENCODING 200 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 20 10 78 40 70 40 78 00 00 ENDCHAR STARTCHAR Eacute ENCODING 201 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 10 20 78 40 70 40 78 00 00 ENDCHAR STARTCHAR Ecircumflex ENCODING 202 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 10 28 78 40 70 40 78 00 00 ENDCHAR STARTCHAR Edieresis ENCODING 203 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 28 00 78 40 70 40 78 00 00 ENDCHAR STARTCHAR Igrave ENCODING 204 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 40 20 70 20 20 20 70 00 00 ENDCHAR STARTCHAR Iacute ENCODING 205 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 10 20 70 20 20 20 70 00 00 ENDCHAR STARTCHAR Icircumflex ENCODING 206 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 20 50 70 20 20 20 70 00 00 ENDCHAR STARTCHAR Idieresis ENCODING 207 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 50 00 70 20 20 20 70 00 00 ENDCHAR STARTCHAR Eth ENCODING 208 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 70 48 E8 48 48 70 00 00 ENDCHAR STARTCHAR Ntilde ENCODING 209 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 28 50 48 68 58 48 48 00 00 ENDCHAR STARTCHAR Ograve ENCODING 210 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 20 10 30 48 48 48 30 00 00 ENDCHAR STARTCHAR Oacute ENCODING 211 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 10 20 30 48 48 48 30 00 00 ENDCHAR STARTCHAR Ocircumflex ENCODING 212 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 10 28 30 48 48 48 30 00 00 ENDCHAR STARTCHAR Otilde ENCODING 213 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 28 50 30 48 48 48 30 00 00 ENDCHAR STARTCHAR Odieresis ENCODING 214 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 28 00 30 48 48 48 30 00 00 ENDCHAR STARTCHAR multiply ENCODING 215 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 88 50 20 50 88 00 00 ENDCHAR STARTCHAR Oslash ENCODING 216 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 08 38 58 58 68 68 70 40 00 ENDCHAR STARTCHAR Ugrave ENCODING 217 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 20 10 48 48 48 48 30 00 00 ENDCHAR STARTCHAR Uacute ENCODING 218 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 10 20 48 48 48 48 30 00 00 ENDCHAR STARTCHAR Ucircumflex ENCODING 219 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 10 28 48 48 48 48 30 00 00 ENDCHAR STARTCHAR Udieresis ENCODING 220 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 #define ULONG uint32_t #define UCHAR uint8_t #define FRMT "0x%x" // "0x%x" #define SHFTFRMC "%s %s #%d" // "%s %s %d" #define SHFTFRMR "%s %s %s" // "%s %s %s" //#define FRMT "0x%x" //#define SHFTFRMC "%s %s %d" //#define SHFTFRMR "%s %s %s" char *cond[16] = { "eq", "ne", "cs", "cc", "mi", "pl", "vs", "vc", "hi", "ls", "ge", "lt", "gt", "le", "", "nv" }; char *cnd1[16] = { "eq", "ne", "cs", "cc", "mi", "pl", "vs", "vc", "hi", "ls", "ge", "lt", "gt", "le", " ", "nv" }; char *opcd[16] = {"and","eor","sub","rsb","add","adc","sbc","rsc","tst","teq","cmp","cmn","orr","mov","bic","mvn" }; char setc[32] = {0,115,0,115,0,115,0,115,0,115,0,115,0,115,0,115,0, 0 ,0, 0 ,0, 0 ,0, 0 ,0,115,0,115,0,115,0,115 }; char *regs[16] = { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "r8", "r9", "sl", "fp", "ip", "sp", "lr", "pc" }; char *shfts[4] = { "lsl", "lsr", "asr", "ror" }; /* 31-28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Cond 0 0 I ---Opcode--- S |----Rn----- ----Rd----- --------Operand 2-------- Data Processing /PSR Transfer Cond 0 0 0 0 | 0 0 A S |----Rd----- ----Rn----- ---Rs---- 1 0 0 1 --Rm--- Multiply Cond 0 0 0 0 | 1 U A S |---RdHi---- ---RdLo---- ---Rn---- 1 0 0 1 --Rm--- Multiply Long Cond 0 0 0 1 | 0 B 0 0 |----Rn----- ----Rd----- 0 0 0 0 1 0 0 1 --Rm--- Single Data Swap Cond 0 0 0 1 | 0 0 1 0 |1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 --Rn--- Branch and Exchange Cond 0 0 0 P | U 0 W L |----Rn----- ----Rd----- 0 0 0 0 1 S H 1 --Rm--- Halfword Data Transfer: register offset Cond 0 0 0 P | U 1 W L |----Rn----- ----Rd----- --Offset- 1 S H 1 -Offset Halfword Data Transfer: immediate offset Cond 0 1 I P | U B W L |----Rn----- ----Rd----- --------Offset----------- Single Data Transfer Cond 0 1 1 1 | x x x x |x x x x x x x x x x x x x x x 1 x x x x Undefined Cond 1 0 0 P | U S W L |----Rn----- -----------Register List------------- Block Data Transfer Cond 1 0 1 L | -------------------------Offset------------------------------ Branch Cond 1 1 0 P | U N W L |----Rn----- ----CRd---- ---CP#--- -----Offset---- Coprocessor Data Transfer Cond 1 1 1 0 | --CP Opc---|----CRn---- ----CRd---- ---CP#--- -CP-- 0 --CRm-- Coprocessor Data Operation Cond 1 1 1 0 | CP Opc L |----CRn---- ----Rd----- ---CP#--- -CP-- 1 --CRm-- Coprocessor Register Transfer Cond 1 1 1 1 | x x x x |x x x x x x x x x x x x x x x x x x x x Software Interrupt 0x04200000 0001 0 0 0 0 0 1 1 0 6 e 1 1 1 0 1 8 ================================================================================ Cond 0 1 I P | U B W L |----Rn----- ----Rd----- --------Offset----------- Single Data Transfer EQ 0 Z set equal NE 1 Z clear not equal CS 2 C set unsigned higher or same CC 3 C clear unsigned lower MI 4 N set negative PL 5 N clear positive or zero VS 6 V set overflow VC 7 V clear no overflow HI 8 C set and Z clear unsigned higher LS 9 C clear or Z set unsigned lower or same GE A N equals V greater or equal LT B N not equal to V less than GT C Z clear AND (N equals V) greater than LE D Z set OR (N not equal to V) less than or equal AL E (ignored) always AND 0 operand1 AND operand2 EOR 1 operand1 EOR operand2 SUB 2 operand1 - operand2 RSB 3 operand2 - operand1 ADD 4 operand1 + operand2 ADC 5 operand1 + operand2 + carry SBC 6 operand1 - operand2 + carry - 1 RSC 7 operand2 - operand1 + carry - 1 TST 8 AND, but result is not written TEQ 9 as EOR, but result is not written CMP A as SUB, but result is not written CMN B as ADD, but result is not written ORR C operand1 OR operand2 MOV D operand2 (operand1 is ignored) BIC E operand1 AND NOT operand2 (Bit clear) MVN F NOT operand2 (operand1 is ignored) */ void multiply_stg(char *stg, ULONG val) { if((val&0xc00000) == 0) // simple mul { if(val & 0x100000) // set condition flags if(val & 0x200000) sprintf(stg+strlen(stg), "mla%ss ", cond[val>>28]); else sprintf(stg+strlen(stg), "mul%ss ", cond[val>>28]); else if(val & 0x200000) sprintf(stg+strlen(stg), "mla%s ", cnd1[val>>28]); else sprintf(stg+strlen(stg), "mul%s ", cnd1[val>>28]); if(val & 0x200000) // accumulate sprintf(stg+strlen(stg), "%s, %s, %s, %s", regs[(val>>16)&15], regs[(val>>0)&15], regs[(val>>8)&15], regs[(val>>12)&15]); else sprintf(stg+strlen(stg), "%s, %s, %s", regs[(val>>16)&15], regs[(val>>0)&15], regs[(val>>8)&15]); } else { if(val & 0x100000) // set condition flags if(val & 0x200000) // accumulate if(val & 0x400000) sprintf(stg+strlen(stg), "smlal%ss ", cond[val>>28]); else sprintf(stg+strlen(stg), "umlal%ss ", cond[val>>28]); else if(val & 0x400000) sprintf(stg+strlen(stg), "smull%ss ", cond[val>>28]); else sprintf(stg+strlen(stg), "umull%ss ", cond[val>>28]); else if(val & 0x200000) if(val & 0x400000) sprintf(stg+strlen(stg), "smlal%s ", cond[val>>28]); else sprintf(stg+strlen(stg), "umlal%s ", cond[val>>28]); else if(val & 0x400000) sprintf(stg+strlen(stg), "smull%s ", cond[val>>28]); else sprintf(stg+strlen(stg), "umull%s ", cond[val>>28]); sprintf(stg+strlen(stg), "%s, %s, %s, %s", regs[(val>>12)&15], regs[(val>>16)&15], regs[(val>>0)&15], regs[(val>>8)&15]); } } void halfword_stg(char *stg, ULONG val) { ULONG off = ((val>>4) & 0xf0) + (val & 0x0f); if(val & 0x100000) sprintf(stg+strlen(stg), "ldr%s", cond[val>>28]); else sprintf(stg+strlen(stg), "str%s", cond[val>>28]); switch((val>>5) & 3) // SWP, HW, SB, SH { case 0: sprintf(stg+strlen(stg), "error: SWP"); break; case 1: sprintf(stg+strlen(stg), "h "); break; case 2: sprintf(stg+strlen(stg), "sb "); break; case 3: sprintf(stg+strlen(stg), "sh "); break; } if(val & 0x400000) // immidiate offset if(val & 0x1000000) // pre index if(val & 0x200000) // write back if(val & 0x800000) sprintf(stg+strlen(stg), "%s, [%s, "FRMT"]!", regs[(val>>12)&15], regs[(val>>16)&15], off); else sprintf(stg+strlen(stg), "%s, [%s, -"FRMT"]!", regs[(val>>12)&15], regs[(val>>16)&15], off); else if(val & 0x800000) sprintf(stg+strlen(stg), "%s, [%s, "FRMT"]", regs[(val>>12)&15], regs[(val>>16)&15], off); else sprintf(stg+strlen(stg), "%s, [%s, -"FRMT"]", regs[(val>>12)&15], regs[(val>>16)&15], off); else if(val & 0x200000) // write back sprintf(stg+strlen(stg), "error 'write back' on post indexed"); else if(val & 0x800000) sprintf(stg+strlen(stg), "%s, [%s], "FRMT, regs[(val>>12)&15], regs[(val>>16)&15], off); else sprintf(stg+strlen(stg), "%s, [%s], -"FRMT, regs[(val>>12)&15], regs[(val>>16)&15], off); else if(val & 0x1000000) // pre index if(val & 0x200000) // write back if(val & 0x800000) sprintf(stg+strlen(stg), "%s, [%s, %s]!", regs[(val>>12)&15], regs[(val>>16)&15], regs[val&15]); else sprintf(stg+strlen(stg), "%s, [%s, -%s]!", regs[(val>>12)&15], regs[(val>>16)&15], regs[val&15]); else if(val & 0x800000) sprintf(stg+strlen(stg), "%s, [%s, %s]", regs[(val>>12)&15], regs[(val>>16)&15], regs[val&15]); else sprintf(stg+strlen(stg), "%s, [%s, -%s]", regs[(val>>12)&15], regs[(val>>16)&15], regs[val&15]); else if(val & 0x200000) // write back sprintf(stg+strlen(stg), "error 'write back' on post indexed"); else if(val & 0x800000) sprintf(stg+strlen(stg), "%s, [%s], %s", regs[(val>>12)&15], regs[(val>>16)&15], regs[val&15]); else sprintf(stg+strlen(stg), "%s, [%s], -%s", regs[(val>>12)&15], regs[(val>>16)&15], regs[val&15]); } void branch_stg(char *stg, ULONG val, ULONG pos) { ULONG off = pos + (((int32_t)val << 8) >> 6) + 8; if((val & 0x0ffffff0) == 0x012fff10) // bx instruction { sprintf(stg+strlen(stg), "bx%s %s", cond[val>>28], regs[val&15]); } else { if(((val>>24)&15) == 10) sprintf(stg+strlen(stg), "b%s ", cond[val>>28]); else sprintf(stg+strlen(stg), "bl%s ", cond[val>>28]); sprintf(stg+strlen(stg), "0x%x", off); } } void opcode_stg(char *stg, ULONG val, ULONG off) { ULONG des, op1; char op2[80]; char *st = stg + strlen(stg); if(((val & 0x0ffffff0) == 0x012fff10) && (val & 16)) { branch_stg(stg, val, off); return; } else if(((val & 0x0f000000) == 0x00000000) && ((val & 0xf0) == 0x90)) { multiply_stg(stg, val); return; } else if(((val & 0x0f000000) <= 0x01000000) && ((val & 0x90) == 0x90) && ((val & 0xf0) > 0x90) && ((val & 0x01200000) != 0x00200000)) { halfword_stg(stg, val); return; } sprintf(stg+strlen(stg), "%s%s%s ", opcd[(val>>21) & 15], cond[val>>28], setc[(val>>20) & 31]?"s":" "); des = (val>>12) & 15; op1 = (val>>16) & 15; if(val & 0x2000000) // immidiate { off = (ULONG)((uint64_t)(val&0xff) << (32 - 2 * ((val >> 8) & 15))) | ((val&0xff) >> 2 * ((val >> 8) & 15)); sprintf(op2, FRMT" ", off); } else { if(val & 16) // shift type sprintf(op2, SHFTFRMR, regs[val&15], shfts[(val>>5)&3], regs[(val>>8)&15]); else if((val>>7) & 31) sprintf(op2, SHFTFRMC, regs[val&15], shfts[(val>>5)&3], (val>>7) & 31); else sprintf(op2, "%s ", regs[val&15]); } switch((val>>21) & 15) { case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 12: case 14: sprintf(stg+strlen(stg), "%s, %s, %s", regs[des], regs[op1], op2); break; case 8: case 9: case 10: case 11: if(val & 0x100000) // set status sprintf(stg+strlen(stg), "%s, %s", regs[op1], op2); // standard TEQ,TST,CMP,CMN else { //special MRS/MSR opcodes if((((val>>23) & 31) == 2) && ((val & 0x3f0fff) == 0x0f0000)) { sprintf(st, "mrs%s %s, %s", cnd1[val>>28], regs[des], val&0x400000?"SPSR_xx":"CPSR"); } else if((((val>>23) & 31) == 2) && ((val & 0x30fff0) == 0x20f000)) { sprintf(st, "msr%s %s, %s", cnd1[val>>28], val&0x400000?"SPSR_xx":"CPSR", regs[val&15]); } else if((((val>>23) & 31) == 6) && ((val & 0x30f000) == 0x20f000)) { sprintf(st, "msr%s %s, %s", cnd1[val>>28], val&0x400000?"SPSR_xx":"CPSR_cf", op2); } else if((((val>>23) & 31) == 2) && ((val & 0x300ff0) == 0x000090)) { sprintf(st, "swp%s%s %s, %s, [%s]", val&0x400000?"b":"", cnd1[val>>28], regs[(val>>12)&15], regs[val&15], regs[(val>>16)&15]); } else { sprintf(stg+strlen(stg), "??????????????"); } } break; case 13: case 15: sprintf(stg+strlen(stg), "%s, %s", regs[des], op2); break; } } void opcode_cop(char *stg, ULONG val, ULONG off) { char* op; int opcode1 = (val >> 21) & 0x7; int CRn = (val >> 16) & 0xf; int Rd = (val >> 12) & 0xf; int cp_num = (val >> 8) & 0xf; int opcode2 = (val >> 5) & 0x7; int CRm = val & 0xf; // ee073f5e mcr 15, 0, r3, cr7, cr14, {2} if (val & (1<<4)) { if (val & (1<<20)) { op = "mrc"; } else { op = "mcr"; } opcode1 = (val >> 21) & 0x7; CRn = (val >> 16) & 0xf; Rd = (val >> 12) & 0xf; cp_num = (val >> 8) & 0xf; opcode2 = (val >> 5) & 0x7; CRm = val & 0xf; sprintf(stg+strlen(stg), "%s%s %d, %d, r%d, cr%d, cr%d, {%d}", op, cnd1[val>>28], cp_num, opcode1, Rd, CRn, CRm, opcode2); } else { op = "cdp"; opcode1 = (val >> 20) & 0xf; CRn = (val >> 16) & 0xf; Rd = (val >> 12) & 0xf; cp_num = (val >> 8) & 0xf; opcode2 = (val >> 5) & 0x7; CRm = val & 0xf; sprintf(stg+strlen(stg), "%s%s %d, %d, cr%d, cr%d, cr%d, {%d}", op, cnd1[val>>28], cp_num, opcode1, Rd, CRn, CRm, opcode2); } } void single_data(char *stg, ULONG val) { char op2[80]; if(((val & 0x0e000000) == 0x06000000) && (val & 16)) { sprintf(stg+strlen(stg), "undef%s", cond[val>>28]); return; } if(val & 0x400000) if(val & 0x100000) sprintf(stg+strlen(stg), "ldr%sb ", cond[val>>28]); else sprintf(stg+strlen(stg), "str%sb ", cond[val>>28]); else if(val & 0x100000) sprintf(stg+strlen(stg), "ldr%s ", cnd1[val>>28]); else sprintf(stg+strlen(stg), "str%s ", cnd1[val>>28]); if(val & 0x2000000) {// reg offset if(val & 16) // shift type sprintf(op2, "error: reg defined shift"); else if((val>>7) & 31) sprintf(op2, SHFTFRMC, regs[val&15], shfts[(val>>5)&3], (val>>7) & 31); else sprintf(op2, "%s", regs[val&15]); } if(val & 0x2000000) // reg offset if(val & 0x1000000) // pre index if(val & 0x800000) // up offset (+) if(val & 0x200000) // write back sprintf(stg+strlen(stg), "%s, [%s, %s]!", regs[(val>>12)&15], regs[(val>>16)&15], op2); else sprintf(stg+strlen(stg), "%s, [%s, %s]", regs[(val>>12)&15], regs[(val>>16)&15], op2); else if(val & 0x200000) // write back sprintf(stg+strlen(stg), "%s, [%s, -%s]!", regs[(val>>12)&15], regs[(val>>16)&15], op2); else sprintf(stg+strlen(stg), "%s, [%s, -%s]", regs[(val>>12)&15], regs[(val>>16)&15], op2); else if(val & 0x200000) // write back sprintf(stg+strlen(stg), "error 'write back' set"); else if(val & 0x800000) // up offset (+) sprintf(stg+strlen(stg), "%s, [%s], %s", regs[(val>>12)&15], regs[(val>>16)&15], op2); else sprintf(stg+strlen(stg), "%s, [%s], -%s", regs[(val>>12)&15], regs[(val>>16)&15], op2); else if(val & 0x1000000) // pre index if(val & 0x800000) // up offset (+) if(val & 0x200000) // write back if(val & 0xfff) sprintf(stg+strlen(stg), "%s, [%s, "FRMT"]!", regs[(val>>12)&15], regs[(val>>16)&15], val & 0xfff); else sprintf(stg+strlen(stg), "%s, [%s]!", regs[(val>>12)&15], regs[(val>>16)&15]); else if(val & 0xfff) sprintf(stg+strlen(stg), "%s, [%s, "FRMT"]", regs[(val>>12)&15], regs[(val>>16)&15], val & 0xfff); else sprintf(stg+strlen(stg), "%s, [%s]", regs[(val>>12)&15], regs[(val>>16)&15]); else if(val & 0x200000) // write back if(val & 0xfff) sprintf(stg+strlen(stg), "%s, [%s, -"FRMT"]!", regs[(val>>12)&15], regs[(val>>16)&15], val & 0xfff); else sprintf(stg+strlen(stg), "%s, [%s]!", regs[(val>>12)&15], regs[(val>>16)&15]); else if(val & 0xfff) sprintf(stg+strlen(stg), "%s, [%s, -"FRMT"]", regs[(val>>12)&15], regs[(val>>16)&15], val & 0xfff); else sprintf(stg+strlen(stg), "%s, [%s]", regs[(val>>12)&15], regs[(val>>16)&15]); else if(val & 0x200000) // write back sprintf(stg+strlen(stg), "error 'write back' set"); else if(val & 0x800000) // up offset (+) if(val & 0xfff) sprintf(stg+strlen(stg), "%s, [%s], "FRMT, regs[(val>>12)&15], regs[(val>>16)&15], val & 0xfff); else sprintf(stg+strlen(stg), "%s, [%s]", regs[(val>>12)&15], regs[(val>>16)&15]); else if(val & 0xfff) sprintf(stg+strlen(stg), "%s, [%s], -"FRMT, regs[(val>>12)&15], regs[(val>>16)&15], val & 0xfff); else sprintf(stg+strlen(stg), "%s, [%s]", regs[(val>>12)&15], regs[(val>>16)&15]); } void block_data(char *stg, ULONG val) { char lst[80]; int i; strcpy(lst, "{"); for(i=0; i<16; i++) if(val & (1<<i)) sprintf(lst+strlen(lst), "%s, ", regs[i]); if(strlen(lst)>2) strcpy(lst+strlen(lst)-2, "}"); else strcpy(lst+strlen(lst), "}"); if(val & 0x400000) // load psr or force user mode strcpy(lst+strlen(lst), "^"); if(val & 0x100000) // load if(val & 0x1000000) // pre offset if(val & 0x800000) sprintf(stg+strlen(stg), "ldm%sib ", cond[val>>28]); else sprintf(stg+strlen(stg), "ldm%sdb ", cond[val>>28]); else if(val & 0x800000) sprintf(stg+strlen(stg), "ldm%sia ", cond[val>>28]); else sprintf(stg+strlen(stg), "ldm%sda ", cond[val>>28]); else if(val & 0x1000000) if(val & 0x800000) sprintf(stg+strlen(stg), "stm%sib ", cond[val>>28]); else sprintf(stg+strlen(stg), "stm%sdb ", cond[val>>28]); else if(val & 0x800000) sprintf(stg+strlen(stg), "stm%sia ", cond[val>>28]); else sprintf(stg+strlen(stg), "stm%sda ", cond[val>>28]); switch((val>>21)&3) { case 0: sprintf(stg+strlen(stg), "%s, %s", regs[(val>>16)&15], lst); break; case 1: sprintf(stg+strlen(stg), "%s!, %s", regs[(val>>16)&15], lst); break; case 2: sprintf(stg+strlen(stg), "%s, %s", regs[(val>>16)&15], lst); break; case 3: sprintf(stg+strlen(stg), "%s!, %s", regs[(val>>16)&15], lst); break; } } void dis_asm(ULONG off, ULONG val, char *stg) { sprintf(stg, "%6x: %08x ", off, val); switch((val >> 24) & 15) { case 0: case 1: case 2: case 3: opcode_stg(stg, val, off); break; case 4: case 5: case 6: case 7: single_data(stg, val); break; case 8: case 9: block_data(stg, val); break; case 10: case 11: branch_stg(stg, val, off); break; case 12: case 13: sprintf(stg+strlen(stg), "cop%s", cnd1[val>>28]); break; case 14: opcode_cop(stg, val, off); break; case 15: sprintf(stg+strlen(stg), "swi%s", cnd1[val>>28]); break; } } ENDCHAR STARTCHAR uni2852 ENCODING 10322 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 50 00 00 00 40 00 ENDCHAR STARTCHAR uni2853 ENCODING 10323 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 50 00 00 00 40 00 ENDCHAR STARTCHAR uni2854 ENCODING 10324 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 10 00 40 00 40 00 ENDCHAR STARTCHAR uni2855 ENCODING 10325 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 10 00 40 00 40 00 ENDCHAR STARTCHAR uni2856 ENCODING 10326 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 50 00 40 00 40 00 ENDCHAR STARTCHAR uni2857 ENCODING 10327 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 50 00 40 00 40 00 ENDCHAR STARTCHAR uni2858 ENCODING 10328 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 10 00 00 00 40 00 ENDCHAR STARTCHAR uni2859 ENCODING 10329 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 10 00 00 00 40 00 ENDCHAR STARTCHAR uni285A ENCODING 10330 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 50 00 00 00 40 00 ENDCHAR STARTCHAR uni285B ENCODING 10331 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 50 00 00 00 40 00 ENDCHAR STARTCHAR uni285C ENCODING 10332 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 10 00 40 00 40 00 ENDCHAR STARTCHAR uni285D ENCODING 10333 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 10 00 40 00 40 00 ENDCHAR STARTCHAR uni285E ENCODING 10334 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 50 00 40 00 40 00 ENDCHAR STARTCHAR uni285F ENCODING 10335 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 50 00 40 00 40 00 ENDCHAR STARTCHAR uni2860 ENCODING 10336 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 00 10 00 40 00 ENDCHAR STARTCHAR uni2861 ENCODING 10337 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 00 00 10 00 40 00 ENDCHAR STARTCHAR uni2862 ENCODING 10338 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 40 00 10 00 40 00 ENDCHAR STARTCHAR uni2863 ENCODING 10339 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 40 00 10 00 40 00 ENDCHAR STARTCHAR uni2864 ENCODING 10340 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 00 50 00 40 00 ENDCHAR STARTCHAR uni2865 ENCODING 10341 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 00 00 50 00 40 00 ENDCHAR STARTCHAR uni2866 ENCODING 10342 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 40 00 50 00 40 00 ENDCHAR STARTCHAR uni2867 ENCODING 10343 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 40 00 50 00 40 00 ENDCHAR STARTCHAR uni2868 ENCODING 10344 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 00 00 10 00 40 00 ENDCHAR STARTCHAR uni2869 ENCODING 10345 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 00 00 10 00 40 00 ENDCHAR STARTCHAR uni286A ENCODING 10346 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 40 00 10 00 40 00 ENDCHAR STARTCHAR uni286B ENCODING 10347 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 40 00 10 00 40 00 ENDCHAR STARTCHAR uni286C ENCODING 10348 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 00 00 50 00 40 00 ENDCHAR STARTCHAR uni286D ENCODING 10349 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 00 00 50 00 40 00 ENDCHAR STARTCHAR uni286E ENCODING 10350 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 40 00 50 00 40 00 ENDCHAR STARTCHAR uni286F ENCODING 10351 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 40 00 50 00 40 00 ENDCHAR STARTCHAR uni2870 ENCODING 10352 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 10 00 10 00 40 00 ENDCHAR STARTCHAR uni2871 ENCODING 10353 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 10 00 10 00 40 00 ENDCHAR STARTCHAR uni2872 ENCODING 10354 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 50 00 10 00 40 00 ENDCHAR STARTCHAR uni2873 ENCODING 10355 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 50 00 10 00 40 00 ENDCHAR STARTCHAR uni2874 ENCODING 10356 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 10 00 50 00 40 00 ENDCHAR STARTCHAR uni2875 ENCODING 10357 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 10 00 50 00 40 00 ENDCHAR STARTCHAR uni2876 ENCODING 10358 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 50 00 50 00 40 00 ENDCHAR STARTCHAR uni2877 ENCODING 10359 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 50 00 50 00 40 00 ENDCHAR STARTCHAR uni2878 ENCODING 10360 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 10 00 10 00 40 00 ENDCHAR STARTCHAR uni2879 ENCODING 10361 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 10 00 10 00 40 00 ENDCHAR STARTCHAR uni287A ENCODING 10362 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 50 00 10 00 40 00 ENDCHAR STARTCHAR uni287B ENCODING 10363 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 50 00 10 00 40 00 ENDCHAR STARTCHAR uni287C ENCODING 10364 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 10 00 50 00 40 00 ENDCHAR STARTCHAR uni287D ENCODING 10365 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 10 00 50 00 40 00 ENDCHAR STARTCHAR uni287E ENCODING 10366 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 50 00 50 00 40 00 ENDCHAR STARTCHAR uni287F ENCODING 10367 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 50 00 50 00 40 00 ENDCHAR STARTCHAR uni2880 ENCODING 10368 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 00 00 00 10 00 ENDCHAR STARTCHAR uni2881 ENCODING 10369 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 00 00 00 00 10 00 ENDCHAR STARTCHAR uni2882 ENCODING 10370 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 40 00 00 00 10 00 ENDCHAR STARTCHAR uni2883 ENCODING 10371 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 40 00 00 00 10 00 ENDCHAR STARTCHAR uni2884 ENCODING 10372 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 00 40 00 10 00 ENDCHAR STARTCHAR uni2885 ENCODING 10373 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 00 00 40 00 10 00 ENDCHAR STARTCHAR uni2886 ENCODING 10374 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 40 00 40 00 10 00 ENDCHAR STARTCHAR uni2887 ENCODING 10375 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 40 00 40 00 10 00 ENDCHAR STARTCHAR uni2888 ENCODING 10376 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 00 00 00 00 10 00 ENDCHAR STARTCHAR uni2889 ENCODING 10377 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 00 00 00 00 10 00 ENDCHAR STARTCHAR uni288A ENCODING 10378 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 40 00 00 00 10 00 ENDCHAR STARTCHAR uni288B ENCODING 10379 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 40 00 00 00 10 00 ENDCHAR STARTCHAR uni288C ENCODING 10380 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 00 00 40 00 10 00 ENDCHAR STARTCHAR uni288D ENCODING 10381 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 00 00 40 00 10 00 ENDCHAR STARTCHAR uni288E ENCODING 10382 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 40 00 40 00 10 00 ENDCHAR STARTCHAR uni288F ENCODING 10383 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 40 00 40 00 10 00 ENDCHAR STARTCHAR uni2890 ENCODING 10384 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 10 00 00 00 10 00 ENDCHAR STARTCHAR uni2891 ENCODING 10385 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 10 00 00 00 10 00 ENDCHAR STARTCHAR uni2892 ENCODING 10386 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 50 00 00 00 10 00 ENDCHAR STARTCHAR uni2893 ENCODING 10387 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 50 00 00 00 10 00 ENDCHAR STARTCHAR uni2894 ENCODING 10388 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 10 00 40 00 10 00 ENDCHAR STARTCHAR uni2895 ENCODING 10389 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 10 00 40 00 10 00 ENDCHAR STARTCHAR uni2896 ENCODING 10390 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 50 00 40 00 10 00 ENDCHAR STARTCHAR uni2897 ENCODING 10391 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 50 00 40 00 10 00 ENDCHAR STARTCHAR uni2898 ENCODING 10392 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 10 00 00 00 10 00 ENDCHAR STARTCHAR uni2899 ENCODING 10393 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 10 00 00 00 10 00 ENDCHAR STARTCHAR uni289A ENCODING 10394 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 50 00 00 00 10 00 ENDCHAR STARTCHAR uni289B ENCODING 10395 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 50 00 00 00 10 00 ENDCHAR STARTCHAR uni289C ENCODING 10396 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 10 00 40 00 10 00 ENDCHAR STARTCHAR uni289D ENCODING 10397 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 10 00 40 00 10 00 ENDCHAR STARTCHAR uni289E ENCODING 10398 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 50 00 40 00 10 00 ENDCHAR STARTCHAR uni289F ENCODING 10399 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 50 00 40 00 10 00 ENDCHAR STARTCHAR uni28A0 ENCODING 10400 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 00 10 00 10 00 ENDCHAR STARTCHAR uni28A1 ENCODING 10401 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 00 00 10 00 10 00 ENDCHAR STARTCHAR uni28A2 ENCODING 10402 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 40 00 10 00 10 00 ENDCHAR STARTCHAR uni28A3 ENCODING 10403 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 40 00 10 00 10 00 ENDCHAR STARTCHAR uni28A4 ENCODING 10404 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 00 50 00 10 00 ENDCHAR STARTCHAR uni28A5 ENCODING 10405 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 00 00 50 00 10 00 ENDCHAR STARTCHAR uni28A6 ENCODING 10406 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 40 00 50 00 10 00 ENDCHAR STARTCHAR uni28A7 ENCODING 10407 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 40 00 50 00 10 00 ENDCHAR STARTCHAR uni28A8 ENCODING 10408 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 00 00 10 00 10 00 ENDCHAR STARTCHAR uni28A9 ENCODING 10409 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 00 00 10 00 10 00 ENDCHAR STARTCHAR uni28AA ENCODING 10410 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 40 00 10 00 10 00 ENDCHAR STARTCHAR uni28AB ENCODING 10411 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 40 00 10 00 10 00 ENDCHAR STARTCHAR uni28AC ENCODING 10412 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 00 00 50 00 10 00 ENDCHAR STARTCHAR uni28AD ENCODING 10413 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 00 00 50 00 10 00 ENDCHAR STARTCHAR uni28AE ENCODING 10414 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 40 00 50 00 10 00 ENDCHAR STARTCHAR uni28AF ENCODING 10415 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 40 00 50 00 10 00 ENDCHAR STARTCHAR uni28B0 ENCODING 10416 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 10 00 10 00 10 00 ENDCHAR STARTCHAR uni28B1 ENCODING 10417 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 10 00 10 00 10 00 ENDCHAR STARTCHAR uni28B2 ENCODING 10418 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 50 00 10 00 10 00 ENDCHAR STARTCHAR uni28B3 ENCODING 10419 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 50 00 10 00 10 00 ENDCHAR STARTCHAR uni28B4 ENCODING 10420 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 10 00 50 00 10 00 ENDCHAR STARTCHAR uni28B5 ENCODING 10421 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 10 00 50 00 10 00 ENDCHAR STARTCHAR uni28B6 ENCODING 10422 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 50 00 50 00 10 00 ENDCHAR STARTCHAR uni28B7 ENCODING 10423 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 50 00 50 00 10 00 ENDCHAR STARTCHAR uni28B8 ENCODING 10424 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 10 00 10 00 10 00 ENDCHAR STARTCHAR uni28B9 ENCODING 10425 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 10 00 10 00 10 00 ENDCHAR STARTCHAR uni28BA ENCODING 10426 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 50 00 10 00 10 00 ENDCHAR STARTCHAR uni28BB ENCODING 10427 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 50 00 10 00 10 00 ENDCHAR STARTCHAR uni28BC ENCODING 10428 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 10 00 50 00 10 00 ENDCHAR STARTCHAR uni28BD ENCODING 10429 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 10 00 50 00 10 00 ENDCHAR STARTCHAR uni28BE ENCODING 10430 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 50 00 50 00 10 00 ENDCHAR STARTCHAR uni28BF ENCODING 10431 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 50 00 50 00 10 00 ENDCHAR STARTCHAR uni28C0 ENCODING 10432 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 00 00 00 50 00 ENDCHAR STARTCHAR uni28C1 ENCODING 10433 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 00 00 00 00 50 00 ENDCHAR STARTCHAR uni28C2 ENCODING 10434 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 40 00 00 00 50 00 ENDCHAR STARTCHAR uni28C3 ENCODING 10435 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 40 00 00 00 50 00 ENDCHAR STARTCHAR uni28C4 ENCODING 10436 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 00 40 00 50 00 ENDCHAR STARTCHAR uni28C5 ENCODING 10437 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 00 00 40 00 50 00 ENDCHAR STARTCHAR uni28C6 ENCODING 10438 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 40 00 40 00 50 00 ENDCHAR STARTCHAR uni28C7 ENCODING 10439 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 40 00 40 00 50 00 ENDCHAR STARTCHAR uni28C8 ENCODING 10440 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 00 00 00 00 50 00 ENDCHAR STARTCHAR uni28C9 ENCODING 10441 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 00 00 00 00 50 00 ENDCHAR STARTCHAR uni28CA ENCODING 10442 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 40 00 00 00 50 00 ENDCHAR STARTCHAR uni28CB ENCODING 10443 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 40 00 00 00 50 00 ENDCHAR STARTCHAR uni28CC ENCODING 10444 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 00 00 40 00 50 00 ENDCHAR STARTCHAR uni28CD ENCODING 10445 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 00 00 40 00 50 00 ENDCHAR STARTCHAR uni28CE ENCODING 10446 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 40 00 40 00 50 00 ENDCHAR STARTCHAR uni28CF ENCODING 10447 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 40 00 40 00 50 00 ENDCHAR STARTCHAR uni28D0 ENCODING 10448 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 10 00 00 00 50 00 ENDCHAR STARTCHAR uni28D1 ENCODING 10449 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 10 00 00 00 50 00 ENDCHAR STARTCHAR uni28D2 ENCODING 10450 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 50 00 00 00 50 00 ENDCHAR STARTCHAR uni28D3 ENCODING 10451 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 50 00 00 00 50 00 ENDCHAR STARTCHAR uni28D4 ENCODING 10452 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 10 00 40 00 50 00 ENDCHAR STARTCHAR uni28D5 ENCODING 10453 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 10 00 40 00 50 00 ENDCHAR STARTCHAR uni28D6 ENCODING 10454 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 50 00 40 00 50 00 ENDCHAR STARTCHAR uni28D7 ENCODING 10455 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 50 00 40 00 50 00 ENDCHAR STARTCHAR uni28D8 ENCODING 10456 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 10 00 00 00 50 00 ENDCHAR STARTCHAR uni28D9 ENCODING 10457 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 10 00 00 00 50 00 ENDCHAR STARTCHAR uni28DA ENCODING 10458 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 50 00 00 00 50 00 ENDCHAR STARTCHAR uni28DB ENCODING 10459 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 50 00 00 00 50 00 ENDCHAR STARTCHAR uni28DC ENCODING 10460 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 10 00 40 00 50 00 ENDCHAR STARTCHAR uni28DD ENCODING 10461 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 10 00 40 00 50 00 ENDCHAR STARTCHAR uni28DE ENCODING 10462 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 50 00 40 00 50 00 ENDCHAR STARTCHAR uni28DF ENCODING 10463 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 50 00 40 00 50 00 ENDCHAR STARTCHAR uni28E0 ENCODING 10464 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 00 10 00 50 00 ENDCHAR STARTCHAR uni28E1 ENCODING 10465 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 00 00 10 00 50 00 ENDCHAR STARTCHAR uni28E2 ENCODING 10466 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 40 00 10 00 50 00 ENDCHAR STARTCHAR uni28E3 ENCODING 10467 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 40 00 10 00 50 00 ENDCHAR STARTCHAR uni28E4 ENCODING 10468 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 00 00 50 00 50 00 ENDCHAR STARTCHAR uni28E5 ENCODING 10469 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 00 00 50 00 50 00 ENDCHAR STARTCHAR uni28E6 ENCODING 10470 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 40 00 50 00 50 00 ENDCHAR STARTCHAR uni28E7 ENCODING 10471 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 40 00 50 00 50 00 ENDCHAR STARTCHAR uni28E8 ENCODING 10472 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 00 00 10 00 50 00 ENDCHAR STARTCHAR uni28E9 ENCODING 10473 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 00 00 10 00 50 00 ENDCHAR STARTCHAR uni28EA ENCODING 10474 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 40 00 10 00 50 00 ENDCHAR STARTCHAR uni28EB ENCODING 10475 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 40 00 10 00 50 00 ENDCHAR STARTCHAR uni28EC ENCODING 10476 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 00 00 50 00 50 00 ENDCHAR STARTCHAR uni28ED ENCODING 10477 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 00 00 50 00 50 00 ENDCHAR STARTCHAR uni28EE ENCODING 10478 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 40 00 50 00 50 00 ENDCHAR STARTCHAR uni28EF ENCODING 10479 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 40 00 50 00 50 00 ENDCHAR STARTCHAR uni28F0 ENCODING 10480 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 10 00 10 00 50 00 ENDCHAR STARTCHAR uni28F1 ENCODING 10481 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 10 00 10 00 50 00 ENDCHAR STARTCHAR uni28F2 ENCODING 10482 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 50 00 10 00 50 00 ENDCHAR STARTCHAR uni28F3 ENCODING 10483 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 50 00 10 00 50 00 ENDCHAR STARTCHAR uni28F4 ENCODING 10484 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 10 00 50 00 50 00 ENDCHAR STARTCHAR uni28F5 ENCODING 10485 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 10 00 50 00 50 00 ENDCHAR STARTCHAR uni28F6 ENCODING 10486 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 00 00 50 00 50 00 50 00 ENDCHAR STARTCHAR uni28F7 ENCODING 10487 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 40 00 50 00 50 00 50 00 ENDCHAR STARTCHAR uni28F8 ENCODING 10488 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 10 00 10 00 50 00 ENDCHAR STARTCHAR uni28F9 ENCODING 10489 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 10 00 10 00 50 00 ENDCHAR STARTCHAR uni28FA ENCODING 10490 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 50 00 10 00 50 00 ENDCHAR STARTCHAR uni28FB ENCODING 10491 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 50 00 10 00 50 00 ENDCHAR STARTCHAR uni28FC ENCODING 10492 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 10 00 50 00 50 00 ENDCHAR STARTCHAR uni28FD ENCODING 10493 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 10 00 50 00 50 00 ENDCHAR STARTCHAR uni28FE ENCODING 10494 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 00 50 00 50 00 50 00 ENDCHAR STARTCHAR uni28FF ENCODING 10495 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 50 00 50 00 50 00 50 00 ENDCHAR STARTCHAR fi ENCODING 64257 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 10 28 20 78 28 28 00 00 ENDCHAR STARTCHAR fl ENCODING 64258 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 00 18 28 28 78 28 28 00 00 ENDCHAR STARTCHAR uniFFFD ENCODING 65533 SWIDTH 640 0 DWIDTH 6 0 BBX 6 9 0 -2 BITMAP 70 D8 A8 E8 D8 D8 F8 D8 70 ENDCHAR ENDFONT