diff --git a/.ibmpclike.h.swp b/.ibmpclike.h.swp new file mode 100644 index 0000000..aaac9cd Binary files /dev/null and b/.ibmpclike.h.swp differ diff --git a/AppleCommander-ac-1.4.0.jar b/AppleCommander-ac-1.4.0.jar new file mode 100644 index 0000000..4d61bfc Binary files /dev/null and b/AppleCommander-ac-1.4.0.jar differ diff --git a/LICENSE b/LICENSE index 261eeb9..d159169 100644 --- a/LICENSE +++ b/LICENSE @@ -1,201 +1,339 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. - 1. Definitions. + Preamble - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. + The precise terms and conditions for copying, distribution and +modification follow. - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, - END OF TERMS AND CONDITIONS + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) - APPENDIX: How to apply the Apache License to your work. +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. - Copyright [yyyy] [name of copyright owner] + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. - http://www.apache.org/licenses/LICENSE-2.0 + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8812358 --- /dev/null +++ b/Makefile @@ -0,0 +1,64 @@ +# Builds circ demo + +# Requirements: +# 1. Gmake must be used. +# 2. The cc65 compiler must be properly setup. + +ifndef CC65_TARGET + CC65_TARGET:=apple2enh +endif + +CC=cl65 +CFLAGS=-O -t $(CC65_TARGET) -DTRACE +# The -S $6000 makes the start address $6000 so that both hi-res +# pages are available. +LDFLAGS=-t $(CC65_TARGET) -u __EXEHDR__ --start-addr 0x6000 +DISK_VOL=fonts +DISK=$(DISK_VOL).dsk +PGM=fonts +BASIC_AUX_TYPE=0x0801 +READ_TIME_LOAD_ADDR=0x0260 +AC=java -jar AppleCommander-ac-1.4.0.jar +SYS_LOAD_ADDR=0x2000 +BIN_LOAD_ADDR=0x0803 +FONT_HDRS=ibmpclike8.h ibmpclike12.h runes-english.h runes-anglo-saxon.h yolo.h salzalon.h + +######################################## + +all: $(DISK) + +$(DISK): $(PGM) + $(RM) $(DISK) + $(AC) -pro140 $(DISK) $(DISK_VOL) + $(AC) -as $(DISK) $(PGM) BIN < $(PGM) + +$(PGM): $(PGM).o + $(CC) $(LDFLAGS) -o $@ $^ + +$(PGM).o: $(PGM).c $(FONT_HDRS) + $(CC) $(CFLAGS) $(PGM).c + +salzalon.h: salzalon.txt mkfonthdr + ./mkfonthdr salzalon.txt > salzalon.h + +yolo.h: yolo.txt mkfonthdr + ./mkfonthdr yolo.txt > yolo.h + +ibmpclike8.h: ibmpclike8.txt mkfonthdr + ./mkfonthdr ibmpclike8.txt > ibmpclike8.h + +ibmpclike12.h: ibmpclike12.txt mkfonthdr + ./mkfonthdr ibmpclike12.txt > ibmpclike12.h + +runes-english.h: runes-english.txt mkfonthdr + ./mkfonthdr runes-english.txt > runes-english.h + +runes-anglo-saxon.h: runes-anglo-saxon.txt mkfonthdr + ./mkfonthdr runes-anglo-saxon.txt > runes-anglo-saxon.h + +mkfonthdr: mkfonthdr.c + gcc -g -o mkfonthdr mkfonthdr.c -lm + +clean: + $(RM) *.o $(PGM) $(DISK) $(GRAF_DRVR).s $(FONT_HDRS) mkfonthdr + diff --git a/fonts b/fonts new file mode 100644 index 0000000..2b07f74 Binary files /dev/null and b/fonts differ diff --git a/fonts.c b/fonts.c new file mode 100644 index 0000000..d9c6f6b --- /dev/null +++ b/fonts.c @@ -0,0 +1,175 @@ +#include /* memcpy */ +#include /* uint8_t, uint16_t */ + +#include "salzalon.h" + +#define SCREEN_PIXEL_WIDTH 280 +#define SCREEN_PIXEL_HEIGHT 192 +#define CHAR_PIXEL_WIDTH 7 +#define CHAR_PIXEL_HEIGHT 8 + +/* Soft switches */ +#define EIGHTY_COL_STORE_OFF ((uint8_t *) 0xc000) +#define EIGHTY_COL_STORE_ON ((uint8_t *) 0xc001) + +#define RAMRDOFF ((uint8_t *) 0xc002) +#define RAMRDON ((uint8_t *) 0xc003) +#define RAMWTOFF ((uint8_t *) 0xc004) +#define RAMWTON ((uint8_t *) 0xc005) +#define SET80COL ((uint8_t *) 0xc00d) +#define TEXTOFF ((uint8_t *) 0xc050) +#define MIXEDON ((uint8_t *) 0xc053) +#define PAGE2OFF ((uint8_t *) 0xc054) +#define PAGE2ON ((uint8_t *) 0xc055) +#define HIRESOFF ((uint8_t *) 0xc056) +#define HIRESON ((uint8_t *) 0xc057) +#define SETAN3 ((uint8_t *) 0xc05e) + +/* Subroutines */ +#define TEXT ((uint8_t *) 0xF399) +#define HGR2 ((uint8_t *) 0Xf3d8) +#define CLRHGR ((uint8_t *) 0XF3E2) + +#define ADDR uint8_t* + +uint8_t *yAddressTable[] = { +(uint8_t *) 0x2000, (uint8_t *) 0x2400, (uint8_t *) 0x2800, (uint8_t *) 0x2c00, +(uint8_t *) 0x3000, (uint8_t *) 0x3400, (uint8_t *) 0x3800, (uint8_t *) 0x3c00, +(uint8_t *) 0x2080, (uint8_t *) 0x2480, (uint8_t *) 0x2880, (uint8_t *) 0x2c80, +(uint8_t *) 0x3080, (uint8_t *) 0x3480, (uint8_t *) 0x3880, (uint8_t *) 0x3c80, +(uint8_t *) 0x2100, (uint8_t *) 0x2500, (uint8_t *) 0x2900, (uint8_t *) 0x2d00, +(uint8_t *) 0x3100, (uint8_t *) 0x3500, (uint8_t *) 0x3900, (uint8_t *) 0x3d00, +(uint8_t *) 0x2180, (uint8_t *) 0x2580, (uint8_t *) 0x2980, (uint8_t *) 0x2d80, +(uint8_t *) 0x3180, (uint8_t *) 0x3580, (uint8_t *) 0x3980, (uint8_t *) 0x3d80, +(uint8_t *) 0x2200, (uint8_t *) 0x2600, (uint8_t *) 0x2a00, (uint8_t *) 0x2e00, +(uint8_t *) 0x3200, (uint8_t *) 0x3600, (uint8_t *) 0x3a00, (uint8_t *) 0x3e00, +(uint8_t *) 0x2280, (uint8_t *) 0x2680, (uint8_t *) 0x2a80, (uint8_t *) 0x2e80, +(uint8_t *) 0x3280, (uint8_t *) 0x3680, (uint8_t *) 0x3a80, (uint8_t *) 0x3e80, +(uint8_t *) 0x2300, (uint8_t *) 0x2700, (uint8_t *) 0x2b00, (uint8_t *) 0x2f00, +(uint8_t *) 0x3300, (uint8_t *) 0x3700, (uint8_t *) 0x3b00, (uint8_t *) 0x3f00, +(uint8_t *) 0x2380, (uint8_t *) 0x2780, (uint8_t *) 0x2b80, (uint8_t *) 0x2f80, +(uint8_t *) 0x3380, (uint8_t *) 0x3780, (uint8_t *) 0x3b80, (uint8_t *) 0x3f80, +(uint8_t *) 0x2028, (uint8_t *) 0x2428, (uint8_t *) 0x2828, (uint8_t *) 0x2c28, +(uint8_t *) 0x3028, (uint8_t *) 0x3428, (uint8_t *) 0x3828, (uint8_t *) 0x3c28, +(uint8_t *) 0x20a8, (uint8_t *) 0x24a8, (uint8_t *) 0x28a8, (uint8_t *) 0x2ca8, +(uint8_t *) 0x30a8, (uint8_t *) 0x34a8, (uint8_t *) 0x38a8, (uint8_t *) 0x3ca8, +(uint8_t *) 0x2128, (uint8_t *) 0x2528, (uint8_t *) 0x2928, (uint8_t *) 0x2d28, +(uint8_t *) 0x3128, (uint8_t *) 0x3528, (uint8_t *) 0x3928, (uint8_t *) 0x3d28, +(uint8_t *) 0x21a8, (uint8_t *) 0x25a8, (uint8_t *) 0x29a8, (uint8_t *) 0x2da8, +(uint8_t *) 0x31a8, (uint8_t *) 0x35a8, (uint8_t *) 0x39a8, (uint8_t *) 0x3da8, +(uint8_t *) 0x2228, (uint8_t *) 0x2628, (uint8_t *) 0x2a28, (uint8_t *) 0x2e28, +(uint8_t *) 0x3228, (uint8_t *) 0x3628, (uint8_t *) 0x3a28, (uint8_t *) 0x3e28, +(uint8_t *) 0x22a8, (uint8_t *) 0x26a8, (uint8_t *) 0x2aa8, (uint8_t *) 0x2ea8, +(uint8_t *) 0x32a8, (uint8_t *) 0x36a8, (uint8_t *) 0x3aa8, (uint8_t *) 0x3ea8, +(uint8_t *) 0x2328, (uint8_t *) 0x2728, (uint8_t *) 0x2b28, (uint8_t *) 0x2f28, +(uint8_t *) 0x3328, (uint8_t *) 0x3728, (uint8_t *) 0x3b28, (uint8_t *) 0x3f28, +(uint8_t *) 0x23a8, (uint8_t *) 0x27a8, (uint8_t *) 0x2ba8, (uint8_t *) 0x2fa8, +(uint8_t *) 0x33a8, (uint8_t *) 0x37a8, (uint8_t *) 0x3ba8, (uint8_t *) 0x3fa8, +(uint8_t *) 0x2050, (uint8_t *) 0x2450, (uint8_t *) 0x2850, (uint8_t *) 0x2c50, +(uint8_t *) 0x3050, (uint8_t *) 0x3450, (uint8_t *) 0x3850, (uint8_t *) 0x3c50, +(uint8_t *) 0x20d0, (uint8_t *) 0x24d0, (uint8_t *) 0x28d0, (uint8_t *) 0x2cd0, +(uint8_t *) 0x30d0, (uint8_t *) 0x34d0, (uint8_t *) 0x38d0, (uint8_t *) 0x3cd0, +(uint8_t *) 0x2150, (uint8_t *) 0x2550, (uint8_t *) 0x2950, (uint8_t *) 0x2d50, +(uint8_t *) 0x3150, (uint8_t *) 0x3550, (uint8_t *) 0x3950, (uint8_t *) 0x3d50, +(uint8_t *) 0x21d0, (uint8_t *) 0x25d0, (uint8_t *) 0x29d0, (uint8_t *) 0x2dd0, +(uint8_t *) 0x31d0, (uint8_t *) 0x35d0, (uint8_t *) 0x39d0, (uint8_t *) 0x3dd0, +(uint8_t *) 0x2250, (uint8_t *) 0x2650, (uint8_t *) 0x2a50, (uint8_t *) 0x2e50, +(uint8_t *) 0x3250, (uint8_t *) 0x3650, (uint8_t *) 0x3a50, (uint8_t *) 0x3e50, +(uint8_t *) 0x22d0, (uint8_t *) 0x26d0, (uint8_t *) 0x2ad0, (uint8_t *) 0x2ed0, +(uint8_t *) 0x32d0, (uint8_t *) 0x36d0, (uint8_t *) 0x3ad0, (uint8_t *) 0x3ed0, +(uint8_t *) 0x2350, (uint8_t *) 0x2750, (uint8_t *) 0x2b50, (uint8_t *) 0x2f50, +(uint8_t *) 0x3350, (uint8_t *) 0x3750, (uint8_t *) 0x3b50, (uint8_t *) 0x3f50, +(uint8_t *) 0x23d0, (uint8_t *) 0x27d0, (uint8_t *) 0x2bd0, (uint8_t *) 0x2fd0, +(uint8_t *) 0x33d0, (uint8_t *) 0x37d0, (uint8_t *) 0x3bd0, (uint8_t *) 0x3fd0, +}; + +uint8_t capY[] = { + 0x22, + 0x92, + 0x14, + 0x8c, + 0x08, + 0x08, + 0x08, + 0x00 +}; + +struct Font +{ + uint8_t pixelWidth; + uint8_t pixelHeight; + uint8_t glyphCount; + uint8_t **glyphs; +}; + +struct Font blah = { 7, 12, 6, { {0} } }; + +uint8_t cursorX = 0; +uint8_t cursorY = 0; +struct Font *font; + +void drawChar(char c) +{ + uint8_t screenPixelY; + uint8_t charPixelY; + + for (charPixelY = 0, screenPixelY = cursorY * CHAR_PIXEL_HEIGHT; + charPixelY < CHAR_PIXEL_HEIGHT; + ++charPixelY, ++screenPixelY) { + /* Transfer one byte to memory representing 7 horizontal pixels + at vertical position Y */ + *(yAddressTable[screenPixelY] + cursorX) = salzalon[c][charPixelY]; + } + + if (cursorX < 40) { + ++cursorX; + } + else { + cursorX = 0; + ++cursorY; + } +} + +void main(void) +{ + uint8_t x = 10; + uint8_t y = 50; + char c; + + /* Set soft switches to turn on HGR page 1. */ + *TEXTOFF = (uint8_t) 1; + *HIRESON = (uint8_t) 1; + *MIXEDON = (uint8_t) 1; + *PAGE2OFF = (uint8_t) 1; + + for (c = '!'; c <= 'd'; ++c) + drawChar(c); + +/* + for (i = 0; i < 16; ++i) { + *(yAddressTable[y + i] + x) = salzalon[i]; + } + ++x; + for (i = 0; i < 16; ++i) { + *(yAddressTable[y + i] + x) = runes_as_ur[i]; + } + ++x; + for (i = 0; i < 16; ++i) { + *(yAddressTable[y + i] + x) = runes_as_thorn[i]; + } + x=10; + y+=16; + for (i = 0; i < 12; ++i) { + *(yAddressTable[y + i] + x) = salzalon[i]; + } + ++x; + for (i = 0; i < 12; ++i) { + *(yAddressTable[y + i] + x) = salzalon[i]; + } + ++x; + for (i = 0; i < 12; ++i) { + *(yAddressTable[y + i] + x) = salzalon[i]; + } +*/ +} + diff --git a/fonts.dsk b/fonts.dsk new file mode 100644 index 0000000..3b0f599 Binary files /dev/null and b/fonts.dsk differ diff --git a/ibmpclike.txt b/ibmpclike.txt new file mode 100644 index 0000000..933da41 --- /dev/null +++ b/ibmpclike.txt @@ -0,0 +1,391 @@ +12 +! +0000000 +0011000 +0111100 +0111100 +0011000 +0011000 +0000000 +0011000 +0011000 +0000000 +0000000 +0000000 +" +1100110 +1100110 +0100100 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +# +0000000 +0100100 +0100100 +1111110 +0100100 +0100100 +1111111 +0100100 +0100100 +0000000 +0000000 +0000000 +$ +0011000 +0011000 +0111100 +1100010 +1100000 +0111100 +0000110 +1000110 +0111100 +0011000 +0011000 +0000000 +% +0000000 +0000000 +1100010 +1100110 +0001100 +0011000 +0110000 +1100110 +1000110 +0000000 +0000000 +0000000 +& +0000000 +0011100 +0110110 +0011100 +0111010 +1101100 +1101100 +1101100 +0110110 +0000000 +0000000 +0000000 +' +0001100 +0001100 +0011000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +' +0001100 +0001100 +0011000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +( +0000000 +0001100 +0011000 +0010000 +0110000 +0110000 +0010000 +0011000 +0001100 +0000000 +0000000 +0000000 +) +0000000 +0110000 +0011000 +0001000 +0001100 +0001100 +0001000 +0011000 +0110000 +0000000 +0000000 +0000000 +* +0000000 +0000000 +0100100 +0011000 +1111110 +0011000 +0100100 +0000000 +0000000 +0000000 +0000000 +0000000 ++ +0000000 +0000000 +0011000 +0011000 +1111110 +0011000 +0011000 +0000000 +0000000 +0000000 +0000000 +0000000 +, +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0011000 +0011000 +0011000 +0110000 +0000000 +0000000 +- +0000000 +0000000 +0000000 +0000000 +1111110 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +. +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0011000 +0011000 +0000000 +0000000 +0000000 +/ +0000000 +0000000 +0000010 +0000110 +0001100 +0011000 +0110000 +1100000 +1000000 +0000000 +0000000 +0000000 +0 +0000000 +0111100 +1100110 +1100110 +1011010 +1011010 +1100110 +1100110 +0111100 +0000000 +0000000 +0000000 +1 +0000000 +0011000 +0111000 +1111000 +0011000 +0011000 +0011000 +0011000 +1111110 +0000000 +0000000 +0000000 +2 +0000000 +0111100 +1100110 +0000110 +0001100 +0011000 +0110000 +1100110 +1111110 +0000000 +0000000 +0000000 +3 +0000000 +0111100 +1100110 +0000110 +0111100 +0000110 +0000110 +1100110 +0111100 +0000000 +0000000 +0000000 +4 +0000000 +0001100 +0011100 +0110100 +1100100 +1111110 +0001100 +0001100 +0011110 +0000000 +0000000 +0000000 +5 +0000000 +1111110 +1100000 +1100000 +1111100 +0000110 +0000110 +1100110 +0111100 +0000000 +0000000 +0000000 +6 +0000000 +0011100 +0110000 +1100000 +1111100 +1100110 +1100110 +1100110 +0111100 +0000000 +0000000 +0000000 +7 +0000000 +1111110 +1100110 +0000110 +0000110 +0001100 +0011000 +0011000 +0011000 +0000000 +0000000 +0000000 +8 +0000000 +0111100 +1100110 +1100110 +0111100 +1100110 +1100110 +1100110 +0111100 +0000000 +0000000 +0000000 +9 +0000000 +0111100 +1100110 +1100110 +0111110 +0000110 +0000110 +0001100 +0111100 +0000000 +0000000 +0000000 +A +0000000 +0011000 +0111100 +1100110 +1100110 +1111110 +1100110 +1100110 +1100110 +0000000 +0000000 +0000000 +a +0000000 +0000000 +0000000 +0111100 +0000110 +0111110 +1100110 +1100110 +0111011 +0000000 +0000000 +0000000 +b +1110000 +0110000 +0111000 +0111100 +0110110 +0110110 +0110110 +0110110 +0111100 +0000000 +0000000 +0000000 +c +0000000 +0000000 +0000000 +0111100 +1100110 +1100000 +1100000 +1100110 +0111100 +0000000 +0000000 +0000000 diff --git a/ibmpclike12.h b/ibmpclike12.h new file mode 100644 index 0000000..c6367ee --- /dev/null +++ b/ibmpclike12.h @@ -0,0 +1,524 @@ +uint8_t ibmpclike12[128][12] = { + /* ASCII code 0x0 */ {0}, + /* ASCII code 0x1 */ {0}, + /* ASCII code 0x2 */ {0}, + /* ASCII code 0x3 */ {0}, + /* ASCII code 0x4 */ {0}, + /* ASCII code 0x5 */ {0}, + /* ASCII code 0x6 */ {0}, + /* ASCII code 0x7 */ {0}, + /* ASCII code 0x8 */ {0}, + /* ASCII code 0x9 */ {0}, + /* ASCII code 0xa */ {0}, + /* ASCII code 0xb */ {0}, + /* ASCII code 0xc */ {0}, + /* ASCII code 0xd */ {0}, + /* ASCII code 0xe */ {0}, + /* ASCII code 0xf */ {0}, + /* ASCII code 0x10 */ {0}, + /* ASCII code 0x11 */ {0}, + /* ASCII code 0x12 */ {0}, + /* ASCII code 0x13 */ {0}, + /* ASCII code 0x14 */ {0}, + /* ASCII code 0x15 */ {0}, + /* ASCII code 0x16 */ {0}, + /* ASCII code 0x17 */ {0}, + /* ASCII code 0x18 */ {0}, + /* ASCII code 0x19 */ {0}, + /* ASCII code 0x1a */ {0}, + /* ASCII code 0x1b */ {0}, + /* ASCII code 0x1c */ {0}, + /* ASCII code 0x1d */ {0}, + /* ASCII code 0x1e */ {0}, + /* ASCII code 0x1f */ {0}, + /* ASCII code 0x20 */ {0}, + /* Char '!', ASCII code 0x21 */ + { + 0x0, + 0xc, + 0x1e, + 0x1e, + 0xc, + 0xc, + 0x0, + 0xc, + 0xc, + 0x0, + 0x0, + 0x0, + }, + /* Char '"', ASCII code 0x22 */ + { + 0x33, + 0x33, + 0x12, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + }, + /* Char '#', ASCII code 0x23 */ + { + 0x0, + 0x12, + 0x12, + 0x3f, + 0x12, + 0x12, + 0x7f, + 0x12, + 0x12, + 0x0, + 0x0, + 0x0, + }, + /* Char '$', ASCII code 0x24 */ + { + 0xc, + 0xc, + 0x1e, + 0x23, + 0x3, + 0x1e, + 0x30, + 0x31, + 0x1e, + 0xc, + 0xc, + 0x0, + }, + /* Char '%', ASCII code 0x25 */ + { + 0x0, + 0x0, + 0x23, + 0x33, + 0x18, + 0xc, + 0x6, + 0x33, + 0x31, + 0x0, + 0x0, + 0x0, + }, + /* Char '&', ASCII code 0x26 */ + { + 0x0, + 0x1c, + 0x36, + 0x1c, + 0x2e, + 0x1b, + 0x1b, + 0x1b, + 0x36, + 0x0, + 0x0, + 0x0, + }, + /* Char ''', ASCII code 0x27 */ + { + 0x18, + 0x18, + 0xc, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + }, + /* Char ''', ASCII code 0x27 */ + { + 0x18, + 0x18, + 0xc, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + }, + /* Char '(', ASCII code 0x28 */ + { + 0x0, + 0x18, + 0xc, + 0x4, + 0x6, + 0x6, + 0x4, + 0xc, + 0x18, + 0x0, + 0x0, + 0x0, + }, + /* Char ')', ASCII code 0x29 */ + { + 0x0, + 0x6, + 0xc, + 0x8, + 0x18, + 0x18, + 0x8, + 0xc, + 0x6, + 0x0, + 0x0, + 0x0, + }, + /* Char '*', ASCII code 0x2a */ + { + 0x0, + 0x0, + 0x12, + 0xc, + 0x3f, + 0xc, + 0x12, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + }, + /* Char '+', ASCII code 0x2b */ + { + 0x0, + 0x0, + 0xc, + 0xc, + 0x3f, + 0xc, + 0xc, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + }, + /* Char ',', ASCII code 0x2c */ + { + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0xc, + 0xc, + 0xc, + 0x6, + 0x0, + 0x0, + }, + /* Char '-', ASCII code 0x2d */ + { + 0x0, + 0x0, + 0x0, + 0x0, + 0x3f, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + }, + /* Char '.', ASCII code 0x2e */ + { + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0xc, + 0xc, + 0x0, + 0x0, + 0x0, + }, + /* Char '/', ASCII code 0x2f */ + { + 0x0, + 0x0, + 0x20, + 0x30, + 0x18, + 0xc, + 0x6, + 0x3, + 0x1, + 0x0, + 0x0, + 0x0, + }, + /* Char '0', ASCII code 0x30 */ + { + 0x0, + 0x1e, + 0x33, + 0x33, + 0x2d, + 0x2d, + 0x33, + 0x33, + 0x1e, + 0x0, + 0x0, + 0x0, + }, + /* Char '1', ASCII code 0x31 */ + { + 0x0, + 0xc, + 0xe, + 0xf, + 0xc, + 0xc, + 0xc, + 0xc, + 0x3f, + 0x0, + 0x0, + 0x0, + }, + /* Char '2', ASCII code 0x32 */ + { + 0x0, + 0x1e, + 0x33, + 0x30, + 0x18, + 0xc, + 0x6, + 0x33, + 0x3f, + 0x0, + 0x0, + 0x0, + }, + /* Char '3', ASCII code 0x33 */ + { + 0x0, + 0x1e, + 0x33, + 0x30, + 0x1e, + 0x30, + 0x30, + 0x33, + 0x1e, + 0x0, + 0x0, + 0x0, + }, + /* Char '4', ASCII code 0x34 */ + { + 0x0, + 0x18, + 0x1c, + 0x16, + 0x13, + 0x3f, + 0x18, + 0x18, + 0x3c, + 0x0, + 0x0, + 0x0, + }, + /* Char '5', ASCII code 0x35 */ + { + 0x0, + 0x3f, + 0x3, + 0x3, + 0x1f, + 0x30, + 0x30, + 0x33, + 0x1e, + 0x0, + 0x0, + 0x0, + }, + /* Char '6', ASCII code 0x36 */ + { + 0x0, + 0x1c, + 0x6, + 0x3, + 0x1f, + 0x33, + 0x33, + 0x33, + 0x1e, + 0x0, + 0x0, + 0x0, + }, + /* Char '7', ASCII code 0x37 */ + { + 0x0, + 0x3f, + 0x33, + 0x30, + 0x30, + 0x18, + 0xc, + 0xc, + 0xc, + 0x0, + 0x0, + 0x0, + }, + /* Char '8', ASCII code 0x38 */ + { + 0x0, + 0x1e, + 0x33, + 0x33, + 0x1e, + 0x33, + 0x33, + 0x33, + 0x1e, + 0x0, + 0x0, + 0x0, + }, + /* Char '9', ASCII code 0x39 */ + { + 0x0, + 0x1e, + 0x33, + 0x33, + 0x3e, + 0x30, + 0x30, + 0x18, + 0x1e, + 0x0, + 0x0, + 0x0, + }, + /* ASCII code 0x3a */ {0}, + /* ASCII code 0x3b */ {0}, + /* ASCII code 0x3c */ {0}, + /* ASCII code 0x3d */ {0}, + /* ASCII code 0x3e */ {0}, + /* ASCII code 0x3f */ {0}, + /* ASCII code 0x40 */ {0}, + /* Char 'A', ASCII code 0x41 */ + { + 0x0, + 0xc, + 0x1e, + 0x33, + 0x33, + 0x3f, + 0x33, + 0x33, + 0x33, + 0x0, + 0x0, + 0x0, + }, + /* ASCII code 0x42 */ {0}, + /* ASCII code 0x43 */ {0}, + /* ASCII code 0x44 */ {0}, + /* ASCII code 0x45 */ {0}, + /* ASCII code 0x46 */ {0}, + /* ASCII code 0x47 */ {0}, + /* ASCII code 0x48 */ {0}, + /* ASCII code 0x49 */ {0}, + /* ASCII code 0x4a */ {0}, + /* ASCII code 0x4b */ {0}, + /* ASCII code 0x4c */ {0}, + /* ASCII code 0x4d */ {0}, + /* ASCII code 0x4e */ {0}, + /* ASCII code 0x4f */ {0}, + /* ASCII code 0x50 */ {0}, + /* ASCII code 0x51 */ {0}, + /* ASCII code 0x52 */ {0}, + /* ASCII code 0x53 */ {0}, + /* ASCII code 0x54 */ {0}, + /* ASCII code 0x55 */ {0}, + /* ASCII code 0x56 */ {0}, + /* ASCII code 0x57 */ {0}, + /* ASCII code 0x58 */ {0}, + /* ASCII code 0x59 */ {0}, + /* ASCII code 0x5a */ {0}, + /* ASCII code 0x5b */ {0}, + /* ASCII code 0x5c */ {0}, + /* ASCII code 0x5d */ {0}, + /* ASCII code 0x5e */ {0}, + /* ASCII code 0x5f */ {0}, + /* ASCII code 0x60 */ {0}, + /* Char 'a', ASCII code 0x61 */ + { + 0x0, + 0x0, + 0x0, + 0x1e, + 0x30, + 0x3e, + 0x33, + 0x33, + 0x6e, + 0x0, + 0x0, + 0x0, + }, + /* Char 'b', ASCII code 0x62 */ + { + 0x7, + 0x6, + 0xe, + 0x1e, + 0x36, + 0x36, + 0x36, + 0x36, + 0x1e, + 0x0, + 0x0, + 0x0, + }, + /* Char 'c', ASCII code 0x63 */ + { + 0x0, + 0x0, + 0x0, + 0x1e, + 0x33, + 0x3, + 0x3, + 0x33, + 0x1e, + 0x0, + 0x0, + 0x0, + }, +}; + diff --git a/ibmpclike12.txt b/ibmpclike12.txt new file mode 100644 index 0000000..933da41 --- /dev/null +++ b/ibmpclike12.txt @@ -0,0 +1,391 @@ +12 +! +0000000 +0011000 +0111100 +0111100 +0011000 +0011000 +0000000 +0011000 +0011000 +0000000 +0000000 +0000000 +" +1100110 +1100110 +0100100 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +# +0000000 +0100100 +0100100 +1111110 +0100100 +0100100 +1111111 +0100100 +0100100 +0000000 +0000000 +0000000 +$ +0011000 +0011000 +0111100 +1100010 +1100000 +0111100 +0000110 +1000110 +0111100 +0011000 +0011000 +0000000 +% +0000000 +0000000 +1100010 +1100110 +0001100 +0011000 +0110000 +1100110 +1000110 +0000000 +0000000 +0000000 +& +0000000 +0011100 +0110110 +0011100 +0111010 +1101100 +1101100 +1101100 +0110110 +0000000 +0000000 +0000000 +' +0001100 +0001100 +0011000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +' +0001100 +0001100 +0011000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +( +0000000 +0001100 +0011000 +0010000 +0110000 +0110000 +0010000 +0011000 +0001100 +0000000 +0000000 +0000000 +) +0000000 +0110000 +0011000 +0001000 +0001100 +0001100 +0001000 +0011000 +0110000 +0000000 +0000000 +0000000 +* +0000000 +0000000 +0100100 +0011000 +1111110 +0011000 +0100100 +0000000 +0000000 +0000000 +0000000 +0000000 ++ +0000000 +0000000 +0011000 +0011000 +1111110 +0011000 +0011000 +0000000 +0000000 +0000000 +0000000 +0000000 +, +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0011000 +0011000 +0011000 +0110000 +0000000 +0000000 +- +0000000 +0000000 +0000000 +0000000 +1111110 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +. +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0000000 +0011000 +0011000 +0000000 +0000000 +0000000 +/ +0000000 +0000000 +0000010 +0000110 +0001100 +0011000 +0110000 +1100000 +1000000 +0000000 +0000000 +0000000 +0 +0000000 +0111100 +1100110 +1100110 +1011010 +1011010 +1100110 +1100110 +0111100 +0000000 +0000000 +0000000 +1 +0000000 +0011000 +0111000 +1111000 +0011000 +0011000 +0011000 +0011000 +1111110 +0000000 +0000000 +0000000 +2 +0000000 +0111100 +1100110 +0000110 +0001100 +0011000 +0110000 +1100110 +1111110 +0000000 +0000000 +0000000 +3 +0000000 +0111100 +1100110 +0000110 +0111100 +0000110 +0000110 +1100110 +0111100 +0000000 +0000000 +0000000 +4 +0000000 +0001100 +0011100 +0110100 +1100100 +1111110 +0001100 +0001100 +0011110 +0000000 +0000000 +0000000 +5 +0000000 +1111110 +1100000 +1100000 +1111100 +0000110 +0000110 +1100110 +0111100 +0000000 +0000000 +0000000 +6 +0000000 +0011100 +0110000 +1100000 +1111100 +1100110 +1100110 +1100110 +0111100 +0000000 +0000000 +0000000 +7 +0000000 +1111110 +1100110 +0000110 +0000110 +0001100 +0011000 +0011000 +0011000 +0000000 +0000000 +0000000 +8 +0000000 +0111100 +1100110 +1100110 +0111100 +1100110 +1100110 +1100110 +0111100 +0000000 +0000000 +0000000 +9 +0000000 +0111100 +1100110 +1100110 +0111110 +0000110 +0000110 +0001100 +0111100 +0000000 +0000000 +0000000 +A +0000000 +0011000 +0111100 +1100110 +1100110 +1111110 +1100110 +1100110 +1100110 +0000000 +0000000 +0000000 +a +0000000 +0000000 +0000000 +0111100 +0000110 +0111110 +1100110 +1100110 +0111011 +0000000 +0000000 +0000000 +b +1110000 +0110000 +0111000 +0111100 +0110110 +0110110 +0110110 +0110110 +0111100 +0000000 +0000000 +0000000 +c +0000000 +0000000 +0000000 +0111100 +1100110 +1100000 +1100000 +1100110 +0111100 +0000000 +0000000 +0000000 diff --git a/ibmpclike8.h b/ibmpclike8.h new file mode 100644 index 0000000..a029f85 --- /dev/null +++ b/ibmpclike8.h @@ -0,0 +1,403 @@ +uint8_t ibmpclike8[128][8] = { + /* ASCII code 0x0 */ {0}, + /* ASCII code 0x1 */ {0}, + /* ASCII code 0x2 */ {0}, + /* ASCII code 0x3 */ {0}, + /* ASCII code 0x4 */ {0}, + /* ASCII code 0x5 */ {0}, + /* ASCII code 0x6 */ {0}, + /* ASCII code 0x7 */ {0}, + /* ASCII code 0x8 */ {0}, + /* ASCII code 0x9 */ {0}, + /* ASCII code 0xa */ {0}, + /* ASCII code 0xb */ {0}, + /* ASCII code 0xc */ {0}, + /* ASCII code 0xd */ {0}, + /* ASCII code 0xe */ {0}, + /* ASCII code 0xf */ {0}, + /* ASCII code 0x10 */ {0}, + /* ASCII code 0x11 */ {0}, + /* ASCII code 0x12 */ {0}, + /* ASCII code 0x13 */ {0}, + /* ASCII code 0x14 */ {0}, + /* ASCII code 0x15 */ {0}, + /* ASCII code 0x16 */ {0}, + /* ASCII code 0x17 */ {0}, + /* ASCII code 0x18 */ {0}, + /* ASCII code 0x19 */ {0}, + /* ASCII code 0x1a */ {0}, + /* ASCII code 0x1b */ {0}, + /* ASCII code 0x1c */ {0}, + /* ASCII code 0x1d */ {0}, + /* ASCII code 0x1e */ {0}, + /* ASCII code 0x1f */ {0}, + /* ASCII code 0x20 */ {0}, + /* Char '!', ASCII code 0x21 */ + { + 0x30, + 0x18, + 0xc, + 0x2, + 0x0, + 0x2, + 0x3, + 0x0, + }, + /* Char '"', ASCII code 0x22 */ + { + 0x36, + 0x33, + 0x9, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + }, + /* Char '#', ASCII code 0x23 */ + { + 0x0, + 0x16, + 0x3f, + 0x16, + 0x3f, + 0x16, + 0x0, + 0x0, + }, + /* Char '$', ASCII code 0x24 */ + { + 0x4, + 0x1e, + 0x21, + 0xe, + 0x1c, + 0x21, + 0x1e, + 0x4, + }, + /* Char '%', ASCII code 0x25 */ + { + 0x26, + 0x32, + 0x18, + 0xc, + 0x6, + 0x13, + 0x19, + 0x0, + }, + /* Char '&', ASCII code 0x26 */ + { + 0x38, + 0x34, + 0x1c, + 0x2e, + 0x1b, + 0x1b, + 0x36, + 0x0, + }, + /* Char ''', ASCII code 0x27 */ + { + 0xc, + 0xc, + 0x6, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + }, + /* Char '(', ASCII code 0x28 */ + { + 0x18, + 0x6, + 0x3, + 0x3, + 0x3, + 0x6, + 0x18, + 0x0, + }, + /* Char ')', ASCII code 0x29 */ + { + 0x6, + 0x18, + 0x30, + 0x30, + 0x30, + 0x18, + 0x6, + 0x0, + }, + /* Char '*', ASCII code 0x2a */ + { + 0x0, + 0x12, + 0xc, + 0x3f, + 0xc, + 0x12, + 0x0, + 0x0, + }, + /* Char '+', ASCII code 0x2b */ + { + 0x0, + 0xc, + 0xc, + 0x3f, + 0xc, + 0xc, + 0x0, + 0x0, + }, + /* Char ',', ASCII code 0x2c */ + { + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x6, + 0x6, + 0x3, + }, + /* Char '-', ASCII code 0x2d */ + { + 0x0, + 0x0, + 0x0, + 0x3f, + 0x0, + 0x0, + 0x0, + 0x0, + }, + /* Char '.', ASCII code 0x2e */ + { + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0xc, + 0xc, + 0x0, + }, + /* Char '/', ASCII code 0x2f */ + { + 0x20, + 0x30, + 0x18, + 0xc, + 0x6, + 0x3, + 0x1, + 0x0, + }, + /* Char '0', ASCII code 0x30 */ + { + 0x1e, + 0x33, + 0x33, + 0x2b, + 0x2b, + 0x27, + 0x1e, + 0x0, + }, + /* Char '1', ASCII code 0x31 */ + { + 0xc, + 0xe, + 0xd, + 0xc, + 0xc, + 0xc, + 0x1f, + 0x0, + }, + /* Char '2', ASCII code 0x32 */ + { + 0x1e, + 0x21, + 0x30, + 0x1e, + 0x3, + 0x21, + 0x3f, + 0x0, + }, + /* Char '3', ASCII code 0x33 */ + { + 0x1e, + 0x31, + 0x30, + 0x1c, + 0x30, + 0x31, + 0x1e, + 0x0, + }, + /* Char '4', ASCII code 0x34 */ + { + 0x18, + 0x1c, + 0x1a, + 0x19, + 0x3f, + 0x18, + 0x3c, + 0x0, + }, + /* Char '5', ASCII code 0x35 */ + { + 0x1e, + 0x21, + 0x1f, + 0x30, + 0x30, + 0x33, + 0x1e, + 0x0, + }, + /* Char '6', ASCII code 0x36 */ + { + 0x1c, + 0x6, + 0x3, + 0x1f, + 0x33, + 0x33, + 0x1e, + 0x0, + }, + /* Char '7', ASCII code 0x37 */ + { + 0x3f, + 0x33, + 0x18, + 0xc, + 0xc, + 0xc, + 0xc, + 0x0, + }, + /* Char '8', ASCII code 0x38 */ + { + 0x1e, + 0x33, + 0x33, + 0x1e, + 0x33, + 0x33, + 0x1e, + 0x0, + }, + /* Char '9', ASCII code 0x39 */ + { + 0x1e, + 0x33, + 0x33, + 0x3e, + 0x30, + 0x18, + 0xe, + 0x0, + }, + /* ASCII code 0x3a */ {0}, + /* ASCII code 0x3b */ {0}, + /* ASCII code 0x3c */ {0}, + /* ASCII code 0x3d */ {0}, + /* ASCII code 0x3e */ {0}, + /* ASCII code 0x3f */ {0}, + /* ASCII code 0x40 */ {0}, + /* Char 'A', ASCII code 0x41 */ + { + 0xc, + 0x1e, + 0x33, + 0x33, + 0x3f, + 0x33, + 0x33, + 0x0, + }, + /* Char 'B', ASCII code 0x42 */ + { + 0x1f, + 0x36, + 0x36, + 0x1e, + 0x36, + 0x36, + 0x1f, + 0x0, + }, + /* ASCII code 0x43 */ {0}, + /* ASCII code 0x44 */ {0}, + /* ASCII code 0x45 */ {0}, + /* ASCII code 0x46 */ {0}, + /* ASCII code 0x47 */ {0}, + /* ASCII code 0x48 */ {0}, + /* ASCII code 0x49 */ {0}, + /* ASCII code 0x4a */ {0}, + /* ASCII code 0x4b */ {0}, + /* ASCII code 0x4c */ {0}, + /* ASCII code 0x4d */ {0}, + /* ASCII code 0x4e */ {0}, + /* ASCII code 0x4f */ {0}, + /* ASCII code 0x50 */ {0}, + /* ASCII code 0x51 */ {0}, + /* ASCII code 0x52 */ {0}, + /* ASCII code 0x53 */ {0}, + /* ASCII code 0x54 */ {0}, + /* ASCII code 0x55 */ {0}, + /* ASCII code 0x56 */ {0}, + /* ASCII code 0x57 */ {0}, + /* ASCII code 0x58 */ {0}, + /* ASCII code 0x59 */ {0}, + /* ASCII code 0x5a */ {0}, + /* ASCII code 0x5b */ {0}, + /* ASCII code 0x5c */ {0}, + /* ASCII code 0x5d */ {0}, + /* ASCII code 0x5e */ {0}, + /* ASCII code 0x5f */ {0}, + /* ASCII code 0x60 */ {0}, + /* Char 'a', ASCII code 0x61 */ + { + 0x0, + 0x0, + 0x1e, + 0x30, + 0x3e, + 0x33, + 0x6e, + 0x0, + }, + /* Char 'b', ASCII code 0x62 */ + { + 0x7, + 0x6, + 0x1e, + 0x36, + 0x36, + 0x36, + 0x1e, + 0x0, + }, + /* Char 'c', ASCII code 0x63 */ + { + 0x0, + 0x0, + 0x1e, + 0x33, + 0x3, + 0x33, + 0x1e, + 0x0, + }, +}; + diff --git a/ibmpclike8.txt b/ibmpclike8.txt new file mode 100644 index 0000000..f67d0d1 --- /dev/null +++ b/ibmpclike8.txt @@ -0,0 +1,271 @@ +8 +! +0000110 +0001100 +0011000 +0100000 +0000000 +0100000 +1100000 +0000000 +" +0110110 +1100110 +1001000 +0000000 +0000000 +0000000 +0000000 +0000000 +# +0000000 +0110100 +1111110 +0110100 +1111110 +0110100 +0000000 +0000000 +$ +0010000 +0111100 +1000010 +0111000 +0011100 +1000010 +0111100 +0010000 +% +0110010 +0100110 +0001100 +0011000 +0110000 +1100100 +1001100 +0000000 +& +0001110 +0010110 +0011100 +0111010 +1101100 +1101100 +0110110 +0000000 +' +0011000 +0011000 +0110000 +0000000 +0000000 +0000000 +0000000 +0000000 +( +0001100 +0110000 +1100000 +1100000 +1100000 +0110000 +0001100 +0000000 +) +0110000 +0001100 +0000110 +0000110 +0000110 +0001100 +0110000 +0000000 +* +0000000 +0100100 +0011000 +1111110 +0011000 +0100100 +0000000 +0000000 ++ +0000000 +0011000 +0011000 +1111110 +0011000 +0011000 +0000000 +0000000 +, +0000000 +0000000 +0000000 +0000000 +0000000 +0110000 +0110000 +1100000 +- +0000000 +0000000 +0000000 +1111110 +0000000 +0000000 +0000000 +0000000 +. +0000000 +0000000 +0000000 +0000000 +0000000 +0011000 +0011000 +0000000 +/ +0000010 +0000110 +0001100 +0011000 +0110000 +1100000 +1000000 +0000000 +0 +0111100 +1100110 +1100110 +1101010 +1101010 +1110010 +0111100 +0000000 +1 +0011000 +0111000 +1011000 +0011000 +0011000 +0011000 +1111100 +0000000 +2 +0111100 +1000010 +0000110 +0111100 +1100000 +1000010 +1111110 +0000000 +3 +0111100 +1000110 +0000110 +0011100 +0000110 +1000110 +0111100 +0000000 +4 +0001100 +0011100 +0101100 +1001100 +1111110 +0001100 +0011110 +0000000 +5 +0111100 +1000010 +1111100 +0000110 +0000110 +1100110 +0111100 +0000000 +6 +0011100 +0110000 +1100000 +1111100 +1100110 +1100110 +0111100 +0000000 +7 +1111110 +1100110 +0001100 +0011000 +0011000 +0011000 +0011000 +0000000 +8 +0111100 +1100110 +1100110 +0111100 +1100110 +1100110 +0111100 +0000000 +9 +0111100 +1100110 +1100110 +0111110 +0000110 +0001100 +0111000 +0000000 +A +0011000 +0111100 +1100110 +1100110 +1111110 +1100110 +1100110 +0000000 +B +1111100 +0110110 +0110110 +0111100 +0110110 +0110110 +1111100 +0000000 +a +0000000 +0000000 +0111100 +0000110 +0111110 +1100110 +0111011 +0000000 +b +1110000 +0110000 +0111100 +0110110 +0110110 +0110110 +0111100 +0000000 +c +0000000 +0000000 +0111100 +1100110 +1100000 +1100110 +0111100 +0000000 diff --git a/mkfonthdr b/mkfonthdr new file mode 100755 index 0000000..e63f194 Binary files /dev/null and b/mkfonthdr differ diff --git a/mkfonthdr.c b/mkfonthdr.c new file mode 100644 index 0000000..9589daf --- /dev/null +++ b/mkfonthdr.c @@ -0,0 +1,196 @@ +#include /* perror */ +#include /* EXIT_FAILURE, EXIT_SUCCESS */ +#include /* strlen, strrchr */ +#include /* bool, true, false */ +#include /* uint8_t */ +#include /* basename */ +#include /* pow */ +#include /* isalnum */ +#include "trace.h" /* TRACE_MSG */ + +#define MAX_LINE_SIZE 128 +#define PIXEL_WIDTH 7 + +void chomp(char *s) +{ + size_t len, i; + + len = strlen(s); + for (i = len; i > 0; ) + if (s[--i] == '\r' || s[i] == '\n') + s[i] = '\0'; +} + +void reverse(char *s) +{ + size_t len, i, j; + char c; + + len = strlen(s); + for (i = 0, j = len; i < j && j > 1; ++i) { + --j; + c = s[i]; + s[i] = s[j]; + s[j] = c; + } +} + +int convertReverseBinaryStringToInt(char *s) +{ + size_t i, len; + int value = 0; + + len = strlen(s); + for (i = 0; i < len; ++i) + if (s[i] == '1') + value += pow(2, i); + else if (s[i] != '0') + break; + + return value; +} + +char *makeIdentName(char *s) +{ + size_t i, len; + + len = strlen(s); + for (i = 0; i < len; i++) + if (! isalnum(s[i]) && s[i] != '_') + s[i] = '_'; + + return s; +} + +char *removeExtension(char *fileName) +{ + char *ext; + + ext = strrchr(fileName, '.'); + if (ext != NULL) + *ext = '\0'; + + return fileName; +} + +char *readLine(FILE *f, char *name) +{ + static char line[MAX_LINE_SIZE]; + char *linePtr; + + if ((linePtr = fgets(line, MAX_LINE_SIZE, f)) != NULL) + chomp(linePtr); + else if (ferror(f)) + perror(name); + + return linePtr; +} + +char *replaceWithOnesAndZeros(char *line, size_t len) +{ + size_t i; + for (i = 0; i < len; ++i) { + switch (line[i]) { + case '#': + line[i] = '1'; + break; + case '.': + line[i] = '0'; + break; + } + } + return line; +} + +bool makeGlyph(FILE *f, char *name, uint16_t *lineNum, uint8_t pixelHeight) +{ + char *line; + uint8_t i; + bool ok = true; + size_t len; + + printf("\t{\n"); + for (i = 0; i < pixelHeight; ++i) + if ((line = readLine(f, name)) != NULL) { + (*lineNum)++; + if ((len = strlen(line)) == PIXEL_WIDTH) { + replaceWithOnesAndZeros(line, len); + printf("\t0x%x,\n", convertReverseBinaryStringToInt(line)); + } + else { + fprintf(stderr, "Line %d, containing '%s', is wrong length: %d\n", *lineNum, line, len); + ok = false; + break; + } + } + else + break; + + printf(" },\n"); + return ok; +} + +bool makeFontFromStream(FILE *f, char *name) +{ + uint8_t pixelHeight, asciiCode, i, prevAsciiCode = 0; + char *line, *arrayName; + bool ok = true; + uint16_t lineNum = 0; + size_t len; + + if ((line = readLine(f, name)) != NULL) { + lineNum++; + pixelHeight = atoi(line); + arrayName = makeIdentName(removeExtension(basename(name))); + printf("uint8_t %s[128][%d] = {\n", arrayName, pixelHeight); + printf(" /* ASCII code 0x0 */ {0},\n"); + while ((line = readLine(f, name)) != NULL) { + lineNum++; + if ((len = strlen(line)) != 1) { + fprintf(stderr, "Line %d, containing '%s', is wrong length: %d\n", lineNum, line, len); + ok = false; + break; + } + asciiCode = (uint8_t) line[0]; + for (i = prevAsciiCode + 1; i < asciiCode; ++i) + printf(" /* ASCII code 0x%x */ {0},\n", i); + printf(" /* Char '%c', ASCII code 0x%x */\n", asciiCode, asciiCode); + if (makeGlyph(f, name, &lineNum, pixelHeight)) + prevAsciiCode = asciiCode; + else { + ok = false; + break; + } + } + printf("};\n\n"); + } + return ok; +} + +bool makeFontFromFile(char *fileName) +{ + FILE *f; + bool ok = false; + + if ((f = fopen(fileName, "r")) != NULL) { + if (makeFontFromStream(f, fileName)) + ok = true; + fclose(f); + } + else + perror(fileName); + + return ok; +} + +int main(int argc, char *argv[]) +{ + int i; + + for (i = 1; i < argc; ++i) + if (! makeFontFromFile(argv[i])) + return EXIT_FAILURE; + + return EXIT_SUCCESS; +} + diff --git a/runes-anglo-saxon.h b/runes-anglo-saxon.h new file mode 100644 index 0000000..44c86ec --- /dev/null +++ b/runes-anglo-saxon.h @@ -0,0 +1,125 @@ +uint8_t runes_anglo_saxon[128][16] = { + /* ASCII code 0x0 */ {0}, + /* ASCII code 0x1 */ {0}, + /* ASCII code 0x2 */ {0}, + /* ASCII code 0x3 */ {0}, + /* ASCII code 0x4 */ {0}, + /* ASCII code 0x5 */ {0}, + /* ASCII code 0x6 */ {0}, + /* ASCII code 0x7 */ {0}, + /* ASCII code 0x8 */ {0}, + /* ASCII code 0x9 */ {0}, + /* ASCII code 0xa */ {0}, + /* ASCII code 0xb */ {0}, + /* ASCII code 0xc */ {0}, + /* ASCII code 0xd */ {0}, + /* ASCII code 0xe */ {0}, + /* ASCII code 0xf */ {0}, + /* ASCII code 0x10 */ {0}, + /* ASCII code 0x11 */ {0}, + /* ASCII code 0x12 */ {0}, + /* ASCII code 0x13 */ {0}, + /* ASCII code 0x14 */ {0}, + /* ASCII code 0x15 */ {0}, + /* ASCII code 0x16 */ {0}, + /* ASCII code 0x17 */ {0}, + /* ASCII code 0x18 */ {0}, + /* ASCII code 0x19 */ {0}, + /* ASCII code 0x1a */ {0}, + /* ASCII code 0x1b */ {0}, + /* ASCII code 0x1c */ {0}, + /* ASCII code 0x1d */ {0}, + /* ASCII code 0x1e */ {0}, + /* ASCII code 0x1f */ {0}, + /* ASCII code 0x20 */ {0}, + /* ASCII code 0x21 */ {0}, + /* ASCII code 0x22 */ {0}, + /* ASCII code 0x23 */ {0}, + /* ASCII code 0x24 */ {0}, + /* ASCII code 0x25 */ {0}, + /* ASCII code 0x26 */ {0}, + /* ASCII code 0x27 */ {0}, + /* ASCII code 0x28 */ {0}, + /* ASCII code 0x29 */ {0}, + /* ASCII code 0x2a */ {0}, + /* ASCII code 0x2b */ {0}, + /* ASCII code 0x2c */ {0}, + /* ASCII code 0x2d */ {0}, + /* ASCII code 0x2e */ {0}, + /* ASCII code 0x2f */ {0}, + /* ASCII code 0x30 */ {0}, + /* ASCII code 0x31 */ {0}, + /* ASCII code 0x32 */ {0}, + /* ASCII code 0x33 */ {0}, + /* ASCII code 0x34 */ {0}, + /* ASCII code 0x35 */ {0}, + /* ASCII code 0x36 */ {0}, + /* ASCII code 0x37 */ {0}, + /* ASCII code 0x38 */ {0}, + /* ASCII code 0x39 */ {0}, + /* ASCII code 0x3a */ {0}, + /* ASCII code 0x3b */ {0}, + /* ASCII code 0x3c */ {0}, + /* ASCII code 0x3d */ {0}, + /* ASCII code 0x3e */ {0}, + /* ASCII code 0x3f */ {0}, + /* ASCII code 0x40 */ {0}, + /* Char 'A', ASCII code 0x41 */ + { + 0x22, + 0x12, + 0xa, + 0x26, + 0x12, + 0xa, + 0x6, + 0x2, + 0x2, + 0x2, + 0x2, + 0x2, + 0x2, + 0x2, + 0x2, + 0x2, + }, + /* Char 'B', ASCII code 0x42 */ + { + 0x6, + 0xa, + 0x12, + 0x22, + 0x22, + 0x22, + 0x22, + 0x22, + 0x22, + 0x22, + 0x22, + 0x22, + 0x22, + 0x22, + 0x22, + 0x0, + }, + /* Char 'C', ASCII code 0x43 */ + { + 0x2, + 0x2, + 0x2, + 0x2, + 0x6, + 0xa, + 0x12, + 0x22, + 0x12, + 0xa, + 0x6, + 0x2, + 0x2, + 0x2, + 0x2, + 0x0, + }, +}; + diff --git a/runes-anglo-saxon.txt b/runes-anglo-saxon.txt new file mode 100644 index 0000000..cac5df0 --- /dev/null +++ b/runes-anglo-saxon.txt @@ -0,0 +1,52 @@ +16 +A +0100010 +0100100 +0101000 +0110010 +0100100 +0101000 +0110000 +0100000 +0100000 +0100000 +0100000 +0100000 +0100000 +0100000 +0100000 +0100000 +B +0110000 +0101000 +0100100 +0100010 +0100010 +0100010 +0100010 +0100010 +0100010 +0100010 +0100010 +0100010 +0100010 +0100010 +0100010 +0000000 +C +0100000 +0100000 +0100000 +0100000 +0110000 +0101000 +0100100 +0100010 +0100100 +0101000 +0110000 +0100000 +0100000 +0100000 +0100000 +0000000 diff --git a/runes-english.h b/runes-english.h new file mode 100644 index 0000000..8c02c57 --- /dev/null +++ b/runes-english.h @@ -0,0 +1,125 @@ +uint8_t runes_english[128][16] = { + /* ASCII code 0x0 */ {0}, + /* ASCII code 0x1 */ {0}, + /* ASCII code 0x2 */ {0}, + /* ASCII code 0x3 */ {0}, + /* ASCII code 0x4 */ {0}, + /* ASCII code 0x5 */ {0}, + /* ASCII code 0x6 */ {0}, + /* ASCII code 0x7 */ {0}, + /* ASCII code 0x8 */ {0}, + /* ASCII code 0x9 */ {0}, + /* ASCII code 0xa */ {0}, + /* ASCII code 0xb */ {0}, + /* ASCII code 0xc */ {0}, + /* ASCII code 0xd */ {0}, + /* ASCII code 0xe */ {0}, + /* ASCII code 0xf */ {0}, + /* ASCII code 0x10 */ {0}, + /* ASCII code 0x11 */ {0}, + /* ASCII code 0x12 */ {0}, + /* ASCII code 0x13 */ {0}, + /* ASCII code 0x14 */ {0}, + /* ASCII code 0x15 */ {0}, + /* ASCII code 0x16 */ {0}, + /* ASCII code 0x17 */ {0}, + /* ASCII code 0x18 */ {0}, + /* ASCII code 0x19 */ {0}, + /* ASCII code 0x1a */ {0}, + /* ASCII code 0x1b */ {0}, + /* ASCII code 0x1c */ {0}, + /* ASCII code 0x1d */ {0}, + /* ASCII code 0x1e */ {0}, + /* ASCII code 0x1f */ {0}, + /* ASCII code 0x20 */ {0}, + /* ASCII code 0x21 */ {0}, + /* ASCII code 0x22 */ {0}, + /* ASCII code 0x23 */ {0}, + /* ASCII code 0x24 */ {0}, + /* ASCII code 0x25 */ {0}, + /* ASCII code 0x26 */ {0}, + /* ASCII code 0x27 */ {0}, + /* ASCII code 0x28 */ {0}, + /* ASCII code 0x29 */ {0}, + /* ASCII code 0x2a */ {0}, + /* ASCII code 0x2b */ {0}, + /* ASCII code 0x2c */ {0}, + /* ASCII code 0x2d */ {0}, + /* ASCII code 0x2e */ {0}, + /* ASCII code 0x2f */ {0}, + /* ASCII code 0x30 */ {0}, + /* ASCII code 0x31 */ {0}, + /* ASCII code 0x32 */ {0}, + /* ASCII code 0x33 */ {0}, + /* ASCII code 0x34 */ {0}, + /* ASCII code 0x35 */ {0}, + /* ASCII code 0x36 */ {0}, + /* ASCII code 0x37 */ {0}, + /* ASCII code 0x38 */ {0}, + /* ASCII code 0x39 */ {0}, + /* ASCII code 0x3a */ {0}, + /* ASCII code 0x3b */ {0}, + /* ASCII code 0x3c */ {0}, + /* ASCII code 0x3d */ {0}, + /* ASCII code 0x3e */ {0}, + /* ASCII code 0x3f */ {0}, + /* ASCII code 0x40 */ {0}, + /* Char 'A', ASCII code 0x41 */ + { + 0x1, + 0x3, + 0x5, + 0x9, + 0x11, + 0x21, + 0x21, + 0x21, + 0x21, + 0x23, + 0x25, + 0x29, + 0x31, + 0x21, + 0x21, + 0x21, + }, + /* Char 'B', ASCII code 0x42 */ + { + 0x3, + 0x5, + 0x9, + 0x11, + 0x21, + 0x11, + 0x9, + 0x7, + 0x7, + 0x9, + 0x11, + 0x21, + 0x11, + 0x9, + 0x5, + 0x3, + }, + /* Char 'C', ASCII code 0x43 */ + { + 0x1, + 0x3, + 0x5, + 0x9, + 0x11, + 0x21, + 0x1, + 0x1, + 0x1, + 0x1, + 0x21, + 0x11, + 0x9, + 0x5, + 0x3, + 0x1, + }, +}; + diff --git a/runes-english.txt b/runes-english.txt new file mode 100644 index 0000000..5031590 --- /dev/null +++ b/runes-english.txt @@ -0,0 +1,52 @@ +16 +A +1000000 +1100000 +1010000 +1001000 +1000100 +1000010 +1000010 +1000010 +1000010 +1100010 +1010010 +1001010 +1000110 +1000010 +1000010 +1000010 +B +1100000 +1010000 +1001000 +1000100 +1000010 +1000100 +1001000 +1110000 +1110000 +1001000 +1000100 +1000010 +1000100 +1001000 +1010000 +1100000 +C +1000000 +1100000 +1010000 +1001000 +1000100 +1000010 +1000000 +1000000 +1000000 +1000000 +1000010 +1000100 +1001000 +1010000 +1100000 +1000000 diff --git a/salzalon.h b/salzalon.h new file mode 100644 index 0000000..ff5b316 --- /dev/null +++ b/salzalon.h @@ -0,0 +1,654 @@ +uint8_t salzalon[128][8] = { + /* ASCII code 0x0 */ {0}, + /* ASCII code 0x1 */ {0}, + /* ASCII code 0x2 */ {0}, + /* ASCII code 0x3 */ {0}, + /* ASCII code 0x4 */ {0}, + /* ASCII code 0x5 */ {0}, + /* ASCII code 0x6 */ {0}, + /* ASCII code 0x7 */ {0}, + /* ASCII code 0x8 */ {0}, + /* ASCII code 0x9 */ {0}, + /* ASCII code 0xa */ {0}, + /* ASCII code 0xb */ {0}, + /* ASCII code 0xc */ {0}, + /* ASCII code 0xd */ {0}, + /* ASCII code 0xe */ {0}, + /* ASCII code 0xf */ {0}, + /* ASCII code 0x10 */ {0}, + /* ASCII code 0x11 */ {0}, + /* ASCII code 0x12 */ {0}, + /* ASCII code 0x13 */ {0}, + /* ASCII code 0x14 */ {0}, + /* ASCII code 0x15 */ {0}, + /* ASCII code 0x16 */ {0}, + /* ASCII code 0x17 */ {0}, + /* ASCII code 0x18 */ {0}, + /* ASCII code 0x19 */ {0}, + /* ASCII code 0x1a */ {0}, + /* ASCII code 0x1b */ {0}, + /* ASCII code 0x1c */ {0}, + /* ASCII code 0x1d */ {0}, + /* ASCII code 0x1e */ {0}, + /* ASCII code 0x1f */ {0}, + /* ASCII code 0x20 */ {0}, + /* Char '!', ASCII code 0x21 */ + { + 0xc, + 0xc, + 0xc, + 0xc, + 0x4, + 0x8, + 0xc, + 0x0, + }, + /* Char '"', ASCII code 0x22 */ + { + 0x1b, + 0x1b, + 0x9, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + }, + /* Char '#', ASCII code 0x23 */ + { + 0x0, + 0x16, + 0x3f, + 0x16, + 0x3f, + 0x16, + 0x0, + 0x0, + }, + /* Char '$', ASCII code 0x24 */ + { + 0x4, + 0x1e, + 0x3, + 0x1e, + 0x30, + 0x33, + 0x1e, + 0x4, + }, + /* Char '%', ASCII code 0x25 */ + { + 0x33, + 0x33, + 0x18, + 0xc, + 0x6, + 0x33, + 0x33, + 0x0, + }, + /* Char '&', ASCII code 0x26 */ + { + 0x38, + 0x34, + 0x1c, + 0x2e, + 0x1b, + 0x1b, + 0x36, + 0x0, + }, + /* Char ''', ASCII code 0x27 */ + { + 0xc, + 0xc, + 0x6, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + }, + /* Char '(', ASCII code 0x28 */ + { + 0x18, + 0x6, + 0x3, + 0x3, + 0x3, + 0x6, + 0x18, + 0x0, + }, + /* Char ')', ASCII code 0x29 */ + { + 0x6, + 0x18, + 0x30, + 0x30, + 0x30, + 0x18, + 0x6, + 0x0, + }, + /* Char '*', ASCII code 0x2a */ + { + 0x0, + 0x12, + 0xc, + 0x3f, + 0xc, + 0x12, + 0x0, + 0x0, + }, + /* Char '+', ASCII code 0x2b */ + { + 0x0, + 0xc, + 0xc, + 0x3f, + 0xc, + 0xc, + 0x0, + 0x0, + }, + /* Char ',', ASCII code 0x2c */ + { + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x6, + 0x6, + 0x3, + }, + /* Char '-', ASCII code 0x2d */ + { + 0x0, + 0x0, + 0x0, + 0x3f, + 0x0, + 0x0, + 0x0, + 0x0, + }, + /* Char '.', ASCII code 0x2e */ + { + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0xc, + 0xc, + 0x0, + }, + /* Char '/', ASCII code 0x2f */ + { + 0x20, + 0x30, + 0x18, + 0xc, + 0x6, + 0x3, + 0x1, + 0x0, + }, + /* Char '0', ASCII code 0x30 */ + { + 0x1e, + 0x31, + 0x31, + 0x27, + 0x27, + 0x27, + 0x1e, + 0x0, + }, + /* Char '1', ASCII code 0x31 */ + { + 0xc, + 0xe, + 0xd, + 0xc, + 0xc, + 0xc, + 0x1f, + 0x0, + }, + /* Char '2', ASCII code 0x32 */ + { + 0x1e, + 0x21, + 0x30, + 0x1e, + 0x3, + 0x21, + 0x3f, + 0x0, + }, + /* Char '3', ASCII code 0x33 */ + { + 0x1e, + 0x31, + 0x30, + 0x1c, + 0x30, + 0x31, + 0x1e, + 0x0, + }, + /* Char '4', ASCII code 0x34 */ + { + 0x18, + 0x1c, + 0x1a, + 0x19, + 0x3f, + 0x18, + 0x3c, + 0x0, + }, + /* Char '5', ASCII code 0x35 */ + { + 0x3c, + 0x6, + 0x1f, + 0x30, + 0x30, + 0x19, + 0xe, + 0x0, + }, + /* Char '6', ASCII code 0x36 */ + { + 0x1c, + 0x6, + 0x3, + 0x1b, + 0x37, + 0x33, + 0x1e, + 0x0, + }, + /* Char '7', ASCII code 0x37 */ + { + 0x3f, + 0x31, + 0x18, + 0xc, + 0xc, + 0xc, + 0x8, + 0x0, + }, + /* Char '8', ASCII code 0x38 */ + { + 0x1c, + 0x26, + 0x2e, + 0x1e, + 0x23, + 0x27, + 0x1e, + 0x0, + }, + /* Char '9', ASCII code 0x39 */ + { + 0x1e, + 0x33, + 0x33, + 0x1e, + 0xc, + 0x6, + 0x3, + 0x0, + }, + /* ASCII code 0x3a */ {0}, + /* ASCII code 0x3b */ {0}, + /* ASCII code 0x3c */ {0}, + /* ASCII code 0x3d */ {0}, + /* ASCII code 0x3e */ {0}, + /* ASCII code 0x3f */ {0}, + /* ASCII code 0x40 */ {0}, + /* Char 'A', ASCII code 0x41 */ + { + 0x1e, + 0x27, + 0x27, + 0x3f, + 0x27, + 0x27, + 0x27, + 0x0, + }, + /* Char 'B', ASCII code 0x42 */ + { + 0x1f, + 0x27, + 0x27, + 0x1f, + 0x27, + 0x27, + 0x1f, + 0x0, + }, + /* Char 'C', ASCII code 0x43 */ + { + 0x1e, + 0x27, + 0x27, + 0x7, + 0x27, + 0x27, + 0x1e, + 0x0, + }, + /* Char 'D', ASCII code 0x44 */ + { + 0x1f, + 0x27, + 0x27, + 0x27, + 0x37, + 0x37, + 0x1f, + 0x0, + }, + /* Char 'E', ASCII code 0x45 */ + { + 0x3f, + 0x7, + 0x7, + 0x1f, + 0x7, + 0x7, + 0x3f, + 0x0, + }, + /* Char 'F', ASCII code 0x46 */ + { + 0x3f, + 0x3, + 0x3, + 0xf, + 0x7, + 0x7, + 0x7, + 0x0, + }, + /* Char 'G', ASCII code 0x47 */ + { + 0x1e, + 0x27, + 0x7, + 0x37, + 0x37, + 0x27, + 0x1e, + 0x0, + }, + /* Char 'H', ASCII code 0x48 */ + { + 0x27, + 0x27, + 0x37, + 0x3f, + 0x27, + 0x27, + 0x27, + 0x0, + }, + /* Char 'I', ASCII code 0x49 */ + { + 0x1e, + 0xc, + 0x1e, + 0x2d, + 0x1e, + 0xc, + 0x1e, + 0x0, + }, + /* Char 'J', ASCII code 0x4a */ + { + 0x3c, + 0x30, + 0x20, + 0x27, + 0x27, + 0x27, + 0x1e, + 0x0, + }, + /* Char 'K', ASCII code 0x4b */ + { + 0x27, + 0x27, + 0x13, + 0xf, + 0x13, + 0x27, + 0x27, + 0x0, + }, + /* Char 'L', ASCII code 0x4c */ + { + 0x7, + 0x7, + 0x7, + 0x7, + 0x3, + 0x3, + 0x3f, + 0x0, + }, + /* Char 'M', ASCII code 0x4d */ + { + 0x37, + 0x2b, + 0x2b, + 0x23, + 0x27, + 0x27, + 0x27, + 0x0, + }, + /* Char 'N', ASCII code 0x4e */ + { + 0x23, + 0x27, + 0x2f, + 0x3f, + 0x3b, + 0x33, + 0x23, + 0x0, + }, + /* Char 'O', ASCII code 0x4f */ + { + 0x1e, + 0x27, + 0x27, + 0x27, + 0x27, + 0x27, + 0x1e, + 0x0, + }, + /* Char 'P', ASCII code 0x50 */ + { + 0x1f, + 0x27, + 0x27, + 0x1f, + 0x7, + 0x7, + 0x7, + 0x0, + }, + /* Char 'Q', ASCII code 0x51 */ + { + 0x1e, + 0x27, + 0x27, + 0x23, + 0x2b, + 0x13, + 0x2e, + 0x0, + }, + /* Char 'R', ASCII code 0x52 */ + { + 0x1f, + 0x27, + 0x27, + 0x1f, + 0xb, + 0x13, + 0x27, + 0x0, + }, + /* Char 'S', ASCII code 0x53 */ + { + 0x1e, + 0x27, + 0x7, + 0x1e, + 0x20, + 0x27, + 0x1e, + 0x0, + }, + /* Char 'T', ASCII code 0x54 */ + { + 0x3f, + 0xe, + 0xe, + 0xe, + 0xc, + 0xc, + 0xc, + 0x0, + }, + /* Char 'U', ASCII code 0x55 */ + { + 0x27, + 0x27, + 0x27, + 0x27, + 0x27, + 0x27, + 0x1e, + 0x0, + }, + /* Char 'V', ASCII code 0x56 */ + { + 0x37, + 0x37, + 0x27, + 0x27, + 0x17, + 0xf, + 0x7, + 0x0, + }, + /* Char 'W', ASCII code 0x57 */ + { + 0x2b, + 0x2b, + 0x2b, + 0x2b, + 0x2b, + 0x2b, + 0x16, + 0x0, + }, + /* Char 'X', ASCII code 0x58 */ + { + 0x21, + 0x31, + 0x1a, + 0xc, + 0x16, + 0x23, + 0x21, + 0x0, + }, + /* Char 'Y', ASCII code 0x59 */ + { + 0x27, + 0x27, + 0x27, + 0x1e, + 0xc, + 0xc, + 0xc, + 0x0, + }, + /* Char 'Z', ASCII code 0x5a */ + { + 0x3f, + 0x30, + 0x18, + 0xc, + 0x6, + 0x3, + 0x3f, + 0x0, + }, + /* ASCII code 0x5b */ {0}, + /* ASCII code 0x5c */ {0}, + /* ASCII code 0x5d */ {0}, + /* ASCII code 0x5e */ {0}, + /* ASCII code 0x5f */ {0}, + /* ASCII code 0x60 */ {0}, + /* Char 'a', ASCII code 0x61 */ + { + 0x0, + 0x0, + 0x1e, + 0x30, + 0x3e, + 0x33, + 0x6e, + 0x0, + }, + /* Char 'b', ASCII code 0x62 */ + { + 0x7, + 0x6, + 0x1e, + 0x36, + 0x36, + 0x36, + 0x1e, + 0x0, + }, + /* Char 'c', ASCII code 0x63 */ + { + 0x0, + 0x0, + 0x1e, + 0x33, + 0x3, + 0x33, + 0x1e, + 0x0, + }, + /* Char 'd', ASCII code 0x64 */ + { + 0x30, + 0x30, + 0x3e, + 0x27, + 0x27, + 0x27, + 0x1e, + 0x0, + }, +}; + diff --git a/salzalon.txt b/salzalon.txt new file mode 100644 index 0000000..6c5651c --- /dev/null +++ b/salzalon.txt @@ -0,0 +1,496 @@ +8 +! +0011000 +0011000 +0011000 +0011000 +0010000 +0001000 +0011000 +0000000 +" +1101100 +1101100 +1001000 +0000000 +0000000 +0000000 +0000000 +0000000 +# +0000000 +0110100 +1111110 +0110100 +1111110 +0110100 +0000000 +0000000 +$ +0010000 +0111100 +1100000 +0111100 +0000110 +1100110 +0111100 +0010000 +% +1100110 +1100110 +0001100 +0011000 +0110000 +1100110 +1100110 +0000000 +& +0001110 +0010110 +0011100 +0111010 +1101100 +1101100 +0110110 +0000000 +' +0011000 +0011000 +0110000 +0000000 +0000000 +0000000 +0000000 +0000000 +( +0001100 +0110000 +1100000 +1100000 +1100000 +0110000 +0001100 +0000000 +) +0110000 +0001100 +0000110 +0000110 +0000110 +0001100 +0110000 +0000000 +* +0000000 +0100100 +0011000 +1111110 +0011000 +0100100 +0000000 +0000000 ++ +0000000 +0011000 +0011000 +1111110 +0011000 +0011000 +0000000 +0000000 +, +0000000 +0000000 +0000000 +0000000 +0000000 +0110000 +0110000 +1100000 +- +0000000 +0000000 +0000000 +1111110 +0000000 +0000000 +0000000 +0000000 +. +0000000 +0000000 +0000000 +0000000 +0000000 +0011000 +0011000 +0000000 +/ +0000010 +0000110 +0001100 +0011000 +0110000 +1100000 +1000000 +0000000 +0 +.####.. +#...##. +#...##. +###..#. +###..#. +###..#. +.####.. +....... +1 +0011000 +0111000 +1011000 +0011000 +0011000 +0011000 +1111100 +0000000 +2 +0111100 +1000010 +0000110 +0111100 +1100000 +1000010 +1111110 +0000000 +3 +0111100 +1000110 +0000110 +0011100 +0000110 +1000110 +0111100 +0000000 +4 +0001100 +0011100 +0101100 +1001100 +1111110 +0001100 +0011110 +0000000 +5 +..####. +.##.... +#####.. +....##. +....##. +#..##.. +.###... +....... +6 +..###.. +.##.... +##..... +##.##.. +###.##. +##..##. +.####.. +....... +7 +######. +#...##. +...##.. +..##... +..##... +..##... +...#... +....... +8 +..###.. +.##..#. +.###.#. +.####.. +##...#. +###..#. +.####.. +....... +9 +.####.. +##..##. +##..##. +.####.. +..##... +.##.... +##..... +....... +A +.####.. +###..#. +###..#. +######. +###..#. +###..#. +###..#. +....... +B +#####.. +###..#. +###..#. +#####.. +###..#. +###..#. +#####.. +....... +C +.####.. +###..#. +###..#. +###.... +###..#. +###..#. +.####.. +....... +D +#####.. +###..#. +###..#. +###..#. +###.##. +###.##. +#####.. +....... +E +######. +###.... +###.... +#####.. +###.... +###.... +######. +....... +F +######. +##..... +##..... +####... +###.... +###.... +###.... +....... +G +.####.. +###..#. +###.... +###.##. +###.##. +###..#. +.####.. +....... +H +###..#. +###..#. +###.##. +######. +###..#. +###..#. +###..#. +....... +I +.####.. +..##... +.####.. +#.##.#. +.####.. +..##... +.####.. +....... +J +..####. +....##. +.....#. +###..#. +###..#. +###..#. +.####.. +....... +K +###..#. +###..#. +##..#.. +####... +##..#.. +###..#. +###..#. +....... +L +###.... +###.... +###.... +###.... +##..... +##..... +######. +....... +M +###.##. +##.#.#. +##.#.#. +##...#. +###..#. +###..#. +###..#. +....... +N +##...#. +###..#. +####.#. +######. +##.###. +##..##. +##...#. +....... +O +.####.. +###..#. +###..#. +###..#. +###..#. +###..#. +.####.. +....... +P +#####.. +###..#. +###..#. +#####.. +###.... +###.... +###.... +....... +Q +.####.. +###..#. +###..#. +##...#. +##.#.#. +##..#.. +.###.#. +....... +R +#####.. +###..#. +###..#. +#####.. +##.#... +##..#.. +###..#. +....... +S +.####.. +###..#. +###.... +.####.. +.....#. +###..#. +.####.. +....... +T +######. +.###... +.###... +.###... +..##... +..##... +..##... +....... +U +###..#. +###..#. +###..#. +###..#. +###..#. +###..#. +.####.. +....... +V +###.##. +###.##. +###..#. +###..#. +###.#.. +####... +###.... +....... +W +##.#.#. +##.#.#. +##.#.#. +##.#.#. +##.#.#. +##.#.#. +.##.#.. +....... +X +#....#. +#...##. +.#.##.. +..##... +.##.#.. +##...#. +#....#. +....... +Y +###..#. +###..#. +###..#. +.####.. +..##... +..##... +..##... +....... +Z +######. +....##. +...##.. +..##... +.##.... +##..... +######. +....... +a +0000000 +0000000 +0111100 +0000110 +0111110 +1100110 +0111011 +0000000 +b +1110000 +0110000 +0111100 +0110110 +0110110 +0110110 +0111100 +0000000 +c +0000000 +0000000 +0111100 +1100110 +1100000 +1100110 +0111100 +0000000 +d +....##. +....##. +.#####. +###..#. +###..#. +###..#. +.####.. +....... diff --git a/trace.h b/trace.h new file mode 100644 index 0000000..36574f6 --- /dev/null +++ b/trace.h @@ -0,0 +1,11 @@ +#ifndef APPLICATION_TRACE_HEADER +#define APPLICATION_TRACE_HEADER + +#ifdef TRACE +#define TRACE_MSG(m,n) printf(m); printf(n) +#else +#define TRACE_MSG(m,n) +#endif + +#endif + diff --git a/yolo.h b/yolo.h new file mode 100644 index 0000000..07de01e --- /dev/null +++ b/yolo.h @@ -0,0 +1,414 @@ +uint8_t yolo[128][8] = { + /* ASCII code 0x0 */ {0}, + /* ASCII code 0x1 */ {0}, + /* ASCII code 0x2 */ {0}, + /* ASCII code 0x3 */ {0}, + /* ASCII code 0x4 */ {0}, + /* ASCII code 0x5 */ {0}, + /* ASCII code 0x6 */ {0}, + /* ASCII code 0x7 */ {0}, + /* ASCII code 0x8 */ {0}, + /* ASCII code 0x9 */ {0}, + /* ASCII code 0xa */ {0}, + /* ASCII code 0xb */ {0}, + /* ASCII code 0xc */ {0}, + /* ASCII code 0xd */ {0}, + /* ASCII code 0xe */ {0}, + /* ASCII code 0xf */ {0}, + /* ASCII code 0x10 */ {0}, + /* ASCII code 0x11 */ {0}, + /* ASCII code 0x12 */ {0}, + /* ASCII code 0x13 */ {0}, + /* ASCII code 0x14 */ {0}, + /* ASCII code 0x15 */ {0}, + /* ASCII code 0x16 */ {0}, + /* ASCII code 0x17 */ {0}, + /* ASCII code 0x18 */ {0}, + /* ASCII code 0x19 */ {0}, + /* ASCII code 0x1a */ {0}, + /* ASCII code 0x1b */ {0}, + /* ASCII code 0x1c */ {0}, + /* ASCII code 0x1d */ {0}, + /* ASCII code 0x1e */ {0}, + /* ASCII code 0x1f */ {0}, + /* ASCII code 0x20 */ {0}, + /* Char '!', ASCII code 0x21 */ + { + 0xc, + 0xc, + 0xc, + 0xc, + 0x4, + 0x8, + 0xc, + 0x0, + }, + /* Char '"', ASCII code 0x22 */ + { + 0x1b, + 0x1b, + 0x9, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + }, + /* Char '#', ASCII code 0x23 */ + { + 0x0, + 0x16, + 0x3f, + 0x16, + 0x3f, + 0x16, + 0x0, + 0x0, + }, + /* Char '$', ASCII code 0x24 */ + { + 0x4, + 0x1e, + 0x3, + 0x1e, + 0x30, + 0x33, + 0x1e, + 0x4, + }, + /* Char '%', ASCII code 0x25 */ + { + 0x33, + 0x33, + 0x18, + 0xc, + 0x6, + 0x33, + 0x33, + 0x0, + }, + /* Char '&', ASCII code 0x26 */ + { + 0x38, + 0x34, + 0x1c, + 0x2e, + 0x1b, + 0x1b, + 0x36, + 0x0, + }, + /* Char ''', ASCII code 0x27 */ + { + 0xc, + 0xc, + 0x6, + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + }, + /* Char '(', ASCII code 0x28 */ + { + 0x18, + 0x6, + 0x3, + 0x3, + 0x3, + 0x6, + 0x18, + 0x0, + }, + /* Char ')', ASCII code 0x29 */ + { + 0x6, + 0x18, + 0x30, + 0x30, + 0x30, + 0x18, + 0x6, + 0x0, + }, + /* Char '*', ASCII code 0x2a */ + { + 0x0, + 0x12, + 0xc, + 0x3f, + 0xc, + 0x12, + 0x0, + 0x0, + }, + /* Char '+', ASCII code 0x2b */ + { + 0x0, + 0xc, + 0xc, + 0x3f, + 0xc, + 0xc, + 0x0, + 0x0, + }, + /* Char ',', ASCII code 0x2c */ + { + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0x6, + 0x6, + 0x3, + }, + /* Char '-', ASCII code 0x2d */ + { + 0x0, + 0x0, + 0x0, + 0x3f, + 0x0, + 0x0, + 0x0, + 0x0, + }, + /* Char '.', ASCII code 0x2e */ + { + 0x0, + 0x0, + 0x0, + 0x0, + 0x0, + 0xc, + 0xc, + 0x0, + }, + /* Char '/', ASCII code 0x2f */ + { + 0x20, + 0x30, + 0x18, + 0xc, + 0x6, + 0x3, + 0x1, + 0x0, + }, + /* Char '0', ASCII code 0x30 */ + { + 0x1e, + 0x31, + 0x31, + 0x29, + 0x27, + 0x27, + 0x1e, + 0x0, + }, + /* Char '1', ASCII code 0x31 */ + { + 0xc, + 0xe, + 0xd, + 0xc, + 0xc, + 0xc, + 0x1f, + 0x0, + }, + /* Char '2', ASCII code 0x32 */ + { + 0x1e, + 0x21, + 0x30, + 0x1e, + 0x3, + 0x21, + 0x3f, + 0x0, + }, + /* Char '3', ASCII code 0x33 */ + { + 0x1e, + 0x31, + 0x30, + 0x1c, + 0x30, + 0x31, + 0x1e, + 0x0, + }, + /* Char '4', ASCII code 0x34 */ + { + 0x18, + 0x1c, + 0x1a, + 0x19, + 0x3f, + 0x18, + 0x3c, + 0x0, + }, + /* Char '5', ASCII code 0x35 */ + { + 0x3c, + 0x6, + 0x1f, + 0x30, + 0x30, + 0x19, + 0xe, + 0x0, + }, + /* Char '6', ASCII code 0x36 */ + { + 0x1c, + 0x6, + 0x3, + 0x1b, + 0x37, + 0x33, + 0x1e, + 0x0, + }, + /* Char '7', ASCII code 0x37 */ + { + 0x3f, + 0x31, + 0x18, + 0xc, + 0xc, + 0xc, + 0x8, + 0x0, + }, + /* Char '8', ASCII code 0x38 */ + { + 0x1c, + 0x26, + 0x2e, + 0x1e, + 0x23, + 0x27, + 0x1e, + 0x0, + }, + /* Char '9', ASCII code 0x39 */ + { + 0x1e, + 0x33, + 0x33, + 0x1e, + 0xc, + 0x6, + 0x3, + 0x0, + }, + /* ASCII code 0x3a */ {0}, + /* ASCII code 0x3b */ {0}, + /* ASCII code 0x3c */ {0}, + /* ASCII code 0x3d */ {0}, + /* ASCII code 0x3e */ {0}, + /* ASCII code 0x3f */ {0}, + /* ASCII code 0x40 */ {0}, + /* Char 'A', ASCII code 0x41 */ + { + 0xc, + 0x1e, + 0x33, + 0x33, + 0x3f, + 0x33, + 0x33, + 0x0, + }, + /* Char 'B', ASCII code 0x42 */ + { + 0x1f, + 0x36, + 0x36, + 0x1e, + 0x36, + 0x36, + 0x1f, + 0x0, + }, + /* ASCII code 0x43 */ {0}, + /* ASCII code 0x44 */ {0}, + /* ASCII code 0x45 */ {0}, + /* ASCII code 0x46 */ {0}, + /* ASCII code 0x47 */ {0}, + /* ASCII code 0x48 */ {0}, + /* ASCII code 0x49 */ {0}, + /* ASCII code 0x4a */ {0}, + /* ASCII code 0x4b */ {0}, + /* ASCII code 0x4c */ {0}, + /* ASCII code 0x4d */ {0}, + /* ASCII code 0x4e */ {0}, + /* ASCII code 0x4f */ {0}, + /* ASCII code 0x50 */ {0}, + /* ASCII code 0x51 */ {0}, + /* ASCII code 0x52 */ {0}, + /* ASCII code 0x53 */ {0}, + /* ASCII code 0x54 */ {0}, + /* ASCII code 0x55 */ {0}, + /* ASCII code 0x56 */ {0}, + /* ASCII code 0x57 */ {0}, + /* ASCII code 0x58 */ {0}, + /* ASCII code 0x59 */ {0}, + /* ASCII code 0x5a */ {0}, + /* ASCII code 0x5b */ {0}, + /* ASCII code 0x5c */ {0}, + /* ASCII code 0x5d */ {0}, + /* ASCII code 0x5e */ {0}, + /* ASCII code 0x5f */ {0}, + /* ASCII code 0x60 */ {0}, + /* Char 'a', ASCII code 0x61 */ + { + 0x0, + 0x0, + 0x1e, + 0x30, + 0x3e, + 0x33, + 0x6e, + 0x0, + }, + /* Char 'b', ASCII code 0x62 */ + { + 0x7, + 0x6, + 0x1e, + 0x36, + 0x36, + 0x36, + 0x1e, + 0x0, + }, + /* Char 'c', ASCII code 0x63 */ + { + 0x0, + 0x0, + 0x1e, + 0x33, + 0x3, + 0x33, + 0x1e, + 0x0, + }, + /* Char 'd', ASCII code 0x64 */ + { + 0x30, + 0x30, + 0x3e, + 0x27, + 0x27, + 0x27, + 0x1e, + 0x0, + }, +}; + diff --git a/yolo.txt b/yolo.txt new file mode 100644 index 0000000..127a363 --- /dev/null +++ b/yolo.txt @@ -0,0 +1,280 @@ +8 +! +0011000 +0011000 +0011000 +0011000 +0010000 +0001000 +0011000 +0000000 +" +1101100 +1101100 +1001000 +0000000 +0000000 +0000000 +0000000 +0000000 +# +0000000 +0110100 +1111110 +0110100 +1111110 +0110100 +0000000 +0000000 +$ +0010000 +0111100 +1100000 +0111100 +0000110 +1100110 +0111100 +0010000 +% +1100110 +1100110 +0001100 +0011000 +0110000 +1100110 +1100110 +0000000 +& +0001110 +0010110 +0011100 +0111010 +1101100 +1101100 +0110110 +0000000 +' +0011000 +0011000 +0110000 +0000000 +0000000 +0000000 +0000000 +0000000 +( +0001100 +0110000 +1100000 +1100000 +1100000 +0110000 +0001100 +0000000 +) +0110000 +0001100 +0000110 +0000110 +0000110 +0001100 +0110000 +0000000 +* +0000000 +0100100 +0011000 +1111110 +0011000 +0100100 +0000000 +0000000 ++ +0000000 +0011000 +0011000 +1111110 +0011000 +0011000 +0000000 +0000000 +, +0000000 +0000000 +0000000 +0000000 +0000000 +0110000 +0110000 +1100000 +- +0000000 +0000000 +0000000 +1111110 +0000000 +0000000 +0000000 +0000000 +. +0000000 +0000000 +0000000 +0000000 +0000000 +0011000 +0011000 +0000000 +/ +0000010 +0000110 +0001100 +0011000 +0110000 +1100000 +1000000 +0000000 +0 +.####.. +#...##. +#...##. +#..#.#. +###..#. +###..#. +.####.. +....... +1 +0011000 +0111000 +1011000 +0011000 +0011000 +0011000 +1111100 +0000000 +2 +0111100 +1000010 +0000110 +0111100 +1100000 +1000010 +1111110 +0000000 +3 +0111100 +1000110 +0000110 +0011100 +0000110 +1000110 +0111100 +0000000 +4 +0001100 +0011100 +0101100 +1001100 +1111110 +0001100 +0011110 +0000000 +5 +..####. +.##.... +#####.. +....##. +....##. +#..##.. +.###... +....... +6 +..###.. +.##.... +##..... +##.##.. +###.##. +##..##. +.####.. +....... +7 +######. +#...##. +...##.. +..##... +..##... +..##... +...#... +....... +8 +..###.. +.##..#. +.###.#. +.####.. +##...#. +###..#. +.####.. +....... +9 +.####.. +##..##. +##..##. +.####.. +..##... +.##.... +##..... +....... +A +0011000 +0111100 +1100110 +1100110 +1111110 +1100110 +1100110 +0000000 +B +1111100 +0110110 +0110110 +0111100 +0110110 +0110110 +1111100 +0000000 +a +0000000 +0000000 +0111100 +0000110 +0111110 +1100110 +0111011 +0000000 +b +1110000 +0110000 +0111100 +0110110 +0110110 +0110110 +0111100 +0000000 +c +0000000 +0000000 +0111100 +1100110 +1100000 +1100110 +0111100 +0000000 +d +....##. +....##. +.#####. +###..#. +###..#. +###..#. +.####.. +.......