├── .gitignore ├── LICENSE ├── README.md ├── backspire.c ├── charmaps.h ├── console.c ├── console.h ├── makefile ├── nand.h ├── ndlessext.c ├── ndlessext.h ├── s_screen.c ├── screen.c ├── screen.h ├── types.h ├── utils.c └── utils.h /.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | *.elf 3 | *.tns 4 | 5 | .idea/ 6 | .vscode/ 7 | .DS_Store 8 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # backSpire 2 | 3 | **A TI-Nspire (CX (II)) OS downgrader** 4 | 5 | ![Screenshot](https://i.imgur.com/h7CO3ea.png) 6 | 7 | **More info/details**: https://tiplanet.org/forum/viewtopic.php?t=25952 8 | 9 | **License**: GPLv3 10 | -------------------------------------------------------------------------------- /backspire.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "types.h" 3 | #include "ndlessext.h" 4 | #include "nand.h" 5 | #include "screen.h" 6 | #include "utils.h" 7 | #include "charmaps.h" 8 | #include "console.h" 9 | 10 | // classic Nspire & older Nspire CX partition table 11 | static const u32 classic_parts_pages_offsets[CLASSIC_CX_NPARTS+1]={MANUF_PAGE_OFFSET,BOOT2_PAGE_OFFSET,BOOTD_PAGE_OFFSET,DIAGS_PAGE_OFFSET,FILES_PAGE_OFFSET,0}; 12 | 13 | // Nspire CX2 partition table 14 | static const u32 cx2_parts_pages_offsets[CX2_NPARTS+1]={CX2_MANUF_PAGE_OFFSET,CX2_BOOTL_PAGE_OFFSET,CX2_PTTDT_PAGE_OFFSET,CX2_UNKN1_PAGE_OFFSET,CX2_DEVCR_PAGE_OFFSET,CX2_OSLDR_PAGE_OFFSET,CX2_INSTL_PAGE_OFFSET,CX2_OINST_PAGE_OFFSET,CX2_OSDAT_PAGE_OFFSET,CX2_DIAGS_PAGE_OFFSET,CX2_UNKN2_PAGE_OFFSET,CX2_OSYST_PAGE_OFFSET,CX2_LOGIN_PAGE_OFFSET,CX2_FILES_PAGE_OFFSET,0}; 15 | 16 | // classic Nspire & older Nspire CX boot partitions 17 | static const char* classic_bootmodes[2]={"Boot2","Diags"}; 18 | 19 | // Nspire CX2 boot partitions 20 | static const char* cx2_bootmodes[3]={"OSLoader","Installer","Diags"}; 21 | 22 | extern u16 sscreen[SCREEN_PIXELS]; 23 | 24 | #define LINETEXT_SIZE 128 25 | 26 | static void dispBytesNum(u16 x, u16 y, u32 val,char* suffix, int unit, int n) { 27 | setBytesColor(); 28 | dispNum(x,y,val,suffix,unit,n); 29 | resetCurColor(); 30 | } 31 | 32 | static void dispPagesNum(u16 x, u16 y, u32 val, char* suffix, int unit, int n) { 33 | setPagesColor(); 34 | dispNum(x,y,val,suffix,unit,n); 35 | resetCurColor(); 36 | } 37 | 38 | static void dispBlocksNum(u16 x, u16 y, u32 val, char* suffix, int unit, int n) { 39 | setBlocksColor(); 40 | dispNum(x,y,val,suffix,unit,n); 41 | resetCurColor(); 42 | } 43 | 44 | static void dispPartitionsNum(u16 x, u16 y, u8 val) { 45 | char txt[3] = {0}; 46 | sprintf(txt, "%02d", val); 47 | setCurColorRGB(0,0,0); 48 | drwBufStr(x,y,txt,0,0,0); 49 | resetCurColor(); 50 | } 51 | 52 | static void dispVersionStr(char* txt, int flags) { 53 | setCurColorRGB(0,0xFF,0x7F); 54 | disp(txt,flags); 55 | resetCurColor(); 56 | } 57 | 58 | static void dispKey(t_key key, char* txt) { 59 | if(!isKeyPressed(key)) setCurColorRGB(0xFF,0xFF,0xFF); 60 | else setCurColorRGB(0,0xFF,0xFF); 61 | disp(txt,0); 62 | if(!strcmp(txt,"<") || !strcmp(txt,">")) { 63 | setConsoleCol(getConsoleCol()-1); 64 | disp("-",I_TRANSP); 65 | } 66 | else if(!strcmp(txt,"^") || !strcmp(txt,"v")) { 67 | setConsoleCol(getConsoleCol()-1); 68 | disp("|",I_TRANSP); 69 | } 70 | resetCurColor(); 71 | } 72 | 73 | static void sprintVersion(char* txt, const u32* version_ptr) { 74 | u8 major = *(((u8*)version_ptr)+3); 75 | u8 minor = *(((u8*)version_ptr)+2); 76 | u16 build = *((u16*)version_ptr); 77 | sprintf(txt,"%d.%d.%d.%d",major,(int)(minor/10),minor%10,build); 78 | } 79 | 80 | enum {ACTION_NONE, ACTION_LEFT, ACTION_RIGHT, ACTION_UP, ACTION_DOWN, ACTION_TAB, ACTION_DEL, ACTION_REBOOT, ACTION_ESC}; 81 | 82 | static int horizRate(int val, int max) { 83 | return 1+val*(SCREEN_WIDTH-3)/max; 84 | } 85 | 86 | int main(int argc, char** argv) { 87 | u8 action = ACTION_NONE; 88 | u8* buffer = malloc(MANUF_FILES_OFFSET); 89 | u8 nparts, idownpart; 90 | u8 nboots; 91 | u32 size, offset; 92 | u32* parts_pages_offsets; 93 | char** bootmodes; 94 | char txt[LINETEXT_SIZE]; 95 | u8* ptr=0; 96 | u8* last_ptr; 97 | u8 signature[4]; 98 | u8 i; 99 | u8 ok=1; 100 | u32* minos_ptr; 101 | u32* boot_ptr; 102 | u32* last_minos_ptr; 103 | u8 type = getHardwareType(); 104 | u8 field = 0; 105 | u8 nfields = 2; 106 | 107 | initScreen(); 108 | startScreen(); 109 | convertRGB565(sscreen,SCR_320x240_565); 110 | 111 | while(action!=ACTION_ESC) { 112 | if (type == NS_CX2) { // CX2 113 | memcpy(signature, "DATA", 4); 114 | nparts=CX2_NPARTS; 115 | parts_pages_offsets = cx2_parts_pages_offsets; 116 | idownpart = 8; 117 | nboots = 3; 118 | bootmodes = cx2_bootmodes; 119 | } 120 | else { 121 | memcpy(signature, "\xAA\xC6\x8C\x92", 4); 122 | nparts = CLASSIC_CX_NPARTS; 123 | parts_pages_offsets = classic_parts_pages_offsets; 124 | char* buffer=malloc(MANUF_FILES_OFFSET+4); 125 | ext_read_nand(buffer,MANUF_FILES_OFFSET+4,0,0,0,NULL); 126 | idownpart = 2; 127 | nboots = 2; 128 | bootmodes = classic_bootmodes; 129 | 130 | // TI-Nspire CX/CM partition table 131 | if(!memcmp(buffer+MANUF_PTABLE_OFFSET,MANUF_PTABLE_ID,strlen(MANUF_PTABLE_ID))) { 132 | const long int offsets_offsets[CLASSIC_CX_NPARTS]={0,MANUF_BOOT2_OFFSET,MANUF_BOOTD_OFFSET,MANUF_DIAGS_OFFSET,MANUF_FILES_OFFSET}; 133 | for(i=1;ibuffer:last_ptr>=buffer; last_ptr -= NAND_PAGE_SIZE) { 148 | ok = !memcmp(last_ptr, signature, 4); 149 | if(ok) break; 150 | } 151 | if(ptr < buffer || ptr > last_ptr) ptr = last_ptr; 152 | minos_ptr = ptr+(type==NS_CX2?0xC:4); 153 | boot_ptr = ptr+(type==NS_CX2?4:0x10); 154 | last_minos_ptr = last_ptr+(type==NS_CX2?0xC:4); 155 | 156 | clrBuf(getScreen()); 157 | memcpy(getOffScreen(),sscreen,SCREEN_SIZE); 158 | 159 | resetConsole(); 160 | resetCurColor(); 161 | displn(" backSpire 1.1.1",I_TRANSP|I_BOLD); 162 | 163 | resetConsole(); 164 | for(i=0;i<5;i++) displn("",0); 165 | disp(" ",I_TRANSP); 166 | switch(type) { 167 | case NS_CX2: 168 | strcpy(txt,"CX II"); 169 | break; 170 | case NS_CX: 171 | strcpy(txt,"CX"); 172 | break; 173 | case NS_CM: 174 | strcpy(txt,"CM"); 175 | break; 176 | case NS_CL: 177 | strcpy(txt,"classic"); 178 | break; 179 | case NS_OTHER: 180 | strcpy(txt,"unknown"); 181 | break; 182 | } 183 | setCurColorRGB(0xFF,0x7F,0); 184 | disp(txt,I_TRANSP|I_BOLD); 185 | 186 | resetConsole(); 187 | for(i=0;i<1;i++) displn("",0); 188 | if(ok) { 189 | if(*last_minos_ptr) { 190 | sprintVersion(txt, last_minos_ptr); 191 | setCurColorRGB(0xFF,0,0); 192 | disp("OS < ",I_TRANSP); 193 | dispVersionStr(txt,0); 194 | setCurColorRGB(0xFF,0,0); 195 | displn(" forbidden",I_TRANSP); 196 | } 197 | else { 198 | setCurColorRGB(0,0x7F,0); 199 | displn("Any OS allowed",I_TRANSP); 200 | } 201 | } 202 | else displn("",I_TRANSP); 203 | 204 | if(ok) { 205 | resetConsole(); 206 | for(i=0;i<2;i++) displn("",I_TRANSP); 207 | setInactiveColor(); 208 | displn("To install an older OS:",I_TRANSP|I_BOLD); 209 | if(*last_minos_ptr) displn("- Patch minOS on active page",I_TRANSP|I_BOLD); 210 | if(type==NS_CX2) { 211 | displn("- Reboot into maintenance menu",I_TRANSP|I_BOLD); 212 | displn("- Delete the current OS",I_TRANSP|I_BOLD); 213 | displn("- Reboot once completed",I_TRANSP|I_BOLD); 214 | displn("- Send the older OS",I_TRANSP|I_BOLD); 215 | } 216 | else { 217 | displn("- Exit this program",I_TRANSP|I_BOLD); 218 | displn("- Send the older OS",I_TRANSP|I_BOLD); 219 | } 220 | } 221 | 222 | setInactiveColor(); 223 | u16 y0 = 9*CHAR_HEIGHT; 224 | u16 y = y0+2; 225 | u16 lmargin = 2; 226 | u16 x = SCREEN_WIDTH/2-4*CHAR_WIDTH; 227 | u16 x1 = 7*CHAR_WIDTH; 228 | u16 x2 = x+7*CHAR_WIDTH; 229 | drwBufStr(lmargin,y, " Flash NAND",0,1,0); 230 | drwBufStr(x+lmargin,y," BootData partition",0,1,0); 231 | y += CHAR_HEIGHT+1; 232 | drwBufHoriz(y,0,SCREEN_WIDTH-1); 233 | y+=1; 234 | drwBufStr(lmargin,y,"parts:",0,1,0); 235 | dispPartitionsNum(x1,y,nparts); 236 | setInactiveColor(); 237 | drwBufStr(x+lmargin,y,"part :",0,1,0); 238 | dispPartitionsNum(x2,y,idownpart); 239 | y += CHAR_HEIGHT; 240 | setInactiveColor(); 241 | drwBufStr(lmargin,y,"size :",0,1,0); 242 | dispBlocksNum(x1,y,parts_pages_offsets[nparts]/(NAND_BLOCK_SIZE/NAND_PAGE_SIZE),"blocks",1,3); 243 | setInactiveColor(); 244 | drwBufStr(x+lmargin,y,"start:",0,1,0); 245 | dispBlocksNum(x2,y,offset/NAND_BLOCK_SIZE,"b",1,3); 246 | dispPagesNum(x2+6*CHAR_WIDTH,y,offset/NAND_PAGE_SIZE,"p",1,5); 247 | dispBytesNum(x2+14*CHAR_WIDTH,y,offset,"B",1,7); 248 | y += CHAR_HEIGHT; 249 | dispPagesNum(x1-2*CHAR_WIDTH,y,parts_pages_offsets[nparts],"pages",1,5); 250 | setInactiveColor(); 251 | drwBufStr(x+lmargin,y,"end :",0,1,0); 252 | dispBlocksNum(x2,y,(offset+size)/NAND_BLOCK_SIZE-1,"b",1,3); 253 | dispPagesNum(x2+6*CHAR_WIDTH,y,(offset+size)/NAND_PAGE_SIZE-1,"p",1,5); 254 | dispBytesNum(x2+14*CHAR_WIDTH,y,offset+size-1,"B",1,7); 255 | y += CHAR_HEIGHT; 256 | dispBytesNum(x1-4*CHAR_WIDTH,y,parts_pages_offsets[nparts]*NAND_PAGE_SIZE,"Bytes",1,7); 257 | setInactiveColor(); 258 | drwBufStr(x+lmargin,y,"size :",0,1,0); 259 | dispBlocksNum(x2,y,size/NAND_BLOCK_SIZE,"b",1,3); 260 | dispPagesNum(x2+6*CHAR_WIDTH,y,size/NAND_PAGE_SIZE,"p",1,5); 261 | dispBytesNum(x2+14*CHAR_WIDTH,y,size,"B",1,7); 262 | y += CHAR_HEIGHT; 263 | setBlocksColor(); 264 | invertCurColorRGB(); 265 | drwBufStr(lmargin,y,"block=",0,1,0); 266 | dispPagesNum(lmargin+6*CHAR_WIDTH,y,NAND_BLOCK_SIZE/NAND_PAGE_SIZE,"p",1,2); 267 | setPagesColor(); 268 | invertCurColorRGB(); 269 | drwBufStr(lmargin+11*CHAR_WIDTH,y,"page=",0,1,0); 270 | dispBytesNum(lmargin+16*CHAR_WIDTH,y,NAND_PAGE_SIZE,"B",1,3); 271 | setInactiveColor(); 272 | drwBufStr(x+lmargin,y,"used :",0,1,0); 273 | dispPagesNum(x2,y,(last_ptr-buffer)/NAND_PAGE_SIZE+ok,"/",0,5); 274 | dispPagesNum(x2+6*CHAR_WIDTH,y,size/NAND_PAGE_SIZE,"pages",1,5); 275 | y += CHAR_HEIGHT; 276 | setInactiveColor(); 277 | drwBufBox(0,y0,SCREEN_WIDTH-1,y); 278 | drwBufVert(x,y0,y); 279 | 280 | resetConsole(); 281 | resetCurColor(); 282 | for(i=0;i<18;i++) displn("",I_TRANSP); 283 | 284 | if(!ok) { 285 | setCurColorRGB(0xFF,0,0); 286 | displn("Unsupported partition content !",I_TRANSP); 287 | resetCurColor(); 288 | displn("Press any key to exit...",I_TRANSP); 289 | showScreen(); 290 | while(any_key_pressed()); 291 | while(!any_key_pressed()); 292 | while(any_key_pressed()); 293 | break; 294 | } 295 | 296 | resetConsole(); 297 | for(i=0;i<18;i++) displn("",0); 298 | 299 | y0=getConsoleRow()*CHAR_HEIGHT-CHAR_HEIGHT-4; 300 | y=y0+CHAR_HEIGHT+3; 301 | 302 | drwBufBox(0,y0,SCREEN_WIDTH-1,y); 303 | u8* tptr; 304 | for(tptr=buffer;tptr=nboots) bootmode = nboots-1; 345 | disp(bootmodes[bootmode],I_TRANSP); 346 | resetCurColor(); 347 | 348 | action = ACTION_NONE; 349 | while(action==ACTION_NONE || (action!=ACTION_LEFT && action!=ACTION_RIGHT && any_key_pressed())) { 350 | static const u32 nullVersion = 0; 351 | resetConsole(); 352 | for(i=0;i<21;i++) displn("",I_TRANSP); 353 | drwBufHoriz(getConsoleRow()*CHAR_HEIGHT-1,0,SCREEN_WIDTH-1); 354 | dispKey(KEY_NSPIRE_TAB,"tab"); 355 | disp(": patch minimum allowed OS version to ",I_TRANSP); 356 | sprintVersion(txt, &nullVersion); 357 | dispVersionStr(txt,0); 358 | displn("",I_TRANSP); 359 | if(is_touchpad) { 360 | dispKey(KEY_NSPIRE_DOC,"doc"); 361 | disp(" + ",I_TRANSP); 362 | dispKey(KEY_NSPIRE_ENTER,"enter"); 363 | disp(" + ",I_TRANSP); 364 | dispKey(KEY_NSPIRE_EE,"EE"); 365 | } 366 | else { 367 | dispKey(KEY_NSPIRE_HOME,"home"); 368 | disp(" + ",I_TRANSP); 369 | dispKey(KEY_NSPIRE_ENTER,"enter"); 370 | disp(" + ",I_TRANSP); 371 | dispKey(KEY_NSPIRE_P,"P"); 372 | } 373 | displn(": reboot into maintenance menu (hold)",I_TRANSP); 374 | dispKey(KEY_NSPIRE_ESC,"esc"); 375 | disp(": exit ",I_TRANSP); 376 | dispKey(KEY_NSPIRE_LEFT,"<"); 377 | dispKey(KEY_NSPIRE_RIGHT,">"); 378 | disp(": prev/next page ",I_TRANSP); 379 | dispKey(KEY_NSPIRE_UP,"^"); 380 | dispKey(KEY_NSPIRE_DOWN,"v"); 381 | displn(": prev/next field",I_TRANSP); 382 | showScreen(); 383 | 384 | if(isKeyPressed(KEY_NSPIRE_ESC)) action=ACTION_ESC; 385 | else if(isKeyPressed(KEY_NSPIRE_TAB)) action=ACTION_TAB; 386 | else if(isKeyPressed(KEY_NSPIRE_LEFT)) action=ACTION_LEFT; 387 | else if(isKeyPressed(KEY_NSPIRE_RIGHT)) action=ACTION_RIGHT; 388 | else if(isKeyPressed(KEY_NSPIRE_UP)) action=ACTION_UP; 389 | else if(isKeyPressed(KEY_NSPIRE_DOWN)) action=ACTION_DOWN; 390 | else if(isKeyPressed(KEY_NSPIRE_DEL)) action=ACTION_DEL; 391 | 392 | if( (is_touchpad && isKeyPressed(KEY_NSPIRE_DOC) && isKeyPressed(KEY_NSPIRE_ENTER) && isKeyPressed(KEY_NSPIRE_EE)) 393 | || (!is_touchpad && isKeyPressed(KEY_NSPIRE_HOME) && isKeyPressed(KEY_NSPIRE_ENTER) && isKeyPressed(KEY_NSPIRE_P))) { 394 | action = ACTION_REBOOT; 395 | break; 396 | } 397 | } 398 | 399 | if(action==ACTION_LEFT) { 400 | if(ptr > buffer && (type < NS_CX2 || ptr - NAND_PAGE_SIZE > buffer)) ptr -= NAND_PAGE_SIZE; 401 | } 402 | else if(action==ACTION_RIGHT) { 403 | if(ptr < last_ptr) ptr += NAND_PAGE_SIZE; 404 | } 405 | if(action==ACTION_UP) { 406 | if(field>0) field--; 407 | } 408 | else if(action==ACTION_DOWN) { 409 | if(field+1=nboots) *boot_ptr=0; 420 | } 421 | } 422 | else if(action==ACTION_DEL) { 423 | memset(ptr,0xFF,NAND_PAGE_SIZE); 424 | ptr -= NAND_PAGE_SIZE; 425 | } 426 | ext_erase_nand(offset, offset+size-1); 427 | ext_write_nand(buffer, size, offset); 428 | } 429 | 430 | } 431 | stopScreen(); 432 | free(buffer); 433 | return 0; 434 | } 435 | -------------------------------------------------------------------------------- /charmaps.h: -------------------------------------------------------------------------------- 1 | /* gameplaySP 2 | * 3 | * Copyright (C) 2006 Exophase 4 | * 5 | * This program is free software; you can redistribute it and/or 6 | * modify it under the terms of the GNU General Public License as 7 | * published by the Free Software Foundation; either version 2 of 8 | * the License, or (at your option) any later version. 9 | * 10 | * This program is distributed in the hope that it will be useful, 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 | * General Public License for more details. 14 | * 15 | * You should have received a copy of the GNU General Public License 16 | * along with this program; if not, write to the Free Software 17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18 | */ 19 | 20 | /* Generated by convbdf on Fri Aug 18 17:44:10 2006. */ 21 | /* Slightly modified by Exophase. Big thanks to ajs for converting this! */ 22 | 23 | #define CHAR_WIDTH 6 24 | #define CHAR_HEIGHT 10 25 | 26 | /* Font information: 27 | name: 6x10 28 | facename: -Misc-Fixed-Medium-R-Normal--10-100-75-75-C-60-ISO8859-1 29 | w x h: 6x10 30 | size: 256 31 | ascent: 8 32 | descent: 2 33 | first char: 0 (0x00) 34 | last char: 255 (0xff) 35 | default char: 0 (0x00) 36 | proportional: no 37 | Public domain terminal emulator font. Share and enjoy. 38 | */ 39 | 40 | /* Font character bitmap data. */ 41 | static const unsigned char _font_bits[][CHAR_HEIGHT] = 42 | { 43 | /* Character 0 (0x00): 44 | width 6 45 | +------+ 46 | | | 47 | |* * * | 48 | | | 49 | |* * | 50 | | | 51 | |* * | 52 | | | 53 | |* * * | 54 | | | 55 | | | 56 | +------+ */ 57 | 0x00, 58 | 0xa8, 59 | 0x00, 60 | 0x88, 61 | 0x00, 62 | 0x88, 63 | 0x00, 64 | 0xa8, 65 | 0x00, 66 | 0x00, 67 | 68 | /* Character 1 (0x01): 69 | width 6 70 | +------+ 71 | | | 72 | | | 73 | | * | 74 | | *** | 75 | |***** | 76 | | *** | 77 | | * | 78 | | | 79 | | | 80 | | | 81 | +------+ */ 82 | 0x00, 83 | 0x00, 84 | 0x20, 85 | 0x70, 86 | 0xf8, 87 | 0x70, 88 | 0x20, 89 | 0x00, 90 | 0x00, 91 | 0x00, 92 | 93 | /* Character 2 (0x02): 94 | width 6 95 | +------+ 96 | |* * * | 97 | | * * *| 98 | |* * * | 99 | | * * *| 100 | |* * * | 101 | | * * *| 102 | |* * * | 103 | | * * *| 104 | |* * * | 105 | | * * *| 106 | +------+ */ 107 | 0xa8, 108 | 0x54, 109 | 0xa8, 110 | 0x54, 111 | 0xa8, 112 | 0x54, 113 | 0xa8, 114 | 0x54, 115 | 0xa8, 116 | 0x54, 117 | 118 | /* Character 3 (0x03): 119 | width 6 120 | +------+ 121 | | | 122 | |* * | 123 | |* * | 124 | |**** | 125 | |* * | 126 | |* * | 127 | | **** | 128 | | * | 129 | | * | 130 | | * | 131 | +------+ */ 132 | 0x00, 133 | 0x90, 134 | 0x90, 135 | 0xf0, 136 | 0x90, 137 | 0x90, 138 | 0x78, 139 | 0x10, 140 | 0x10, 141 | 0x10, 142 | 143 | /* Character 4 (0x04): 144 | width 6 145 | +------+ 146 | | | 147 | |*** | 148 | |* | 149 | |** | 150 | |* | 151 | |* *** | 152 | | * | 153 | | ** | 154 | | * | 155 | | * | 156 | +------+ */ 157 | 0x00, 158 | 0xe0, 159 | 0x80, 160 | 0xc0, 161 | 0x80, 162 | 0xb8, 163 | 0x20, 164 | 0x30, 165 | 0x20, 166 | 0x20, 167 | 168 | /* Character 5 (0x05): 169 | width 6 170 | +------+ 171 | | | 172 | | *** | 173 | |* | 174 | |* | 175 | | *** | 176 | | *** | 177 | | * * | 178 | | *** | 179 | | * * | 180 | | * * | 181 | +------+ */ 182 | 0x00, 183 | 0x70, 184 | 0x80, 185 | 0x80, 186 | 0x70, 187 | 0x70, 188 | 0x48, 189 | 0x70, 190 | 0x48, 191 | 0x48, 192 | 193 | /* Character 6 (0x06): 194 | width 6 195 | +------+ 196 | | | 197 | |* | 198 | |* | 199 | |* | 200 | |**** | 201 | | **** | 202 | | * | 203 | | *** | 204 | | * | 205 | | * | 206 | +------+ */ 207 | 0x00, 208 | 0x80, 209 | 0x80, 210 | 0x80, 211 | 0xf0, 212 | 0x78, 213 | 0x40, 214 | 0x70, 215 | 0x40, 216 | 0x40, 217 | 218 | /* Character 7 (0x07): 219 | width 6 220 | +------+ 221 | | | 222 | | * | 223 | | * * | 224 | | * | 225 | | | 226 | | | 227 | | | 228 | | | 229 | | | 230 | | | 231 | +------+ */ 232 | 0x00, 233 | 0x20, 234 | 0x50, 235 | 0x20, 236 | 0x00, 237 | 0x00, 238 | 0x00, 239 | 0x00, 240 | 0x00, 241 | 0x00, 242 | 243 | /* Character 8 (0x08): 244 | width 6 245 | +------+ 246 | | | 247 | | | 248 | | * | 249 | | * | 250 | |***** | 251 | | * | 252 | | * | 253 | |***** | 254 | | | 255 | | | 256 | +------+ */ 257 | 0x00, 258 | 0x00, 259 | 0x20, 260 | 0x20, 261 | 0xf8, 262 | 0x20, 263 | 0x20, 264 | 0xf8, 265 | 0x00, 266 | 0x00, 267 | 268 | /* Character 9 (0x09): 269 | width 6 270 | +------+ 271 | | | 272 | |* * | 273 | |** * | 274 | |** * | 275 | |* ** | 276 | |* * | 277 | | * | 278 | | * | 279 | | * | 280 | | **** | 281 | +------+ */ 282 | 0x00, 283 | 0x90, 284 | 0xd0, 285 | 0xd0, 286 | 0xb0, 287 | 0x90, 288 | 0x40, 289 | 0x40, 290 | 0x40, 291 | 0x78, 292 | 293 | /* Character 10 (0x0a): 294 | width 6 295 | +------+ 296 | | | 297 | |* * | 298 | |* * | 299 | | ** | 300 | | * | 301 | | **** | 302 | | * | 303 | | * | 304 | | * | 305 | | * | 306 | +------+ */ 307 | 0x00, 308 | 0x90, 309 | 0x90, 310 | 0x60, 311 | 0x40, 312 | 0x78, 313 | 0x10, 314 | 0x10, 315 | 0x10, 316 | 0x10, 317 | 318 | /* Character 11 (0x0b): 319 | width 6 320 | +------+ 321 | | * | 322 | | * | 323 | | * | 324 | | * | 325 | | * | 326 | |*** | 327 | | | 328 | | | 329 | | | 330 | | | 331 | +------+ */ 332 | 0x20, 333 | 0x20, 334 | 0x20, 335 | 0x20, 336 | 0x20, 337 | 0xe0, 338 | 0x00, 339 | 0x00, 340 | 0x00, 341 | 0x00, 342 | 343 | /* Character 12 (0x0c): 344 | width 6 345 | +------+ 346 | | | 347 | | | 348 | | | 349 | | | 350 | | | 351 | |*** | 352 | | * | 353 | | * | 354 | | * | 355 | | * | 356 | +------+ */ 357 | 0x00, 358 | 0x00, 359 | 0x00, 360 | 0x00, 361 | 0x00, 362 | 0xe0, 363 | 0x20, 364 | 0x20, 365 | 0x20, 366 | 0x20, 367 | 368 | /* Character 13 (0x0d): 369 | width 6 370 | +------+ 371 | | | 372 | | | 373 | | | 374 | | | 375 | | | 376 | | ****| 377 | | * | 378 | | * | 379 | | * | 380 | | * | 381 | +------+ */ 382 | 0x00, 383 | 0x00, 384 | 0x00, 385 | 0x00, 386 | 0x00, 387 | 0x3c, 388 | 0x20, 389 | 0x20, 390 | 0x20, 391 | 0x20, 392 | 393 | /* Character 14 (0x0e): 394 | width 6 395 | +------+ 396 | | * | 397 | | * | 398 | | * | 399 | | * | 400 | | * | 401 | | ****| 402 | | | 403 | | | 404 | | | 405 | | | 406 | +------+ */ 407 | 0x20, 408 | 0x20, 409 | 0x20, 410 | 0x20, 411 | 0x20, 412 | 0x3c, 413 | 0x00, 414 | 0x00, 415 | 0x00, 416 | 0x00, 417 | 418 | /* Character 15 (0x0f): 419 | width 6 420 | +------+ 421 | | * | 422 | | * | 423 | | * | 424 | | * | 425 | | * | 426 | |******| 427 | | * | 428 | | * | 429 | | * | 430 | | * | 431 | +------+ */ 432 | 0x20, 433 | 0x20, 434 | 0x20, 435 | 0x20, 436 | 0x20, 437 | 0xfc, 438 | 0x20, 439 | 0x20, 440 | 0x20, 441 | 0x20, 442 | 443 | /* Character 16 (0x10): 444 | width 6 445 | +------+ 446 | |******| 447 | | | 448 | | | 449 | | | 450 | | | 451 | | | 452 | | | 453 | | | 454 | | | 455 | | | 456 | +------+ */ 457 | 0xfc, 458 | 0x00, 459 | 0x00, 460 | 0x00, 461 | 0x00, 462 | 0x00, 463 | 0x00, 464 | 0x00, 465 | 0x00, 466 | 0x00, 467 | 468 | /* Character 17 (0x11): 469 | width 6 470 | +------+ 471 | | | 472 | | | 473 | |******| 474 | | | 475 | | | 476 | | | 477 | | | 478 | | | 479 | | | 480 | | | 481 | +------+ */ 482 | 0x00, 483 | 0x00, 484 | 0xfc, 485 | 0x00, 486 | 0x00, 487 | 0x00, 488 | 0x00, 489 | 0x00, 490 | 0x00, 491 | 0x00, 492 | 493 | /* Character 18 (0x12): 494 | width 6 495 | +------+ 496 | | | 497 | | | 498 | | | 499 | | | 500 | | | 501 | |******| 502 | | | 503 | | | 504 | | | 505 | | | 506 | +------+ */ 507 | 0x00, 508 | 0x00, 509 | 0x00, 510 | 0x00, 511 | 0x00, 512 | 0xfc, 513 | 0x00, 514 | 0x00, 515 | 0x00, 516 | 0x00, 517 | 518 | /* Character 19 (0x13): 519 | width 6 520 | +------+ 521 | | | 522 | | | 523 | | | 524 | | | 525 | | | 526 | | | 527 | | | 528 | |******| 529 | | | 530 | | | 531 | +------+ */ 532 | 0x00, 533 | 0x00, 534 | 0x00, 535 | 0x00, 536 | 0x00, 537 | 0x00, 538 | 0x00, 539 | 0xfc, 540 | 0x00, 541 | 0x00, 542 | 543 | /* Character 20 (0x14): 544 | width 6 545 | +------+ 546 | | | 547 | | | 548 | | | 549 | | | 550 | | | 551 | | | 552 | | | 553 | | | 554 | | | 555 | |******| 556 | +------+ */ 557 | 0x00, 558 | 0x00, 559 | 0x00, 560 | 0x00, 561 | 0x00, 562 | 0x00, 563 | 0x00, 564 | 0x00, 565 | 0x00, 566 | 0xfc, 567 | 568 | /* Character 21 (0x15): 569 | width 6 570 | +------+ 571 | | * | 572 | | * | 573 | | * | 574 | | * | 575 | | * | 576 | | ****| 577 | | * | 578 | | * | 579 | | * | 580 | | * | 581 | +------+ */ 582 | 0x20, 583 | 0x20, 584 | 0x20, 585 | 0x20, 586 | 0x20, 587 | 0x3c, 588 | 0x20, 589 | 0x20, 590 | 0x20, 591 | 0x20, 592 | 593 | /* Character 22 (0x16): 594 | width 6 595 | +------+ 596 | | * | 597 | | * | 598 | | * | 599 | | * | 600 | | * | 601 | |*** | 602 | | * | 603 | | * | 604 | | * | 605 | | * | 606 | +------+ */ 607 | 0x20, 608 | 0x20, 609 | 0x20, 610 | 0x20, 611 | 0x20, 612 | 0xe0, 613 | 0x20, 614 | 0x20, 615 | 0x20, 616 | 0x20, 617 | 618 | /* Character 23 (0x17): 619 | width 6 620 | +------+ 621 | | * | 622 | | * | 623 | | * | 624 | | * | 625 | | * | 626 | |******| 627 | | | 628 | | | 629 | | | 630 | | | 631 | +------+ */ 632 | 0x20, 633 | 0x20, 634 | 0x20, 635 | 0x20, 636 | 0x20, 637 | 0xfc, 638 | 0x00, 639 | 0x00, 640 | 0x00, 641 | 0x00, 642 | 643 | /* Character 24 (0x18): 644 | width 6 645 | +------+ 646 | | | 647 | | | 648 | | | 649 | | | 650 | | | 651 | |******| 652 | | * | 653 | | * | 654 | | * | 655 | | * | 656 | +------+ */ 657 | 0x00, 658 | 0x00, 659 | 0x00, 660 | 0x00, 661 | 0x00, 662 | 0xfc, 663 | 0x20, 664 | 0x20, 665 | 0x20, 666 | 0x20, 667 | 668 | /* Character 25 (0x19): 669 | width 6 670 | +------+ 671 | | * | 672 | | * | 673 | | * | 674 | | * | 675 | | * | 676 | | * | 677 | | * | 678 | | * | 679 | | * | 680 | | * | 681 | +------+ */ 682 | 0x20, 683 | 0x20, 684 | 0x20, 685 | 0x20, 686 | 0x20, 687 | 0x20, 688 | 0x20, 689 | 0x20, 690 | 0x20, 691 | 0x20, 692 | 693 | /* Character 26 (0x1a): 694 | width 6 695 | +------+ 696 | | | 697 | | ** | 698 | | ** | 699 | |* | 700 | | ** | 701 | | ** | 702 | | | 703 | |***** | 704 | | | 705 | | | 706 | +------+ */ 707 | 0x00, 708 | 0x18, 709 | 0x60, 710 | 0x80, 711 | 0x60, 712 | 0x18, 713 | 0x00, 714 | 0xf8, 715 | 0x00, 716 | 0x00, 717 | 718 | /* Character 27 (0x1b): 719 | width 6 720 | +------+ 721 | | | 722 | |** | 723 | | ** | 724 | | * | 725 | | ** | 726 | |** | 727 | | | 728 | |***** | 729 | | | 730 | | | 731 | +------+ */ 732 | 0x00, 733 | 0xc0, 734 | 0x30, 735 | 0x08, 736 | 0x30, 737 | 0xc0, 738 | 0x00, 739 | 0xf8, 740 | 0x00, 741 | 0x00, 742 | 743 | /* Character 28 (0x1c): 744 | width 6 745 | +------+ 746 | | | 747 | | | 748 | | | 749 | |***** | 750 | | * * | 751 | | * * | 752 | | * * | 753 | | * * | 754 | | | 755 | | | 756 | +------+ */ 757 | 0x00, 758 | 0x00, 759 | 0x00, 760 | 0xf8, 761 | 0x50, 762 | 0x50, 763 | 0x50, 764 | 0x50, 765 | 0x00, 766 | 0x00, 767 | 768 | /* Character 29 (0x1d): 769 | width 6 770 | +------+ 771 | | | 772 | | * | 773 | | * | 774 | |***** | 775 | | * | 776 | |***** | 777 | | * | 778 | |* | 779 | | | 780 | | | 781 | +------+ */ 782 | 0x00, 783 | 0x08, 784 | 0x10, 785 | 0xf8, 786 | 0x20, 787 | 0xf8, 788 | 0x40, 789 | 0x80, 790 | 0x00, 791 | 0x00, 792 | 793 | /* Character 30 (0x1e): 794 | width 6 795 | +------+ 796 | | | 797 | | ** | 798 | | * * | 799 | | * | 800 | |*** | 801 | | * | 802 | | * * | 803 | |* ** | 804 | | | 805 | | | 806 | +------+ */ 807 | 0x00, 808 | 0x30, 809 | 0x48, 810 | 0x40, 811 | 0xe0, 812 | 0x40, 813 | 0x48, 814 | 0xb0, 815 | 0x00, 816 | 0x00, 817 | 818 | /* Character 31 (0x1f): 819 | width 6 820 | +------+ 821 | | | 822 | | | 823 | | | 824 | | | 825 | | * | 826 | | | 827 | | | 828 | | | 829 | | | 830 | | | 831 | +------+ */ 832 | 0x00, 833 | 0x00, 834 | 0x00, 835 | 0x00, 836 | 0x20, 837 | 0x00, 838 | 0x00, 839 | 0x00, 840 | 0x00, 841 | 0x00, 842 | 843 | /* Character 32 (0x20): 844 | width 6 845 | +------+ 846 | | | 847 | | | 848 | | | 849 | | | 850 | | | 851 | | | 852 | | | 853 | | | 854 | | | 855 | | | 856 | +------+ */ 857 | 0x00, 858 | 0x00, 859 | 0x00, 860 | 0x00, 861 | 0x00, 862 | 0x00, 863 | 0x00, 864 | 0x00, 865 | 0x00, 866 | 0x00, 867 | 868 | /* Character 33 (0x21): 869 | width 6 870 | +------+ 871 | | | 872 | | * | 873 | | * | 874 | | * | 875 | | * | 876 | | * | 877 | | | 878 | | * | 879 | | | 880 | | | 881 | +------+ */ 882 | 0x00, 883 | 0x20, 884 | 0x20, 885 | 0x20, 886 | 0x20, 887 | 0x20, 888 | 0x00, 889 | 0x20, 890 | 0x00, 891 | 0x00, 892 | 893 | /* Character 34 (0x22): 894 | width 6 895 | +------+ 896 | | | 897 | | * * | 898 | | * * | 899 | | * * | 900 | | | 901 | | | 902 | | | 903 | | | 904 | | | 905 | | | 906 | +------+ */ 907 | 0x00, 908 | 0x50, 909 | 0x50, 910 | 0x50, 911 | 0x00, 912 | 0x00, 913 | 0x00, 914 | 0x00, 915 | 0x00, 916 | 0x00, 917 | 918 | /* Character 35 (0x23): 919 | width 6 920 | +------+ 921 | | | 922 | | * * | 923 | | * * | 924 | |***** | 925 | | * * | 926 | |***** | 927 | | * * | 928 | | * * | 929 | | | 930 | | | 931 | +------+ */ 932 | 0x00, 933 | 0x50, 934 | 0x50, 935 | 0xf8, 936 | 0x50, 937 | 0xf8, 938 | 0x50, 939 | 0x50, 940 | 0x00, 941 | 0x00, 942 | 943 | /* Character 36 (0x24): 944 | width 6 945 | +------+ 946 | | | 947 | | * | 948 | | *** | 949 | |* * | 950 | | *** | 951 | | * * | 952 | | *** | 953 | | * | 954 | | | 955 | | | 956 | +------+ */ 957 | 0x00, 958 | 0x20, 959 | 0x70, 960 | 0xa0, 961 | 0x70, 962 | 0x28, 963 | 0x70, 964 | 0x20, 965 | 0x00, 966 | 0x00, 967 | 968 | /* Character 37 (0x25): 969 | width 6 970 | +------+ 971 | | | 972 | | * * | 973 | |* * * | 974 | | * * | 975 | | * | 976 | | * * | 977 | |* * * | 978 | |* * | 979 | | | 980 | | | 981 | +------+ */ 982 | 0x00, 983 | 0x48, 984 | 0xa8, 985 | 0x50, 986 | 0x20, 987 | 0x50, 988 | 0xa8, 989 | 0x90, 990 | 0x00, 991 | 0x00, 992 | 993 | /* Character 38 (0x26): 994 | width 6 995 | +------+ 996 | | | 997 | | * | 998 | |* * | 999 | |* * | 1000 | | * | 1001 | |* * * | 1002 | |* * | 1003 | | ** * | 1004 | | | 1005 | | | 1006 | +------+ */ 1007 | 0x00, 1008 | 0x40, 1009 | 0xa0, 1010 | 0xa0, 1011 | 0x40, 1012 | 0xa8, 1013 | 0x90, 1014 | 0x68, 1015 | 0x00, 1016 | 0x00, 1017 | 1018 | /* Character 39 (0x27): 1019 | width 6 1020 | +------+ 1021 | | | 1022 | | * | 1023 | | * | 1024 | | * | 1025 | | | 1026 | | | 1027 | | | 1028 | | | 1029 | | | 1030 | | | 1031 | +------+ */ 1032 | 0x00, 1033 | 0x20, 1034 | 0x20, 1035 | 0x20, 1036 | 0x00, 1037 | 0x00, 1038 | 0x00, 1039 | 0x00, 1040 | 0x00, 1041 | 0x00, 1042 | 1043 | /* Character 40 (0x28): 1044 | width 6 1045 | +------+ 1046 | | | 1047 | | * | 1048 | | * | 1049 | | * | 1050 | | * | 1051 | | * | 1052 | | * | 1053 | | * | 1054 | | | 1055 | | | 1056 | +------+ */ 1057 | 0x00, 1058 | 0x10, 1059 | 0x20, 1060 | 0x40, 1061 | 0x40, 1062 | 0x40, 1063 | 0x20, 1064 | 0x10, 1065 | 0x00, 1066 | 0x00, 1067 | 1068 | /* Character 41 (0x29): 1069 | width 6 1070 | +------+ 1071 | | | 1072 | | * | 1073 | | * | 1074 | | * | 1075 | | * | 1076 | | * | 1077 | | * | 1078 | | * | 1079 | | | 1080 | | | 1081 | +------+ */ 1082 | 0x00, 1083 | 0x40, 1084 | 0x20, 1085 | 0x10, 1086 | 0x10, 1087 | 0x10, 1088 | 0x20, 1089 | 0x40, 1090 | 0x00, 1091 | 0x00, 1092 | 1093 | /* Character 42 (0x2a): 1094 | width 6 1095 | +------+ 1096 | | | 1097 | | | 1098 | |* * | 1099 | | * * | 1100 | |***** | 1101 | | * * | 1102 | |* * | 1103 | | | 1104 | | | 1105 | | | 1106 | +------+ */ 1107 | 0x00, 1108 | 0x00, 1109 | 0x88, 1110 | 0x50, 1111 | 0xf8, 1112 | 0x50, 1113 | 0x88, 1114 | 0x00, 1115 | 0x00, 1116 | 0x00, 1117 | 1118 | /* Character 43 (0x2b): 1119 | width 6 1120 | +------+ 1121 | | | 1122 | | | 1123 | | * | 1124 | | * | 1125 | |***** | 1126 | | * | 1127 | | * | 1128 | | | 1129 | | | 1130 | | | 1131 | +------+ */ 1132 | 0x00, 1133 | 0x00, 1134 | 0x20, 1135 | 0x20, 1136 | 0xf8, 1137 | 0x20, 1138 | 0x20, 1139 | 0x00, 1140 | 0x00, 1141 | 0x00, 1142 | 1143 | /* Character 44 (0x2c): 1144 | width 6 1145 | +------+ 1146 | | | 1147 | | | 1148 | | | 1149 | | | 1150 | | | 1151 | | | 1152 | | ** | 1153 | | * | 1154 | | * | 1155 | | | 1156 | +------+ */ 1157 | 0x00, 1158 | 0x00, 1159 | 0x00, 1160 | 0x00, 1161 | 0x00, 1162 | 0x00, 1163 | 0x30, 1164 | 0x20, 1165 | 0x40, 1166 | 0x00, 1167 | 1168 | /* Character 45 (0x2d): 1169 | width 6 1170 | +------+ 1171 | | | 1172 | | | 1173 | | | 1174 | | | 1175 | |***** | 1176 | | | 1177 | | | 1178 | | | 1179 | | | 1180 | | | 1181 | +------+ */ 1182 | 0x00, 1183 | 0x00, 1184 | 0x00, 1185 | 0x00, 1186 | 0xf8, 1187 | 0x00, 1188 | 0x00, 1189 | 0x00, 1190 | 0x00, 1191 | 0x00, 1192 | 1193 | /* Character 46 (0x2e): 1194 | width 6 1195 | +------+ 1196 | | | 1197 | | | 1198 | | | 1199 | | | 1200 | | | 1201 | | | 1202 | | * | 1203 | | *** | 1204 | | * | 1205 | | | 1206 | +------+ */ 1207 | 0x00, 1208 | 0x00, 1209 | 0x00, 1210 | 0x00, 1211 | 0x00, 1212 | 0x00, 1213 | 0x20, 1214 | 0x70, 1215 | 0x20, 1216 | 0x00, 1217 | 1218 | /* Character 47 (0x2f): 1219 | width 6 1220 | +------+ 1221 | | | 1222 | | * | 1223 | | * | 1224 | | * | 1225 | | * | 1226 | | * | 1227 | |* | 1228 | |* | 1229 | | | 1230 | | | 1231 | +------+ */ 1232 | 0x00, 1233 | 0x08, 1234 | 0x08, 1235 | 0x10, 1236 | 0x20, 1237 | 0x40, 1238 | 0x80, 1239 | 0x80, 1240 | 0x00, 1241 | 0x00, 1242 | 1243 | /* Character 48 (0x30): 1244 | width 6 1245 | +------+ 1246 | | | 1247 | | * | 1248 | | * * | 1249 | |* * | 1250 | |* * | 1251 | |* * | 1252 | | * * | 1253 | | * | 1254 | | | 1255 | | | 1256 | +------+ */ 1257 | 0x00, 1258 | 0x20, 1259 | 0x50, 1260 | 0x88, 1261 | 0x88, 1262 | 0x88, 1263 | 0x50, 1264 | 0x20, 1265 | 0x00, 1266 | 0x00, 1267 | 1268 | /* Character 49 (0x31): 1269 | width 6 1270 | +------+ 1271 | | | 1272 | | * | 1273 | | ** | 1274 | |* * | 1275 | | * | 1276 | | * | 1277 | | * | 1278 | |***** | 1279 | | | 1280 | | | 1281 | +------+ */ 1282 | 0x00, 1283 | 0x20, 1284 | 0x60, 1285 | 0xa0, 1286 | 0x20, 1287 | 0x20, 1288 | 0x20, 1289 | 0xf8, 1290 | 0x00, 1291 | 0x00, 1292 | 1293 | /* Character 50 (0x32): 1294 | width 6 1295 | +------+ 1296 | | | 1297 | | *** | 1298 | |* * | 1299 | | * | 1300 | | ** | 1301 | | * | 1302 | |* | 1303 | |***** | 1304 | | | 1305 | | | 1306 | +------+ */ 1307 | 0x00, 1308 | 0x70, 1309 | 0x88, 1310 | 0x08, 1311 | 0x30, 1312 | 0x40, 1313 | 0x80, 1314 | 0xf8, 1315 | 0x00, 1316 | 0x00, 1317 | 1318 | /* Character 51 (0x33): 1319 | width 6 1320 | +------+ 1321 | | | 1322 | |***** | 1323 | | * | 1324 | | * | 1325 | | ** | 1326 | | * | 1327 | |* * | 1328 | | *** | 1329 | | | 1330 | | | 1331 | +------+ */ 1332 | 0x00, 1333 | 0xf8, 1334 | 0x08, 1335 | 0x10, 1336 | 0x30, 1337 | 0x08, 1338 | 0x88, 1339 | 0x70, 1340 | 0x00, 1341 | 0x00, 1342 | 1343 | /* Character 52 (0x34): 1344 | width 6 1345 | +------+ 1346 | | | 1347 | | * | 1348 | | ** | 1349 | | * * | 1350 | |* * | 1351 | |***** | 1352 | | * | 1353 | | * | 1354 | | | 1355 | | | 1356 | +------+ */ 1357 | 0x00, 1358 | 0x10, 1359 | 0x30, 1360 | 0x50, 1361 | 0x90, 1362 | 0xf8, 1363 | 0x10, 1364 | 0x10, 1365 | 0x00, 1366 | 0x00, 1367 | 1368 | /* Character 53 (0x35): 1369 | width 6 1370 | +------+ 1371 | | | 1372 | |***** | 1373 | |* | 1374 | |* ** | 1375 | |** * | 1376 | | * | 1377 | |* * | 1378 | | *** | 1379 | | | 1380 | | | 1381 | +------+ */ 1382 | 0x00, 1383 | 0xf8, 1384 | 0x80, 1385 | 0xb0, 1386 | 0xc8, 1387 | 0x08, 1388 | 0x88, 1389 | 0x70, 1390 | 0x00, 1391 | 0x00, 1392 | 1393 | /* Character 54 (0x36): 1394 | width 6 1395 | +------+ 1396 | | | 1397 | | ** | 1398 | | * | 1399 | |* | 1400 | |* ** | 1401 | |** * | 1402 | |* * | 1403 | | *** | 1404 | | | 1405 | | | 1406 | +------+ */ 1407 | 0x00, 1408 | 0x30, 1409 | 0x40, 1410 | 0x80, 1411 | 0xb0, 1412 | 0xc8, 1413 | 0x88, 1414 | 0x70, 1415 | 0x00, 1416 | 0x00, 1417 | 1418 | /* Character 55 (0x37): 1419 | width 6 1420 | +------+ 1421 | | | 1422 | |***** | 1423 | | * | 1424 | | * | 1425 | | * | 1426 | | * | 1427 | | * | 1428 | | * | 1429 | | | 1430 | | | 1431 | +------+ */ 1432 | 0x00, 1433 | 0xf8, 1434 | 0x08, 1435 | 0x10, 1436 | 0x10, 1437 | 0x20, 1438 | 0x40, 1439 | 0x40, 1440 | 0x00, 1441 | 0x00, 1442 | 1443 | /* Character 56 (0x38): 1444 | width 6 1445 | +------+ 1446 | | | 1447 | | *** | 1448 | |* * | 1449 | |* * | 1450 | | *** | 1451 | |* * | 1452 | |* * | 1453 | | *** | 1454 | | | 1455 | | | 1456 | +------+ */ 1457 | 0x00, 1458 | 0x70, 1459 | 0x88, 1460 | 0x88, 1461 | 0x70, 1462 | 0x88, 1463 | 0x88, 1464 | 0x70, 1465 | 0x00, 1466 | 0x00, 1467 | 1468 | /* Character 57 (0x39): 1469 | width 6 1470 | +------+ 1471 | | | 1472 | | *** | 1473 | |* * | 1474 | |* ** | 1475 | | ** * | 1476 | | * | 1477 | | * | 1478 | | ** | 1479 | | | 1480 | | | 1481 | +------+ */ 1482 | 0x00, 1483 | 0x70, 1484 | 0x88, 1485 | 0x98, 1486 | 0x68, 1487 | 0x08, 1488 | 0x10, 1489 | 0x60, 1490 | 0x00, 1491 | 0x00, 1492 | 1493 | /* Character 58 (0x3a): 1494 | width 6 1495 | +------+ 1496 | | | 1497 | | | 1498 | | * | 1499 | | *** | 1500 | | * | 1501 | | | 1502 | | * | 1503 | | *** | 1504 | | * | 1505 | | | 1506 | +------+ */ 1507 | 0x00, 1508 | 0x00, 1509 | 0x20, 1510 | 0x70, 1511 | 0x20, 1512 | 0x00, 1513 | 0x20, 1514 | 0x70, 1515 | 0x20, 1516 | 0x00, 1517 | 1518 | /* Character 59 (0x3b): 1519 | width 6 1520 | +------+ 1521 | | | 1522 | | | 1523 | | * | 1524 | | *** | 1525 | | * | 1526 | | | 1527 | | ** | 1528 | | * | 1529 | | * | 1530 | | | 1531 | +------+ */ 1532 | 0x00, 1533 | 0x00, 1534 | 0x20, 1535 | 0x70, 1536 | 0x20, 1537 | 0x00, 1538 | 0x30, 1539 | 0x20, 1540 | 0x40, 1541 | 0x00, 1542 | 1543 | /* Character 60 (0x3c): 1544 | width 6 1545 | +------+ 1546 | | | 1547 | | * | 1548 | | * | 1549 | | * | 1550 | | * | 1551 | | * | 1552 | | * | 1553 | | * | 1554 | | | 1555 | | | 1556 | +------+ */ 1557 | 0x00, 1558 | 0x08, 1559 | 0x10, 1560 | 0x20, 1561 | 0x40, 1562 | 0x20, 1563 | 0x10, 1564 | 0x08, 1565 | 0x00, 1566 | 0x00, 1567 | 1568 | /* Character 61 (0x3d): 1569 | width 6 1570 | +------+ 1571 | | | 1572 | | | 1573 | | | 1574 | |***** | 1575 | | | 1576 | |***** | 1577 | | | 1578 | | | 1579 | | | 1580 | | | 1581 | +------+ */ 1582 | 0x00, 1583 | 0x00, 1584 | 0x00, 1585 | 0xf8, 1586 | 0x00, 1587 | 0xf8, 1588 | 0x00, 1589 | 0x00, 1590 | 0x00, 1591 | 0x00, 1592 | 1593 | /* Character 62 (0x3e): 1594 | width 6 1595 | +------+ 1596 | | | 1597 | | * | 1598 | | * | 1599 | | * | 1600 | | * | 1601 | | * | 1602 | | * | 1603 | | * | 1604 | | | 1605 | | | 1606 | +------+ */ 1607 | 0x00, 1608 | 0x40, 1609 | 0x20, 1610 | 0x10, 1611 | 0x08, 1612 | 0x10, 1613 | 0x20, 1614 | 0x40, 1615 | 0x00, 1616 | 0x00, 1617 | 1618 | /* Character 63 (0x3f): 1619 | width 6 1620 | +------+ 1621 | | | 1622 | | *** | 1623 | |* * | 1624 | | * | 1625 | | * | 1626 | | * | 1627 | | | 1628 | | * | 1629 | | | 1630 | | | 1631 | +------+ */ 1632 | 0x00, 1633 | 0x70, 1634 | 0x88, 1635 | 0x10, 1636 | 0x20, 1637 | 0x20, 1638 | 0x00, 1639 | 0x20, 1640 | 0x00, 1641 | 0x00, 1642 | 1643 | /* Character 64 (0x40): 1644 | width 6 1645 | +------+ 1646 | | | 1647 | | *** | 1648 | |* * | 1649 | |* ** | 1650 | |* * * | 1651 | |* ** | 1652 | |* | 1653 | | *** | 1654 | | | 1655 | | | 1656 | +------+ */ 1657 | 0x00, 1658 | 0x70, 1659 | 0x88, 1660 | 0x98, 1661 | 0xa8, 1662 | 0xb0, 1663 | 0x80, 1664 | 0x70, 1665 | 0x00, 1666 | 0x00, 1667 | 1668 | /* Character 65 (0x41): 1669 | width 6 1670 | +------+ 1671 | | | 1672 | | * | 1673 | | * * | 1674 | |* * | 1675 | |* * | 1676 | |***** | 1677 | |* * | 1678 | |* * | 1679 | | | 1680 | | | 1681 | +------+ */ 1682 | 0x00, 1683 | 0x20, 1684 | 0x50, 1685 | 0x88, 1686 | 0x88, 1687 | 0xf8, 1688 | 0x88, 1689 | 0x88, 1690 | 0x00, 1691 | 0x00, 1692 | 1693 | /* Character 66 (0x42): 1694 | width 6 1695 | +------+ 1696 | | | 1697 | |**** | 1698 | | * * | 1699 | | * * | 1700 | | *** | 1701 | | * * | 1702 | | * * | 1703 | |**** | 1704 | | | 1705 | | | 1706 | +------+ */ 1707 | 0x00, 1708 | 0xf0, 1709 | 0x48, 1710 | 0x48, 1711 | 0x70, 1712 | 0x48, 1713 | 0x48, 1714 | 0xf0, 1715 | 0x00, 1716 | 0x00, 1717 | 1718 | /* Character 67 (0x43): 1719 | width 6 1720 | +------+ 1721 | | | 1722 | | *** | 1723 | |* * | 1724 | |* | 1725 | |* | 1726 | |* | 1727 | |* * | 1728 | | *** | 1729 | | | 1730 | | | 1731 | +------+ */ 1732 | 0x00, 1733 | 0x70, 1734 | 0x88, 1735 | 0x80, 1736 | 0x80, 1737 | 0x80, 1738 | 0x88, 1739 | 0x70, 1740 | 0x00, 1741 | 0x00, 1742 | 1743 | /* Character 68 (0x44): 1744 | width 6 1745 | +------+ 1746 | | | 1747 | |**** | 1748 | | * * | 1749 | | * * | 1750 | | * * | 1751 | | * * | 1752 | | * * | 1753 | |**** | 1754 | | | 1755 | | | 1756 | +------+ */ 1757 | 0x00, 1758 | 0xf0, 1759 | 0x48, 1760 | 0x48, 1761 | 0x48, 1762 | 0x48, 1763 | 0x48, 1764 | 0xf0, 1765 | 0x00, 1766 | 0x00, 1767 | 1768 | /* Character 69 (0x45): 1769 | width 6 1770 | +------+ 1771 | | | 1772 | |***** | 1773 | |* | 1774 | |* | 1775 | |**** | 1776 | |* | 1777 | |* | 1778 | |***** | 1779 | | | 1780 | | | 1781 | +------+ */ 1782 | 0x00, 1783 | 0xf8, 1784 | 0x80, 1785 | 0x80, 1786 | 0xf0, 1787 | 0x80, 1788 | 0x80, 1789 | 0xf8, 1790 | 0x00, 1791 | 0x00, 1792 | 1793 | /* Character 70 (0x46): 1794 | width 6 1795 | +------+ 1796 | | | 1797 | |***** | 1798 | |* | 1799 | |* | 1800 | |**** | 1801 | |* | 1802 | |* | 1803 | |* | 1804 | | | 1805 | | | 1806 | +------+ */ 1807 | 0x00, 1808 | 0xf8, 1809 | 0x80, 1810 | 0x80, 1811 | 0xf0, 1812 | 0x80, 1813 | 0x80, 1814 | 0x80, 1815 | 0x00, 1816 | 0x00, 1817 | 1818 | /* Character 71 (0x47): 1819 | width 6 1820 | +------+ 1821 | | | 1822 | | *** | 1823 | |* * | 1824 | |* | 1825 | |* | 1826 | |* ** | 1827 | |* * | 1828 | | *** | 1829 | | | 1830 | | | 1831 | +------+ */ 1832 | 0x00, 1833 | 0x70, 1834 | 0x88, 1835 | 0x80, 1836 | 0x80, 1837 | 0x98, 1838 | 0x88, 1839 | 0x70, 1840 | 0x00, 1841 | 0x00, 1842 | 1843 | /* Character 72 (0x48): 1844 | width 6 1845 | +------+ 1846 | | | 1847 | |* * | 1848 | |* * | 1849 | |* * | 1850 | |***** | 1851 | |* * | 1852 | |* * | 1853 | |* * | 1854 | | | 1855 | | | 1856 | +------+ */ 1857 | 0x00, 1858 | 0x88, 1859 | 0x88, 1860 | 0x88, 1861 | 0xf8, 1862 | 0x88, 1863 | 0x88, 1864 | 0x88, 1865 | 0x00, 1866 | 0x00, 1867 | 1868 | /* Character 73 (0x49): 1869 | width 6 1870 | +------+ 1871 | | | 1872 | | *** | 1873 | | * | 1874 | | * | 1875 | | * | 1876 | | * | 1877 | | * | 1878 | | *** | 1879 | | | 1880 | | | 1881 | +------+ */ 1882 | 0x00, 1883 | 0x70, 1884 | 0x20, 1885 | 0x20, 1886 | 0x20, 1887 | 0x20, 1888 | 0x20, 1889 | 0x70, 1890 | 0x00, 1891 | 0x00, 1892 | 1893 | /* Character 74 (0x4a): 1894 | width 6 1895 | +------+ 1896 | | | 1897 | | *** | 1898 | | * | 1899 | | * | 1900 | | * | 1901 | | * | 1902 | |* * | 1903 | | ** | 1904 | | | 1905 | | | 1906 | +------+ */ 1907 | 0x00, 1908 | 0x38, 1909 | 0x10, 1910 | 0x10, 1911 | 0x10, 1912 | 0x10, 1913 | 0x90, 1914 | 0x60, 1915 | 0x00, 1916 | 0x00, 1917 | 1918 | /* Character 75 (0x4b): 1919 | width 6 1920 | +------+ 1921 | | | 1922 | |* * | 1923 | |* * | 1924 | |* * | 1925 | |** | 1926 | |* * | 1927 | |* * | 1928 | |* * | 1929 | | | 1930 | | | 1931 | +------+ */ 1932 | 0x00, 1933 | 0x88, 1934 | 0x90, 1935 | 0xa0, 1936 | 0xc0, 1937 | 0xa0, 1938 | 0x90, 1939 | 0x88, 1940 | 0x00, 1941 | 0x00, 1942 | 1943 | /* Character 76 (0x4c): 1944 | width 6 1945 | +------+ 1946 | | | 1947 | |* | 1948 | |* | 1949 | |* | 1950 | |* | 1951 | |* | 1952 | |* | 1953 | |***** | 1954 | | | 1955 | | | 1956 | +------+ */ 1957 | 0x00, 1958 | 0x80, 1959 | 0x80, 1960 | 0x80, 1961 | 0x80, 1962 | 0x80, 1963 | 0x80, 1964 | 0xf8, 1965 | 0x00, 1966 | 0x00, 1967 | 1968 | /* Character 77 (0x4d): 1969 | width 6 1970 | +------+ 1971 | | | 1972 | |* * | 1973 | |* * | 1974 | |** ** | 1975 | |* * * | 1976 | |* * | 1977 | |* * | 1978 | |* * | 1979 | | | 1980 | | | 1981 | +------+ */ 1982 | 0x00, 1983 | 0x88, 1984 | 0x88, 1985 | 0xd8, 1986 | 0xa8, 1987 | 0x88, 1988 | 0x88, 1989 | 0x88, 1990 | 0x00, 1991 | 0x00, 1992 | 1993 | /* Character 78 (0x4e): 1994 | width 6 1995 | +------+ 1996 | | | 1997 | |* * | 1998 | |* * | 1999 | |** * | 2000 | |* * * | 2001 | |* ** | 2002 | |* * | 2003 | |* * | 2004 | | | 2005 | | | 2006 | +------+ */ 2007 | 0x00, 2008 | 0x88, 2009 | 0x88, 2010 | 0xc8, 2011 | 0xa8, 2012 | 0x98, 2013 | 0x88, 2014 | 0x88, 2015 | 0x00, 2016 | 0x00, 2017 | 2018 | /* Character 79 (0x4f): 2019 | width 6 2020 | +------+ 2021 | | | 2022 | | *** | 2023 | |* * | 2024 | |* * | 2025 | |* * | 2026 | |* * | 2027 | |* * | 2028 | | *** | 2029 | | | 2030 | | | 2031 | +------+ */ 2032 | 0x00, 2033 | 0x70, 2034 | 0x88, 2035 | 0x88, 2036 | 0x88, 2037 | 0x88, 2038 | 0x88, 2039 | 0x70, 2040 | 0x00, 2041 | 0x00, 2042 | 2043 | /* Character 80 (0x50): 2044 | width 6 2045 | +------+ 2046 | | | 2047 | |**** | 2048 | |* * | 2049 | |* * | 2050 | |**** | 2051 | |* | 2052 | |* | 2053 | |* | 2054 | | | 2055 | | | 2056 | +------+ */ 2057 | 0x00, 2058 | 0xf0, 2059 | 0x88, 2060 | 0x88, 2061 | 0xf0, 2062 | 0x80, 2063 | 0x80, 2064 | 0x80, 2065 | 0x00, 2066 | 0x00, 2067 | 2068 | /* Character 81 (0x51): 2069 | width 6 2070 | +------+ 2071 | | | 2072 | | *** | 2073 | |* * | 2074 | |* * | 2075 | |* * | 2076 | |* * | 2077 | |* * * | 2078 | | *** | 2079 | | * | 2080 | | | 2081 | +------+ */ 2082 | 0x00, 2083 | 0x70, 2084 | 0x88, 2085 | 0x88, 2086 | 0x88, 2087 | 0x88, 2088 | 0xa8, 2089 | 0x70, 2090 | 0x08, 2091 | 0x00, 2092 | 2093 | /* Character 82 (0x52): 2094 | width 6 2095 | +------+ 2096 | | | 2097 | |**** | 2098 | |* * | 2099 | |* * | 2100 | |**** | 2101 | |* * | 2102 | |* * | 2103 | |* * | 2104 | | | 2105 | | | 2106 | +------+ */ 2107 | 0x00, 2108 | 0xf0, 2109 | 0x88, 2110 | 0x88, 2111 | 0xf0, 2112 | 0xa0, 2113 | 0x90, 2114 | 0x88, 2115 | 0x00, 2116 | 0x00, 2117 | 2118 | /* Character 83 (0x53): 2119 | width 6 2120 | +------+ 2121 | | | 2122 | | *** | 2123 | |* * | 2124 | |* | 2125 | | *** | 2126 | | * | 2127 | |* * | 2128 | | *** | 2129 | | | 2130 | | | 2131 | +------+ */ 2132 | 0x00, 2133 | 0x70, 2134 | 0x88, 2135 | 0x80, 2136 | 0x70, 2137 | 0x08, 2138 | 0x88, 2139 | 0x70, 2140 | 0x00, 2141 | 0x00, 2142 | 2143 | /* Character 84 (0x54): 2144 | width 6 2145 | +------+ 2146 | | | 2147 | |***** | 2148 | | * | 2149 | | * | 2150 | | * | 2151 | | * | 2152 | | * | 2153 | | * | 2154 | | | 2155 | | | 2156 | +------+ */ 2157 | 0x00, 2158 | 0xf8, 2159 | 0x20, 2160 | 0x20, 2161 | 0x20, 2162 | 0x20, 2163 | 0x20, 2164 | 0x20, 2165 | 0x00, 2166 | 0x00, 2167 | 2168 | /* Character 85 (0x55): 2169 | width 6 2170 | +------+ 2171 | | | 2172 | |* * | 2173 | |* * | 2174 | |* * | 2175 | |* * | 2176 | |* * | 2177 | |* * | 2178 | | *** | 2179 | | | 2180 | | | 2181 | +------+ */ 2182 | 0x00, 2183 | 0x88, 2184 | 0x88, 2185 | 0x88, 2186 | 0x88, 2187 | 0x88, 2188 | 0x88, 2189 | 0x70, 2190 | 0x00, 2191 | 0x00, 2192 | 2193 | /* Character 86 (0x56): 2194 | width 6 2195 | +------+ 2196 | | | 2197 | |* * | 2198 | |* * | 2199 | |* * | 2200 | | * * | 2201 | | * * | 2202 | | * * | 2203 | | * | 2204 | | | 2205 | | | 2206 | +------+ */ 2207 | 0x00, 2208 | 0x88, 2209 | 0x88, 2210 | 0x88, 2211 | 0x50, 2212 | 0x50, 2213 | 0x50, 2214 | 0x20, 2215 | 0x00, 2216 | 0x00, 2217 | 2218 | /* Character 87 (0x57): 2219 | width 6 2220 | +------+ 2221 | | | 2222 | |* * | 2223 | |* * | 2224 | |* * | 2225 | |* * * | 2226 | |* * * | 2227 | |** ** | 2228 | |* * | 2229 | | | 2230 | | | 2231 | +------+ */ 2232 | 0x00, 2233 | 0x88, 2234 | 0x88, 2235 | 0x88, 2236 | 0xa8, 2237 | 0xa8, 2238 | 0xd8, 2239 | 0x88, 2240 | 0x00, 2241 | 0x00, 2242 | 2243 | /* Character 88 (0x58): 2244 | width 6 2245 | +------+ 2246 | | | 2247 | |* * | 2248 | |* * | 2249 | | * * | 2250 | | * | 2251 | | * * | 2252 | |* * | 2253 | |* * | 2254 | | | 2255 | | | 2256 | +------+ */ 2257 | 0x00, 2258 | 0x88, 2259 | 0x88, 2260 | 0x50, 2261 | 0x20, 2262 | 0x50, 2263 | 0x88, 2264 | 0x88, 2265 | 0x00, 2266 | 0x00, 2267 | 2268 | /* Character 89 (0x59): 2269 | width 6 2270 | +------+ 2271 | | | 2272 | |* * | 2273 | |* * | 2274 | | * * | 2275 | | * | 2276 | | * | 2277 | | * | 2278 | | * | 2279 | | | 2280 | | | 2281 | +------+ */ 2282 | 0x00, 2283 | 0x88, 2284 | 0x88, 2285 | 0x50, 2286 | 0x20, 2287 | 0x20, 2288 | 0x20, 2289 | 0x20, 2290 | 0x00, 2291 | 0x00, 2292 | 2293 | /* Character 90 (0x5a): 2294 | width 6 2295 | +------+ 2296 | | | 2297 | |***** | 2298 | | * | 2299 | | * | 2300 | | * | 2301 | | * | 2302 | |* | 2303 | |***** | 2304 | | | 2305 | | | 2306 | +------+ */ 2307 | 0x00, 2308 | 0xf8, 2309 | 0x08, 2310 | 0x10, 2311 | 0x20, 2312 | 0x40, 2313 | 0x80, 2314 | 0xf8, 2315 | 0x00, 2316 | 0x00, 2317 | 2318 | /* Character 91 (0x5b): 2319 | width 6 2320 | +------+ 2321 | | | 2322 | | *** | 2323 | | * | 2324 | | * | 2325 | | * | 2326 | | * | 2327 | | * | 2328 | | *** | 2329 | | | 2330 | | | 2331 | +------+ */ 2332 | 0x00, 2333 | 0x70, 2334 | 0x40, 2335 | 0x40, 2336 | 0x40, 2337 | 0x40, 2338 | 0x40, 2339 | 0x70, 2340 | 0x00, 2341 | 0x00, 2342 | 2343 | /* Character 92 (0x5c): 2344 | width 6 2345 | +------+ 2346 | | | 2347 | |* | 2348 | |* | 2349 | | * | 2350 | | * | 2351 | | * | 2352 | | * | 2353 | | * | 2354 | | | 2355 | | | 2356 | +------+ */ 2357 | 0x00, 2358 | 0x80, 2359 | 0x80, 2360 | 0x40, 2361 | 0x20, 2362 | 0x10, 2363 | 0x08, 2364 | 0x08, 2365 | 0x00, 2366 | 0x00, 2367 | 2368 | /* Character 93 (0x5d): 2369 | width 6 2370 | +------+ 2371 | | | 2372 | | *** | 2373 | | * | 2374 | | * | 2375 | | * | 2376 | | * | 2377 | | * | 2378 | | *** | 2379 | | | 2380 | | | 2381 | +------+ */ 2382 | 0x00, 2383 | 0x70, 2384 | 0x10, 2385 | 0x10, 2386 | 0x10, 2387 | 0x10, 2388 | 0x10, 2389 | 0x70, 2390 | 0x00, 2391 | 0x00, 2392 | 2393 | /* Character 94 (0x5e): 2394 | width 6 2395 | +------+ 2396 | | | 2397 | | * | 2398 | | * * | 2399 | |* * | 2400 | | | 2401 | | | 2402 | | | 2403 | | | 2404 | | | 2405 | | | 2406 | +------+ */ 2407 | 0x00, 2408 | 0x20, 2409 | 0x50, 2410 | 0x88, 2411 | 0x00, 2412 | 0x00, 2413 | 0x00, 2414 | 0x00, 2415 | 0x00, 2416 | 0x00, 2417 | 2418 | /* Character 95 (0x5f): 2419 | width 6 2420 | +------+ 2421 | | | 2422 | | | 2423 | | | 2424 | | | 2425 | | | 2426 | | | 2427 | | | 2428 | | | 2429 | |***** | 2430 | | | 2431 | +------+ */ 2432 | 0x00, 2433 | 0x00, 2434 | 0x00, 2435 | 0x00, 2436 | 0x00, 2437 | 0x00, 2438 | 0x00, 2439 | 0x00, 2440 | 0xf8, 2441 | 0x00, 2442 | 2443 | /* Character 96 (0x60): 2444 | width 6 2445 | +------+ 2446 | | * | 2447 | | * | 2448 | | | 2449 | | | 2450 | | | 2451 | | | 2452 | | | 2453 | | | 2454 | | | 2455 | | | 2456 | +------+ */ 2457 | 0x20, 2458 | 0x10, 2459 | 0x00, 2460 | 0x00, 2461 | 0x00, 2462 | 0x00, 2463 | 0x00, 2464 | 0x00, 2465 | 0x00, 2466 | 0x00, 2467 | 2468 | /* Character 97 (0x61): 2469 | width 6 2470 | +------+ 2471 | | | 2472 | | | 2473 | | | 2474 | | *** | 2475 | | * | 2476 | | **** | 2477 | |* * | 2478 | | **** | 2479 | | | 2480 | | | 2481 | +------+ */ 2482 | 0x00, 2483 | 0x00, 2484 | 0x00, 2485 | 0x70, 2486 | 0x08, 2487 | 0x78, 2488 | 0x88, 2489 | 0x78, 2490 | 0x00, 2491 | 0x00, 2492 | 2493 | /* Character 98 (0x62): 2494 | width 6 2495 | +------+ 2496 | | | 2497 | |* | 2498 | |* | 2499 | |* ** | 2500 | |** * | 2501 | |* * | 2502 | |** * | 2503 | |* ** | 2504 | | | 2505 | | | 2506 | +------+ */ 2507 | 0x00, 2508 | 0x80, 2509 | 0x80, 2510 | 0xb0, 2511 | 0xc8, 2512 | 0x88, 2513 | 0xc8, 2514 | 0xb0, 2515 | 0x00, 2516 | 0x00, 2517 | 2518 | /* Character 99 (0x63): 2519 | width 6 2520 | +------+ 2521 | | | 2522 | | | 2523 | | | 2524 | | *** | 2525 | |* * | 2526 | |* | 2527 | |* * | 2528 | | *** | 2529 | | | 2530 | | | 2531 | +------+ */ 2532 | 0x00, 2533 | 0x00, 2534 | 0x00, 2535 | 0x70, 2536 | 0x88, 2537 | 0x80, 2538 | 0x88, 2539 | 0x70, 2540 | 0x00, 2541 | 0x00, 2542 | 2543 | /* Character 100 (0x64): 2544 | width 6 2545 | +------+ 2546 | | | 2547 | | * | 2548 | | * | 2549 | | ** * | 2550 | |* ** | 2551 | |* * | 2552 | |* ** | 2553 | | ** * | 2554 | | | 2555 | | | 2556 | +------+ */ 2557 | 0x00, 2558 | 0x08, 2559 | 0x08, 2560 | 0x68, 2561 | 0x98, 2562 | 0x88, 2563 | 0x98, 2564 | 0x68, 2565 | 0x00, 2566 | 0x00, 2567 | 2568 | /* Character 101 (0x65): 2569 | width 6 2570 | +------+ 2571 | | | 2572 | | | 2573 | | | 2574 | | *** | 2575 | |* * | 2576 | |***** | 2577 | |* | 2578 | | *** | 2579 | | | 2580 | | | 2581 | +------+ */ 2582 | 0x00, 2583 | 0x00, 2584 | 0x00, 2585 | 0x70, 2586 | 0x88, 2587 | 0xf8, 2588 | 0x80, 2589 | 0x70, 2590 | 0x00, 2591 | 0x00, 2592 | 2593 | /* Character 102 (0x66): 2594 | width 6 2595 | +------+ 2596 | | | 2597 | | ** | 2598 | | * * | 2599 | | * | 2600 | |**** | 2601 | | * | 2602 | | * | 2603 | | * | 2604 | | | 2605 | | | 2606 | +------+ */ 2607 | 0x00, 2608 | 0x30, 2609 | 0x48, 2610 | 0x40, 2611 | 0xf0, 2612 | 0x40, 2613 | 0x40, 2614 | 0x40, 2615 | 0x00, 2616 | 0x00, 2617 | 2618 | /* Character 103 (0x67): 2619 | width 6 2620 | +------+ 2621 | | | 2622 | | | 2623 | | | 2624 | | **** | 2625 | |* * | 2626 | |* * | 2627 | | **** | 2628 | | * | 2629 | |* * | 2630 | | *** | 2631 | +------+ */ 2632 | 0x00, 2633 | 0x00, 2634 | 0x00, 2635 | 0x78, 2636 | 0x88, 2637 | 0x88, 2638 | 0x78, 2639 | 0x08, 2640 | 0x88, 2641 | 0x70, 2642 | 2643 | /* Character 104 (0x68): 2644 | width 6 2645 | +------+ 2646 | | | 2647 | |* | 2648 | |* | 2649 | |* ** | 2650 | |** * | 2651 | |* * | 2652 | |* * | 2653 | |* * | 2654 | | | 2655 | | | 2656 | +------+ */ 2657 | 0x00, 2658 | 0x80, 2659 | 0x80, 2660 | 0xb0, 2661 | 0xc8, 2662 | 0x88, 2663 | 0x88, 2664 | 0x88, 2665 | 0x00, 2666 | 0x00, 2667 | 2668 | /* Character 105 (0x69): 2669 | width 6 2670 | +------+ 2671 | | | 2672 | | * | 2673 | | | 2674 | | ** | 2675 | | * | 2676 | | * | 2677 | | * | 2678 | | *** | 2679 | | | 2680 | | | 2681 | +------+ */ 2682 | 0x00, 2683 | 0x20, 2684 | 0x00, 2685 | 0x60, 2686 | 0x20, 2687 | 0x20, 2688 | 0x20, 2689 | 0x70, 2690 | 0x00, 2691 | 0x00, 2692 | 2693 | /* Character 106 (0x6a): 2694 | width 6 2695 | +------+ 2696 | | | 2697 | | * | 2698 | | | 2699 | | ** | 2700 | | * | 2701 | | * | 2702 | | * | 2703 | | * * | 2704 | | * * | 2705 | | ** | 2706 | +------+ */ 2707 | 0x00, 2708 | 0x08, 2709 | 0x00, 2710 | 0x18, 2711 | 0x08, 2712 | 0x08, 2713 | 0x08, 2714 | 0x48, 2715 | 0x48, 2716 | 0x30, 2717 | 2718 | /* Character 107 (0x6b): 2719 | width 6 2720 | +------+ 2721 | | | 2722 | |* | 2723 | |* | 2724 | |* * | 2725 | |* * | 2726 | |*** | 2727 | |* * | 2728 | |* * | 2729 | | | 2730 | | | 2731 | +------+ */ 2732 | 0x00, 2733 | 0x80, 2734 | 0x80, 2735 | 0x88, 2736 | 0x90, 2737 | 0xe0, 2738 | 0x90, 2739 | 0x88, 2740 | 0x00, 2741 | 0x00, 2742 | 2743 | /* Character 108 (0x6c): 2744 | width 6 2745 | +------+ 2746 | | | 2747 | | ** | 2748 | | * | 2749 | | * | 2750 | | * | 2751 | | * | 2752 | | * | 2753 | | *** | 2754 | | | 2755 | | | 2756 | +------+ */ 2757 | 0x00, 2758 | 0x60, 2759 | 0x20, 2760 | 0x20, 2761 | 0x20, 2762 | 0x20, 2763 | 0x20, 2764 | 0x70, 2765 | 0x00, 2766 | 0x00, 2767 | 2768 | /* Character 109 (0x6d): 2769 | width 6 2770 | +------+ 2771 | | | 2772 | | | 2773 | | | 2774 | |** * | 2775 | |* * * | 2776 | |* * * | 2777 | |* * * | 2778 | |* * | 2779 | | | 2780 | | | 2781 | +------+ */ 2782 | 0x00, 2783 | 0x00, 2784 | 0x00, 2785 | 0xd0, 2786 | 0xa8, 2787 | 0xa8, 2788 | 0xa8, 2789 | 0x88, 2790 | 0x00, 2791 | 0x00, 2792 | 2793 | /* Character 110 (0x6e): 2794 | width 6 2795 | +------+ 2796 | | | 2797 | | | 2798 | | | 2799 | |* ** | 2800 | |** * | 2801 | |* * | 2802 | |* * | 2803 | |* * | 2804 | | | 2805 | | | 2806 | +------+ */ 2807 | 0x00, 2808 | 0x00, 2809 | 0x00, 2810 | 0xb0, 2811 | 0xc8, 2812 | 0x88, 2813 | 0x88, 2814 | 0x88, 2815 | 0x00, 2816 | 0x00, 2817 | 2818 | /* Character 111 (0x6f): 2819 | width 6 2820 | +------+ 2821 | | | 2822 | | | 2823 | | | 2824 | | *** | 2825 | |* * | 2826 | |* * | 2827 | |* * | 2828 | | *** | 2829 | | | 2830 | | | 2831 | +------+ */ 2832 | 0x00, 2833 | 0x00, 2834 | 0x00, 2835 | 0x70, 2836 | 0x88, 2837 | 0x88, 2838 | 0x88, 2839 | 0x70, 2840 | 0x00, 2841 | 0x00, 2842 | 2843 | /* Character 112 (0x70): 2844 | width 6 2845 | +------+ 2846 | | | 2847 | | | 2848 | | | 2849 | |* ** | 2850 | |** * | 2851 | |* * | 2852 | |** * | 2853 | |* ** | 2854 | |* | 2855 | |* | 2856 | +------+ */ 2857 | 0x00, 2858 | 0x00, 2859 | 0x00, 2860 | 0xb0, 2861 | 0xc8, 2862 | 0x88, 2863 | 0xc8, 2864 | 0xb0, 2865 | 0x80, 2866 | 0x80, 2867 | 2868 | /* Character 113 (0x71): 2869 | width 6 2870 | +------+ 2871 | | | 2872 | | | 2873 | | | 2874 | | ** * | 2875 | |* ** | 2876 | |* * | 2877 | |* ** | 2878 | | ** * | 2879 | | * | 2880 | | * | 2881 | +------+ */ 2882 | 0x00, 2883 | 0x00, 2884 | 0x00, 2885 | 0x68, 2886 | 0x98, 2887 | 0x88, 2888 | 0x98, 2889 | 0x68, 2890 | 0x08, 2891 | 0x08, 2892 | 2893 | /* Character 114 (0x72): 2894 | width 6 2895 | +------+ 2896 | | | 2897 | | | 2898 | | | 2899 | |* ** | 2900 | |** * | 2901 | |* | 2902 | |* | 2903 | |* | 2904 | | | 2905 | | | 2906 | +------+ */ 2907 | 0x00, 2908 | 0x00, 2909 | 0x00, 2910 | 0xb0, 2911 | 0xc8, 2912 | 0x80, 2913 | 0x80, 2914 | 0x80, 2915 | 0x00, 2916 | 0x00, 2917 | 2918 | /* Character 115 (0x73): 2919 | width 6 2920 | +------+ 2921 | | | 2922 | | | 2923 | | | 2924 | | *** | 2925 | |* | 2926 | | *** | 2927 | | * | 2928 | |**** | 2929 | | | 2930 | | | 2931 | +------+ */ 2932 | 0x00, 2933 | 0x00, 2934 | 0x00, 2935 | 0x70, 2936 | 0x80, 2937 | 0x70, 2938 | 0x08, 2939 | 0xf0, 2940 | 0x00, 2941 | 0x00, 2942 | 2943 | /* Character 116 (0x74): 2944 | width 6 2945 | +------+ 2946 | | | 2947 | | * | 2948 | | * | 2949 | |**** | 2950 | | * | 2951 | | * | 2952 | | * * | 2953 | | ** | 2954 | | | 2955 | | | 2956 | +------+ */ 2957 | 0x00, 2958 | 0x40, 2959 | 0x40, 2960 | 0xf0, 2961 | 0x40, 2962 | 0x40, 2963 | 0x48, 2964 | 0x30, 2965 | 0x00, 2966 | 0x00, 2967 | 2968 | /* Character 117 (0x75): 2969 | width 6 2970 | +------+ 2971 | | | 2972 | | | 2973 | | | 2974 | |* * | 2975 | |* * | 2976 | |* * | 2977 | |* ** | 2978 | | ** * | 2979 | | | 2980 | | | 2981 | +------+ */ 2982 | 0x00, 2983 | 0x00, 2984 | 0x00, 2985 | 0x88, 2986 | 0x88, 2987 | 0x88, 2988 | 0x98, 2989 | 0x68, 2990 | 0x00, 2991 | 0x00, 2992 | 2993 | /* Character 118 (0x76): 2994 | width 6 2995 | +------+ 2996 | | | 2997 | | | 2998 | | | 2999 | |* * | 3000 | |* * | 3001 | | * * | 3002 | | * * | 3003 | | * | 3004 | | | 3005 | | | 3006 | +------+ */ 3007 | 0x00, 3008 | 0x00, 3009 | 0x00, 3010 | 0x88, 3011 | 0x88, 3012 | 0x50, 3013 | 0x50, 3014 | 0x20, 3015 | 0x00, 3016 | 0x00, 3017 | 3018 | /* Character 119 (0x77): 3019 | width 6 3020 | +------+ 3021 | | | 3022 | | | 3023 | | | 3024 | |* * | 3025 | |* * | 3026 | |* * * | 3027 | |* * * | 3028 | | * * | 3029 | | | 3030 | | | 3031 | +------+ */ 3032 | 0x00, 3033 | 0x00, 3034 | 0x00, 3035 | 0x88, 3036 | 0x88, 3037 | 0xa8, 3038 | 0xa8, 3039 | 0x50, 3040 | 0x00, 3041 | 0x00, 3042 | 3043 | /* Character 120 (0x78): 3044 | width 6 3045 | +------+ 3046 | | | 3047 | | | 3048 | | | 3049 | |* * | 3050 | | * * | 3051 | | * | 3052 | | * * | 3053 | |* * | 3054 | | | 3055 | | | 3056 | +------+ */ 3057 | 0x00, 3058 | 0x00, 3059 | 0x00, 3060 | 0x88, 3061 | 0x50, 3062 | 0x20, 3063 | 0x50, 3064 | 0x88, 3065 | 0x00, 3066 | 0x00, 3067 | 3068 | /* Character 121 (0x79): 3069 | width 6 3070 | +------+ 3071 | | | 3072 | | | 3073 | | | 3074 | |* * | 3075 | |* * | 3076 | |* ** | 3077 | | ** * | 3078 | | * | 3079 | |* * | 3080 | | *** | 3081 | +------+ */ 3082 | 0x00, 3083 | 0x00, 3084 | 0x00, 3085 | 0x88, 3086 | 0x88, 3087 | 0x98, 3088 | 0x68, 3089 | 0x08, 3090 | 0x88, 3091 | 0x70, 3092 | 3093 | /* Character 122 (0x7a): 3094 | width 6 3095 | +------+ 3096 | | | 3097 | | | 3098 | | | 3099 | |***** | 3100 | | * | 3101 | | * | 3102 | | * | 3103 | |***** | 3104 | | | 3105 | | | 3106 | +------+ */ 3107 | 0x00, 3108 | 0x00, 3109 | 0x00, 3110 | 0xf8, 3111 | 0x10, 3112 | 0x20, 3113 | 0x40, 3114 | 0xf8, 3115 | 0x00, 3116 | 0x00, 3117 | 3118 | /* Character 123 (0x7b): 3119 | width 6 3120 | +------+ 3121 | | | 3122 | | ** | 3123 | | * | 3124 | | * | 3125 | | ** | 3126 | | * | 3127 | | * | 3128 | | ** | 3129 | | | 3130 | | | 3131 | +------+ */ 3132 | 0x00, 3133 | 0x18, 3134 | 0x20, 3135 | 0x10, 3136 | 0x60, 3137 | 0x10, 3138 | 0x20, 3139 | 0x18, 3140 | 0x00, 3141 | 0x00, 3142 | 3143 | /* Character 124 (0x7c): 3144 | width 6 3145 | +------+ 3146 | | | 3147 | | * | 3148 | | * | 3149 | | * | 3150 | | * | 3151 | | * | 3152 | | * | 3153 | | * | 3154 | | | 3155 | | | 3156 | +------+ */ 3157 | 0x00, 3158 | 0x20, 3159 | 0x20, 3160 | 0x20, 3161 | 0x20, 3162 | 0x20, 3163 | 0x20, 3164 | 0x20, 3165 | 0x00, 3166 | 0x00, 3167 | 3168 | /* Character 125 (0x7d): 3169 | width 6 3170 | +------+ 3171 | | | 3172 | | ** | 3173 | | * | 3174 | | * | 3175 | | ** | 3176 | | * | 3177 | | * | 3178 | | ** | 3179 | | | 3180 | | | 3181 | +------+ */ 3182 | 0x00, 3183 | 0x60, 3184 | 0x10, 3185 | 0x20, 3186 | 0x18, 3187 | 0x20, 3188 | 0x10, 3189 | 0x60, 3190 | 0x00, 3191 | 0x00, 3192 | 3193 | /* Character 126 (0x7e): 3194 | width 6 3195 | +------+ 3196 | | | 3197 | | * * | 3198 | |* * * | 3199 | |* * | 3200 | | | 3201 | | | 3202 | | | 3203 | | | 3204 | | | 3205 | | | 3206 | +------+ */ 3207 | 0x00, 3208 | 0x48, 3209 | 0xa8, 3210 | 0x90, 3211 | 0x00, 3212 | 0x00, 3213 | 0x00, 3214 | 0x00, 3215 | 0x00, 3216 | 0x00, 3217 | 3218 | /* Character 160 (0xa0): 3219 | width 6 3220 | +------+ 3221 | | | 3222 | | | 3223 | | | 3224 | | | 3225 | | | 3226 | | | 3227 | | | 3228 | | | 3229 | | | 3230 | | | 3231 | +------+ */ 3232 | 0x00, 3233 | 0x00, 3234 | 0x00, 3235 | 0x00, 3236 | 0x00, 3237 | 0x00, 3238 | 0x00, 3239 | 0x00, 3240 | 0x00, 3241 | 0x00, 3242 | 3243 | /* Character 161 (0xa1): 3244 | width 6 3245 | +------+ 3246 | | | 3247 | | * | 3248 | | | 3249 | | * | 3250 | | * | 3251 | | * | 3252 | | * | 3253 | | * | 3254 | | | 3255 | | | 3256 | +------+ */ 3257 | 0x00, 3258 | 0x20, 3259 | 0x00, 3260 | 0x20, 3261 | 0x20, 3262 | 0x20, 3263 | 0x20, 3264 | 0x20, 3265 | 0x00, 3266 | 0x00, 3267 | 3268 | /* Character 162 (0xa2): 3269 | width 6 3270 | +------+ 3271 | | | 3272 | | | 3273 | | * | 3274 | | **** | 3275 | |* * | 3276 | |* * | 3277 | |* * | 3278 | | **** | 3279 | | * | 3280 | | | 3281 | +------+ */ 3282 | 0x00, 3283 | 0x00, 3284 | 0x20, 3285 | 0x78, 3286 | 0xa0, 3287 | 0xa0, 3288 | 0xa0, 3289 | 0x78, 3290 | 0x20, 3291 | 0x00, 3292 | 3293 | /* Character 163 (0xa3): 3294 | width 6 3295 | +------+ 3296 | | | 3297 | | ** | 3298 | | * * | 3299 | | * | 3300 | |*** | 3301 | | * | 3302 | | * * | 3303 | |* ** | 3304 | | | 3305 | | | 3306 | +------+ */ 3307 | 0x00, 3308 | 0x30, 3309 | 0x48, 3310 | 0x40, 3311 | 0xe0, 3312 | 0x40, 3313 | 0x48, 3314 | 0xb0, 3315 | 0x00, 3316 | 0x00, 3317 | 3318 | /* Character 164 (0xa4): 3319 | width 6 3320 | +------+ 3321 | | | 3322 | | | 3323 | | | 3324 | |* * | 3325 | | *** | 3326 | | * * | 3327 | | *** | 3328 | |* * | 3329 | | | 3330 | | | 3331 | +------+ */ 3332 | 0x00, 3333 | 0x00, 3334 | 0x00, 3335 | 0x88, 3336 | 0x70, 3337 | 0x50, 3338 | 0x70, 3339 | 0x88, 3340 | 0x00, 3341 | 0x00, 3342 | 3343 | /* Character 165 (0xa5): 3344 | width 6 3345 | +------+ 3346 | | | 3347 | |* * | 3348 | |* * | 3349 | | * * | 3350 | | * | 3351 | |***** | 3352 | | * | 3353 | | * | 3354 | | * | 3355 | | | 3356 | +------+ */ 3357 | 0x00, 3358 | 0x88, 3359 | 0x88, 3360 | 0x50, 3361 | 0x20, 3362 | 0xf8, 3363 | 0x20, 3364 | 0x20, 3365 | 0x20, 3366 | 0x00, 3367 | 3368 | /* Character 166 (0xa6): 3369 | width 6 3370 | +------+ 3371 | | | 3372 | | * | 3373 | | * | 3374 | | * | 3375 | | | 3376 | | * | 3377 | | * | 3378 | | * | 3379 | | | 3380 | | | 3381 | +------+ */ 3382 | 0x00, 3383 | 0x20, 3384 | 0x20, 3385 | 0x20, 3386 | 0x00, 3387 | 0x20, 3388 | 0x20, 3389 | 0x20, 3390 | 0x00, 3391 | 0x00, 3392 | 3393 | /* Character 167 (0xa7): 3394 | width 6 3395 | +------+ 3396 | | | 3397 | | *** | 3398 | |* | 3399 | |*** | 3400 | |* * | 3401 | | * * | 3402 | | *** | 3403 | | * | 3404 | | *** | 3405 | | | 3406 | +------+ */ 3407 | 0x00, 3408 | 0x70, 3409 | 0x80, 3410 | 0xe0, 3411 | 0x90, 3412 | 0x48, 3413 | 0x38, 3414 | 0x08, 3415 | 0x70, 3416 | 0x00, 3417 | 3418 | /* Character 168 (0xa8): 3419 | width 6 3420 | +------+ 3421 | | * * | 3422 | | | 3423 | | | 3424 | | | 3425 | | | 3426 | | | 3427 | | | 3428 | | | 3429 | | | 3430 | | | 3431 | +------+ */ 3432 | 0x50, 3433 | 0x00, 3434 | 0x00, 3435 | 0x00, 3436 | 0x00, 3437 | 0x00, 3438 | 0x00, 3439 | 0x00, 3440 | 0x00, 3441 | 0x00, 3442 | 3443 | /* Character 169 (0xa9): 3444 | width 6 3445 | +------+ 3446 | | | 3447 | | *** | 3448 | |* * | 3449 | |* * * | 3450 | |** * | 3451 | |* * * | 3452 | |* * | 3453 | | *** | 3454 | | | 3455 | | | 3456 | +------+ */ 3457 | 0x00, 3458 | 0x70, 3459 | 0x88, 3460 | 0xa8, 3461 | 0xc8, 3462 | 0xa8, 3463 | 0x88, 3464 | 0x70, 3465 | 0x00, 3466 | 0x00, 3467 | 3468 | /* Character 170 (0xaa): 3469 | width 6 3470 | +------+ 3471 | | | 3472 | | *** | 3473 | | * * | 3474 | | * ** | 3475 | | * * | 3476 | | | 3477 | | **** | 3478 | | | 3479 | | | 3480 | | | 3481 | +------+ */ 3482 | 0x00, 3483 | 0x38, 3484 | 0x48, 3485 | 0x58, 3486 | 0x28, 3487 | 0x00, 3488 | 0x78, 3489 | 0x00, 3490 | 0x00, 3491 | 0x00, 3492 | 3493 | /* Character 171 (0xab): 3494 | width 6 3495 | +------+ 3496 | | | 3497 | | | 3498 | | | 3499 | | * *| 3500 | | * * | 3501 | |* * | 3502 | | * * | 3503 | | * *| 3504 | | | 3505 | | | 3506 | +------+ */ 3507 | 0x00, 3508 | 0x00, 3509 | 0x00, 3510 | 0x24, 3511 | 0x48, 3512 | 0x90, 3513 | 0x48, 3514 | 0x24, 3515 | 0x00, 3516 | 0x00, 3517 | 3518 | /* Character 172 (0xac): 3519 | width 6 3520 | +------+ 3521 | | | 3522 | | | 3523 | | | 3524 | | | 3525 | | **** | 3526 | | * | 3527 | | | 3528 | | | 3529 | | | 3530 | | | 3531 | +------+ */ 3532 | 0x00, 3533 | 0x00, 3534 | 0x00, 3535 | 0x00, 3536 | 0x78, 3537 | 0x08, 3538 | 0x00, 3539 | 0x00, 3540 | 0x00, 3541 | 0x00, 3542 | 3543 | /* Character 173 (0xad): 3544 | width 6 3545 | +------+ 3546 | | | 3547 | | | 3548 | | | 3549 | | | 3550 | | **** | 3551 | | | 3552 | | | 3553 | | | 3554 | | | 3555 | | | 3556 | +------+ */ 3557 | 0x00, 3558 | 0x00, 3559 | 0x00, 3560 | 0x00, 3561 | 0x78, 3562 | 0x00, 3563 | 0x00, 3564 | 0x00, 3565 | 0x00, 3566 | 0x00, 3567 | 3568 | /* Character 174 (0xae): 3569 | width 6 3570 | +------+ 3571 | | | 3572 | | *** | 3573 | |* * | 3574 | |*** * | 3575 | |** * | 3576 | |** * | 3577 | |* * | 3578 | | *** | 3579 | | | 3580 | | | 3581 | +------+ */ 3582 | 0x00, 3583 | 0x70, 3584 | 0x88, 3585 | 0xe8, 3586 | 0xc8, 3587 | 0xc8, 3588 | 0x88, 3589 | 0x70, 3590 | 0x00, 3591 | 0x00, 3592 | 3593 | /* Character 175 (0xaf): 3594 | width 6 3595 | +------+ 3596 | |***** | 3597 | | | 3598 | | | 3599 | | | 3600 | | | 3601 | | | 3602 | | | 3603 | | | 3604 | | | 3605 | | | 3606 | +------+ */ 3607 | 0xf8, 3608 | 0x00, 3609 | 0x00, 3610 | 0x00, 3611 | 0x00, 3612 | 0x00, 3613 | 0x00, 3614 | 0x00, 3615 | 0x00, 3616 | 0x00, 3617 | 3618 | /* Character 176 (0xb0): 3619 | width 6 3620 | +------+ 3621 | | | 3622 | | * | 3623 | | * * | 3624 | | * | 3625 | | | 3626 | | | 3627 | | | 3628 | | | 3629 | | | 3630 | | | 3631 | +------+ */ 3632 | 0x00, 3633 | 0x20, 3634 | 0x50, 3635 | 0x20, 3636 | 0x00, 3637 | 0x00, 3638 | 0x00, 3639 | 0x00, 3640 | 0x00, 3641 | 0x00, 3642 | 3643 | /* Character 177 (0xb1): 3644 | width 6 3645 | +------+ 3646 | | | 3647 | | | 3648 | | * | 3649 | | * | 3650 | |***** | 3651 | | * | 3652 | | * | 3653 | |***** | 3654 | | | 3655 | | | 3656 | +------+ */ 3657 | 0x00, 3658 | 0x00, 3659 | 0x20, 3660 | 0x20, 3661 | 0xf8, 3662 | 0x20, 3663 | 0x20, 3664 | 0xf8, 3665 | 0x00, 3666 | 0x00, 3667 | 3668 | /* Character 178 (0xb2): 3669 | width 6 3670 | +------+ 3671 | | ** | 3672 | | * * | 3673 | | * | 3674 | | * | 3675 | | **** | 3676 | | | 3677 | | | 3678 | | | 3679 | | | 3680 | | | 3681 | +------+ */ 3682 | 0x30, 3683 | 0x48, 3684 | 0x10, 3685 | 0x20, 3686 | 0x78, 3687 | 0x00, 3688 | 0x00, 3689 | 0x00, 3690 | 0x00, 3691 | 0x00, 3692 | 3693 | /* Character 179 (0xb3): 3694 | width 6 3695 | +------+ 3696 | | *** | 3697 | | * | 3698 | | ** | 3699 | | * | 3700 | | *** | 3701 | | | 3702 | | | 3703 | | | 3704 | | | 3705 | | | 3706 | +------+ */ 3707 | 0x70, 3708 | 0x08, 3709 | 0x30, 3710 | 0x08, 3711 | 0x70, 3712 | 0x00, 3713 | 0x00, 3714 | 0x00, 3715 | 0x00, 3716 | 0x00, 3717 | 3718 | /* Character 180 (0xb4): 3719 | width 6 3720 | +------+ 3721 | | * | 3722 | | * | 3723 | | | 3724 | | | 3725 | | | 3726 | | | 3727 | | | 3728 | | | 3729 | | | 3730 | | | 3731 | +------+ */ 3732 | 0x10, 3733 | 0x20, 3734 | 0x00, 3735 | 0x00, 3736 | 0x00, 3737 | 0x00, 3738 | 0x00, 3739 | 0x00, 3740 | 0x00, 3741 | 0x00, 3742 | 3743 | /* Character 181 (0xb5): 3744 | width 6 3745 | +------+ 3746 | | | 3747 | | | 3748 | | | 3749 | |* * | 3750 | |* * | 3751 | |* * | 3752 | |** * | 3753 | |* ** | 3754 | |* | 3755 | | | 3756 | +------+ */ 3757 | 0x00, 3758 | 0x00, 3759 | 0x00, 3760 | 0x88, 3761 | 0x88, 3762 | 0x88, 3763 | 0xc8, 3764 | 0xb0, 3765 | 0x80, 3766 | 0x00, 3767 | 3768 | /* Character 182 (0xb6): 3769 | width 6 3770 | +------+ 3771 | | | 3772 | | **** | 3773 | |*** * | 3774 | |*** * | 3775 | | ** * | 3776 | | * * | 3777 | | * * | 3778 | | * * | 3779 | | | 3780 | | | 3781 | +------+ */ 3782 | 0x00, 3783 | 0x78, 3784 | 0xe8, 3785 | 0xe8, 3786 | 0x68, 3787 | 0x28, 3788 | 0x28, 3789 | 0x28, 3790 | 0x00, 3791 | 0x00, 3792 | 3793 | /* Character 183 (0xb7): 3794 | width 6 3795 | +------+ 3796 | | | 3797 | | | 3798 | | | 3799 | | | 3800 | | * | 3801 | | | 3802 | | | 3803 | | | 3804 | | | 3805 | | | 3806 | +------+ */ 3807 | 0x00, 3808 | 0x00, 3809 | 0x00, 3810 | 0x00, 3811 | 0x20, 3812 | 0x00, 3813 | 0x00, 3814 | 0x00, 3815 | 0x00, 3816 | 0x00, 3817 | 3818 | /* Character 184 (0xb8): 3819 | width 6 3820 | +------+ 3821 | | | 3822 | | | 3823 | | | 3824 | | | 3825 | | | 3826 | | | 3827 | | | 3828 | | | 3829 | | * | 3830 | | * | 3831 | +------+ */ 3832 | 0x00, 3833 | 0x00, 3834 | 0x00, 3835 | 0x00, 3836 | 0x00, 3837 | 0x00, 3838 | 0x00, 3839 | 0x00, 3840 | 0x10, 3841 | 0x20, 3842 | 3843 | /* Character 185 (0xb9): 3844 | width 6 3845 | +------+ 3846 | | * | 3847 | | ** | 3848 | | * | 3849 | | * | 3850 | | *** | 3851 | | | 3852 | | | 3853 | | | 3854 | | | 3855 | | | 3856 | +------+ */ 3857 | 0x20, 3858 | 0x60, 3859 | 0x20, 3860 | 0x20, 3861 | 0x70, 3862 | 0x00, 3863 | 0x00, 3864 | 0x00, 3865 | 0x00, 3866 | 0x00, 3867 | 3868 | /* Character 186 (0xba): 3869 | width 6 3870 | +------+ 3871 | | | 3872 | | ** | 3873 | | * * | 3874 | | * * | 3875 | | ** | 3876 | | | 3877 | | **** | 3878 | | | 3879 | | | 3880 | | | 3881 | +------+ */ 3882 | 0x00, 3883 | 0x30, 3884 | 0x48, 3885 | 0x48, 3886 | 0x30, 3887 | 0x00, 3888 | 0x78, 3889 | 0x00, 3890 | 0x00, 3891 | 0x00, 3892 | 3893 | /* Character 187 (0xbb): 3894 | width 6 3895 | +------+ 3896 | | | 3897 | | | 3898 | | | 3899 | |* * | 3900 | | * * | 3901 | | * *| 3902 | | * * | 3903 | |* * | 3904 | | | 3905 | | | 3906 | +------+ */ 3907 | 0x00, 3908 | 0x00, 3909 | 0x00, 3910 | 0x90, 3911 | 0x48, 3912 | 0x24, 3913 | 0x48, 3914 | 0x90, 3915 | 0x00, 3916 | 0x00, 3917 | 3918 | /* Character 188 (0xbc): 3919 | width 6 3920 | +------+ 3921 | | * | 3922 | |** | 3923 | | * | 3924 | | * | 3925 | |*** *| 3926 | | **| 3927 | | * *| 3928 | | ****| 3929 | | *| 3930 | | | 3931 | +------+ */ 3932 | 0x40, 3933 | 0xc0, 3934 | 0x40, 3935 | 0x40, 3936 | 0xe4, 3937 | 0x0c, 3938 | 0x14, 3939 | 0x3c, 3940 | 0x04, 3941 | 0x00, 3942 | 3943 | /* Character 189 (0xbd): 3944 | width 6 3945 | +------+ 3946 | | * | 3947 | |** | 3948 | | * | 3949 | | * | 3950 | |*** * | 3951 | | * *| 3952 | | *| 3953 | | * | 3954 | | ***| 3955 | | | 3956 | +------+ */ 3957 | 0x40, 3958 | 0xc0, 3959 | 0x40, 3960 | 0x40, 3961 | 0xe8, 3962 | 0x14, 3963 | 0x04, 3964 | 0x08, 3965 | 0x1c, 3966 | 0x00, 3967 | 3968 | /* Character 190 (0xbe): 3969 | width 6 3970 | +------+ 3971 | |** | 3972 | | * | 3973 | | * | 3974 | | * | 3975 | |** * | 3976 | | ** | 3977 | | * * | 3978 | | **** | 3979 | | * | 3980 | | | 3981 | +------+ */ 3982 | 0xc0, 3983 | 0x20, 3984 | 0x40, 3985 | 0x20, 3986 | 0xc8, 3987 | 0x18, 3988 | 0x28, 3989 | 0x78, 3990 | 0x08, 3991 | 0x00, 3992 | 3993 | /* Character 191 (0xbf): 3994 | width 6 3995 | +------+ 3996 | | | 3997 | | * | 3998 | | | 3999 | | * | 4000 | | * | 4001 | | * | 4002 | |* * | 4003 | | *** | 4004 | | | 4005 | | | 4006 | +------+ */ 4007 | 0x00, 4008 | 0x20, 4009 | 0x00, 4010 | 0x20, 4011 | 0x20, 4012 | 0x40, 4013 | 0x88, 4014 | 0x70, 4015 | 0x00, 4016 | 0x00, 4017 | 4018 | /* Character 192 (0xc0): 4019 | width 6 4020 | +------+ 4021 | | * | 4022 | | * | 4023 | | *** | 4024 | |* * | 4025 | |* * | 4026 | |***** | 4027 | |* * | 4028 | |* * | 4029 | | | 4030 | | | 4031 | +------+ */ 4032 | 0x40, 4033 | 0x20, 4034 | 0x70, 4035 | 0x88, 4036 | 0x88, 4037 | 0xf8, 4038 | 0x88, 4039 | 0x88, 4040 | 0x00, 4041 | 0x00, 4042 | 4043 | /* Character 193 (0xc1): 4044 | width 6 4045 | +------+ 4046 | | * | 4047 | | * | 4048 | | *** | 4049 | |* * | 4050 | |* * | 4051 | |***** | 4052 | |* * | 4053 | |* * | 4054 | | | 4055 | | | 4056 | +------+ */ 4057 | 0x10, 4058 | 0x20, 4059 | 0x70, 4060 | 0x88, 4061 | 0x88, 4062 | 0xf8, 4063 | 0x88, 4064 | 0x88, 4065 | 0x00, 4066 | 0x00, 4067 | 4068 | /* Character 194 (0xc2): 4069 | width 6 4070 | +------+ 4071 | | * | 4072 | | * * | 4073 | | *** | 4074 | |* * | 4075 | |* * | 4076 | |***** | 4077 | |* * | 4078 | |* * | 4079 | | | 4080 | | | 4081 | +------+ */ 4082 | 0x20, 4083 | 0x50, 4084 | 0x70, 4085 | 0x88, 4086 | 0x88, 4087 | 0xf8, 4088 | 0x88, 4089 | 0x88, 4090 | 0x00, 4091 | 0x00, 4092 | 4093 | /* Character 195 (0xc3): 4094 | width 6 4095 | +------+ 4096 | | * * | 4097 | |* ** | 4098 | | *** | 4099 | |* * | 4100 | |* * | 4101 | |***** | 4102 | |* * | 4103 | |* * | 4104 | | | 4105 | | | 4106 | +------+ */ 4107 | 0x48, 4108 | 0xb0, 4109 | 0x70, 4110 | 0x88, 4111 | 0x88, 4112 | 0xf8, 4113 | 0x88, 4114 | 0x88, 4115 | 0x00, 4116 | 0x00, 4117 | 4118 | /* Character 196 (0xc4): 4119 | width 6 4120 | +------+ 4121 | | * * | 4122 | | | 4123 | | *** | 4124 | |* * | 4125 | |* * | 4126 | |***** | 4127 | |* * | 4128 | |* * | 4129 | | | 4130 | | | 4131 | +------+ */ 4132 | 0x50, 4133 | 0x00, 4134 | 0x70, 4135 | 0x88, 4136 | 0x88, 4137 | 0xf8, 4138 | 0x88, 4139 | 0x88, 4140 | 0x00, 4141 | 0x00, 4142 | 4143 | /* Character 197 (0xc5): 4144 | width 6 4145 | +------+ 4146 | | * | 4147 | | * * | 4148 | | *** | 4149 | |* * | 4150 | |* * | 4151 | |***** | 4152 | |* * | 4153 | |* * | 4154 | | | 4155 | | | 4156 | +------+ */ 4157 | 0x20, 4158 | 0x50, 4159 | 0x70, 4160 | 0x88, 4161 | 0x88, 4162 | 0xf8, 4163 | 0x88, 4164 | 0x88, 4165 | 0x00, 4166 | 0x00, 4167 | 4168 | /* Character 198 (0xc6): 4169 | width 6 4170 | +------+ 4171 | | | 4172 | | ****| 4173 | | * * | 4174 | |* * | 4175 | |* ***| 4176 | |**** | 4177 | |* * | 4178 | |* ***| 4179 | | | 4180 | | | 4181 | +------+ */ 4182 | 0x00, 4183 | 0x3c, 4184 | 0x50, 4185 | 0x90, 4186 | 0x9c, 4187 | 0xf0, 4188 | 0x90, 4189 | 0x9c, 4190 | 0x00, 4191 | 0x00, 4192 | 4193 | /* Character 199 (0xc7): 4194 | width 6 4195 | +------+ 4196 | | | 4197 | | *** | 4198 | |* * | 4199 | |* | 4200 | |* | 4201 | |* | 4202 | |* * | 4203 | | *** | 4204 | | * | 4205 | | * | 4206 | +------+ */ 4207 | 0x00, 4208 | 0x70, 4209 | 0x88, 4210 | 0x80, 4211 | 0x80, 4212 | 0x80, 4213 | 0x88, 4214 | 0x70, 4215 | 0x20, 4216 | 0x40, 4217 | 4218 | /* Character 200 (0xc8): 4219 | width 6 4220 | +------+ 4221 | | * | 4222 | |***** | 4223 | |* | 4224 | |* | 4225 | |**** | 4226 | |* | 4227 | |* | 4228 | |***** | 4229 | | | 4230 | | | 4231 | +------+ */ 4232 | 0x40, 4233 | 0xf8, 4234 | 0x80, 4235 | 0x80, 4236 | 0xf0, 4237 | 0x80, 4238 | 0x80, 4239 | 0xf8, 4240 | 0x00, 4241 | 0x00, 4242 | 4243 | /* Character 201 (0xc9): 4244 | width 6 4245 | +------+ 4246 | | * | 4247 | |***** | 4248 | |* | 4249 | |* | 4250 | |**** | 4251 | |* | 4252 | |* | 4253 | |***** | 4254 | | | 4255 | | | 4256 | +------+ */ 4257 | 0x10, 4258 | 0xf8, 4259 | 0x80, 4260 | 0x80, 4261 | 0xf0, 4262 | 0x80, 4263 | 0x80, 4264 | 0xf8, 4265 | 0x00, 4266 | 0x00, 4267 | 4268 | /* Character 202 (0xca): 4269 | width 6 4270 | +------+ 4271 | | * | 4272 | |***** | 4273 | |* | 4274 | |* | 4275 | |**** | 4276 | |* | 4277 | |* | 4278 | |***** | 4279 | | | 4280 | | | 4281 | +------+ */ 4282 | 0x20, 4283 | 0xf8, 4284 | 0x80, 4285 | 0x80, 4286 | 0xf0, 4287 | 0x80, 4288 | 0x80, 4289 | 0xf8, 4290 | 0x00, 4291 | 0x00, 4292 | 4293 | /* Character 203 (0xcb): 4294 | width 6 4295 | +------+ 4296 | | * * | 4297 | |***** | 4298 | |* | 4299 | |* | 4300 | |**** | 4301 | |* | 4302 | |* | 4303 | |***** | 4304 | | | 4305 | | | 4306 | +------+ */ 4307 | 0x50, 4308 | 0xf8, 4309 | 0x80, 4310 | 0x80, 4311 | 0xf0, 4312 | 0x80, 4313 | 0x80, 4314 | 0xf8, 4315 | 0x00, 4316 | 0x00, 4317 | 4318 | /* Character 204 (0xcc): 4319 | width 6 4320 | +------+ 4321 | | * | 4322 | | * | 4323 | | *** | 4324 | | * | 4325 | | * | 4326 | | * | 4327 | | * | 4328 | | *** | 4329 | | | 4330 | | | 4331 | +------+ */ 4332 | 0x40, 4333 | 0x20, 4334 | 0x70, 4335 | 0x20, 4336 | 0x20, 4337 | 0x20, 4338 | 0x20, 4339 | 0x70, 4340 | 0x00, 4341 | 0x00, 4342 | 4343 | /* Character 205 (0xcd): 4344 | width 6 4345 | +------+ 4346 | | * | 4347 | | * | 4348 | | *** | 4349 | | * | 4350 | | * | 4351 | | * | 4352 | | * | 4353 | | *** | 4354 | | | 4355 | | | 4356 | +------+ */ 4357 | 0x10, 4358 | 0x20, 4359 | 0x70, 4360 | 0x20, 4361 | 0x20, 4362 | 0x20, 4363 | 0x20, 4364 | 0x70, 4365 | 0x00, 4366 | 0x00, 4367 | 4368 | /* Character 206 (0xce): 4369 | width 6 4370 | +------+ 4371 | | * | 4372 | | * * | 4373 | | *** | 4374 | | * | 4375 | | * | 4376 | | * | 4377 | | * | 4378 | | *** | 4379 | | | 4380 | | | 4381 | +------+ */ 4382 | 0x20, 4383 | 0x50, 4384 | 0x70, 4385 | 0x20, 4386 | 0x20, 4387 | 0x20, 4388 | 0x20, 4389 | 0x70, 4390 | 0x00, 4391 | 0x00, 4392 | 4393 | /* Character 207 (0xcf): 4394 | width 6 4395 | +------+ 4396 | | * * | 4397 | | | 4398 | | *** | 4399 | | * | 4400 | | * | 4401 | | * | 4402 | | * | 4403 | | *** | 4404 | | | 4405 | | | 4406 | +------+ */ 4407 | 0x50, 4408 | 0x00, 4409 | 0x70, 4410 | 0x20, 4411 | 0x20, 4412 | 0x20, 4413 | 0x20, 4414 | 0x70, 4415 | 0x00, 4416 | 0x00, 4417 | 4418 | /* Character 208 (0xd0): 4419 | width 6 4420 | +------+ 4421 | | | 4422 | |**** | 4423 | | * * | 4424 | | * * | 4425 | |*** * | 4426 | | * * | 4427 | | * * | 4428 | |**** | 4429 | | | 4430 | | | 4431 | +------+ */ 4432 | 0x00, 4433 | 0xf0, 4434 | 0x48, 4435 | 0x48, 4436 | 0xe8, 4437 | 0x48, 4438 | 0x48, 4439 | 0xf0, 4440 | 0x00, 4441 | 0x00, 4442 | 4443 | /* Character 209 (0xd1): 4444 | width 6 4445 | +------+ 4446 | | * * | 4447 | | * * | 4448 | |* * | 4449 | |** * | 4450 | |* * * | 4451 | |* ** | 4452 | |* * | 4453 | |* * | 4454 | | | 4455 | | | 4456 | +------+ */ 4457 | 0x28, 4458 | 0x50, 4459 | 0x88, 4460 | 0xc8, 4461 | 0xa8, 4462 | 0x98, 4463 | 0x88, 4464 | 0x88, 4465 | 0x00, 4466 | 0x00, 4467 | 4468 | /* Character 210 (0xd2): 4469 | width 6 4470 | +------+ 4471 | | * | 4472 | | * | 4473 | | *** | 4474 | |* * | 4475 | |* * | 4476 | |* * | 4477 | |* * | 4478 | | *** | 4479 | | | 4480 | | | 4481 | +------+ */ 4482 | 0x40, 4483 | 0x20, 4484 | 0x70, 4485 | 0x88, 4486 | 0x88, 4487 | 0x88, 4488 | 0x88, 4489 | 0x70, 4490 | 0x00, 4491 | 0x00, 4492 | 4493 | /* Character 211 (0xd3): 4494 | width 6 4495 | +------+ 4496 | | * | 4497 | | * | 4498 | | *** | 4499 | |* * | 4500 | |* * | 4501 | |* * | 4502 | |* * | 4503 | | *** | 4504 | | | 4505 | | | 4506 | +------+ */ 4507 | 0x10, 4508 | 0x20, 4509 | 0x70, 4510 | 0x88, 4511 | 0x88, 4512 | 0x88, 4513 | 0x88, 4514 | 0x70, 4515 | 0x00, 4516 | 0x00, 4517 | 4518 | /* Character 212 (0xd4): 4519 | width 6 4520 | +------+ 4521 | | * | 4522 | | * * | 4523 | | *** | 4524 | |* * | 4525 | |* * | 4526 | |* * | 4527 | |* * | 4528 | | *** | 4529 | | | 4530 | | | 4531 | +------+ */ 4532 | 0x20, 4533 | 0x50, 4534 | 0x70, 4535 | 0x88, 4536 | 0x88, 4537 | 0x88, 4538 | 0x88, 4539 | 0x70, 4540 | 0x00, 4541 | 0x00, 4542 | 4543 | /* Character 213 (0xd5): 4544 | width 6 4545 | +------+ 4546 | | * * | 4547 | | * * | 4548 | | *** | 4549 | |* * | 4550 | |* * | 4551 | |* * | 4552 | |* * | 4553 | | *** | 4554 | | | 4555 | | | 4556 | +------+ */ 4557 | 0x28, 4558 | 0x50, 4559 | 0x70, 4560 | 0x88, 4561 | 0x88, 4562 | 0x88, 4563 | 0x88, 4564 | 0x70, 4565 | 0x00, 4566 | 0x00, 4567 | 4568 | /* Character 214 (0xd6): 4569 | width 6 4570 | +------+ 4571 | | * * | 4572 | | | 4573 | | *** | 4574 | |* * | 4575 | |* * | 4576 | |* * | 4577 | |* * | 4578 | | *** | 4579 | | | 4580 | | | 4581 | +------+ */ 4582 | 0x50, 4583 | 0x00, 4584 | 0x70, 4585 | 0x88, 4586 | 0x88, 4587 | 0x88, 4588 | 0x88, 4589 | 0x70, 4590 | 0x00, 4591 | 0x00, 4592 | 4593 | /* Character 215 (0xd7): 4594 | width 6 4595 | +------+ 4596 | | | 4597 | | | 4598 | | | 4599 | |* * | 4600 | | * * | 4601 | | * | 4602 | | * * | 4603 | |* * | 4604 | | | 4605 | | | 4606 | +------+ */ 4607 | 0x00, 4608 | 0x00, 4609 | 0x00, 4610 | 0x88, 4611 | 0x50, 4612 | 0x20, 4613 | 0x50, 4614 | 0x88, 4615 | 0x00, 4616 | 0x00, 4617 | 4618 | /* Character 216 (0xd8): 4619 | width 6 4620 | +------+ 4621 | | | 4622 | | *** | 4623 | |* ** | 4624 | |* ** | 4625 | |* * * | 4626 | |** * | 4627 | |** * | 4628 | | *** | 4629 | | | 4630 | | | 4631 | +------+ */ 4632 | 0x00, 4633 | 0x70, 4634 | 0x98, 4635 | 0x98, 4636 | 0xa8, 4637 | 0xc8, 4638 | 0xc8, 4639 | 0x70, 4640 | 0x00, 4641 | 0x00, 4642 | 4643 | /* Character 217 (0xd9): 4644 | width 6 4645 | +------+ 4646 | | * | 4647 | | * | 4648 | |* * | 4649 | |* * | 4650 | |* * | 4651 | |* * | 4652 | |* * | 4653 | | *** | 4654 | | | 4655 | | | 4656 | +------+ */ 4657 | 0x40, 4658 | 0x20, 4659 | 0x88, 4660 | 0x88, 4661 | 0x88, 4662 | 0x88, 4663 | 0x88, 4664 | 0x70, 4665 | 0x00, 4666 | 0x00, 4667 | 4668 | /* Character 218 (0xda): 4669 | width 6 4670 | +------+ 4671 | | * | 4672 | | * | 4673 | |* * | 4674 | |* * | 4675 | |* * | 4676 | |* * | 4677 | |* * | 4678 | | *** | 4679 | | | 4680 | | | 4681 | +------+ */ 4682 | 0x10, 4683 | 0x20, 4684 | 0x88, 4685 | 0x88, 4686 | 0x88, 4687 | 0x88, 4688 | 0x88, 4689 | 0x70, 4690 | 0x00, 4691 | 0x00, 4692 | 4693 | /* Character 219 (0xdb): 4694 | width 6 4695 | +------+ 4696 | | * | 4697 | | * * | 4698 | | | 4699 | |* * | 4700 | |* * | 4701 | |* * | 4702 | |* * | 4703 | | *** | 4704 | | | 4705 | | | 4706 | +------+ */ 4707 | 0x20, 4708 | 0x50, 4709 | 0x00, 4710 | 0x88, 4711 | 0x88, 4712 | 0x88, 4713 | 0x88, 4714 | 0x70, 4715 | 0x00, 4716 | 0x00, 4717 | 4718 | /* Character 220 (0xdc): 4719 | width 6 4720 | +------+ 4721 | | * * | 4722 | | | 4723 | |* * | 4724 | |* * | 4725 | |* * | 4726 | |* * | 4727 | |* * | 4728 | | *** | 4729 | | | 4730 | | | 4731 | +------+ */ 4732 | 0x50, 4733 | 0x00, 4734 | 0x88, 4735 | 0x88, 4736 | 0x88, 4737 | 0x88, 4738 | 0x88, 4739 | 0x70, 4740 | 0x00, 4741 | 0x00, 4742 | 4743 | /* Character 221 (0xdd): 4744 | width 6 4745 | +------+ 4746 | | * | 4747 | | * | 4748 | |* * | 4749 | |* * | 4750 | | * * | 4751 | | * | 4752 | | * | 4753 | | * | 4754 | | | 4755 | | | 4756 | +------+ */ 4757 | 0x10, 4758 | 0x20, 4759 | 0x88, 4760 | 0x88, 4761 | 0x50, 4762 | 0x20, 4763 | 0x20, 4764 | 0x20, 4765 | 0x00, 4766 | 0x00, 4767 | 4768 | /* Character 222 (0xde): 4769 | width 6 4770 | +------+ 4771 | | | 4772 | |* | 4773 | |**** | 4774 | |* * | 4775 | |**** | 4776 | |* | 4777 | |* | 4778 | |* | 4779 | | | 4780 | | | 4781 | +------+ */ 4782 | 0x00, 4783 | 0x80, 4784 | 0xf0, 4785 | 0x88, 4786 | 0xf0, 4787 | 0x80, 4788 | 0x80, 4789 | 0x80, 4790 | 0x00, 4791 | 0x00, 4792 | 4793 | /* Character 223 (0xdf): 4794 | width 6 4795 | +------+ 4796 | | | 4797 | | *** | 4798 | |* * | 4799 | |* * | 4800 | |* * | 4801 | |* * | 4802 | |* * | 4803 | |* ** | 4804 | | | 4805 | | | 4806 | +------+ */ 4807 | 0x00, 4808 | 0x70, 4809 | 0x88, 4810 | 0x90, 4811 | 0xa0, 4812 | 0x90, 4813 | 0x88, 4814 | 0xb0, 4815 | 0x00, 4816 | 0x00, 4817 | 4818 | /* Character 224 (0xe0): 4819 | width 6 4820 | +------+ 4821 | | * | 4822 | | * | 4823 | | | 4824 | | *** | 4825 | | * | 4826 | | **** | 4827 | |* * | 4828 | | **** | 4829 | | | 4830 | | | 4831 | +------+ */ 4832 | 0x40, 4833 | 0x20, 4834 | 0x00, 4835 | 0x70, 4836 | 0x08, 4837 | 0x78, 4838 | 0x88, 4839 | 0x78, 4840 | 0x00, 4841 | 0x00, 4842 | 4843 | /* Character 225 (0xe1): 4844 | width 6 4845 | +------+ 4846 | | * | 4847 | | * | 4848 | | | 4849 | | *** | 4850 | | * | 4851 | | **** | 4852 | |* * | 4853 | | **** | 4854 | | | 4855 | | | 4856 | +------+ */ 4857 | 0x10, 4858 | 0x20, 4859 | 0x00, 4860 | 0x70, 4861 | 0x08, 4862 | 0x78, 4863 | 0x88, 4864 | 0x78, 4865 | 0x00, 4866 | 0x00, 4867 | 4868 | /* Character 226 (0xe2): 4869 | width 6 4870 | +------+ 4871 | | * | 4872 | | * * | 4873 | | | 4874 | | *** | 4875 | | * | 4876 | | **** | 4877 | |* * | 4878 | | **** | 4879 | | | 4880 | | | 4881 | +------+ */ 4882 | 0x20, 4883 | 0x50, 4884 | 0x00, 4885 | 0x70, 4886 | 0x08, 4887 | 0x78, 4888 | 0x88, 4889 | 0x78, 4890 | 0x00, 4891 | 0x00, 4892 | 4893 | /* Character 227 (0xe3): 4894 | width 6 4895 | +------+ 4896 | | * * | 4897 | | * * | 4898 | | | 4899 | | *** | 4900 | | * | 4901 | | **** | 4902 | |* * | 4903 | | **** | 4904 | | | 4905 | | | 4906 | +------+ */ 4907 | 0x28, 4908 | 0x50, 4909 | 0x00, 4910 | 0x70, 4911 | 0x08, 4912 | 0x78, 4913 | 0x88, 4914 | 0x78, 4915 | 0x00, 4916 | 0x00, 4917 | 4918 | /* Character 228 (0xe4): 4919 | width 6 4920 | +------+ 4921 | | | 4922 | | * * | 4923 | | | 4924 | | *** | 4925 | | * | 4926 | | **** | 4927 | |* * | 4928 | | **** | 4929 | | | 4930 | | | 4931 | +------+ */ 4932 | 0x00, 4933 | 0x50, 4934 | 0x00, 4935 | 0x70, 4936 | 0x08, 4937 | 0x78, 4938 | 0x88, 4939 | 0x78, 4940 | 0x00, 4941 | 0x00, 4942 | 4943 | /* Character 229 (0xe5): 4944 | width 6 4945 | +------+ 4946 | | * | 4947 | | * * | 4948 | | * | 4949 | | *** | 4950 | | * | 4951 | | **** | 4952 | |* * | 4953 | | **** | 4954 | | | 4955 | | | 4956 | +------+ */ 4957 | 0x20, 4958 | 0x50, 4959 | 0x20, 4960 | 0x70, 4961 | 0x08, 4962 | 0x78, 4963 | 0x88, 4964 | 0x78, 4965 | 0x00, 4966 | 0x00, 4967 | 4968 | /* Character 230 (0xe6): 4969 | width 6 4970 | +------+ 4971 | | | 4972 | | | 4973 | | | 4974 | | **** | 4975 | | * *| 4976 | | *****| 4977 | |* * | 4978 | | *****| 4979 | | | 4980 | | | 4981 | +------+ */ 4982 | 0x00, 4983 | 0x00, 4984 | 0x00, 4985 | 0x78, 4986 | 0x14, 4987 | 0x7c, 4988 | 0x90, 4989 | 0x7c, 4990 | 0x00, 4991 | 0x00, 4992 | 4993 | /* Character 231 (0xe7): 4994 | width 6 4995 | +------+ 4996 | | | 4997 | | | 4998 | | | 4999 | | *** | 5000 | |* * | 5001 | |* | 5002 | |* * | 5003 | | *** | 5004 | | * | 5005 | | * | 5006 | +------+ */ 5007 | 0x00, 5008 | 0x00, 5009 | 0x00, 5010 | 0x70, 5011 | 0x88, 5012 | 0x80, 5013 | 0x88, 5014 | 0x70, 5015 | 0x20, 5016 | 0x40, 5017 | 5018 | /* Character 232 (0xe8): 5019 | width 6 5020 | +------+ 5021 | | * | 5022 | | * | 5023 | | | 5024 | | *** | 5025 | |* * | 5026 | |***** | 5027 | |* | 5028 | | *** | 5029 | | | 5030 | | | 5031 | +------+ */ 5032 | 0x40, 5033 | 0x20, 5034 | 0x00, 5035 | 0x70, 5036 | 0x88, 5037 | 0xf8, 5038 | 0x80, 5039 | 0x70, 5040 | 0x00, 5041 | 0x00, 5042 | 5043 | /* Character 233 (0xe9): 5044 | width 6 5045 | +------+ 5046 | | * | 5047 | | * | 5048 | | | 5049 | | *** | 5050 | |* * | 5051 | |***** | 5052 | |* | 5053 | | *** | 5054 | | | 5055 | | | 5056 | +------+ */ 5057 | 0x10, 5058 | 0x20, 5059 | 0x00, 5060 | 0x70, 5061 | 0x88, 5062 | 0xf8, 5063 | 0x80, 5064 | 0x70, 5065 | 0x00, 5066 | 0x00, 5067 | 5068 | /* Character 234 (0xea): 5069 | width 6 5070 | +------+ 5071 | | * | 5072 | | * * | 5073 | | | 5074 | | *** | 5075 | |* * | 5076 | |***** | 5077 | |* | 5078 | | *** | 5079 | | | 5080 | | | 5081 | +------+ */ 5082 | 0x20, 5083 | 0x50, 5084 | 0x00, 5085 | 0x70, 5086 | 0x88, 5087 | 0xf8, 5088 | 0x80, 5089 | 0x70, 5090 | 0x00, 5091 | 0x00, 5092 | 5093 | /* Character 235 (0xeb): 5094 | width 6 5095 | +------+ 5096 | | | 5097 | | * * | 5098 | | | 5099 | | *** | 5100 | |* * | 5101 | |***** | 5102 | |* | 5103 | | *** | 5104 | | | 5105 | | | 5106 | +------+ */ 5107 | 0x00, 5108 | 0x50, 5109 | 0x00, 5110 | 0x70, 5111 | 0x88, 5112 | 0xf8, 5113 | 0x80, 5114 | 0x70, 5115 | 0x00, 5116 | 0x00, 5117 | 5118 | /* Character 236 (0xec): 5119 | width 6 5120 | +------+ 5121 | | * | 5122 | | * | 5123 | | | 5124 | | ** | 5125 | | * | 5126 | | * | 5127 | | * | 5128 | | *** | 5129 | | | 5130 | | | 5131 | +------+ */ 5132 | 0x40, 5133 | 0x20, 5134 | 0x00, 5135 | 0x60, 5136 | 0x20, 5137 | 0x20, 5138 | 0x20, 5139 | 0x70, 5140 | 0x00, 5141 | 0x00, 5142 | 5143 | /* Character 237 (0xed): 5144 | width 6 5145 | +------+ 5146 | | * | 5147 | | * | 5148 | | | 5149 | | ** | 5150 | | * | 5151 | | * | 5152 | | * | 5153 | | *** | 5154 | | | 5155 | | | 5156 | +------+ */ 5157 | 0x20, 5158 | 0x40, 5159 | 0x00, 5160 | 0x60, 5161 | 0x20, 5162 | 0x20, 5163 | 0x20, 5164 | 0x70, 5165 | 0x00, 5166 | 0x00, 5167 | 5168 | /* Character 238 (0xee): 5169 | width 6 5170 | +------+ 5171 | | * | 5172 | | * * | 5173 | | | 5174 | | ** | 5175 | | * | 5176 | | * | 5177 | | * | 5178 | | *** | 5179 | | | 5180 | | | 5181 | +------+ */ 5182 | 0x20, 5183 | 0x50, 5184 | 0x00, 5185 | 0x60, 5186 | 0x20, 5187 | 0x20, 5188 | 0x20, 5189 | 0x70, 5190 | 0x00, 5191 | 0x00, 5192 | 5193 | /* Character 239 (0xef): 5194 | width 6 5195 | +------+ 5196 | | | 5197 | | * * | 5198 | | | 5199 | | ** | 5200 | | * | 5201 | | * | 5202 | | * | 5203 | | *** | 5204 | | | 5205 | | | 5206 | +------+ */ 5207 | 0x00, 5208 | 0x50, 5209 | 0x00, 5210 | 0x60, 5211 | 0x20, 5212 | 0x20, 5213 | 0x20, 5214 | 0x70, 5215 | 0x00, 5216 | 0x00, 5217 | 5218 | /* Character 240 (0xf0): 5219 | width 6 5220 | +------+ 5221 | | | 5222 | |** | 5223 | | ** | 5224 | | *** | 5225 | |* * | 5226 | |* * | 5227 | |* * | 5228 | | *** | 5229 | | | 5230 | | | 5231 | +------+ */ 5232 | 0x00, 5233 | 0xc0, 5234 | 0x30, 5235 | 0x70, 5236 | 0x88, 5237 | 0x88, 5238 | 0x88, 5239 | 0x70, 5240 | 0x00, 5241 | 0x00, 5242 | 5243 | /* Character 241 (0xf1): 5244 | width 6 5245 | +------+ 5246 | | * * | 5247 | | * * | 5248 | | | 5249 | |* ** | 5250 | |** * | 5251 | |* * | 5252 | |* * | 5253 | |* * | 5254 | | | 5255 | | | 5256 | +------+ */ 5257 | 0x28, 5258 | 0x50, 5259 | 0x00, 5260 | 0xb0, 5261 | 0xc8, 5262 | 0x88, 5263 | 0x88, 5264 | 0x88, 5265 | 0x00, 5266 | 0x00, 5267 | 5268 | /* Character 242 (0xf2): 5269 | width 6 5270 | +------+ 5271 | | * | 5272 | | * | 5273 | | | 5274 | | *** | 5275 | |* * | 5276 | |* * | 5277 | |* * | 5278 | | *** | 5279 | | | 5280 | | | 5281 | +------+ */ 5282 | 0x40, 5283 | 0x20, 5284 | 0x00, 5285 | 0x70, 5286 | 0x88, 5287 | 0x88, 5288 | 0x88, 5289 | 0x70, 5290 | 0x00, 5291 | 0x00, 5292 | 5293 | /* Character 243 (0xf3): 5294 | width 6 5295 | +------+ 5296 | | * | 5297 | | * | 5298 | | | 5299 | | *** | 5300 | |* * | 5301 | |* * | 5302 | |* * | 5303 | | *** | 5304 | | | 5305 | | | 5306 | +------+ */ 5307 | 0x10, 5308 | 0x20, 5309 | 0x00, 5310 | 0x70, 5311 | 0x88, 5312 | 0x88, 5313 | 0x88, 5314 | 0x70, 5315 | 0x00, 5316 | 0x00, 5317 | 5318 | /* Character 244 (0xf4): 5319 | width 6 5320 | +------+ 5321 | | * | 5322 | | * * | 5323 | | | 5324 | | *** | 5325 | |* * | 5326 | |* * | 5327 | |* * | 5328 | | *** | 5329 | | | 5330 | | | 5331 | +------+ */ 5332 | 0x20, 5333 | 0x50, 5334 | 0x00, 5335 | 0x70, 5336 | 0x88, 5337 | 0x88, 5338 | 0x88, 5339 | 0x70, 5340 | 0x00, 5341 | 0x00, 5342 | 5343 | /* Character 245 (0xf5): 5344 | width 6 5345 | +------+ 5346 | | * * | 5347 | | * * | 5348 | | | 5349 | | *** | 5350 | |* * | 5351 | |* * | 5352 | |* * | 5353 | | *** | 5354 | | | 5355 | | | 5356 | +------+ */ 5357 | 0x28, 5358 | 0x50, 5359 | 0x00, 5360 | 0x70, 5361 | 0x88, 5362 | 0x88, 5363 | 0x88, 5364 | 0x70, 5365 | 0x00, 5366 | 0x00, 5367 | 5368 | /* Character 246 (0xf6): 5369 | width 6 5370 | +------+ 5371 | | | 5372 | | * * | 5373 | | | 5374 | | *** | 5375 | |* * | 5376 | |* * | 5377 | |* * | 5378 | | *** | 5379 | | | 5380 | | | 5381 | +------+ */ 5382 | 0x00, 5383 | 0x50, 5384 | 0x00, 5385 | 0x70, 5386 | 0x88, 5387 | 0x88, 5388 | 0x88, 5389 | 0x70, 5390 | 0x00, 5391 | 0x00, 5392 | 5393 | /* Character 247 (0xf7): 5394 | width 6 5395 | +------+ 5396 | | | 5397 | | | 5398 | | * | 5399 | | | 5400 | |***** | 5401 | | | 5402 | | * | 5403 | | | 5404 | | | 5405 | | | 5406 | +------+ */ 5407 | 0x00, 5408 | 0x00, 5409 | 0x20, 5410 | 0x00, 5411 | 0xf8, 5412 | 0x00, 5413 | 0x20, 5414 | 0x00, 5415 | 0x00, 5416 | 0x00, 5417 | 5418 | /* Character 248 (0xf8): 5419 | width 6 5420 | +------+ 5421 | | | 5422 | | | 5423 | | | 5424 | | **** | 5425 | |* ** | 5426 | |* * * | 5427 | |** * | 5428 | |**** | 5429 | | | 5430 | | | 5431 | +------+ */ 5432 | 0x00, 5433 | 0x00, 5434 | 0x00, 5435 | 0x78, 5436 | 0x98, 5437 | 0xa8, 5438 | 0xc8, 5439 | 0xf0, 5440 | 0x00, 5441 | 0x00, 5442 | 5443 | /* Character 249 (0xf9): 5444 | width 6 5445 | +------+ 5446 | | * | 5447 | | * | 5448 | | | 5449 | |* * | 5450 | |* * | 5451 | |* * | 5452 | |* ** | 5453 | | ** * | 5454 | | | 5455 | | | 5456 | +------+ */ 5457 | 0x40, 5458 | 0x20, 5459 | 0x00, 5460 | 0x88, 5461 | 0x88, 5462 | 0x88, 5463 | 0x98, 5464 | 0x68, 5465 | 0x00, 5466 | 0x00, 5467 | 5468 | /* Character 250 (0xfa): 5469 | width 6 5470 | +------+ 5471 | | * | 5472 | | * | 5473 | | | 5474 | |* * | 5475 | |* * | 5476 | |* * | 5477 | |* ** | 5478 | | ** * | 5479 | | | 5480 | | | 5481 | +------+ */ 5482 | 0x10, 5483 | 0x20, 5484 | 0x00, 5485 | 0x88, 5486 | 0x88, 5487 | 0x88, 5488 | 0x98, 5489 | 0x68, 5490 | 0x00, 5491 | 0x00, 5492 | 5493 | /* Character 251 (0xfb): 5494 | width 6 5495 | +------+ 5496 | | * | 5497 | | * * | 5498 | | | 5499 | |* * | 5500 | |* * | 5501 | |* * | 5502 | |* ** | 5503 | | ** * | 5504 | | | 5505 | | | 5506 | +------+ */ 5507 | 0x20, 5508 | 0x50, 5509 | 0x00, 5510 | 0x88, 5511 | 0x88, 5512 | 0x88, 5513 | 0x98, 5514 | 0x68, 5515 | 0x00, 5516 | 0x00, 5517 | 5518 | /* Character 252 (0xfc): 5519 | width 6 5520 | +------+ 5521 | | | 5522 | | * * | 5523 | | | 5524 | |* * | 5525 | |* * | 5526 | |* * | 5527 | |* ** | 5528 | | ** * | 5529 | | | 5530 | | | 5531 | +------+ */ 5532 | 0x00, 5533 | 0x50, 5534 | 0x00, 5535 | 0x88, 5536 | 0x88, 5537 | 0x88, 5538 | 0x98, 5539 | 0x68, 5540 | 0x00, 5541 | 0x00, 5542 | 5543 | /* Character 253 (0xfd): 5544 | width 6 5545 | +------+ 5546 | | | 5547 | | * | 5548 | | * | 5549 | |* * | 5550 | |* * | 5551 | |* ** | 5552 | | ** * | 5553 | | * | 5554 | |* * | 5555 | | *** | 5556 | +------+ */ 5557 | 0x00, 5558 | 0x10, 5559 | 0x20, 5560 | 0x88, 5561 | 0x88, 5562 | 0x98, 5563 | 0x68, 5564 | 0x08, 5565 | 0x88, 5566 | 0x70, 5567 | 5568 | /* Character 254 (0xfe): 5569 | width 6 5570 | +------+ 5571 | | | 5572 | | | 5573 | |* | 5574 | |**** | 5575 | |* * | 5576 | |* * | 5577 | |* * | 5578 | |**** | 5579 | |* | 5580 | |* | 5581 | +------+ */ 5582 | 0x00, 5583 | 0x00, 5584 | 0x80, 5585 | 0xf0, 5586 | 0x88, 5587 | 0x88, 5588 | 0x88, 5589 | 0xf0, 5590 | 0x80, 5591 | 0x80, 5592 | 5593 | /* Character 255 (0xff): 5594 | width 6 5595 | +------+ 5596 | | | 5597 | | * * | 5598 | | | 5599 | |* * | 5600 | |* * | 5601 | |* ** | 5602 | | ** * | 5603 | | * | 5604 | |* * | 5605 | | *** | 5606 | +------+ */ 5607 | 0x00, 5608 | 0x50, 5609 | 0x00, 5610 | 0x88, 5611 | 0x88, 5612 | 0x98, 5613 | 0x68, 5614 | 0x08, 5615 | 0x88, 5616 | 0x70, 5617 | }; -------------------------------------------------------------------------------- /console.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "screen.h" 3 | #include "console.h" 4 | #include "utils.h" 5 | #include "charmaps.h" 6 | 7 | int col=0; 8 | int line=0; 9 | 10 | int getConsoleCol() { 11 | return col; 12 | } 13 | 14 | int getConsoleRow() { 15 | return line; 16 | } 17 | 18 | void setConsoleCol(int newcol) { 19 | col = newcol; 20 | } 21 | 22 | void setConsoleRow(int newline) { 23 | line = newline; 24 | } 25 | 26 | void dispBuf(char* message, int params) 27 | { int ret = params & I_AUTORET; 28 | int trsp = params & I_TRANSP; 29 | int bold = params & I_BOLD; 30 | int l = strlen(message); 31 | int i, stop=0; 32 | for (i = 0; i < l && !stop; i++) { 33 | if (message[i] == 0x0A) { 34 | if ( ret ) 35 | { col = 0; 36 | line ++; 37 | } 38 | else 39 | { putChar(col*CHAR_WIDTH, line*CHAR_HEIGHT, ' ', trsp, bold); 40 | col++; 41 | } 42 | } else { 43 | putChar(col*CHAR_WIDTH, line*CHAR_HEIGHT, message[i], trsp, bold); 44 | col ++; 45 | } 46 | if (col >= MAX_COL) 47 | { if ( !ret ) stop=1; 48 | else 49 | { col = 0; 50 | line ++; 51 | } 52 | } 53 | if(line>=MAX_LGN) { line=0; } 54 | } 55 | } 56 | 57 | void disp(char* msg, int params) 58 | { dispBuf(msg,params); 59 | } 60 | 61 | void displnBuf( unsigned char* buf, char* message, int params) 62 | { dispBuf(message, params); 63 | col=0; 64 | line++; 65 | if(line>=MAX_LGN) { line=0; } 66 | } 67 | 68 | void displn(char* msg, int params) 69 | { displnBuf(getScreen(),msg,params); 70 | } 71 | 72 | void resetConsole() 73 | { col=0; 74 | line=0; 75 | } -------------------------------------------------------------------------------- /console.h: -------------------------------------------------------------------------------- 1 | #define MAX_COL SCREEN_WIDTH/CHAR_WIDTH 2 | #define MAX_LGN SCREEN_HEIGHT/CHAR_HEIGHT 3 | #define LSEPARATOR "----------------------------------------" 4 | 5 | #define I_AUTORET 1 6 | #define I_TRANSP 2 7 | #define I_BOLD 4 8 | 9 | 10 | void dispBuf(char* message, int params); 11 | void disp(char* msg, int params); 12 | void displnBuf( unsigned char* buf, char* message, int params); 13 | void displn(char* msg, int params); 14 | void resetConsole(); 15 | int getConsoleCol(); 16 | int getConsoleRow(); 17 | void setConsoleCol(int col); 18 | void setConsoleRow(int line); 19 | 20 | -------------------------------------------------------------------------------- /makefile: -------------------------------------------------------------------------------- 1 | DEBUG = FALSE 2 | 3 | GCC = nspire-gcc 4 | AS = nspire-as 5 | GXX = nspire-g++ 6 | LD = nspire-ld 7 | GENZEHN = genzehn 8 | 9 | GCCFLAGS = -Wall -W -Wextra -marm -Wno-missing-braces -Wno-unused-parameter -flto 10 | LDFLAGS = -flto 11 | ZEHNFLAGS = --name "backSpire" --240x320-support true 12 | 13 | ifeq ($(DEBUG),FALSE) 14 | GCCFLAGS += -Os 15 | else 16 | GCCFLAGS += -O0 -g 17 | endif 18 | 19 | OBJS = $(patsubst %.c, %.o, $(shell find . -name \*.c)) 20 | OBJS += $(patsubst %.cpp, %.o, $(shell find . -name \*.cpp)) 21 | OBJS += $(patsubst %.S, %.o, $(shell find . -name \*.S)) 22 | EXE = backspire 23 | DISTDIR = . 24 | vpath %.tns $(DISTDIR) 25 | vpath %.elf $(DISTDIR) 26 | 27 | all: $(EXE).tns 28 | 29 | %.o: %.c 30 | $(GCC) $(GCCFLAGS) -c $< -o $@ 31 | 32 | %.o: %.cpp 33 | $(GXX) $(GCCFLAGS) -c $< -o $@ 34 | 35 | %.o: %.S 36 | $(AS) -c $< -o $@ 37 | 38 | $(EXE).elf: $(OBJS) 39 | mkdir -p $(DISTDIR) 40 | $(LD) $^ -o $@ $(LDFLAGS) 41 | 42 | $(EXE).tns: $(EXE).elf 43 | $(GENZEHN) --input $^ --output $@.zehn $(ZEHNFLAGS) 44 | make-prg $@.zehn $@ 45 | rm $@.zehn 46 | 47 | clean: 48 | rm -f $(OBJS) $(DISTDIR)/$(EXE).tns $(DISTDIR)/$(EXE).elf $(DISTDIR)/$(EXE).zehn 49 | -------------------------------------------------------------------------------- /nand.h: -------------------------------------------------------------------------------- 1 | #define NAND_PAGE_SIZE (has_colors?0x800:0x200) 2 | #define NAND_BLOCK_SIZE ((has_colors?0x40:0x20)*NAND_PAGE_SIZE) 3 | #define NAND_SIZE ((has_colors?128:32)*1024*1024) 4 | 5 | #define CLASSIC_CX_NPARTS 5 6 | #define CX2_NPARTS 14 7 | 8 | // offsets for the older Nspire CX manuf partition 9 | #define MANUF_PARTTABLE_OFFSET 0x818 10 | #define MANUF_PARTTABLE_ID "\x91\x5F\x9E\x4C" 11 | #define MANUF_PARTTABLE_ID_SIZE 4 12 | #define MANUF_DIAGS_OFFSET 0x82c 13 | #define MANUF_BOOT2_OFFSET 0x830 14 | #define MANUF_BOOTD_OFFSET 0x834 15 | #define MANUF_FILES_OFFSET 0x838 16 | #define MANUF_PTABLE_OFFSET 0x818 17 | #define MANUF_PTABLE_ID "\x91\x5F\x9E\x4C" 18 | #define MANUF_CR4_OFFSET 0x81D 19 | 20 | // page offsets for classic Nspire partitions, or older Nspire CX without a partition table 21 | #define MANUF_PAGE_OFFSET 0x00000 22 | #define BOOT2_PAGE_OFFSET 0x00020 23 | #define BOOTD_PAGE_OFFSET 0x00A80 24 | #define DIAGS_PAGE_OFFSET 0x00B00 25 | #define FILES_PAGE_OFFSET 0x01000 26 | #define NDEND_PAGE_OFFSET 0x10000 27 | 28 | #define CX2_MANUF_PAGE_OFFSET 0x00000 29 | #define CX2_BOOTL_PAGE_OFFSET 0x00040 30 | #define CX2_PTTDT_PAGE_OFFSET 0x00140 31 | #define CX2_UNKN1_PAGE_OFFSET 0x00180 32 | #define CX2_DEVCR_PAGE_OFFSET 0x001C0 33 | #define CX2_OSLDR_PAGE_OFFSET 0x00200 34 | #define CX2_INSTL_PAGE_OFFSET 0x002C0 35 | #define CX2_OINST_PAGE_OFFSET 0x004C0 36 | #define CX2_OSDAT_PAGE_OFFSET 0x006C0 37 | #define CX2_DIAGS_PAGE_OFFSET 0x00740 38 | #define CX2_UNKN2_PAGE_OFFSET 0x00880 39 | #define CX2_OSYST_PAGE_OFFSET 0x00900 40 | #define CX2_LOGIN_PAGE_OFFSET 0x01C80 41 | #define CX2_FILES_PAGE_OFFSET 0x03240 42 | #define CX2_NDEND_PAGE_OFFSET 0x10000 43 | -------------------------------------------------------------------------------- /ndlessext.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "nand.h" 3 | 4 | // indexes of OSes as used in Ndless 5 | enum { 6 | OSCL31N,OSCL31C,OSCX31N,OSCX31C,OSCM31N,OSCM31C, 7 | OSCL36N,OSCL36C,OSCX36N,OSCX36C, 8 | OSCL390N,OSCL390C,OSCX390N,OSCX390C, 9 | OSCL391N,OSCL391C,OSCX391N,OSCX391C, 10 | OSCX400N,OSCX400C, 11 | OSCX403N,OSCX403C, 12 | OSCX42N,OSCX42C, 13 | OSCX43N,OSCX43C, 14 | OSCX44N,OSCX44C, 15 | OSCX450N,OSCX450C, 16 | OSCX451N,OSCX451C, 17 | OSCX453N,OSCX453C, 18 | OSCXII52N,OSCXII52T,OSCXII52C, 19 | OSCX454N,OSCX454C, 20 | OSCXII53N,OSCXII53T,OSCXII53C, 21 | OSCX455N, OSCX455C, 22 | OSCXII62N, OSCXII62T, OSCXII62C, 23 | N_OS 24 | }; 25 | 26 | // get current OS index for Ndless 27 | int get_os() { 28 | unsigned int vals[N_OS]; 29 | for(int i=0; i= OSCL31N && os <=OSCM31C && nl_ndless_rev() < 989) // Ndless 3.1 104 | read_nand_31(dest, size, offset, unknown, percent_max, progress_cb); 105 | else 106 | read_nand(dest, size, offset, unknown, percent_max, progress_cb); 107 | } 108 | 109 | int ext_write_nand(void *source,int size, unsigned int offset) { 110 | int os = get_os(); 111 | if((os >= OSCXII52N && os <= OSCXII52C) || (os >= OSCXII53N && os <= OSCXII53C) || (os >= OSCXII62N && os <= OSCXII62C)) { 112 | while(size) { 113 | uint32_t tsize = (size > NAND_BLOCK_SIZE) ? NAND_BLOCK_SIZE : size; 114 | write_nand_cx2(offset, source, size); 115 | size -= tsize; 116 | offset += tsize; 117 | source += tsize; 118 | } 119 | } 120 | else if (os >= OSCL31N && os <=OSCM31C && nl_ndless_rev() < 989) // Ndless 3.1 121 | return write_nand_31(source, size, offset); 122 | else 123 | return write_nand(source, size, offset); 124 | } 125 | 126 | int ext_erase_nand(int offset,int end) { 127 | int os = get_os(); 128 | if((os >= OSCXII52N && os <= OSCXII52C) || (os >= OSCXII53N && os <= OSCXII53C) || (os >= OSCXII62N && os <= OSCXII62C)) { 129 | int blocks = (int)((end+1-offset)/NAND_PAGE_SIZE/0x40); 130 | return erase_nand_cx2(offset, blocks); 131 | } 132 | else if (os >= OSCL31N && os <=OSCM31C && nl_ndless_rev() < 989) // Ndless 3.1 133 | return erase_nand_31(offset, end); 134 | else 135 | return nand_erase_range(offset, end); 136 | } 137 | 138 | -------------------------------------------------------------------------------- /ndlessext.h: -------------------------------------------------------------------------------- 1 | int get_os(); 2 | void ext_read_nand(void* dest, int size, int offset, int unknown, int percent_max, void *progress_cb); 3 | int ext_write_nand(void *source,int size, unsigned int offset); 4 | int ext_erase_nand(int offset,int end); -------------------------------------------------------------------------------- /screen.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "types.h" 3 | #include "utils.h" 4 | #include "screen.h" 5 | #include "charmaps.h" 6 | #include "nand.h" 7 | #include "ndlessext.h" 8 | #define SCREEN_CONTRAST_ADDR 0x900F0020 9 | 10 | #define SCREEN_BASE_PTR 0xC0000010 11 | #define SCREEN_MODE_ADDR 0xC000001C 12 | #define SCREEN_INT_ADDR 0xC0000020 13 | 14 | u16* SCREEN_BASE_ADDR = 0; 15 | u16* orig_screen=0; 16 | u16* malloc_screen=0; 17 | u16 offscreen[SCREEN_WIDTH*SCREEN_HEIGHT]; 18 | //u8 offscreen[SCREEN_SIZE]; 19 | int contrast=0; 20 | u8 screen_type = SCR_320x240_565; 21 | u16 curcolor=0; 22 | 23 | u16* getScreen() 24 | { return SCREEN_BASE_ADDR; 25 | } 26 | 27 | u16* getOffScreen() 28 | { return offscreen; 29 | } 30 | 31 | void setScreen(u16* buf) 32 | { 33 | SCREEN_BASE_ADDR=buf; 34 | *(volatile unsigned*) SCREEN_BASE_PTR = buf; 35 | } 36 | 37 | u8 getScreenType() { 38 | if(has_colors) { 39 | if(nl_ndless_rev() >= 2004) { // Ndless 4.2+ 40 | if(lcd_type()==SCR_240x320_565) 41 | return SCR_240x320_565; 42 | } 43 | else { // Ndless < 4.2 44 | char f=0; 45 | ext_read_nand(&f, 1, MANUF_CR4_OFFSET, 0, 0, 0); 46 | if(f==1) 47 | return SCR_240x320_565; 48 | } 49 | } 50 | return SCR_320x240_565; 51 | } 52 | 53 | void initScreen() 54 | { 55 | screen_type=getScreenType(); 56 | setCurColorRGB(0,0,0); 57 | SCREEN_BASE_ADDR =*(u16**)SCREEN_BASE_PTR; 58 | orig_screen = SCREEN_BASE_ADDR; 59 | contrast=*(volatile unsigned*) SCREEN_CONTRAST_ADDR; 60 | } 61 | 62 | 63 | u8 off_mode=0; 64 | unsigned int setContrast(unsigned int level) 65 | { unsigned int lowlevel = level &0b11111111; 66 | if(lowlevel>CONTRAST_MAX) lowlevel=CONTRAST_MAX; 67 | if(lowlevel>3; 180 | r=(val&0b1111100000000000)>>8; 181 | *ptr=rgb2gs(r,g,b); 182 | ptr++; 183 | } 184 | } 185 | 186 | void convertRGB565320to240(u16* buffer) { 187 | u16 i,j; 188 | u16* ptr=buffer; 189 | u16* tmpbuffer=malloc(SCREEN_SIZE); 190 | u16 val; 191 | for(j=0;j0) { 238 | for (i=0;i= SCREEN_WIDTH-CHAR_WIDTH) 264 | { if(ret) 265 | { x = 0; 266 | y += CHAR_HEIGHT; 267 | } 268 | else 269 | stop=1; 270 | } 271 | } 272 | } 273 | 274 | void dispBufImgRGB(u16* buf, int16_t xoff, int16_t yoff, u8* img, u16 width, u16 height,u8 border) 275 | { 276 | u16 dwidth=width, dheight=height; 277 | u16 data_x=0, data_y=0; 278 | u16 x = 0, y = 0; 279 | float i, j; 280 | if(xoff < 0){ 281 | dwidth = dwidth + xoff; 282 | data_x = (int)(-xoff); 283 | xoff = 0; 284 | } 285 | if(yoff < 0){ 286 | dheight = dheight + yoff; 287 | data_y = (int)(-yoff); 288 | yoff = 0; 289 | } 290 | u8 r,g,b; 291 | for(i=0, x=0; (int)i < dwidth && x < SCREEN_WIDTH; i+= 1, x++) 292 | for(j=0, y=0; (int)j < dheight && y < SCREEN_HEIGHT; j+= 1, y++) 293 | { b=img[(((int)j+data_y)*width+(int)i+data_x)*3]; 294 | g=img[(((int)j+data_y)*width+(int)i+data_x)*3+1]; 295 | r=img[(((int)j+data_y)*width+(int)i+data_x)*3+2]; 296 | if(!border || b!=0 || g!=0 || r!=0) 297 | setPixelRGB(xoff + x, yoff + dheight-1-y, r, g, b); 298 | } 299 | } 300 | 301 | void clrBuf(u16* buf) 302 | { 303 | if(has_colors || malloc_screen) 304 | clrBufBox(offscreen,0,0,SCREEN_WIDTH,SCREEN_HEIGHT); 305 | else 306 | memset(SCREEN_BASE_ADDR,0,SCREEN_PIXELS/2); 307 | } 308 | 309 | void clrBufBox(u16* buf, u16 x, u16 y, u16 w, u16 h) { 310 | u16 color=~curcolor; 311 | u16 i,j; 312 | for(j=0;j 2 | #include "types.h" 3 | 4 | #define SCREEN_PIXELS (SCREEN_WIDTH*SCREEN_HEIGHT) 5 | #define SCREEN_SIZE (SCREEN_PIXELS*2) 6 | #define CONTRAST_MIN 0x60 7 | #define CONTRAST_MAX 0xC0 8 | 9 | #define rgb2gs(r,g,b) (((~((((r)*30+(g)*59+(b)*11)/100)>>4))&0b1111)<<1) 10 | #define rgb565(r,g,b) ((((r)<<8)&0xf800)|(((g)<<3)&0x07e0)|((b)>>3)) 11 | 12 | u8 getScreenType(); 13 | 14 | void convertRGB565toGS(u16* sscreen, u16 w, u16 h); 15 | void convertRGB565320to240(u16* buffer); 16 | void convertRGB565(u16* buffer, u8 buf_type); 17 | void setCurColorRGB(u8 r,u8 g,u8 b); 18 | void invertCurColorRGB(); 19 | 20 | void setPixel(u16 x, u16 y, u16 color); 21 | void setPixelRGB(u16 x, u16 y, u8 r, u8 g, u8 b); 22 | 23 | void initScreen(); 24 | void showScreen(); 25 | void startScreen(); 26 | void stopScreen(); 27 | 28 | void setScreen(u16* buf); 29 | u16* getScreen(); 30 | u16* getOffScreen(); 31 | 32 | void switchScrOffOn(u8 s); 33 | unsigned int setContrast(unsigned int level); 34 | 35 | void putChar(u16 x, u16 y, char ch, u8 trsp, u8 bold); 36 | void drwBufStr(u16 x, u16 y, char* str, u8 ret, u8 trsp, u8 bold); 37 | 38 | void dispBufImgRGB(u16* buf, int16_t xoff, int16_t yoff, u8* img, u16 width, u16 height,u8 border); 39 | 40 | void drwBufHoriz(u16 y, u16 x1, u16 x2); 41 | void drwBufVert(u16 x, u16 y1, u16 y2); 42 | 43 | void drwBufBox(u16 x1, u16 y1, u16 x2, u16 y2); 44 | void drawBufFullBox(u16 x1, u16 y1, u16 x2, u16 y2); 45 | 46 | void clrBuf(u16* buf); 47 | void clrBufBox(u16* buf, u16 x, u16 y, u16 w, u16 h); 48 | -------------------------------------------------------------------------------- /types.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | typedef uint64_t u64; 4 | typedef uint32_t u32; 5 | typedef uint16_t u16; 6 | typedef uint8_t u8; 7 | -------------------------------------------------------------------------------- /utils.c: -------------------------------------------------------------------------------- 1 | #include "utils.h" 2 | #include "screen.h" 3 | #include "charmaps.h" 4 | 5 | void wait(int timesec) { 6 | volatile long int i; 7 | for(i=0;i 2 | #include "types.h" 3 | 4 | #define max(a,b) (((a)<(b))?(b):(a)) 5 | #define min(a,b) (((a)<(b))?(a):(b)) 6 | 7 | void wait(int timesec); 8 | void trigger_reset(void); 9 | 10 | enum {NS_CL, NS_CX, NS_CM, NS_CX2, NS_OTHER}; 11 | u8 getHardwareType(void); 12 | 13 | void resetCurColor(void); 14 | void setBlocksColor(void); 15 | void setPagesColor(void); 16 | void setBytesColor(void); 17 | void setInactiveColor(void); 18 | 19 | void dispNumStr(u16 x, u16 y, char* txt, int unit); 20 | void dispNum(u16 x, u16 y, u32 val,char* suffix, int unit, int n); 21 | --------------------------------------------------------------------------------